@bevel-software/platform-core-backend 0.21.0 → 0.23.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/dist/core/core-ports.d.ts +11 -1
- 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 +3 -3
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +62 -13
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +22 -3
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +158 -23
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +34 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +89 -13
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core-config.d.ts +0 -12
- package/dist/core-config.d.ts.map +1 -1
- package/dist/core-config.js +11 -13
- package/dist/core-config.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.interface.d.ts +42 -12
- package/dist/modules/access/access-control.interface.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +67 -10
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +214 -35
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access-requests.contract.d.ts +75 -0
- package/dist/modules/access/access-requests.contract.d.ts.map +1 -0
- package/dist/modules/access/access-requests.contract.js +20 -0
- package/dist/modules/access/access-requests.contract.js.map +1 -0
- package/dist/modules/access/access-requests.routes.d.ts +35 -0
- package/dist/modules/access/access-requests.routes.d.ts.map +1 -0
- package/dist/modules/access/access-requests.routes.js +237 -0
- package/dist/modules/access/access-requests.routes.js.map +1 -0
- package/dist/modules/access/access-requests.service.d.ts +123 -0
- package/dist/modules/access/access-requests.service.d.ts.map +1 -0
- package/dist/modules/access/access-requests.service.js +337 -0
- package/dist/modules/access/access-requests.service.js.map +1 -0
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +13 -15
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access-model/access-grammar.d.ts +12 -0
- package/dist/modules/access-model/access-grammar.d.ts.map +1 -1
- package/dist/modules/access-model/access-grammar.js +24 -0
- package/dist/modules/access-model/access-grammar.js.map +1 -1
- package/dist/modules/auth/account-admission.d.ts +58 -7
- package/dist/modules/auth/account-admission.d.ts.map +1 -1
- package/dist/modules/auth/account-admission.js +44 -1
- package/dist/modules/auth/account-admission.js.map +1 -1
- package/dist/modules/auth/account.routes.d.ts +1 -1
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +61 -5
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/auth/auth.middleware.d.ts +1 -1
- package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
- package/dist/modules/auth/auth.middleware.js +18 -7
- package/dist/modules/auth/auth.middleware.js.map +1 -1
- package/dist/modules/auth/auth.routes.d.ts.map +1 -1
- package/dist/modules/auth/auth.routes.js +8 -0
- package/dist/modules/auth/auth.routes.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +96 -3
- package/dist/modules/auth/auth.service.d.ts.map +1 -1
- package/dist/modules/auth/auth.service.js +187 -9
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.d.ts.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.js +7 -2
- package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
- package/dist/modules/database/core-schema.d.ts +41 -24
- package/dist/modules/database/core-schema.d.ts.map +1 -1
- package/dist/modules/database/core-schema.js +35 -27
- package/dist/modules/database/core-schema.js.map +1 -1
- package/dist/modules/github-app/github-app.client.d.ts +101 -0
- package/dist/modules/github-app/github-app.client.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.client.js +222 -0
- package/dist/modules/github-app/github-app.client.js.map +1 -0
- package/dist/modules/github-app/github-app.connection.d.ts +102 -0
- package/dist/modules/github-app/github-app.connection.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.connection.js +185 -0
- package/dist/modules/github-app/github-app.connection.js.map +1 -0
- package/dist/modules/github-app/github-app.routes.d.ts +59 -0
- package/dist/modules/github-app/github-app.routes.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.routes.js +323 -0
- package/dist/modules/github-app/github-app.routes.js.map +1 -0
- package/dist/modules/github-app/index.d.ts +4 -0
- package/dist/modules/github-app/index.d.ts.map +1 -0
- package/dist/modules/github-app/index.js +4 -0
- package/dist/modules/github-app/index.js.map +1 -0
- package/dist/modules/kb-fs/branch-name.d.ts.map +1 -1
- package/dist/modules/kb-fs/branch-name.js +12 -2
- package/dist/modules/kb-fs/branch-name.js.map +1 -1
- package/dist/modules/kb-fs/remote-url.d.ts +22 -0
- package/dist/modules/kb-fs/remote-url.d.ts.map +1 -0
- package/dist/modules/kb-fs/remote-url.js +35 -0
- package/dist/modules/kb-fs/remote-url.js.map +1 -0
- package/dist/modules/kb-fs/repo-path.d.ts +11 -16
- package/dist/modules/kb-fs/repo-path.d.ts.map +1 -1
- package/dist/modules/kb-fs/repo-path.js +79 -0
- package/dist/modules/kb-fs/repo-path.js.map +1 -1
- package/dist/modules/kb-sync/kb-sync.routes.d.ts +2 -2
- package/dist/modules/kb-sync/kb-sync.routes.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.routes.js +14 -3
- package/dist/modules/kb-sync/kb-sync.routes.js.map +1 -1
- package/dist/modules/kb-sync/sync-auth.d.ts +3 -1
- package/dist/modules/kb-sync/sync-auth.d.ts.map +1 -1
- package/dist/modules/kb-sync/sync-auth.js +1 -1
- package/dist/modules/kb-sync/sync-auth.js.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.js +21 -6
- package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js +3 -2
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
- package/dist/modules/plugins/join-proposals.d.ts +17 -5
- package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
- package/dist/modules/plugins/join-proposals.js +76 -22
- package/dist/modules/plugins/join-proposals.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts +111 -18
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +173 -29
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +3 -2
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.d.ts +22 -1
- package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +101 -7
- package/dist/modules/settings/deployment-settings.service.js.map +1 -1
- package/dist/modules/settings/managed-repository.d.ts +43 -0
- package/dist/modules/settings/managed-repository.d.ts.map +1 -0
- package/dist/modules/settings/managed-repository.js +60 -0
- package/dist/modules/settings/managed-repository.js.map +1 -0
- package/dist/modules/settings/repository-source.d.ts +128 -0
- package/dist/modules/settings/repository-source.d.ts.map +1 -0
- package/dist/modules/settings/repository-source.js +150 -0
- package/dist/modules/settings/repository-source.js.map +1 -0
- package/dist/modules/settings/setup.routes.d.ts +78 -4
- package/dist/modules/settings/setup.routes.d.ts.map +1 -1
- package/dist/modules/settings/setup.routes.js +379 -17
- package/dist/modules/settings/setup.routes.js.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts +6 -8
- package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.js +24 -63
- package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
- package/dist/modules/skills/skills.contract.d.ts +90 -18
- package/dist/modules/skills/skills.contract.d.ts.map +1 -1
- package/dist/modules/skills/skills.contract.js +4 -1
- package/dist/modules/skills/skills.contract.js.map +1 -1
- package/dist/modules/skills/skills.service.d.ts +98 -9
- package/dist/modules/skills/skills.service.d.ts.map +1 -1
- package/dist/modules/skills/skills.service.js +239 -37
- package/dist/modules/skills/skills.service.js.map +1 -1
- package/dist/modules/skills/skills.tools.d.ts +7 -0
- package/dist/modules/skills/skills.tools.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.js +71 -7
- package/dist/modules/skills/skills.tools.js.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.js +4 -2
- package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
- package/dist/modules/tool-auth/internal-token.service.d.ts +3 -3
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts +16 -7
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js +34 -12
- package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +15 -0
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts +2 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.js +25 -4
- package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.d.ts +3 -2
- 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-helpers/validate-token.js +1 -1
- package/dist/modules/tool-helpers/validate-token.js.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +98 -0
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -0
- package/dist/modules/workflow/agent-tools/change-request-summary.js +81 -0
- package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -0
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +113 -37
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/file-lock.service.d.ts +24 -0
- package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
- package/dist/modules/workflow/file-lock.service.js +30 -0
- package/dist/modules/workflow/file-lock.service.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +72 -1
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +170 -6
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.d.ts.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.js +5 -0
- package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts +45 -0
- package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.js +99 -0
- package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
- package/dist/modules/workflow/pending-commits.service.d.ts +38 -0
- package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
- package/dist/modules/workflow/pending-commits.service.js +55 -0
- package/dist/modules/workflow/pending-commits.service.js.map +1 -1
- package/dist/modules/workflow/workflow-hooks.d.ts +54 -32
- package/dist/modules/workflow/workflow-hooks.d.ts.map +1 -1
- package/dist/modules/workflow/workflow-hooks.js +16 -1
- package/dist/modules/workflow/workflow-hooks.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +3 -1
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +94 -13
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +258 -51
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/agent-access.gate.d.ts +94 -0
- package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -0
- package/dist/modules/workspace/agent-access.gate.js +123 -0
- package/dist/modules/workspace/agent-access.gate.js.map +1 -0
- package/dist/modules/workspace/routine-write-policy.d.ts +5 -6
- package/dist/modules/workspace/routine-write-policy.d.ts.map +1 -1
- package/dist/modules/workspace/routine-write-policy.js +5 -6
- package/dist/modules/workspace/routine-write-policy.js.map +1 -1
- package/dist/modules/workspace/session-sink.d.ts +5 -5
- package/dist/modules/workspace/set-aside-clone.d.ts +46 -0
- package/dist/modules/workspace/set-aside-clone.d.ts.map +1 -0
- package/dist/modules/workspace/set-aside-clone.js +92 -0
- package/dist/modules/workspace/set-aside-clone.js.map +1 -0
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts +117 -1
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js +190 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +92 -3
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +115 -5
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +272 -26
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts +2 -2
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +337 -117
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/modules/write-access/write-access.d.ts +60 -0
- package/dist/modules/write-access/write-access.d.ts.map +1 -0
- package/dist/modules/write-access/write-access.js +129 -0
- package/dist/modules/write-access/write-access.js.map +1 -0
- package/dist/shared/domain-errors.d.ts +64 -0
- package/dist/shared/domain-errors.d.ts.map +1 -1
- package/dist/shared/domain-errors.js +83 -0
- package/dist/shared/domain-errors.js.map +1 -1
- package/dist/shared/git.contract.d.ts +30 -0
- package/dist/shared/git.contract.d.ts.map +1 -1
- package/dist/shared/git.contract.js +26 -0
- package/dist/shared/git.contract.js.map +1 -1
- package/dist/tenancy/static-tenant-source.d.ts +0 -1
- package/dist/tenancy/static-tenant-source.d.ts.map +1 -1
- package/dist/tenancy/static-tenant-source.js +0 -2
- package/dist/tenancy/static-tenant-source.js.map +1 -1
- package/migrations/0014_change_request_closed_reason.sql +1 -0
- package/migrations/0015_account_deactivation.sql +3 -0
- package/migrations/meta/0014_snapshot.json +2265 -0
- package/migrations/meta/0015_snapshot.json +2271 -0
- package/migrations/meta/_journal.json +14 -0
- package/package.json +3 -3
- package/src/__tests__/kb-layout-config.test.ts +0 -2
- package/src/__tests__/retired-settings.test.ts +96 -0
- package/src/core/__tests__/gated-boot.test.ts +132 -0
- package/src/core/__tests__/lifecycle.test.ts +170 -1
- package/src/core/__tests__/set-aside-root-is-one-place.test.ts +63 -0
- package/src/core/core-ports.ts +11 -1
- package/src/core/create-core-server.ts +69 -15
- package/src/core/create-core-services.ts +190 -27
- package/src/core/lifecycle.ts +98 -13
- package/src/core-config.ts +13 -14
- package/src/index.ts +12 -1
- package/src/modules/access/__tests__/access-control.preview-relocation.test.ts +385 -0
- package/src/modules/access/__tests__/access-control.prospective.test.ts +94 -18
- package/src/modules/access/__tests__/access-requests.recut.test.ts +134 -0
- package/src/modules/access/__tests__/access-requests.routes.test.ts +610 -0
- package/src/modules/access/__tests__/access.routes.prospective.test.ts +6 -7
- package/src/modules/access/access-control.interface.ts +43 -12
- package/src/modules/access/access-control.service.ts +234 -36
- package/src/modules/access/access-requests.contract.ts +93 -0
- package/src/modules/access/access-requests.routes.ts +286 -0
- package/src/modules/access/access-requests.service.ts +420 -0
- package/src/modules/access/access.routes.ts +13 -15
- package/src/modules/access-model/access-grammar.ts +22 -0
- package/src/modules/agent-instructions/__tests__/agent-instructions.route.test.ts +3 -1
- package/src/modules/auth/__tests__/account-deactivation.test.ts +252 -0
- package/src/modules/auth/__tests__/account.routes.test.ts +81 -3
- package/src/modules/auth/__tests__/auth.middleware.test.ts +45 -22
- package/src/modules/auth/__tests__/auth.service.test.ts +39 -1
- package/src/modules/auth/account-admission.ts +78 -9
- package/src/modules/auth/account.routes.ts +63 -7
- package/src/modules/auth/auth.middleware.ts +19 -8
- package/src/modules/auth/auth.routes.ts +8 -0
- package/src/modules/auth/auth.service.ts +207 -7
- package/src/modules/auth/oidc-auth-provider.ts +7 -2
- package/src/modules/database/core-schema.ts +35 -27
- package/src/modules/github-app/__tests__/github-app.test.ts +848 -0
- package/src/modules/github-app/github-app.client.ts +268 -0
- package/src/modules/github-app/github-app.connection.ts +204 -0
- package/src/modules/github-app/github-app.routes.ts +359 -0
- package/src/modules/github-app/index.ts +19 -0
- package/src/modules/kb-fs/__tests__/branch-name.test.ts +10 -0
- package/src/modules/kb-fs/__tests__/remote-url.test.ts +38 -0
- package/src/modules/kb-fs/__tests__/repo-path.test.ts +123 -0
- package/src/modules/kb-fs/branch-name.ts +14 -1
- package/src/modules/kb-fs/remote-url.ts +35 -0
- package/src/modules/kb-fs/repo-path.ts +85 -0
- package/src/modules/kb-sync/__tests__/kb-sync.routes.test.ts +26 -1
- package/src/modules/kb-sync/kb-sync.routes.ts +14 -4
- package/src/modules/kb-sync/sync-auth.ts +2 -2
- package/src/modules/mcp/__tests__/mcp-auth.middleware.test.ts +60 -3
- package/src/modules/mcp/__tests__/mcp.service.test.ts +68 -6
- package/src/modules/mcp/mcp-auth.middleware.ts +20 -6
- package/src/modules/mcp/oauth/bevel-oauth-provider.ts +3 -1
- package/src/modules/plugins/__tests__/join-proposals.test.ts +100 -19
- package/src/modules/plugins/__tests__/join-requests.service.test.ts +27 -11
- package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +371 -0
- package/src/modules/plugins/__tests__/plugins.routes.test.ts +1 -1
- package/src/modules/plugins/__tests__/plugins.tools.test.ts +2 -1
- package/src/modules/plugins/join-proposals.ts +87 -19
- package/src/modules/plugins/join-requests.service.ts +199 -39
- package/src/modules/plugins/plugins.routes.ts +3 -2
- package/src/modules/settings/__tests__/deployment-settings.service.test.ts +16 -0
- package/src/modules/settings/__tests__/repository-source.test.ts +191 -0
- package/src/modules/settings/__tests__/setup.routes.git-mode.test.ts +386 -0
- package/src/modules/settings/__tests__/setup.routes.github-app.test.ts +299 -0
- package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +236 -0
- package/src/modules/settings/__tests__/setup.routes.repository-change.test.ts +390 -0
- package/src/modules/settings/__tests__/setup.routes.test.ts +3 -0
- package/src/modules/settings/deployment-settings.service.ts +117 -6
- package/src/modules/settings/managed-repository.ts +68 -0
- package/src/modules/settings/repository-source.ts +197 -0
- package/src/modules/settings/setup.routes.ts +463 -15
- package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +2 -1
- package/src/modules/skills/__tests__/branch-skills.tools.test.ts +218 -0
- package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +5 -1
- package/src/modules/skills/__tests__/skills.service.test.ts +229 -5
- package/src/modules/skills/skill-access-requests.routes.ts +25 -75
- package/src/modules/skills/skills.contract.ts +91 -18
- package/src/modules/skills/skills.service.ts +278 -41
- package/src/modules/skills/skills.tools.ts +80 -8
- package/src/modules/tool-auth/__tests__/manual-auth.middleware.test.ts +14 -1
- package/src/modules/tool-auth/external-api-key.service.ts +4 -2
- package/src/modules/tool-auth/internal-token.service.ts +3 -3
- package/src/modules/tool-auth/tool-auth.middleware.ts +34 -11
- package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +5 -3
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +3 -3
- package/src/modules/tool-helpers/__tests__/validate-token.test.ts +11 -1
- package/src/modules/tool-helpers/tool-context.ts +15 -0
- package/src/modules/tool-helpers/tool-handler.ts +24 -4
- package/src/modules/tool-helpers/tool.contract.ts +3 -2
- package/src/modules/tool-helpers/validate-token.ts +1 -1
- package/src/modules/workflow/__tests__/apply-failure.test.ts +9 -1
- package/src/modules/workflow/__tests__/pending-commits.repository-replaced.test.ts +111 -0
- package/src/modules/workflow/__tests__/workflow.routes.history-read-gate.test.ts +25 -0
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +159 -8
- package/src/modules/workflow/__tests__/workflow.service.repository-replaced.test.ts +249 -0
- package/src/modules/workflow/__tests__/workflow.service.update-from-target.test.ts +146 -40
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +405 -7
- package/src/modules/workflow/agent-tools/change-request-summary.ts +182 -0
- package/src/modules/workflow/agent-tools/workflow.tools.ts +135 -38
- package/src/modules/workflow/file-lock.service.ts +31 -0
- package/src/modules/workflow/git/__tests__/git.service.fileBytesAtCommit.test.ts +260 -0
- package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +121 -0
- package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +145 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.viewer-can-delete.test.ts +166 -0
- package/src/modules/workflow/git/git.service.ts +193 -4
- package/src/modules/workflow/git/node-git-runner.ts +6 -0
- package/src/modules/workflow/git/pull-request.service.ts +119 -0
- package/src/modules/workflow/pending-commits.service.ts +59 -1
- package/src/modules/workflow/workflow-hooks.ts +64 -26
- package/src/modules/workflow/workflow.routes.ts +3 -1
- package/src/modules/workflow/workflow.service.ts +290 -55
- package/src/modules/workspace/__tests__/agent-access.gate.test.ts +208 -0
- package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +384 -0
- package/src/modules/workspace/__tests__/file-stat-access.test.ts +2 -1
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +2 -1
- package/src/modules/workspace/__tests__/set-aside-clone.test.ts +52 -0
- package/src/modules/workspace/__tests__/workspace.routes.at-ref.test.ts +305 -0
- package/src/modules/workspace/__tests__/workspace.routes.download.test.ts +2 -0
- package/src/modules/workspace/__tests__/workspace.service.forget-clone-races.test.ts +147 -0
- package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +326 -0
- package/src/modules/workspace/__tests__/workspace.service.test.ts +20 -9
- package/src/modules/workspace/__tests__/workspace.service.unknown-branch.test.ts +43 -0
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -3
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +235 -10
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +720 -17
- package/src/modules/workspace/agent-access.gate.ts +164 -0
- package/src/modules/workspace/routine-write-policy.ts +5 -6
- package/src/modules/workspace/session-sink.ts +5 -5
- package/src/modules/workspace/set-aside-clone.ts +96 -0
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +297 -0
- package/src/modules/workspace/startup/kb-startup-runner.ts +242 -2
- package/src/modules/workspace/workspace.routes.ts +95 -3
- package/src/modules/workspace/workspace.service.ts +273 -25
- package/src/modules/workspace/workspace.tools.ts +373 -119
- package/src/modules/write-access/__tests__/write-access.test.ts +248 -0
- package/src/modules/write-access/write-access.ts +153 -0
- package/src/shared/domain-errors.ts +89 -0
- package/src/shared/git.contract.ts +37 -0
- package/src/tenancy/__tests__/static-tenant-source.test.ts +0 -1
- package/src/tenancy/static-tenant-source.ts +0 -3
- package/dist/modules/workflow/session-ontology.policy.d.ts +0 -52
- package/dist/modules/workflow/session-ontology.policy.d.ts.map +0 -1
- package/dist/modules/workflow/session-ontology.policy.js +0 -62
- package/dist/modules/workflow/session-ontology.policy.js.map +0 -1
- package/dist/modules/workflow/session-ontology.service.d.ts +0 -105
- package/dist/modules/workflow/session-ontology.service.d.ts.map +0 -1
- package/dist/modules/workflow/session-ontology.service.js +0 -147
- package/dist/modules/workflow/session-ontology.service.js.map +0 -1
- package/dist/modules/workspace/session-ontology.gate.d.ts +0 -114
- package/dist/modules/workspace/session-ontology.gate.d.ts.map +0 -1
- package/dist/modules/workspace/session-ontology.gate.js +0 -161
- package/dist/modules/workspace/session-ontology.gate.js.map +0 -1
- package/dist/shared/kb-layout.d.ts +0 -39
- package/dist/shared/kb-layout.d.ts.map +0 -1
- package/dist/shared/kb-layout.js +0 -103
- package/dist/shared/kb-layout.js.map +0 -1
- package/dist/shared/kb-layout.test.d.ts +0 -2
- package/dist/shared/kb-layout.test.d.ts.map +0 -1
- package/dist/shared/kb-layout.test.js +0 -75
- package/dist/shared/kb-layout.test.js.map +0 -1
- package/src/modules/workflow/__tests__/session-ontology.policy.test.ts +0 -62
- package/src/modules/workflow/__tests__/session-ontology.service.test.ts +0 -201
- package/src/modules/workflow/session-ontology.policy.ts +0 -70
- package/src/modules/workflow/session-ontology.service.ts +0 -183
- package/src/modules/workspace/__tests__/session-ontology.gate.test.ts +0 -239
- package/src/modules/workspace/session-ontology.gate.ts +0 -191
- package/src/shared/kb-layout.test.ts +0 -98
- package/src/shared/kb-layout.ts +0 -102
|
@@ -2,6 +2,7 @@ import path from 'node:path';
|
|
|
2
2
|
import { logger } from '../../shared/logging.js';
|
|
3
3
|
const log = logger('skills');
|
|
4
4
|
import fs from 'node:fs/promises';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
5
6
|
import { parseDocument } from 'yaml';
|
|
6
7
|
import { extractFrontmatter, resolveDeclaredId, dedupeById } from '../../shared/frontmatter-id.js';
|
|
7
8
|
import { TtlCache } from '../../shared/ttl-cache.js';
|
|
@@ -14,9 +15,18 @@ const CACHE_TTL_MS = 60_000;
|
|
|
14
15
|
*/
|
|
15
16
|
const VERSION_HISTORY_LIMIT = 200;
|
|
16
17
|
/**
|
|
17
|
-
* Reads skills from the DEFAULT-branch workspace
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Reads skills from the DEFAULT-branch workspace, so the catalog is one global,
|
|
19
|
+
* released set. Results are cached briefly and on a merge to default the cache
|
|
20
|
+
* should be dropped via `invalidate()`.
|
|
21
|
+
*
|
|
22
|
+
* A caller may instead NAME a branch (`branch` on either method) and read the
|
|
23
|
+
* skills as they are on that draft — what an agent needs to try a skill it has
|
|
24
|
+
* just written, before anyone has approved it. That read is deliberately
|
|
25
|
+
* austere: no cache (the draft changes under the agent's own hands), access
|
|
26
|
+
* judged in that branch's own clone with that branch's rules, a 404 for a
|
|
27
|
+
* branch nobody pushed, and everything the default branch does not already
|
|
28
|
+
* serve marked `unmerged` — with one line at the top of a body saying it is
|
|
29
|
+
* not approved.
|
|
20
30
|
*/
|
|
21
31
|
export class SkillService {
|
|
22
32
|
workspaceService;
|
|
@@ -47,25 +57,28 @@ export class SkillService {
|
|
|
47
57
|
invalidate() {
|
|
48
58
|
this.cache.invalidate();
|
|
49
59
|
}
|
|
50
|
-
async listSkills(userEmail) {
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
return
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
|
|
60
|
+
async listSkills(userEmail, options = {}) {
|
|
61
|
+
const { catalog, branch } = await this.catalogFor(options.branch);
|
|
62
|
+
const visible = userEmail ? await this.readableSkills(catalog, userEmail) : catalog.skills;
|
|
63
|
+
if (branch === undefined)
|
|
64
|
+
return visible.map((s) => s.summary);
|
|
65
|
+
// Marking reads both copies of a folder, so it happens only here, on a
|
|
66
|
+
// branch read that asked for it — the released catalog every other surface
|
|
67
|
+
// takes never pays for it. The released catalog is resolved ONCE for the
|
|
68
|
+
// whole listing: per skill, a cold cache would start one scan of the
|
|
69
|
+
// default branch per skill.
|
|
70
|
+
const released = await this.defaultCatalog();
|
|
71
|
+
return Promise.all(visible.map(async (s) => (await this.differs(released, catalog, s)) ? { ...s.summary, unmerged: true, branch } : s.summary));
|
|
61
72
|
}
|
|
62
73
|
async getSkill(userEmail, name, file, options = {}) {
|
|
63
74
|
if (!isSafeSkillName(name))
|
|
64
75
|
return { ok: false, error: 'not_found' };
|
|
65
|
-
const
|
|
76
|
+
const { catalog, branch } = await this.catalogFor(options.branch);
|
|
77
|
+
const found = catalog.skills.find((s) => s.summary.name === name);
|
|
78
|
+
// A skill the branch deleted is not a skill as far as this answer goes:
|
|
79
|
+
// the same `not_found` a name nobody ever used gets.
|
|
66
80
|
if (!found)
|
|
67
81
|
return { ok: false, error: 'not_found' };
|
|
68
|
-
const wsId = this.kb.defaultWorkspaceId();
|
|
69
82
|
// Through `readable`, not a bare `canRead`: the two gates must never
|
|
70
83
|
// disagree. `canRead` reads a file's own frontmatter rules off disk on
|
|
71
84
|
// every call while `canReadBatch` resolves them through a per-workspace
|
|
@@ -79,18 +92,45 @@ export class SkillService {
|
|
|
79
92
|
// rules would be authorized against the previous verdict until the memo
|
|
80
93
|
// expires. It is not: `registerCatalogCacheInvalidation` drops the gate on
|
|
81
94
|
// the same default-branch signal that drops this catalog, so the listing
|
|
82
|
-
// and the load are refreshed by one event or by neither.
|
|
83
|
-
|
|
95
|
+
// and the load are refreshed by one event or by neither. A branch read
|
|
96
|
+
// caches no catalog of its own, so the same pair of gates still answers
|
|
97
|
+
// for it — in that branch's workspace, where its own rules live.
|
|
98
|
+
const allowed = await this.readable(catalog.wsId, userEmail, [found.summary.path]);
|
|
84
99
|
if (allowed.get(`${found.summary.path}/SKILL.md`) !== true) {
|
|
85
|
-
|
|
100
|
+
// On the default branch: `forbidden` — the skill is released, everyone
|
|
101
|
+
// knows the catalog has it, and naming the refusal is what sends the
|
|
102
|
+
// caller to ask for access.
|
|
103
|
+
//
|
|
104
|
+
// On a draft: the same answer a name nobody ever used gets. A skill
|
|
105
|
+
// being written on a branch the caller cannot read there is one they
|
|
106
|
+
// must not learn exists either, and the listing already hides it — a
|
|
107
|
+
// load that answered `forbidden` would confirm it by the back door.
|
|
108
|
+
return { ok: false, error: branch === undefined ? 'forbidden' : 'not_found' };
|
|
86
109
|
}
|
|
110
|
+
const result = await this.serve(catalog, found, name, file, options.version);
|
|
111
|
+
if (branch === undefined || !result.ok)
|
|
112
|
+
return result;
|
|
113
|
+
// The mark and the line say "nobody approved this", so they go on exactly
|
|
114
|
+
// what the default branch does not already serve. A skill the branch never
|
|
115
|
+
// touched IS the released one — read through a draft's clone, but the same
|
|
116
|
+
// bytes — and claiming otherwise would teach agents to ignore the warning.
|
|
117
|
+
if (!(await this.differs(await this.defaultCatalog(), catalog, found)))
|
|
118
|
+
return result;
|
|
119
|
+
return asUnmerged(result, branch);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The skill (or the one bundled file, or the copy a `version` names) out of
|
|
123
|
+
* the catalog it was found in. Everything the caller is allowed to see has
|
|
124
|
+
* been settled by `getSkill`; this only reads.
|
|
125
|
+
*/
|
|
126
|
+
async serve(catalog, found, name, file, version) {
|
|
87
127
|
// A version other than the one on disk now is read out of history —
|
|
88
128
|
// after the access check above, which is the caller's access to the skill
|
|
89
129
|
// as it is now. The version on disk IS the latest, whatever it is called,
|
|
90
130
|
// so asking for it by name answers from disk like asking for nothing.
|
|
91
|
-
const wanted =
|
|
131
|
+
const wanted = version?.trim();
|
|
92
132
|
if (wanted !== undefined && wanted.length > 0 && wanted !== found.summary.version) {
|
|
93
|
-
return this.getSkillAtVersion(wsId, found, name, wanted, file);
|
|
133
|
+
return this.getSkillAtVersion(catalog.wsId, found, name, wanted, file);
|
|
94
134
|
}
|
|
95
135
|
if (file !== undefined) {
|
|
96
136
|
if (!isSafeRelFile(file))
|
|
@@ -101,7 +141,7 @@ export class SkillService {
|
|
|
101
141
|
if (!found.files.includes(repoPath))
|
|
102
142
|
return { ok: false, error: 'not_found' };
|
|
103
143
|
try {
|
|
104
|
-
const content = await this.workspaceService.readFile(wsId, `${this.kbDirName}/${repoPath}`);
|
|
144
|
+
const content = await this.workspaceService.readFile(catalog.wsId, `${this.kbDirName}/${repoPath}`);
|
|
105
145
|
return { ok: true, kind: 'file', file: { name, file, path: repoPath, content } };
|
|
106
146
|
}
|
|
107
147
|
catch {
|
|
@@ -118,8 +158,9 @@ export class SkillService {
|
|
|
118
158
|
}
|
|
119
159
|
// --- internal ---------------------------------------------------------------
|
|
120
160
|
/**
|
|
121
|
-
* The skill as it was at the most recent
|
|
122
|
-
* `SKILL.md` declared `wanted` —
|
|
161
|
+
* The skill as it was at the most recent commit of `wsId`'s clone whose
|
|
162
|
+
* `SKILL.md` declared `wanted` — the default branch's history, or a named
|
|
163
|
+
* branch's own — walking that file's history newest first,
|
|
123
164
|
* so a version that was published, superseded and republished answers with
|
|
124
165
|
* its latest copy. Every version the walk met is collected on the way, so
|
|
125
166
|
* a miss can say what there is to ask for.
|
|
@@ -180,35 +221,143 @@ export class SkillService {
|
|
|
180
221
|
* The ONE read gate both surfaces resolve through, keyed by each skill's
|
|
181
222
|
* `SKILL.md`. Shared so `listSkills` and `getSkill` can only ever give the
|
|
182
223
|
* same verdict about the same skill — see the note at the `getSkill` call.
|
|
224
|
+
*
|
|
225
|
+
* `wsId` is the workspace the skills were READ from, so a branch's answer is
|
|
226
|
+
* judged by the `roles.yaml`, groups and `access.md` tree that branch has —
|
|
227
|
+
* which is the point: a draft may be where a skill's access rules are being
|
|
228
|
+
* changed, and judging it by the default branch's rules would answer about a
|
|
229
|
+
* tree the caller is not reading.
|
|
230
|
+
*/
|
|
231
|
+
async readable(wsId, userEmail, skillFolders) {
|
|
232
|
+
return this.accessControl.canReadBatch(wsId, userEmail, skillFolders.map((p) => `${p}/SKILL.md`));
|
|
233
|
+
}
|
|
234
|
+
/** The skills of `catalog` this caller may read, by the gate above. */
|
|
235
|
+
async readableSkills(catalog, userEmail) {
|
|
236
|
+
const allowed = await this.readable(catalog.wsId, userEmail, catalog.skills.map((s) => s.summary.path));
|
|
237
|
+
// Fail closed: keep a skill only on an explicit `true` verdict — a missing
|
|
238
|
+
// entry counts as denied, matching the KB's default-deny read model (and the
|
|
239
|
+
// tool-manuals catalog). `!== false` would silently EXPOSE a skill any time
|
|
240
|
+
// the checker skips a path.
|
|
241
|
+
return catalog.skills.filter((s) => allowed.get(`${s.summary.path}/SKILL.md`) === true);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* The catalog an answer comes out of, and the branch to MARK it with —
|
|
245
|
+
* `branch` undefined when the answer is the released one, so every surface
|
|
246
|
+
* that names no branch is answered exactly as it was before this input
|
|
247
|
+
* existed.
|
|
183
248
|
*/
|
|
184
|
-
async
|
|
185
|
-
|
|
249
|
+
async catalogFor(branch) {
|
|
250
|
+
const named = branch?.trim();
|
|
251
|
+
// A blank branch is a missing one, and the safe reading of a missing
|
|
252
|
+
// branch is the released catalog: it serves only approved skills. A name
|
|
253
|
+
// that is REAL but unknown is not reinterpreted that way — it is the 404
|
|
254
|
+
// `readBranch` lets through. Naming the default branch is the same answer
|
|
255
|
+
// as naming nothing, mark included: there is nothing unmerged about it.
|
|
256
|
+
if (!named || named === this.kb.defaultBranch)
|
|
257
|
+
return { catalog: await this.defaultCatalog() };
|
|
258
|
+
return { catalog: await this.readBranch(named), branch: named };
|
|
186
259
|
}
|
|
187
|
-
async
|
|
260
|
+
async defaultCatalog() {
|
|
188
261
|
const cached = this.cache.get();
|
|
189
262
|
if (cached)
|
|
190
263
|
return cached;
|
|
191
|
-
// Token first: a merge's `invalidate()` can land while
|
|
264
|
+
// Token first: a merge's `invalidate()` can land while the scan is still
|
|
192
265
|
// reading the pre-merge tree, and storing that read afterwards would undo
|
|
193
266
|
// the drop for a full TTL.
|
|
194
267
|
const token = this.cache.begin();
|
|
195
|
-
const
|
|
196
|
-
this.cache.set(
|
|
197
|
-
return
|
|
268
|
+
const catalog = await this.readDefault();
|
|
269
|
+
this.cache.set(catalog, token);
|
|
270
|
+
return catalog;
|
|
198
271
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
272
|
+
/**
|
|
273
|
+
* The default branch's catalog. A workspace that cannot be resolved degrades
|
|
274
|
+
* to an empty one — the manual/tools must never break because skills can't
|
|
275
|
+
* be read. A NAMED branch does not degrade: see `readBranch`.
|
|
276
|
+
*/
|
|
277
|
+
async readDefault() {
|
|
204
278
|
let wsId;
|
|
205
279
|
try {
|
|
206
280
|
wsId = (await this.workspaceService.getOrCreateForBranch(this.kb.defaultBranch)).id;
|
|
207
281
|
}
|
|
208
282
|
catch {
|
|
209
|
-
return [];
|
|
283
|
+
return { wsId: this.kb.defaultWorkspaceId(), kbRoot: '', skills: [], digests: new Map() };
|
|
210
284
|
}
|
|
211
285
|
const kbRoot = path.join(await this.workspaceService.getWorkspacePath(wsId), this.kbDirName);
|
|
286
|
+
return { wsId, kbRoot, skills: await this.scanTree(kbRoot), digests: new Map() };
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* One branch's clone, scanned. Deliberately NOT cached and deliberately NOT
|
|
290
|
+
* degraded:
|
|
291
|
+
* - no cache, because the caller of a branch read is usually the agent that
|
|
292
|
+
* just wrote the skill, and a minute-old answer would hide its own work;
|
|
293
|
+
* - no degrading, because a branch nobody ever pushed must answer the 404
|
|
294
|
+
* the file tools answer (`BranchNotFoundError`, naming the branch) — an
|
|
295
|
+
* empty list would read as "that branch has no skills", which is a
|
|
296
|
+
* different and untrue statement.
|
|
297
|
+
*
|
|
298
|
+
* Resolving the workspace clones the branch on first use, so a call naming a
|
|
299
|
+
* branch for the first time waits for a clone.
|
|
300
|
+
*/
|
|
301
|
+
async readBranch(branch) {
|
|
302
|
+
const wsId = (await this.workspaceService.getOrCreateForBranch(branch)).id;
|
|
303
|
+
const kbRoot = path.join(await this.workspaceService.getWorkspacePath(wsId), this.kbDirName);
|
|
304
|
+
return { wsId, kbRoot, skills: await this.scanTree(kbRoot), digests: new Map() };
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Does this skill, as the branch has it, differ from the `released` copy —
|
|
308
|
+
* by the content of its FOLDER? It is absent from the released catalog (or
|
|
309
|
+
* listed there at another path), or one of the files the two catalogs list
|
|
310
|
+
* for it differs byte for byte.
|
|
311
|
+
*
|
|
312
|
+
* Reading both folders is the price of saying something true, and it is paid
|
|
313
|
+
* only on a branch read: a skill folder is instructions plus a few assets.
|
|
314
|
+
* A file that cannot be read on either side counts as a difference — unable
|
|
315
|
+
* to prove the branch's copy is the released one, the honest answer is that
|
|
316
|
+
* it is not approved.
|
|
317
|
+
*
|
|
318
|
+
* Both sides go through `digestOf`, so the RELEASED side is read once per
|
|
319
|
+
* cached catalog rather than once per skill per call: a listing of N skills
|
|
320
|
+
* used to re-hash all N released folders on every call, and each `getSkill`
|
|
321
|
+
* re-hashed one of them again.
|
|
322
|
+
*/
|
|
323
|
+
async differs(released, branchCatalog, skill) {
|
|
324
|
+
const mirror = released.skills.find((s) => s.summary.name === skill.summary.name);
|
|
325
|
+
if (!mirror || mirror.summary.path !== skill.summary.path)
|
|
326
|
+
return true;
|
|
327
|
+
const [onBranch, onDefault] = await Promise.all([
|
|
328
|
+
this.digestOf(branchCatalog, skill),
|
|
329
|
+
this.digestOf(released, mirror),
|
|
330
|
+
]);
|
|
331
|
+
return onBranch === null || onDefault === null || onBranch !== onDefault;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* One skill folder's digest in one catalog's clone, computed at most once
|
|
335
|
+
* for that catalog. The folder path is a unique key within a catalog — a
|
|
336
|
+
* folder holds one `SKILL.md`, so it yields one skill — and the file list
|
|
337
|
+
* the digest covers comes from that same catalog's scan.
|
|
338
|
+
*
|
|
339
|
+
* Memoizing means a released folder's ASSETS are now as stale as the rest
|
|
340
|
+
* of the catalog that names them: both are refreshed by the TTL and dropped
|
|
341
|
+
* together by `invalidate()` on a merge to the default branch. A branch
|
|
342
|
+
* catalog is built per call and so is its memo, which is what a draft read
|
|
343
|
+
* needs — the agent's own last write must show.
|
|
344
|
+
*/
|
|
345
|
+
digestOf(catalog, skill) {
|
|
346
|
+
const key = skill.summary.path;
|
|
347
|
+
const memo = catalog.digests.get(key);
|
|
348
|
+
if (memo)
|
|
349
|
+
return memo;
|
|
350
|
+
// The promise, not the value: skills asked for at once share one read.
|
|
351
|
+
// A rejection is dropped rather than kept — `folderDigest` answers `null`
|
|
352
|
+
// for a file it cannot read, so a throw here is a defect, and holding it
|
|
353
|
+
// would answer with it for the catalog's whole life.
|
|
354
|
+
const pending = folderDigest(catalog.kbRoot, skill);
|
|
355
|
+
catalog.digests.set(key, pending);
|
|
356
|
+
pending.catch(() => catalog.digests.delete(key));
|
|
357
|
+
return pending;
|
|
358
|
+
}
|
|
359
|
+
/** Scan one clone's `Skills/` and `Plugins/` roots into a catalog's skills. */
|
|
360
|
+
async scanTree(kbRoot) {
|
|
212
361
|
// Skills may be grouped in category subfolders (each carrying its own
|
|
213
362
|
// access.md), so a SKILL.md can live at any depth under either root. Walk
|
|
214
363
|
// the tree and treat every folder that directly contains a SKILL.md as a
|
|
@@ -295,6 +444,59 @@ export class SkillService {
|
|
|
295
444
|
}
|
|
296
445
|
}
|
|
297
446
|
// --- helpers ------------------------------------------------------------------
|
|
447
|
+
/**
|
|
448
|
+
* The one line a skill read from an unmerged branch begins with. Exported
|
|
449
|
+
* because the tool surface documents it and the tests assert it: there is one
|
|
450
|
+
* sentence, in one place, and an agent that has read it once recognises it.
|
|
451
|
+
*/
|
|
452
|
+
export function unmergedSkillNotice(branch) {
|
|
453
|
+
return `This skill is read from the unmerged branch "${branch}" and is not approved.`;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Say, on the answer itself, that it came off a branch that changed this skill.
|
|
457
|
+
*
|
|
458
|
+
* The body gets the line because the body is what an agent reads and acts on;
|
|
459
|
+
* a bundled file gets the flags beside its content, never a sentence inside it
|
|
460
|
+
* (prepending prose to a script is a syntax error, not a warning).
|
|
461
|
+
*/
|
|
462
|
+
function asUnmerged(result, branch) {
|
|
463
|
+
if (result.kind === 'file') {
|
|
464
|
+
return { ...result, file: { ...result.file, unmerged: true, branch } };
|
|
465
|
+
}
|
|
466
|
+
return {
|
|
467
|
+
...result,
|
|
468
|
+
skill: {
|
|
469
|
+
...result.skill,
|
|
470
|
+
unmerged: true,
|
|
471
|
+
branch,
|
|
472
|
+
body: `${unmergedSkillNotice(branch)}\n\n${result.skill.body}`,
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* A digest of a skill folder as its own catalog lists it: `SKILL.md` plus
|
|
478
|
+
* every bundled file, each hashed under its relative name so a renamed,
|
|
479
|
+
* added or dropped asset is a difference too — and so a file one branch's
|
|
480
|
+
* ignore rules hide is one as well. `null` when a listed file cannot be read,
|
|
481
|
+
* which the caller treats as "cannot prove it is the released copy".
|
|
482
|
+
*/
|
|
483
|
+
async function folderDigest(kbRoot, skill) {
|
|
484
|
+
if (!kbRoot)
|
|
485
|
+
return null;
|
|
486
|
+
const folder = skill.summary.path;
|
|
487
|
+
const rels = ['SKILL.md', ...skill.files.map((f) => f.slice(folder.length + 1))].sort();
|
|
488
|
+
const hash = createHash('sha256');
|
|
489
|
+
for (const rel of rels) {
|
|
490
|
+
hash.update(`${rel}\0`);
|
|
491
|
+
try {
|
|
492
|
+
hash.update(await fs.readFile(path.join(kbRoot, folder, ...rel.split('/'))));
|
|
493
|
+
}
|
|
494
|
+
catch {
|
|
495
|
+
return null;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return hash.digest('hex');
|
|
499
|
+
}
|
|
298
500
|
/**
|
|
299
501
|
* Skill names are folder names; reject anything that could escape the folder.
|
|
300
502
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.service.js","sourceRoot":"","sources":["../../../src/modules/skills/skills.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAIrC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEnG,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAUrD,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,GAAG,CAAC;AASlC;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAUJ;IACA;IACA;IACA;IAZF,KAAK,CAA0B;IAChD;;;;OAIG;IACK,OAAO,GAA8B,IAAI,CAAC;IAElD,YACmB,gBAAkC,EAClC,aAA6B,EAC7B,EAAa,EACb,IAAiB,EAClC,MAAoB,IAAI,CAAC,GAAG;QAJX,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,kBAAa,GAAb,aAAa,CAAgB;QAC7B,OAAE,GAAF,EAAE,CAAW;QACb,SAAI,GAAJ,IAAI,CAAa;QAGlC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;IAC3B,CAAC;IAED,8DAA8D;IAC9D,UAAU,CAAC,OAA2B;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAkB;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,2EAA2E;QAC3E,6EAA6E;QAC7E,4EAA4E;QAC5E,4BAA4B;QAC5B,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,IAAY,EACZ,IAAa,EACb,UAA2B,EAAE;QAE7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC1C,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,sEAAsE;QACtE,oEAAoE;QACpE,0EAA0E;QAC1E,EAAE;QACF,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,2EAA2E;QAC3E,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC3C,CAAC;QAED,oEAAoE;QACpE,0EAA0E;QAC1E,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACjD,uEAAuE;YACvE,iEAAiE;YACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YAC9E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;gBAC5F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACnF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAU;YACnB,GAAG,KAAK,CAAC,OAAO;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,+EAA+E;IAE/E;;;;;;;;;;OAUG;IACK,KAAK,CAAC,iBAAiB,CAC7B,IAAY,EACZ,KAAkB,EAClB,IAAY,EACZ,MAAc,EACd,IAAwB;QAExB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,MAAM,WAAW,CAAC;QACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACrF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;YAC3B,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,EAAE,CAAC,OAAO,KAAK,SAAS;gBAAE,SAAS;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,EAAE,CAAC,OAAO,KAAK,MAAM;gBAAE,SAAS;YAEpC,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;iBAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC;iBAC5B,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;gBACxE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACjE,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC/D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACnF,CAAC;YACD,MAAM,KAAK,GAAU;gBACnB,GAAG,KAAK,CAAC,OAAO;gBAChB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,KAAK;aACN,CAAC;YACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,YAAsB;QAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CACpC,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAC5B,SAAS,EACT,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CACzC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,2EAA2E;QAC3E,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,oEAAoE;QACpE,yEAAyE;QACzE,yEAAyE;QACzE,WAAW;QACX,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7F,sEAAsE;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,gEAAgE;QAChE,EAAE;QACF,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,oEAAoE;QACpE,kEAAkE;QAClE,wEAAwE;QACxE,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,CAAC,OAAuD,EAAE,EAAE,CAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;YACxD,MAAM,IAAI,CAAC,IAAI,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1B;gBACE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACtD,MAAM,EAAE,IAAI;gBACZ,oEAAoE;gBACpE,qEAAqE;gBACrE,qEAAqE;gBACrE,aAAa;gBACb,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;aACzC,EACD;gBACE;oBACE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;wBACpD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;4BAAE,OAAO;wBACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;4BAAE,OAAO,CAAC,oCAAoC;wBACzE,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;wBACtD,IAAI,GAAW,CAAC;wBAChB,IAAI,CAAC;4BACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;wBAC/D,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO;wBACT,CAAC;wBACD,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBACtC,yEAAyE;wBACzE,sEAAsE;wBACtE,qEAAqE;wBACrE,uEAAuE;wBACvE,yCAAyC;wBACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;wBACvE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACvE,GAAG,CAAC,IAAI,CAAC;4BACP,OAAO,EAAE;gCACP,IAAI;gCACJ,WAAW,EAAE,EAAE,CAAC,WAAW;gCAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;gCACnB,IAAI,EAAE,SAAS;6BAChB;4BACD,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,YAAY,EAAE,EAAE,CAAC,YAAY;4BAC7B,KAAK,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC;yBAC5D,CAAC,CAAC;oBACL,CAAC;iBACF;aACF,CACF,CAAC;QACJ,CAAC,CAAC;QACF,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;QACjD,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3B,6EAA6E;QAC7E,sEAAsE;QACtE,qEAAqE;QACrE,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,GAAG,CAAC,IAAI,CACN,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAC/C,CAAC;QACF,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACtD,GAAG,CAAC,IAAI,CACN,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,uCAAuC;YAC5E,2DAA2D,CAC9D,CACF,CAAC;IACJ,CAAC;CACF;AAED,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC;AACzG,CAAC;AAED,6DAA6D;AAC7D,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4FAA4F;AAC5F,SAAS,MAAM,CAAC,IAA6B,EAAE,GAAW;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAQ/C,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAE5E,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,wEAAwE;QACxE,oDAAoD;QACpD,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,IAAI,GAAG,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,OAAO,GACX,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC;QAChD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5B,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IAEpD,4EAA4E;IAC5E,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ;YACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAiB,EAAE,GAAW,EAAE,SAAiB,EAAE,KAAkB;IACnG,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,CAAC,MAAM,CACf,GAAG,EACH;QACE;YACE,MAAM,CAAC,GAAG,EAAE,IAAI;gBACd,IAAI,GAAG,IAAI,IAAI,KAAK,UAAU;oBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;SACF;KACF;IACD,yEAAyE;IACzE,uEAAuE;IACvE,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"skills.service.js","sourceRoot":"","sources":["../../../src/modules/skills/skills.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,13 @@ import type { IAllowedToolsChecker } from './allowed-tools-check.js';
|
|
|
11
11
|
* what exists right in the tool catalog, no `list_skills` round-trip needed, and
|
|
12
12
|
* it auto-updates as the default-branch catalog changes. The hosted routes are
|
|
13
13
|
* static; only the description text is dynamic.
|
|
14
|
+
*
|
|
15
|
+
* Both tools take an optional `branch`. Without it they answer from the
|
|
16
|
+
* released (default-branch) catalog — what the descriptions name, what the
|
|
17
|
+
* browser menu lists and what the MCP prompt surface serves. With it they read
|
|
18
|
+
* the skills as they are on that draft and say which of them nobody has
|
|
19
|
+
* approved, so an agent can try the skill it just wrote without waiting for a
|
|
20
|
+
* merge.
|
|
14
21
|
*/
|
|
15
22
|
export declare function registerSkillsTools(registry: IToolRegistry, router: Router, toolAuth: RequestHandler, toolHandler: ToolHandlerFactory, skillService: ISkillService,
|
|
16
23
|
/** When given, a loaded skill carries `warnings` for `allowed-tools` entries that name no visible tool. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.tools.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/skills.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,mCAAmC,CAAC;AAGjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.tools.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/skills.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,mCAAmC,CAAC;AAGjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAgBrE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,kBAAkB,EAC/B,YAAY,EAAE,aAAa;AAC3B,2GAA2G;AAC3G,YAAY,CAAC,EAAE,oBAAoB,GAClC,IAAI,CAuCN"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
+
import { ToolError } from '../tool-helpers/tool.contract.js';
|
|
1
2
|
import { toolDef } from '../tool-helpers/tool-def.js';
|
|
3
|
+
/**
|
|
4
|
+
* The optional `branch` both skill tools declare. Optional on purpose, unlike
|
|
5
|
+
* the required `branch` of the KB file tools: a skill read is answered by the
|
|
6
|
+
* released catalog by default, and naming a branch is the caller asking for
|
|
7
|
+
* something nobody has approved yet.
|
|
8
|
+
*/
|
|
9
|
+
const BRANCH_SKILLS_INPUT = {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Optional: a draft branch to read the skills from instead of the released (default) branch — ' +
|
|
12
|
+
'the branch you are working on. You must be able to read the branch and the skill on it; ' +
|
|
13
|
+
'a branch that does not exist answers 404 naming it. Omit it for the approved skills.',
|
|
14
|
+
};
|
|
2
15
|
/**
|
|
3
16
|
* Registers the two skill tools (both surfaces) and hosts their endpoints.
|
|
4
17
|
*
|
|
@@ -7,6 +20,13 @@ import { toolDef } from '../tool-helpers/tool-def.js';
|
|
|
7
20
|
* what exists right in the tool catalog, no `list_skills` round-trip needed, and
|
|
8
21
|
* it auto-updates as the default-branch catalog changes. The hosted routes are
|
|
9
22
|
* static; only the description text is dynamic.
|
|
23
|
+
*
|
|
24
|
+
* Both tools take an optional `branch`. Without it they answer from the
|
|
25
|
+
* released (default-branch) catalog — what the descriptions name, what the
|
|
26
|
+
* browser menu lists and what the MCP prompt surface serves. With it they read
|
|
27
|
+
* the skills as they are on that draft and say which of them nobody has
|
|
28
|
+
* approved, so an agent can try the skill it just wrote without waiting for a
|
|
29
|
+
* merge.
|
|
10
30
|
*/
|
|
11
31
|
export function registerSkillsTools(registry, router, toolAuth, toolHandler, skillService,
|
|
12
32
|
/** When given, a loaded skill carries `warnings` for `allowed-tools` entries that name no visible tool. */
|
|
@@ -15,21 +35,41 @@ allowedTools) {
|
|
|
15
35
|
registry.registerInternalTool((ctx) => buildListSkillsDef(skillService, ctx.userEmail));
|
|
16
36
|
registry.registerExternalTool((ctx) => buildGetSkillDef(skillService, ctx.userEmail));
|
|
17
37
|
registry.registerInternalTool((ctx) => buildGetSkillDef(skillService, ctx.userEmail));
|
|
18
|
-
router.post('/agent/tools/list_skills', toolAuth, toolHandler(async (
|
|
19
|
-
skills: await skillService.listSkills(ctx.user.email),
|
|
38
|
+
router.post('/agent/tools/list_skills', toolAuth, toolHandler(async (args, ctx) => ({
|
|
39
|
+
skills: await skillService.listSkills(ctx.user.email, { branch: branchArg(args) }),
|
|
20
40
|
})));
|
|
21
41
|
router.post('/agent/tools/get_skill', toolAuth, toolHandler(async (args, ctx) => {
|
|
22
42
|
const name = typeof args.name === 'string' ? args.name : '';
|
|
23
43
|
const file = typeof args.file === 'string' ? args.file : undefined;
|
|
24
44
|
const version = typeof args.version === 'string' ? args.version : undefined;
|
|
45
|
+
const branch = branchArg(args);
|
|
25
46
|
if (!name)
|
|
26
47
|
return { error: 'missing_name' };
|
|
27
|
-
|
|
48
|
+
// Refused rather than ranked: a `version` is a point in the released
|
|
49
|
+
// skill's history, a `branch` is a draft nobody has released — asked for
|
|
50
|
+
// together, neither answer is the one the caller meant, and guessing
|
|
51
|
+
// would serve instructions under a label that does not describe them.
|
|
52
|
+
if (branch !== undefined && version !== undefined && version.trim().length > 0) {
|
|
53
|
+
throw new ToolError('get_skill takes `branch` or `version`, not both: `branch` loads the skill as that draft has it ' +
|
|
54
|
+
'now, `version` loads a version the released skill declared. Pass one of them.', 400);
|
|
55
|
+
}
|
|
56
|
+
const result = await skillService.getSkill(ctx.user.email, name, file, { version, branch });
|
|
28
57
|
if (!allowedTools || !result.ok || result.kind !== 'skill')
|
|
29
58
|
return result;
|
|
30
59
|
return { ...result, warnings: await allowedTools.check(ctx.user.email, result.skill.allowedTools) };
|
|
31
60
|
}));
|
|
32
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* The `branch` a tool call named, or undefined when it named none (the
|
|
64
|
+
* released catalog). A non-string or blank value is NOT a branch: it is taken
|
|
65
|
+
* as absent, which answers from the default branch — the approved one. The
|
|
66
|
+
* resolution of a real name, and the 404 for one the platform never heard of,
|
|
67
|
+
* belong to the workspace layer, exactly as on the file tools.
|
|
68
|
+
*/
|
|
69
|
+
function branchArg(args) {
|
|
70
|
+
const branch = args.branch;
|
|
71
|
+
return typeof branch === 'string' && branch.trim().length > 0 ? branch : undefined;
|
|
72
|
+
}
|
|
33
73
|
/** "Currently available skills: `a`, `b`." (or a no-skills note), filtered to what the caller may read. */
|
|
34
74
|
async function availableSkillsLine(skillService, userEmail) {
|
|
35
75
|
const skills = await skillService.listSkills(userEmail);
|
|
@@ -44,9 +84,16 @@ async function buildListSkillsDef(skillService, userEmail) {
|
|
|
44
84
|
'for a skill that declares one, its current `version` (its SKILL.md `metadata.version`, else a ' +
|
|
45
85
|
'top-level `version`, else `lifecycle.version`). ' +
|
|
46
86
|
'Discover what skills exist before specialist work, then `get_skill` to load one. ' +
|
|
87
|
+
'Pass `branch` to list the skills as they are on a draft branch instead of the released set — ' +
|
|
88
|
+
'what you need to try a skill you just wrote there; each skill that differs from the released ' +
|
|
89
|
+
'one comes back with `unmerged: true` and that branch, meaning nobody has approved it. ' +
|
|
47
90
|
(await availableSkillsLine(skillService, userEmail)),
|
|
48
91
|
path: '/api/agent/tools/list_skills',
|
|
49
|
-
inputs: {
|
|
92
|
+
inputs: {
|
|
93
|
+
type: 'object',
|
|
94
|
+
properties: { branch: BRANCH_SKILLS_INPUT },
|
|
95
|
+
additionalProperties: false,
|
|
96
|
+
},
|
|
50
97
|
outputs: {
|
|
51
98
|
type: 'object',
|
|
52
99
|
properties: {
|
|
@@ -64,6 +111,12 @@ async function buildListSkillsDef(skillService, userEmail) {
|
|
|
64
111
|
'else `lifecycle.version` in its SKILL.md); absent when it declares none.',
|
|
65
112
|
},
|
|
66
113
|
path: { type: 'string' },
|
|
114
|
+
unmerged: {
|
|
115
|
+
type: 'boolean',
|
|
116
|
+
description: 'Only when `branch` was passed, and only on a skill that differs from the released one ' +
|
|
117
|
+
'(it exists only on that branch, or was changed there): nobody has approved what it says.',
|
|
118
|
+
},
|
|
119
|
+
branch: { type: 'string', description: 'With `unmerged`: the branch the skill was read from.' },
|
|
67
120
|
},
|
|
68
121
|
},
|
|
69
122
|
},
|
|
@@ -78,7 +131,7 @@ async function buildGetSkillDef(skillService, userEmail) {
|
|
|
78
131
|
description: 'Load a skill by name: returns its full instructions (SKILL.md body) to follow, plus the skill ' +
|
|
79
132
|
'folder path and the list of bundled files. Pass `file` to fetch a bundled file’s content ' +
|
|
80
133
|
'(e.g. a script) instead of the body. Loads the latest copy unless `version` names an earlier ' +
|
|
81
|
-
'one the skill declared. ' +
|
|
134
|
+
'one the skill declared, or `branch` names a draft to load it from. ' +
|
|
82
135
|
(await availableSkillsLine(skillService, userEmail)),
|
|
83
136
|
path: '/api/agent/tools/get_skill',
|
|
84
137
|
inputs: {
|
|
@@ -98,6 +151,7 @@ async function buildGetSkillDef(skillService, userEmail) {
|
|
|
98
151
|
'recent commit that declared that version; a version the skill never declared answers ' +
|
|
99
152
|
'`version_not_found` with the versions it did declare.',
|
|
100
153
|
},
|
|
154
|
+
branch: BRANCH_SKILLS_INPUT,
|
|
101
155
|
},
|
|
102
156
|
required: ['name'],
|
|
103
157
|
additionalProperties: false,
|
|
@@ -106,8 +160,18 @@ async function buildGetSkillDef(skillService, userEmail) {
|
|
|
106
160
|
type: 'object',
|
|
107
161
|
description: 'On success carries `skill` (or `file` when `file` was passed); on failure carries `error`.',
|
|
108
162
|
properties: {
|
|
109
|
-
skill: {
|
|
110
|
-
|
|
163
|
+
skill: {
|
|
164
|
+
type: 'object',
|
|
165
|
+
description: 'The loaded skill: name, description, body, files, …. Read from a `branch` that changed it, ' +
|
|
166
|
+
'it also carries `unmerged: true` and that branch, and its `body` BEGINS with one line ' +
|
|
167
|
+
'saying the skill comes from that unmerged branch and is not approved — treat it as a ' +
|
|
168
|
+
'proposal you are testing, not as approved instructions.',
|
|
169
|
+
},
|
|
170
|
+
file: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
description: 'A bundled file: name, file, path, content — plus `unmerged` and `branch` when it came off ' +
|
|
173
|
+
'a branch that changed the skill (the note stays beside the content, never inside it).',
|
|
174
|
+
},
|
|
111
175
|
warnings: {
|
|
112
176
|
type: 'array',
|
|
113
177
|
description: 'With `skill`: `allowed-tools` entries that look like platform tools but name none you can use — ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.tools.js","sourceRoot":"","sources":["../../../src/modules/skills/skills.tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills.tools.js","sourceRoot":"","sources":["../../../src/modules/skills/skills.tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAoB,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,QAAiB;IACvB,WAAW,EACT,8FAA8F;QAC9F,0FAA0F;QAC1F,sFAAsF;CACzF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB,EACvB,MAAc,EACd,QAAwB,EACxB,WAA+B,EAC/B,YAA2B;AAC3B,2GAA2G;AAC3G,YAAmC;IAEnC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,QAAQ,EACR,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAgB,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;KACnF,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,QAAQ,EACR,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAgB,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAC5C,qEAAqE;QACrE,yEAAyE;QACzE,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,SAAS,CACjB,iGAAiG;gBAC/F,+EAA+E,EACjF,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC;QAC1E,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;IACtG,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC;AAED,2GAA2G;AAC3G,KAAK,UAAU,mBAAmB,CAAC,YAA2B,EAAE,SAAkB;IAChF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oCAAoC,CAAC;IACrE,OAAO,+BAA+B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,YAA2B,EAAE,SAAkB;IAC/E,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,mGAAmG;YACnG,gGAAgG;YAChG,kDAAkD;YAClD,mFAAmF;YACnF,+FAA+F;YAC/F,+FAA+F;YAC/F,wFAAwF;YACxF,CAAC,MAAM,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;YAC3C,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,mBAAmB;oBAChC,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/B,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,0FAA0F;oCAC1F,0EAA0E;6BAC7E;4BACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,QAAQ,EAAE;gCACR,IAAI,EAAE,SAAS;gCACf,WAAW,EACT,wFAAwF;oCACxF,0FAA0F;6BAC7F;4BACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;yBAChG;qBACF;iBACF;aACF;SACF;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,YAA2B,EAAE,SAAkB;IAC7E,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,gGAAgG;YAChG,2FAA2F;YAC3F,+FAA+F;YAC/F,qEAAqE;YACrE,CAAC,MAAM,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,EAAE,4BAA4B;QAClC,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBAChG,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,2FAA2F;wBAC3F,wCAAwC;iBAC3C;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,0FAA0F;wBAC1F,6GAA6G;wBAC7G,kGAAkG;wBAClG,uFAAuF;wBACvF,uDAAuD;iBAC1D;gBACD,MAAM,EAAE,mBAAmB;aAC5B;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4FAA4F;YACzG,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,6FAA6F;wBAC7F,wFAAwF;wBACxF,uFAAuF;wBACvF,yDAAyD;iBAC5D;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4FAA4F;wBAC5F,uFAAuF;iBAC1F;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,kGAAkG;wBAClG,qEAAqE;oBACvE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4FAA4F;iBAC1G;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,+EAA+E;iBAC7F;aACF;SACF;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-api-key.service.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-auth/external-api-key.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAO1D,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAazC,qBAAa,qBAAsB,YAAW,sBAAsB;IAehE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAhBxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C;;;;;;;;;;OAUG;gBAEgB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAKpE,0EAA0E;IAC1E,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIzC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgC7F,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK9D,kBAAkB,CACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"external-api-key.service.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-auth/external-api-key.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAO1D,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAazC,qBAAa,qBAAsB,YAAW,sBAAsB;IAehE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAhBxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C;;;;;;;;;;OAUG;gBAEgB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAKpE,0EAA0E;IAC1E,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIzC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgC7F,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK9D,kBAAkB,CACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IA8ChD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAW7D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS3C,iBAAiB,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAoB1D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C;;;;;;OAMG;YACW,WAAW;IAsBnB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAqCzC,aAAa;CAM5B"}
|