@stigmer/server 3.40.1 → 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 +132 -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 +4 -3
- package/dist/domain/channelapp/controller.d.ts.map +1 -1
- 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 +153 -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 +4 -3
- 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 +2 -0
- 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
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lane admission over the Authorizer seam — open source's rendering of
|
|
3
|
-
* the cloud's decorator (stigmer-cloud `authorizer/lane-admission.ts`,
|
|
4
|
-
* stigmer-cloud#709), composed around the built-in Authorizer under the
|
|
5
|
-
* built-in authorization posture (boot/compose.ts).
|
|
6
|
-
*
|
|
7
|
-
* The OSS AuthorizeRunTarget step asks the Authorizer, for every caller
|
|
8
|
-
* but the internal class, whether the caller may run what a session or
|
|
9
|
-
* execution targets — the run-gate checks (`isRunGateCheck`, the
|
|
10
|
-
* OSS-owned definition of that set: `can_execute` on the blueprints and
|
|
11
|
-
* instances, `can_create_execution_in` on a session). A runner acting
|
|
12
|
-
* for a WORKFLOW execution creates the workflow's child agent executions
|
|
13
|
-
* (the `agent_call` activity), and it does so AS THE HUMAN whose workflow
|
|
14
|
-
* it is (runnerauth/runner-subject-verifier.ts). Checked as that human,
|
|
15
|
-
* a member running an organization-visible workflow that calls another
|
|
16
|
-
* member's private agent would be refused at the child create — but
|
|
17
|
-
* the parent workflow execution already passed its own run gate, and
|
|
18
|
-
* the human's visibility of the agents a shared workflow calls is not
|
|
19
|
-
* the question. The cloud admits its `workflow_sandbox` lane on exactly
|
|
20
|
-
* these checks for exactly this reason; this decorator gives an
|
|
21
|
-
* enforcing self-host the same answer, so a workflow behaves the same in
|
|
22
|
-
* both editions (the parent program's rule: nothing diverges silently).
|
|
23
|
-
*
|
|
24
|
-
* Why a predicate and not a class set: the cloud keys its decorator on
|
|
25
|
-
* `callerClass` because there the class IS the token type. In open
|
|
26
|
-
* source the class is `runner` for every bound execution, and the
|
|
27
|
-
* binding's KIND lives in the token, readable by the one function that
|
|
28
|
-
* interprets runner tokens (`isWorkflowBoundRunner` in
|
|
29
|
-
* runnerauth/built-in-runner-credential-provider.ts). Handing that
|
|
30
|
-
* reading in as `isAdmittedLane` keeps this module free of token
|
|
31
|
-
* knowledge and lets the cloud adopt the same shape later without a
|
|
32
|
-
* second class name. An AGENT-bound runner is NOT admitted: a subagent
|
|
33
|
-
* create is checked as the human, the cloud's `sandbox` posture.
|
|
34
|
-
*
|
|
35
|
-
* Narrow by construction: an admitted lane on any NON-run-gate check,
|
|
36
|
-
* and any other caller on any check, delegate untouched. The cloud's
|
|
37
|
-
* header records one caveat — a human who can view a workflow execution
|
|
38
|
-
* can exchange for its token and replay it against the run gate. Open
|
|
39
|
-
* source has no such caveat: under this posture the exchange is a mint
|
|
40
|
-
* gate that answers only the run's own person (the built-in provider's
|
|
41
|
-
* exchangeScopedToken, runnerauth/built-in-runner-credential-provider.ts),
|
|
42
|
-
* so the only human who can hold a workflow's credential is the one whose
|
|
43
|
-
* workflow it is — and their own run gate already passed.
|
|
44
|
-
*/
|
|
45
|
-
import type { CallerIdentity } from "../extensions/identity.js";
|
|
46
|
-
import type { Authorizer } from "../extensions/authorizer.js";
|
|
47
|
-
/** Whether `caller` is a lane whose admission to CREATE a run was decided upstream. */
|
|
48
|
-
export type LaneAdmissionPredicate = (caller: CallerIdentity) => boolean;
|
|
49
|
-
export declare function newLaneAdmittedAuthorizer(inner: Authorizer, isAdmittedLane: LaneAdmissionPredicate): Authorizer;
|
|
50
|
-
//# sourceMappingURL=lane-admission.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lane-admission.d.ts","sourceRoot":"","sources":["../../src/authorization/lane-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EACV,UAAU,EAGX,MAAM,6BAA6B,CAAC;AAKrC,uFAAuF;AACvF,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC;AAEzE,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,sBAAsB,GACrC,UAAU,CAYZ"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { isRunGateCheck } from "../pipeline/steps/authorize-run-target.js";
|
|
2
|
-
const ADMITTED = { kind: "allow" };
|
|
3
|
-
export function newLaneAdmittedAuthorizer(inner, isAdmittedLane) {
|
|
4
|
-
return {
|
|
5
|
-
authorize(caller, check) {
|
|
6
|
-
if (isRunGateCheck(check) && isAdmittedLane(caller)) {
|
|
7
|
-
return Promise.resolve(ADMITTED);
|
|
8
|
-
}
|
|
9
|
-
return inner.authorize(caller, check);
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=lane-admission.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lane-admission.js","sourceRoot":"","sources":["../../src/authorization/lane-admission.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,MAAM,QAAQ,GAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAKlD,MAAM,UAAU,yBAAyB,CACvC,KAAiB,EACjB,cAAsC;IAEtC,OAAO;QACL,SAAS,CACP,MAAsB,EACtB,KAAiB;YAEjB,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pins the lane-admission decorator (lane-admission.ts): a caller the
|
|
3
|
-
* predicate names is ADMITTED on the run-gate checks without the inner
|
|
4
|
-
* Authorizer being consulted, and every other combination — an admitted
|
|
5
|
-
* lane on a non-run-gate check, any other caller on any check — reaches
|
|
6
|
-
* the inner Authorizer untouched, its answer returned as-is (deny and
|
|
7
|
-
* unavailable included, so the decorator can never turn a refusal into
|
|
8
|
-
* an allow off the run gate). The predicate is the whole policy; this
|
|
9
|
-
* file proves the decorator's arithmetic with a plain one, and the
|
|
10
|
-
* built-in provider's tests prove the predicate open source composes.
|
|
11
|
-
*/
|
|
12
|
-
import { describe, expect, it } from "vitest";
|
|
13
|
-
|
|
14
|
-
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
15
|
-
import { IamPermission } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
|
|
16
|
-
|
|
17
|
-
import type {
|
|
18
|
-
Authorizer,
|
|
19
|
-
AuthzCheck,
|
|
20
|
-
AuthzDecision,
|
|
21
|
-
} from "../../extensions/authorizer.js";
|
|
22
|
-
import type { CallerIdentity } from "../../extensions/identity.js";
|
|
23
|
-
import { RUN_GATE_CHECKS } from "../../pipeline/steps/authorize-run-target.js";
|
|
24
|
-
import { newLaneAdmittedAuthorizer } from "../lane-admission.js";
|
|
25
|
-
|
|
26
|
-
const WORKFLOW_RUNNER: CallerIdentity = {
|
|
27
|
-
identityId: "ida_carol",
|
|
28
|
-
callerClass: "runner",
|
|
29
|
-
issuer: "",
|
|
30
|
-
rawToken: "wex-bound",
|
|
31
|
-
};
|
|
32
|
-
const AGENT_RUNNER: CallerIdentity = {
|
|
33
|
-
...WORKFLOW_RUNNER,
|
|
34
|
-
rawToken: "aex-bound",
|
|
35
|
-
};
|
|
36
|
-
const PERSON: CallerIdentity = {
|
|
37
|
-
identityId: "ida_carol",
|
|
38
|
-
callerClass: "user",
|
|
39
|
-
issuer: "https://issuer.example/",
|
|
40
|
-
rawToken: "eyJ.person.token",
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const isWorkflowRunner = (caller: CallerIdentity): boolean =>
|
|
44
|
-
caller.callerClass === "runner" && caller.rawToken === "wex-bound";
|
|
45
|
-
|
|
46
|
-
const runGate: AuthzCheck = { ...RUN_GATE_CHECKS.agent, resourceId: "agt_1" };
|
|
47
|
-
const sessionGate: AuthzCheck = {
|
|
48
|
-
...RUN_GATE_CHECKS.session,
|
|
49
|
-
resourceId: "ses_1",
|
|
50
|
-
};
|
|
51
|
-
const notRunGate: AuthzCheck = {
|
|
52
|
-
permission: IamPermission.can_edit,
|
|
53
|
-
resourceKind: ApiResourceKind.agent_execution,
|
|
54
|
-
resourceId: "aex_1",
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
function recording(answer: AuthzDecision) {
|
|
58
|
-
const seen: Array<{ caller: CallerIdentity; check: AuthzCheck }> = [];
|
|
59
|
-
const inner: Authorizer = {
|
|
60
|
-
authorize(caller, check) {
|
|
61
|
-
seen.push({ caller, check });
|
|
62
|
-
return Promise.resolve(answer);
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
return { inner, seen };
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
describe("newLaneAdmittedAuthorizer", () => {
|
|
69
|
-
it("an admitted lane on a run-gate check is allowed without consulting the inner Authorizer", async () => {
|
|
70
|
-
const { inner, seen } = recording({ kind: "deny", reason: "would deny" });
|
|
71
|
-
const authorizer = newLaneAdmittedAuthorizer(inner, isWorkflowRunner);
|
|
72
|
-
expect(await authorizer.authorize(WORKFLOW_RUNNER, runGate)).toEqual({
|
|
73
|
-
kind: "allow",
|
|
74
|
-
});
|
|
75
|
-
expect(await authorizer.authorize(WORKFLOW_RUNNER, sessionGate)).toEqual({
|
|
76
|
-
kind: "allow",
|
|
77
|
-
});
|
|
78
|
-
expect(seen).toEqual([]);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it("an admitted lane on a NON-run-gate check reaches the inner Authorizer untouched — the reach is the run gate alone", async () => {
|
|
82
|
-
const { inner, seen } = recording({ kind: "deny", reason: "not yours" });
|
|
83
|
-
const authorizer = newLaneAdmittedAuthorizer(inner, isWorkflowRunner);
|
|
84
|
-
expect(await authorizer.authorize(WORKFLOW_RUNNER, notRunGate)).toEqual({
|
|
85
|
-
kind: "deny",
|
|
86
|
-
reason: "not yours",
|
|
87
|
-
});
|
|
88
|
-
expect(seen).toEqual([{ caller: WORKFLOW_RUNNER, check: notRunGate }]);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it.each([
|
|
92
|
-
["an agent-bound runner", AGENT_RUNNER],
|
|
93
|
-
["a person", PERSON],
|
|
94
|
-
])(
|
|
95
|
-
"%s on a run-gate check is checked by the inner Authorizer as themselves",
|
|
96
|
-
async (_label, caller) => {
|
|
97
|
-
const { inner, seen } = recording({ kind: "not-found" });
|
|
98
|
-
const authorizer = newLaneAdmittedAuthorizer(inner, isWorkflowRunner);
|
|
99
|
-
expect(await authorizer.authorize(caller, runGate)).toEqual({
|
|
100
|
-
kind: "not-found",
|
|
101
|
-
});
|
|
102
|
-
expect(seen).toEqual([{ caller, check: runGate }]);
|
|
103
|
-
},
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
it("an unavailable answer off the run gate is returned as-is — the decorator never masks a fault", async () => {
|
|
107
|
-
const cause = new Error("evaluator down");
|
|
108
|
-
const { inner } = recording({ kind: "unavailable", cause });
|
|
109
|
-
const authorizer = newLaneAdmittedAuthorizer(inner, isWorkflowRunner);
|
|
110
|
-
expect(await authorizer.authorize(PERSON, runGate)).toEqual({
|
|
111
|
-
kind: "unavailable",
|
|
112
|
-
cause,
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lane admission over the Authorizer seam — open source's rendering of
|
|
3
|
-
* the cloud's decorator (stigmer-cloud `authorizer/lane-admission.ts`,
|
|
4
|
-
* stigmer-cloud#709), composed around the built-in Authorizer under the
|
|
5
|
-
* built-in authorization posture (boot/compose.ts).
|
|
6
|
-
*
|
|
7
|
-
* The OSS AuthorizeRunTarget step asks the Authorizer, for every caller
|
|
8
|
-
* but the internal class, whether the caller may run what a session or
|
|
9
|
-
* execution targets — the run-gate checks (`isRunGateCheck`, the
|
|
10
|
-
* OSS-owned definition of that set: `can_execute` on the blueprints and
|
|
11
|
-
* instances, `can_create_execution_in` on a session). A runner acting
|
|
12
|
-
* for a WORKFLOW execution creates the workflow's child agent executions
|
|
13
|
-
* (the `agent_call` activity), and it does so AS THE HUMAN whose workflow
|
|
14
|
-
* it is (runnerauth/runner-subject-verifier.ts). Checked as that human,
|
|
15
|
-
* a member running an organization-visible workflow that calls another
|
|
16
|
-
* member's private agent would be refused at the child create — but
|
|
17
|
-
* the parent workflow execution already passed its own run gate, and
|
|
18
|
-
* the human's visibility of the agents a shared workflow calls is not
|
|
19
|
-
* the question. The cloud admits its `workflow_sandbox` lane on exactly
|
|
20
|
-
* these checks for exactly this reason; this decorator gives an
|
|
21
|
-
* enforcing self-host the same answer, so a workflow behaves the same in
|
|
22
|
-
* both editions (the parent program's rule: nothing diverges silently).
|
|
23
|
-
*
|
|
24
|
-
* Why a predicate and not a class set: the cloud keys its decorator on
|
|
25
|
-
* `callerClass` because there the class IS the token type. In open
|
|
26
|
-
* source the class is `runner` for every bound execution, and the
|
|
27
|
-
* binding's KIND lives in the token, readable by the one function that
|
|
28
|
-
* interprets runner tokens (`isWorkflowBoundRunner` in
|
|
29
|
-
* runnerauth/built-in-runner-credential-provider.ts). Handing that
|
|
30
|
-
* reading in as `isAdmittedLane` keeps this module free of token
|
|
31
|
-
* knowledge and lets the cloud adopt the same shape later without a
|
|
32
|
-
* second class name. An AGENT-bound runner is NOT admitted: a subagent
|
|
33
|
-
* create is checked as the human, the cloud's `sandbox` posture.
|
|
34
|
-
*
|
|
35
|
-
* Narrow by construction: an admitted lane on any NON-run-gate check,
|
|
36
|
-
* and any other caller on any check, delegate untouched. The cloud's
|
|
37
|
-
* header records one caveat — a human who can view a workflow execution
|
|
38
|
-
* can exchange for its token and replay it against the run gate. Open
|
|
39
|
-
* source has no such caveat: under this posture the exchange is a mint
|
|
40
|
-
* gate that answers only the run's own person (the built-in provider's
|
|
41
|
-
* exchangeScopedToken, runnerauth/built-in-runner-credential-provider.ts),
|
|
42
|
-
* so the only human who can hold a workflow's credential is the one whose
|
|
43
|
-
* workflow it is — and their own run gate already passed.
|
|
44
|
-
*/
|
|
45
|
-
import type { CallerIdentity } from "../extensions/identity.js";
|
|
46
|
-
import type {
|
|
47
|
-
Authorizer,
|
|
48
|
-
AuthzCheck,
|
|
49
|
-
AuthzDecision,
|
|
50
|
-
} from "../extensions/authorizer.js";
|
|
51
|
-
import { isRunGateCheck } from "../pipeline/steps/authorize-run-target.js";
|
|
52
|
-
|
|
53
|
-
const ADMITTED: AuthzDecision = { kind: "allow" };
|
|
54
|
-
|
|
55
|
-
/** Whether `caller` is a lane whose admission to CREATE a run was decided upstream. */
|
|
56
|
-
export type LaneAdmissionPredicate = (caller: CallerIdentity) => boolean;
|
|
57
|
-
|
|
58
|
-
export function newLaneAdmittedAuthorizer(
|
|
59
|
-
inner: Authorizer,
|
|
60
|
-
isAdmittedLane: LaneAdmissionPredicate,
|
|
61
|
-
): Authorizer {
|
|
62
|
-
return {
|
|
63
|
-
authorize(
|
|
64
|
-
caller: CallerIdentity,
|
|
65
|
-
check: AuthzCheck,
|
|
66
|
-
): Promise<AuthzDecision> {
|
|
67
|
-
if (isRunGateCheck(check) && isAdmittedLane(caller)) {
|
|
68
|
-
return Promise.resolve(ADMITTED);
|
|
69
|
-
}
|
|
70
|
-
return inner.authorize(caller, check);
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|