@bevel-software/platform-core-backend 0.31.0 → 0.33.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 +5 -0
- package/agent-guide/html-views.md +46 -10
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +29 -4
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +14 -2
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +34 -7
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +8 -0
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +4 -0
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/public-config.d.ts +10 -0
- package/dist/core/public-config.d.ts.map +1 -1
- package/dist/core/public-config.js +10 -0
- package/dist/core/public-config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +3 -3
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +4 -5
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access-declarations.d.ts +1 -1
- package/dist/modules/access/access-declarations.d.ts.map +1 -1
- package/dist/modules/access/access-declarations.js +1 -1
- package/dist/modules/access/access-declarations.js.map +1 -1
- package/dist/modules/access/access-mutation.service.d.ts +8 -3
- package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
- package/dist/modules/access/access-mutation.service.js +3 -3
- package/dist/modules/access/access-mutation.service.js.map +1 -1
- package/dist/modules/access/access-requests.contract.d.ts +1 -1
- package/dist/modules/access/access-requests.contract.d.ts.map +1 -1
- package/dist/modules/access/access-requests.routes.d.ts +3 -3
- package/dist/modules/access/access-requests.routes.d.ts.map +1 -1
- package/dist/modules/access/access-requests.routes.js +7 -7
- package/dist/modules/access/access-requests.routes.js.map +1 -1
- package/dist/modules/access/access-requests.service.d.ts +21 -20
- package/dist/modules/access/access-requests.service.d.ts.map +1 -1
- package/dist/modules/access/access-requests.service.js +22 -68
- package/dist/modules/access/access-requests.service.js.map +1 -1
- package/dist/modules/access/access-view.d.ts +1 -1
- package/dist/modules/access/access-view.d.ts.map +1 -1
- package/dist/modules/access/access-view.js +1 -1
- package/dist/modules/access/access-view.js.map +1 -1
- package/dist/modules/access/access.routes.d.ts +5 -7
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +4 -4
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access/admin-locked-commit.d.ts +2 -2
- package/dist/modules/access/admin-locked-commit.d.ts.map +1 -1
- package/dist/modules/access/admin-locked-commit.js +1 -1
- package/dist/modules/access/admin-locked-commit.js.map +1 -1
- package/dist/modules/access/capability-registry.js +1 -1
- package/dist/modules/access/capability-registry.js.map +1 -1
- package/dist/modules/access/change-read-gate.d.ts +2 -2
- package/dist/modules/access/change-read-gate.d.ts.map +1 -1
- package/dist/modules/access/change-read-gate.js +1 -3
- package/dist/modules/access/change-read-gate.js.map +1 -1
- package/dist/modules/access/creator-access.d.ts +2 -2
- package/dist/modules/access/creator-access.d.ts.map +1 -1
- package/dist/modules/access/creator-access.js +2 -4
- package/dist/modules/access/creator-access.js.map +1 -1
- package/dist/modules/access/directory-sync-bot.d.ts +1 -1
- package/dist/modules/access/directory-sync-bot.d.ts.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/access/groups-admin.routes.d.ts +2 -2
- package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.routes.js +2 -2
- package/dist/modules/access/groups-admin.routes.js.map +1 -1
- package/dist/modules/access/groups-admin.service.d.ts +1 -1
- package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.service.js +2 -3
- package/dist/modules/access/groups-admin.service.js.map +1 -1
- package/dist/modules/access/groups-edit.js +2 -2
- package/dist/modules/access/groups-edit.js.map +1 -1
- package/dist/modules/access/index.d.ts +17 -0
- package/dist/modules/access/index.d.ts.map +1 -0
- package/dist/modules/access/index.js +6 -0
- package/dist/modules/access/index.js.map +1 -0
- package/dist/modules/access/reference-scan.js +1 -1
- package/dist/modules/access/reference-scan.js.map +1 -1
- package/dist/modules/access/roles-admin.service.d.ts +1 -1
- package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
- package/dist/modules/access/roles-admin.service.js +2 -5
- package/dist/modules/access/roles-admin.service.js.map +1 -1
- package/dist/modules/access/roles-edit.js +1 -1
- package/dist/modules/access/roles-edit.js.map +1 -1
- package/dist/modules/access/synced-groups-committer.d.ts +2 -2
- package/dist/modules/access/synced-groups-committer.d.ts.map +1 -1
- package/dist/modules/access/synced-groups-committer.js +2 -2
- package/dist/modules/access/synced-groups-committer.js.map +1 -1
- package/dist/modules/access/synced-groups-writer.js +2 -2
- package/dist/modules/access/synced-groups-writer.js.map +1 -1
- package/dist/modules/access/user-access-removal.service.d.ts +1 -1
- package/dist/modules/access/user-access-removal.service.d.ts.map +1 -1
- package/dist/modules/access/user-access-removal.service.js +2 -5
- package/dist/modules/access/user-access-removal.service.js.map +1 -1
- package/dist/modules/access-model/index.d.ts +29 -0
- package/dist/modules/access-model/index.d.ts.map +1 -0
- package/dist/modules/access-model/index.js +26 -0
- package/dist/modules/access-model/index.js.map +1 -0
- package/dist/modules/access-model/roles-yaml-guard.d.ts +1 -1
- package/dist/modules/access-model/roles-yaml-guard.d.ts.map +1 -1
- package/dist/modules/admin/admin-access.routes.d.ts +1 -1
- package/dist/modules/admin/admin-access.routes.d.ts.map +1 -1
- package/dist/modules/admin/admin-access.routes.js +1 -1
- package/dist/modules/admin/admin-access.routes.js.map +1 -1
- package/dist/modules/admin/admin-access.service.d.ts +2 -2
- package/dist/modules/admin/admin-access.service.d.ts.map +1 -1
- package/dist/modules/admin/index.d.ts +8 -0
- package/dist/modules/admin/index.d.ts.map +1 -0
- package/dist/modules/admin/index.js +2 -0
- package/dist/modules/admin/index.js.map +1 -0
- package/dist/modules/agent-guide/agent-guide.js +1 -1
- package/dist/modules/agent-guide/agent-guide.js.map +1 -1
- package/dist/modules/agent-guide/agent-guide.tools.d.ts +3 -3
- package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
- package/dist/modules/agent-guide/agent-guide.tools.js +2 -4
- package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
- package/dist/modules/agent-guide/index.d.ts +1 -1
- package/dist/modules/agent-guide/index.d.ts.map +1 -1
- package/dist/modules/agent-guide/index.js +1 -1
- package/dist/modules/agent-guide/index.js.map +1 -1
- package/dist/modules/agent-instructions/read-preamble.d.ts +1 -1
- package/dist/modules/agent-instructions/read-preamble.d.ts.map +1 -1
- package/dist/modules/audit/agent-audit.service.d.ts +2 -2
- package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
- package/dist/modules/audit/agent-audit.service.js +1 -1
- package/dist/modules/audit/agent-audit.service.js.map +1 -1
- package/dist/modules/audit/agent-connection.routes.d.ts +1 -1
- package/dist/modules/audit/agent-connection.routes.d.ts.map +1 -1
- package/dist/modules/audit/agent-connection.routes.js +1 -1
- package/dist/modules/audit/agent-connection.routes.js.map +1 -1
- package/dist/modules/audit/agent-rest-audit.middleware.d.ts +1 -1
- package/dist/modules/audit/agent-rest-audit.middleware.d.ts.map +1 -1
- package/dist/modules/audit/agent-rest-audit.middleware.js +1 -1
- package/dist/modules/audit/agent-rest-audit.middleware.js.map +1 -1
- package/dist/modules/audit/audit.routes.d.ts +3 -3
- package/dist/modules/audit/audit.routes.d.ts.map +1 -1
- package/dist/modules/audit/audit.routes.js +2 -2
- package/dist/modules/audit/audit.routes.js.map +1 -1
- package/dist/modules/auth/account-erasure.service.d.ts +3 -3
- package/dist/modules/auth/account-erasure.service.d.ts.map +1 -1
- package/dist/modules/auth/account-erasure.service.js +1 -5
- package/dist/modules/auth/account-erasure.service.js.map +1 -1
- package/dist/modules/auth/account-hooks.d.ts +4 -6
- package/dist/modules/auth/account-hooks.d.ts.map +1 -1
- package/dist/modules/auth/account-hooks.js +7 -17
- package/dist/modules/auth/account-hooks.js.map +1 -1
- package/dist/modules/auth/account-switch-lock.d.ts +1 -1
- package/dist/modules/auth/account-switch-lock.d.ts.map +1 -1
- package/dist/modules/auth/account-switch-lock.js +1 -1
- package/dist/modules/auth/account-switch-lock.js.map +1 -1
- package/dist/modules/auth/account.routes.d.ts +2 -2
- package/dist/modules/auth/account.routes.d.ts.map +1 -1
- package/dist/modules/auth/account.routes.js +1 -1
- package/dist/modules/auth/account.routes.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +10 -9
- package/dist/modules/auth/auth.service.d.ts.map +1 -1
- package/dist/modules/auth/auth.service.js +22 -21
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/index.d.ts +2 -0
- package/dist/modules/auth/index.d.ts.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.js +1 -1
- package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.d.ts +1 -1
- package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
- package/dist/modules/connection-probe/connection-probe.service.d.ts +2 -2
- package/dist/modules/connection-probe/connection-probe.service.d.ts.map +1 -1
- package/dist/modules/connection-probe/connection-probe.service.js +1 -4
- package/dist/modules/connection-probe/connection-probe.service.js.map +1 -1
- package/dist/modules/database/core-schema.d.ts +128 -235
- package/dist/modules/database/core-schema.d.ts.map +1 -1
- package/dist/modules/database/core-schema.js +55 -36
- package/dist/modules/database/core-schema.js.map +1 -1
- package/dist/modules/database/index.d.ts +10 -0
- package/dist/modules/database/index.d.ts.map +1 -0
- package/dist/modules/database/index.js +4 -0
- package/dist/modules/database/index.js.map +1 -0
- package/dist/modules/database/migrate.d.ts.map +1 -1
- package/dist/modules/database/migrate.js +78 -3
- package/dist/modules/database/migrate.js.map +1 -1
- package/dist/modules/declared-variables/declared-variables.routes.d.ts +2 -2
- package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
- package/dist/modules/diff/diff.routes.d.ts +3 -3
- package/dist/modules/diff/diff.routes.d.ts.map +1 -1
- package/dist/modules/diff/diff.routes.js +3 -3
- package/dist/modules/diff/diff.routes.js.map +1 -1
- package/dist/modules/diff/diff.service.d.ts +2 -2
- package/dist/modules/diff/diff.service.d.ts.map +1 -1
- package/dist/modules/diff/index.d.ts +7 -0
- package/dist/modules/diff/index.d.ts.map +1 -0
- package/dist/modules/diff/index.js +2 -0
- package/dist/modules/diff/index.js.map +1 -0
- package/dist/modules/embed/account-link.service.d.ts +1 -1
- package/dist/modules/embed/account-link.service.d.ts.map +1 -1
- package/dist/modules/embed/account-link.service.js +1 -1
- package/dist/modules/embed/account-link.service.js.map +1 -1
- package/dist/modules/embed/embed.routes.d.ts +1 -1
- package/dist/modules/embed/embed.routes.d.ts.map +1 -1
- package/dist/modules/embed/embed.routes.js +2 -2
- package/dist/modules/embed/embed.routes.js.map +1 -1
- package/dist/modules/embed/embed.service.d.ts +1 -1
- package/dist/modules/embed/embed.service.d.ts.map +1 -1
- package/dist/modules/embed/embed.tools.d.ts +4 -4
- package/dist/modules/embed/embed.tools.d.ts.map +1 -1
- package/dist/modules/embed/embed.tools.js +3 -5
- package/dist/modules/embed/embed.tools.js.map +1 -1
- package/dist/modules/github-app/github-app.connection.d.ts +1 -1
- package/dist/modules/github-app/github-app.connection.d.ts.map +1 -1
- package/dist/modules/github-app/github-app.routes.d.ts +3 -3
- package/dist/modules/github-app/github-app.routes.d.ts.map +1 -1
- package/dist/modules/github-app/github-app.routes.js +1 -1
- package/dist/modules/github-app/github-app.routes.js.map +1 -1
- package/dist/modules/kb-fs/index.d.ts +10 -0
- package/dist/modules/kb-fs/index.d.ts.map +1 -1
- package/dist/modules/kb-fs/index.js +10 -0
- package/dist/modules/kb-fs/index.js.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.d.ts +1 -1
- package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.routes.d.ts +1 -1
- package/dist/modules/kb-sync/kb-sync.routes.d.ts.map +1 -1
- package/dist/modules/kb-sync/kb-sync.routes.js +2 -2
- package/dist/modules/kb-sync/kb-sync.routes.js.map +1 -1
- package/dist/modules/kb-sync/kb-sync.service.js +1 -1
- package/dist/modules/kb-sync/kb-sync.service.js.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/kb-sync/sync-payload.js +1 -1
- package/dist/modules/kb-sync/sync-payload.js.map +1 -1
- package/dist/modules/marketplace/git-http.routes.d.ts +1 -1
- package/dist/modules/marketplace/git-http.routes.d.ts.map +1 -1
- package/dist/modules/marketplace/git-http.routes.js +1 -1
- package/dist/modules/marketplace/git-http.routes.js.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-admin.routes.d.ts.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-admin.routes.js.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-codes.store.d.ts.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-codes.store.js +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-codes.store.js.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-credentials.service.d.ts.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js +1 -1
- package/dist/modules/marketplace/github-facade/github-facade-credentials.service.js.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts +2 -2
- package/dist/modules/marketplace/github-facade/github-facade.routes.d.ts.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade.routes.js +2 -2
- package/dist/modules/marketplace/github-facade/github-facade.routes.js.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade.service.d.ts +2 -2
- package/dist/modules/marketplace/github-facade/github-facade.service.d.ts.map +1 -1
- package/dist/modules/marketplace/github-facade/github-facade.service.js +1 -1
- package/dist/modules/marketplace/github-facade/github-facade.service.js.map +1 -1
- package/dist/modules/marketplace/marketplace-repo.service.d.ts +1 -1
- package/dist/modules/marketplace/marketplace-repo.service.d.ts.map +1 -1
- package/dist/modules/marketplace/marketplace-repo.service.js +1 -1
- package/dist/modules/mcp/index.d.ts +8 -0
- package/dist/modules/mcp/index.d.ts.map +1 -0
- package/dist/modules/mcp/index.js +7 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/mcp-auth.middleware.d.ts +4 -5
- package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.js +4 -4
- package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
- package/dist/modules/mcp/mcp.routes.d.ts +2 -4
- package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.routes.js +2 -2
- package/dist/modules/mcp/mcp.routes.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +14 -4
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +17 -7
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +29 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js +167 -40
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.js +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
- package/dist/modules/onboarding/onboarding.routes.d.ts +1 -1
- package/dist/modules/onboarding/onboarding.routes.d.ts.map +1 -1
- package/dist/modules/onboarding/onboarding.routes.js +1 -1
- package/dist/modules/onboarding/onboarding.routes.js.map +1 -1
- package/dist/modules/onboarding/starter-pack.service.d.ts +4 -5
- package/dist/modules/onboarding/starter-pack.service.d.ts.map +1 -1
- package/dist/modules/onboarding/starter-pack.service.js +2 -2
- package/dist/modules/onboarding/starter-pack.service.js.map +1 -1
- package/dist/modules/plugins/compile/compile-marketplace.d.ts +1 -1
- package/dist/modules/plugins/compile/compile-marketplace.d.ts.map +1 -1
- package/dist/modules/plugins/compile/compile-marketplace.js +1 -1
- package/dist/modules/plugins/compile/compile-marketplace.js.map +1 -1
- package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts +3 -3
- package/dist/modules/plugins/compile/marketplace-compiler.service.d.ts.map +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/registry.d.ts.map +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/registry.js +1 -1
- package/dist/modules/plugins/discovery/bundle-dialect/registry.js.map +1 -1
- package/dist/modules/plugins/index.d.ts +1 -0
- package/dist/modules/plugins/index.d.ts.map +1 -1
- package/dist/modules/plugins/index.js +2 -0
- package/dist/modules/plugins/index.js.map +1 -1
- package/dist/modules/plugins/join-proposals.d.ts +2 -2
- package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
- package/dist/modules/plugins/join-proposals.js +1 -1
- package/dist/modules/plugins/join-proposals.js.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.d.ts +1 -1
- package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.js +2 -2
- package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
- package/dist/modules/plugins/join-request-records.store.d.ts +1 -1
- package/dist/modules/plugins/join-request-records.store.d.ts.map +1 -1
- package/dist/modules/plugins/join-request-records.store.js +1 -1
- package/dist/modules/plugins/join-request-records.store.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts +3 -3
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +1 -1
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugin-links.d.ts +3 -3
- package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-links.js +1 -1
- package/dist/modules/plugins/plugin-links.js.map +1 -1
- package/dist/modules/plugins/plugin-links.service.d.ts +8 -5
- package/dist/modules/plugins/plugin-links.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-links.service.js +8 -6
- package/dist/modules/plugins/plugin-links.service.js.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.d.ts +2 -2
- package/dist/modules/plugins/plugin-provision.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-provision.service.js +2 -3
- package/dist/modules/plugins/plugin-provision.service.js.map +1 -1
- package/dist/modules/plugins/plugin-rename.service.d.ts +2 -2
- package/dist/modules/plugins/plugin-rename.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-rename.service.js +1 -1
- package/dist/modules/plugins/plugin-rename.service.js.map +1 -1
- package/dist/modules/plugins/plugins.contract.d.ts +1 -1
- package/dist/modules/plugins/plugins.contract.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts +2 -2
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +3 -3
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/plugins/plugins.service.d.ts +4 -4
- package/dist/modules/plugins/plugins.service.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.service.js +1 -1
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/plugins/plugins.tools.d.ts +1 -1
- package/dist/modules/plugins/plugins.tools.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.tools.js +3 -3
- package/dist/modules/plugins/plugins.tools.js.map +1 -1
- package/dist/modules/plugins/teams.routes.d.ts +3 -3
- package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.d.ts.map +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.js +1 -1
- package/dist/modules/secrets-vault/db-secrets-vault.service.js.map +1 -1
- package/dist/modules/secrets-vault/index.d.ts +1 -0
- package/dist/modules/secrets-vault/index.d.ts.map +1 -1
- package/dist/modules/secrets-vault/index.js +2 -0
- package/dist/modules/secrets-vault/index.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +4 -4
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
- package/dist/modules/settings/connection-check.js +1 -1
- package/dist/modules/settings/connection-check.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.d.ts +7 -1
- package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +45 -3
- package/dist/modules/settings/deployment-settings.service.js.map +1 -1
- package/dist/modules/settings/git-root-folders.js +1 -1
- package/dist/modules/settings/git-root-folders.js.map +1 -1
- package/dist/modules/settings/index.d.ts +13 -0
- package/dist/modules/settings/index.d.ts.map +1 -0
- package/dist/modules/settings/index.js +3 -0
- package/dist/modules/settings/index.js.map +1 -0
- package/dist/modules/settings/setup.routes.d.ts +3 -3
- package/dist/modules/settings/setup.routes.d.ts.map +1 -1
- package/dist/modules/settings/setup.routes.js +2 -2
- package/dist/modules/settings/setup.routes.js.map +1 -1
- package/dist/modules/skills/allowed-tools-check.d.ts +2 -2
- package/dist/modules/skills/allowed-tools-check.d.ts.map +1 -1
- package/dist/modules/skills/allowed-tools-check.js +1 -1
- package/dist/modules/skills/allowed-tools-check.js.map +1 -1
- package/dist/modules/skills/index.d.ts +1 -0
- package/dist/modules/skills/index.d.ts.map +1 -1
- package/dist/modules/skills/pending-skills.service.d.ts +3 -3
- package/dist/modules/skills/pending-skills.service.d.ts.map +1 -1
- package/dist/modules/skills/pending-skills.service.js.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts +5 -5
- package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.js +6 -13
- package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
- package/dist/modules/skills/skills.routes.d.ts +1 -1
- package/dist/modules/skills/skills.routes.d.ts.map +1 -1
- package/dist/modules/skills/skills.routes.js +1 -1
- package/dist/modules/skills/skills.routes.js.map +1 -1
- package/dist/modules/skills/skills.service.d.ts +2 -2
- package/dist/modules/skills/skills.service.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.d.ts +3 -3
- package/dist/modules/skills/skills.tools.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.js +3 -7
- package/dist/modules/skills/skills.tools.js.map +1 -1
- package/dist/modules/tool-auth/connection-key-rejection.js +1 -1
- package/dist/modules/tool-auth/connection-key-rejection.js.map +1 -1
- package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts +2 -2
- package/dist/modules/tool-auth/connection-keys-admin.routes.d.ts.map +1 -1
- package/dist/modules/tool-auth/connection-keys-admin.routes.js +1 -1
- package/dist/modules/tool-auth/connection-keys-admin.routes.js.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.d.ts +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 +1 -1
- package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
- package/dist/modules/tool-auth/index.d.ts +15 -0
- package/dist/modules/tool-auth/index.d.ts.map +1 -0
- package/dist/modules/tool-auth/index.js +11 -0
- package/dist/modules/tool-auth/index.js.map +1 -0
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts +2 -2
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
- package/dist/modules/tool-helpers/default-branch-write.d.ts +1 -1
- package/dist/modules/tool-helpers/default-branch-write.d.ts.map +1 -1
- package/dist/modules/tool-helpers/index.d.ts +4 -1
- package/dist/modules/tool-helpers/index.d.ts.map +1 -1
- package/dist/modules/tool-helpers/index.js +3 -0
- package/dist/modules/tool-helpers/index.js.map +1 -1
- package/dist/modules/tool-helpers/route-argument-check.js +1 -1
- package/dist/modules/tool-helpers/route-argument-check.js.map +1 -1
- package/dist/modules/tool-helpers/route-tool-schemas.d.ts +1 -1
- package/dist/modules/tool-helpers/route-tool-schemas.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts +5 -6
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +2 -3
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/tool-helpers/tool-def.d.ts +4 -2
- package/dist/modules/tool-helpers/tool-def.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-def.js +3 -1
- package/dist/modules/tool-helpers/tool-def.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts +2 -2
- package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.js +2 -2
- package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.d.ts +2 -2
- package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-helpers/validate-token.d.ts +1 -2
- package/dist/modules/tool-helpers/validate-token.d.ts.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/tool-manuals/index.d.ts +5 -0
- package/dist/modules/tool-manuals/index.d.ts.map +1 -1
- package/dist/modules/tool-manuals/index.js +4 -0
- package/dist/modules/tool-manuals/index.js.map +1 -1
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts +2 -2
- package/dist/modules/tool-manuals/mcp-server-edit.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/pending-tools.service.d.ts +2 -2
- package/dist/modules/tool-manuals/pending-tools.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.d.ts +5 -6
- package/dist/modules/tool-manuals/tool-delete.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-delete.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +5 -5
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.js +2 -2
- package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts +3 -3
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts +3 -3
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js +1 -2
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/tool-registry/description-length.js +2 -2
- package/dist/modules/tool-registry/description-length.js.map +1 -1
- package/dist/modules/tool-registry/index.d.ts +8 -0
- package/dist/modules/tool-registry/index.d.ts.map +1 -0
- package/dist/modules/tool-registry/index.js +8 -0
- package/dist/modules/tool-registry/index.js.map +1 -0
- package/dist/modules/tool-registry/manual.routes.d.ts +37 -2
- package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
- package/dist/modules/tool-registry/manual.routes.js +14 -7
- package/dist/modules/tool-registry/manual.routes.js.map +1 -1
- package/dist/modules/tool-registry/read-only-hints.contract.d.ts +52 -0
- package/dist/modules/tool-registry/read-only-hints.contract.d.ts.map +1 -0
- package/dist/modules/tool-registry/read-only-hints.contract.js +2 -0
- package/dist/modules/tool-registry/read-only-hints.contract.js.map +1 -0
- package/dist/modules/tool-registry/read-only-hints.d.ts +89 -0
- package/dist/modules/tool-registry/read-only-hints.d.ts.map +1 -0
- package/dist/modules/tool-registry/read-only-hints.js +212 -0
- package/dist/modules/tool-registry/read-only-hints.js.map +1 -0
- package/dist/modules/tool-registry/tool.contract.d.ts +8 -0
- package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-registry/tool.contract.js +10 -1
- package/dist/modules/tool-registry/tool.contract.js.map +1 -1
- package/dist/modules/update-check/update-check.routes.d.ts +2 -2
- package/dist/modules/update-check/update-check.routes.d.ts.map +1 -1
- package/dist/modules/update-check/update-check.routes.js +1 -1
- package/dist/modules/update-check/update-check.routes.js.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts +9 -104
- package/dist/modules/workflow/agent-tools/change-request-read-shape.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-read-shape.js +8 -118
- package/dist/modules/workflow/agent-tools/change-request-read-shape.js.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts +16 -17
- package/dist/modules/workflow/agent-tools/change-request-read.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-read.tools.js +19 -86
- package/dist/modules/workflow/agent-tools/change-request-read.tools.js.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts +15 -2
- package/dist/modules/workflow/agent-tools/change-request-summary.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.js +12 -1
- package/dist/modules/workflow/agent-tools/change-request-summary.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts +7 -5
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +51 -68
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/change-request-hooks.d.ts +78 -0
- package/dist/modules/workflow/change-request-hooks.d.ts.map +1 -0
- package/dist/modules/workflow/change-request-hooks.js +15 -0
- package/dist/modules/workflow/change-request-hooks.js.map +1 -0
- package/dist/modules/workflow/event-bus.d.ts.map +1 -1
- package/dist/modules/workflow/event-bus.js +3 -1
- package/dist/modules/workflow/event-bus.js.map +1 -1
- package/dist/modules/workflow/events-delivery.d.ts +120 -0
- package/dist/modules/workflow/events-delivery.d.ts.map +1 -0
- package/dist/modules/workflow/events-delivery.js +202 -0
- package/dist/modules/workflow/events-delivery.js.map +1 -0
- package/dist/modules/workflow/events.routes.d.ts +16 -7
- package/dist/modules/workflow/events.routes.d.ts.map +1 -1
- package/dist/modules/workflow/events.routes.js +23 -4
- package/dist/modules/workflow/events.routes.js.map +1 -1
- package/dist/modules/workflow/file-lock.service.d.ts +1 -1
- package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
- package/dist/modules/workflow/file-lock.service.js +1 -1
- package/dist/modules/workflow/file-lock.service.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +2 -2
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +3 -6
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.js +1 -1
- package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts +16 -7
- package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.js +49 -33
- package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
- package/dist/modules/workflow/index.d.ts +14 -2
- package/dist/modules/workflow/index.d.ts.map +1 -1
- package/dist/modules/workflow/index.js +11 -2
- package/dist/modules/workflow/index.js.map +1 -1
- package/dist/modules/workflow/pending-commits.service.d.ts +1 -1
- package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
- package/dist/modules/workflow/pending-commits.service.js +1 -1
- package/dist/modules/workflow/pending-commits.service.js.map +1 -1
- package/dist/modules/workflow/read-on-branch.d.ts +1 -1
- package/dist/modules/workflow/read-on-branch.d.ts.map +1 -1
- package/dist/modules/workflow/recovery-bot.d.ts +1 -1
- package/dist/modules/workflow/recovery-bot.d.ts.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/approval-lock.d.ts +1 -1
- package/dist/modules/workflow/review-workflow/approval-lock.d.ts.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts +4 -20
- package/dist/modules/workflow/review-workflow/review-workflow.interface.d.ts.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts +4 -8
- package/dist/modules/workflow/review-workflow/review-workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/review-workflow/review-workflow.service.js +3 -138
- package/dist/modules/workflow/review-workflow/review-workflow.service.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.d.ts +5 -5
- package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +42 -94
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +112 -62
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +367 -172
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/agent-access.gate.d.ts +3 -3
- package/dist/modules/workspace/agent-access.gate.d.ts.map +1 -1
- package/dist/modules/workspace/agent-download.builder.d.ts +1 -1
- package/dist/modules/workspace/agent-download.builder.d.ts.map +1 -1
- package/dist/modules/workspace/agent-download.builder.js +1 -1
- package/dist/modules/workspace/agent-download.builder.js.map +1 -1
- package/dist/modules/workspace/agent-upload.routes.d.ts.map +1 -1
- package/dist/modules/workspace/agent-upload.routes.js +19 -0
- package/dist/modules/workspace/agent-upload.routes.js.map +1 -1
- package/dist/modules/workspace/agent-upload.store.d.ts +11 -0
- package/dist/modules/workspace/agent-upload.store.d.ts.map +1 -1
- package/dist/modules/workspace/agent-upload.store.js +18 -0
- package/dist/modules/workspace/agent-upload.store.js.map +1 -1
- package/dist/modules/workspace/bounded-matcher.d.ts +5 -11
- package/dist/modules/workspace/bounded-matcher.d.ts.map +1 -1
- package/dist/modules/workspace/bounded-matcher.js +26 -87
- package/dist/modules/workspace/bounded-matcher.js.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +54 -10
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.js +69 -17
- package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +9 -2
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -1
- package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts +41 -0
- package/dist/modules/workspace/file-readers/document-extractor.contract.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/document-extractor.contract.js +5 -0
- package/dist/modules/workspace/file-readers/document-extractor.contract.js.map +1 -0
- package/dist/modules/workspace/file-readers/document-extractors.d.ts +9 -0
- package/dist/modules/workspace/file-readers/document-extractors.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/document-extractors.js +26 -0
- package/dist/modules/workspace/file-readers/document-extractors.js.map +1 -0
- package/dist/modules/workspace/file-readers/document-formats.d.ts +12 -0
- package/dist/modules/workspace/file-readers/document-formats.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/document-formats.js +11 -0
- package/dist/modules/workspace/file-readers/document-formats.js.map +1 -0
- package/dist/modules/workspace/file-readers/document-reader.d.ts +21 -17
- package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/document-reader.js +38 -34
- package/dist/modules/workspace/file-readers/document-reader.js.map +1 -1
- package/dist/modules/workspace/file-readers/extract-in-worker.d.ts +60 -0
- package/dist/modules/workspace/file-readers/extract-in-worker.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-in-worker.js +140 -0
- package/dist/modules/workspace/file-readers/extract-in-worker.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts +2 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/extract-pdf.js +20 -3
- package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -1
- package/dist/modules/workspace/file-readers/extract.worker.d.ts +2 -0
- package/dist/modules/workspace/file-readers/extract.worker.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract.worker.js +5 -0
- package/dist/modules/workspace/file-readers/extract.worker.js.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts +21 -5
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/extraction-cache.js +24 -10
- package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -1
- package/dist/modules/workspace/file-readers/extraction-worker.d.ts +42 -0
- package/dist/modules/workspace/file-readers/extraction-worker.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-worker.js +69 -0
- package/dist/modules/workspace/file-readers/extraction-worker.js.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.d.ts +13 -4
- package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/file-reader.js.map +1 -1
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +3 -2
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/file-reader.registry.js +6 -20
- package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -1
- package/dist/modules/workspace/first-run.js +1 -1
- package/dist/modules/workspace/first-run.js.map +1 -1
- package/dist/modules/workspace/git-internals.middleware.d.ts +1 -1
- package/dist/modules/workspace/git-internals.middleware.d.ts.map +1 -1
- package/dist/modules/workspace/git-internals.middleware.js +1 -1
- package/dist/modules/workspace/git-internals.middleware.js.map +1 -1
- package/dist/modules/workspace/index.d.ts +16 -0
- package/dist/modules/workspace/index.d.ts.map +1 -1
- package/dist/modules/workspace/index.js +13 -0
- package/dist/modules/workspace/index.js.map +1 -1
- package/dist/modules/workspace/kb-repository.d.ts.map +1 -1
- package/dist/modules/workspace/kb-repository.js +1 -1
- package/dist/modules/workspace/kb-repository.js.map +1 -1
- package/dist/modules/workspace/not-found.d.ts +1 -1
- package/dist/modules/workspace/not-found.d.ts.map +1 -1
- package/dist/modules/workspace/not-found.js +1 -1
- package/dist/modules/workspace/not-found.js.map +1 -1
- package/dist/modules/workspace/pattern-matcher.contract.d.ts +1 -1
- package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
- package/dist/modules/workspace/pattern-matcher.contract.js +1 -1
- package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
- package/dist/modules/workspace/routine-write-policy.js +1 -1
- package/dist/modules/workspace/routine-write-policy.js.map +1 -1
- package/dist/modules/workspace/startup/kb-git.js +1 -1
- package/dist/modules/workspace/startup/kb-git.js.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js +1 -2
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js +2 -2
- package/dist/modules/workspace/startup/steps/groups-to-plugins.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/personal-spaces.step.js +2 -2
- package/dist/modules/workspace/startup/steps/personal-spaces.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/plugin-layout.js +1 -1
- package/dist/modules/workspace/startup/steps/plugin-layout.js.map +1 -1
- package/dist/modules/workspace/startup/steps/roles-yaml.step.js +1 -1
- package/dist/modules/workspace/startup/steps/roles-yaml.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/seed-tree.js +2 -2
- package/dist/modules/workspace/startup/steps/seed-tree.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.d.ts.map +1 -1
- package/dist/modules/workspace/startup/steps/template-files.step.js +2 -2
- package/dist/modules/workspace/startup/steps/template-files.step.js.map +1 -1
- package/dist/modules/workspace/startup/steps/template-source.js +2 -2
- package/dist/modules/workspace/startup/steps/template-source.js.map +1 -1
- package/dist/modules/workspace/worker-pool.d.ts +100 -0
- package/dist/modules/workspace/worker-pool.d.ts.map +1 -0
- package/dist/modules/workspace/worker-pool.js +156 -0
- package/dist/modules/workspace/worker-pool.js.map +1 -0
- package/dist/modules/workspace/workspace.routes.d.ts +7 -8
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +4 -6
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +1 -1
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +3 -6
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts +7 -7
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +45 -27
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/modules/workspace/write-denial.d.ts +4 -4
- package/dist/modules/workspace/write-denial.d.ts.map +1 -1
- package/dist/modules/workspace/write-denial.js +2 -3
- package/dist/modules/workspace/write-denial.js.map +1 -1
- package/dist/modules/write-access/index.d.ts +8 -0
- package/dist/modules/write-access/index.d.ts.map +1 -0
- package/dist/modules/write-access/index.js +7 -0
- package/dist/modules/write-access/index.js.map +1 -0
- package/dist/shared/listener-seam.d.ts +34 -0
- package/dist/shared/listener-seam.d.ts.map +1 -0
- package/dist/shared/listener-seam.js +42 -0
- package/dist/shared/listener-seam.js.map +1 -0
- package/migrations/0019_oauth_token_rotated_at.sql +7 -0
- package/migrations/0020_change_request_body_is_the_description.sql +20 -0
- package/migrations/0021_data_migrations_ledger.sql +11 -0
- package/migrations/meta/0019_snapshot.json +2435 -0
- package/migrations/meta/0020_snapshot.json +2321 -0
- package/migrations/meta/0021_snapshot.json +2353 -0
- package/migrations/meta/_journal.json +21 -0
- package/package.json +3 -3
- package/src/core/__tests__/damaged-document.tools.test.ts +374 -0
- package/src/core/__tests__/public-config.test.ts +5 -0
- package/src/core/create-core-server.ts +32 -3
- package/src/core/create-core-services.ts +49 -5
- package/src/core/lifecycle.ts +10 -0
- package/src/core/public-config.ts +10 -0
- package/src/index.ts +7 -0
- package/src/modules/access/__tests__/access-requests.routes.test.ts +29 -15
- package/src/modules/access/access-control.service.ts +5 -6
- package/src/modules/access/access-declarations.ts +1 -1
- package/src/modules/access/access-mutation.service.ts +10 -4
- package/src/modules/access/access-requests.contract.ts +1 -1
- package/src/modules/access/access-requests.routes.ts +10 -15
- package/src/modules/access/access-requests.service.ts +29 -71
- package/src/modules/access/access-view.ts +1 -1
- package/src/modules/access/access.routes.ts +9 -11
- package/src/modules/access/admin-locked-commit.ts +3 -2
- package/src/modules/access/capability-registry.ts +1 -1
- package/src/modules/access/change-read-gate.ts +3 -5
- package/src/modules/access/creator-access.ts +3 -5
- package/src/modules/access/directory-sync-bot.ts +2 -2
- package/src/modules/access/groups-admin.routes.ts +3 -3
- package/src/modules/access/groups-admin.service.ts +3 -4
- package/src/modules/access/groups-edit.ts +2 -2
- package/src/modules/access/index.ts +17 -0
- package/src/modules/access/reference-scan.ts +1 -1
- package/src/modules/access/roles-admin.service.ts +3 -6
- package/src/modules/access/roles-edit.ts +1 -1
- package/src/modules/access/synced-groups-committer.ts +4 -4
- package/src/modules/access/synced-groups-writer.ts +2 -2
- package/src/modules/access/user-access-removal.service.ts +3 -6
- package/src/modules/access-model/index.ts +29 -0
- package/src/modules/access-model/roles-yaml-guard.ts +1 -1
- package/src/modules/admin/admin-access.routes.ts +1 -1
- package/src/modules/admin/admin-access.service.ts +2 -2
- package/src/modules/admin/index.ts +7 -0
- package/src/modules/agent-guide/__tests__/agent-guide.test.ts +5 -0
- package/src/modules/agent-guide/agent-guide.tools.ts +4 -6
- package/src/modules/agent-guide/agent-guide.ts +1 -1
- package/src/modules/agent-guide/index.ts +1 -1
- package/src/modules/agent-instructions/read-preamble.ts +1 -1
- package/src/modules/audit/agent-audit.service.ts +3 -3
- package/src/modules/audit/agent-connection.routes.ts +1 -1
- package/src/modules/audit/agent-rest-audit.middleware.ts +1 -1
- package/src/modules/audit/audit.routes.ts +4 -4
- package/src/modules/auth/__tests__/account-deactivation.test.ts +38 -2
- package/src/modules/auth/account-erasure.service.ts +4 -9
- package/src/modules/auth/account-hooks.ts +13 -21
- package/src/modules/auth/account-switch-lock.ts +2 -2
- package/src/modules/auth/account.routes.ts +3 -3
- package/src/modules/auth/auth.service.ts +23 -22
- package/src/modules/auth/index.ts +3 -0
- package/src/modules/auth/oidc-auth-provider.ts +1 -1
- package/src/modules/code-mode/code-mode.tool.ts +1 -1
- package/src/modules/connection-probe/connection-probe.service.ts +3 -6
- package/src/modules/database/__tests__/legacy-change-request-body.test.ts +118 -0
- package/src/modules/database/__tests__/legacy-request-bodies.pg.test.ts +258 -0
- package/src/modules/database/__tests__/pii-backfill.pg.test.ts +15 -18
- package/src/modules/database/core-schema.ts +59 -37
- package/src/modules/database/index.ts +9 -0
- package/src/modules/database/migrate.ts +79 -3
- package/src/modules/declared-variables/declared-variables.routes.ts +2 -2
- package/src/modules/diff/diff.routes.ts +5 -5
- package/src/modules/diff/diff.service.ts +2 -2
- package/src/modules/diff/index.ts +6 -0
- package/src/modules/embed/account-link.service.ts +2 -2
- package/src/modules/embed/embed.routes.ts +2 -2
- package/src/modules/embed/embed.service.ts +1 -1
- package/src/modules/embed/embed.tools.ts +6 -9
- package/src/modules/github-app/github-app.connection.ts +1 -1
- package/src/modules/github-app/github-app.routes.ts +3 -3
- package/src/modules/kb-fs/index.ts +11 -0
- package/src/modules/kb-fs/locking-filesystem.ts +1 -1
- package/src/modules/kb-sync/kb-sync.routes.ts +3 -3
- package/src/modules/kb-sync/kb-sync.service.ts +1 -1
- package/src/modules/kb-sync/sync-auth.ts +1 -1
- package/src/modules/kb-sync/sync-payload.ts +1 -1
- package/src/modules/marketplace/git-http.routes.ts +1 -1
- package/src/modules/marketplace/github-facade/github-facade-admin.routes.ts +1 -1
- package/src/modules/marketplace/github-facade/github-facade-codes.store.ts +2 -2
- package/src/modules/marketplace/github-facade/github-facade-credentials.service.ts +2 -2
- package/src/modules/marketplace/github-facade/github-facade.routes.ts +2 -2
- package/src/modules/marketplace/github-facade/github-facade.service.ts +2 -2
- package/src/modules/marketplace/marketplace-repo.service.ts +2 -2
- package/src/modules/mcp/__tests__/bevel-oauth-provider.pg.test.ts +279 -0
- package/src/modules/mcp/__tests__/bevel-oauth-provider.test.ts +190 -15
- package/src/modules/mcp/__tests__/read-only-hint.e2e.test.ts +213 -0
- package/src/modules/mcp/index.ts +7 -0
- package/src/modules/mcp/mcp-auth.middleware.ts +6 -7
- package/src/modules/mcp/mcp.routes.ts +3 -5
- package/src/modules/mcp/mcp.service.ts +30 -13
- package/src/modules/mcp/oauth/bevel-oauth-provider.ts +216 -50
- package/src/modules/mcp/oauth/oauth-consent.routes.ts +1 -1
- package/src/modules/onboarding/onboarding.routes.ts +1 -1
- package/src/modules/onboarding/starter-pack.service.ts +5 -6
- package/src/modules/plugins/__tests__/bundle-dialect.e2e.test.ts +2 -1
- package/src/modules/plugins/__tests__/plugin-links.service.test.ts +2 -1
- package/src/modules/plugins/compile/compile-marketplace.ts +2 -2
- package/src/modules/plugins/compile/marketplace-compiler.service.ts +3 -3
- package/src/modules/plugins/discovery/bundle-dialect/registry.ts +1 -1
- package/src/modules/plugins/index.ts +2 -0
- package/src/modules/plugins/join-proposals.ts +2 -2
- package/src/modules/plugins/join-request-jobs.service.ts +3 -3
- package/src/modules/plugins/join-request-records.store.ts +2 -2
- package/src/modules/plugins/join-requests.service.ts +4 -4
- package/src/modules/plugins/plugin-links.service.ts +10 -11
- package/src/modules/plugins/plugin-links.ts +4 -4
- package/src/modules/plugins/plugin-provision.service.ts +4 -5
- package/src/modules/plugins/plugin-rename.service.ts +3 -3
- package/src/modules/plugins/plugins.contract.ts +1 -1
- package/src/modules/plugins/plugins.routes.ts +4 -4
- package/src/modules/plugins/plugins.service.ts +5 -5
- package/src/modules/plugins/plugins.tools.ts +4 -4
- package/src/modules/plugins/teams.routes.ts +3 -3
- package/src/modules/secrets-vault/db-secrets-vault.service.ts +2 -2
- package/src/modules/secrets-vault/index.ts +2 -0
- package/src/modules/secrets-vault/secrets-vault.routes.ts +4 -4
- package/src/modules/settings/__tests__/deployment-settings.service.test.ts +88 -1
- package/src/modules/settings/connection-check.ts +1 -1
- package/src/modules/settings/deployment-settings.service.ts +44 -4
- package/src/modules/settings/git-root-folders.ts +1 -1
- package/src/modules/settings/index.ts +12 -0
- package/src/modules/settings/setup.routes.ts +5 -4
- package/src/modules/skills/__tests__/allowed-tools-warn.tools.test.ts +2 -2
- package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +6 -3
- package/src/modules/skills/allowed-tools-check.ts +2 -6
- package/src/modules/skills/index.ts +2 -0
- package/src/modules/skills/pending-skills.service.ts +3 -4
- package/src/modules/skills/skill-access-requests.routes.ts +10 -17
- package/src/modules/skills/skills.routes.ts +1 -1
- package/src/modules/skills/skills.service.ts +2 -2
- package/src/modules/skills/skills.tools.ts +5 -9
- package/src/modules/tool-auth/connection-key-rejection.ts +1 -1
- package/src/modules/tool-auth/connection-keys-admin.routes.ts +2 -2
- package/src/modules/tool-auth/external-api-key.service.ts +2 -2
- package/src/modules/tool-auth/index.ts +14 -0
- package/src/modules/tool-auth/tool-auth.middleware.ts +3 -3
- package/src/modules/tool-helpers/__tests__/agent-roles-write.test.ts +2 -2
- package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +2 -2
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -2
- package/src/modules/tool-helpers/default-branch-write.ts +1 -1
- package/src/modules/tool-helpers/index.ts +5 -1
- package/src/modules/tool-helpers/route-argument-check.ts +1 -1
- package/src/modules/tool-helpers/route-tool-schemas.ts +1 -1
- package/src/modules/tool-helpers/tool-context.ts +8 -10
- package/src/modules/tool-helpers/tool-def.ts +7 -3
- package/src/modules/tool-helpers/tool-handler.ts +2 -2
- package/src/modules/tool-helpers/tool.contract.ts +2 -2
- package/src/modules/tool-helpers/validate-token.ts +2 -3
- package/src/modules/tool-manuals/index.ts +6 -0
- package/src/modules/tool-manuals/mcp-server-edit.service.ts +2 -2
- package/src/modules/tool-manuals/pending-tools.service.ts +2 -2
- package/src/modules/tool-manuals/tool-delete.service.ts +5 -6
- package/src/modules/tool-manuals/tool-manuals.routes.ts +5 -5
- package/src/modules/tool-manuals/tool-manuals.service.ts +3 -3
- package/src/modules/tool-manuals/tool-manuals.tools.ts +4 -6
- package/src/modules/tool-registry/__tests__/read-only-hints.test.ts +439 -0
- package/src/modules/tool-registry/__tests__/tool-registry.test.ts +9 -2
- package/src/modules/tool-registry/description-length.ts +2 -2
- package/src/modules/tool-registry/index.ts +22 -0
- package/src/modules/tool-registry/manual.routes.ts +14 -8
- package/src/modules/tool-registry/read-only-hints.contract.ts +54 -0
- package/src/modules/tool-registry/read-only-hints.ts +225 -0
- package/src/modules/tool-registry/tool.contract.ts +11 -0
- package/src/modules/update-check/update-check.routes.ts +2 -2
- package/src/modules/workflow/__tests__/change-request-hooks.test.ts +62 -0
- package/src/modules/workflow/__tests__/event-bus.test.ts +14 -2
- package/src/modules/workflow/__tests__/events-delivery.test.ts +778 -0
- package/src/modules/workflow/__tests__/workflow.routes.open-change-request.test.ts +79 -0
- package/src/modules/workflow/__tests__/workflow.service.delete-branch.test.ts +9 -1
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +342 -22
- package/src/modules/workflow/__tests__/workflow.service.update-change-request.pg.test.ts +120 -0
- package/src/modules/workflow/__tests__/workflow.service.update-change-request.test.ts +346 -0
- package/src/modules/workflow/agent-tools/__tests__/change-request-read-shape.test.ts +32 -209
- package/src/modules/workflow/agent-tools/__tests__/change-request-read.tools.test.ts +16 -245
- package/src/modules/workflow/agent-tools/__tests__/update-change-request.parity.test.ts +306 -0
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +43 -57
- package/src/modules/workflow/agent-tools/change-request-read-shape.ts +18 -153
- package/src/modules/workflow/agent-tools/change-request-read.tools.ts +24 -96
- package/src/modules/workflow/agent-tools/change-request-summary.ts +26 -3
- package/src/modules/workflow/agent-tools/workflow.tools.ts +55 -75
- package/src/modules/workflow/change-request-hooks.ts +96 -0
- package/src/modules/workflow/event-bus.ts +3 -1
- package/src/modules/workflow/events-delivery.ts +278 -0
- package/src/modules/workflow/events.routes.ts +30 -9
- package/src/modules/workflow/file-lock.service.ts +2 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +24 -9
- package/src/modules/workflow/git/git.service.ts +5 -8
- package/src/modules/workflow/git/node-git-runner.ts +1 -1
- package/src/modules/workflow/git/pull-request.service.ts +44 -29
- package/src/modules/workflow/index.ts +15 -2
- package/src/modules/workflow/pending-commits.service.ts +2 -2
- package/src/modules/workflow/read-on-branch.ts +1 -1
- package/src/modules/workflow/recovery-bot.ts +2 -2
- package/src/modules/workflow/review-workflow/approval-lock.ts +1 -1
- package/src/modules/workflow/review-workflow/review-workflow.interface.ts +3 -35
- package/src/modules/workflow/review-workflow/review-workflow.service.ts +6 -165
- package/src/modules/workflow/workflow.routes.ts +46 -100
- package/src/modules/workflow/workflow.service.ts +444 -215
- package/src/modules/workspace/__tests__/agent-downloads.test.ts +2 -1
- package/src/modules/workspace/__tests__/agent-uploads.test.ts +87 -1
- package/src/modules/workspace/__tests__/escape-sequences.routes.test.ts +2 -1
- 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__/rest-tool-arguments.test.ts +2 -1
- package/src/modules/workspace/__tests__/worker-pool.test.ts +118 -0
- package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +3 -2
- package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +30 -0
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +30 -4
- package/src/modules/workspace/agent-access.gate.ts +3 -3
- package/src/modules/workspace/agent-download.builder.ts +1 -1
- package/src/modules/workspace/agent-upload.routes.ts +19 -0
- package/src/modules/workspace/agent-upload.store.ts +18 -0
- package/src/modules/workspace/bounded-matcher.ts +32 -89
- package/src/modules/workspace/file-readers/README.md +9 -0
- package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +165 -0
- package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +21 -16
- package/src/modules/workspace/file-readers/__tests__/extract-in-worker.test.ts +229 -0
- package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +2 -1
- package/src/modules/workspace/file-readers/__tests__/fixtures/damaged-pdf.ts +34 -0
- package/src/modules/workspace/file-readers/__tests__/fixtures/misbehaving-extract.worker.ts +57 -0
- package/src/modules/workspace/file-readers/__tests__/fixtures/pdf-in-trouble.worker.ts +20 -0
- package/src/modules/workspace/file-readers/__tests__/fixtures/unloadable-extract.worker.ts +2 -0
- package/src/modules/workspace/file-readers/doc-extract.service.ts +95 -20
- package/src/modules/workspace/file-readers/doc-extract.types.ts +13 -3
- package/src/modules/workspace/file-readers/document-extractor.contract.ts +42 -0
- package/src/modules/workspace/file-readers/document-extractors.ts +28 -0
- package/src/modules/workspace/file-readers/document-formats.ts +13 -0
- package/src/modules/workspace/file-readers/document-reader.ts +40 -36
- package/src/modules/workspace/file-readers/extract-in-worker.ts +183 -0
- package/src/modules/workspace/file-readers/extract-pdf.ts +23 -4
- package/src/modules/workspace/file-readers/extract.worker.ts +5 -0
- package/src/modules/workspace/file-readers/extraction-cache.ts +33 -12
- package/src/modules/workspace/file-readers/extraction-worker.ts +86 -0
- package/src/modules/workspace/file-readers/file-reader.registry.ts +6 -20
- package/src/modules/workspace/file-readers/file-reader.ts +14 -4
- package/src/modules/workspace/first-run.ts +1 -1
- package/src/modules/workspace/git-internals.middleware.ts +1 -1
- package/src/modules/workspace/index.ts +17 -0
- package/src/modules/workspace/kb-repository.ts +3 -2
- package/src/modules/workspace/not-found.ts +1 -1
- package/src/modules/workspace/pattern-matcher.contract.ts +1 -1
- package/src/modules/workspace/routine-write-policy.ts +1 -1
- package/src/modules/workspace/startup/kb-git.ts +1 -1
- package/src/modules/workspace/startup/kb-startup-runner.ts +1 -2
- package/src/modules/workspace/startup/steps/groups-to-plugins.step.ts +3 -3
- package/src/modules/workspace/startup/steps/personal-spaces.step.ts +2 -2
- package/src/modules/workspace/startup/steps/plugin-layout.ts +1 -1
- package/src/modules/workspace/startup/steps/roles-yaml.step.ts +1 -1
- package/src/modules/workspace/startup/steps/seed-tree.ts +2 -2
- package/src/modules/workspace/startup/steps/template-files.step.ts +2 -2
- package/src/modules/workspace/startup/steps/template-source.ts +2 -2
- package/src/modules/workspace/worker-pool.ts +193 -0
- package/src/modules/workspace/workspace.routes.ts +9 -12
- package/src/modules/workspace/workspace.service.ts +4 -7
- package/src/modules/workspace/workspace.tools.ts +53 -34
- package/src/modules/workspace/write-denial.ts +4 -5
- package/src/modules/write-access/index.ts +7 -0
- package/src/shared/__tests__/module-boundaries.lint.test.ts +301 -0
- package/src/shared/listener-seam.ts +52 -0
- package/src/modules/workflow/__tests__/format-affected-owners.test.ts +0 -85
|
@@ -21,8 +21,8 @@ import type {
|
|
|
21
21
|
OAuthTokens,
|
|
22
22
|
} from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
23
23
|
import type { AgentConnectedEvent } from '@bevel-software/platform-shared';
|
|
24
|
-
import type { Database } from '../../database/
|
|
25
|
-
import { agentConnections, oauthAuthCodes, oauthClients, oauthTokens, users } from '../../database/
|
|
24
|
+
import type { Database } from '../../database/index.js';
|
|
25
|
+
import { agentConnections, oauthAuthCodes, oauthClients, oauthTokens, users } from '../../database/index.js';
|
|
26
26
|
import type { TokenCrypto } from '../../../shared/token-crypto.js';
|
|
27
27
|
import { signAuthRequest, type McpAuthRequestState } from './oauth-state.js';
|
|
28
28
|
|
|
@@ -32,9 +32,27 @@ import { signAuthRequest, type McpAuthRequestState } from './oauth-state.js';
|
|
|
32
32
|
// (`<tenant>-int_`).
|
|
33
33
|
const TOKEN_BYTES = 32;
|
|
34
34
|
|
|
35
|
+
/** A transaction's handle, for the statements a refresh must land together. */
|
|
36
|
+
type Tx = Parameters<Parameters<Database['transaction']>[0]>[0];
|
|
37
|
+
|
|
35
38
|
const ACCESS_TTL_MS = 60 * 60_000; // 1 hour
|
|
36
39
|
const REFRESH_TTL_MS = 30 * 24 * 60 * 60_000; // 30 days, rotated on use
|
|
37
40
|
const CODE_TTL_MS = 60_000; // exchanged within seconds of Finish
|
|
41
|
+
/**
|
|
42
|
+
* How long a refresh token that was just rotated is honoured once more.
|
|
43
|
+
*
|
|
44
|
+
* Rotation makes a refresh token single-use, and a client that refreshes
|
|
45
|
+
* from two places at once — Claude's hosted apps refresh proactively before
|
|
46
|
+
* expiry AND reactively on a 401, and a scheduled task runs beside the chat
|
|
47
|
+
* that shares its connector — presents the same token twice. The second
|
|
48
|
+
* presentation used to be answered `invalid_grant`, which a client reads as
|
|
49
|
+
* "the credential is dead" and turns into a re-authorization prompt every
|
|
50
|
+
* day or two. Within this window the loser is answered as the winner was,
|
|
51
|
+
* with a fresh pair; past it, reuse is refused, which is what makes a stolen
|
|
52
|
+
* token's later replay fail. Sixty seconds is the window Okta allows at most
|
|
53
|
+
* and Auth0 recommends for exactly this case.
|
|
54
|
+
*/
|
|
55
|
+
const REFRESH_REUSE_GRACE_MS = 60_000;
|
|
38
56
|
/**
|
|
39
57
|
* How often, at most, one process stamps an agent connection's `last_used_at`.
|
|
40
58
|
* The Audit log shows the instant relatively ("4 minutes ago"), so a minute's
|
|
@@ -261,34 +279,54 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
261
279
|
_resource?: URL,
|
|
262
280
|
): Promise<OAuthTokens> {
|
|
263
281
|
const now = new Date();
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
//
|
|
267
|
-
//
|
|
268
|
-
//
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
+
const hash = hashToken(refreshToken);
|
|
283
|
+
const clientId = client.client_id;
|
|
284
|
+
// The row is READ first and judged whole, and consumed only once every
|
|
285
|
+
// check has passed: a refusal must leave a token the client could still
|
|
286
|
+
// use with a different request (a narrower scope) usable, and nothing
|
|
287
|
+
// may be minted or retired on a token that is expired, revoked, or
|
|
288
|
+
// bound to a revoked agent. Looked up by hash AND client, so a caller
|
|
289
|
+
// presenting a valid refresh token under the WRONG client learns
|
|
290
|
+
// nothing and changes nothing.
|
|
291
|
+
const [seen] = await this.deps.db
|
|
292
|
+
.select()
|
|
293
|
+
.from(oauthTokens)
|
|
294
|
+
.where(and(eq(oauthTokens.refreshTokenHash, hash), eq(oauthTokens.clientId, clientId)))
|
|
295
|
+
.limit(1);
|
|
296
|
+
if (!seen) return this.refuseRefresh('unknown refresh token for this client', 'Invalid or revoked refresh token', { clientId });
|
|
297
|
+
const rotatedAgoMs = seen.rotatedAt ? now.getTime() - seen.rotatedAt.getTime() : null;
|
|
298
|
+
const rotatedAgo = rotatedAgoMs === null ? null : `${Math.round(rotatedAgoMs / 1000)} s ago`;
|
|
299
|
+
if (seen.revokedAt) {
|
|
300
|
+
return this.refuseRefresh(
|
|
301
|
+
rotatedAgo ? `refresh token rotated ${rotatedAgo} and already replayed once, or revoked since` : 'refresh token revoked',
|
|
302
|
+
'Invalid or revoked refresh token',
|
|
303
|
+
seen,
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
if (rotatedAgoMs !== null && rotatedAgoMs > REFRESH_REUSE_GRACE_MS) {
|
|
307
|
+
return this.refuseRefresh(
|
|
308
|
+
`refresh token rotated ${rotatedAgo}, past the ${REFRESH_REUSE_GRACE_MS / 1000} s reuse grace`,
|
|
309
|
+
'Invalid or revoked refresh token',
|
|
310
|
+
seen,
|
|
311
|
+
);
|
|
282
312
|
}
|
|
283
|
-
if (
|
|
284
|
-
|
|
313
|
+
if (seen.refreshExpiresAt && seen.refreshExpiresAt <= now) {
|
|
314
|
+
return this.refuseRefresh('refresh token expired', 'Refresh token expired', seen);
|
|
285
315
|
}
|
|
286
316
|
// Scope may only narrow on refresh (RFC 6749 §6).
|
|
287
|
-
let scope =
|
|
317
|
+
let scope = seen.scope;
|
|
288
318
|
if (scopes?.length) {
|
|
289
|
-
const granted = new Set((
|
|
319
|
+
const granted = new Set((seen.scope ?? '').split(' ').filter(Boolean));
|
|
290
320
|
if (!scopes.every((s) => granted.has(s))) {
|
|
291
|
-
|
|
321
|
+
// `invalid_scope` to the client (RFC 6749 §5.2), since the token
|
|
322
|
+
// itself is fine — and untouched, so the same token refreshes with
|
|
323
|
+
// the scope it was granted.
|
|
324
|
+
return this.refuseRefresh(
|
|
325
|
+
'requested scope exceeds the originally granted scope',
|
|
326
|
+
'Requested scope exceeds the originally granted scope',
|
|
327
|
+
seen,
|
|
328
|
+
(message) => new InvalidScopeError(message),
|
|
329
|
+
);
|
|
292
330
|
}
|
|
293
331
|
scope = scopes.join(' ');
|
|
294
332
|
}
|
|
@@ -299,13 +337,115 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
299
337
|
// mint an unrevoked pair — the revoke undone by a millisecond. A token
|
|
300
338
|
// from before connections existed has none to stay on and is placed
|
|
301
339
|
// under one as a first mint would be.
|
|
302
|
-
if (
|
|
303
|
-
|
|
304
|
-
|
|
340
|
+
if (seen.connectionId && !(await this.isConnectionLive(seen.connectionId))) {
|
|
341
|
+
return this.refuseRefresh('access for this agent was revoked', 'Access for this agent was revoked', seen);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// Consume, with the state the row was judged in as the predicate, so two
|
|
345
|
+
// refreshes racing on one row have exactly one winner. A fresh token is
|
|
346
|
+
// RETIRED (`rotatedAt`), not revoked: its pair's access token stays good
|
|
347
|
+
// until its own expiry, an hour at most, so a runner still holding it is
|
|
348
|
+
// not cut off mid-task by a refresh another runner made, while a revoke
|
|
349
|
+
// or a sign-out still ends it at once. A token already retired within
|
|
350
|
+
// the reuse grace — the loser of a double refresh, which is what a client
|
|
351
|
+
// refreshing from two places at once produces — is honoured ONCE more,
|
|
352
|
+
// and the replay revokes the row in the same statement that admits it,
|
|
353
|
+
// so a third presentation, or two replays racing, find nothing. That does
|
|
354
|
+
// end the retired pair's access token: the runner that replayed holds the
|
|
355
|
+
// fresh pair from here, and the rotation's winner holds its own.
|
|
356
|
+
//
|
|
357
|
+
// The consume and the mint are ONE transaction: a token is retired or
|
|
358
|
+
// replayed only in the same commit that hands its holder the new pair, so
|
|
359
|
+
// a mint that fails leaves the token exactly as it was — never spent with
|
|
360
|
+
// nothing to show for it, which for a replayed token would be the lockout
|
|
361
|
+
// this whole path exists to prevent. A token from before connections
|
|
362
|
+
// existed is placed under one first, outside the transaction, as a first
|
|
363
|
+
// mint would place it: finding or making a connection is idempotent.
|
|
364
|
+
const connectionId = seen.connectionId ?? (await this.ensureConnection(seen.userId, seen.clientId));
|
|
365
|
+
// The opportunistic prune too runs BEFORE the transaction opens, on the
|
|
366
|
+
// pool: inside it, this request would hold a transaction's client while
|
|
367
|
+
// waiting for a second one, and a burst of refreshes the size of the pool
|
|
368
|
+
// would have every one of them wait out the connect timeout.
|
|
369
|
+
await this.pruneTokenTables(now.getTime());
|
|
370
|
+
const { consumed, tokens, replayed } = await this.deps.db.transaction(async (tx) => {
|
|
371
|
+
let row = rotatedAgoMs === null ? await this.retireFresh(tx, hash, clientId, now) : undefined;
|
|
372
|
+
let replayed = rotatedAgoMs !== null;
|
|
373
|
+
if (!row) {
|
|
374
|
+
// Either a retired token within the grace, or a fresh one that lost
|
|
375
|
+
// its rotation to a concurrent refresh between the read above and the
|
|
376
|
+
// retire — which makes it the loser of a double refresh, and so
|
|
377
|
+
// replayable now.
|
|
378
|
+
row = await this.replayRetired(tx, hash, clientId, now);
|
|
379
|
+
replayed = true;
|
|
380
|
+
}
|
|
381
|
+
if (!row) {
|
|
382
|
+
return this.refuseRefresh('refresh token rotated or revoked by a concurrent request', 'Invalid or revoked refresh token', seen);
|
|
305
383
|
}
|
|
306
|
-
this.
|
|
384
|
+
const tokens = await this.mintTokens(row.userId, row.clientId, scope, row.resource, connectionId, tx);
|
|
385
|
+
return { consumed: row, tokens, replayed };
|
|
386
|
+
});
|
|
387
|
+
if (replayed) {
|
|
388
|
+
log.info(
|
|
389
|
+
`refresh replayed ${Math.round((now.getTime() - consumed.rotatedAt!.getTime()) / 1000)} s after its rotation, within the reuse grace; a fresh pair is minted`,
|
|
390
|
+
{ clientId, connectionId, userId: consumed.userId },
|
|
391
|
+
);
|
|
307
392
|
}
|
|
308
|
-
|
|
393
|
+
this.noteConnectionUse(connectionId);
|
|
394
|
+
return tokens;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/** Retire a fresh refresh token: the one statement that wins a rotation. */
|
|
398
|
+
private async retireFresh(tx: Tx, hash: string, clientId: string, now: Date) {
|
|
399
|
+
const [row] = await tx
|
|
400
|
+
.update(oauthTokens)
|
|
401
|
+
.set({ rotatedAt: now })
|
|
402
|
+
.where(
|
|
403
|
+
and(
|
|
404
|
+
eq(oauthTokens.refreshTokenHash, hash),
|
|
405
|
+
eq(oauthTokens.clientId, clientId),
|
|
406
|
+
isNull(oauthTokens.revokedAt),
|
|
407
|
+
isNull(oauthTokens.rotatedAt),
|
|
408
|
+
),
|
|
409
|
+
)
|
|
410
|
+
.returning();
|
|
411
|
+
return row;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/** Consume a retired refresh token's one replay: revoked in the statement that admits it, within the grace only. */
|
|
415
|
+
private async replayRetired(tx: Tx, hash: string, clientId: string, now: Date) {
|
|
416
|
+
const since = new Date(now.getTime() - REFRESH_REUSE_GRACE_MS);
|
|
417
|
+
const [row] = await tx
|
|
418
|
+
.update(oauthTokens)
|
|
419
|
+
.set({ revokedAt: now })
|
|
420
|
+
.where(
|
|
421
|
+
and(
|
|
422
|
+
eq(oauthTokens.refreshTokenHash, hash),
|
|
423
|
+
eq(oauthTokens.clientId, clientId),
|
|
424
|
+
isNull(oauthTokens.revokedAt),
|
|
425
|
+
gt(oauthTokens.rotatedAt, since),
|
|
426
|
+
),
|
|
427
|
+
)
|
|
428
|
+
.returning();
|
|
429
|
+
return row;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* The one place a refresh is refused: logged with its reason, never the
|
|
434
|
+
* token, then the client's error — `invalid_grant` unless the caller says
|
|
435
|
+
* otherwise (a widened scope is `invalid_scope`).
|
|
436
|
+
*/
|
|
437
|
+
private refuseRefresh(
|
|
438
|
+
reason: string,
|
|
439
|
+
clientMessage: string,
|
|
440
|
+
row: { clientId: string; connectionId?: string | null; userId?: string },
|
|
441
|
+
error: (message: string) => Error = (message) => new InvalidGrantError(message),
|
|
442
|
+
): never {
|
|
443
|
+
log.warn(`refresh refused: ${reason}`, {
|
|
444
|
+
clientId: row.clientId,
|
|
445
|
+
connectionId: row.connectionId ?? null,
|
|
446
|
+
userId: row.userId ?? null,
|
|
447
|
+
});
|
|
448
|
+
throw error(clientMessage);
|
|
309
449
|
}
|
|
310
450
|
|
|
311
451
|
async verifyAccessToken(token: string): Promise<AuthInfo> {
|
|
@@ -413,10 +553,15 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
413
553
|
// back to re-authorise into the same one.)
|
|
414
554
|
const connectionId = revoked.find((r) => r.connectionId)?.connectionId;
|
|
415
555
|
if (!connectionId) return;
|
|
556
|
+
// A rotated row is not a live token: its successor is the live one, and
|
|
557
|
+
// counting it would keep a connection open on a refresh token nobody can
|
|
558
|
+
// use any more.
|
|
416
559
|
const [{ live }] = await this.deps.db
|
|
417
560
|
.select({ live: count() })
|
|
418
561
|
.from(oauthTokens)
|
|
419
|
-
.where(
|
|
562
|
+
.where(
|
|
563
|
+
and(eq(oauthTokens.connectionId, connectionId), isNull(oauthTokens.revokedAt), isNull(oauthTokens.rotatedAt)),
|
|
564
|
+
);
|
|
420
565
|
if (Number(live) > 0) return;
|
|
421
566
|
await this.deps.db
|
|
422
567
|
.update(agentConnections)
|
|
@@ -428,6 +573,12 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
428
573
|
* @param connectionId The agent connection the pair belongs to, when the
|
|
429
574
|
* caller already holds one (a refresh: the consumed token's). Absent on a
|
|
430
575
|
* first mint, which finds or makes the live connection for (user, client).
|
|
576
|
+
* @param tx The transaction the insert belongs to, when the mint must land
|
|
577
|
+
* with the statement that consumed the token it replaces (a refresh).
|
|
578
|
+
* The prune is then the caller's, before the transaction opens: a
|
|
579
|
+
* best-effort statement that fails inside a transaction would abort the
|
|
580
|
+
* mint it is meant to spare, and one on the pool from inside it would
|
|
581
|
+
* hold this request's client while waiting for another.
|
|
431
582
|
*/
|
|
432
583
|
private async mintTokens(
|
|
433
584
|
userId: string,
|
|
@@ -435,30 +586,17 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
435
586
|
scope: string | null,
|
|
436
587
|
resource: string | null,
|
|
437
588
|
connectionId?: string,
|
|
589
|
+
tx?: Tx,
|
|
438
590
|
): Promise<OAuthTokens> {
|
|
439
591
|
const accessToken = this.deps.tokenPrefix + randomBytes(TOKEN_BYTES).toString('base64url');
|
|
440
592
|
const refreshToken = this.refreshPrefix + randomBytes(TOKEN_BYTES).toString('base64url');
|
|
441
593
|
const now = Date.now();
|
|
442
|
-
//
|
|
443
|
-
//
|
|
444
|
-
|
|
445
|
-
// rows are kept until then, so revocation stays observable), and an auth
|
|
446
|
-
// code past its 60s TTL can never be exchanged. Best-effort — a cleanup
|
|
447
|
-
// hiccup must not fail the token issuance itself.
|
|
448
|
-
try {
|
|
449
|
-
const cutoff = new Date(now);
|
|
450
|
-
await this.deps.db.delete(oauthTokens).where(
|
|
451
|
-
or(
|
|
452
|
-
lt(oauthTokens.refreshExpiresAt, cutoff),
|
|
453
|
-
and(isNull(oauthTokens.refreshExpiresAt), lt(oauthTokens.expiresAt, cutoff)),
|
|
454
|
-
),
|
|
455
|
-
);
|
|
456
|
-
await this.deps.db.delete(oauthAuthCodes).where(lt(oauthAuthCodes.expiresAt, cutoff));
|
|
457
|
-
} catch (err) {
|
|
458
|
-
log.warn('token-table prune failed (non-fatal):', { err });
|
|
459
|
-
}
|
|
594
|
+
// A mint of its own (a sign-in) prunes here; a refresh pruned before its
|
|
595
|
+
// transaction opened.
|
|
596
|
+
if (!tx) await this.pruneTokenTables(now);
|
|
460
597
|
const boundTo = connectionId ?? (await this.ensureConnection(userId, clientId));
|
|
461
|
-
|
|
598
|
+
const sink: Tx | Database = tx ?? this.deps.db;
|
|
599
|
+
await sink.insert(oauthTokens).values({
|
|
462
600
|
accessTokenHash: hashToken(accessToken),
|
|
463
601
|
refreshTokenHash: hashToken(refreshToken),
|
|
464
602
|
clientId,
|
|
@@ -478,6 +616,34 @@ export class BevelOAuthProvider implements OAuthServerProvider {
|
|
|
478
616
|
};
|
|
479
617
|
}
|
|
480
618
|
|
|
619
|
+
/**
|
|
620
|
+
* Opportunistic pruning, piggybacked on every mint (one per sign-in /
|
|
621
|
+
* refresh — no scheduler needed) so the oauth tables stay bounded: a token
|
|
622
|
+
* row whose refresh window has closed can never authenticate again
|
|
623
|
+
* (revoked-but-live rows are kept until then, so revocation stays
|
|
624
|
+
* observable), a rotated row can authenticate for its access token's hour
|
|
625
|
+
* and be replayed for the reuse grace and past both is history only, and
|
|
626
|
+
* an auth code past its 60s TTL can never be exchanged. Best-effort, on the
|
|
627
|
+
* pool and never inside a transaction — a cleanup hiccup must not fail the
|
|
628
|
+
* token issuance itself.
|
|
629
|
+
*/
|
|
630
|
+
private async pruneTokenTables(now: number): Promise<void> {
|
|
631
|
+
try {
|
|
632
|
+
const cutoff = new Date(now);
|
|
633
|
+
const rotatedCutoff = new Date(now - ACCESS_TTL_MS - REFRESH_REUSE_GRACE_MS);
|
|
634
|
+
await this.deps.db.delete(oauthTokens).where(
|
|
635
|
+
or(
|
|
636
|
+
lt(oauthTokens.refreshExpiresAt, cutoff),
|
|
637
|
+
and(isNull(oauthTokens.refreshExpiresAt), lt(oauthTokens.expiresAt, cutoff)),
|
|
638
|
+
lt(oauthTokens.rotatedAt, rotatedCutoff),
|
|
639
|
+
),
|
|
640
|
+
);
|
|
641
|
+
await this.deps.db.delete(oauthAuthCodes).where(lt(oauthAuthCodes.expiresAt, cutoff));
|
|
642
|
+
} catch (err) {
|
|
643
|
+
log.warn('token-table prune failed (non-fatal):', { err });
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
|
|
481
647
|
/**
|
|
482
648
|
* The live `agent_connections` row for (user, client) — found, or made on
|
|
483
649
|
* the first mint for the pair. A refresh finds the row the sign-in made, so
|
|
@@ -4,7 +4,7 @@ import { logger } from '../../../shared/logging.js';
|
|
|
4
4
|
const log = logger('mcp-oauth');
|
|
5
5
|
import type { BevelOAuthProvider } from './bevel-oauth-provider.js';
|
|
6
6
|
import { verifyAuthRequest, type McpAuthRequestState } from './oauth-state.js';
|
|
7
|
-
import '../../auth/
|
|
7
|
+
import '../../auth/index.js'; // Express Request augmentation (req.userId / req.userEmail)
|
|
8
8
|
|
|
9
9
|
export interface OAuthConsentRoutesDeps {
|
|
10
10
|
provider: BevelOAuthProvider;
|
|
@@ -3,7 +3,7 @@ import type { AuthUser } from '@bevel-software/platform-shared';
|
|
|
3
3
|
import { logger } from '../../shared/logging.js';
|
|
4
4
|
import { WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
5
5
|
import type { IStarterPackService } from './onboarding.contract.js';
|
|
6
|
-
import '../auth/
|
|
6
|
+
import '../auth/index.js'; // Express Request augmentation (req.userId)
|
|
7
7
|
|
|
8
8
|
const log = logger('starter-packs');
|
|
9
9
|
|
|
@@ -64,11 +64,10 @@ import {
|
|
|
64
64
|
import { logger } from '../../shared/logging.js';
|
|
65
65
|
import { PushNeedsAgentResolutionError, WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
66
66
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
67
|
-
import type { IAdminAccessService } from '../admin/
|
|
68
|
-
import type { IAccessControl } from '../access/
|
|
69
|
-
import type { FileChangeNotifier } from '../kb-fs/
|
|
70
|
-
import { LockingFilesystem } from '../kb-fs/
|
|
71
|
-
import type { WorkspaceMutex } from '../kb-fs/mutex.js';
|
|
67
|
+
import type { IAdminAccessService } from '../admin/index.js';
|
|
68
|
+
import type { IAccessControl } from '../access/index.js';
|
|
69
|
+
import type { FileChangeNotifier, WorkspaceMutex } from '../kb-fs/index.js';
|
|
70
|
+
import { LockingFilesystem } from '../kb-fs/index.js';
|
|
72
71
|
import type { IFsProbe, ITreeWalker } from '../../shared/fs.contract.js';
|
|
73
72
|
import {
|
|
74
73
|
isUntouchedStarterPage,
|
|
@@ -76,7 +75,7 @@ import {
|
|
|
76
75
|
type FirstRunStarter,
|
|
77
76
|
type FirstRunStarterSource,
|
|
78
77
|
type MayRead,
|
|
79
|
-
} from '../workspace/
|
|
78
|
+
} from '../workspace/index.js';
|
|
80
79
|
import { pluginAccessMd, withCreatorGrants, type PluginSource } from '../plugins/index.js';
|
|
81
80
|
import {
|
|
82
81
|
NO_STARTER_PACK,
|
|
@@ -8,6 +8,7 @@ import { testKbContext } from '../../../__tests__/kb-context.js';
|
|
|
8
8
|
|
|
9
9
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
10
10
|
import { AccessControlService } from '../../access/access-control.service.js';
|
|
11
|
+
import { AccessMutationService } from '../../access/access-mutation.service.js';
|
|
11
12
|
import { SkillService } from '../../skills/skills.service.js';
|
|
12
13
|
import { ToolManualService } from '../../tool-manuals/tool-manuals.service.js';
|
|
13
14
|
import { workspaceIdForBranch } from '../../../shared/workspace-id.js';
|
|
@@ -103,7 +104,7 @@ describe('bundle dialect, end to end', () => {
|
|
|
103
104
|
links = new PluginLinkIndex(workspaceService, skills, access, kb, source);
|
|
104
105
|
index = new PluginIndexService(workspaceService, access, skills, tools, kb, source, Date.now, links);
|
|
105
106
|
compiler = new MarketplaceCompilerService(workspaceService, access, skills, links, kb, { name: 'acme', owner: 'Acme' }, source, disk, new NodeGitRunner());
|
|
106
|
-
linkService = new PluginLinksService(workspaceService, { runPendingCommit: async () => undefined }, access, skills, links, kb);
|
|
107
|
+
linkService = new PluginLinksService(workspaceService, { runPendingCommit: async () => undefined }, access, new AccessMutationService(workspaceService, access, kb.kbDirName), skills, links, kb);
|
|
107
108
|
});
|
|
108
109
|
afterEach(async () => {
|
|
109
110
|
await fs.rm(root, { recursive: true, force: true });
|
|
@@ -8,6 +8,7 @@ import { DEFAULT_BRANCH, withLinkedSkillRoots, type AuthUser } from '@bevel-soft
|
|
|
8
8
|
|
|
9
9
|
import type { WorkspaceService } from '../../workspace/workspace.service.js';
|
|
10
10
|
import { AccessControlService } from '../../access/access-control.service.js';
|
|
11
|
+
import { AccessMutationService } from '../../access/access-mutation.service.js';
|
|
11
12
|
import { SkillService } from '../../skills/skills.service.js';
|
|
12
13
|
import { workspaceIdForBranch } from '../../../shared/workspace-id.js';
|
|
13
14
|
import { PluginLinkIndex } from '../plugin-links.js';
|
|
@@ -98,7 +99,7 @@ describe('PluginLinksService', () => {
|
|
|
98
99
|
const kb = testKbContext({ kbDirName: KB_DIR });
|
|
99
100
|
skills = new SkillService(workspaceService, access, kb, disk);
|
|
100
101
|
index = new PluginLinkIndex(workspaceService, skills, access, kb, new KbPluginSource(disk, kb));
|
|
101
|
-
svc = new PluginLinksService(workspaceService, driver, access, skills, index, kb);
|
|
102
|
+
svc = new PluginLinksService(workspaceService, driver, access, new AccessMutationService(workspaceService, access, kb.kbDirName), skills, index, kb);
|
|
102
103
|
});
|
|
103
104
|
afterEach(() => fs.rm(root, { recursive: true, force: true }));
|
|
104
105
|
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
import { BUNDLE_FILE as BUNDLE_MANIFEST_FILE } from '../discovery/bundle-dialect/bundle.source.js';
|
|
12
12
|
import type { ITreeWalker } from '../../../shared/fs.contract.js';
|
|
13
13
|
import { containsVariableReference } from '../../../shared/variable-refs.js';
|
|
14
|
-
import { judgeMcpServerEntry } from '../../tool-manuals/
|
|
15
|
-
import type { SkillSummary } from '../../skills/
|
|
14
|
+
import { judgeMcpServerEntry } from '../../tool-manuals/index.js';
|
|
15
|
+
import type { SkillSummary } from '../../skills/index.js';
|
|
16
16
|
import type { LinkMembership } from '../plugin-links.js';
|
|
17
17
|
import type { DiscoveredPlugin } from '../discovery/plugin-source.js';
|
|
18
18
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import type { WorkspaceService } from '../../workspace/
|
|
3
|
-
import type { IAccessControl } from '../../access/
|
|
4
|
-
import type { ISkillService } from '../../skills/
|
|
2
|
+
import type { WorkspaceService } from '../../workspace/index.js';
|
|
3
|
+
import type { IAccessControl } from '../../access/index.js';
|
|
4
|
+
import type { ISkillService } from '../../skills/index.js';
|
|
5
5
|
import type { KbContext } from '../../../shared/kb-context.js';
|
|
6
6
|
import type { PluginLinkIndex } from '../plugin-links.js';
|
|
7
7
|
import type { PluginSource } from '../discovery/plugin-source.js';
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
judgeMcpServerEntry,
|
|
19
19
|
type PortableHttpEntry,
|
|
20
20
|
type PortableStdioEntry,
|
|
21
|
-
} from '../../../tool-manuals/
|
|
21
|
+
} from '../../../tool-manuals/index.js';
|
|
22
22
|
|
|
23
23
|
export interface RegistryServer {
|
|
24
24
|
/** The registry's own key: what a profile lists, unique across the file. */
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
parseOwnAccessEntries,
|
|
6
6
|
type ParsedEntry,
|
|
7
7
|
type Verb,
|
|
8
|
-
} from '../access-model/
|
|
9
|
-
import type { TargetKind } from '../access/
|
|
8
|
+
} from '../access-model/index.js';
|
|
9
|
+
import type { TargetKind } from '../access/index.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* What a join branch is PROPOSING, relative to the default branch.
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
type IWorkflowService,
|
|
6
6
|
} from '@bevel-software/platform-shared';
|
|
7
7
|
import { DrizzleQueryError } from 'drizzle-orm';
|
|
8
|
-
import { spliceGrant } from '../access-model/
|
|
9
|
-
import { sanitizeError } from '../workflow/
|
|
8
|
+
import { spliceGrant } from '../access-model/index.js';
|
|
9
|
+
import { sanitizeError } from '../workflow/index.js';
|
|
10
10
|
import { logger } from '../../shared/logging.js';
|
|
11
11
|
import { printable } from '../../shared/printable.js';
|
|
12
12
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
13
|
-
import type { WorkspaceService } from '../workspace/
|
|
13
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
14
14
|
import type {
|
|
15
15
|
ClaimedJoinRequest,
|
|
16
16
|
JoinRequestRecord,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { and, eq, inArray, isNotNull, sql } from 'drizzle-orm';
|
|
2
2
|
import type { ChangeRequestState } from '@bevel-software/platform-shared';
|
|
3
|
-
import type { Database } from '../database/
|
|
4
|
-
import { changeRequests, pluginJoinRequests } from '../database/
|
|
3
|
+
import type { Database } from '../database/index.js';
|
|
4
|
+
import { changeRequests, pluginJoinRequests } from '../database/index.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* A join request as the platform recorded it — the durable "this person
|
|
@@ -4,18 +4,18 @@ import {
|
|
|
4
4
|
type ChangeRequest,
|
|
5
5
|
type IWorkflowService,
|
|
6
6
|
} from '@bevel-software/platform-shared';
|
|
7
|
-
import { type WorkspaceService } from '../workspace/
|
|
7
|
+
import { type WorkspaceService } from '../workspace/index.js';
|
|
8
8
|
import { logger } from '../../shared/logging.js';
|
|
9
9
|
|
|
10
10
|
const log = logger('plugins');
|
|
11
11
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
12
|
-
import type { IAccessControl } from '../access/
|
|
12
|
+
import type { IAccessControl } from '../access/index.js';
|
|
13
13
|
import {
|
|
14
14
|
rulesFileFor,
|
|
15
15
|
type AccessRequestTarget,
|
|
16
16
|
type IAccessRequestLifecycle,
|
|
17
|
-
} from '../access/
|
|
18
|
-
import type { Verb } from '../access-model/
|
|
17
|
+
} from '../access/index.js';
|
|
18
|
+
import type { Verb } from '../access-model/index.js';
|
|
19
19
|
import { pendingProposals, type JoinProposal } from './join-proposals.js';
|
|
20
20
|
|
|
21
21
|
/** One open join change request, with what it still proposes. */
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
withLinkedSkillRoots,
|
|
11
11
|
type AuthUser,
|
|
12
12
|
} from '@bevel-software/platform-shared';
|
|
13
|
-
import type { WorkspaceService } from '../workspace/
|
|
13
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
14
14
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
15
|
-
import type { IAccessControl } from '../access/
|
|
16
|
-
import {
|
|
17
|
-
import { pluginPrincipalKey } from '../access-model/
|
|
18
|
-
import type { Principal } from '../access-model/
|
|
19
|
-
import { WorkspaceMutex } from '../kb-fs/
|
|
20
|
-
import type { ISkillService } from '../skills/
|
|
15
|
+
import type { IAccessControl, IAccessMutation } from '../access/index.js';
|
|
16
|
+
import { accessMdPathForFolder } from '../access/index.js';
|
|
17
|
+
import { pluginPrincipalKey } from '../access-model/index.js';
|
|
18
|
+
import type { Principal } from '../access-model/index.js';
|
|
19
|
+
import { WorkspaceMutex } from '../kb-fs/index.js';
|
|
20
|
+
import type { ISkillService } from '../skills/index.js';
|
|
21
21
|
import { logger } from '../../shared/logging.js';
|
|
22
22
|
import type { ProvisionCommitDriver } from './plugin-provision.service.js';
|
|
23
23
|
import type { PluginLinkIndex } from './plugin-links.js';
|
|
@@ -119,12 +119,13 @@ export class PluginLinkError extends Error {
|
|
|
119
119
|
*/
|
|
120
120
|
export class PluginLinksService {
|
|
121
121
|
private readonly locks = new WorkspaceMutex();
|
|
122
|
-
private readonly mutation: AccessMutationService;
|
|
123
122
|
|
|
124
123
|
constructor(
|
|
125
124
|
private readonly workspaceService: WorkspaceService,
|
|
126
125
|
private readonly commits: ProvisionCommitDriver,
|
|
127
126
|
private readonly accessControl: IAccessControl,
|
|
127
|
+
/** Grants and revokes the links' tokens; the composition root owns the implementation. */
|
|
128
|
+
private readonly mutation: IAccessMutation,
|
|
128
129
|
private readonly skillService: ISkillService,
|
|
129
130
|
private readonly links: PluginLinkIndex,
|
|
130
131
|
private readonly kb: KbContext,
|
|
@@ -132,9 +133,7 @@ export class PluginLinksService {
|
|
|
132
133
|
emit(event: { kind: 'fs-tree-changed'; workspaceId: string; branch: string }): void;
|
|
133
134
|
},
|
|
134
135
|
private readonly onChanged?: () => void,
|
|
135
|
-
) {
|
|
136
|
-
this.mutation = new AccessMutationService(workspaceService, accessControl, kb.kbDirName);
|
|
137
|
-
}
|
|
136
|
+
) {}
|
|
138
137
|
|
|
139
138
|
private get kbDirName(): string {
|
|
140
139
|
return this.kb.kbDirName;
|
|
@@ -3,12 +3,12 @@ import { logger } from '../../shared/logging.js';
|
|
|
3
3
|
|
|
4
4
|
const log = logger('plugins');
|
|
5
5
|
import { pluginManifestName, skillUnderRoot } from '@bevel-software/platform-shared';
|
|
6
|
-
import type { WorkspaceService } from '../workspace/
|
|
6
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
7
7
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
8
|
-
import type { IAccessControl } from '../access/
|
|
9
|
-
import type { ISkillService } from '../skills/
|
|
8
|
+
import type { IAccessControl } from '../access/index.js';
|
|
9
|
+
import type { ISkillService } from '../skills/index.js';
|
|
10
10
|
import { TtlCache } from '../../shared/ttl-cache.js';
|
|
11
|
-
import { canonicalRoleName, pluginPrincipalKey } from '../access-model/
|
|
11
|
+
import { canonicalRoleName, pluginPrincipalKey } from '../access-model/index.js';
|
|
12
12
|
import type { PluginMembership } from './plugins.contract.js';
|
|
13
13
|
import type { PluginSource } from './discovery/plugin-source.js';
|
|
14
14
|
|
|
@@ -51,11 +51,10 @@ import {
|
|
|
51
51
|
type AuthUser,
|
|
52
52
|
} from '@bevel-software/platform-shared';
|
|
53
53
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
54
|
-
import type { WorkspaceService } from '../workspace/
|
|
55
|
-
import type { IAccessControl } from '../access/
|
|
56
|
-
import { creatorPrincipal } from '../access-model/
|
|
57
|
-
import {
|
|
58
|
-
import { WorkspaceMutex } from '../kb-fs/mutex.js';
|
|
54
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
55
|
+
import type { IAccessControl } from '../access/index.js';
|
|
56
|
+
import { creatorPrincipal, spliceGrant } from '../access-model/index.js';
|
|
57
|
+
import { WorkspaceMutex } from '../kb-fs/index.js';
|
|
59
58
|
|
|
60
59
|
/** Commit machinery the provision rides — the pending-commit pipeline, run inline. */
|
|
61
60
|
export interface ProvisionCommitDriver {
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
import type { AuthUser } from '@bevel-software/platform-shared';
|
|
11
11
|
import { PushNeedsAgentResolutionError } from '../../shared/domain-errors.js';
|
|
12
12
|
import type { ITreeWalker, WalkListener } from '../../shared/fs.contract.js';
|
|
13
|
-
import type { IAccessControl } from '../access/
|
|
13
|
+
import type { IAccessControl } from '../access/index.js';
|
|
14
14
|
import {
|
|
15
15
|
PLUGIN_TOKEN_PREFIX,
|
|
16
16
|
canonicalPluginToken,
|
|
17
17
|
hasAccessFrontmatterExtension,
|
|
18
18
|
parsePluginPrincipalKey,
|
|
19
|
-
} from '../access-model/
|
|
20
|
-
import type { WorkspaceService } from '../workspace/
|
|
19
|
+
} from '../access-model/index.js';
|
|
20
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
21
21
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
22
22
|
import type { PluginSource } from './discovery/plugin-source.js';
|
|
23
23
|
|