@bevel-software/platform-core-backend 0.33.0 → 0.34.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 +19 -8
- package/agent-guide/html-views.md +231 -5
- package/agent-guide/tool-manuals.md +1 -1
- package/dist/core/catalog-revision.d.ts +12 -1
- package/dist/core/catalog-revision.d.ts.map +1 -1
- package/dist/core/catalog-revision.js +23 -3
- package/dist/core/catalog-revision.js.map +1 -1
- package/dist/core/core-ports.d.ts +41 -0
- package/dist/core/core-ports.d.ts.map +1 -1
- package/dist/core/core-ports.js.map +1 -1
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +14 -7
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +16 -5
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +37 -12
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +16 -0
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +12 -2
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/access/access-control.interface.d.ts +17 -9
- package/dist/modules/access/access-control.interface.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +12 -2
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +164 -75
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access-mutation.service.d.ts +22 -24
- package/dist/modules/access/access-mutation.service.d.ts.map +1 -1
- package/dist/modules/access/access-mutation.service.js +48 -51
- package/dist/modules/access/access-mutation.service.js.map +1 -1
- package/dist/modules/access/access-view.d.ts.map +1 -1
- package/dist/modules/access/access-view.js +12 -11
- package/dist/modules/access/access-view.js.map +1 -1
- package/dist/modules/access/access.routes.d.ts +3 -0
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +35 -29
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/access/groups-admin.routes.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.routes.js +4 -2
- package/dist/modules/access/groups-admin.routes.js.map +1 -1
- package/dist/modules/access/groups-admin.service.d.ts +44 -13
- package/dist/modules/access/groups-admin.service.d.ts.map +1 -1
- package/dist/modules/access/groups-admin.service.js +80 -38
- package/dist/modules/access/groups-admin.service.js.map +1 -1
- package/dist/modules/access/groups-edit.d.ts +1 -1
- package/dist/modules/access/groups-edit.d.ts.map +1 -1
- package/dist/modules/access/groups-edit.js +1 -1
- package/dist/modules/access/groups-edit.js.map +1 -1
- package/dist/modules/access/reference-scan.d.ts +116 -24
- package/dist/modules/access/reference-scan.d.ts.map +1 -1
- package/dist/modules/access/reference-scan.js +305 -44
- package/dist/modules/access/reference-scan.js.map +1 -1
- package/dist/modules/access/roles-admin.service.d.ts +17 -8
- package/dist/modules/access/roles-admin.service.d.ts.map +1 -1
- package/dist/modules/access/roles-admin.service.js +32 -23
- package/dist/modules/access/roles-admin.service.js.map +1 -1
- package/dist/modules/access-model/access-grammar.d.ts +35 -10
- package/dist/modules/access-model/access-grammar.d.ts.map +1 -1
- package/dist/modules/access-model/access-grammar.js +60 -20
- package/dist/modules/access-model/access-grammar.js.map +1 -1
- package/dist/modules/access-model/access-splice.d.ts +22 -18
- package/dist/modules/access-model/access-splice.d.ts.map +1 -1
- package/dist/modules/access-model/access-splice.js +20 -14
- package/dist/modules/access-model/access-splice.js.map +1 -1
- package/dist/modules/access-model/group-files.d.ts +1 -0
- package/dist/modules/access-model/group-files.d.ts.map +1 -1
- package/dist/modules/access-model/group-files.js +5 -1
- package/dist/modules/access-model/group-files.js.map +1 -1
- package/dist/modules/agent-guide/agent-guide.tools.d.ts.map +1 -1
- package/dist/modules/agent-guide/agent-guide.tools.js +13 -3
- package/dist/modules/agent-guide/agent-guide.tools.js.map +1 -1
- package/dist/modules/agent-instructions/compose.d.ts +3 -1
- package/dist/modules/agent-instructions/compose.d.ts.map +1 -1
- package/dist/modules/agent-instructions/compose.js +3 -1
- package/dist/modules/agent-instructions/compose.js.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.d.ts +5 -1
- package/dist/modules/agent-instructions/shared-file-rules.d.ts.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.js +16 -1
- package/dist/modules/agent-instructions/shared-file-rules.js.map +1 -1
- package/dist/modules/agent-scope/agent-scope.contract.d.ts +67 -0
- package/dist/modules/agent-scope/agent-scope.contract.d.ts.map +1 -0
- package/dist/modules/agent-scope/agent-scope.contract.js +27 -0
- package/dist/modules/agent-scope/agent-scope.contract.js.map +1 -0
- package/dist/modules/agent-scope/connection-scope.d.ts +111 -0
- package/dist/modules/agent-scope/connection-scope.d.ts.map +1 -0
- package/dist/modules/agent-scope/connection-scope.js +165 -0
- package/dist/modules/agent-scope/connection-scope.js.map +1 -0
- package/dist/modules/agent-scope/index.d.ts +3 -0
- package/dist/modules/agent-scope/index.d.ts.map +1 -0
- package/dist/modules/agent-scope/index.js +3 -0
- package/dist/modules/agent-scope/index.js.map +1 -0
- package/dist/modules/audit/agent-audit.service.d.ts.map +1 -1
- package/dist/modules/audit/agent-audit.service.js +2 -0
- package/dist/modules/audit/agent-audit.service.js.map +1 -1
- package/dist/modules/audit/audit.contract.d.ts +6 -0
- package/dist/modules/audit/audit.contract.d.ts.map +1 -1
- package/dist/modules/audit/audit.contract.js.map +1 -1
- package/dist/modules/auth/account-admission.d.ts +12 -0
- package/dist/modules/auth/account-admission.d.ts.map +1 -1
- package/dist/modules/auth/account-admission.js +15 -0
- package/dist/modules/auth/account-admission.js.map +1 -1
- package/dist/modules/auth/auth.middleware.d.ts +27 -1
- package/dist/modules/auth/auth.middleware.d.ts.map +1 -1
- package/dist/modules/auth/auth.middleware.js +42 -4
- package/dist/modules/auth/auth.middleware.js.map +1 -1
- package/dist/modules/auth/auth.routes.d.ts +13 -9
- package/dist/modules/auth/auth.routes.d.ts.map +1 -1
- package/dist/modules/auth/auth.routes.js +35 -29
- package/dist/modules/auth/auth.routes.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +55 -6
- package/dist/modules/auth/auth.service.d.ts.map +1 -1
- package/dist/modules/auth/auth.service.js +128 -34
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/index.d.ts +1 -1
- package/dist/modules/auth/index.d.ts.map +1 -1
- package/dist/modules/auth/index.js +1 -1
- package/dist/modules/auth/index.js.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.d.ts.map +1 -1
- package/dist/modules/auth/oidc-auth-provider.js +2 -9
- package/dist/modules/auth/oidc-auth-provider.js.map +1 -1
- package/dist/modules/database/core-schema.d.ts +68 -0
- package/dist/modules/database/core-schema.d.ts.map +1 -1
- package/dist/modules/database/core-schema.js +33 -0
- package/dist/modules/database/core-schema.js.map +1 -1
- package/dist/modules/declared-variables/declared-variables.routes.d.ts +8 -1
- package/dist/modules/declared-variables/declared-variables.routes.d.ts.map +1 -1
- package/dist/modules/declared-variables/declared-variables.routes.js +13 -2
- package/dist/modules/declared-variables/declared-variables.routes.js.map +1 -1
- package/dist/modules/embed/embed.tools.d.ts.map +1 -1
- package/dist/modules/embed/embed.tools.js +5 -0
- package/dist/modules/embed/embed.tools.js.map +1 -1
- package/dist/modules/kb-fs/index.d.ts +2 -0
- package/dist/modules/kb-fs/index.d.ts.map +1 -1
- package/dist/modules/kb-fs/index.js +1 -0
- package/dist/modules/kb-fs/index.js.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.d.ts.map +1 -1
- package/dist/modules/kb-fs/locking-filesystem.js +7 -1
- package/dist/modules/kb-fs/locking-filesystem.js.map +1 -1
- package/dist/modules/kb-fs/repo-path.d.ts +26 -6
- package/dist/modules/kb-fs/repo-path.d.ts.map +1 -1
- package/dist/modules/kb-fs/repo-path.js +22 -7
- package/dist/modules/kb-fs/repo-path.js.map +1 -1
- package/dist/modules/kb-fs/tmp-ref.d.ts +36 -0
- package/dist/modules/kb-fs/tmp-ref.d.ts.map +1 -0
- package/dist/modules/kb-fs/tmp-ref.js +76 -0
- package/dist/modules/kb-fs/tmp-ref.js.map +1 -0
- package/dist/modules/mcp/mcp-auth.middleware.d.ts +7 -0
- package/dist/modules/mcp/mcp-auth.middleware.d.ts.map +1 -1
- package/dist/modules/mcp/mcp-auth.middleware.js +14 -1
- package/dist/modules/mcp/mcp-auth.middleware.js.map +1 -1
- package/dist/modules/mcp/mcp.routes.d.ts +7 -1
- package/dist/modules/mcp/mcp.routes.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.routes.js +39 -4
- package/dist/modules/mcp/mcp.routes.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +11 -0
- package/dist/modules/mcp/mcp.service.d.ts.map +1 -1
- package/dist/modules/mcp/mcp.service.js +68 -13
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts +24 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js +45 -10
- package/dist/modules/mcp/oauth/bevel-oauth-provider.js.map +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts +9 -0
- package/dist/modules/mcp/oauth/oauth-consent.routes.d.ts.map +1 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.js +34 -1
- package/dist/modules/mcp/oauth/oauth-consent.routes.js.map +1 -1
- package/dist/modules/plugins/index.d.ts +1 -1
- package/dist/modules/plugins/index.d.ts.map +1 -1
- package/dist/modules/plugins/index.js.map +1 -1
- package/dist/modules/plugins/plugin-links.d.ts +18 -2
- package/dist/modules/plugins/plugin-links.d.ts.map +1 -1
- package/dist/modules/plugins/plugin-links.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts +5 -1
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +32 -5
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts +9 -0
- package/dist/modules/secrets-vault/secrets-vault.routes.d.ts.map +1 -1
- package/dist/modules/secrets-vault/secrets-vault.routes.js +15 -3
- package/dist/modules/secrets-vault/secrets-vault.routes.js.map +1 -1
- package/dist/modules/skills/index.d.ts +3 -3
- package/dist/modules/skills/index.d.ts.map +1 -1
- package/dist/modules/skills/index.js +0 -2
- package/dist/modules/skills/index.js.map +1 -1
- package/dist/modules/skills/skills.contract.d.ts +16 -0
- package/dist/modules/skills/skills.contract.d.ts.map +1 -1
- package/dist/modules/skills/skills.service.d.ts.map +1 -1
- package/dist/modules/skills/skills.service.js +6 -1
- package/dist/modules/skills/skills.service.js.map +1 -1
- package/dist/modules/skills/skills.tools.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.js +24 -12
- package/dist/modules/skills/skills.tools.js.map +1 -1
- package/dist/modules/tool-auth/external-api-key.interface.d.ts +11 -0
- package/dist/modules/tool-auth/external-api-key.interface.d.ts.map +1 -1
- package/dist/modules/tool-auth/external-api-key.interface.js.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.d.ts +1 -0
- package/dist/modules/tool-auth/external-api-key.service.d.ts.map +1 -1
- package/dist/modules/tool-auth/external-api-key.service.js +4 -1
- package/dist/modules/tool-auth/external-api-key.service.js.map +1 -1
- package/dist/modules/tool-auth/index.d.ts +1 -1
- package/dist/modules/tool-auth/index.d.ts.map +1 -1
- package/dist/modules/tool-auth/internal-token.service.d.ts +9 -0
- package/dist/modules/tool-auth/internal-token.service.d.ts.map +1 -1
- package/dist/modules/tool-auth/internal-token.service.js +1 -0
- package/dist/modules/tool-auth/internal-token.service.js.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts +27 -3
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js +32 -6
- package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts +7 -0
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +3 -0
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts +15 -0
- package/dist/modules/tool-helpers/tool-handler.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.js +19 -0
- package/dist/modules/tool-helpers/tool-handler.js.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.d.ts +10 -0
- package/dist/modules/tool-helpers/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool.contract.js.map +1 -1
- package/dist/modules/tool-helpers/validate-token.d.ts +3 -1
- 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 +3 -3
- package/dist/modules/tool-manuals/index.d.ts.map +1 -1
- package/dist/modules/tool-manuals/index.js +0 -2
- package/dist/modules/tool-manuals/index.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts +19 -6
- package/dist/modules/tool-manuals/tool-manuals.contract.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts +7 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.routes.js +41 -4
- package/dist/modules/tool-manuals/tool-manuals.routes.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts +13 -6
- package/dist/modules/tool-manuals/tool-manuals.service.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.service.js +23 -15
- package/dist/modules/tool-manuals/tool-manuals.service.js.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.d.ts.map +1 -1
- package/dist/modules/tool-manuals/tool-manuals.tools.js +25 -10
- package/dist/modules/tool-manuals/tool-manuals.tools.js.map +1 -1
- package/dist/modules/tool-registry/manual.routes.d.ts +8 -1
- package/dist/modules/tool-registry/manual.routes.d.ts.map +1 -1
- package/dist/modules/tool-registry/manual.routes.js +27 -7
- package/dist/modules/tool-registry/manual.routes.js.map +1 -1
- package/dist/modules/tool-registry/tool.contract.d.ts +7 -0
- package/dist/modules/tool-registry/tool.contract.d.ts.map +1 -1
- package/dist/modules/tool-registry/tool.contract.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +14 -9
- package/dist/modules/workflow/agent-tools/workflow.tools.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 +20 -35
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +2 -1
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +3 -0
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +28 -4
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.js +61 -40
- package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -1
- package/dist/modules/workspace/index.d.ts +8 -0
- package/dist/modules/workspace/index.d.ts.map +1 -1
- package/dist/modules/workspace/index.js +8 -0
- package/dist/modules/workspace/index.js.map +1 -1
- package/dist/modules/workspace/nul-scan.d.ts +19 -0
- package/dist/modules/workspace/nul-scan.d.ts.map +1 -0
- package/dist/modules/workspace/nul-scan.js +55 -0
- package/dist/modules/workspace/nul-scan.js.map +1 -0
- package/dist/modules/workspace/pattern-matcher.contract.d.ts +110 -27
- package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -1
- package/dist/modules/workspace/pattern-matcher.contract.js +30 -13
- package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -1
- package/dist/modules/workspace/ripgrep-search.d.ts +54 -0
- package/dist/modules/workspace/ripgrep-search.d.ts.map +1 -0
- package/dist/modules/workspace/ripgrep-search.js +657 -0
- package/dist/modules/workspace/ripgrep-search.js.map +1 -0
- package/dist/modules/workspace/ripgrep-version.d.ts +15 -0
- package/dist/modules/workspace/ripgrep-version.d.ts.map +1 -0
- package/dist/modules/workspace/ripgrep-version.js +31 -0
- package/dist/modules/workspace/ripgrep-version.js.map +1 -0
- package/dist/modules/workspace/startup/beside-checkout.d.ts +8 -5
- package/dist/modules/workspace/startup/beside-checkout.d.ts.map +1 -1
- package/dist/modules/workspace/startup/beside-checkout.js +14 -5
- package/dist/modules/workspace/startup/beside-checkout.js.map +1 -1
- package/dist/modules/workspace/worker-pool.d.ts +3 -4
- package/dist/modules/workspace/worker-pool.d.ts.map +1 -1
- package/dist/modules/workspace/worker-pool.js.map +1 -1
- package/dist/modules/workspace/workspace-tmp.d.ts +146 -0
- package/dist/modules/workspace/workspace-tmp.d.ts.map +1 -0
- package/dist/modules/workspace/workspace-tmp.js +435 -0
- package/dist/modules/workspace/workspace-tmp.js.map +1 -0
- package/dist/modules/workspace/workspace.routes.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.routes.js +5 -26
- package/dist/modules/workspace/workspace.routes.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +47 -6
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +86 -6
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +460 -116
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/shared/path-order.d.ts +28 -8
- package/dist/shared/path-order.d.ts.map +1 -1
- package/dist/shared/path-order.js +37 -8
- package/dist/shared/path-order.js.map +1 -1
- package/migrations/0022_session_version.sql +6 -0
- package/migrations/0023_agent_path.sql +3 -0
- package/migrations/meta/0022_snapshot.json +2360 -0
- package/migrations/meta/0023_snapshot.json +2378 -0
- package/migrations/meta/_journal.json +14 -0
- package/package.json +3 -3
- package/src/__tests__/pg-scratch.test.ts +69 -0
- package/src/__tests__/pg-scratch.ts +31 -0
- package/src/__tests__/slow-ripgrep.ts +65 -0
- package/src/core/__tests__/boot-without-ripgrep.test.ts +34 -0
- package/src/core/__tests__/catalog-revision.test.ts +89 -0
- package/src/core/__tests__/damaged-document.tools.test.ts +2 -2
- package/src/core/__tests__/gated-boot.test.ts +8 -1
- package/src/core/__tests__/lifecycle.test.ts +46 -13
- package/src/core/catalog-revision.ts +24 -2
- package/src/core/core-ports.ts +42 -0
- package/src/core/create-core-server.ts +13 -0
- package/src/core/create-core-services.ts +49 -12
- package/src/core/lifecycle.ts +26 -2
- package/src/index.ts +1 -1
- package/src/modules/access/__tests__/access-control.admin-root-floor.test.ts +12 -0
- package/src/modules/access/__tests__/access-control.colliding-name-cases.test.ts +113 -0
- package/src/modules/access/__tests__/access-control.frontmatter-head.test.ts +117 -0
- package/src/modules/access/__tests__/access-control.group-named-admin.test.ts +122 -0
- package/src/modules/access/__tests__/access-control.preview-relocation.test.ts +50 -0
- package/src/modules/access/__tests__/access-declarations.test.ts +19 -0
- package/src/modules/access/__tests__/access-groups.test.ts +55 -22
- package/src/modules/access/__tests__/access-mutation.service.test.ts +85 -59
- package/src/modules/access/__tests__/access-restrict-here.test.ts +7 -5
- package/src/modules/access/__tests__/access.routes.admins.test.ts +1 -0
- package/src/modules/access/__tests__/access.routes.batch.test.ts +2 -0
- package/src/modules/access/__tests__/access.routes.folder-governs.test.ts +2 -0
- package/src/modules/access/__tests__/access.routes.group-grant.test.ts +50 -14
- package/src/modules/access/__tests__/access.routes.overrides.test.ts +2 -1
- package/src/modules/access/__tests__/access.routes.proposal-branch.test.ts +1 -0
- package/src/modules/access/__tests__/access.routes.prospective.test.ts +2 -0
- package/src/modules/access/__tests__/access.routes.revoke.test.ts +18 -13
- package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +2 -0
- package/src/modules/access/__tests__/grant-sources.test.ts +20 -15
- package/src/modules/access/__tests__/groups-admin.routes.test.ts +61 -0
- package/src/modules/access/__tests__/groups-admin.service.test.ts +211 -18
- package/src/modules/access/__tests__/reference-scan.test.ts +366 -14
- package/src/modules/access/__tests__/roles-admin.security.test.ts +1 -1
- package/src/modules/access/__tests__/roles-admin.service.test.ts +43 -22
- package/src/modules/access/__tests__/roles-capabilities.test.ts +6 -2
- package/src/modules/access/__tests__/roles.routes.test.ts +1 -1
- package/src/modules/access/access-control.interface.ts +17 -10
- package/src/modules/access/access-control.service.ts +158 -72
- package/src/modules/access/access-mutation.service.ts +48 -53
- package/src/modules/access/access-view.ts +12 -10
- package/src/modules/access/access.routes.ts +43 -33
- package/src/modules/access/groups-admin.routes.ts +4 -2
- package/src/modules/access/groups-admin.service.ts +114 -44
- package/src/modules/access/groups-edit.ts +1 -1
- package/src/modules/access/reference-scan.ts +319 -46
- package/src/modules/access/roles-admin.service.ts +43 -26
- package/src/modules/access/synced-groups-writer.ts +1 -1
- package/src/modules/access-model/__tests__/access-grammar.test.ts +38 -1
- package/src/modules/access-model/__tests__/access-splice.test.ts +50 -8
- package/src/modules/access-model/access-grammar.ts +65 -20
- package/src/modules/access-model/access-splice.ts +31 -23
- package/src/modules/access-model/group-files.ts +5 -0
- package/src/modules/agent-guide/__tests__/agent-guide.test.ts +31 -0
- package/src/modules/agent-guide/agent-guide.tools.ts +13 -2
- package/src/modules/agent-instructions/__tests__/shared-file-rules.test.ts +1 -0
- package/src/modules/agent-instructions/compose.ts +3 -1
- package/src/modules/agent-instructions/shared-file-rules.ts +17 -1
- package/src/modules/agent-scope/__tests__/agent-surfaces.connect-as.test.ts +421 -0
- package/src/modules/agent-scope/__tests__/connection-scope.test.ts +46 -0
- package/src/modules/agent-scope/__tests__/in-memory-kb.ts +148 -0
- package/src/modules/agent-scope/agent-scope.contract.ts +83 -0
- package/src/modules/agent-scope/connection-scope.ts +199 -0
- package/src/modules/agent-scope/index.ts +15 -0
- package/src/modules/audit/agent-audit.service.ts +2 -0
- package/src/modules/audit/audit.contract.ts +6 -0
- package/src/modules/auth/__tests__/auth.middleware.test.ts +30 -2
- package/src/modules/auth/__tests__/auth.routes.test.ts +71 -5
- package/src/modules/auth/__tests__/auth.service.test.ts +90 -9
- package/src/modules/auth/__tests__/password-change-sessions.pg.test.ts +269 -0
- package/src/modules/auth/account-admission.ts +19 -0
- package/src/modules/auth/auth.middleware.ts +45 -4
- package/src/modules/auth/auth.routes.ts +46 -29
- package/src/modules/auth/auth.service.ts +135 -34
- package/src/modules/auth/index.ts +2 -0
- package/src/modules/auth/oidc-auth-provider.ts +2 -9
- package/src/modules/database/__tests__/session-version-migration.pg.test.ts +133 -0
- package/src/modules/database/core-schema.ts +33 -0
- package/src/modules/declared-variables/__tests__/declared-variables.route.test.ts +44 -1
- package/src/modules/declared-variables/declared-variables.routes.ts +12 -1
- package/src/modules/embed/__tests__/embed.tools.test.ts +12 -0
- package/src/modules/embed/embed.tools.ts +5 -0
- package/src/modules/kb-fs/__tests__/locking-filesystem.test.ts +25 -0
- package/src/modules/kb-fs/__tests__/repo-path.test.ts +53 -8
- package/src/modules/kb-fs/index.ts +2 -0
- package/src/modules/kb-fs/locking-filesystem.ts +7 -1
- package/src/modules/kb-fs/repo-path.ts +33 -7
- package/src/modules/kb-fs/tmp-ref.ts +81 -0
- package/src/modules/mcp/__tests__/connect-as.pg.test.ts +137 -0
- package/src/modules/mcp/__tests__/mcp-auth.middleware.test.ts +29 -5
- package/src/modules/mcp/__tests__/mcp-routes-harness.ts +8 -0
- package/src/modules/mcp/__tests__/mcp.connect-as.test.ts +195 -0
- package/src/modules/mcp/__tests__/mcp.routes.connect-as.test.ts +192 -0
- package/src/modules/mcp/__tests__/oauth-consent.connect-as.test.ts +146 -0
- package/src/modules/mcp/mcp-auth.middleware.ts +19 -2
- package/src/modules/mcp/mcp.routes.ts +39 -3
- package/src/modules/mcp/mcp.service.ts +107 -17
- package/src/modules/mcp/oauth/bevel-oauth-provider.ts +46 -8
- package/src/modules/mcp/oauth/oauth-consent.routes.ts +41 -1
- package/src/modules/plugins/__tests__/plugins.tools.test.ts +38 -2
- package/src/modules/plugins/index.ts +1 -1
- package/src/modules/plugins/plugin-links.ts +19 -2
- package/src/modules/plugins/plugins.routes.ts +35 -4
- package/src/modules/secrets-vault/__tests__/connect-pending.route.test.ts +113 -0
- package/src/modules/secrets-vault/secrets-vault.routes.ts +23 -3
- package/src/modules/skills/__tests__/skills.service.test.ts +34 -0
- package/src/modules/skills/index.ts +7 -2
- package/src/modules/skills/skills.contract.ts +17 -0
- package/src/modules/skills/skills.service.ts +5 -1
- package/src/modules/skills/skills.tools.ts +44 -13
- package/src/modules/tool-auth/__tests__/external-api-key.service.test.ts +4 -0
- package/src/modules/tool-auth/external-api-key.interface.ts +11 -1
- package/src/modules/tool-auth/external-api-key.service.ts +5 -2
- package/src/modules/tool-auth/index.ts +1 -1
- package/src/modules/tool-auth/internal-token.service.ts +10 -0
- package/src/modules/tool-auth/tool-auth.middleware.ts +45 -3
- package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +3 -1
- package/src/modules/tool-helpers/tool-context.ts +10 -0
- package/src/modules/tool-helpers/tool-handler.ts +34 -0
- package/src/modules/tool-helpers/tool.contract.ts +10 -0
- package/src/modules/tool-helpers/validate-token.ts +4 -2
- package/src/modules/tool-manuals/__tests__/tool-manuals.archive.route.test.ts +80 -4
- package/src/modules/tool-manuals/__tests__/tool-manuals.service.test.ts +42 -0
- package/src/modules/tool-manuals/__tests__/tool-manuals.tools.test.ts +3 -3
- package/src/modules/tool-manuals/index.ts +6 -2
- package/src/modules/tool-manuals/tool-manuals.contract.ts +18 -6
- package/src/modules/tool-manuals/tool-manuals.routes.ts +40 -3
- package/src/modules/tool-manuals/tool-manuals.service.ts +31 -15
- package/src/modules/tool-manuals/tool-manuals.tools.ts +28 -11
- package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +2 -2
- package/src/modules/tool-registry/manual.routes.ts +26 -5
- package/src/modules/tool-registry/tool.contract.ts +7 -0
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +1 -1
- package/src/modules/workflow/__tests__/workflow.service.sync.test.ts +1 -1
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +54 -3
- package/src/modules/workflow/agent-tools/workflow.tools.ts +14 -9
- package/src/modules/workflow/git/__tests__/git.service.list-branches.test.ts +130 -3
- package/src/modules/workflow/git/git.service.ts +29 -48
- package/src/modules/workflow/workflow.service.ts +5 -0
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +2 -2
- package/src/modules/workspace/__tests__/holds-nul.test.ts +66 -0
- package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +3 -3
- package/src/modules/workspace/__tests__/ripgrep-search.test.ts +570 -0
- package/src/modules/workspace/__tests__/ripgrep-version.test.ts +29 -0
- package/src/modules/workspace/__tests__/workspace-tmp.tools.test.ts +928 -0
- package/src/modules/workspace/__tests__/workspace.routes.read-gate.test.ts +17 -37
- package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +20 -8
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +22 -10
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +393 -113
- package/src/modules/workspace/file-readers/__tests__/doc-extract.service.test.ts +10 -0
- package/src/modules/workspace/file-readers/doc-extract.service.ts +71 -38
- package/src/modules/workspace/index.ts +20 -0
- package/src/modules/workspace/nul-scan.ts +50 -0
- package/src/modules/workspace/pattern-matcher.contract.ts +123 -32
- package/src/modules/workspace/ripgrep-search.ts +715 -0
- package/src/modules/workspace/ripgrep-version.ts +35 -0
- package/src/modules/workspace/startup/__tests__/beside-checkout.test.ts +11 -0
- package/src/modules/workspace/startup/beside-checkout.ts +13 -5
- package/src/modules/workspace/worker-pool.ts +3 -4
- package/src/modules/workspace/workspace-tmp.ts +457 -0
- package/src/modules/workspace/workspace.routes.ts +6 -27
- package/src/modules/workspace/workspace.service.ts +92 -15
- package/src/modules/workspace/workspace.tools.ts +500 -155
- package/src/shared/path-order.ts +37 -8
- package/starter-packs/engineering/Plugins/engineering-starter/access.md +1 -1
- package/starter-packs/general/Plugins/general-starter/access.md +1 -1
- package/starter-packs/operations/Plugins/operations-starter/access.md +1 -1
- package/starter-packs/sales/Plugins/sales-starter/access.md +1 -1
- package/starter-packs/support/Plugins/support-starter/access.md +1 -1
- package/dist/modules/workspace/bounded-matcher.d.ts +0 -73
- package/dist/modules/workspace/bounded-matcher.d.ts.map +0 -1
- package/dist/modules/workspace/bounded-matcher.js +0 -200
- package/dist/modules/workspace/bounded-matcher.js.map +0 -1
- package/src/modules/workspace/__tests__/bounded-matcher.test.ts +0 -213
- package/src/modules/workspace/bounded-matcher.ts +0 -271
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
import path from 'node:path';
|
|
36
36
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
37
37
|
import { isTextBytes } from '../workspace/index.js';
|
|
38
|
-
import { ADMIN_CANONICAL, KNOWN_VERBS,
|
|
38
|
+
import { ADMIN_CANONICAL, KNOWN_VERBS, canonicalRoleName, splitPrincipalToken, accessFrontmatterExtensionList, } from '../access-model/index.js';
|
|
39
39
|
import { spliceRevoke, spliceGrant, validatePrincipal, AccessSpliceError, } from '../access-model/index.js';
|
|
40
40
|
import { WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
41
41
|
import { canCarryFrontmatter, FOLDER_GOVERNS_ACCESS_KIND, folderGovernsAccessMessage, } from '@bevel-software/platform-shared';
|
|
@@ -60,20 +60,18 @@ export const ADMIN_ROOT_WRITE_MESSAGE = 'Admins always keep write access at the
|
|
|
60
60
|
* this target touches the Admin ROLE's write at the repository root — the
|
|
61
61
|
* root folder's `access.md`, or a file directly in the root. The resolver
|
|
62
62
|
* ignores such a rule anyway (the Admin write floor), so writing it would only
|
|
63
|
-
* leave a line that says something the app does not do. A bare
|
|
64
|
-
*
|
|
65
|
-
*
|
|
63
|
+
* leave a line that says something the app does not do. A bare `Admin` is the
|
|
64
|
+
* role (a bare name is always the role when one exists, and roles.yaml always
|
|
65
|
+
* declares Admin); `group/Admin` is a group and never the role. Targets arrive
|
|
66
|
+
* in one spelling: the routes refuse `.` and `..` segments.
|
|
66
67
|
*/
|
|
67
|
-
export function removesAdminRootWrite(kind, repoRelTarget, principal, verb
|
|
68
|
+
export function removesAdminRootWrite(kind, repoRelTarget, principal, verb) {
|
|
68
69
|
if (principal.kind !== 'role')
|
|
69
70
|
return false;
|
|
70
71
|
if (!touchesRootWrite(kind, repoRelTarget, verb))
|
|
71
72
|
return false;
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
if (!explicit && tokenMatch === 'exact')
|
|
75
|
-
return false;
|
|
76
|
-
return (explicit ? canonical.slice(ROLE_TOKEN_PREFIX.length) : canonical) === ADMIN_CANONICAL;
|
|
73
|
+
const { prefix, name } = splitPrincipalToken(canonicalRoleName(principal.role));
|
|
74
|
+
return prefix !== 'group' && name === ADMIN_CANONICAL;
|
|
77
75
|
}
|
|
78
76
|
/** Whether a mutation on `verb` (absent = every verb) at this target reaches write at the repository root. */
|
|
79
77
|
function touchesRootWrite(kind, repoRelTarget, verb) {
|
|
@@ -230,39 +228,41 @@ export class AccessMutationService {
|
|
|
230
228
|
return path.posix.join(this.kbDirName, repoRelative);
|
|
231
229
|
}
|
|
232
230
|
/**
|
|
233
|
-
* How a REVOKE of `principal` matches file tokens
|
|
231
|
+
* How a REVOKE of `principal` matches file tokens. `'name'` strips the
|
|
232
|
+
* principal's explicit spelling AND the bare name (never the other kind's
|
|
233
|
+
* explicit spelling — see `TokenMatch`); `'exact'` strips the literal
|
|
234
|
+
* spelling alone. The bare name is stripped only when it is THIS
|
|
235
|
+
* principal's under role-first precedence:
|
|
234
236
|
*
|
|
235
|
-
* -
|
|
236
|
-
*
|
|
237
|
-
* group's,
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
237
|
+
* - A ROLE (`role/<name>`, or a bare name) owns the bare key unless no
|
|
238
|
+
* role of that name exists and a group does — then the bare token is
|
|
239
|
+
* the group's, and matching is `'exact'`. A model that fails to load
|
|
240
|
+
* keeps it `'exact'` too.
|
|
241
|
+
* - A GROUP (`group/<name>`) owns the bare key only while no role of
|
|
242
|
+
* that name exists — otherwise the bare token is the role's, and
|
|
243
|
+
* matching is `'exact'`. A group that has VANISHED from the active
|
|
244
|
+
* source still reads correctly: the question is whether a ROLE holds
|
|
245
|
+
* the name. A model that fails to load says nothing about roles, so a
|
|
246
|
+
* group revoke then stays `'exact'` rather than risk a role's grant.
|
|
243
247
|
*
|
|
244
248
|
* Judged against THIS workspace's merged principal index (`kbPrincipals` —
|
|
245
249
|
* the same model the resolver reads), so revoke agrees with resolution on
|
|
246
|
-
* who owns the bare key.
|
|
247
|
-
* unshadowed — matching degrades to the pre-groups name-level behavior.
|
|
248
|
-
*
|
|
249
|
-
* GROUP revokes never take the name-level path: the route passes
|
|
250
|
-
* `tokenMatch: 'exact'` explicitly (see `revoke`'s `opts`), because this
|
|
251
|
-
* shadow probe cannot tell a group apart from a role once the group has
|
|
252
|
-
* VANISHED from the active source — the bare name then reads "unshadowed"
|
|
253
|
-
* and a name-level group revoke would strip a same-named role's live
|
|
254
|
-
* `role/<Name>` grant.
|
|
250
|
+
* who owns the bare key.
|
|
255
251
|
*/
|
|
256
252
|
async revokeTokenMatch(workspaceId, principal) {
|
|
257
253
|
if (principal.kind !== 'role')
|
|
258
254
|
return 'exact'; // user matching ignores the mode
|
|
259
|
-
const
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
255
|
+
const { prefix, name } = splitPrincipalToken(canonicalRoleName(principal.role));
|
|
256
|
+
const { roles, groups } = await this.accessControl.kbPrincipals(workspaceId);
|
|
257
|
+
const isRole = roles.some((r) => canonicalRoleName(r) === name);
|
|
258
|
+
if (prefix === 'group') {
|
|
259
|
+
// `roles` always carries at least `Everyone` once the model loads.
|
|
260
|
+
return isRole || roles.length === 0 ? 'exact' : 'name';
|
|
261
|
+
}
|
|
262
|
+
const isGroup = groups.some((g) => canonicalRoleName(g) === name);
|
|
263
|
+
// No roles at all means the model failed to load: stay exact, so a role
|
|
264
|
+
// revoke never strips a same-named group's bare grant.
|
|
265
|
+
return roles.length === 0 || (!isRole && isGroup) ? 'exact' : 'name';
|
|
266
266
|
}
|
|
267
267
|
/**
|
|
268
268
|
* Grant `principal` `verb` on `target`. Adds the principal under exactly this
|
|
@@ -312,11 +312,10 @@ export class AccessMutationService {
|
|
|
312
312
|
// When present, strip ONLY this verb (a per-checkbox toggle in the share UI);
|
|
313
313
|
// absent strips the principal from every verb (the whole-principal Remove).
|
|
314
314
|
verb,
|
|
315
|
-
// `tokenMatch` overrides the
|
|
316
|
-
//
|
|
317
|
-
//
|
|
318
|
-
//
|
|
319
|
-
// `role/<Name>` grant.
|
|
315
|
+
// `tokenMatch` overrides the derived matching (see revokeTokenMatch).
|
|
316
|
+
// One production caller: the plugin-links unlink pins `'exact'` for its
|
|
317
|
+
// `plugin/<Name>/<verb>` tokens. Pin only `'exact'` — a pinned `'name'`
|
|
318
|
+
// would bypass the guard that never strips across kinds.
|
|
320
319
|
opts) {
|
|
321
320
|
void _actingUserEmail; // referenced to satisfy no-unused-vars until something consumes it
|
|
322
321
|
this.assertPrincipalSafe(principal); // same injection/shape guard grant runs
|
|
@@ -325,8 +324,8 @@ export class AccessMutationService {
|
|
|
325
324
|
// missing FILE node is a bad target and should surface, not silently no-op
|
|
326
325
|
// — same rule grant() uses.
|
|
327
326
|
const original = await this.readOrEmpty(workspaceId, kind, repoRelTarget, editPath);
|
|
328
|
-
// Alias-tolerant vs exact-token matching, decided by
|
|
329
|
-
// see revokeTokenMatch — unless the caller pinned it.
|
|
327
|
+
// Alias-tolerant vs exact-token matching, decided by who owns the bare
|
|
328
|
+
// name — see revokeTokenMatch — unless the caller pinned it.
|
|
330
329
|
const tokenMatch = opts?.tokenMatch ?? (await this.revokeTokenMatch(workspaceId, principal));
|
|
331
330
|
let next = original;
|
|
332
331
|
let changed = false;
|
|
@@ -349,7 +348,7 @@ export class AccessMutationService {
|
|
|
349
348
|
// Refused only when an Admin write entry would really go: a whole-row
|
|
350
349
|
// Remove at a root that grants Admin other verbs but no write line (write
|
|
351
350
|
// comes from the floor) strips those verbs as usual.
|
|
352
|
-
if (writeRemoved && removesAdminRootWrite(kind, repoRelTarget, principal, verb
|
|
351
|
+
if (writeRemoved && removesAdminRootWrite(kind, repoRelTarget, principal, verb)) {
|
|
353
352
|
throw adminRootWriteRefusal();
|
|
354
353
|
}
|
|
355
354
|
if (!changed)
|
|
@@ -390,16 +389,16 @@ export class AccessMutationService {
|
|
|
390
389
|
* apply to whichever verbs were targeted.
|
|
391
390
|
*/
|
|
392
391
|
async denyHere(workspaceId, kind, repoRelTarget, principal, verb,
|
|
393
|
-
// Same override as `revoke
|
|
392
|
+
// Same override as `revoke`; no production caller passes it here.
|
|
394
393
|
opts) {
|
|
395
394
|
this.assertPrincipalSafe(principal);
|
|
396
395
|
const { editPath, allowScalar } = this.fileToEdit(kind, repoRelTarget);
|
|
397
396
|
const original = await this.readOrEmpty(workspaceId, kind, repoRelTarget, editPath);
|
|
398
397
|
const verbsToDeny = verb ? [verb] : KNOWN_VERBS;
|
|
399
|
-
// Same
|
|
400
|
-
//
|
|
398
|
+
// Same matching as revoke(): the strip must not swallow a same-named
|
|
399
|
+
// OTHER principal's grant (`group/<name>` vs the role's bare/`role/`).
|
|
401
400
|
const tokenMatch = opts?.tokenMatch ?? (await this.revokeTokenMatch(workspaceId, principal));
|
|
402
|
-
if (removesAdminRootWrite(kind, repoRelTarget, principal, verb
|
|
401
|
+
if (removesAdminRootWrite(kind, repoRelTarget, principal, verb)) {
|
|
403
402
|
throw adminRootWriteRefusal();
|
|
404
403
|
}
|
|
405
404
|
// A PERSON who is an admin keeps root write through the floor, so a deny
|
|
@@ -435,10 +434,8 @@ export class AccessMutationService {
|
|
|
435
434
|
this.accessControl.invalidate(workspaceId);
|
|
436
435
|
// (3) Assert the deny actually removed effective access on the targeted
|
|
437
436
|
// verb(s) — else roll back. The check evaluates the SAME token identity
|
|
438
|
-
// the deny above spliced (`tokenMatch` rides along)
|
|
439
|
-
//
|
|
440
|
-
// a same-named role's surviving `role/<Name>` grant as the group still
|
|
441
|
-
// having access — rolling back a fully effective deny as "ineffective".
|
|
437
|
+
// the deny above spliced (`tokenMatch` rides along), so a pinned exact
|
|
438
|
+
// deny is never judged by spellings it did not touch.
|
|
442
439
|
const stillHas = await this.principalStillHasAccess(workspaceId, kind, repoRelTarget, principal, verb, tokenMatch);
|
|
443
440
|
if (stillHas) {
|
|
444
441
|
await this.workspaceService.writeFile(workspaceId, wsRelative, original);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-mutation.service.js","sourceRoot":"","sources":["../../../src/modules/access/access-mutation.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access-mutation.service.js","sourceRoot":"","sources":["../../../src/modules/access/access-mutation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-view.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEhB,WAAW,EAEX,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"access-view.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEhB,WAAW,EAEX,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAML,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GvB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAOvE;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,EAAE,CAMvE;AAED,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAiBvD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,CAwB1G;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IACzF,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,UAAU,EACV,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CACjE,GAAG;IACF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD;;;;OAIG;IACH,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAcvD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,kBAAkB,CAgBpB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { canonicalRoleName, EVERYONE_CANONICAL, KNOWN_VERBS, ROLE_TOKEN_PREFIX, } from '../access-model/index.js';
|
|
1
|
+
import { canonicalRoleName, EVERYONE_CANONICAL, KNOWN_VERBS, ROLE_TOKEN_PREFIX, GROUP_TOKEN_PREFIX, } from '../access-model/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* The resolved access view of one target, as the Manage access dialog reads it
|
|
4
4
|
* (`GET /api/workspace/:id/access`): the caller's four verdicts, the eligible
|
|
@@ -26,13 +26,12 @@ export async function resolveAccessView(accessControl, workspaceId, repoRelTarge
|
|
|
26
26
|
// files). Keyed `u:<email>` / `r:<role>` / `g:<group>` to match the
|
|
27
27
|
// dialog's row keys, so each row can show where its access comes from and
|
|
28
28
|
// which verbs are removable here. Groups get their OWN `g:` namespace: a
|
|
29
|
-
// group and a role sharing a name are DIFFERENT principals (
|
|
30
|
-
// `role/<name>`), and one shared `r:` entry could only
|
|
31
|
-
// them. Each kind resolves through the token
|
|
32
|
-
// principal — a group through
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
// it has no alias). A row whose verbs resolve only via a
|
|
29
|
+
// group and a role sharing a name are DIFFERENT principals (`group/<name>`
|
|
30
|
+
// vs the bare name and `role/<name>`), and one shared `r:` entry could only
|
|
31
|
+
// describe one of them. Each kind resolves through the explicit token that
|
|
32
|
+
// IS that principal — a group through `group/<name>`, a role through
|
|
33
|
+
// `role/<name>` (the built-in `everyone` keeps its bare spelling, it has no
|
|
34
|
+
// alias); the bare spelling counts toward whichever kind owns it. A row whose verbs resolve only via a
|
|
36
35
|
// group/everyone/rescue has no source (the verb is absent) and renders
|
|
37
36
|
// non-actionable. Built over the union of every principal in the four
|
|
38
37
|
// eligible lists (kinded `principals`, with the name-only `roles` list as
|
|
@@ -73,9 +72,11 @@ export async function resolveAccessView(accessControl, workspaceId, repoRelTarge
|
|
|
73
72
|
const denials = {};
|
|
74
73
|
await Promise.all([
|
|
75
74
|
...[...collectives.entries()].map(async ([key, p]) => {
|
|
76
|
-
const token = p.kind === '
|
|
77
|
-
? `${
|
|
78
|
-
: p.name
|
|
75
|
+
const token = p.kind === 'group'
|
|
76
|
+
? `${GROUP_TOKEN_PREFIX}${p.name}`
|
|
77
|
+
: p.kind === 'role' && canonicalRoleName(p.name) !== EVERYONE_CANONICAL
|
|
78
|
+
? `${ROLE_TOKEN_PREFIX}${p.name}`
|
|
79
|
+
: p.name;
|
|
79
80
|
const principal = { kind: 'role', role: token };
|
|
80
81
|
const [grants, denied] = await Promise.all([
|
|
81
82
|
accessControl.grantSources(workspaceId, kind, repoRelTarget, principal),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-view.js","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,
|
|
1
|
+
{"version":3,"file":"access-view.js","sourceRoot":"","sources":["../../../src/modules/access/access-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import express from 'express';
|
|
|
2
2
|
import type { IAccessControl } from './access-control.interface.js';
|
|
3
3
|
import type { WorkspaceService } from '../workspace/index.js';
|
|
4
4
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
5
|
+
import type { ITreeWalker } from '../../shared/fs.contract.js';
|
|
5
6
|
import type { AuthService, IAccountSwitchGuard } from '../auth/index.js';
|
|
6
7
|
import type { WorkflowService, WorkflowEventBus } from '../workflow/index.js';
|
|
7
8
|
import type { Database } from '../database/index.js';
|
|
@@ -9,6 +10,8 @@ import '../auth/index.js';
|
|
|
9
10
|
export declare function createAccessRoutes(accessControl: IAccessControl, workspaceService: WorkspaceService, authService: AuthService,
|
|
10
11
|
/** Auth's switch-off coordination, for the invite's promotion (`ifActive`). */
|
|
11
12
|
switchGuard: IAccountSwitchGuard, workflowService: WorkflowService, eventBus: WorkflowEventBus, db: Database, kb: KbContext,
|
|
13
|
+
/** The composition root's walk, for the roles admin's reference scan. */
|
|
14
|
+
disk: ITreeWalker,
|
|
12
15
|
/** This deployment's configured admins — the break-glass recovery roster. */
|
|
13
16
|
recoveryAdmins?: readonly string[]): express.Router;
|
|
14
17
|
//# sourceMappingURL=access.routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"access.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA6B9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,kBAAkB,CAAC;AA8B1B,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW;AACxB,+EAA+E;AAC/E,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,SAAS;AACb,yEAAyE;AACzE,IAAI,EAAE,WAAW;AACjB,6EAA6E;AAC7E,cAAc,GAAE,SAAS,MAAM,EAAO,GACrC,OAAO,CAAC,MAAM,CAwzChB"}
|
|
@@ -11,7 +11,7 @@ import { branchForWorkspaceId } from '../../shared/workspace-id.js';
|
|
|
11
11
|
import { WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
12
12
|
import { AccessDeniedError } from '../access-model/index.js';
|
|
13
13
|
import { AccessMutationService, AccessMutationError, accessMdPathForFolder, assertFileCarriesAccessRules, fileCarriesAccessRules, governingFolderOf, } from './access-mutation.service.js';
|
|
14
|
-
import { canonicalRoleName, EVERYONE_CANONICAL, PLUGIN_TOKEN_PREFIX, PLUGIN_TOKEN_VERBS, ROLE_TOKEN_PREFIX, } from '../access-model/index.js';
|
|
14
|
+
import { canonicalRoleName, EVERYONE_CANONICAL, PLUGIN_TOKEN_PREFIX, PLUGIN_TOKEN_VERBS, ROLE_TOKEN_PREFIX, GROUP_TOKEN_PREFIX, splitPrincipalToken, } from '../access-model/index.js';
|
|
15
15
|
import { listAccessDeclarationsUnder } from './access-declarations.js';
|
|
16
16
|
import { emailsInView, holderPrincipals, labelAccountHolders, resolveAccessView } from './access-view.js';
|
|
17
17
|
import { toHttpError as sharedToHttpError, requireNonEmptyString as sharedRequireNonEmptyString } from './admin-route-helpers.js';
|
|
@@ -44,12 +44,14 @@ function isFolderGovernsRefusal(err) {
|
|
|
44
44
|
export function createAccessRoutes(accessControl, workspaceService, authService,
|
|
45
45
|
/** Auth's switch-off coordination, for the invite's promotion (`ifActive`). */
|
|
46
46
|
switchGuard, workflowService, eventBus, db, kb,
|
|
47
|
+
/** The composition root's walk, for the roles admin's reference scan. */
|
|
48
|
+
disk,
|
|
47
49
|
/** This deployment's configured admins — the break-glass recovery roster. */
|
|
48
50
|
recoveryAdmins = []) {
|
|
49
51
|
const router = express.Router({ mergeParams: true });
|
|
50
52
|
const { kbDirName } = kb;
|
|
51
53
|
const mutation = new AccessMutationService(workspaceService, accessControl, kbDirName);
|
|
52
|
-
const rolesAdmin = new RolesAdminService(workspaceService, workflowService, accessControl, kbDirName, () => kb.defaultBranch, eventBus, recoveryAdmins);
|
|
54
|
+
const rolesAdmin = new RolesAdminService(workspaceService, workflowService, accessControl, disk, kbDirName, () => kb.defaultBranch, eventBus, recoveryAdmins);
|
|
53
55
|
// Roles and groups are authoritative on the DEFAULT branch — the Roles
|
|
54
56
|
// admin screen only ever edits roles.yaml there, and the ACTIVE group
|
|
55
57
|
// source (IdP-synced or manual) lives there. Resolve both from the
|
|
@@ -89,15 +91,17 @@ recoveryAdmins = []) {
|
|
|
89
91
|
};
|
|
90
92
|
/**
|
|
91
93
|
* The role-shaped principal the splice layer actually writes/matches.
|
|
92
|
-
* - group →
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
94
|
+
* - group → the explicit `group/<Name>` token. Never the bare name:
|
|
95
|
+
* a bare name is the ROLE whenever one of that name exists,
|
|
96
|
+
* so a bare group grant could silently mean someone else.
|
|
97
|
+
* - role → the explicit `role/<Name>` token. Bare spellings in
|
|
98
|
+
* existing files remain read-compatible. The built-in
|
|
99
|
+
* `everyone` stays bare: it is not a roles.yaml role and
|
|
100
|
+
* has no `role/` alias.
|
|
97
101
|
*/
|
|
98
102
|
const asSplicePrincipal = (p) => {
|
|
99
103
|
if (p.kind === 'group')
|
|
100
|
-
return { kind: 'role', role: p.group };
|
|
104
|
+
return { kind: 'role', role: `${GROUP_TOKEN_PREFIX}${groupName(p.group)}` };
|
|
101
105
|
// Written with the folder's own casing; `parseAccessEntry` canonicalises
|
|
102
106
|
// the name half to the manifest slug on the way back in.
|
|
103
107
|
if (p.kind === 'plugin')
|
|
@@ -127,6 +131,13 @@ recoveryAdmins = []) {
|
|
|
127
131
|
}
|
|
128
132
|
return p;
|
|
129
133
|
};
|
|
134
|
+
/** A group as the caller named it, without a `group/` prefix it may carry (casing kept). */
|
|
135
|
+
function groupName(group) {
|
|
136
|
+
const raw = group.trim();
|
|
137
|
+
return splitPrincipalToken(canonicalRoleName(raw)).prefix === 'group'
|
|
138
|
+
? raw.slice(GROUP_TOKEN_PREFIX.length).trim()
|
|
139
|
+
: raw;
|
|
140
|
+
}
|
|
130
141
|
// Authentication gate only. Per PLAN §3 the workspace `:id` is a branch
|
|
131
142
|
// identifier — any authenticated user can read its access tree.
|
|
132
143
|
async function requireUser(req, res) {
|
|
@@ -403,8 +414,8 @@ recoveryAdmins = []) {
|
|
|
403
414
|
* signed in — so the dialog can label them; it withholds nobody.
|
|
404
415
|
*
|
|
405
416
|
* A name shared by a group and a role is offered as BOTH — nothing is
|
|
406
|
-
* withheld:
|
|
407
|
-
*
|
|
417
|
+
* withheld: each is written with its own prefix (`group/<Name>`,
|
|
418
|
+
* `role/<Name>`), so the collision never reaches the file.
|
|
408
419
|
*/
|
|
409
420
|
router.get('/workspace/:id/access/suggest', async (req, res) => {
|
|
410
421
|
const user = await requireUser(req, res);
|
|
@@ -782,10 +793,10 @@ recoveryAdmins = []) {
|
|
|
782
793
|
// uses — and one the caller may see (`visibleGroups`): a group hidden
|
|
783
794
|
// from the picker is refused here with the same words as one that
|
|
784
795
|
// does not exist, so the grant route is no oracle for group names.
|
|
785
|
-
// No role-collision refusal:
|
|
786
|
-
//
|
|
796
|
+
// No role-collision refusal: the grant is written `group/<Name>`,
|
|
797
|
+
// which always resolves to the group.
|
|
787
798
|
const groups = await visibleGroups(user.email, (await defaultBranchPrincipals()).groups);
|
|
788
|
-
const canonical = canonicalRoleName(principal.group);
|
|
799
|
+
const canonical = canonicalRoleName(groupName(principal.group));
|
|
789
800
|
if (!groups.some((g) => canonicalRoleName(g) === canonical)) {
|
|
790
801
|
throw new AccessMutationError(`No group named "${principal.group}". Pick an existing group.`, 404, { kind: 'unknown-group', group: principal.group });
|
|
791
802
|
}
|
|
@@ -803,8 +814,8 @@ recoveryAdmins = []) {
|
|
|
803
814
|
throw new AccessMutationError(`No plugin named "${principal.plugin}". Pick an existing plugin.`, 404, { kind: 'unknown-plugin', plugin: principal.plugin });
|
|
804
815
|
}
|
|
805
816
|
}
|
|
806
|
-
// Splice shape: group →
|
|
807
|
-
//
|
|
817
|
+
// Splice shape: group → explicit `group/<Name>` token; role → explicit
|
|
818
|
+
// `role/<Name>` token (see asSplicePrincipal).
|
|
808
819
|
const splicePrincipal = asSplicePrincipal(principal);
|
|
809
820
|
const { gatePath } = gateAndEditPaths(kind, repoRelTarget);
|
|
810
821
|
// Ensure the branch workspace exists before locking.
|
|
@@ -868,17 +879,12 @@ recoveryAdmins = []) {
|
|
|
868
879
|
try {
|
|
869
880
|
const mode = req.body.mode;
|
|
870
881
|
const { repoRelTarget, kind, principal: routePrincipal } = parseMutationBody(req.body);
|
|
871
|
-
// A group principal converts straight to
|
|
872
|
-
//
|
|
873
|
-
//
|
|
882
|
+
// A group principal converts straight to its `group/<Name>` token — no
|
|
883
|
+
// existence check (revoking a grant whose group has since vanished must
|
|
884
|
+
// keep working). Which spellings a revoke strips is the mutation
|
|
885
|
+
// service's call: `group/<Name>` never matches `role/<Name>`, and the
|
|
886
|
+
// bare name only when no role of that name owns it.
|
|
874
887
|
const principal = asSplicePrincipal(routePrincipal);
|
|
875
|
-
// GROUP revokes match the EXACT bare token only. The service's own
|
|
876
|
-
// shadow probe decides exact-vs-name for roles, but it cannot know a
|
|
877
|
-
// bare token was a GROUP once that group vanished from the active
|
|
878
|
-
// source — the name would read "unshadowed" and name-level matching
|
|
879
|
-
// would strip a same-named role's live `role/<Name>` grant. The route
|
|
880
|
-
// still knows the caller's kind, so it pins the matching here.
|
|
881
|
-
const revokeOpts = routePrincipal.kind === 'group' ? { tokenMatch: 'exact' } : undefined;
|
|
882
888
|
// Optional `verb` scopes ALL three paths to a single verb: a default revoke
|
|
883
889
|
// strips just that verb; remove-from-parent removes just that verb on the
|
|
884
890
|
// ancestor; deny-here denies just that verb at the target. Absent ⇒ the
|
|
@@ -921,7 +927,7 @@ recoveryAdmins = []) {
|
|
|
921
927
|
throw new AccessMutationError('This person is no longer inherited from that folder — refresh and try again.', 409, { kind: 'stale-ancestor' });
|
|
922
928
|
}
|
|
923
929
|
// Scope the ancestor revoke to the same verb the user acted on (if any).
|
|
924
|
-
await mutation.revoke(workspaceId, 'folder', ancestorDir, principal, user.email, verb
|
|
930
|
+
await mutation.revoke(workspaceId, 'folder', ancestorDir, principal, user.email, verb);
|
|
925
931
|
});
|
|
926
932
|
accessControl.invalidate(workspaceId);
|
|
927
933
|
logger('access.revoke.remove-from-parent').info(`ws=${workspaceId} branch=${branch} ` +
|
|
@@ -936,7 +942,7 @@ recoveryAdmins = []) {
|
|
|
936
942
|
await mutation.assertTargetHoldsText(workspaceId, kind, repoRelTarget);
|
|
937
943
|
await withEditLock(workspaceId, branch, gatePath, user, async () => {
|
|
938
944
|
// Scope the deny to the same verb the user acted on (if any).
|
|
939
|
-
await mutation.denyHere(workspaceId, kind, repoRelTarget, principal, verb
|
|
945
|
+
await mutation.denyHere(workspaceId, kind, repoRelTarget, principal, verb);
|
|
940
946
|
});
|
|
941
947
|
accessControl.invalidate(workspaceId);
|
|
942
948
|
logger('access.revoke.deny-here').info(`ws=${workspaceId} branch=${branch} ` +
|
|
@@ -951,7 +957,7 @@ recoveryAdmins = []) {
|
|
|
951
957
|
const editPath = gatePath;
|
|
952
958
|
let changed = false;
|
|
953
959
|
await withEditLock(workspaceId, branch, editPath, user, async () => {
|
|
954
|
-
const r = await mutation.revoke(workspaceId, kind, repoRelTarget, principal, user.email, verb
|
|
960
|
+
const r = await mutation.revoke(workspaceId, kind, repoRelTarget, principal, user.email, verb);
|
|
955
961
|
changed = r.changed;
|
|
956
962
|
});
|
|
957
963
|
accessControl.invalidate(workspaceId);
|
|
@@ -1030,7 +1036,7 @@ recoveryAdmins = []) {
|
|
|
1030
1036
|
// surface). The frontend hides the page, but the API must gate too — the
|
|
1031
1037
|
// roster exposes every role + member email.
|
|
1032
1038
|
await assertRolesAdmin(user.email);
|
|
1033
|
-
res.json({ roles: await rolesAdmin.getRoster() });
|
|
1039
|
+
res.json({ roles: await rolesAdmin.getRoster(user.email) });
|
|
1034
1040
|
}
|
|
1035
1041
|
catch (err) {
|
|
1036
1042
|
const { status, body } = toHttpError(err);
|