-
Notifications
You must be signed in to change notification settings - Fork 0
feat: bootstrap agentic fabric workspace #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
35 commits
Select commit
Hold shift + click to select a range
443fc71
feat: bootstrap agentic fabric workspace
jbdevprimary 9ceab88
ci: rely on default codeql setup
jbdevprimary 3e33c4d
fix: harden tool and config boundaries
jbdevprimary 2b0e5bc
fix: address review robustness findings
jbdevprimary 67a2c3c
test: expand runtime coverage
jbdevprimary 469bcc4
fix: read crew yaml as utf8
jbdevprimary 11b75c2
test: reach full agentic fabric coverage
jbdevprimary df6d4ae
docs: align runtime extra guidance
jbdevprimary f28ec17
ci: align workspace release automation
jbdevprimary 1c2725a
feat: align vendor capability tool catalog
jbdevprimary 50ba35f
docs: define secrets sync boundary
jbdevprimary 2645392
fix: harden local cli profile loading
jbdevprimary d08afc8
fix: validate local cli configs consistently
jbdevprimary bbcf892
fix: externalize vulnerable crewai dependency path
jbdevprimary 5cf5724
test: enforce full workspace coverage
jbdevprimary 17277a6
ci: align release coverage gate
jbdevprimary fc5e82c
fix: keep file tools framework neutral
jbdevprimary eaad90e
refactor: centralize runtime requirement resolution
jbdevprimary ceecb7f
refactor: align fabric agent surfaces
jbdevprimary 6a715de
fix: address review hardening feedback
jbdevprimary 84a2f3a
fix: preserve vendor MCP import diagnostics
jbdevprimary 26b6f44
test: guard fabric boundary drift
jbdevprimary 463a6c4
ci: monitor workspace package dependencies
jbdevprimary a9c73b4
test: guard retired vendor MCP entrypoints
jbdevprimary 8c0b446
ci: audit optional dependency set
jbdevprimary 79cc1d7
chore: refresh dependency lock
jbdevprimary 4b86462
build: raise proven dev dependency floors
jbdevprimary a7f2f81
ci: align automerge base context
jbdevprimary 48f868e
fix: await meshy mcp provider capabilities
jbdevprimary 3a54840
docs: make quick start fabric-first
jbdevprimary 9e1badf
test: move fabric mockers into pytest package
jbdevprimary 5a0736d
docs: include pytest package api reference
jbdevprimary c749e4d
docs: add mcp adapter example
jbdevprimary 4daf7ea
ci: add shipped examples gate
jbdevprimary 7daa64a
docs: make agentic repo guidance durable
jbdevprimary File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| version: 2 | ||
| updates: | ||
| - package-ecosystem: pip | ||
| directory: / | ||
| schedule: | ||
| interval: weekly | ||
| groups: | ||
| minor-and-patch: | ||
| patterns: ["*"] | ||
| update-types: ["minor", "patch"] | ||
| - package-ecosystem: pip | ||
| directory: /packages/agentic-fabric | ||
| schedule: | ||
| interval: weekly | ||
| groups: | ||
| minor-and-patch: | ||
| patterns: ["*"] | ||
| update-types: ["minor", "patch"] | ||
| - package-ecosystem: pip | ||
| directory: /packages/pytest-agentic-fabric | ||
| schedule: | ||
| interval: weekly | ||
| groups: | ||
| minor-and-patch: | ||
| patterns: ["*"] | ||
| update-types: ["minor", "patch"] | ||
| - package-ecosystem: github-actions | ||
| directory: / | ||
| schedule: | ||
| interval: weekly | ||
| groups: | ||
| actions: | ||
| patterns: ["*"] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| name: Automerge | ||
|
|
||
| # Enables GitHub native auto-merge on dependabot + release-please PRs. | ||
| # Native auto-merge waits for required checks + any required reviews, | ||
| # then squash-merges without further action. This workflow does not check | ||
| # out PR code; pull_request_target is used only to enable auto-merge from | ||
| # the base workflow context. | ||
| on: | ||
| pull_request_target: | ||
| types: [opened, reopened, synchronize, ready_for_review] | ||
|
|
||
| permissions: | ||
| contents: write | ||
| pull-requests: write | ||
|
|
||
| jobs: | ||
| automerge: | ||
| name: Enable auto-merge | ||
| runs-on: ubuntu-latest | ||
| if: > | ||
| github.event.pull_request.user.login == 'dependabot[bot]' || | ||
| ( | ||
| github.event.pull_request.user.login == 'github-actions[bot]' && | ||
| startsWith(github.event.pull_request.head.ref, 'release-please--') | ||
| ) | ||
| steps: | ||
| - name: Enable auto-merge (squash) | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| PR_URL: ${{ github.event.pull_request.html_url }} | ||
| run: gh pr merge --auto --squash "$PR_URL" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,132 @@ | ||
| name: CD | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| tag: | ||
| description: Release tag to publish and deploy | ||
| required: true | ||
| type: string | ||
| package: | ||
| description: Workspace package to publish | ||
| required: true | ||
| type: string | ||
|
|
||
| permissions: {} | ||
|
|
||
| jobs: | ||
| test: | ||
| name: Python ${{ matrix.python-version }} | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| python-version: ["3.11", "3.12", "3.13", "3.14"] | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.tag }} | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - run: uv sync --all-packages --all-extras --dev | ||
| - run: uv tool install tox --with tox-uv --with tox-gh | ||
| - run: tox -e "py$(echo '${{ matrix.python-version }}' | tr -d '.')" | ||
|
|
||
| quality: | ||
| name: Quality, docs, and build | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.tag }} | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: "3.13" | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - run: uv sync --all-packages --all-extras --dev | ||
| - run: uv tool install tox --with tox-uv --with tox-gh | ||
| - run: tox -e lint,typecheck,audit,examples,coverage,plugin,docs,build | ||
|
|
||
| publish-package: | ||
| name: Publish package to PyPI | ||
| needs: [test, quality] | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| id-token: write | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.tag }} | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: "3.13" | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - name: Validate package input | ||
| env: | ||
| PACKAGE: ${{ inputs.package }} | ||
| run: | | ||
| case "$PACKAGE" in | ||
| agentic-fabric|pytest-agentic-fabric) ;; | ||
| *) echo "unsupported package: $PACKAGE" >&2; exit 1 ;; | ||
| esac | ||
| - name: Build package | ||
| env: | ||
| PACKAGE: ${{ inputs.package }} | ||
| run: uv build --package "$PACKAGE" --out-dir dist --clear | ||
| - run: uv publish --trusted-publishing always dist/* | ||
|
|
||
| publish-docs: | ||
| name: Publish docs to GitHub Pages | ||
| if: inputs.package == 'agentic-fabric' | ||
| needs: publish-package | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| pages: write | ||
| id-token: write | ||
| environment: | ||
| name: github-pages | ||
| url: ${{ steps.deployment.outputs.page_url }} | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.tag }} | ||
| persist-credentials: false | ||
| - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 | ||
| with: | ||
| enablement: true | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: "3.13" | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - run: uv sync --all-packages --all-extras --dev | ||
| - run: uv tool install tox --with tox-uv --with tox-gh | ||
| - run: tox -e docs | ||
| - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 | ||
| with: | ||
| path: docs/_build/html | ||
| - id: deployment | ||
| name: Deploy docs | ||
| uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| pull_request: | ||
| workflow_dispatch: | ||
|
|
||
| permissions: {} | ||
|
|
||
| jobs: | ||
| test: | ||
| name: Python ${{ matrix.python-version }} | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| python-version: ["3.11", "3.12", "3.13", "3.14"] | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - run: uv sync --all-packages --all-extras --dev | ||
| - run: uv tool install tox --with tox-uv --with tox-gh | ||
| - run: tox -e "py$(echo '${{ matrix.python-version }}' | tr -d '.')" | ||
|
|
||
| quality: | ||
| name: Quality, docs, build | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | ||
| with: | ||
| python-version: "3.13" | ||
| - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | ||
| with: | ||
| version: "0.11.19" | ||
| enable-cache: true | ||
| - run: uv sync --all-packages --all-extras --dev | ||
| - run: uv tool install tox --with tox-uv --with tox-gh | ||
| - run: tox -e lint,typecheck,audit,examples,coverage,plugin,docs,build |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| name: Release | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| workflow_dispatch: | ||
|
|
||
| permissions: {} | ||
|
|
||
| jobs: | ||
| release-please: | ||
| name: Release Please | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| actions: write | ||
| contents: write | ||
| pull-requests: write | ||
| steps: | ||
| - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0 | ||
| id: release | ||
| with: | ||
| config-file: release-please-config.json | ||
| manifest-file: .release-please-manifest.json | ||
| - name: Dispatch agentic-fabric continuous delivery | ||
| if: steps.release.outputs['packages/agentic-fabric--release_created'] == 'true' | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| GH_REPO: ${{ github.repository }} | ||
| RELEASE_TAG: ${{ steps.release.outputs['packages/agentic-fabric--tag_name'] }} | ||
| run: gh workflow run cd.yml --repo "$GH_REPO" --ref main -f tag="$RELEASE_TAG" -f package="agentic-fabric" | ||
| - name: Dispatch pytest-agentic-fabric continuous delivery | ||
| if: steps.release.outputs['packages/pytest-agentic-fabric--release_created'] == 'true' | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
| GH_REPO: ${{ github.repository }} | ||
| RELEASE_TAG: ${{ steps.release.outputs['packages/pytest-agentic-fabric--tag_name'] }} | ||
| run: gh workflow run cd.yml --repo "$GH_REPO" --ref main -f tag="$RELEASE_TAG" -f package="pytest-agentic-fabric" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| .DS_Store | ||
| .coverage | ||
| .mypy_cache/ | ||
| .pytest_cache/ | ||
| .ruff_cache/ | ||
| .tox/ | ||
| .venv/ | ||
| __pycache__/ | ||
| build/ | ||
| dist/ | ||
| htmlcov/ | ||
| *.egg-info/ | ||
| *.pyc | ||
| docs/_build/ | ||
| docs/apidocs/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 3.13 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| { | ||
| "packages/agentic-fabric": "1.0.0", | ||
| "packages/pytest-agentic-fabric": "0.1.0" | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| # Agentic Reinforcement | ||
|
|
||
| This repository creates the runtime- and agent-aware superclass on top of | ||
| `VendorData`. | ||
|
|
||
| ## AgenticData Contract | ||
|
|
||
| - `AgenticData` extends `VendorData`, not `ExtendedData` directly. | ||
| - Preserve vendor-layer semantics while adding runtime context, fabric agent registry | ||
| behavior, runner dispatch, and agent-facing tool exposure. | ||
| - The local `_VendorDataBase` fallback is an importability shim, not a second | ||
| architecture. Keep it minimal and temporary in spirit. | ||
|
|
||
| ## What This Repository Owns | ||
|
|
||
| - runtime discovery and selection | ||
| - runner registries and runtime adapters | ||
| - LangChain, CrewAI, LangGraph, Strands, and MCP-facing tool wrappers | ||
| - agent-facing tool catalogs built from vendor capabilities | ||
| - fabric agent, session, and agent orchestration context | ||
|
|
||
| ## What This Repository Does Not Own | ||
|
|
||
| - base data primitives | ||
| - generic file/workflow/logging primitives | ||
| - provider SDK integrations | ||
| - provider availability/install guidance beyond delegating to `vendor-fabric` | ||
| - reimplementation of the `VendorData` provider dispatch layer | ||
|
|
||
| ## Hand-Off From Vendor Fabric | ||
|
|
||
| - Pull provider capability metadata and typed callables from `vendor-fabric`. | ||
| - Decide here how those capabilities become framework tools and runtime-visible | ||
| surfaces. | ||
| - If something exists only because an AI framework wants a specific wrapper | ||
| type, keep it here. | ||
| - Do not push AI-framework shims back down into `vendor-fabric`. | ||
| - Do not bypass `vendor-fabric` to import SecretSync Go bindings or invoke the | ||
| Go runtime directly from this layer. | ||
|
|
||
| ## Superclass Role | ||
|
|
||
| - `AgenticData` is the superclass downstream domain-specific agent/session/task | ||
| objects should extend. | ||
| - Downstream apps should build on `AgenticData` rather than recreating provider | ||
| and runtime composition from scratch. | ||
| - Agentic behavior is additive over the vendor layer, which is additive over | ||
| the base data layer. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.