@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
|
@@ -34,6 +34,8 @@ import { TemplateFilesStep } from '../modules/workspace/startup/steps/template-f
|
|
|
34
34
|
import { RolesYamlStep } from '../modules/workspace/startup/steps/roles-yaml.step.js';
|
|
35
35
|
import { buildSeedTree } from '../modules/workspace/startup/steps/seed-tree.js';
|
|
36
36
|
import { DeploymentSettingsService, retireMergedBranchesOn } from '../modules/settings/deployment-settings.service.js';
|
|
37
|
+
import { ToolReadOnlyHints } from '../modules/tool-registry/read-only-hints.js';
|
|
38
|
+
import type { IToolReadOnlyHints } from '../modules/tool-registry/read-only-hints.contract.js';
|
|
37
39
|
import { KbSyncService } from '../modules/kb-sync/kb-sync.service.js';
|
|
38
40
|
import { NodeFs } from '../modules/kb-fs/node-fs.js';
|
|
39
41
|
import { assertKbDirNameFree } from '../modules/kb-fs/repo-path.js';
|
|
@@ -67,7 +69,11 @@ import { createDownloadFetcherIdentifier } from '../modules/workspace/agent-down
|
|
|
67
69
|
import { WorkerPatternMatcher } from '../modules/workspace/bounded-matcher.js';
|
|
68
70
|
import type { IPatternMatcher } from '../modules/workspace/pattern-matcher.contract.js';
|
|
69
71
|
import type { Request } from 'express';
|
|
70
|
-
import {
|
|
72
|
+
import {
|
|
73
|
+
DocExtractService,
|
|
74
|
+
WorkerDocumentExtractor,
|
|
75
|
+
type IDocumentExtractor,
|
|
76
|
+
} from '../modules/workspace/index.js';
|
|
71
77
|
import { UuidSessionSink, type ISessionSink } from '../modules/workspace/session-sink.js';
|
|
72
78
|
import { AuthService } from '../modules/auth/auth.service.js';
|
|
73
79
|
import { AccountHooks, type IAccountHooks } from '../modules/auth/account-hooks.js';
|
|
@@ -75,6 +81,7 @@ import { AccountErasureService } from '../modules/auth/account-erasure.service.j
|
|
|
75
81
|
import { OidcAuthProvider, oidcSettingsFrom } from '../modules/auth/oidc-auth-provider.js';
|
|
76
82
|
import { createAuthMiddleware, readAuthCookie } from '../modules/auth/auth.middleware.js';
|
|
77
83
|
import { AccessControlService, loadActiveGroups } from '../modules/access/access-control.service.js';
|
|
84
|
+
import { AccessMutationService } from '../modules/access/access-mutation.service.js';
|
|
78
85
|
import { CreatorAccessService } from '../modules/access/creator-access.js';
|
|
79
86
|
import { ChangeReadGate } from '../modules/access/change-read-gate.js';
|
|
80
87
|
import { GroupsAdminService } from '../modules/access/groups-admin.service.js';
|
|
@@ -122,11 +129,12 @@ import { assertGitVersion } from '../modules/workflow/git/git-version.js';
|
|
|
122
129
|
import { DiffService } from '../modules/diff/diff.service.js';
|
|
123
130
|
import { ReviewWorkflowService } from '../modules/workflow/review-workflow/review-workflow.service.js';
|
|
124
131
|
import { FileLockService } from '../modules/workflow/file-lock.service.js';
|
|
125
|
-
import { WorkflowEventBus } from '../modules/workflow/
|
|
132
|
+
import { WorkflowEventBus } from '../modules/workflow/index.js';
|
|
126
133
|
import { FileChangeNotifier } from '../modules/kb-fs/file-change-notifier.js';
|
|
127
134
|
import { StarterPackService } from '../modules/onboarding/starter-pack.service.js';
|
|
128
135
|
import { WorkflowService } from '../modules/workflow/workflow.service.js';
|
|
129
136
|
import { WorkflowHooks } from '../modules/workflow/workflow-hooks.js';
|
|
137
|
+
import { ChangeRequestHooks, type IChangeRequestHooks } from '../modules/workflow/change-request-hooks.js';
|
|
130
138
|
import { PendingCommitsService } from '../modules/workflow/pending-commits.service.js';
|
|
131
139
|
import {
|
|
132
140
|
PendingCommitsWorker,
|
|
@@ -255,6 +263,8 @@ export interface CoreServices {
|
|
|
255
263
|
* download route can refuse a link presented by someone it was not issued to.
|
|
256
264
|
*/
|
|
257
265
|
agentDownloadFetcher: (req: Request) => Promise<string[]>;
|
|
266
|
+
/** Runs every document extraction off the request thread under a budget; its workers end when the graph stops. */
|
|
267
|
+
documentExtractor: IDocumentExtractor;
|
|
258
268
|
docExtractService: DocExtractService;
|
|
259
269
|
accessControl: AccessControlService;
|
|
260
270
|
creatorAccess: CreatorAccessService;
|
|
@@ -324,6 +334,12 @@ export interface CoreServices {
|
|
|
324
334
|
reviewWorkflowService: ReviewWorkflowService;
|
|
325
335
|
fileLockService: FileLockService;
|
|
326
336
|
workflowService: WorkflowService;
|
|
337
|
+
/**
|
|
338
|
+
* The seam for "a change request was opened": a deployment registers here
|
|
339
|
+
* how the reviewers are told (the cloud's mail, say), and the open's answer
|
|
340
|
+
* says whether somebody did. Core registers nothing.
|
|
341
|
+
*/
|
|
342
|
+
changeRequestHooks: IChangeRequestHooks;
|
|
327
343
|
/** Remote sync (`POST /api/sync`): a git host or pipeline makes the clones catch up. */
|
|
328
344
|
kbSyncService: KbSyncService;
|
|
329
345
|
eventBus: WorkflowEventBus;
|
|
@@ -392,6 +408,8 @@ export interface CoreServices {
|
|
|
392
408
|
/** The Audit log: what every connected agent and key called, and the revoke of an agent's grant. */
|
|
393
409
|
agentAuditService: AgentAuditService;
|
|
394
410
|
toolRegistry: ToolRegistry;
|
|
411
|
+
/** Each platform tool's and meta-tool's read-only hint, and an admin's overrides of them. */
|
|
412
|
+
readOnlyHints: IToolReadOnlyHints;
|
|
395
413
|
toolAuthMiddleware: ReturnType<typeof createToolAuthMiddleware>;
|
|
396
414
|
manualAuthMiddleware: ReturnType<typeof createManualAuthMiddleware>;
|
|
397
415
|
toolHandlerFactory: ReturnType<typeof createToolHandlerFactory>;
|
|
@@ -784,9 +802,9 @@ export async function createCoreServices(
|
|
|
784
802
|
// `<tenant>-down_`: recognisable by shape beside the upload token.
|
|
785
803
|
tokenPrefix: config.uploadTokenPrefix.replace(/up_$/, 'down_'),
|
|
786
804
|
});
|
|
787
|
-
//
|
|
788
|
-
//
|
|
789
|
-
const
|
|
805
|
+
// The worker threads every office/PDF/email extraction runs in, under a
|
|
806
|
+
// 10 s budget per file (see `WorkerDocumentExtractor`).
|
|
807
|
+
const documentExtractor = new WorkerDocumentExtractor();
|
|
790
808
|
// The deployment owner counts as Admin for the two hardcoded `write`
|
|
791
809
|
// rescues (`roles.yaml` and any `access.md`) — the SAME list
|
|
792
810
|
// `AdminAccessService` below is given, so the admin surfaces and the write
|
|
@@ -945,11 +963,23 @@ export async function createCoreServices(
|
|
|
945
963
|
// browser sessions. Single instance per Node process — survives across
|
|
946
964
|
// requests, doesn't survive restarts (clients reconnect + resync).
|
|
947
965
|
const eventBus = new WorkflowEventBus();
|
|
966
|
+
// Office-document/PDF/email text extraction for `read_file`/`grep`, cached
|
|
967
|
+
// by content hash beside the workspaces root (see `DocExtractionCache`),
|
|
968
|
+
// failures included. A fresh failure is told to the people looking at the
|
|
969
|
+
// file: the events route delivers it only to sessions that may read it.
|
|
970
|
+
const docExtractService = new DocExtractService(config.docExtractCacheRoot, documentExtractor, {
|
|
971
|
+
onUnreadable: ({ workspaceId, path, reason }) =>
|
|
972
|
+
eventBus.emit({ kind: 'document-unreadable', workspaceId, path, reason }),
|
|
973
|
+
});
|
|
948
974
|
// In-process post-commit hook (distinct from the SSE bus): fires once per
|
|
949
975
|
// committed change (batched paths) so catalogs refresh instantly and the
|
|
950
976
|
// id-repair keeps the id namespace collision-free. Subscribers are registered
|
|
951
977
|
// below, once the reacting services exist.
|
|
952
978
|
const fileChangeNotifier = new FileChangeNotifier();
|
|
979
|
+
// Who tells the reviewers of an opened change request: the composition root
|
|
980
|
+
// of a distribution registers its listener here, after this returns (see
|
|
981
|
+
// `ChangeRequestHooks`).
|
|
982
|
+
const changeRequestHooks = new ChangeRequestHooks();
|
|
953
983
|
const workflowService = new WorkflowService(
|
|
954
984
|
db,
|
|
955
985
|
gitService,
|
|
@@ -967,6 +997,11 @@ export async function createCoreServices(
|
|
|
967
997
|
// the agent-access gate consult, so a deployment's registrations against
|
|
968
998
|
// it reach every hook point.
|
|
969
999
|
workflowHooks,
|
|
1000
|
+
// Exposed as `changeRequestHooks`, the same instance, for the same reason.
|
|
1001
|
+
changeRequestHooks,
|
|
1002
|
+
// The opened event names the approvers as accounts; auth answers which
|
|
1003
|
+
// of the addresses the access model names have one.
|
|
1004
|
+
authService,
|
|
970
1005
|
);
|
|
971
1006
|
// The leftover-branch cleanup asks the Deployment page at every round, so
|
|
972
1007
|
// switching it off there applies without a restart.
|
|
@@ -1022,6 +1057,7 @@ export async function createCoreServices(
|
|
|
1022
1057
|
workspaceService,
|
|
1023
1058
|
workflowService,
|
|
1024
1059
|
accessControl,
|
|
1060
|
+
new AccessMutationService(workspaceService, accessControl, kb.kbDirName),
|
|
1025
1061
|
skillService,
|
|
1026
1062
|
pluginLinkIndex,
|
|
1027
1063
|
kb,
|
|
@@ -1370,6 +1406,8 @@ export async function createCoreServices(
|
|
|
1370
1406
|
// the setup save applies lands without a restart.
|
|
1371
1407
|
kbLayout: () => kb.layout,
|
|
1372
1408
|
secretsScope,
|
|
1409
|
+
// Read at listing time, by when the hints below exist.
|
|
1410
|
+
readOnlyOverrides: () => readOnlyHints.overrides(),
|
|
1373
1411
|
},
|
|
1374
1412
|
// Pre-dispatch per-user credential check: the vault answers "has this caller
|
|
1375
1413
|
// set it?" and the manual catalog answers "which user-scoped vars does this
|
|
@@ -1438,6 +1476,9 @@ export async function createCoreServices(
|
|
|
1438
1476
|
// `internalTokenService` minted above (shared with the agent factories) is
|
|
1439
1477
|
// the same one the tool-auth middleware verifies internal tokens against.
|
|
1440
1478
|
const toolRegistry = new ToolRegistry();
|
|
1479
|
+
// What MCP clients are told about each platform tool's effect: its write
|
|
1480
|
+
// declaration, or an admin's override from the Tools page.
|
|
1481
|
+
const readOnlyHints = new ToolReadOnlyHints(toolRegistry, settings);
|
|
1441
1482
|
const resolveToolContext = createToolContextResolver({
|
|
1442
1483
|
authService,
|
|
1443
1484
|
workspaceService,
|
|
@@ -1634,6 +1675,7 @@ export async function createCoreServices(
|
|
|
1634
1675
|
agentDownloadStore,
|
|
1635
1676
|
patternMatcher,
|
|
1636
1677
|
agentDownloadFetcher,
|
|
1678
|
+
documentExtractor,
|
|
1637
1679
|
docExtractService,
|
|
1638
1680
|
accessControl,
|
|
1639
1681
|
creatorAccess,
|
|
@@ -1668,6 +1710,7 @@ export async function createCoreServices(
|
|
|
1668
1710
|
reviewWorkflowService,
|
|
1669
1711
|
fileLockService,
|
|
1670
1712
|
workflowService,
|
|
1713
|
+
changeRequestHooks,
|
|
1671
1714
|
kbSyncService,
|
|
1672
1715
|
eventBus,
|
|
1673
1716
|
fileChangeNotifier,
|
|
@@ -1691,6 +1734,7 @@ export async function createCoreServices(
|
|
|
1691
1734
|
mcpResourceMetadataUrl,
|
|
1692
1735
|
agentAuditService,
|
|
1693
1736
|
toolRegistry,
|
|
1737
|
+
readOnlyHints,
|
|
1694
1738
|
toolAuthMiddleware,
|
|
1695
1739
|
manualAuthMiddleware,
|
|
1696
1740
|
toolHandlerFactory,
|
package/src/core/lifecycle.ts
CHANGED
|
@@ -454,6 +454,12 @@ export interface CoreStopDeps {
|
|
|
454
454
|
* caller that has not built one passes nothing.
|
|
455
455
|
*/
|
|
456
456
|
patternMatcher?: { close(): Promise<void> };
|
|
457
|
+
/**
|
|
458
|
+
* The document extractor, whose worker threads are this graph's own for the
|
|
459
|
+
* same reason: ended here, so no extraction worker outlives its graph.
|
|
460
|
+
* Optional like the matcher.
|
|
461
|
+
*/
|
|
462
|
+
documentExtractor?: { close(): Promise<void> };
|
|
457
463
|
/**
|
|
458
464
|
* The workflow service, for the tidy-up it runs after each sweep (closing
|
|
459
465
|
* empty requests, removing leftover branches): detached from whatever
|
|
@@ -591,6 +597,10 @@ async function releaseCore(deps: CoreStopDeps, remaining: () => number, log: (m:
|
|
|
591
597
|
if (deps.patternMatcher) {
|
|
592
598
|
await bounded(deps.patternMatcher.close(), remaining(), 'ending the search workers', log);
|
|
593
599
|
}
|
|
600
|
+
// Likewise: an extraction still running is answered busy, and nothing about its file is remembered.
|
|
601
|
+
if (deps.documentExtractor) {
|
|
602
|
+
await bounded(deps.documentExtractor.close(), remaining(), 'ending the extraction workers', log);
|
|
603
|
+
}
|
|
594
604
|
await bounded(deps.commitWorker.stop(), remaining(), 'stopping the commit worker', log);
|
|
595
605
|
if (deps.secretsScope !== undefined) unregisterBevelSecretsVariableLoader(deps.secretsScope);
|
|
596
606
|
await bounded(closeDb(deps.db), remaining(), 'ending the database pool', log);
|
|
@@ -85,5 +85,15 @@ export function publicConfig(kb: KbContext, { marketplaceGitUrl, mcpUrl }: Publi
|
|
|
85
85
|
* there.
|
|
86
86
|
*/
|
|
87
87
|
catalogRevision: true as const,
|
|
88
|
+
/**
|
|
89
|
+
* This deployment serves `GET /api/agent/tool-hints`, the read-only hint
|
|
90
|
+
* of every platform tool and code-mode meta-tool (see
|
|
91
|
+
* modules/tool-registry/read-only-hints.ts). The local `hexis-mcp` bridge
|
|
92
|
+
* reads it on every `tools/list` only when this is advertised — on the
|
|
93
|
+
* same terms as the two flags above: an older deployment answers the
|
|
94
|
+
* unknown route with 401, and an OAuth bridge reads a 401 as an expired
|
|
95
|
+
* token and refreshes its sign-in on every listing.
|
|
96
|
+
*/
|
|
97
|
+
toolHints: true as const,
|
|
88
98
|
};
|
|
89
99
|
}
|
package/src/index.ts
CHANGED
|
@@ -151,3 +151,10 @@ export {
|
|
|
151
151
|
type AgentReadHook,
|
|
152
152
|
type PreWriteHook,
|
|
153
153
|
} from './modules/workflow/workflow-hooks.js';
|
|
154
|
+
export {
|
|
155
|
+
ChangeRequestHooks,
|
|
156
|
+
type ChangeRequestOpenedEvent,
|
|
157
|
+
type ChangeRequestOpenedHook,
|
|
158
|
+
type ChangeRequestPerson,
|
|
159
|
+
type IChangeRequestHooks,
|
|
160
|
+
} from './modules/workflow/change-request-hooks.js';
|
|
@@ -49,7 +49,8 @@ interface HarnessOpts {
|
|
|
49
49
|
lastClosed?: { number: number; state: 'closed' | 'merged' } | null;
|
|
50
50
|
liveRules?: string | null;
|
|
51
51
|
branchRules?: string | null;
|
|
52
|
-
|
|
52
|
+
/** What `getChangeRequestDetail` answers for every request: the body, and the access request's own facts. */
|
|
53
|
+
detail?: { body?: string; accessRequest?: { level: 'write' | 'owner'; note?: string } };
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
async function makeHarness(opts: HarnessOpts = {}) {
|
|
@@ -62,7 +63,7 @@ async function makeHarness(opts: HarnessOpts = {}) {
|
|
|
62
63
|
lastClosed = null,
|
|
63
64
|
liveRules = '---\n---\nwrite:\n - Ed <ed@x.io>\n',
|
|
64
65
|
branchRules = null,
|
|
65
|
-
|
|
66
|
+
detail = {},
|
|
66
67
|
} = opts;
|
|
67
68
|
|
|
68
69
|
const absent = Object.assign(new Error('ENOENT'), { code: 'ENOENT' });
|
|
@@ -92,7 +93,7 @@ async function makeHarness(opts: HarnessOpts = {}) {
|
|
|
92
93
|
}),
|
|
93
94
|
latestClosedChangeRequest: vi.fn(async () => lastClosed),
|
|
94
95
|
getChangeRequest: vi.fn(async (n: number) => ({ number: n, state: 'open' })),
|
|
95
|
-
getChangeRequestDetail: vi.fn(async () => ({ body:
|
|
96
|
+
getChangeRequestDetail: vi.fn(async () => ({ body: '', ...detail })),
|
|
96
97
|
} as unknown as IWorkflowService;
|
|
97
98
|
|
|
98
99
|
const workspaceService = {
|
|
@@ -345,13 +346,14 @@ describe('GET /workspace/:id/access/request — what the requester is told', ()
|
|
|
345
346
|
it('reports the open request, taking the level off the REQUEST rather than the branch', async () => {
|
|
346
347
|
// The branch is where the proposal lives, but a clone whose refs are
|
|
347
348
|
// seconds stale cannot read a branch cut moments ago. "Requested: Owner"
|
|
348
|
-
// is a promise about a request, so it is answered from the request
|
|
349
|
-
// the branch is deliberately unreadable and the line is still
|
|
349
|
+
// is a promise about a request, so it is answered from the request's own
|
|
350
|
+
// row — here the branch is deliberately unreadable and the line is still
|
|
351
|
+
// right.
|
|
350
352
|
const branch = joinBranchFor(RITA.email, FOLDER);
|
|
351
353
|
const h = await makeHarness({
|
|
352
354
|
openCrs: [{ number: 31, branch, state: 'open' }],
|
|
353
355
|
proposals: null,
|
|
354
|
-
|
|
356
|
+
detail: { body: 'Rita asked for Owner.', accessRequest: { level: 'owner' } },
|
|
355
357
|
});
|
|
356
358
|
server = h.server;
|
|
357
359
|
expect(await (await status(h)).json()).toEqual({ state: 'pending', level: 'owner', number: 31 });
|
|
@@ -361,7 +363,7 @@ describe('GET /workspace/:id/access/request — what the requester is told', ()
|
|
|
361
363
|
const branch = joinBranchFor(RITA.email, FOLDER);
|
|
362
364
|
const h = await makeHarness({
|
|
363
365
|
openCrs: [{ number: 31, branch, state: 'open' }],
|
|
364
|
-
|
|
366
|
+
detail: { body: 'Opened before the level was recorded.' },
|
|
365
367
|
});
|
|
366
368
|
server = h.server;
|
|
367
369
|
expect(await (await status(h)).json()).toMatchObject({ state: 'pending', level: 'write' });
|
|
@@ -410,12 +412,14 @@ describe('the editors\' side', () => {
|
|
|
410
412
|
const listUrl = (base: string) =>
|
|
411
413
|
`${base}/${LIVE_WS}/access/requests?path=${encodeURIComponent(`${KB}/${FOLDER}`)}&kind=folder`;
|
|
412
414
|
|
|
413
|
-
it(
|
|
415
|
+
it("lists the item's open requests for an editor, with the note off the request's own row", async () => {
|
|
414
416
|
const h = await makeHarness({
|
|
415
417
|
writable: [`${FOLDER}/access.md`],
|
|
416
418
|
proposals: [proposalFor('owner')],
|
|
417
|
-
|
|
418
|
-
'x\n\n
|
|
419
|
+
detail: {
|
|
420
|
+
body: 'x\n\nNote from Rita:\n\n> I maintain these pages now',
|
|
421
|
+
accessRequest: { level: 'owner', note: 'I maintain these pages now' },
|
|
422
|
+
},
|
|
419
423
|
});
|
|
420
424
|
server = h.server;
|
|
421
425
|
const body = await (await fetch(listUrl(h.base))).json();
|
|
@@ -565,19 +569,29 @@ describe('a branch left over from an answered request', () => {
|
|
|
565
569
|
// request asking for Owner.
|
|
566
570
|
const h = await makeHarness({
|
|
567
571
|
openCrs: [{ number: 31, branch: stale, state: 'open' }],
|
|
568
|
-
|
|
572
|
+
detail: { accessRequest: { level: 'owner' } },
|
|
569
573
|
});
|
|
570
574
|
server = h.server;
|
|
571
575
|
const res = await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'write' });
|
|
572
576
|
expect(await res.json()).toEqual({ ok: true, state: 'pending', number: 31, level: 'owner' });
|
|
573
577
|
});
|
|
574
578
|
|
|
575
|
-
it('records the level on the request itself,
|
|
579
|
+
it('records the level and the note on the request itself, never hidden in its description', async () => {
|
|
576
580
|
const h = await makeHarness();
|
|
577
581
|
server = h.server;
|
|
578
|
-
await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'owner' });
|
|
579
|
-
const { description } = h.opened[0] as { description: string };
|
|
580
|
-
expect(
|
|
582
|
+
await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'owner', note: 'For the Q3 review' });
|
|
583
|
+
const { description, accessRequest } = h.opened[0] as { description: string; accessRequest: unknown };
|
|
584
|
+
expect(accessRequest).toEqual({ level: 'owner', note: 'For the Q3 review' });
|
|
585
|
+
// The description is prose for the people who read it: no marker, no fence.
|
|
586
|
+
expect(description).not.toMatch(/<!--/);
|
|
587
|
+
expect(description).toContain('For the Q3 review');
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
it('records no note when none was written', async () => {
|
|
591
|
+
const h = await makeHarness();
|
|
592
|
+
server = h.server;
|
|
593
|
+
await post(`${h.base}/${LIVE_WS}/access/request`, { ...folderBody, level: 'write' });
|
|
594
|
+
expect((h.opened[0] as { accessRequest: unknown }).accessRequest).toEqual({ level: 'write' });
|
|
581
595
|
});
|
|
582
596
|
});
|
|
583
597
|
|
|
@@ -7,9 +7,9 @@ const log = logger('access');
|
|
|
7
7
|
import { isAbsence, type ITreeWalker, type WalkListener } from '../../shared/fs.contract.js';
|
|
8
8
|
import { assertOneSpecPerLine, isCommitSha, isGitTimeout, type IGitRunner } from '../../shared/git.contract.js';
|
|
9
9
|
import { hashEmail } from '../../shared/email-identity.js';
|
|
10
|
-
import { NodeGitRunner } from '../workflow/
|
|
10
|
+
import { NodeGitRunner } from '../workflow/index.js';
|
|
11
11
|
import { readRevSha } from '../kb-fs/index.js';
|
|
12
|
-
import type { WorkspaceService } from '../workspace/
|
|
12
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
13
13
|
import type {
|
|
14
14
|
IAccessControl,
|
|
15
15
|
AccessDecision,
|
|
@@ -32,14 +32,13 @@ import {
|
|
|
32
32
|
platformRestoreDestination,
|
|
33
33
|
} from '@bevel-software/platform-shared';
|
|
34
34
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
35
|
-
import { AccessConfigError, AccessUnreadableError } from '../access-model/
|
|
36
|
-
import { synthesizePluginPrincipals } from '../access-model/plugin-principals.js';
|
|
35
|
+
import { AccessConfigError, AccessUnreadableError, synthesizePluginPrincipals } from '../access-model/index.js';
|
|
37
36
|
import {
|
|
38
37
|
GROUPS_YAML,
|
|
39
38
|
SYNCED_GROUPS_YAML,
|
|
40
39
|
parseGroupsFile,
|
|
41
40
|
type GroupsIndex,
|
|
42
|
-
} from '../access-model/
|
|
41
|
+
} from '../access-model/index.js';
|
|
43
42
|
import {
|
|
44
43
|
ADMIN_CANONICAL,
|
|
45
44
|
EVERYONE_CANONICAL,
|
|
@@ -61,7 +60,7 @@ import {
|
|
|
61
60
|
type ParsedEntry,
|
|
62
61
|
type RolesIndex,
|
|
63
62
|
type Verb,
|
|
64
|
-
} from '../access-model/
|
|
63
|
+
} from '../access-model/index.js';
|
|
65
64
|
import {
|
|
66
65
|
DIRECTORY_SYNC_BOT_EMAIL,
|
|
67
66
|
DIRECTORY_SYNC_BOT_NAME,
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
import path from 'node:path';
|
|
37
37
|
|
|
38
|
-
import type { WorkspaceService } from '../workspace/
|
|
38
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
39
39
|
import type { IAccessControl } from './access-control.interface.js';
|
|
40
40
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
41
|
-
import { isTextBytes } from '../workspace/
|
|
41
|
+
import { isTextBytes } from '../workspace/index.js';
|
|
42
42
|
import {
|
|
43
43
|
type Verb,
|
|
44
44
|
ADMIN_CANONICAL,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
ROLE_TOKEN_PREFIX,
|
|
47
47
|
canonicalRoleName,
|
|
48
48
|
accessFrontmatterExtensionList,
|
|
49
|
-
} from '../access-model/
|
|
49
|
+
} from '../access-model/index.js';
|
|
50
50
|
import {
|
|
51
51
|
spliceRevoke,
|
|
52
52
|
spliceGrant,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
AccessSpliceError,
|
|
55
55
|
type Principal,
|
|
56
56
|
type TokenMatch,
|
|
57
|
-
} from '../access-model/
|
|
57
|
+
} from '../access-model/index.js';
|
|
58
58
|
import { WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
59
59
|
import {
|
|
60
60
|
canCarryFrontmatter,
|
|
@@ -610,3 +610,9 @@ export class AccessMutationService {
|
|
|
610
610
|
return new AccessMutationError(err instanceof Error ? err.message : 'mutation failed', 500);
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* What another module needs of the mutation service: to grant and to revoke.
|
|
616
|
+
* Injected by the composition root, which owns the implementation.
|
|
617
|
+
*/
|
|
618
|
+
export type IAccessMutation = Pick<AccessMutationService, 'grant' | 'revoke'>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AuthUser, ChangeRequest } from '@bevel-software/platform-shared';
|
|
2
|
-
import type { Verb } from '../access-model/
|
|
2
|
+
import type { Verb } from '../access-model/index.js';
|
|
3
3
|
import { accessMdPathForFolder, type TargetKind } from './access-mutation.service.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
-
import type { AuthUser } from '@bevel-software/platform-shared';
|
|
3
|
-
import type { IWorkflowService } from '@bevel-software/platform-shared';
|
|
2
|
+
import type { AuthUser, IWorkflowService } from '@bevel-software/platform-shared';
|
|
4
3
|
import { logger } from '../../shared/logging.js';
|
|
5
4
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
6
5
|
import { branchForWorkspaceId } from '../../shared/workspace-id.js';
|
|
7
|
-
import type { AuthService } from '../auth/
|
|
8
|
-
import type { WorkspaceService } from '../workspace/
|
|
6
|
+
import type { AuthService } from '../auth/index.js';
|
|
7
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
9
8
|
import type { IAccessControl } from './access-control.interface.js';
|
|
10
9
|
import {
|
|
11
10
|
AccessMutationError,
|
|
@@ -22,12 +21,8 @@ import {
|
|
|
22
21
|
type AccessRequestTarget,
|
|
23
22
|
type IAccessRequestLifecycle,
|
|
24
23
|
} from './access-requests.contract.js';
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
extractRequestNote,
|
|
28
|
-
itemNameOf,
|
|
29
|
-
} from './access-requests.service.js';
|
|
30
|
-
import '../auth/auth.middleware.js'; // Express Request.userId augmentation
|
|
24
|
+
import { AccessRequestsService, itemNameOf } from './access-requests.service.js';
|
|
25
|
+
import '../auth/index.js'; // Express Request.userId augmentation
|
|
31
26
|
|
|
32
27
|
const log = logger('access.request');
|
|
33
28
|
|
|
@@ -235,16 +230,16 @@ export function createAccessRequestRoutes(deps: {
|
|
|
235
230
|
}
|
|
236
231
|
const crs = await workflow.listChangeRequests();
|
|
237
232
|
const rows = await lifecycle.list(target.path, target, crs, user);
|
|
238
|
-
// The note
|
|
239
|
-
//
|
|
240
|
-
//
|
|
241
|
-
//
|
|
233
|
+
// The note is the request's own column, read back per request.
|
|
234
|
+
// Bounded by the open requests on ONE item — a handful at most — and a
|
|
235
|
+
// detail that cannot be fetched costs the note, never the line it
|
|
236
|
+
// belongs to.
|
|
242
237
|
const withNotes = await Promise.all(
|
|
243
238
|
rows.map(async (row) => {
|
|
244
239
|
const detail = await workflow
|
|
245
240
|
.getChangeRequestDetail(row.number, { patches: false })
|
|
246
241
|
.catch(() => null);
|
|
247
|
-
const note =
|
|
242
|
+
const note = detail?.accessRequest?.note;
|
|
248
243
|
return note ? { ...row, note } : row;
|
|
249
244
|
}),
|
|
250
245
|
);
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
} from '../../shared/domain-errors.js';
|
|
11
11
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
12
12
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
13
|
-
import { spliceGrant } from '../access-model/
|
|
14
|
-
import type { WorkspaceService } from '../workspace/
|
|
13
|
+
import { spliceGrant } from '../access-model/index.js';
|
|
14
|
+
import type { WorkspaceService } from '../workspace/index.js';
|
|
15
15
|
import { logger } from '../../shared/logging.js';
|
|
16
16
|
import { AccessMutationError } from './access-mutation.service.js';
|
|
17
17
|
import {
|
|
@@ -50,7 +50,7 @@ export function itemNameOf(repoRelPath: string): string {
|
|
|
50
50
|
/**
|
|
51
51
|
* Neutralise every character a markdown renderer would read as structure.
|
|
52
52
|
*
|
|
53
|
-
* The note is somebody's free text and it
|
|
53
|
+
* The note is somebody's free text and it is quoted in a change request's
|
|
54
54
|
* description, which IS rendered. Escaping it is what makes "plain text" true:
|
|
55
55
|
* without this a note can carry a heading, a link, or an image pointing at a
|
|
56
56
|
* URL that logs whoever opens the request.
|
|
@@ -59,64 +59,6 @@ export function escapeMarkdown(text: string): string {
|
|
|
59
59
|
return text.replace(/[\\`*_{}[\]()#+\-.!|<>~]/g, (c) => `\\${c}`);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
/** The exact inverse of {@link escapeMarkdown} — only our own backslashes go. */
|
|
63
|
-
function unescapeMarkdown(text: string): string {
|
|
64
|
-
return text.replace(/\\([\\`*_{}[\]()#+\-.!|<>~])/g, '$1');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* The fence the note sits behind in a request's description.
|
|
69
|
-
*
|
|
70
|
-
* The description is the note's only home — there is no column for it — so the
|
|
71
|
-
* editors' banner has to read it back out of prose. Marking the block means
|
|
72
|
-
* that read is exact rather than a guess at which paragraph was the note, and
|
|
73
|
-
* an HTML comment is invisible in every surface that renders the description.
|
|
74
|
-
*/
|
|
75
|
-
const NOTE_OPEN = '<!--hexis:access-request-note-->';
|
|
76
|
-
const NOTE_CLOSE = '<!--/hexis:access-request-note-->';
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* The level, recorded on the change request itself.
|
|
80
|
-
*
|
|
81
|
-
* The branch says what is proposed, but only while it can be read — and a
|
|
82
|
-
* clone whose refs are a few seconds stale cannot read a branch cut moments
|
|
83
|
-
* ago. The request's own row always can. "Requested: <level>" is a promise
|
|
84
|
-
* about a request, so it is answered from the request, not from a file at a
|
|
85
|
-
* ref that may not have arrived yet.
|
|
86
|
-
*/
|
|
87
|
-
const LEVEL_MARK = /<!--hexis:access-request-level:(write|owner)-->/;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The requester's own words, back out of a request's description, or
|
|
91
|
-
* undefined when they wrote none. Unescaped exactly as they were escaped, so
|
|
92
|
-
* what the banner shows is what was typed.
|
|
93
|
-
*/
|
|
94
|
-
/**
|
|
95
|
-
* The level a request asks for, off its own description. Undefined for a
|
|
96
|
-
* request opened before this marker existed — those are the skill route's,
|
|
97
|
-
* and the skill route only ever asked for `write`.
|
|
98
|
-
*/
|
|
99
|
-
export function extractRequestLevel(body: string | null | undefined): RequestLevel | undefined {
|
|
100
|
-
const hit = body ? LEVEL_MARK.exec(body) : null;
|
|
101
|
-
return hit ? (hit[1] as RequestLevel) : undefined;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function extractRequestNote(body: string | null | undefined): string | undefined {
|
|
105
|
-
if (!body) return undefined;
|
|
106
|
-
const start = body.indexOf(NOTE_OPEN);
|
|
107
|
-
if (start < 0) return undefined;
|
|
108
|
-
const end = body.indexOf(NOTE_CLOSE, start);
|
|
109
|
-
if (end < 0) return undefined;
|
|
110
|
-
const note = body
|
|
111
|
-
.slice(start + NOTE_OPEN.length, end)
|
|
112
|
-
.split(/\r?\n/)
|
|
113
|
-
.filter((line) => line.startsWith('>'))
|
|
114
|
-
.map((line) => unescapeMarkdown(line.replace(/^>\s?/, '')))
|
|
115
|
-
.join('\n')
|
|
116
|
-
.trim();
|
|
117
|
-
return note || undefined;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
62
|
/**
|
|
121
63
|
* Asking for Can edit or Owner on ONE item, and reading back what came of it.
|
|
122
64
|
*
|
|
@@ -261,11 +203,15 @@ export class AccessRequestsService {
|
|
|
261
203
|
}
|
|
262
204
|
|
|
263
205
|
try {
|
|
206
|
+
// The level and the note are the request's own columns — what the
|
|
207
|
+
// dialog and the editors' banner read back. The description is for the
|
|
208
|
+
// people who read the request, and says the same things in prose.
|
|
264
209
|
const detail = await workflow.openChangeRequest(ws.id, user, {
|
|
265
210
|
sourceBranch: branch,
|
|
266
211
|
targetBranch: kb.defaultBranch,
|
|
267
212
|
title: `Access request: ${itemName}`,
|
|
268
213
|
description: this.describe({ user, target, level, note }),
|
|
214
|
+
accessRequest: { level, ...(note ? { note } : {}) },
|
|
269
215
|
});
|
|
270
216
|
return { number: detail.number, level };
|
|
271
217
|
} catch (err) {
|
|
@@ -331,18 +277,21 @@ export class AccessRequestsService {
|
|
|
331
277
|
}
|
|
332
278
|
|
|
333
279
|
/**
|
|
334
|
-
* The level change request `number` asks for, off
|
|
280
|
+
* The level change request `number` asks for, off the request's own row.
|
|
335
281
|
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
*
|
|
282
|
+
* The branch says what is proposed, but only while it can be read — and a
|
|
283
|
+
* clone whose refs are a few seconds stale cannot read a branch cut moments
|
|
284
|
+
* ago. The request's row always can. `write` when the row does not say:
|
|
285
|
+
* every request that predates the column came from the skill page's
|
|
286
|
+
* "Request write access", which asks for exactly that. A detail that cannot
|
|
287
|
+
* be fetched falls there too — the line it feeds says which level was asked
|
|
288
|
+
* for, and Can edit is the lesser claim.
|
|
340
289
|
*/
|
|
341
290
|
private async levelOf(number: number): Promise<RequestLevel> {
|
|
342
291
|
const detail = await this.deps.workflow
|
|
343
292
|
.getChangeRequestDetail(number, { patches: false })
|
|
344
293
|
.catch(() => null);
|
|
345
|
-
return
|
|
294
|
+
return detail?.accessRequest?.level ?? 'write';
|
|
346
295
|
}
|
|
347
296
|
|
|
348
297
|
/**
|
|
@@ -390,7 +339,12 @@ export class AccessRequestsService {
|
|
|
390
339
|
}
|
|
391
340
|
}
|
|
392
341
|
|
|
393
|
-
/**
|
|
342
|
+
/**
|
|
343
|
+
* The description an editor reads: who, what, where, the note, and how to
|
|
344
|
+
* answer. Prose only — the level and the note the platform reads back are
|
|
345
|
+
* the request's own columns, so nothing hidden is written here and an edit
|
|
346
|
+
* of the description loses nothing.
|
|
347
|
+
*/
|
|
394
348
|
private describe(input: {
|
|
395
349
|
user: AuthUser;
|
|
396
350
|
target: AccessRequestTarget;
|
|
@@ -400,14 +354,12 @@ export class AccessRequestsService {
|
|
|
400
354
|
const { user, target, level, note } = input;
|
|
401
355
|
const who = escapeMarkdown(user.name || user.email);
|
|
402
356
|
const lines = [
|
|
403
|
-
`<!--hexis:access-request-level:${level}-->`,
|
|
404
357
|
`${who} (${escapeMarkdown(user.email)}) asked for **${LEVEL_LABEL[level]}** on ` +
|
|
405
358
|
`${escapeMarkdown(target.path || 'the workspace')}.`,
|
|
406
359
|
];
|
|
407
360
|
if (note) {
|
|
408
|
-
lines.push('', `Note from ${who}:`, ''
|
|
361
|
+
lines.push('', `Note from ${who}:`, '');
|
|
409
362
|
for (const line of note.split(/\r?\n/)) lines.push(`> ${escapeMarkdown(line)}`);
|
|
410
|
-
lines.push(NOTE_CLOSE);
|
|
411
363
|
}
|
|
412
364
|
lines.push(
|
|
413
365
|
'',
|
|
@@ -418,3 +370,9 @@ export class AccessRequestsService {
|
|
|
418
370
|
return lines.join('\n');
|
|
419
371
|
}
|
|
420
372
|
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* What another module needs of the access-request service: to open one.
|
|
376
|
+
* Injected by the composition root, which owns the implementation.
|
|
377
|
+
*/
|
|
378
|
+
export type IAccessRequests = Pick<AccessRequestsService, 'open'>;
|