@stigmer/server 3.40.0 → 3.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authorization/authorizer.d.ts +16 -10
- package/dist/authorization/authorizer.d.ts.map +1 -1
- package/dist/authorization/authorizer.js +17 -9
- package/dist/authorization/authorizer.js.map +1 -1
- package/dist/authorization/derived-tuples.d.ts +7 -3
- package/dist/authorization/derived-tuples.d.ts.map +1 -1
- package/dist/authorization/derived-tuples.js +62 -6
- package/dist/authorization/derived-tuples.js.map +1 -1
- package/dist/authorization/evaluator.d.ts +11 -7
- package/dist/authorization/evaluator.d.ts.map +1 -1
- package/dist/authorization/evaluator.js +16 -10
- package/dist/authorization/evaluator.js.map +1 -1
- package/dist/authorization/list-read-scope.d.ts +4 -0
- package/dist/authorization/list-read-scope.d.ts.map +1 -1
- package/dist/authorization/list-read-scope.js +1 -0
- package/dist/authorization/list-read-scope.js.map +1 -1
- package/dist/authorization/model/data/authorization-model.json +830 -67
- package/dist/authorization/model/execution-viewer.d.ts.map +1 -1
- package/dist/authorization/model/execution-viewer.js +26 -24
- package/dist/authorization/model/execution-viewer.js.map +1 -1
- package/dist/authorization/model/index.d.ts +4 -1
- package/dist/authorization/model/index.d.ts.map +1 -1
- package/dist/authorization/model/index.js +4 -1
- package/dist/authorization/model/index.js.map +1 -1
- package/dist/authorization/model/rewrite.d.ts +5 -3
- package/dist/authorization/model/rewrite.d.ts.map +1 -1
- package/dist/authorization/organization-directory.d.ts +44 -0
- package/dist/authorization/organization-directory.d.ts.map +1 -1
- package/dist/authorization/organization-directory.js +1 -0
- package/dist/authorization/organization-directory.js.map +1 -1
- package/dist/authorization/person.d.ts +14 -1
- package/dist/authorization/person.d.ts.map +1 -1
- package/dist/authorization/person.js +16 -0
- package/dist/authorization/person.js.map +1 -1
- package/dist/authorization/policy-check.d.ts +52 -0
- package/dist/authorization/policy-check.d.ts.map +1 -0
- package/dist/authorization/policy-check.js +35 -0
- package/dist/authorization/policy-check.js.map +1 -0
- package/dist/authorization/posture.d.ts +30 -4
- package/dist/authorization/posture.d.ts.map +1 -1
- package/dist/authorization/posture.js +58 -0
- package/dist/authorization/posture.js.map +1 -1
- package/dist/authorization/resource-creators.d.ts +4 -0
- package/dist/authorization/resource-creators.d.ts.map +1 -0
- package/dist/authorization/resource-creators.js +44 -0
- package/dist/authorization/resource-creators.js.map +1 -0
- package/dist/authorization/trusted-local-authorizer.d.ts +9 -0
- package/dist/authorization/trusted-local-authorizer.d.ts.map +1 -0
- package/dist/authorization/trusted-local-authorizer.js +70 -0
- package/dist/authorization/trusted-local-authorizer.js.map +1 -0
- package/dist/authorization/tuples.d.ts +12 -0
- package/dist/authorization/tuples.d.ts.map +1 -1
- package/dist/authorization/tuples.js +3 -0
- package/dist/authorization/tuples.js.map +1 -1
- package/dist/boot/compose.d.ts.map +1 -1
- package/dist/boot/compose.js +133 -43
- package/dist/boot/compose.js.map +1 -1
- package/dist/boot/config.d.ts +22 -7
- package/dist/boot/config.d.ts.map +1 -1
- package/dist/boot/config.js +2 -1
- package/dist/boot/config.js.map +1 -1
- package/dist/boot/inprocess.d.ts.map +1 -1
- package/dist/boot/inprocess.js +10 -4
- package/dist/boot/inprocess.js.map +1 -1
- package/dist/boot/list-indexes.d.ts.map +1 -1
- package/dist/boot/list-indexes.js +6 -1
- package/dist/boot/list-indexes.js.map +1 -1
- package/dist/boot/logger.d.ts +3 -1
- package/dist/boot/logger.d.ts.map +1 -1
- package/dist/boot/logger.js +3 -1
- package/dist/boot/logger.js.map +1 -1
- package/dist/boot/oauth-redirect-uri.d.ts +33 -12
- package/dist/boot/oauth-redirect-uri.d.ts.map +1 -1
- package/dist/boot/oauth-redirect-uri.js +43 -14
- package/dist/boot/oauth-redirect-uri.js.map +1 -1
- package/dist/boot/skill-transfer-origin.d.ts +46 -14
- package/dist/boot/skill-transfer-origin.d.ts.map +1 -1
- package/dist/boot/skill-transfer-origin.js +53 -13
- package/dist/boot/skill-transfer-origin.js.map +1 -1
- package/dist/domain/agentchannel/steps.d.ts +8 -6
- package/dist/domain/agentchannel/steps.d.ts.map +1 -1
- package/dist/domain/agentchannel/steps.js +9 -7
- package/dist/domain/agentchannel/steps.js.map +1 -1
- package/dist/domain/agentexecution/controller.d.ts +7 -0
- package/dist/domain/agentexecution/controller.d.ts.map +1 -1
- package/dist/domain/agentexecution/controller.js +1 -1
- package/dist/domain/agentexecution/controller.js.map +1 -1
- package/dist/domain/agentexecution/create-steps.d.ts +26 -12
- package/dist/domain/agentexecution/create-steps.d.ts.map +1 -1
- package/dist/domain/agentexecution/create-steps.js +61 -43
- package/dist/domain/agentexecution/create-steps.js.map +1 -1
- package/dist/domain/agentexecution/submit-approval.d.ts.map +1 -1
- package/dist/domain/agentexecution/submit-approval.js +9 -6
- package/dist/domain/agentexecution/submit-approval.js.map +1 -1
- package/dist/domain/agentexecution/submit-file-decision.d.ts.map +1 -1
- package/dist/domain/agentexecution/submit-file-decision.js +5 -4
- package/dist/domain/agentexecution/submit-file-decision.js.map +1 -1
- package/dist/domain/agentshare/steps.d.ts +5 -3
- package/dist/domain/agentshare/steps.d.ts.map +1 -1
- package/dist/domain/agentshare/steps.js +6 -4
- package/dist/domain/agentshare/steps.js.map +1 -1
- package/dist/domain/apikey/verifier.d.ts +7 -0
- package/dist/domain/apikey/verifier.d.ts.map +1 -1
- package/dist/domain/apikey/verifier.js +34 -1
- package/dist/domain/apikey/verifier.js.map +1 -1
- package/dist/domain/channelapp/controller.d.ts +9 -4
- package/dist/domain/channelapp/controller.d.ts.map +1 -1
- package/dist/domain/channelapp/controller.js +19 -9
- package/dist/domain/channelapp/controller.js.map +1 -1
- package/dist/domain/executioncontext/steps.d.ts +2 -1
- package/dist/domain/executioncontext/steps.d.ts.map +1 -1
- package/dist/domain/executioncontext/steps.js +2 -1
- package/dist/domain/executioncontext/steps.js.map +1 -1
- package/dist/domain/iampolicy/access-lists.d.ts.map +1 -1
- package/dist/domain/iampolicy/access-lists.js +57 -2
- package/dist/domain/iampolicy/access-lists.js.map +1 -1
- package/dist/domain/iampolicy/change.d.ts +53 -0
- package/dist/domain/iampolicy/change.d.ts.map +1 -0
- package/dist/domain/iampolicy/change.js +44 -0
- package/dist/domain/iampolicy/change.js.map +1 -0
- package/dist/domain/iampolicy/constants.d.ts +6 -0
- package/dist/domain/iampolicy/constants.d.ts.map +1 -1
- package/dist/domain/iampolicy/constants.js +6 -0
- package/dist/domain/iampolicy/constants.js.map +1 -1
- package/dist/domain/iampolicy/controller.d.ts.map +1 -1
- package/dist/domain/iampolicy/controller.js +9 -5
- package/dist/domain/iampolicy/controller.js.map +1 -1
- package/dist/domain/iampolicy/grant-path.d.ts +31 -13
- package/dist/domain/iampolicy/grant-path.d.ts.map +1 -1
- package/dist/domain/iampolicy/grant-path.js +216 -19
- package/dist/domain/iampolicy/grant-path.js.map +1 -1
- package/dist/domain/iampolicy/membership.d.ts +11 -3
- package/dist/domain/iampolicy/membership.d.ts.map +1 -1
- package/dist/domain/iampolicy/membership.js +18 -13
- package/dist/domain/iampolicy/membership.js.map +1 -1
- package/dist/domain/iampolicy/resource-store.d.ts.map +1 -1
- package/dist/domain/iampolicy/resource-store.js +4 -0
- package/dist/domain/iampolicy/resource-store.js.map +1 -1
- package/dist/domain/iampolicy/role-lifecycle.d.ts.map +1 -1
- package/dist/domain/iampolicy/role-lifecycle.js +2 -2
- package/dist/domain/iampolicy/role-lifecycle.js.map +1 -1
- package/dist/domain/iampolicy/roles.d.ts.map +1 -1
- package/dist/domain/iampolicy/roles.js +7 -0
- package/dist/domain/iampolicy/roles.js.map +1 -1
- package/dist/domain/iampolicy/steps.d.ts +4 -3
- package/dist/domain/iampolicy/steps.d.ts.map +1 -1
- package/dist/domain/iampolicy/steps.js +7 -7
- package/dist/domain/iampolicy/steps.js.map +1 -1
- package/dist/domain/iampolicy/store-contract.d.ts.map +1 -1
- package/dist/domain/iampolicy/store-contract.js +22 -1
- package/dist/domain/iampolicy/store-contract.js.map +1 -1
- package/dist/domain/iampolicy/store.d.ts +18 -5
- package/dist/domain/iampolicy/store.d.ts.map +1 -1
- package/dist/domain/iampolicy/store.js.map +1 -1
- package/dist/domain/identityaccount/constants.d.ts +15 -0
- package/dist/domain/identityaccount/constants.d.ts.map +1 -1
- package/dist/domain/identityaccount/constants.js +17 -0
- package/dist/domain/identityaccount/constants.js.map +1 -1
- package/dist/domain/identityaccount/controller.d.ts.map +1 -1
- package/dist/domain/identityaccount/controller.js +17 -6
- package/dist/domain/identityaccount/controller.js.map +1 -1
- package/dist/domain/identityaccount/resolve.d.ts +47 -0
- package/dist/domain/identityaccount/resolve.d.ts.map +1 -1
- package/dist/domain/identityaccount/resolve.js +38 -1
- package/dist/domain/identityaccount/resolve.js.map +1 -1
- package/dist/domain/identityaccount/resource-store.d.ts.map +1 -1
- package/dist/domain/identityaccount/resource-store.js +11 -1
- package/dist/domain/identityaccount/resource-store.js.map +1 -1
- package/dist/domain/identityaccount/steps.d.ts +2 -1
- package/dist/domain/identityaccount/steps.d.ts.map +1 -1
- package/dist/domain/identityaccount/steps.js +4 -3
- package/dist/domain/identityaccount/steps.js.map +1 -1
- package/dist/domain/identityaccount/store-contract.js +2 -2
- package/dist/domain/identityaccount/store-contract.js.map +1 -1
- package/dist/domain/identityaccount/store.d.ts +6 -1
- package/dist/domain/identityaccount/store.d.ts.map +1 -1
- package/dist/domain/mcpserver/connect-sandbox.d.ts +67 -0
- package/dist/domain/mcpserver/connect-sandbox.d.ts.map +1 -0
- package/dist/domain/mcpserver/connect-sandbox.js +64 -0
- package/dist/domain/mcpserver/connect-sandbox.js.map +1 -0
- package/dist/domain/mcpserver/connect.d.ts +42 -10
- package/dist/domain/mcpserver/connect.d.ts.map +1 -1
- package/dist/domain/mcpserver/connect.js +147 -40
- package/dist/domain/mcpserver/connect.js.map +1 -1
- package/dist/domain/mcpserver/controller.js +4 -2
- package/dist/domain/mcpserver/controller.js.map +1 -1
- package/dist/domain/mcpserver/engine.d.ts +26 -7
- package/dist/domain/mcpserver/engine.d.ts.map +1 -1
- package/dist/domain/mcpserver/engine.js.map +1 -1
- package/dist/domain/mcpserver/start-connect.d.ts +5 -0
- package/dist/domain/mcpserver/start-connect.d.ts.map +1 -1
- package/dist/domain/mcpserver/start-connect.js +38 -15
- package/dist/domain/mcpserver/start-connect.js.map +1 -1
- package/dist/domain/memory/controller.js +2 -1
- package/dist/domain/memory/controller.js.map +1 -1
- package/dist/domain/memory/list-index.d.ts +2 -0
- package/dist/domain/memory/list-index.d.ts.map +1 -0
- package/dist/domain/memory/list-index.js +31 -0
- package/dist/domain/memory/list-index.js.map +1 -0
- package/dist/domain/memory/queries.d.ts +10 -0
- package/dist/domain/memory/queries.d.ts.map +1 -0
- package/dist/domain/memory/queries.js +54 -0
- package/dist/domain/memory/queries.js.map +1 -0
- package/dist/domain/memory/steps.d.ts +13 -11
- package/dist/domain/memory/steps.d.ts.map +1 -1
- package/dist/domain/memory/steps.js +26 -57
- package/dist/domain/memory/steps.js.map +1 -1
- package/dist/domain/organization/steps.d.ts.map +1 -1
- package/dist/domain/organization/steps.js +1 -1
- package/dist/domain/organization/steps.js.map +1 -1
- package/dist/domain/platformclient/mint.d.ts.map +1 -1
- package/dist/domain/platformclient/mint.js +2 -2
- package/dist/domain/platformclient/mint.js.map +1 -1
- package/dist/domain/platformclient/verifier.d.ts.map +1 -1
- package/dist/domain/platformclient/verifier.js +6 -3
- package/dist/domain/platformclient/verifier.js.map +1 -1
- package/dist/domain/plugin/push.d.ts.map +1 -1
- package/dist/domain/plugin/push.js +1 -0
- package/dist/domain/plugin/push.js.map +1 -1
- package/dist/domain/schedule/steps.d.ts +3 -1
- package/dist/domain/schedule/steps.d.ts.map +1 -1
- package/dist/domain/schedule/steps.js +3 -1
- package/dist/domain/schedule/steps.js.map +1 -1
- package/dist/domain/skill/push.d.ts.map +1 -1
- package/dist/domain/skill/push.js +1 -0
- package/dist/domain/skill/push.js.map +1 -1
- package/dist/domain/workflow/registry/data/task-kind-registry.json +27 -1
- package/dist/domain/workflowexecution/submit-approval.d.ts +5 -2
- package/dist/domain/workflowexecution/submit-approval.d.ts.map +1 -1
- package/dist/domain/workflowexecution/submit-approval.js +1 -1
- package/dist/domain/workflowexecution/submit-approval.js.map +1 -1
- package/dist/domain/workflowexecution/submit-file-decision.d.ts +5 -2
- package/dist/domain/workflowexecution/submit-file-decision.d.ts.map +1 -1
- package/dist/domain/workflowexecution/submit-file-decision.js +1 -1
- package/dist/domain/workflowexecution/submit-file-decision.js.map +1 -1
- package/dist/domain/workflowexecution/submit-workflow-task-approval.d.ts.map +1 -1
- package/dist/domain/workflowexecution/submit-workflow-task-approval.js +12 -1
- package/dist/domain/workflowexecution/submit-workflow-task-approval.js.map +1 -1
- package/dist/domain/workflowinstance/controller.d.ts +6 -3
- package/dist/domain/workflowinstance/controller.d.ts.map +1 -1
- package/dist/domain/workflowinstance/controller.js +12 -7
- package/dist/domain/workflowinstance/controller.js.map +1 -1
- package/dist/domain/workflowinstance/steps.d.ts +31 -0
- package/dist/domain/workflowinstance/steps.d.ts.map +1 -1
- package/dist/domain/workflowinstance/steps.js +88 -1
- package/dist/domain/workflowinstance/steps.js.map +1 -1
- package/dist/extensions/composed-services.d.ts +56 -0
- package/dist/extensions/composed-services.d.ts.map +1 -0
- package/dist/extensions/composed-services.js +2 -0
- package/dist/extensions/composed-services.js.map +1 -0
- package/dist/extensions/drivers.d.ts +32 -1
- package/dist/extensions/drivers.d.ts.map +1 -1
- package/dist/extensions/identity.d.ts +4 -1
- package/dist/extensions/identity.d.ts.map +1 -1
- package/dist/extensions/identity.js +4 -1
- package/dist/extensions/identity.js.map +1 -1
- package/dist/extensions/registry.d.ts +37 -0
- package/dist/extensions/registry.d.ts.map +1 -1
- package/dist/extensions/registry.js +50 -0
- package/dist/extensions/registry.js.map +1 -1
- package/dist/extensions/resource-authorization.d.ts +78 -0
- package/dist/extensions/resource-authorization.d.ts.map +1 -1
- package/dist/extensions/resource-row-reader.d.ts +43 -0
- package/dist/extensions/resource-row-reader.d.ts.map +1 -0
- package/dist/extensions/resource-row-reader.js +2 -0
- package/dist/extensions/resource-row-reader.js.map +1 -0
- package/dist/extensions/visitor-classifier.d.ts +41 -0
- package/dist/extensions/visitor-classifier.d.ts.map +1 -0
- package/dist/extensions/visitor-classifier.js +2 -0
- package/dist/extensions/visitor-classifier.js.map +1 -0
- package/dist/identity/oidc-userinfo.d.ts +6 -1
- package/dist/identity/oidc-userinfo.d.ts.map +1 -1
- package/dist/identity/oidc-userinfo.js.map +1 -1
- package/dist/identity/oidc-verifier.d.ts.map +1 -1
- package/dist/identity/oidc-verifier.js +37 -8
- package/dist/identity/oidc-verifier.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -9
- package/dist/index.js.map +1 -1
- package/dist/pipeline/errors.d.ts +8 -0
- package/dist/pipeline/errors.d.ts.map +1 -1
- package/dist/pipeline/errors.js +25 -16
- package/dist/pipeline/errors.js.map +1 -1
- package/dist/pipeline/interceptors/auth.d.ts +17 -9
- package/dist/pipeline/interceptors/auth.d.ts.map +1 -1
- package/dist/pipeline/interceptors/auth.js +17 -9
- package/dist/pipeline/interceptors/auth.js.map +1 -1
- package/dist/pipeline/steps/authorization-tuples.d.ts +23 -1
- package/dist/pipeline/steps/authorization-tuples.d.ts.map +1 -1
- package/dist/pipeline/steps/authorization-tuples.js +42 -0
- package/dist/pipeline/steps/authorization-tuples.js.map +1 -1
- package/dist/pipeline/steps/authorize.d.ts +6 -5
- package/dist/pipeline/steps/authorize.d.ts.map +1 -1
- package/dist/pipeline/steps/authorize.js +6 -5
- package/dist/pipeline/steps/authorize.js.map +1 -1
- package/dist/pipeline/steps/defaults.d.ts +12 -0
- package/dist/pipeline/steps/defaults.d.ts.map +1 -1
- package/dist/pipeline/steps/defaults.js +42 -7
- package/dist/pipeline/steps/defaults.js.map +1 -1
- package/dist/pipeline/steps/guard-memory-capture.d.ts +13 -15
- package/dist/pipeline/steps/guard-memory-capture.d.ts.map +1 -1
- package/dist/pipeline/steps/guard-memory-capture.js +2 -3
- package/dist/pipeline/steps/guard-memory-capture.js.map +1 -1
- package/dist/runnerauth/built-in-runner-credential-provider.d.ts +0 -2
- package/dist/runnerauth/built-in-runner-credential-provider.d.ts.map +1 -1
- package/dist/runnerauth/built-in-runner-credential-provider.js +8 -17
- package/dist/runnerauth/built-in-runner-credential-provider.js.map +1 -1
- package/dist/runnerauth/runner-credential-provider.d.ts +17 -7
- package/dist/runnerauth/runner-credential-provider.d.ts.map +1 -1
- package/dist/runnerauth/runner-credential-provider.js.map +1 -1
- package/dist/sandbox/docker.d.ts.map +1 -1
- package/dist/sandbox/docker.js +3 -0
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/kubernetes.d.ts.map +1 -1
- package/dist/sandbox/kubernetes.js +3 -0
- package/dist/sandbox/kubernetes.js.map +1 -1
- package/dist/sandbox/local-process.d.ts.map +1 -1
- package/dist/sandbox/local-process.js +4 -0
- package/dist/sandbox/local-process.js.map +1 -1
- package/dist/sandbox/provisioner.d.ts +18 -6
- package/dist/sandbox/provisioner.d.ts.map +1 -1
- package/dist/sandbox/provisioner.js.map +1 -1
- package/dist/temporal/manager.d.ts +5 -0
- package/dist/temporal/manager.d.ts.map +1 -1
- package/dist/temporal/manager.js +9 -0
- package/dist/temporal/manager.js.map +1 -1
- package/dist/temporal/mcpserver/engine-client.d.ts +2 -2
- package/dist/temporal/mcpserver/engine-client.d.ts.map +1 -1
- package/dist/temporal/mcpserver/engine-client.js +6 -4
- package/dist/temporal/mcpserver/engine-client.js.map +1 -1
- package/dist/temporal/mcpserver/names.d.ts +13 -2
- package/dist/temporal/mcpserver/names.d.ts.map +1 -1
- package/dist/temporal/mcpserver/names.js +15 -2
- package/dist/temporal/mcpserver/names.js.map +1 -1
- package/dist/temporal/sdk-logger.d.ts +74 -0
- package/dist/temporal/sdk-logger.d.ts.map +1 -0
- package/dist/temporal/sdk-logger.js +143 -0
- package/dist/temporal/sdk-logger.js.map +1 -0
- package/package.json +6 -6
- package/src/authorization/README.md +18 -6
- package/src/authorization/__tests__/authorizer.test.ts +5 -1
- package/src/authorization/__tests__/derived-tuples.test.ts +26 -0
- package/src/authorization/__tests__/evaluator.test.ts +4 -0
- package/src/authorization/__tests__/list-read-scope.test.ts +11 -5
- package/src/authorization/__tests__/store-tests.test.ts +3 -1
- package/src/authorization/__tests__/trusted-local-authorizer.test.ts +155 -0
- package/src/authorization/__tests__/unit-owned-kinds.test.ts +420 -0
- package/src/authorization/__tests__/wire-permissions.test.ts +31 -2
- package/src/authorization/authorizer.ts +21 -10
- package/src/authorization/derived-tuples.ts +92 -18
- package/src/authorization/evaluator.ts +30 -15
- package/src/authorization/list-read-scope.ts +4 -0
- package/src/authorization/model/__tests__/registry.test.ts +23 -0
- package/src/authorization/model/data/authorization-model.json +830 -67
- package/src/authorization/model/execution-viewer.ts +32 -27
- package/src/authorization/model/index.ts +4 -1
- package/src/authorization/model/rewrite.ts +5 -3
- package/src/authorization/organization-directory.ts +4 -0
- package/src/authorization/person.ts +32 -1
- package/src/authorization/policy-check.ts +105 -0
- package/src/authorization/posture.ts +45 -4
- package/src/authorization/resource-creators.ts +48 -0
- package/src/authorization/trusted-local-authorizer.ts +91 -0
- package/src/authorization/tuples.ts +17 -0
- package/src/boot/__tests__/compose.test.ts +120 -4
- package/src/boot/__tests__/list-indexes.test.ts +4 -0
- package/src/boot/__tests__/oauth-redirect-uri.test.ts +121 -10
- package/src/boot/__tests__/skill-transfer-origin.test.ts +96 -25
- package/src/boot/compose.ts +154 -61
- package/src/boot/config.ts +28 -12
- package/src/boot/inprocess.ts +18 -4
- package/src/boot/list-indexes.ts +6 -1
- package/src/boot/logger.ts +3 -1
- package/src/boot/oauth-redirect-uri.ts +62 -17
- package/src/boot/skill-transfer-origin.ts +71 -16
- package/src/domain/agent/__tests__/agent.test.ts +42 -1
- package/src/domain/agentchannel/__tests__/agentchannel.test.ts +9 -0
- package/src/domain/agentchannel/__tests__/channel-runtime.test.ts +2 -0
- package/src/domain/agentchannel/__tests__/create-authorization.test.ts +7 -6
- package/src/domain/agentchannel/steps.ts +9 -7
- package/src/domain/agentexecution/__tests__/agentexecution.test.ts +148 -56
- package/src/domain/agentexecution/__tests__/create-steps.test.ts +175 -12
- package/src/domain/agentexecution/__tests__/file-review-seed.ts +91 -0
- package/src/domain/agentexecution/controller.ts +8 -0
- package/src/domain/agentexecution/create-steps.ts +74 -44
- package/src/domain/agentexecution/submit-approval.ts +9 -6
- package/src/domain/agentexecution/submit-file-decision.ts +5 -4
- package/src/domain/agentinstance/__tests__/agentinstance.test.ts +2 -0
- package/src/domain/agentshare/__tests__/agentshare.test.ts +17 -0
- package/src/domain/agentshare/__tests__/create-authorization.test.ts +5 -4
- package/src/domain/agentshare/steps.ts +6 -4
- package/src/domain/apikey/__tests__/verifier.test.ts +73 -1
- package/src/domain/apikey/verifier.ts +45 -1
- package/src/domain/artifact/__tests__/artifact.test.ts +13 -24
- package/src/domain/channelapp/__tests__/channelapp.test.ts +7 -0
- package/src/domain/channelapp/controller.ts +35 -12
- package/src/domain/environment/__tests__/environment.test.ts +13 -0
- package/src/domain/executioncontext/__tests__/executioncontext.test.ts +2 -0
- package/src/domain/executioncontext/steps.ts +2 -1
- package/src/domain/iampolicy/__tests__/access-lists.test.ts +79 -0
- package/src/domain/iampolicy/__tests__/change.test.ts +63 -0
- package/src/domain/iampolicy/__tests__/controller.test.ts +39 -3
- package/src/domain/iampolicy/__tests__/grant-path.test.ts +595 -27
- package/src/domain/iampolicy/__tests__/iampolicy.test.ts +33 -2
- package/src/domain/iampolicy/__tests__/membership.test.ts +47 -5
- package/src/domain/iampolicy/__tests__/resource-store.test.ts +1 -0
- package/src/domain/iampolicy/__tests__/role-lifecycle.test.ts +41 -8
- package/src/domain/iampolicy/__tests__/roles.test.ts +3 -2
- package/src/domain/iampolicy/__tests__/steps.test.ts +75 -6
- package/src/domain/iampolicy/__tests__/support.ts +68 -4
- package/src/domain/iampolicy/access-lists.ts +70 -2
- package/src/domain/iampolicy/change.ts +109 -0
- package/src/domain/iampolicy/constants.ts +8 -0
- package/src/domain/iampolicy/controller.ts +17 -3
- package/src/domain/iampolicy/grant-path.ts +349 -31
- package/src/domain/iampolicy/membership.ts +32 -12
- package/src/domain/iampolicy/resource-store.ts +4 -0
- package/src/domain/iampolicy/role-lifecycle.ts +2 -0
- package/src/domain/iampolicy/roles.ts +8 -0
- package/src/domain/iampolicy/steps.ts +15 -5
- package/src/domain/iampolicy/store-contract.ts +37 -1
- package/src/domain/iampolicy/store.ts +19 -5
- package/src/domain/identityaccount/__tests__/resolve.test.ts +246 -2
- package/src/domain/identityaccount/__tests__/resource-store.test.ts +1 -1
- package/src/domain/identityaccount/constants.ts +20 -0
- package/src/domain/identityaccount/controller.ts +20 -5
- package/src/domain/identityaccount/resolve.ts +80 -1
- package/src/domain/identityaccount/resource-store.ts +14 -1
- package/src/domain/identityaccount/steps.ts +4 -3
- package/src/domain/identityaccount/store-contract.ts +4 -4
- package/src/domain/identityaccount/store.ts +6 -1
- package/src/domain/mcpserver/__tests__/connect-authorization.test.ts +1 -0
- package/src/domain/mcpserver/__tests__/connect.test.ts +358 -15
- package/src/domain/mcpserver/__tests__/mcpserver.test.ts +2 -0
- package/src/domain/mcpserver/__tests__/oauth-handshake.test.ts +2 -0
- package/src/domain/mcpserver/__tests__/store-faults.test.ts +2 -0
- package/src/domain/mcpserver/connect-sandbox.ts +135 -0
- package/src/domain/mcpserver/connect.ts +226 -56
- package/src/domain/mcpserver/controller.ts +8 -2
- package/src/domain/mcpserver/engine.ts +24 -6
- package/src/domain/mcpserver/start-connect.ts +49 -10
- package/src/domain/memory/__tests__/memory.test.ts +92 -22
- package/src/domain/memory/__tests__/queries.test.ts +173 -0
- package/src/domain/memory/controller.ts +2 -1
- package/src/domain/memory/list-index.ts +32 -0
- package/src/domain/memory/queries.ts +72 -0
- package/src/domain/memory/steps.ts +26 -63
- package/src/domain/oauthapp/__tests__/oauthapp.test.ts +14 -0
- package/src/domain/organization/__tests__/support.ts +41 -0
- package/src/domain/organization/steps.ts +1 -0
- package/src/domain/platformclient/mint.ts +6 -2
- package/src/domain/platformclient/verifier.ts +6 -3
- package/src/domain/plugin/__tests__/plugin.test.ts +11 -24
- package/src/domain/plugin/push.ts +1 -0
- package/src/domain/schedule/__tests__/schedule.composed.test.ts +2 -0
- package/src/domain/schedule/steps.ts +3 -1
- package/src/domain/session/__tests__/session.test.ts +2 -0
- package/src/domain/skill/__tests__/skill.test.ts +7 -25
- package/src/domain/skill/push.ts +1 -0
- package/src/domain/workflow/__tests__/workflow.test.ts +2 -0
- package/src/domain/workflow/registry/data/task-kind-registry.json +27 -1
- package/src/domain/workflowexecution/__tests__/forward-attribution-composed.test.ts +270 -0
- package/src/domain/workflowexecution/__tests__/submit-workflow-task-approval.test.ts +196 -0
- package/src/domain/workflowexecution/__tests__/workflowexecution.test.ts +3 -57
- package/src/domain/workflowexecution/submit-approval.ts +9 -2
- package/src/domain/workflowexecution/submit-file-decision.ts +6 -1
- package/src/domain/workflowexecution/submit-workflow-task-approval.ts +23 -5
- package/src/domain/workflowinstance/controller.ts +27 -9
- package/src/domain/workflowinstance/steps.ts +123 -1
- package/src/extensions/__tests__/apikey-before-sign-in-composed.test.ts +172 -0
- package/src/extensions/__tests__/built-in-authorization-composed.test.ts +80 -1
- package/src/extensions/__tests__/composed-services-composed.test.ts +236 -0
- package/src/extensions/__tests__/extension-composition.test.ts +229 -16
- package/src/extensions/__tests__/identity-account-composed.test.ts +84 -4
- package/src/extensions/__tests__/list-read-scope-composed.test.ts +41 -1
- package/src/extensions/__tests__/registry.test.ts +147 -1
- package/src/extensions/__tests__/secret-cleanup-composed.test.ts +2 -0
- package/src/extensions/__tests__/visitor-classifier-points.test.ts +42 -0
- package/src/extensions/composed-services.ts +61 -0
- package/src/extensions/drivers.ts +33 -1
- package/src/extensions/identity.ts +4 -1
- package/src/extensions/registry.ts +105 -0
- package/src/extensions/resource-authorization.ts +87 -0
- package/src/extensions/resource-row-reader.ts +43 -0
- package/src/extensions/visitor-classifier.ts +41 -0
- package/src/identity/__tests__/oidc-verifier.test.ts +38 -12
- package/src/identity/oidc-userinfo.ts +6 -1
- package/src/identity/oidc-verifier.ts +42 -8
- package/src/index.ts +61 -6
- package/src/pipeline/__tests__/steps.test.ts +31 -4
- package/src/pipeline/errors.ts +30 -16
- package/src/pipeline/interceptors/auth.ts +17 -9
- package/src/pipeline/steps/__tests__/authorization-tuples.test.ts +20 -0
- package/src/pipeline/steps/__tests__/guard-memory-capture.test.ts +72 -15
- package/src/pipeline/steps/authorization-tuples.ts +54 -0
- package/src/pipeline/steps/authorize.ts +6 -5
- package/src/pipeline/steps/defaults.ts +52 -7
- package/src/pipeline/steps/guard-memory-capture.ts +15 -20
- package/src/runnerauth/__tests__/built-in-runner-credential-provider.test.ts +1 -1
- package/src/runnerauth/__tests__/runner-subject-composed.test.ts +13 -0
- package/src/runnerauth/bound-execution.ts +2 -2
- package/src/runnerauth/built-in-runner-credential-provider.ts +8 -21
- package/src/runnerauth/runner-credential-provider.ts +17 -7
- package/src/sandbox/__tests__/docker.integration.test.ts +4 -0
- package/src/sandbox/__tests__/kubernetes.test.ts +18 -1
- package/src/sandbox/__tests__/local-process.integration.test.ts +4 -0
- package/src/sandbox/__tests__/provisioner.test.ts +1 -0
- package/src/sandbox/docker.ts +3 -0
- package/src/sandbox/kubernetes.ts +3 -0
- package/src/sandbox/local-process.ts +4 -0
- package/src/sandbox/provisioner.ts +18 -6
- package/src/store/postgres/__tests__/support.ts +11 -2
- package/src/temporal/README.md +1 -0
- package/src/temporal/__tests__/manager.test.ts +56 -4
- package/src/temporal/__tests__/sdk-log-workflows.ts +26 -0
- package/src/temporal/__tests__/sdk-logger.e2e.test.ts +150 -0
- package/src/temporal/__tests__/sdk-logger.test.ts +238 -0
- package/src/temporal/manager.ts +9 -0
- package/src/temporal/mcpserver/engine-client.ts +8 -3
- package/src/temporal/mcpserver/names.ts +16 -2
- package/src/temporal/sdk-logger.ts +173 -0
- package/dist/authorization/lane-admission.d.ts +0 -50
- package/dist/authorization/lane-admission.d.ts.map +0 -1
- package/dist/authorization/lane-admission.js +0 -13
- package/dist/authorization/lane-admission.js.map +0 -1
- package/src/authorization/__tests__/lane-admission.test.ts +0 -115
- package/src/authorization/lane-admission.ts +0 -73
|
@@ -24,6 +24,17 @@
|
|
|
24
24
|
* with the id standing in as the display name, the Java `enrich()`
|
|
25
25
|
* fallback shape.
|
|
26
26
|
*
|
|
27
|
+
* A resource's list names only people who belong to its organization.
|
|
28
|
+
* The model bounds every direct grant on an organization-scoped object by
|
|
29
|
+
* the organization (fga/model/tenancy/organization.fga `affiliated`), and
|
|
30
|
+
* the grant path revokes a departed person's shares, but it keeps their
|
|
31
|
+
* authorship row (grant-path.ts), which reaches nothing while they are
|
|
32
|
+
* away. A row that grants nothing is not access, so an account that holds
|
|
33
|
+
* no row on the resource's organization is left out of that resource's
|
|
34
|
+
* list, read from the same rows (one indexed `findByPrincipal` per listed
|
|
35
|
+
* account). An organization's own list is its roles and is never
|
|
36
|
+
* filtered.
|
|
37
|
+
*
|
|
27
38
|
* Every entry names its grantee exactly as the rows hold it: kind, id AND
|
|
28
39
|
* the relation qualifier (`team:<id>#member`), and entries group by all
|
|
29
40
|
* three. A revoke matches the qualifier exactly (grant-path.ts
|
|
@@ -54,6 +65,9 @@ import {
|
|
|
54
65
|
import { assignableRelations, roleInfoFromRelation } from "./roles.js";
|
|
55
66
|
import type { IamPolicyStore } from "./store.js";
|
|
56
67
|
|
|
68
|
+
const ACCOUNT_KIND = kindEnumName(ApiResourceKind.identity_account);
|
|
69
|
+
const ORGANIZATION_KIND = kindEnumName(ApiResourceKind.organization);
|
|
70
|
+
|
|
57
71
|
/** The Java resolver's bounds: ≤5 steps, platform terminates the walk. */
|
|
58
72
|
const MAX_HIERARCHY_DEPTH = 5;
|
|
59
73
|
const TERMINAL_KINDS: ReadonlySet<string> = new Set([
|
|
@@ -141,9 +155,21 @@ export async function buildPrincipalAccessList(
|
|
|
141
155
|
if (grants.length === 0) {
|
|
142
156
|
return [];
|
|
143
157
|
}
|
|
158
|
+
const departed = await accountsOutsideOrganization(
|
|
159
|
+
policies,
|
|
160
|
+
hierarchy,
|
|
161
|
+
grants.map((grant) => grant.policy),
|
|
162
|
+
);
|
|
163
|
+
const current = grants.filter((grant) => {
|
|
164
|
+
const principal = grant.policy.spec?.principal;
|
|
165
|
+
return !(principal?.kind === ACCOUNT_KIND && departed.has(principal.id));
|
|
166
|
+
});
|
|
167
|
+
if (current.length === 0) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
144
170
|
|
|
145
171
|
const enriched = await resolvePrincipalViews(
|
|
146
|
-
|
|
172
|
+
current.map((g) => g.policy),
|
|
147
173
|
displayResolver,
|
|
148
174
|
principalDisplay,
|
|
149
175
|
);
|
|
@@ -152,7 +178,7 @@ export async function buildPrincipalAccessList(
|
|
|
152
178
|
string,
|
|
153
179
|
{ principal: ApiResourceRefView; roles: RoleGrant[] }
|
|
154
180
|
>();
|
|
155
|
-
for (const grant of
|
|
181
|
+
for (const grant of current) {
|
|
156
182
|
const principal = grant.policy.spec?.principal;
|
|
157
183
|
if (principal === undefined) {
|
|
158
184
|
continue;
|
|
@@ -190,6 +216,48 @@ export async function buildPrincipalAccessList(
|
|
|
190
216
|
);
|
|
191
217
|
}
|
|
192
218
|
|
|
219
|
+
/**
|
|
220
|
+
* The accounts among the rows that hold no row on the resource's
|
|
221
|
+
* organization (the module header's rule). Empty for an organization's own
|
|
222
|
+
* list and for a resource no organization holds.
|
|
223
|
+
*/
|
|
224
|
+
async function accountsOutsideOrganization(
|
|
225
|
+
policies: IamPolicyStore,
|
|
226
|
+
hierarchy: ReadonlyArray<HierarchyLevel>,
|
|
227
|
+
rows: ReadonlyArray<IamPolicy>,
|
|
228
|
+
): Promise<ReadonlySet<string>> {
|
|
229
|
+
const resource = hierarchy[0];
|
|
230
|
+
if (resource === undefined || resource.kind === ORGANIZATION_KIND) {
|
|
231
|
+
return new Set();
|
|
232
|
+
}
|
|
233
|
+
const levels = hierarchy.some((level) => level.kind === ORGANIZATION_KIND)
|
|
234
|
+
? hierarchy
|
|
235
|
+
: await resolveHierarchy(policies, resource.kind, resource.id, true);
|
|
236
|
+
const organization = levels.find((level) => level.kind === ORGANIZATION_KIND);
|
|
237
|
+
if (organization === undefined) {
|
|
238
|
+
return new Set();
|
|
239
|
+
}
|
|
240
|
+
const accounts = new Set<string>();
|
|
241
|
+
for (const row of rows) {
|
|
242
|
+
if (row.spec?.principal?.kind === ACCOUNT_KIND) {
|
|
243
|
+
accounts.add(row.spec.principal.id);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const outside = new Set<string>();
|
|
247
|
+
for (const account of accounts) {
|
|
248
|
+
const held = await policies.findByPrincipal(ACCOUNT_KIND, account);
|
|
249
|
+
const inOrganization = held.some(
|
|
250
|
+
(policy) =>
|
|
251
|
+
policy.spec?.resource?.kind === ORGANIZATION_KIND &&
|
|
252
|
+
policy.spec.resource.id === organization.id,
|
|
253
|
+
);
|
|
254
|
+
if (!inOrganization) {
|
|
255
|
+
outside.add(account);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return outside;
|
|
259
|
+
}
|
|
260
|
+
|
|
193
261
|
/**
|
|
194
262
|
* The display views of every distinct principal the rows name, keyed
|
|
195
263
|
* `kind:id` (the grouping key, so two kinds can never share an id's view):
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the grant path says about a change to a policy row: who made it,
|
|
3
|
+
* through which door, and in which organization. The grant path
|
|
4
|
+
* (grant-path.ts) builds one for every row it writes or deletes that
|
|
5
|
+
* grants access, and hands it to the store beside the row
|
|
6
|
+
* (`IamPolicyStore.save` and `deleteById`), so an edition that keeps a
|
|
7
|
+
* permission history writes it in the same atomic unit as the row. Open
|
|
8
|
+
* source keeps no history table; the same facts ride the path's grant and
|
|
9
|
+
* revoke log lines.
|
|
10
|
+
*
|
|
11
|
+
* The cause names a door the grant path already has, never an edition's
|
|
12
|
+
* business reason: an edition that grants on a person's behalf (an
|
|
13
|
+
* invitation, a federated sign-in) says whom it acted for through the
|
|
14
|
+
* actor (`serverActingFor`, pipeline/interceptors/auth.ts), not through a
|
|
15
|
+
* cause of its own. The strings are stored bytes in an edition's history:
|
|
16
|
+
* a cause is added, never renamed or reused.
|
|
17
|
+
*
|
|
18
|
+
* An access row is a row that lets someone reach something: it names a
|
|
19
|
+
* person, or an audience written as a userset (`team:T#member`,
|
|
20
|
+
* `organization:O#viewer`, `identity_provider:I#platform_user`). A row
|
|
21
|
+
* naming a resource as its principal with no relation is a structural link
|
|
22
|
+
* (a parent, a default instance, a managed organization), the bookkeeping
|
|
23
|
+
* a resource's own creation implies; it carries no change record.
|
|
24
|
+
*
|
|
25
|
+
* The actor is the caller's id and class and nothing else: never the email,
|
|
26
|
+
* the display name or the token, so a history holds no more of a person
|
|
27
|
+
* than the rows it describes already do.
|
|
28
|
+
*/
|
|
29
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
30
|
+
import type { IamPolicySpec } from "@stigmer/protos/ai/stigmer/iam/iampolicy/v1/spec_pb";
|
|
31
|
+
|
|
32
|
+
import type { CallerClass, CallerIdentity } from "../../extensions/identity.js";
|
|
33
|
+
import { kindEnumName } from "../../pipeline/apiresource-meta.js";
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The door a change came through. Stored bytes in an edition's history.
|
|
37
|
+
*
|
|
38
|
+
* - `grant`: IamPolicy.create, a grant on the user lane.
|
|
39
|
+
* - `revoke`: IamPolicy.delete.
|
|
40
|
+
* - `structural`: IamPolicy.bootstrapPolicy, the server recording what a
|
|
41
|
+
* resource's creation or visibility implies (its creator's authorship,
|
|
42
|
+
* its audience).
|
|
43
|
+
* - `organization_access_revoked`: revokeOrgAccess and its system twin,
|
|
44
|
+
* a person removed from an organization.
|
|
45
|
+
* - `left_organization`: the sweep that follows a person's last role on
|
|
46
|
+
* an organization, revoking what they held on its resources.
|
|
47
|
+
* - `resource_deleted`: the rows that die with a deleted resource
|
|
48
|
+
* (cleanupResourcePolicies, the built-in lifecycle's delete cleanup,
|
|
49
|
+
* an organization's revoke before its row goes).
|
|
50
|
+
* - `organization_created`: open source's creator `owner` row.
|
|
51
|
+
* - `first_sign_in`: open source's membership rules for a new account.
|
|
52
|
+
* - `role_reconciliation`: the one-shot pass that gives existing
|
|
53
|
+
* accounts the roles the membership rules would have.
|
|
54
|
+
* - `operator_ownership`: the trusted-local operator made owner of an
|
|
55
|
+
* organization nobody owns.
|
|
56
|
+
* - `platform_client_grant`: a PlatformClient's auto-granted role on the
|
|
57
|
+
* account it mints.
|
|
58
|
+
*/
|
|
59
|
+
export type PolicyChangeCause =
|
|
60
|
+
| "grant"
|
|
61
|
+
| "revoke"
|
|
62
|
+
| "structural"
|
|
63
|
+
| "organization_access_revoked"
|
|
64
|
+
| "left_organization"
|
|
65
|
+
| "resource_deleted"
|
|
66
|
+
| "organization_created"
|
|
67
|
+
| "first_sign_in"
|
|
68
|
+
| "role_reconciliation"
|
|
69
|
+
| "operator_ownership"
|
|
70
|
+
| "platform_client_grant";
|
|
71
|
+
|
|
72
|
+
/** Who made a change: the caller's id and class, nothing that identifies a person beyond the id. */
|
|
73
|
+
export interface PolicyActor {
|
|
74
|
+
readonly id: string;
|
|
75
|
+
readonly callerClass: CallerClass;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* What the store is handed beside an access row it writes or deletes. An
|
|
80
|
+
* implementation that keeps a history records exactly one entry for it, in
|
|
81
|
+
* the same atomic unit as the row change, and none when the row did not
|
|
82
|
+
* change (IamPolicyStore, store.ts).
|
|
83
|
+
*/
|
|
84
|
+
export interface PolicyChangeRecord {
|
|
85
|
+
readonly actor: PolicyActor;
|
|
86
|
+
readonly cause: PolicyChangeCause;
|
|
87
|
+
/**
|
|
88
|
+
* The organization the row's resource belongs to, resolved before any
|
|
89
|
+
* row of the operation is deleted; "" when none can be found (a kind
|
|
90
|
+
* outside organization scope, a legacy row with no scope link).
|
|
91
|
+
*/
|
|
92
|
+
readonly organizationId: string;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const ACCOUNT_KIND = kindEnumName(ApiResourceKind.identity_account);
|
|
96
|
+
|
|
97
|
+
/** The actor a caller is recorded as. */
|
|
98
|
+
export function policyActorOf(caller: CallerIdentity): PolicyActor {
|
|
99
|
+
return { id: caller.identityId, callerClass: caller.callerClass };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Whether a row lets someone reach something (a person or an audience), as opposed to a structural link. */
|
|
103
|
+
export function grantsAccess(spec: IamPolicySpec): boolean {
|
|
104
|
+
const principal = spec.principal;
|
|
105
|
+
if (principal === undefined) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return principal.kind === ACCOUNT_KIND || principal.relation !== "";
|
|
109
|
+
}
|
|
@@ -308,6 +308,14 @@ export function malformedTripleMessage(field: string): string {
|
|
|
308
308
|
export const OWNER_ASSIGNMENT_DENIED_MESSAGE =
|
|
309
309
|
"only an owner of the organization can grant, revoke or remove the owner role";
|
|
310
310
|
|
|
311
|
+
/**
|
|
312
|
+
* A grant of the organization's `affiliated` relation (INVALID_ARGUMENT, on
|
|
313
|
+
* every lane): it is derived from a person's organization roles, never
|
|
314
|
+
* granted (fga/model/tenancy/organization.fga).
|
|
315
|
+
*/
|
|
316
|
+
export const AFFILIATION_NOT_GRANTABLE_MESSAGE =
|
|
317
|
+
"affiliated is derived from a person's organization roles and is never granted";
|
|
318
|
+
|
|
311
319
|
/** Revoking or removing the last owner of an organization (FAILED_PRECONDITION). */
|
|
312
320
|
export const LAST_OWNER_MESSAGE =
|
|
313
321
|
"an organization must keep at least one owner; make another member an owner first";
|
|
@@ -172,6 +172,7 @@ import {
|
|
|
172
172
|
policyNotFoundMessage,
|
|
173
173
|
unknownPermissionMessage,
|
|
174
174
|
} from "./constants.js";
|
|
175
|
+
import type { PolicyChangeCause } from "./change.js";
|
|
175
176
|
import { newAccountDisplayResolver } from "./display-resolver.js";
|
|
176
177
|
import type { AccountsByIds } from "./display-resolver.js";
|
|
177
178
|
import type { IamPolicyGrantPath } from "./grant-path.js";
|
|
@@ -242,7 +243,14 @@ export function registerIamPolicyServices(
|
|
|
242
243
|
delete: (spec, ctx) => deletePolicy(deps, spec, ctx),
|
|
243
244
|
bootstrapPolicy: (spec, ctx) => {
|
|
244
245
|
guardSystemRpc(command.bootstrapPolicy, callerIdentityOf(ctx));
|
|
245
|
-
return grantThroughChain(
|
|
246
|
+
return grantThroughChain(
|
|
247
|
+
deps,
|
|
248
|
+
command.bootstrapPolicy,
|
|
249
|
+
spec,
|
|
250
|
+
ctx,
|
|
251
|
+
false,
|
|
252
|
+
"structural",
|
|
253
|
+
);
|
|
246
254
|
},
|
|
247
255
|
cleanupResourcePolicies: (ref, ctx) => {
|
|
248
256
|
guardSystemRpc(command.cleanupResourcePolicies, callerIdentityOf(ctx));
|
|
@@ -318,6 +326,7 @@ function createPolicy(
|
|
|
318
326
|
spec,
|
|
319
327
|
ctx,
|
|
320
328
|
true,
|
|
329
|
+
"grant",
|
|
321
330
|
);
|
|
322
331
|
}
|
|
323
332
|
|
|
@@ -325,7 +334,8 @@ function createPolicy(
|
|
|
325
334
|
* The grant chain both `create` and `bootstrapPolicy` run; only the user
|
|
326
335
|
* lane validates the role, asks for an owner's authority when it grants
|
|
327
336
|
* owner, and runs the create gate slot — bootstrap writes structural
|
|
328
|
-
* relations no scope would admit and no edition gates.
|
|
337
|
+
* relations no scope would admit and no edition gates. `cause` is the
|
|
338
|
+
* lane's door, recorded with every access row it writes.
|
|
329
339
|
*/
|
|
330
340
|
async function grantThroughChain(
|
|
331
341
|
deps: IamPolicyControllerDeps,
|
|
@@ -333,6 +343,7 @@ async function grantThroughChain(
|
|
|
333
343
|
spec: IamPolicySpec,
|
|
334
344
|
ctx: HandlerContext,
|
|
335
345
|
validateRole: boolean,
|
|
346
|
+
cause: PolicyChangeCause,
|
|
336
347
|
): Promise<IamPolicy> {
|
|
337
348
|
const reqCtx = new RequestContext(
|
|
338
349
|
IamPolicySpecSchema,
|
|
@@ -358,7 +369,10 @@ async function grantThroughChain(
|
|
|
358
369
|
pipeline.addStep(step);
|
|
359
370
|
}
|
|
360
371
|
}
|
|
361
|
-
await pipeline
|
|
372
|
+
await pipeline
|
|
373
|
+
.addStep(newGrantStep(deps.grantPath, cause))
|
|
374
|
+
.build()
|
|
375
|
+
.execute(reqCtx);
|
|
362
376
|
return policyResultOf(reqCtx, method);
|
|
363
377
|
}
|
|
364
378
|
|