name: Basic Memory Project Updates "on": pull_request: types: [closed] workflow_run: workflows: ["Deploy Production"] types: [completed] jobs: project-update: runs-on: ubuntu-latest permissions: contents: read pull-requests: read issues: read actions: read steps: - name: Checkout repository uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.12" - name: Install Basic Memory from checkout run: | python -m pip install --upgrade pip pip install -e . - name: Collect project update context id: collect env: GITHUB_TOKEN: ${{ github.token }} run: | bm ci collect \ --config .github/basic-memory/config.yml \ --output .github/basic-memory/project-update-context.json - name: Stop when event is not eligible if: steps.collect.outputs.eligible != 'true' run: | echo "Auto BM skipped: ${{ steps.collect.outputs.skip_reason }}" - name: Write Codex output schema if: steps.collect.outputs.eligible == 'true' run: | bm ci agent-schema --output "${{ runner.temp }}/agent-synthesis.schema.json" - name: Synthesize project update with Codex if: steps.collect.outputs.eligible == 'true' uses: openai/codex-action@v1 with: openai-api-key: ${{ secrets.OPENAI_API_KEY }} prompt-file: .github/basic-memory/memory-ci-capture.md output-file: ${{ runner.temp }}/agent-synthesis.json output-schema-file: ${{ runner.temp }}/agent-synthesis.schema.json sandbox: read-only safety-strategy: drop-sudo - name: Publish project update if: steps.collect.outputs.eligible == 'true' env: BASIC_MEMORY_CLOUD_API_KEY: ${{ secrets.BASIC_MEMORY_API_KEY }} BASIC_MEMORY_CI_CLOUD_HOST: ${{ vars.BASIC_MEMORY_CLOUD_HOST }} run: | if [ -n "$BASIC_MEMORY_CI_CLOUD_HOST" ]; then export BASIC_MEMORY_CLOUD_HOST="$BASIC_MEMORY_CI_CLOUD_HOST" fi bm ci publish \ --cloud \ --config .github/basic-memory/config.yml \ --context .github/basic-memory/project-update-context.json \ --synthesis "${{ runner.temp }}/agent-synthesis.json"