@bevel-software/platform-core-backend 0.25.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-guide/access-control.md +251 -0
- package/agent-guide/conventions.md +35 -0
- package/agent-guide/directory-structure.md +145 -0
- package/agent-guide/finding-things.md +7 -0
- package/agent-guide/html-views.md +83 -0
- package/agent-guide/introduction.md +27 -0
- package/agent-guide/new-knowledge-base.md +24 -0
- package/agent-guide/skills.md +47 -0
- package/agent-guide/tool-manuals.md +227 -0
- package/agent-guide/where-a-new-file-goes.md +36 -0
- package/dist/assets.d.ts +26 -0
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +35 -2
- package/dist/assets.js.map +1 -1
- package/dist/core/catalog-revision.d.ts +19 -1
- package/dist/core/catalog-revision.d.ts.map +1 -1
- package/dist/core/catalog-revision.js +14 -3
- package/dist/core/catalog-revision.js.map +1 -1
- package/dist/core/core-ports.d.ts +11 -0
- package/dist/core/core-ports.d.ts.map +1 -1
- package/dist/core/core-ports.js.map +1 -1
- package/dist/core/create-core-server.d.ts +5 -0
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +65 -3
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +35 -0
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +114 -12
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +16 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +18 -1
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core-config.d.ts +21 -0
- package/dist/core-config.d.ts.map +1 -1
- package/dist/core-config.js +22 -1
- package/dist/core-config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.interface.d.ts +17 -0
- package/dist/modules/access/access-control.interface.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +2 -0
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +27 -0
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/directory-sync-bot.js +1 -1
- package/dist/modules/access/directory-sync-bot.js.map +1 -1
- package/dist/modules/agent-guide/agent-guide.d.ts +145 -0
- package/dist/modules/agent-guide/agent-guide.d.ts.map +1 -0
- package/dist/modules/agent-guide/agent-guide.js +199 -0
- package/dist/modules/agent-guide/agent-guide.js.map +1 -0
- package/dist/modules/agent-guide/agent-guide.tools.d.ts +24 -0
- package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -0
- package/dist/modules/agent-guide/agent-guide.tools.js +100 -0
- package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -0
- package/dist/modules/agent-guide/index.d.ts +4 -0
- package/dist/modules/agent-guide/index.d.ts.map +1 -0
- package/dist/modules/agent-guide/index.js +4 -0
- package/dist/modules/agent-guide/index.js.map +1 -0
- package/dist/modules/agent-instructions/agent-instructions.routes.d.ts +3 -2
- package/dist/modules/agent-instructions/agent-instructions.routes.d.ts.map +1 -1
- package/dist/modules/agent-instructions/agent-instructions.routes.js +3 -2
- package/dist/modules/agent-instructions/agent-instructions.routes.js.map +1 -1
- package/dist/modules/agent-instructions/compose.d.ts +14 -6
- package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
- package/dist/modules/agent-instructions/compose.js +28 -8
- package/dist/modules/agent-instructions/compose.js.map +1 -1
- package/dist/modules/agent-instructions/index.d.ts +1 -1
- package/dist/modules/agent-instructions/index.d.ts.map +1 -1
- package/dist/modules/agent-instructions/index.js +1 -1
- package/dist/modules/agent-instructions/index.js.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.d.ts +10 -50
- package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.js +51 -104
- package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
- package/dist/modules/audit/agent-audit.service.d.ts +21 -2
- package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
- package/dist/modules/audit/agent-audit.service.js +43 -2
- package/dist/modules/audit/agent-audit.service.js.map +1 -1
- package/dist/modules/audit/agent-connection.routes.d.ts +34 -0
- package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -0
- package/dist/modules/audit/agent-connection.routes.js +38 -0
- package/dist/modules/audit/agent-connection.routes.js.map +1 -0
- package/dist/modules/audit/audit.contract.d.ts +24 -0
- package/dist/modules/audit/audit.contract.d.ts.map +1 -1
- package/dist/modules/audit/audit.contract.js.map +1 -1
- package/dist/modules/audit/index.d.ts +1 -0
- package/dist/modules/audit/index.d.ts.map +1 -1
- package/dist/modules/audit/index.js +1 -0
- package/dist/modules/audit/index.js.map +1 -1
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +10 -3
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/auth/auth.middleware.d.ts +7 -0
- package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
- package/dist/modules/auth/auth.middleware.js +1 -1
- package/dist/modules/auth/auth.middleware.js.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.js +11 -3
- package/dist/modules/code-mode/code-mode.tool.js.map +1 -1
- package/dist/modules/database/core-schema.d.ts +96 -0
- package/dist/modules/database/core-schema.d.ts.map +1 -1
- package/dist/modules/database/core-schema.js +32 -3
- package/dist/modules/database/core-schema.js.map +1 -1
- package/dist/modules/embed/account-link.service.d.ts +42 -0
- package/dist/modules/embed/account-link.service.d.ts.map +1 -0
- package/dist/modules/embed/account-link.service.js +50 -0
- package/dist/modules/embed/account-link.service.js.map +1 -0
- package/dist/modules/embed/embed-link.d.ts +58 -0
- package/dist/modules/embed/embed-link.d.ts.map +1 -0
- package/dist/modules/embed/embed-link.js +160 -0
- package/dist/modules/embed/embed-link.js.map +1 -0
- package/dist/modules/embed/embed.errors.d.ts +30 -0
- package/dist/modules/embed/embed.errors.d.ts.map +1 -0
- package/dist/modules/embed/embed.errors.js +42 -0
- package/dist/modules/embed/embed.errors.js.map +1 -0
- package/dist/modules/embed/embed.interface.d.ts +204 -0
- package/dist/modules/embed/embed.interface.d.ts.map +1 -0
- package/dist/modules/embed/embed.interface.js +2 -0
- package/dist/modules/embed/embed.interface.js.map +1 -0
- package/dist/modules/embed/embed.routes.d.ts +59 -0
- package/dist/modules/embed/embed.routes.d.ts.map +1 -0
- package/dist/modules/embed/embed.routes.js +343 -0
- package/dist/modules/embed/embed.routes.js.map +1 -0
- package/dist/modules/embed/embed.service.d.ts +169 -0
- package/dist/modules/embed/embed.service.d.ts.map +1 -0
- package/dist/modules/embed/embed.service.js +627 -0
- package/dist/modules/embed/embed.service.js.map +1 -0
- package/dist/modules/embed/embed.tools.d.ts +51 -0
- package/dist/modules/embed/embed.tools.d.ts.map +1 -0
- package/dist/modules/embed/embed.tools.js +170 -0
- package/dist/modules/embed/embed.tools.js.map +1 -0
- package/dist/modules/embed/mcp-app.d.ts +64 -0
- package/dist/modules/embed/mcp-app.d.ts.map +1 -0
- package/dist/modules/embed/mcp-app.js +147 -0
- package/dist/modules/embed/mcp-app.js.map +1 -0
- package/dist/modules/embed/mcp-app.routes.d.ts +21 -0
- package/dist/modules/embed/mcp-app.routes.d.ts.map +1 -0
- package/dist/modules/embed/mcp-app.routes.js +36 -0
- package/dist/modules/embed/mcp-app.routes.js.map +1 -0
- package/dist/modules/github-app/github-app.connection.d.ts +15 -0
- package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
- package/dist/modules/github-app/github-app.connection.js +34 -3
- package/dist/modules/github-app/github-app.connection.js.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.d.ts +65 -0
- package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.js +300 -0
- package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
- package/dist/modules/kb-sync/kb-sync.interface.d.ts +5 -0
- package/dist/modules/kb-sync/kb-sync.interface.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.service.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.service.js +6 -0
- package/dist/modules/kb-sync/kb-sync.service.js.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.js +2 -1
- package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +57 -3
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +177 -24
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +24 -0
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js +32 -4
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
- package/dist/modules/mcp/tool-schema-guard.d.ts +105 -0
- package/dist/modules/mcp/tool-schema-guard.d.ts.map +1 -0
- package/dist/modules/mcp/tool-schema-guard.js +171 -0
- package/dist/modules/mcp/tool-schema-guard.js.map +1 -0
- package/dist/modules/onboarding/onboarding.contract.d.ts +80 -0
- package/dist/modules/onboarding/onboarding.contract.d.ts.map +1 -0
- package/dist/modules/onboarding/onboarding.contract.js +7 -0
- package/dist/modules/onboarding/onboarding.contract.js.map +1 -0
- package/dist/modules/onboarding/onboarding.routes.d.ts +18 -0
- package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -0
- package/dist/modules/onboarding/onboarding.routes.js +81 -0
- package/dist/modules/onboarding/onboarding.routes.js.map +1 -0
- package/dist/modules/onboarding/starter-pack.service.d.ts +213 -0
- package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -0
- package/dist/modules/onboarding/starter-pack.service.js +492 -0
- package/dist/modules/onboarding/starter-pack.service.js.map +1 -0
- package/dist/modules/onboarding/starter-packs.d.ts +78 -0
- package/dist/modules/onboarding/starter-packs.d.ts.map +1 -0
- package/dist/modules/onboarding/starter-packs.js +156 -0
- package/dist/modules/onboarding/starter-packs.js.map +1 -0
- package/dist/modules/plugins/index.d.ts +1 -1
- package/dist/modules/plugins/index.d.ts.map +1 -1
- package/dist/modules/plugins/index.js +1 -1
- package/dist/modules/plugins/index.js.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.d.ts +19 -0
- package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.js +18 -1
- package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts +0 -36
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +31 -0
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/plugins/plugins.tools.d.ts +36 -2
- package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.tools.js +71 -14
- package/dist/modules/plugins/plugins.tools.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.d.ts +34 -7
- package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +148 -54
- package/dist/modules/settings/deployment-settings.service.js.map +1 -1
- package/dist/modules/settings/repository-source.d.ts +1 -0
- package/dist/modules/settings/repository-source.d.ts.map +1 -1
- package/dist/modules/settings/repository-source.js +3 -3
- package/dist/modules/settings/repository-source.js.map +1 -1
- package/dist/modules/settings/setup.routes.d.ts.map +1 -1
- package/dist/modules/settings/setup.routes.js +3 -6
- package/dist/modules/settings/setup.routes.js.map +1 -1
- package/dist/modules/skills/skills.tools.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.js +103 -43
- package/dist/modules/skills/skills.tools.js.map +1 -1
- package/dist/modules/tool-auth/connection-key-rejection.d.ts +10 -1
- package/dist/modules/tool-auth/connection-key-rejection.d.ts.map +1 -1
- package/dist/modules/tool-auth/connection-key-rejection.js +11 -3
- package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
- package/dist/modules/tool-auth/external-api-key.interface.d.ts +8 -0
- package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.d.ts +24 -2
- package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.js +59 -2
- package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js +9 -4
- package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
- package/dist/modules/tool-helpers/index.d.ts +28 -1
- package/dist/modules/tool-helpers/index.d.ts.map +1 -1
- package/dist/modules/tool-helpers/index.js +28 -1
- package/dist/modules/tool-helpers/index.js.map +1 -1
- package/dist/modules/tool-helpers/route-argument-check.d.ts +10 -0
- package/dist/modules/tool-helpers/route-argument-check.d.ts.map +1 -0
- package/dist/modules/tool-helpers/route-argument-check.js +132 -0
- package/dist/modules/tool-helpers/route-argument-check.js.map +1 -0
- package/dist/modules/tool-helpers/route-tool-schemas.d.ts +89 -0
- package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -0
- package/dist/modules/tool-helpers/route-tool-schemas.js +113 -0
- package/dist/modules/tool-helpers/route-tool-schemas.js.map +1 -0
- package/dist/modules/tool-helpers/tool-def.d.ts +71 -0
- package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-def.js +70 -6
- package/dist/modules/tool-helpers/tool-def.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts +46 -6
- package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.js +157 -8
- package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.d.ts +9 -0
- package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +23 -4
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.contract.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts +4 -0
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js +14 -0
- package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +7 -0
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js +77 -38
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/tool-registry/description-length.d.ts +20 -16
- package/dist/modules/tool-registry/description-length.d.ts.map +1 -1
- package/dist/modules/tool-registry/description-length.js +50 -30
- package/dist/modules/tool-registry/description-length.js.map +1 -1
- package/dist/modules/tool-registry/guide-first.d.ts +27 -0
- package/dist/modules/tool-registry/guide-first.d.ts.map +1 -0
- package/dist/modules/tool-registry/guide-first.js +40 -0
- package/dist/modules/tool-registry/guide-first.js.map +1 -0
- package/dist/modules/tool-registry/tool-registry.d.ts +6 -0
- package/dist/modules/tool-registry/tool-registry.d.ts.map +1 -1
- package/dist/modules/tool-registry/tool-registry.js +9 -2
- package/dist/modules/tool-registry/tool-registry.js.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +449 -0
- package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -0
- package/dist/modules/workflow/agent-tools/change-request-read-shape.js +481 -0
- package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -0
- package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +126 -0
- package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -0
- package/dist/modules/workflow/agent-tools/change-request-read.tools.js +611 -0
- package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -0
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +12 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.js +5 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +8 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +133 -37
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/file-lock.service.d.ts +29 -5
- package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
- package/dist/modules/workflow/file-lock.service.js +62 -5
- package/dist/modules/workflow/file-lock.service.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +282 -14
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +627 -126
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/merge-commit.d.ts +73 -0
- package/dist/modules/workflow/git/merge-commit.d.ts.map +1 -0
- package/dist/modules/workflow/git/merge-commit.js +89 -0
- package/dist/modules/workflow/git/merge-commit.js.map +1 -0
- package/dist/modules/workflow/git/node-git-runner.d.ts +15 -0
- package/dist/modules/workflow/git/node-git-runner.d.ts.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.js +78 -6
- package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts +94 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.js +332 -37
- package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
- package/dist/modules/workflow/pending-commits.service.d.ts +15 -0
- package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
- package/dist/modules/workflow/pending-commits.service.js +25 -1
- package/dist/modules/workflow/pending-commits.service.js.map +1 -1
- package/dist/modules/workflow/pending-commits.worker.d.ts +6 -1
- package/dist/modules/workflow/pending-commits.worker.d.ts.map +1 -1
- package/dist/modules/workflow/pending-commits.worker.js +23 -6
- package/dist/modules/workflow/pending-commits.worker.js.map +1 -1
- package/dist/modules/workflow/recovery-bot.js +1 -1
- package/dist/modules/workflow/recovery-bot.js.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +35 -0
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.js +180 -13
- package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
- package/dist/modules/workflow/sanitize-error.d.ts +16 -0
- package/dist/modules/workflow/sanitize-error.d.ts.map +1 -1
- package/dist/modules/workflow/sanitize-error.js +45 -0
- package/dist/modules/workflow/sanitize-error.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.d.ts +6 -2
- package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +7 -2
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +187 -15
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +808 -106
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/agent-download.builder.d.ts +105 -0
- package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -0
- package/dist/modules/workspace/agent-download.builder.js +238 -0
- package/dist/modules/workspace/agent-download.builder.js.map +1 -0
- package/dist/modules/workspace/agent-download.routes.d.ts +77 -0
- package/dist/modules/workspace/agent-download.routes.d.ts.map +1 -0
- package/dist/modules/workspace/agent-download.routes.js +156 -0
- package/dist/modules/workspace/agent-download.routes.js.map +1 -0
- package/dist/modules/workspace/agent-download.store.d.ts +225 -0
- package/dist/modules/workspace/agent-download.store.d.ts.map +1 -0
- package/dist/modules/workspace/agent-download.store.js +423 -0
- package/dist/modules/workspace/agent-download.store.js.map +1 -0
- package/dist/modules/workspace/agent-upload.store.d.ts +10 -1
- package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
- package/dist/modules/workspace/agent-upload.store.js +16 -6
- package/dist/modules/workspace/agent-upload.store.js.map +1 -1
- package/dist/modules/workspace/file-readers/raw-mime.d.ts +6 -0
- package/dist/modules/workspace/file-readers/raw-mime.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/raw-mime.js +38 -0
- package/dist/modules/workspace/file-readers/raw-mime.js.map +1 -0
- package/dist/modules/workspace/file-readers/text-reader.d.ts +5 -5
- package/dist/modules/workspace/file-readers/text-reader.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/text-reader.js +5 -8
- package/dist/modules/workspace/file-readers/text-reader.js.map +1 -1
- package/dist/modules/workspace/first-run.d.ts +111 -0
- package/dist/modules/workspace/first-run.d.ts.map +1 -0
- package/dist/modules/workspace/first-run.js +181 -0
- package/dist/modules/workspace/first-run.js.map +1 -0
- package/dist/modules/workspace/move-links.d.ts +92 -0
- package/dist/modules/workspace/move-links.d.ts.map +1 -0
- package/dist/modules/workspace/move-links.js +173 -0
- package/dist/modules/workspace/move-links.js.map +1 -0
- package/dist/modules/workspace/startup/steps/seed-tree.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js +24 -39
- package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts +58 -52
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.js +209 -223
- package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.d.ts +5 -3
- package/dist/modules/workspace/startup/steps/template-source.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.js +5 -3
- package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +63 -22
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +75 -2
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +197 -24
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts +68 -1
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +642 -71
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/modules/write-access/write-access.d.ts.map +1 -1
- package/dist/modules/write-access/write-access.js +9 -0
- package/dist/modules/write-access/write-access.js.map +1 -1
- package/dist/shared/domain-errors.d.ts +84 -1
- package/dist/shared/domain-errors.d.ts.map +1 -1
- package/dist/shared/domain-errors.js +100 -12
- package/dist/shared/domain-errors.js.map +1 -1
- package/dist/shared/git.contract.d.ts +10 -1
- package/dist/shared/git.contract.d.ts.map +1 -1
- package/dist/shared/git.contract.js.map +1 -1
- package/dist/shared/hidden-tools.d.ts +44 -0
- package/dist/shared/hidden-tools.d.ts.map +1 -0
- package/dist/shared/hidden-tools.js +13 -0
- package/dist/shared/hidden-tools.js.map +1 -0
- package/dist/shared/utf8-text.d.ts +15 -0
- package/dist/shared/utf8-text.d.ts.map +1 -0
- package/dist/shared/utf8-text.js +20 -0
- package/dist/shared/utf8-text.js.map +1 -0
- package/dist/tenancy/static-tenant-source.d.ts +2 -1
- package/dist/tenancy/static-tenant-source.d.ts.map +1 -1
- package/dist/tenancy/static-tenant-source.js +9 -2
- package/dist/tenancy/static-tenant-source.js.map +1 -1
- package/kb-template/.bevelignore +0 -5
- package/mcp-app/page.html +349 -0
- package/migrations/0017_atlassian_account_links.sql +37 -0
- package/migrations/meta/0017_snapshot.json +2396 -0
- package/migrations/meta/_journal.json +8 -1
- package/package.json +6 -3
- package/src/__tests__/kb-layout-config.test.ts +10 -100
- package/src/__tests__/packaged-assets-ship.test.ts +66 -0
- package/src/assets.ts +38 -2
- package/src/core/__tests__/catalog-revision.test.ts +40 -0
- package/src/core/__tests__/gated-boot.test.ts +1 -0
- package/src/core/__tests__/lifecycle.test.ts +14 -0
- package/src/core/catalog-revision.ts +15 -2
- package/src/core/core-ports.ts +11 -0
- package/src/core/create-core-server.ts +78 -3
- package/src/core/create-core-services.ts +168 -10
- package/src/core/lifecycle.ts +28 -2
- package/src/core-config.ts +24 -1
- package/src/index.ts +2 -2
- package/src/modules/access/__tests__/access-control.atref-batch.test.ts +58 -0
- package/src/modules/access/__tests__/access-control.platform-restore.test.ts +8 -7
- package/src/modules/access/__tests__/access-control.service.test.ts +19 -0
- package/src/modules/access/__tests__/access-personal-plugin.test.ts +1 -18
- package/src/modules/access/access-control.interface.ts +28 -0
- package/src/modules/access/access-control.service.ts +37 -0
- package/src/modules/access/directory-sync-bot.ts +1 -1
- package/src/modules/agent-guide/__tests__/agent-guide.test.ts +386 -0
- package/src/modules/agent-guide/__tests__/agent-guide.tools.test.ts +207 -0
- package/src/modules/agent-guide/agent-guide.tools.ts +122 -0
- package/src/modules/agent-guide/agent-guide.ts +300 -0
- package/src/modules/agent-guide/index.ts +22 -0
- package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +39 -118
- package/src/modules/agent-instructions/agent-instructions.routes.ts +3 -2
- package/src/modules/agent-instructions/compose.ts +26 -8
- package/src/modules/agent-instructions/index.ts +0 -3
- package/src/modules/agent-instructions/shared-file-rules.ts +50 -112
- package/src/modules/audit/__tests__/agent-audit.service.test.ts +64 -4
- package/src/modules/audit/__tests__/agent-connection.routes.test.ts +102 -0
- package/src/modules/audit/agent-audit.service.ts +58 -3
- package/src/modules/audit/agent-connection.routes.ts +56 -0
- package/src/modules/audit/audit.contract.ts +26 -0
- package/src/modules/audit/index.ts +1 -0
- package/src/modules/auth/__tests__/account.routes.test.ts +5 -3
- package/src/modules/auth/account.routes.ts +10 -3
- package/src/modules/auth/auth.middleware.ts +1 -1
- package/src/modules/code-mode/__tests__/code-mode.tool.test.ts +18 -2
- package/src/modules/code-mode/code-mode.tool.ts +13 -2
- package/src/modules/database/core-schema.ts +33 -3
- package/src/modules/embed/__tests__/account-links.migration.test.ts +98 -0
- package/src/modules/embed/__tests__/embed-link.test.ts +122 -0
- package/src/modules/embed/__tests__/embed.routes.test.ts +362 -0
- package/src/modules/embed/__tests__/embed.service.lock.test.ts +193 -0
- package/src/modules/embed/__tests__/embed.service.test.ts +805 -0
- package/src/modules/embed/__tests__/embed.tools.test.ts +304 -0
- package/src/modules/embed/__tests__/mcp-app.test.ts +207 -0
- package/src/modules/embed/account-link.service.ts +76 -0
- package/src/modules/embed/embed-link.ts +180 -0
- package/src/modules/embed/embed.errors.ts +43 -0
- package/src/modules/embed/embed.interface.ts +203 -0
- package/src/modules/embed/embed.routes.ts +363 -0
- package/src/modules/embed/embed.service.ts +705 -0
- package/src/modules/embed/embed.tools.ts +206 -0
- package/src/modules/embed/mcp-app.routes.ts +41 -0
- package/src/modules/embed/mcp-app.ts +173 -0
- package/src/modules/github-app/__tests__/github-app.test.ts +76 -0
- package/src/modules/github-app/github-app.connection.ts +38 -4
- package/src/modules/kb-fs/__tests__/move-with-edits.test.ts +304 -0
- package/src/modules/kb-fs/locking-filesystem.ts +287 -0
- package/src/modules/kb-sync/__tests__/kb-sync.service.test.ts +35 -0
- package/src/modules/kb-sync/kb-sync.interface.ts +2 -0
- package/src/modules/kb-sync/kb-sync.service.ts +6 -0
- package/src/modules/mcp/__tests__/bevel-oauth-provider.test.ts +68 -11
- package/src/modules/mcp/__tests__/fake-downstream-mcp-server.ts +14 -3
- package/src/modules/mcp/__tests__/mcp-proxy-helpers.test.ts +37 -2
- package/src/modules/mcp/__tests__/mcp.app.e2e.test.ts +200 -0
- package/src/modules/mcp/__tests__/mcp.e2e.test.ts +252 -0
- package/src/modules/mcp/__tests__/mcp.service.test.ts +42 -24
- package/src/modules/mcp/__tests__/tool-call-interface.e2e.test.ts +499 -0
- package/src/modules/mcp/__tests__/tool-schema-guard.test.ts +266 -0
- package/src/modules/mcp/mcp-auth.middleware.ts +2 -1
- package/src/modules/mcp/mcp.service.ts +218 -31
- package/src/modules/mcp/oauth/bevel-oauth-provider.ts +42 -4
- package/src/modules/mcp/tool-schema-guard.ts +196 -0
- package/src/modules/onboarding/__tests__/onboarding.routes.test.ts +163 -0
- package/src/modules/onboarding/__tests__/starter-pack.service.test.ts +635 -0
- package/src/modules/onboarding/__tests__/starter-packs.test.ts +169 -0
- package/src/modules/onboarding/onboarding.contract.ts +85 -0
- package/src/modules/onboarding/onboarding.routes.ts +85 -0
- package/src/modules/onboarding/starter-pack.service.ts +580 -0
- package/src/modules/onboarding/starter-packs.ts +182 -0
- package/src/modules/plugins/__tests__/plugins.tools.test.ts +177 -4
- package/src/modules/plugins/index.ts +1 -0
- package/src/modules/plugins/plugin-provision.service.ts +22 -1
- package/src/modules/plugins/plugins.routes.ts +29 -0
- package/src/modules/plugins/plugins.tools.ts +75 -15
- package/src/modules/settings/__tests__/deployment-settings.service.test.ts +176 -56
- package/src/modules/settings/__tests__/repository-source.test.ts +9 -0
- package/src/modules/settings/deployment-settings.service.ts +144 -55
- package/src/modules/settings/repository-source.ts +4 -4
- package/src/modules/settings/setup.routes.ts +3 -6
- package/src/modules/skills/__tests__/skills.tools.description.test.ts +95 -0
- package/src/modules/skills/skills.tools.ts +112 -46
- package/src/modules/tool-auth/__tests__/connection-key-rejection.test.ts +32 -0
- package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +65 -0
- package/src/modules/tool-auth/connection-key-rejection.ts +13 -3
- package/src/modules/tool-auth/external-api-key.interface.ts +9 -0
- package/src/modules/tool-auth/external-api-key.service.ts +61 -4
- package/src/modules/tool-auth/tool-auth.middleware.ts +13 -4
- package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +502 -0
- package/src/modules/tool-helpers/__tests__/route-argument-check.test.ts +337 -0
- package/src/modules/tool-helpers/index.ts +34 -1
- package/src/modules/tool-helpers/route-argument-check.ts +149 -0
- package/src/modules/tool-helpers/route-tool-schemas.ts +171 -0
- package/src/modules/tool-helpers/tool-def.ts +132 -7
- package/src/modules/tool-helpers/tool-handler.ts +196 -8
- package/src/modules/tool-helpers/tool.contract.ts +9 -0
- package/src/modules/tool-manuals/__tests__/tool-manuals.detail.route.test.ts +57 -0
- package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +73 -4
- package/src/modules/tool-manuals/tool-manuals.contract.ts +24 -4
- package/src/modules/tool-manuals/tool-manuals.service.ts +17 -0
- package/src/modules/tool-manuals/tool-manuals.tools.ts +86 -38
- package/src/modules/tool-registry/__tests__/own-tool-schemas.test.ts +173 -0
- package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +81 -66
- package/src/modules/tool-registry/description-length.ts +57 -32
- package/src/modules/tool-registry/guide-first.ts +41 -0
- package/src/modules/tool-registry/tool-registry.ts +9 -2
- package/src/modules/workflow/__tests__/apply-failure.test.ts +6 -1
- package/src/modules/workflow/__tests__/file-lock.service.deletion-gate.test.ts +104 -0
- package/src/modules/workflow/__tests__/pending-commits.repository-replaced.test.ts +66 -0
- package/src/modules/workflow/__tests__/pending-commits.worker.test.ts +31 -2
- package/src/modules/workflow/__tests__/preserve-roles-yaml.test.ts +110 -6
- package/src/modules/workflow/__tests__/sanitize-error.test.ts +89 -1
- package/src/modules/workflow/__tests__/workflow.routes.push-refused.test.ts +202 -0
- package/src/modules/workflow/__tests__/workflow.service.branch-in-use.test.ts +6 -6
- package/src/modules/workflow/__tests__/workflow.service.delete-branch.test.ts +1026 -0
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +468 -10
- package/src/modules/workflow/__tests__/workflow.service.folder-proposals.test.ts +4 -0
- package/src/modules/workflow/__tests__/workflow.service.releaseLock.test.ts +5 -4
- package/src/modules/workflow/__tests__/workflow.service.update-from-target.test.ts +54 -2
- package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +705 -0
- package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +1554 -0
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +150 -4
- package/src/modules/workflow/agent-tools/change-request-read-shape.ts +712 -0
- package/src/modules/workflow/agent-tools/change-request-read.tools.ts +759 -0
- package/src/modules/workflow/agent-tools/change-request-summary.ts +5 -1
- package/src/modules/workflow/agent-tools/workflow.tools.ts +137 -35
- package/src/modules/workflow/file-lock.service.ts +67 -5
- package/src/modules/workflow/git/__tests__/git.service.appliedChange.test.ts +285 -0
- package/src/modules/workflow/git/__tests__/git.service.changedFilesForPr.test.ts +124 -0
- package/src/modules/workflow/git/__tests__/git.service.deleteBranch.test.ts +164 -0
- package/src/modules/workflow/git/__tests__/git.service.mergeChangeRequest.test.ts +334 -0
- package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +48 -1
- package/src/modules/workflow/git/__tests__/node-git-runner.test.ts +231 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.list-fetch.test.ts +72 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.placeholder.test.ts +24 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.test.ts +620 -1
- package/src/modules/workflow/git/git.service.ts +714 -133
- package/src/modules/workflow/git/merge-commit.ts +88 -0
- package/src/modules/workflow/git/node-git-runner.ts +82 -7
- package/src/modules/workflow/git/pull-request.service.ts +380 -54
- package/src/modules/workflow/pending-commits.service.ts +29 -1
- package/src/modules/workflow/pending-commits.worker.ts +24 -6
- package/src/modules/workflow/recovery-bot.ts +1 -1
- package/src/modules/workflow/review-workflow/__tests__/approval-states.test.ts +7 -1
- package/src/modules/workflow/review-workflow/__tests__/merge-records-own-commit.test.ts +407 -0
- package/src/modules/workflow/review-workflow/review-workflow.service.ts +191 -12
- package/src/modules/workflow/sanitize-error.ts +50 -0
- package/src/modules/workflow/workflow.routes.ts +7 -2
- package/src/modules/workflow/workflow.service.ts +886 -112
- package/src/modules/workspace/__tests__/agent-downloads.test.ts +823 -0
- package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +4 -3
- package/src/modules/workspace/__tests__/first-run.test.ts +234 -0
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +5 -2
- package/src/modules/workspace/__tests__/md-links.test.ts +353 -0
- package/src/modules/workspace/__tests__/move-links.test.ts +261 -0
- package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +219 -0
- package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -0
- package/src/modules/workspace/__tests__/workspace.routes.delete.test.ts +102 -0
- package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +52 -5
- package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +190 -0
- package/src/modules/workspace/__tests__/workspace.routes.move-platform-files.test.ts +21 -10
- package/src/modules/workspace/__tests__/workspace.service.forget-clone-races.test.ts +8 -4
- package/src/modules/workspace/__tests__/workspace.service.test.ts +50 -8
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +33 -55
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +44 -1
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +664 -34
- package/src/modules/workspace/agent-download.builder.ts +308 -0
- package/src/modules/workspace/agent-download.routes.ts +183 -0
- package/src/modules/workspace/agent-download.store.ts +533 -0
- package/src/modules/workspace/agent-upload.store.ts +23 -7
- package/src/modules/workspace/file-readers/raw-mime.ts +40 -0
- package/src/modules/workspace/file-readers/text-reader.ts +5 -8
- package/src/modules/workspace/first-run.ts +222 -0
- package/src/modules/workspace/move-links.ts +237 -0
- package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +191 -489
- package/src/modules/workspace/startup/steps/seed-tree.ts +23 -38
- package/src/modules/workspace/startup/steps/template-files.step.ts +217 -249
- package/src/modules/workspace/startup/steps/template-source.ts +5 -3
- package/src/modules/workspace/workspace.routes.ts +64 -22
- package/src/modules/workspace/workspace.service.ts +202 -25
- package/src/modules/workspace/workspace.tools.ts +707 -68
- package/src/modules/write-access/__tests__/write-access.test.ts +13 -0
- package/src/modules/write-access/write-access.ts +9 -0
- package/src/shared/domain-errors.ts +123 -11
- package/src/shared/git.contract.ts +8 -1
- package/src/shared/hidden-tools.ts +45 -0
- package/src/shared/utf8-text.ts +21 -0
- package/src/tenancy/__tests__/static-tenant-source.test.ts +1 -0
- package/src/tenancy/static-tenant-source.ts +10 -2
- package/starter-packs/README.md +103 -0
- package/starter-packs/engineering/KnowledgeBase/About us.md +9 -0
- package/starter-packs/engineering/KnowledgeBase/Architecture.md +9 -0
- package/starter-packs/engineering/KnowledgeBase/Glossary.md +9 -0
- package/starter-packs/engineering/KnowledgeBase/How we ship.md +9 -0
- package/starter-packs/engineering/Plugins/engineering-starter/LICENSE +21 -0
- package/starter-packs/engineering/Plugins/engineering-starter/SOURCE.md +20 -0
- package/starter-packs/engineering/Plugins/engineering-starter/access.md +19 -0
- package/starter-packs/engineering/Plugins/engineering-starter/plugin.json +10 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/SKILL.md +171 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/sections/phase-2a-startup-diagnostic.md +157 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/office-hours/sections/phase-2b-builder-brainstorm.md +39 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/plan-ceo-review/SKILL.md +144 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/plan-eng-review/SKILL.md +144 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/review/SKILL.md +80 -0
- package/starter-packs/engineering/Plugins/engineering-starter/skills/review/checklist.md +184 -0
- package/starter-packs/engineering/pack.yaml +11 -0
- package/starter-packs/general/KnowledgeBase/About us.md +9 -0
- package/starter-packs/general/KnowledgeBase/Glossary.md +9 -0
- package/starter-packs/general/KnowledgeBase/How we work.md +9 -0
- package/starter-packs/general/Plugins/general-starter/LICENSE +202 -0
- package/starter-packs/general/Plugins/general-starter/SOURCE.md +10 -0
- package/starter-packs/general/Plugins/general-starter/access.md +19 -0
- package/starter-packs/general/Plugins/general-starter/plugin.json +10 -0
- package/starter-packs/general/Plugins/general-starter/skills/memory-management/SKILL.md +332 -0
- package/starter-packs/general/Plugins/general-starter/skills/productivity-start/SKILL.md +163 -0
- package/starter-packs/general/Plugins/general-starter/skills/productivity-update/SKILL.md +167 -0
- package/starter-packs/general/Plugins/general-starter/skills/task-management/SKILL.md +83 -0
- package/starter-packs/general/pack.yaml +10 -0
- package/starter-packs/operations/KnowledgeBase/Glossary.md +9 -0
- package/starter-packs/operations/KnowledgeBase/How we work.md +9 -0
- package/starter-packs/operations/KnowledgeBase/Processes.md +9 -0
- package/starter-packs/operations/KnowledgeBase/Tools we use.md +9 -0
- package/starter-packs/operations/KnowledgeBase/Vendors.md +9 -0
- package/starter-packs/operations/Plugins/operations-starter/LICENSE +202 -0
- package/starter-packs/operations/Plugins/operations-starter/SOURCE.md +10 -0
- package/starter-packs/operations/Plugins/operations-starter/access.md +19 -0
- package/starter-packs/operations/Plugins/operations-starter/plugin.json +10 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/capacity-plan/SKILL.md +111 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/change-request/SKILL.md +119 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/compliance-tracking/SKILL.md +44 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/process-doc/SKILL.md +80 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/process-optimization/SKILL.md +39 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/risk-assessment/SKILL.md +40 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/runbook/SKILL.md +85 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/status-report/SKILL.md +75 -0
- package/starter-packs/operations/Plugins/operations-starter/skills/vendor-review/SKILL.md +102 -0
- package/starter-packs/operations/pack.yaml +12 -0
- package/starter-packs/sales/KnowledgeBase/About us.md +9 -0
- package/starter-packs/sales/KnowledgeBase/Customers.md +9 -0
- package/starter-packs/sales/KnowledgeBase/Glossary.md +9 -0
- package/starter-packs/sales/KnowledgeBase/How we sell.md +9 -0
- package/starter-packs/sales/KnowledgeBase/Objections.md +9 -0
- package/starter-packs/sales/KnowledgeBase/Pricing.md +9 -0
- package/starter-packs/sales/Plugins/sales-starter/LICENSE +202 -0
- package/starter-packs/sales/Plugins/sales-starter/SOURCE.md +10 -0
- package/starter-packs/sales/Plugins/sales-starter/access.md +19 -0
- package/starter-packs/sales/Plugins/sales-starter/plugin.json +10 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/account-context/SKILL.md +94 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/account-plan/SKILL.md +95 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/account-research/SKILL.md +99 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/account-tiering/SKILL.md +101 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/call-prep/SKILL.md +111 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/call-summary/SKILL.md +111 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/close-plan/SKILL.md +106 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/competitive-intelligence/SKILL.md +102 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/create-an-asset/SKILL.md +105 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/crm-hygiene-check/SKILL.md +103 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/customer-health/SKILL.md +108 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/customer-voice/SKILL.md +94 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/daily-briefing/SKILL.md +61 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/deal-advance-gap/SKILL.md +102 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/deal-review/SKILL.md +105 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/deal-signals/SKILL.md +96 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/deal-slip-scenario/SKILL.md +104 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/draft-outreach/SKILL.md +116 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/end-of-day/SKILL.md +114 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/expansion-whitespace/SKILL.md +97 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/forecast/SKILL.md +100 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/handle-objection/SKILL.md +93 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/inbox-sweep/SKILL.md +114 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/lead-triage/SKILL.md +106 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/log-activity/SKILL.md +111 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/pipeline-review/SKILL.md +97 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/renewal-radar/SKILL.md +95 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/rep-context/SKILL.md +90 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/route-lead/SKILL.md +111 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/sales-setup/SKILL.md +200 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/schedule-meeting/SKILL.md +99 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/stakeholder-map/SKILL.md +107 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/team-pipeline/SKILL.md +105 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/update-opportunity/SKILL.md +112 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/weekly-wrap/SKILL.md +90 -0
- package/starter-packs/sales/Plugins/sales-starter/skills/win-loss-review/SKILL.md +88 -0
- package/starter-packs/sales/pack.yaml +13 -0
- package/starter-packs/support/KnowledgeBase/Escalations.md +9 -0
- package/starter-packs/support/KnowledgeBase/Glossary.md +9 -0
- package/starter-packs/support/KnowledgeBase/Known issues.md +9 -0
- package/starter-packs/support/KnowledgeBase/Products.md +9 -0
- package/starter-packs/support/KnowledgeBase/Tone of voice.md +9 -0
- package/starter-packs/support/Plugins/support-starter/LICENSE +202 -0
- package/starter-packs/support/Plugins/support-starter/SOURCE.md +10 -0
- package/starter-packs/support/Plugins/support-starter/access.md +19 -0
- package/starter-packs/support/Plugins/support-starter/plugin.json +10 -0
- package/starter-packs/support/Plugins/support-starter/skills/customer-escalation/SKILL.md +246 -0
- package/starter-packs/support/Plugins/support-starter/skills/customer-research/SKILL.md +250 -0
- package/starter-packs/support/Plugins/support-starter/skills/draft-response/SKILL.md +416 -0
- package/starter-packs/support/Plugins/support-starter/skills/kb-article/SKILL.md +350 -0
- package/starter-packs/support/Plugins/support-starter/skills/ticket-triage/SKILL.md +273 -0
- package/starter-packs/support/pack.yaml +12 -0
- package/kb-template/AGENTS.md +0 -730
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toolDef } from '../tool-helpers/tool-def.js';
|
|
2
|
+
import { declareRouteTool } from '../tool-helpers/route-tool-schemas.js';
|
|
2
3
|
import { utcpNamespacedKey } from '../../shared/utcp-namespace.js';
|
|
3
4
|
/**
|
|
4
5
|
* Registers the tool-manual catalog tools (both surfaces) and hosts their
|
|
@@ -14,6 +15,11 @@ import { utcpNamespacedKey } from '../../shared/utcp-namespace.js';
|
|
|
14
15
|
export function registerToolManualsTools(registry, router, toolAuth, toolHandler, toolManualService, deps) {
|
|
15
16
|
registry.registerExternalTool((ctx) => buildListLocalToolsDef(toolManualService, ctx.userEmail));
|
|
16
17
|
registry.registerInternalTool((ctx) => buildListLocalToolsDef(toolManualService, ctx.userEmail));
|
|
18
|
+
// The def above is built per catalog listing (its description names the
|
|
19
|
+
// tools configured for THIS caller), so declare the arguments here as well:
|
|
20
|
+
// a direct REST call that lands before the first listing must be checked
|
|
21
|
+
// against them too.
|
|
22
|
+
declareRouteTool('list_local_tools', LIST_LOCAL_TOOLS_INPUTS);
|
|
17
23
|
router.post('/agent/tools/list_local_tools', toolAuth, toolHandler(async (_args, ctx) => ({
|
|
18
24
|
tools: await toolManualService.listLocalOnly(ctx.user.email),
|
|
19
25
|
})));
|
|
@@ -26,22 +32,30 @@ export function registerToolManualsTools(registry, router, toolAuth, toolHandler
|
|
|
26
32
|
const listSetupDef = toolDef({
|
|
27
33
|
name: 'list_tool_setup',
|
|
28
34
|
// What each FIELD means is documented on the field, in `outputs` below:
|
|
29
|
-
// `setup.kind`, `variables` and `
|
|
30
|
-
// which made this description two thousand characters and
|
|
31
|
-
// thing a client cut. The description says what the tool
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
// `setup.kind`, `variables`, `invalid` and `hiddenTools` each carried a
|
|
36
|
+
// paragraph here, which made this description two thousand characters and
|
|
37
|
+
// so the first thing a client cut. The description says what the tool
|
|
38
|
+
// answers and the four things an agent cannot read off a field.
|
|
39
|
+
//
|
|
40
|
+
// It sits a few characters under `TOOL_DESCRIPTION_CAP` WITH the guide-first
|
|
41
|
+
// sentence the registry puts in front of it (`tool-registry/guide-first.ts`)
|
|
42
|
+
// and the `Call:` line generated ahead of everything,
|
|
43
|
+
// which is why every sentence here is the short form: the `hiddenTools`
|
|
44
|
+
// clause and that opener both came out of the same budget, and what a
|
|
45
|
+
// hidden tool's entry CONTAINS is on the field below rather than here.
|
|
46
|
+
description: 'Configuration status of every `.tool` the current user can access: what each needs set up and what is ' +
|
|
47
|
+
'configured, as `{ tools, invalid, onBranchOnly, note? }`. Scoped to the CALLER: a `.tool` it cannot ' +
|
|
48
|
+
'READ is absent, and every flag is the caller\'s own. ' +
|
|
49
|
+
'Secret VALUES are never returned and can never be set through a tool: an admin enters them in the tool ' +
|
|
50
|
+
'editor; users sign in on /connect. ' +
|
|
51
|
+
'Setting a tool\'s shared secrets is gated by `canWrite` on the `.tool` FILE (its frontmatter ' +
|
|
52
|
+
'`write:`/`owner:` verbs and the access.md chain), NOT by a platform role: who manages the file configures ' +
|
|
53
|
+
'the tool. ' +
|
|
54
|
+
'`hiddenTools` names the tools Hexis hides from agents for an invalid schema. ' +
|
|
41
55
|
'The listing is the RELEASED catalog, built from the default branch only: a server or `.tool` you declared on a ' +
|
|
42
|
-
'draft is not listed,
|
|
43
|
-
'
|
|
44
|
-
'
|
|
56
|
+
'draft is not listed, callable or signed-in-able until it is merged. Pass `branch` (the draft you wrote the ' +
|
|
57
|
+
'declaration on) and `onBranchOnly` names every tool declared there that the default branch does not serve ' +
|
|
58
|
+
'yet — open a change request and ask the user to merge it.',
|
|
45
59
|
path: '/api/agent/tools/list_tool_setup',
|
|
46
60
|
inputs: {
|
|
47
61
|
type: 'object',
|
|
@@ -89,6 +103,21 @@ export function registerToolManualsTools(registry, router, toolAuth, toolHandler
|
|
|
89
103
|
type: 'boolean',
|
|
90
104
|
description: 'You may write this `.tool` FILE, which is what gates setting its shared secrets.',
|
|
91
105
|
},
|
|
106
|
+
hiddenTools: {
|
|
107
|
+
type: 'array',
|
|
108
|
+
description: 'Tools of this server kept off every agent surface for an invalid input schema. Empty ' +
|
|
109
|
+
'unless the caller may write this tool.',
|
|
110
|
+
items: {
|
|
111
|
+
type: 'object',
|
|
112
|
+
properties: {
|
|
113
|
+
name: { type: 'string', description: 'The name the tool would have been offered under.' },
|
|
114
|
+
path: { type: 'string', description: 'JSON Pointer to the place in the schema that is not valid.' },
|
|
115
|
+
reason: { type: 'string', description: 'Why that place is not valid, in the validator\'s words.' },
|
|
116
|
+
marker: { type: 'string', description: 'The one sentence the tool page shows for this tool.' },
|
|
117
|
+
},
|
|
118
|
+
required: ['name', 'path', 'reason', 'marker'],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
92
121
|
variables: {
|
|
93
122
|
type: 'array',
|
|
94
123
|
description: 'What this tool needs configured, and by whom: per variable, whether the shared (admin) value is ' +
|
|
@@ -111,7 +140,7 @@ export function registerToolManualsTools(registry, router, toolAuth, toolHandler
|
|
|
111
140
|
},
|
|
112
141
|
},
|
|
113
142
|
},
|
|
114
|
-
required: ['slug', 'name', 'path', 'type', 'canWrite', 'variables'],
|
|
143
|
+
required: ['slug', 'name', 'path', 'type', 'canWrite', 'hiddenTools', 'variables'],
|
|
115
144
|
},
|
|
116
145
|
},
|
|
117
146
|
invalid: {
|
|
@@ -168,27 +197,35 @@ export function registerToolManualsTools(registry, router, toolAuth, toolHandler
|
|
|
168
197
|
const allKeys = manuals.flatMap((m) => (m.variables ?? []).map((v) => varKey(m.name, v.name)));
|
|
169
198
|
const status = await deps.variableStatus.statusFor(ctx.user.id, allKeys);
|
|
170
199
|
const statusByKey = new Map(status.map((s) => [s.key, s]));
|
|
171
|
-
const tools = await Promise.all(manuals.map(async (m) =>
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
200
|
+
const tools = await Promise.all(manuals.map(async (m) => {
|
|
201
|
+
const canWrite = await deps.accessControl.canWrite(defaultWs(), ctx.user.email, m.path);
|
|
202
|
+
return {
|
|
203
|
+
slug: m.slug,
|
|
204
|
+
name: m.name,
|
|
205
|
+
path: m.path,
|
|
206
|
+
type: m.type,
|
|
207
|
+
setup: m.setup ?? null,
|
|
208
|
+
canWrite,
|
|
209
|
+
// The marker goes only to the people who manage the server — the
|
|
210
|
+
// same verdict that gates setting its shared secrets. A caller who
|
|
211
|
+
// may only READ the tool is told nothing about it: they cannot fix
|
|
212
|
+
// the schema, and the tool is simply not among the ones they can call.
|
|
213
|
+
hiddenTools: canWrite ? (deps.hiddenTools?.hiddenFor(m.name) ?? []) : [],
|
|
214
|
+
variables: (m.variables ?? []).map((v) => {
|
|
215
|
+
const st = statusByKey.get(varKey(m.name, v.name));
|
|
216
|
+
const isOAuth = v.oauth != null;
|
|
217
|
+
return {
|
|
218
|
+
name: v.name,
|
|
219
|
+
scope: v.scope,
|
|
220
|
+
label: v.label ?? null,
|
|
221
|
+
oauth: isOAuth,
|
|
222
|
+
adminConfigured: st?.adminConfigured ?? false,
|
|
223
|
+
userConfigured: st?.userConfigured ?? false,
|
|
224
|
+
authorized: isOAuth ? (st?.userAuthorized ?? false) : null,
|
|
225
|
+
};
|
|
226
|
+
}),
|
|
227
|
+
};
|
|
228
|
+
}));
|
|
192
229
|
const onBranchOnly = pending.map((p) => ({ ...p, branch: branch }));
|
|
193
230
|
if (onBranchOnly.length === 0)
|
|
194
231
|
return { tools, invalid, onBranchOnly };
|
|
@@ -212,6 +249,8 @@ async function localToolsLine(svc, userEmail) {
|
|
|
212
249
|
return 'No local-only tools are currently configured.';
|
|
213
250
|
return `Local-only tools configured for you: ${tools.map((t) => `\`${t.name}\``).join(', ')}.`;
|
|
214
251
|
}
|
|
252
|
+
/** `list_local_tools` takes nothing; a const so the route and the def share one declaration. */
|
|
253
|
+
const LIST_LOCAL_TOOLS_INPUTS = { type: 'object', properties: {}, additionalProperties: false };
|
|
215
254
|
async function buildListLocalToolsDef(svc, userEmail) {
|
|
216
255
|
return toolDef({
|
|
217
256
|
name: 'list_local_tools',
|
|
@@ -226,7 +265,7 @@ async function buildListLocalToolsDef(svc, userEmail) {
|
|
|
226
265
|
'setup by hand. ' +
|
|
227
266
|
(await localToolsLine(svc, userEmail)),
|
|
228
267
|
path: '/api/agent/tools/list_local_tools',
|
|
229
|
-
inputs:
|
|
268
|
+
inputs: LIST_LOCAL_TOOLS_INPUTS,
|
|
230
269
|
outputs: {
|
|
231
270
|
type: 'object',
|
|
232
271
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manuals.tools.js","sourceRoot":"","sources":["../../../src/modules/tool-manuals/tool-manuals.tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-manuals.tools.js","sourceRoot":"","sources":["../../../src/modules/tool-manuals/tool-manuals.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* where the text specific to the tool sits, after whatever shared preamble it
|
|
6
6
|
* carried. Agents reported `file_stat`, `read_file`, `write_file` and
|
|
7
7
|
* `write_files` arriving ending in "[truncated]". The rules those descriptions
|
|
8
|
-
* shared now live in one place (see `agent-instructions/shared-file-rules.ts
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* shared now live in one place (see `agent-instructions/shared-file-rules.ts`,
|
|
9
|
+
* served in the guide `get_agent_guide` returns) and each description OPENS
|
|
10
|
+
* with the one sentence sending the agent there (`guide-first.ts`), which is
|
|
11
|
+
* what makes the cap below reachable rather than aspirational.
|
|
11
12
|
*/
|
|
12
13
|
import type { UtcpTool } from './tool.contract.js';
|
|
13
14
|
/**
|
|
@@ -20,8 +21,10 @@ import type { UtcpTool } from './tool.contract.js';
|
|
|
20
21
|
* could answer: no useful description of `move_file` fits in 500. What answers
|
|
21
22
|
* that one is the ORDER of the text, which is why the deployment's purpose line
|
|
22
23
|
* is prepended rather than appended (see `prefixToolDescription`) and why every
|
|
23
|
-
* description now
|
|
24
|
-
*
|
|
24
|
+
* description now opens with the guide-first sentence and then what the tool
|
|
25
|
+
* does, with the tool's own detail last: a cut at 500 keeps the sentence and
|
|
26
|
+
* the tool's first sentence (see `firstSentenceEnd`) and takes the detail,
|
|
27
|
+
* which the guide states in full anyway. The other cut is the
|
|
25
28
|
* four-figure one agents reported on `file_stat`, `read_file`, `write_file` and
|
|
26
29
|
* `write_files`, and 1,200 sits below it with room to spare.
|
|
27
30
|
*
|
|
@@ -51,16 +54,21 @@ export declare const TOOL_DESCRIPTION_CAP = 1200;
|
|
|
51
54
|
* rather than a comment.
|
|
52
55
|
*/
|
|
53
56
|
export declare const CLIENT_SHORT_CUT = 500;
|
|
57
|
+
/** What these measurements read of a tool: its name, its text and the schema its `Call:` line is generated from. */
|
|
58
|
+
export type MeasuredTool = Pick<UtcpTool, 'name' | 'description'> & {
|
|
59
|
+
inputs?: unknown;
|
|
60
|
+
};
|
|
54
61
|
/**
|
|
55
62
|
* Where the tool's OWN opening sentence ends in the text a client is handed:
|
|
56
|
-
* the purpose prefix counted at its cap, as in {@link clientVisibleLength},
|
|
57
|
-
* the
|
|
58
|
-
*
|
|
63
|
+
* the purpose prefix counted at its cap, as in {@link clientVisibleLength},
|
|
64
|
+
* and the guide-first sentence every listed tool opens with counted as the
|
|
65
|
+
* text it is — a client that cuts at 500 must still reach the sentence saying
|
|
66
|
+
* what the tool does, past that one.
|
|
59
67
|
*
|
|
60
68
|
* A description with no sentence-ending punctuation counts whole — the honest
|
|
61
69
|
* answer for text that never finishes a sentence.
|
|
62
70
|
*/
|
|
63
|
-
export declare function firstSentenceEnd(tool:
|
|
71
|
+
export declare function firstSentenceEnd(tool: MeasuredTool): number;
|
|
64
72
|
/**
|
|
65
73
|
* The length of the description as a CLIENT receives it — which for the four
|
|
66
74
|
* knowledge-base tools includes the deployment's purpose prefix, since the MCP
|
|
@@ -69,12 +77,8 @@ export declare function firstSentenceEnd(tool: Pick<UtcpTool, 'name' | 'descript
|
|
|
69
77
|
* the cap is what an admin may grow their text to without being told, so a
|
|
70
78
|
* description that only fits beside a short prefix does not really fit.
|
|
71
79
|
*
|
|
72
|
-
* The
|
|
73
|
-
*
|
|
74
|
-
* — the guide's file name — so a description measured beside the nine
|
|
75
|
-
* characters of `AGENTS.md` would pass here and arrive cut on a deployment
|
|
76
|
-
* that renamed its guide. Whatever pointer a description actually carries is
|
|
77
|
-
* discounted and charged at {@link SHARED_RULES_POINTER_MAX} instead.
|
|
80
|
+
* The guide-first sentence every listed tool opens with is already in the
|
|
81
|
+
* description the registry lists, so it is measured as the text it is.
|
|
78
82
|
*/
|
|
79
|
-
export declare function clientVisibleLength(tool:
|
|
83
|
+
export declare function clientVisibleLength(tool: MeasuredTool): number;
|
|
80
84
|
//# sourceMappingURL=description-length.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description-length.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-registry/description-length.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"description-length.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-registry/description-length.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,oHAAoH;AACpH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAkBzF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAa3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG9D"}
|
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
* where the text specific to the tool sits, after whatever shared preamble it
|
|
6
6
|
* carried. Agents reported `file_stat`, `read_file`, `write_file` and
|
|
7
7
|
* `write_files` arriving ending in "[truncated]". The rules those descriptions
|
|
8
|
-
* shared now live in one place (see `agent-instructions/shared-file-rules.ts
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* shared now live in one place (see `agent-instructions/shared-file-rules.ts`,
|
|
9
|
+
* served in the guide `get_agent_guide` returns) and each description OPENS
|
|
10
|
+
* with the one sentence sending the agent there (`guide-first.ts`), which is
|
|
11
|
+
* what makes the cap below reachable rather than aspirational.
|
|
11
12
|
*/
|
|
13
|
+
import { callLine, splitCallLine } from '@bevel-software/platform-mcp-core';
|
|
12
14
|
import { TOOL_PREFIX_CAP } from '@bevel-software/platform-shared';
|
|
13
15
|
import { PREFIXED_TOOLS } from '../agent-instructions/compose.js';
|
|
14
|
-
import {
|
|
16
|
+
import { EXTERNAL_KB_MANUAL_NAME } from '../tool-manuals/tool-manuals.contract.js';
|
|
17
|
+
import { GUIDE_FIRST_SENTENCE } from './guide-first.js';
|
|
15
18
|
/**
|
|
16
19
|
* The ceiling on what a client is handed for one tool, enforced by
|
|
17
20
|
* `__tests__/tool-description-length.test.ts`.
|
|
@@ -22,8 +25,10 @@ import { SHARED_RULES_POINTER_MAX, sharedRulesPointer } from '../agent-instructi
|
|
|
22
25
|
* could answer: no useful description of `move_file` fits in 500. What answers
|
|
23
26
|
* that one is the ORDER of the text, which is why the deployment's purpose line
|
|
24
27
|
* is prepended rather than appended (see `prefixToolDescription`) and why every
|
|
25
|
-
* description now
|
|
26
|
-
*
|
|
28
|
+
* description now opens with the guide-first sentence and then what the tool
|
|
29
|
+
* does, with the tool's own detail last: a cut at 500 keeps the sentence and
|
|
30
|
+
* the tool's first sentence (see `firstSentenceEnd`) and takes the detail,
|
|
31
|
+
* which the guide states in full anyway. The other cut is the
|
|
27
32
|
* four-figure one agents reported on `file_stat`, `read_file`, `write_file` and
|
|
28
33
|
* `write_files`, and 1,200 sits below it with room to spare.
|
|
29
34
|
*
|
|
@@ -53,24 +58,45 @@ export const TOOL_DESCRIPTION_CAP = 1_200;
|
|
|
53
58
|
* rather than a comment.
|
|
54
59
|
*/
|
|
55
60
|
export const CLIENT_SHORT_CUT = 500;
|
|
61
|
+
/**
|
|
62
|
+
* The `Call:` line a client is handed ahead of everything else, and the blank
|
|
63
|
+
* line after it — counted, because it is part of what a client cuts. Taken
|
|
64
|
+
* from the description when it already opens with one (a meta-tool is built
|
|
65
|
+
* with its line), generated from the tool's inputs under the namespace the
|
|
66
|
+
* hosted endpoint serves otherwise, as mcp-core's `withCallExample` does at
|
|
67
|
+
* listing time. The rest of the description comes back beside it.
|
|
68
|
+
*/
|
|
69
|
+
function splitServedCallLine(tool) {
|
|
70
|
+
const { call, rest } = splitCallLine(tool.description ?? '');
|
|
71
|
+
const line = call ?? callLine(`${EXTERNAL_KB_MANUAL_NAME}.${tool.name}`, tool.inputs);
|
|
72
|
+
// The blank line after it only when something follows it.
|
|
73
|
+
const followed = rest !== '' || PREFIXED_TOOLS.has(tool.name);
|
|
74
|
+
return { callChars: line.length + (followed ? 2 : 0), rest };
|
|
75
|
+
}
|
|
56
76
|
/**
|
|
57
77
|
* Where the tool's OWN opening sentence ends in the text a client is handed:
|
|
58
|
-
* the purpose prefix counted at its cap, as in {@link clientVisibleLength},
|
|
59
|
-
* the
|
|
60
|
-
*
|
|
78
|
+
* the purpose prefix counted at its cap, as in {@link clientVisibleLength},
|
|
79
|
+
* and the guide-first sentence every listed tool opens with counted as the
|
|
80
|
+
* text it is — a client that cuts at 500 must still reach the sentence saying
|
|
81
|
+
* what the tool does, past that one.
|
|
61
82
|
*
|
|
62
83
|
* A description with no sentence-ending punctuation counts whole — the honest
|
|
63
84
|
* answer for text that never finishes a sentence.
|
|
64
85
|
*/
|
|
65
86
|
export function firstSentenceEnd(tool) {
|
|
66
|
-
const
|
|
67
|
-
const
|
|
87
|
+
const { callChars, rest: description } = splitServedCallLine(tool);
|
|
88
|
+
const prefix = callChars + (PREFIXED_TOOLS.has(tool.name) ? TOOL_PREFIX_CAP + 2 : 0);
|
|
68
89
|
if (description === '')
|
|
69
90
|
return prefix;
|
|
70
|
-
|
|
71
|
-
|
|
91
|
+
// The opener and whatever whitespace follows it: `guideFirstDescription`
|
|
92
|
+
// joins with one space, and leaves a description that already opens with
|
|
93
|
+
// the sentence as it came — a newline after it is still the opener's.
|
|
94
|
+
const opener = description.startsWith(GUIDE_FIRST_SENTENCE)
|
|
95
|
+
? GUIDE_FIRST_SENTENCE.length + (description.slice(GUIDE_FIRST_SENTENCE.length).match(/^\s*/)?.[0].length ?? 0)
|
|
96
|
+
: 0;
|
|
97
|
+
const own = description.slice(opener);
|
|
72
98
|
const firstSentence = own.match(/^[\s\S]*?[.!?](?=\s|$)/)?.[0] ?? own;
|
|
73
|
-
return prefix + firstSentence.length;
|
|
99
|
+
return prefix + opener + firstSentence.length;
|
|
74
100
|
}
|
|
75
101
|
/**
|
|
76
102
|
* The length of the description as a CLIENT receives it — which for the four
|
|
@@ -80,29 +106,23 @@ export function firstSentenceEnd(tool) {
|
|
|
80
106
|
* the cap is what an admin may grow their text to without being told, so a
|
|
81
107
|
* description that only fits beside a short prefix does not really fit.
|
|
82
108
|
*
|
|
83
|
-
* The
|
|
84
|
-
*
|
|
85
|
-
* — the guide's file name — so a description measured beside the nine
|
|
86
|
-
* characters of `AGENTS.md` would pass here and arrive cut on a deployment
|
|
87
|
-
* that renamed its guide. Whatever pointer a description actually carries is
|
|
88
|
-
* discounted and charged at {@link SHARED_RULES_POINTER_MAX} instead.
|
|
109
|
+
* The guide-first sentence every listed tool opens with is already in the
|
|
110
|
+
* description the registry lists, so it is measured as the text it is.
|
|
89
111
|
*/
|
|
90
112
|
export function clientVisibleLength(tool) {
|
|
91
|
-
const
|
|
113
|
+
const { callChars, rest } = splitServedCallLine(tool);
|
|
114
|
+
return callChars + ownVisibleLength(tool.name, rest);
|
|
115
|
+
}
|
|
116
|
+
/** {@link clientVisibleLength} without the `Call:` line: the purpose prefix and the tool's own text. */
|
|
117
|
+
function ownVisibleLength(name, description) {
|
|
118
|
+
const own = description.length;
|
|
92
119
|
// A prefixed tool with no description of its own is still handed the prefix,
|
|
93
120
|
// and nothing else — `prefixToolDescription` sends the prefix alone, with no
|
|
94
121
|
// blank line after it. Measuring that as zero would under-report the only
|
|
95
122
|
// text the client got.
|
|
96
123
|
if (own === 0)
|
|
97
|
-
return PREFIXED_TOOLS.has(
|
|
98
|
-
// The pointer at its worst case rather than at this layout's: swap the one
|
|
99
|
-
// it carries for the longest it could be. A description that does not end
|
|
100
|
-
// with it (`start_session`, the proxied tools) is charged nothing.
|
|
101
|
-
const pointer = sharedRulesPointer();
|
|
102
|
-
const atWorstPointer = tool.description.endsWith(pointer)
|
|
103
|
-
? own - pointer.length + SHARED_RULES_POINTER_MAX
|
|
104
|
-
: own;
|
|
124
|
+
return PREFIXED_TOOLS.has(name) ? TOOL_PREFIX_CAP : 0;
|
|
105
125
|
// `+ 2` for the blank line `prefixToolDescription` puts between the two.
|
|
106
|
-
return PREFIXED_TOOLS.has(
|
|
126
|
+
return PREFIXED_TOOLS.has(name) ? own + TOOL_PREFIX_CAP + 2 : own;
|
|
107
127
|
}
|
|
108
128
|
//# sourceMappingURL=description-length.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description-length.js","sourceRoot":"","sources":["../../../src/modules/tool-registry/description-length.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"description-length.js","sourceRoot":"","sources":["../../../src/modules/tool-registry/description-length.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { UtcpTool } from './tool.contract.js';
|
|
2
|
+
/** The one tool that returns the platform's guide (see `modules/agent-guide`). */
|
|
3
|
+
export declare const GET_AGENT_GUIDE_TOOL = "get_agent_guide";
|
|
4
|
+
/**
|
|
5
|
+
* The sentence every tool of the platform's own OPENS with: what to do before
|
|
6
|
+
* anything else here. At the front, not the end, because clients cut a long
|
|
7
|
+
* description from the end and the one instruction that must survive is this
|
|
8
|
+
* one. The guide's own tool is the one that does not carry it — it IS what
|
|
9
|
+
* the sentence points at.
|
|
10
|
+
*/
|
|
11
|
+
export declare const GUIDE_FIRST_SENTENCE = "Call `get_agent_guide` first and read the platform's guide before anything else here.";
|
|
12
|
+
/**
|
|
13
|
+
* `description` as a client is handed it: the sentence ahead of it, once. A
|
|
14
|
+
* description that already opens with the sentence is returned as it is, and
|
|
15
|
+
* an absent or empty one becomes the sentence alone. The ONE place the
|
|
16
|
+
* sentence is put in front of a description — the registry for the tools it
|
|
17
|
+
* lists, the MCP service for the meta-tools it builds itself — so the two
|
|
18
|
+
* cannot drift apart on what "once" means.
|
|
19
|
+
*
|
|
20
|
+
* Behind a `Call:` line, never ahead of it: the call example is the first
|
|
21
|
+
* line of every description (see mcp-core's `withCallExample`), and the
|
|
22
|
+
* sentence opens what follows it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function guideFirstDescription(description: string | undefined): string;
|
|
25
|
+
/** `tool` as the catalog lists it: the sentence ahead of its own description, except on the guide's own tool. */
|
|
26
|
+
export declare function withGuideFirst(tool: UtcpTool): UtcpTool;
|
|
27
|
+
//# sourceMappingURL=guide-first.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide-first.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-registry/guide-first.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,0FAAoG,CAAC;AAEtI;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM7E;AAED,iHAAiH;AACjH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAIvD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { splitCallLine } from '@bevel-software/platform-mcp-core';
|
|
2
|
+
/** The one tool that returns the platform's guide (see `modules/agent-guide`). */
|
|
3
|
+
export const GET_AGENT_GUIDE_TOOL = 'get_agent_guide';
|
|
4
|
+
/**
|
|
5
|
+
* The sentence every tool of the platform's own OPENS with: what to do before
|
|
6
|
+
* anything else here. At the front, not the end, because clients cut a long
|
|
7
|
+
* description from the end and the one instruction that must survive is this
|
|
8
|
+
* one. The guide's own tool is the one that does not carry it — it IS what
|
|
9
|
+
* the sentence points at.
|
|
10
|
+
*/
|
|
11
|
+
export const GUIDE_FIRST_SENTENCE = `Call \`${GET_AGENT_GUIDE_TOOL}\` first and read the platform's guide before anything else here.`;
|
|
12
|
+
/**
|
|
13
|
+
* `description` as a client is handed it: the sentence ahead of it, once. A
|
|
14
|
+
* description that already opens with the sentence is returned as it is, and
|
|
15
|
+
* an absent or empty one becomes the sentence alone. The ONE place the
|
|
16
|
+
* sentence is put in front of a description — the registry for the tools it
|
|
17
|
+
* lists, the MCP service for the meta-tools it builds itself — so the two
|
|
18
|
+
* cannot drift apart on what "once" means.
|
|
19
|
+
*
|
|
20
|
+
* Behind a `Call:` line, never ahead of it: the call example is the first
|
|
21
|
+
* line of every description (see mcp-core's `withCallExample`), and the
|
|
22
|
+
* sentence opens what follows it.
|
|
23
|
+
*/
|
|
24
|
+
export function guideFirstDescription(description) {
|
|
25
|
+
const { call, rest } = splitCallLine(description ?? '');
|
|
26
|
+
if (call !== null)
|
|
27
|
+
return `${call}\n\n${guideFirstDescription(rest)}`;
|
|
28
|
+
const own = rest;
|
|
29
|
+
if (own.startsWith(GUIDE_FIRST_SENTENCE))
|
|
30
|
+
return own;
|
|
31
|
+
return own ? `${GUIDE_FIRST_SENTENCE} ${own}` : GUIDE_FIRST_SENTENCE;
|
|
32
|
+
}
|
|
33
|
+
/** `tool` as the catalog lists it: the sentence ahead of its own description, except on the guide's own tool. */
|
|
34
|
+
export function withGuideFirst(tool) {
|
|
35
|
+
if (tool.name === GET_AGENT_GUIDE_TOOL)
|
|
36
|
+
return tool;
|
|
37
|
+
const description = guideFirstDescription(tool.description);
|
|
38
|
+
return description === tool.description ? tool : { ...tool, description };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=guide-first.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide-first.js","sourceRoot":"","sources":["../../../src/modules/tool-registry/guide-first.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,oBAAoB,mEAAmE,CAAC;AAEtI;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAA+B;IACnE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,GAAG,IAAI,OAAO,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,GAAG,CAAC;IACrD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,oBAAoB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACvE,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,OAAO,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -6,6 +6,12 @@ import type { IToolRegistry, ToolListProvider, ToolManualContext, ToolProvider,
|
|
|
6
6
|
* catalog only aggregates and lists them — the two manual endpoints serialize
|
|
7
7
|
* each list per request. Insertion order is preserved (static tools first, then
|
|
8
8
|
* provider-built ones); a duplicate static name within a surface throws.
|
|
9
|
+
*
|
|
10
|
+
* Every listed tool but the guide's own (`get_agent_guide`, which is what the
|
|
11
|
+
* sentence points at) opens with the one sentence saying what to do before
|
|
12
|
+
* any of them (`guide-first.ts`): applied here, at the one place both
|
|
13
|
+
* surfaces list from, so no module that registers a tool has to remember it
|
|
14
|
+
* and no surface can serve a tool without it.
|
|
9
15
|
*/
|
|
10
16
|
export declare class ToolRegistry implements IToolRegistry {
|
|
11
17
|
private readonly external;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-registry/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACT,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-registry/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAEhE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAKzD,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAKzD,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIjD,YAAY,CAAC,GAAG,GAAE,iBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAK9D,YAAY,CAAC,GAAG,GAAE,iBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAMpE,OAAO,CAAC,GAAG;CAMZ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withGuideFirst } from './guide-first.js';
|
|
1
2
|
/**
|
|
2
3
|
* The tool catalog. Modules call `registerExternalTool` / `registerInternalTool`
|
|
3
4
|
* (both, for a `both` tool) with a self-describing UTCP `Tool` def, or a
|
|
@@ -5,6 +6,12 @@
|
|
|
5
6
|
* catalog only aggregates and lists them — the two manual endpoints serialize
|
|
6
7
|
* each list per request. Insertion order is preserved (static tools first, then
|
|
7
8
|
* provider-built ones); a duplicate static name within a surface throws.
|
|
9
|
+
*
|
|
10
|
+
* Every listed tool but the guide's own (`get_agent_guide`, which is what the
|
|
11
|
+
* sentence points at) opens with the one sentence saying what to do before
|
|
12
|
+
* any of them (`guide-first.ts`): applied here, at the one place both
|
|
13
|
+
* surfaces list from, so no module that registers a tool has to remember it
|
|
14
|
+
* and no surface can serve a tool without it.
|
|
8
15
|
*/
|
|
9
16
|
export class ToolRegistry {
|
|
10
17
|
external = new Map();
|
|
@@ -29,12 +36,12 @@ export class ToolRegistry {
|
|
|
29
36
|
}
|
|
30
37
|
async listExternal(ctx = {}) {
|
|
31
38
|
const dynamic = await Promise.all(this.externalProviders.map((p) => p(ctx)));
|
|
32
|
-
return [...this.external.values(), ...dynamic];
|
|
39
|
+
return [...this.external.values(), ...dynamic].map(withGuideFirst);
|
|
33
40
|
}
|
|
34
41
|
async listInternal(ctx = {}) {
|
|
35
42
|
const dynamic = await Promise.all(this.internalProviders.map((p) => p(ctx)));
|
|
36
43
|
const lists = await Promise.all(this.internalListProviders.map((p) => p(ctx)));
|
|
37
|
-
return [...this.internal.values(), ...dynamic, ...lists.flat()];
|
|
44
|
+
return [...this.internal.values(), ...dynamic, ...lists.flat()].map(withGuideFirst);
|
|
38
45
|
}
|
|
39
46
|
add(into, tool, surface) {
|
|
40
47
|
if (into.has(tool.name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/modules/tool-registry/tool-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/modules/tool-registry/tool-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IACvC,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IACvC,iBAAiB,GAAmB,EAAE,CAAC;IACvC,iBAAiB,GAAmB,EAAE,CAAC;IACvC,qBAAqB,GAAuB,EAAE,CAAC;IAEhE,oBAAoB,CAAC,IAA6B;QAChD,IAAI,OAAO,IAAI,KAAK,UAAU;YAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,IAA6B;QAChD,IAAI,OAAO,IAAI,KAAK,UAAU;YAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,qBAAqB,CAAC,QAA0B;QAC9C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAyB,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAyB,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtF,CAAC;IAEO,GAAG,CAAC,IAA2B,EAAE,IAAc,EAAE,OAAe;QACtE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF"}
|