@stigmer/server 3.15.3-dev.20260914121148 → 3.16.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/README.md +3 -3
- package/dist/archive/content-store.d.ts +35 -0
- package/dist/archive/content-store.d.ts.map +1 -0
- package/dist/archive/content-store.js +98 -0
- package/dist/archive/content-store.js.map +1 -0
- package/dist/archive/inflate.d.ts +22 -0
- package/dist/archive/inflate.d.ts.map +1 -0
- package/dist/archive/inflate.js +75 -0
- package/dist/archive/inflate.js.map +1 -0
- package/dist/archive/limits.d.ts +33 -0
- package/dist/archive/limits.d.ts.map +1 -0
- package/dist/archive/limits.js +31 -0
- package/dist/archive/limits.js.map +1 -0
- package/dist/archive/open.d.ts +24 -0
- package/dist/archive/open.d.ts.map +1 -0
- package/dist/archive/open.js +93 -0
- package/dist/archive/open.js.map +1 -0
- package/dist/{domain/skill/storage → archive}/prefilter.d.ts +5 -0
- package/dist/archive/prefilter.d.ts.map +1 -0
- package/dist/archive/prefilter.js.map +1 -0
- package/dist/archive/write.d.ts +8 -0
- package/dist/archive/write.d.ts.map +1 -0
- package/dist/archive/write.js +44 -0
- package/dist/archive/write.js.map +1 -0
- package/dist/authorization/authorizer.d.ts +98 -0
- package/dist/authorization/authorizer.d.ts.map +1 -0
- package/dist/authorization/authorizer.js +156 -0
- package/dist/authorization/authorizer.js.map +1 -0
- package/dist/authorization/derived-tuples.d.ts +42 -0
- package/dist/authorization/derived-tuples.d.ts.map +1 -0
- package/dist/authorization/derived-tuples.js +240 -0
- package/dist/authorization/derived-tuples.js.map +1 -0
- package/dist/authorization/evaluator.d.ts +66 -0
- package/dist/authorization/evaluator.d.ts.map +1 -0
- package/dist/authorization/evaluator.js +153 -0
- package/dist/authorization/evaluator.js.map +1 -0
- package/dist/authorization/facts.d.ts +29 -0
- package/dist/authorization/facts.d.ts.map +1 -0
- package/dist/authorization/facts.js +17 -0
- package/dist/authorization/facts.js.map +1 -0
- package/dist/authorization/lane-admission.d.ts +50 -0
- package/dist/authorization/lane-admission.d.ts.map +1 -0
- package/dist/authorization/lane-admission.js +13 -0
- package/dist/authorization/lane-admission.js.map +1 -0
- package/dist/authorization/list-read-scope.d.ts +18 -0
- package/dist/authorization/list-read-scope.d.ts.map +1 -0
- package/dist/authorization/list-read-scope.js +155 -0
- package/dist/authorization/list-read-scope.js.map +1 -0
- package/dist/authorization/model/agent.d.ts +2 -0
- package/dist/authorization/model/agent.d.ts.map +1 -0
- package/dist/authorization/model/agent.js +42 -0
- package/dist/authorization/model/agent.js.map +1 -0
- package/dist/authorization/model/agent_channel.d.ts +2 -0
- package/dist/authorization/model/agent_channel.d.ts.map +1 -0
- package/dist/authorization/model/agent_channel.js +38 -0
- package/dist/authorization/model/agent_channel.js.map +1 -0
- package/dist/authorization/model/agent_execution.d.ts +2 -0
- package/dist/authorization/model/agent_execution.d.ts.map +1 -0
- package/dist/authorization/model/agent_execution.js +25 -0
- package/dist/authorization/model/agent_execution.js.map +1 -0
- package/dist/authorization/model/agent_instance.d.ts +2 -0
- package/dist/authorization/model/agent_instance.d.ts.map +1 -0
- package/dist/authorization/model/agent_instance.js +47 -0
- package/dist/authorization/model/agent_instance.js.map +1 -0
- package/dist/authorization/model/agent_share.d.ts +2 -0
- package/dist/authorization/model/agent_share.d.ts.map +1 -0
- package/dist/authorization/model/agent_share.js +29 -0
- package/dist/authorization/model/agent_share.js.map +1 -0
- package/dist/authorization/model/api_key.d.ts +2 -0
- package/dist/authorization/model/api_key.d.ts.map +1 -0
- package/dist/authorization/model/api_key.js +27 -0
- package/dist/authorization/model/api_key.js.map +1 -0
- package/dist/authorization/model/artifact.d.ts +2 -0
- package/dist/authorization/model/artifact.d.ts.map +1 -0
- package/dist/authorization/model/artifact.js +27 -0
- package/dist/authorization/model/artifact.js.map +1 -0
- package/dist/authorization/model/channel_app.d.ts +2 -0
- package/dist/authorization/model/channel_app.d.ts.map +1 -0
- package/dist/authorization/model/channel_app.js +28 -0
- package/dist/authorization/model/channel_app.js.map +1 -0
- package/dist/authorization/model/default-of.d.ts +38 -0
- package/dist/authorization/model/default-of.d.ts.map +1 -0
- package/dist/authorization/model/default-of.js +39 -0
- package/dist/authorization/model/default-of.js.map +1 -0
- package/dist/authorization/model/environment.d.ts +2 -0
- package/dist/authorization/model/environment.d.ts.map +1 -0
- package/dist/authorization/model/environment.js +33 -0
- package/dist/authorization/model/environment.js.map +1 -0
- package/dist/authorization/model/execution_context.d.ts +2 -0
- package/dist/authorization/model/execution_context.d.ts.map +1 -0
- package/dist/authorization/model/execution_context.js +19 -0
- package/dist/authorization/model/execution_context.js.map +1 -0
- package/dist/authorization/model/iam_policy.d.ts +2 -0
- package/dist/authorization/model/iam_policy.d.ts.map +1 -0
- package/dist/authorization/model/iam_policy.js +31 -0
- package/dist/authorization/model/iam_policy.js.map +1 -0
- package/dist/authorization/model/identity_account.d.ts +2 -0
- package/dist/authorization/model/identity_account.d.ts.map +1 -0
- package/dist/authorization/model/identity_account.js +25 -0
- package/dist/authorization/model/identity_account.js.map +1 -0
- package/dist/authorization/model/index.d.ts +36 -0
- package/dist/authorization/model/index.d.ts.map +1 -0
- package/dist/authorization/model/index.js +72 -0
- package/dist/authorization/model/index.js.map +1 -0
- package/dist/authorization/model/mcp_server.d.ts +2 -0
- package/dist/authorization/model/mcp_server.d.ts.map +1 -0
- package/dist/authorization/model/mcp_server.js +37 -0
- package/dist/authorization/model/mcp_server.js.map +1 -0
- package/dist/authorization/model/memory.d.ts +2 -0
- package/dist/authorization/model/memory.d.ts.map +1 -0
- package/dist/authorization/model/memory.js +26 -0
- package/dist/authorization/model/memory.js.map +1 -0
- package/dist/authorization/model/oauth_app.d.ts +2 -0
- package/dist/authorization/model/oauth_app.d.ts.map +1 -0
- package/dist/authorization/model/oauth_app.js +30 -0
- package/dist/authorization/model/oauth_app.js.map +1 -0
- package/dist/authorization/model/organization.d.ts +2 -0
- package/dist/authorization/model/organization.d.ts.map +1 -0
- package/dist/authorization/model/organization.js +54 -0
- package/dist/authorization/model/organization.js.map +1 -0
- package/dist/authorization/model/plugin.d.ts +2 -0
- package/dist/authorization/model/plugin.d.ts.map +1 -0
- package/dist/authorization/model/plugin.js +44 -0
- package/dist/authorization/model/plugin.js.map +1 -0
- package/dist/authorization/model/project.d.ts +2 -0
- package/dist/authorization/model/project.d.ts.map +1 -0
- package/dist/authorization/model/project.js +32 -0
- package/dist/authorization/model/project.js.map +1 -0
- package/dist/authorization/model/rewrite.d.ts +127 -0
- package/dist/authorization/model/rewrite.d.ts.map +1 -0
- package/dist/authorization/model/rewrite.js +82 -0
- package/dist/authorization/model/rewrite.js.map +1 -0
- package/dist/authorization/model/schedule.d.ts +2 -0
- package/dist/authorization/model/schedule.d.ts.map +1 -0
- package/dist/authorization/model/schedule.js +29 -0
- package/dist/authorization/model/schedule.js.map +1 -0
- package/dist/authorization/model/session.d.ts +2 -0
- package/dist/authorization/model/session.d.ts.map +1 -0
- package/dist/authorization/model/session.js +38 -0
- package/dist/authorization/model/session.js.map +1 -0
- package/dist/authorization/model/skill.d.ts +2 -0
- package/dist/authorization/model/skill.d.ts.map +1 -0
- package/dist/authorization/model/skill.js +38 -0
- package/dist/authorization/model/skill.js.map +1 -0
- package/dist/authorization/model/workflow.d.ts +2 -0
- package/dist/authorization/model/workflow.d.ts.map +1 -0
- package/dist/authorization/model/workflow.js +38 -0
- package/dist/authorization/model/workflow.js.map +1 -0
- package/dist/authorization/model/workflow_execution.d.ts +2 -0
- package/dist/authorization/model/workflow_execution.d.ts.map +1 -0
- package/dist/authorization/model/workflow_execution.js +32 -0
- package/dist/authorization/model/workflow_execution.js.map +1 -0
- package/dist/authorization/model/workflow_instance.d.ts +2 -0
- package/dist/authorization/model/workflow_instance.d.ts.map +1 -0
- package/dist/authorization/model/workflow_instance.js +92 -0
- package/dist/authorization/model/workflow_instance.js.map +1 -0
- package/dist/authorization/organization-directory.d.ts +13 -0
- package/dist/authorization/organization-directory.d.ts.map +1 -0
- package/dist/authorization/organization-directory.js +83 -0
- package/dist/authorization/organization-directory.js.map +1 -0
- package/dist/authorization/person.d.ts +42 -0
- package/dist/authorization/person.d.ts.map +1 -0
- package/dist/authorization/person.js +19 -0
- package/dist/authorization/person.js.map +1 -0
- package/dist/authorization/posture.d.ts +38 -0
- package/dist/authorization/posture.d.ts.map +1 -0
- package/dist/authorization/posture.js +7 -0
- package/dist/authorization/posture.js.map +1 -0
- package/dist/authorization/schedule-fire-caller.d.ts +12 -0
- package/dist/authorization/schedule-fire-caller.d.ts.map +1 -0
- package/dist/authorization/schedule-fire-caller.js +67 -0
- package/dist/authorization/schedule-fire-caller.js.map +1 -0
- package/dist/authorization/store-test-kit.d.ts +68 -0
- package/dist/authorization/store-test-kit.d.ts.map +1 -0
- package/dist/authorization/store-test-kit.js +311 -0
- package/dist/authorization/store-test-kit.js.map +1 -0
- package/dist/authorization/tuples.d.ts +115 -0
- package/dist/authorization/tuples.d.ts.map +1 -0
- package/dist/authorization/tuples.js +83 -0
- package/dist/authorization/tuples.js.map +1 -0
- package/dist/boot/compose.d.ts.map +1 -1
- package/dist/boot/compose.js +220 -43
- package/dist/boot/compose.js.map +1 -1
- package/dist/boot/inprocess.d.ts +12 -0
- package/dist/boot/inprocess.d.ts.map +1 -1
- package/dist/boot/inprocess.js +68 -21
- package/dist/boot/inprocess.js.map +1 -1
- package/dist/domain/agent/controller.d.ts.map +1 -1
- package/dist/domain/agent/controller.js +9 -0
- package/dist/domain/agent/controller.js.map +1 -1
- package/dist/domain/executioncontext/resolve-values-for-caller.d.ts +33 -14
- package/dist/domain/executioncontext/resolve-values-for-caller.d.ts.map +1 -1
- package/dist/domain/executioncontext/resolve-values-for-caller.js +32 -8
- package/dist/domain/executioncontext/resolve-values-for-caller.js.map +1 -1
- package/dist/domain/iampolicy/constants.d.ts +11 -0
- package/dist/domain/iampolicy/constants.d.ts.map +1 -1
- package/dist/domain/iampolicy/constants.js +11 -0
- package/dist/domain/iampolicy/constants.js.map +1 -1
- package/dist/domain/iampolicy/membership.d.ts +72 -1
- package/dist/domain/iampolicy/membership.d.ts.map +1 -1
- package/dist/domain/iampolicy/membership.js +141 -56
- package/dist/domain/iampolicy/membership.js.map +1 -1
- package/dist/domain/identityaccount/actor.d.ts +41 -0
- package/dist/domain/identityaccount/actor.d.ts.map +1 -0
- package/dist/domain/identityaccount/actor.js +34 -0
- package/dist/domain/identityaccount/actor.js.map +1 -0
- package/dist/domain/identityaccount/resolve.d.ts +19 -0
- package/dist/domain/identityaccount/resolve.d.ts.map +1 -1
- package/dist/domain/identityaccount/resolve.js +12 -0
- package/dist/domain/identityaccount/resolve.js.map +1 -1
- package/dist/domain/mcpserver/connect-execution-id.d.ts +5 -0
- package/dist/domain/mcpserver/connect-execution-id.d.ts.map +1 -0
- package/dist/domain/mcpserver/connect-execution-id.js +32 -0
- package/dist/domain/mcpserver/connect-execution-id.js.map +1 -0
- package/dist/domain/mcpserver/connect.d.ts +28 -2
- package/dist/domain/mcpserver/connect.d.ts.map +1 -1
- package/dist/domain/mcpserver/connect.js +27 -7
- package/dist/domain/mcpserver/connect.js.map +1 -1
- package/dist/domain/mcpserver/controller.d.ts.map +1 -1
- package/dist/domain/mcpserver/controller.js +9 -0
- package/dist/domain/mcpserver/controller.js.map +1 -1
- package/dist/domain/mcpserver/engine.d.ts +9 -3
- 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.js +1 -1
- package/dist/domain/mcpserver/start-connect.js.map +1 -1
- package/dist/domain/platform/controller.d.ts +24 -11
- package/dist/domain/platform/controller.d.ts.map +1 -1
- package/dist/domain/platform/controller.js.map +1 -1
- package/dist/domain/plugin/archive.d.ts +37 -0
- package/dist/domain/plugin/archive.d.ts.map +1 -0
- package/dist/domain/plugin/archive.js +50 -0
- package/dist/domain/plugin/archive.js.map +1 -0
- package/dist/domain/plugin/constants.d.ts +38 -0
- package/dist/domain/plugin/constants.d.ts.map +1 -0
- package/dist/domain/plugin/constants.js +46 -0
- package/dist/domain/plugin/constants.js.map +1 -0
- package/dist/domain/plugin/controller.d.ts +25 -0
- package/dist/domain/plugin/controller.d.ts.map +1 -0
- package/dist/domain/plugin/controller.js +493 -0
- package/dist/domain/plugin/controller.js.map +1 -0
- package/dist/domain/plugin/materialize/agent.d.ts +13 -0
- package/dist/domain/plugin/materialize/agent.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/agent.js +128 -0
- package/dist/domain/plugin/materialize/agent.js.map +1 -0
- package/dist/domain/plugin/materialize/default-agent-instructions.d.ts +22 -0
- package/dist/domain/plugin/materialize/default-agent-instructions.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/default-agent-instructions.js +31 -0
- package/dist/domain/plugin/materialize/default-agent-instructions.js.map +1 -0
- package/dist/domain/plugin/materialize/identity.d.ts +28 -0
- package/dist/domain/plugin/materialize/identity.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/identity.js +40 -0
- package/dist/domain/plugin/materialize/identity.js.map +1 -0
- package/dist/domain/plugin/materialize/mcp-servers.d.ts +15 -0
- package/dist/domain/plugin/materialize/mcp-servers.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/mcp-servers.js +131 -0
- package/dist/domain/plugin/materialize/mcp-servers.js.map +1 -0
- package/dist/domain/plugin/materialize/plan.d.ts +24 -0
- package/dist/domain/plugin/materialize/plan.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/plan.js +77 -0
- package/dist/domain/plugin/materialize/plan.js.map +1 -0
- package/dist/domain/plugin/materialize/ports.d.ts +42 -0
- package/dist/domain/plugin/materialize/ports.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/ports.js +2 -0
- package/dist/domain/plugin/materialize/ports.js.map +1 -0
- package/dist/domain/plugin/materialize/skills.d.ts +12 -0
- package/dist/domain/plugin/materialize/skills.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/skills.js +44 -0
- package/dist/domain/plugin/materialize/skills.js.map +1 -0
- package/dist/domain/plugin/materialize/workflows.d.ts +15 -0
- package/dist/domain/plugin/materialize/workflows.d.ts.map +1 -0
- package/dist/domain/plugin/materialize/workflows.js +31 -0
- package/dist/domain/plugin/materialize/workflows.js.map +1 -0
- package/dist/domain/plugin/members.d.ts +42 -0
- package/dist/domain/plugin/members.d.ts.map +1 -0
- package/dist/domain/plugin/members.js +97 -0
- package/dist/domain/plugin/members.js.map +1 -0
- package/dist/domain/plugin/overlay/documents.d.ts +31 -0
- package/dist/domain/plugin/overlay/documents.d.ts.map +1 -0
- package/dist/domain/plugin/overlay/documents.js +38 -0
- package/dist/domain/plugin/overlay/documents.js.map +1 -0
- package/dist/domain/plugin/overlay/parse.d.ts +16 -0
- package/dist/domain/plugin/overlay/parse.d.ts.map +1 -0
- package/dist/domain/plugin/overlay/parse.js +79 -0
- package/dist/domain/plugin/overlay/parse.js.map +1 -0
- package/dist/domain/plugin/overlay/sanitize.d.ts +10 -0
- package/dist/domain/plugin/overlay/sanitize.d.ts.map +1 -0
- package/dist/domain/plugin/overlay/sanitize.js +103 -0
- package/dist/domain/plugin/overlay/sanitize.js.map +1 -0
- package/dist/domain/plugin/push.d.ts +133 -0
- package/dist/domain/plugin/push.d.ts.map +1 -0
- package/dist/domain/plugin/push.js +800 -0
- package/dist/domain/plugin/push.js.map +1 -0
- package/dist/domain/plugin/search-extractor.d.ts +3 -0
- package/dist/domain/plugin/search-extractor.d.ts.map +1 -0
- package/dist/domain/plugin/search-extractor.js +41 -0
- package/dist/domain/plugin/search-extractor.js.map +1 -0
- package/dist/domain/skill/constants.d.ts +6 -11
- package/dist/domain/skill/constants.d.ts.map +1 -1
- package/dist/domain/skill/constants.js +6 -11
- package/dist/domain/skill/constants.js.map +1 -1
- package/dist/domain/skill/controller.d.ts.map +1 -1
- package/dist/domain/skill/controller.js +33 -30
- package/dist/domain/skill/controller.js.map +1 -1
- package/dist/domain/skill/push.d.ts +9 -10
- package/dist/domain/skill/push.d.ts.map +1 -1
- package/dist/domain/skill/push.js +53 -122
- package/dist/domain/skill/push.js.map +1 -1
- package/dist/domain/skill/search-extractor.d.ts.map +1 -1
- package/dist/domain/skill/search-extractor.js.map +1 -1
- package/dist/domain/skill/storage/artifact-storage.d.ts +26 -29
- package/dist/domain/skill/storage/artifact-storage.d.ts.map +1 -1
- package/dist/domain/skill/storage/artifact-storage.js +6 -103
- package/dist/domain/skill/storage/artifact-storage.js.map +1 -1
- package/dist/domain/skill/storage/zip-gate.d.ts +1 -2
- package/dist/domain/skill/storage/zip-gate.d.ts.map +1 -1
- package/dist/domain/skill/storage/zip-gate.js +56 -126
- package/dist/domain/skill/storage/zip-gate.js.map +1 -1
- package/dist/domain/skill/version-resolution.d.ts +5 -5
- package/dist/domain/skill/version-resolution.d.ts.map +1 -1
- package/dist/domain/skill/version-resolution.js +34 -216
- package/dist/domain/skill/version-resolution.js.map +1 -1
- package/dist/domain/workflow/controller.d.ts.map +1 -1
- package/dist/domain/workflow/controller.js +30 -3
- package/dist/domain/workflow/controller.js.map +1 -1
- package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -0
- package/dist/domain/workflowexecution/phases.d.ts +21 -0
- package/dist/domain/workflowexecution/phases.d.ts.map +1 -0
- package/dist/domain/workflowexecution/phases.js +31 -0
- package/dist/domain/workflowexecution/phases.js.map +1 -0
- package/dist/extensions/authorizer.d.ts +10 -5
- package/dist/extensions/authorizer.d.ts.map +1 -1
- package/dist/extensions/drivers.d.ts +4 -1
- package/dist/extensions/drivers.d.ts.map +1 -1
- package/dist/extensions/list-read-scope.d.ts +47 -20
- package/dist/extensions/list-read-scope.d.ts.map +1 -1
- package/dist/extensions/list-read-scope.js +20 -24
- package/dist/extensions/list-read-scope.js.map +1 -1
- package/dist/extensions/organization-directory.d.ts +13 -9
- package/dist/extensions/organization-directory.d.ts.map +1 -1
- package/dist/extensions/organization-directory.js.map +1 -1
- package/dist/extensions/resource-authorization.d.ts +33 -0
- package/dist/extensions/resource-authorization.d.ts.map +1 -1
- package/dist/extensions/schedule-fire-caller.d.ts +45 -18
- package/dist/extensions/schedule-fire-caller.d.ts.map +1 -1
- package/dist/extensions/schedule-fire-caller.js +12 -1
- package/dist/extensions/schedule-fire-caller.js.map +1 -1
- package/dist/identity/oidc-verifier.js +8 -1
- package/dist/identity/oidc-verifier.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline/apiresource-labels.d.ts +23 -3
- package/dist/pipeline/apiresource-labels.d.ts.map +1 -1
- package/dist/pipeline/apiresource-labels.js +20 -0
- package/dist/pipeline/apiresource-labels.js.map +1 -1
- package/dist/pipeline/apiresource-meta.d.ts +15 -0
- package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
- package/dist/pipeline/apiresource-meta.js +34 -0
- package/dist/pipeline/apiresource-meta.js.map +1 -1
- package/dist/pipeline/errors.d.ts.map +1 -1
- package/dist/pipeline/errors.js.map +1 -1
- package/dist/pipeline/steps/authorization-facts.d.ts +12 -0
- package/dist/pipeline/steps/authorization-facts.d.ts.map +1 -0
- package/dist/pipeline/steps/authorization-facts.js +100 -0
- package/dist/pipeline/steps/authorization-facts.js.map +1 -0
- package/dist/pipeline/steps/delete.d.ts.map +1 -1
- package/dist/pipeline/steps/delete.js +1 -1
- package/dist/pipeline/steps/delete.js.map +1 -1
- package/dist/pipeline/steps/duplicate.d.ts.map +1 -1
- package/dist/pipeline/steps/duplicate.js.map +1 -1
- package/dist/pipeline/steps/guard-memory-capture.d.ts.map +1 -1
- package/dist/pipeline/steps/guard-memory-capture.js +5 -3
- package/dist/pipeline/steps/guard-memory-capture.js.map +1 -1
- package/dist/pipeline/steps/guard-plugin-managed.d.ts +12 -0
- package/dist/pipeline/steps/guard-plugin-managed.d.ts.map +1 -0
- package/dist/pipeline/steps/guard-plugin-managed.js +96 -0
- package/dist/pipeline/steps/guard-plugin-managed.js.map +1 -0
- package/dist/pipeline/steps/guard-reserved-labels.d.ts +16 -2
- package/dist/pipeline/steps/guard-reserved-labels.d.ts.map +1 -1
- package/dist/pipeline/steps/guard-reserved-labels.js +11 -7
- package/dist/pipeline/steps/guard-reserved-labels.js.map +1 -1
- package/dist/pipeline/steps/helpers.d.ts.map +1 -1
- package/dist/pipeline/steps/helpers.js.map +1 -1
- package/dist/pipeline/steps/index-search.d.ts.map +1 -1
- package/dist/pipeline/steps/index-search.js.map +1 -1
- package/dist/pipeline/steps/load-existing.d.ts.map +1 -1
- package/dist/pipeline/steps/load-existing.js +1 -1
- package/dist/pipeline/steps/load-existing.js.map +1 -1
- package/dist/pipeline/steps/references.d.ts +16 -0
- package/dist/pipeline/steps/references.d.ts.map +1 -1
- package/dist/pipeline/steps/references.js +18 -0
- package/dist/pipeline/steps/references.js.map +1 -1
- package/dist/pipeline/steps/resolve-artifact-source.d.ts +35 -0
- package/dist/pipeline/steps/resolve-artifact-source.d.ts.map +1 -0
- package/dist/pipeline/steps/resolve-artifact-source.js +27 -0
- package/dist/pipeline/steps/resolve-artifact-source.js.map +1 -0
- package/dist/pipeline/steps/server-stamped-reserved-labels.d.ts.map +1 -1
- package/dist/pipeline/steps/server-stamped-reserved-labels.js.map +1 -1
- package/dist/pipeline/steps/slug.d.ts.map +1 -1
- package/dist/pipeline/steps/slug.js.map +1 -1
- package/dist/pipeline/steps/validate-visibility.d.ts +9 -0
- package/dist/pipeline/steps/validate-visibility.d.ts.map +1 -1
- package/dist/pipeline/steps/validate-visibility.js +6 -1
- package/dist/pipeline/steps/validate-visibility.js.map +1 -1
- package/dist/pipeline/steps/validation.d.ts.map +1 -1
- package/dist/pipeline/steps/validation.js.map +1 -1
- package/dist/pipeline/steps/version-archive.d.ts +63 -0
- package/dist/pipeline/steps/version-archive.d.ts.map +1 -0
- package/dist/pipeline/steps/version-archive.js +129 -0
- package/dist/pipeline/steps/version-archive.js.map +1 -0
- package/dist/pipeline/steps/version-history.d.ts +49 -0
- package/dist/pipeline/steps/version-history.d.ts.map +1 -0
- package/dist/pipeline/steps/version-history.js +229 -0
- package/dist/pipeline/steps/version-history.js.map +1 -0
- package/dist/pipeline/steps/visibility-gates.d.ts +8 -0
- package/dist/pipeline/steps/visibility-gates.d.ts.map +1 -1
- package/dist/pipeline/steps/visibility-gates.js +7 -2
- package/dist/pipeline/steps/visibility-gates.js.map +1 -1
- package/dist/query/search/registry.d.ts.map +1 -1
- package/dist/query/search/registry.js +2 -0
- package/dist/query/search/registry.js.map +1 -1
- package/dist/runnerauth/bound-execution.d.ts +27 -0
- package/dist/runnerauth/bound-execution.d.ts.map +1 -0
- package/dist/runnerauth/bound-execution.js +137 -0
- package/dist/runnerauth/bound-execution.js.map +1 -0
- package/dist/runnerauth/built-in-runner-credential-provider.d.ts +28 -0
- package/dist/runnerauth/built-in-runner-credential-provider.d.ts.map +1 -0
- package/dist/runnerauth/built-in-runner-credential-provider.js +217 -0
- package/dist/runnerauth/built-in-runner-credential-provider.js.map +1 -0
- package/dist/runnerauth/constants.d.ts +63 -0
- package/dist/runnerauth/constants.d.ts.map +1 -0
- package/dist/runnerauth/constants.js +63 -0
- package/dist/runnerauth/constants.js.map +1 -0
- package/dist/runnerauth/dispatch-credential.d.ts +38 -0
- package/dist/runnerauth/dispatch-credential.d.ts.map +1 -0
- package/dist/runnerauth/dispatch-credential.js +17 -0
- package/dist/runnerauth/dispatch-credential.js.map +1 -0
- package/dist/runnerauth/runner-credential-provider.d.ts +49 -11
- package/dist/runnerauth/runner-credential-provider.d.ts.map +1 -1
- package/dist/runnerauth/runner-credential-provider.js +16 -4
- package/dist/runnerauth/runner-credential-provider.js.map +1 -1
- package/dist/runnerauth/runner-subject-verifier.d.ts +14 -0
- package/dist/runnerauth/runner-subject-verifier.d.ts.map +1 -0
- package/dist/runnerauth/runner-subject-verifier.js +115 -0
- package/dist/runnerauth/runner-subject-verifier.js.map +1 -0
- package/dist/runnerauth/runnerauth.d.ts +33 -4
- package/dist/runnerauth/runnerauth.d.ts.map +1 -1
- package/dist/runnerauth/runnerauth.js +131 -35
- package/dist/runnerauth/runnerauth.js.map +1 -1
- package/dist/temporal/agentexecution/engine-client.d.ts +13 -0
- package/dist/temporal/agentexecution/engine-client.d.ts.map +1 -1
- package/dist/temporal/agentexecution/engine-client.js +10 -2
- package/dist/temporal/agentexecution/engine-client.js.map +1 -1
- package/dist/temporal/agentexecution/workflow-input.d.ts +13 -0
- package/dist/temporal/agentexecution/workflow-input.d.ts.map +1 -1
- package/dist/temporal/agentexecution/workflows/invoke-agent-execution.d.ts.map +1 -1
- package/dist/temporal/agentexecution/workflows/invoke-agent-execution.js +35 -31
- package/dist/temporal/agentexecution/workflows/invoke-agent-execution.js.map +1 -1
- package/dist/temporal/schedule/run-starter.d.ts +1 -1
- package/dist/temporal/schedule/run-starter.d.ts.map +1 -1
- package/dist/temporal/schedule/run-starter.js +14 -1
- package/dist/temporal/schedule/run-starter.js.map +1 -1
- package/dist/temporal/workflowexecution/engine-client.d.ts +24 -0
- package/dist/temporal/workflowexecution/engine-client.d.ts.map +1 -1
- package/dist/temporal/workflowexecution/engine-client.js +26 -19
- package/dist/temporal/workflowexecution/engine-client.js.map +1 -1
- package/dist/temporal/workflowexecution/workflow-input.d.ts +14 -0
- package/dist/temporal/workflowexecution/workflow-input.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/archive/__tests__/archive.test.ts +233 -0
- package/src/{domain/skill → archive}/__tests__/prefilter.test.ts +1 -1
- package/src/archive/content-store.ts +132 -0
- package/src/archive/inflate.ts +107 -0
- package/src/archive/limits.ts +42 -0
- package/src/archive/open.ts +131 -0
- package/src/{domain/skill/storage → archive}/prefilter.ts +5 -0
- package/src/archive/write.ts +54 -0
- package/src/authorization/README.md +124 -0
- package/src/authorization/__tests__/authorizer.test.ts +719 -0
- package/src/authorization/__tests__/derived-tuples.test.ts +802 -0
- package/src/authorization/__tests__/drivers.ts +70 -0
- package/src/authorization/__tests__/evaluator.test.ts +359 -0
- package/src/authorization/__tests__/facts.test.ts +155 -0
- package/src/authorization/__tests__/fixtures/fga/agent-channel-owner.fga.yaml +112 -0
- package/src/authorization/__tests__/fixtures/fga/agent-share-owner.fga.yaml +109 -0
- package/src/authorization/__tests__/fixtures/fga/artifact-org-and-owner.fga.yaml +128 -0
- package/src/authorization/__tests__/fixtures/fga/blueprint-private-visibility.fga.yaml +410 -0
- package/src/authorization/__tests__/fixtures/fga/channel-app-owner.fga.yaml +125 -0
- package/src/authorization/__tests__/fixtures/fga/channel-participation.fga.yaml +201 -0
- package/src/authorization/__tests__/fixtures/fga/channel-session-visibility.fga.yaml +187 -0
- package/src/authorization/__tests__/fixtures/fga/cross-org-share-creation.fga.yaml +98 -0
- package/src/authorization/__tests__/fixtures/fga/default-instance-inheritance.fga.yaml +271 -0
- package/src/authorization/__tests__/fixtures/fga/memory-subject-only.fga.yaml +72 -0
- package/src/authorization/__tests__/fixtures/fga/org-admin-owner-inheritance.fga.yaml +328 -0
- package/src/authorization/__tests__/fixtures/fga/org-shared-environment.fga.yaml +144 -0
- package/src/authorization/__tests__/fixtures/fga/platform-visibility.fga.yaml +223 -0
- package/src/authorization/__tests__/fixtures/fga/provider-standing-viewer.fga.yaml +40 -0
- package/src/authorization/__tests__/fixtures/fga/public-visibility-setter.fga.yaml +52 -0
- package/src/authorization/__tests__/fixtures/fga/reserved-label-writer.fga.yaml +41 -0
- package/src/authorization/__tests__/fixtures/fga/schedule-owner.fga.yaml +113 -0
- package/src/authorization/__tests__/fixtures/fga/schedule-session-visibility.fga.yaml +214 -0
- package/src/authorization/__tests__/fixtures/fga/session-personal-resource.fga.yaml +117 -0
- package/src/authorization/__tests__/fixtures/fga/workflow-execution-sharing.fga.yaml +192 -0
- package/src/authorization/__tests__/lane-admission.test.ts +115 -0
- package/src/authorization/__tests__/list-read-scope.measure.test.ts +317 -0
- package/src/authorization/__tests__/list-read-scope.test.ts +796 -0
- package/src/authorization/__tests__/organization-directory.test.ts +236 -0
- package/src/authorization/__tests__/person.test.ts +114 -0
- package/src/authorization/__tests__/posture.test.ts +25 -0
- package/src/authorization/__tests__/schedule-fire-caller.test.ts +134 -0
- package/src/authorization/__tests__/store-tests.test.ts +306 -0
- package/src/authorization/__tests__/support.ts +101 -0
- package/src/authorization/__tests__/tuples.test.ts +62 -0
- package/src/authorization/__tests__/wire-permissions.test.ts +154 -0
- package/src/authorization/authorizer.ts +208 -0
- package/src/authorization/derived-tuples.ts +384 -0
- package/src/authorization/evaluator.ts +283 -0
- package/src/authorization/facts.ts +47 -0
- package/src/authorization/lane-admission.ts +73 -0
- package/src/authorization/list-read-scope.ts +216 -0
- package/src/authorization/model/__tests__/registry.test.ts +317 -0
- package/src/authorization/model/agent.ts +64 -0
- package/src/authorization/model/agent_channel.ts +49 -0
- package/src/authorization/model/agent_execution.ts +33 -0
- package/src/authorization/model/agent_instance.ts +66 -0
- package/src/authorization/model/agent_share.ts +40 -0
- package/src/authorization/model/api_key.ts +28 -0
- package/src/authorization/model/artifact.ts +38 -0
- package/src/authorization/model/channel_app.ts +39 -0
- package/src/authorization/model/default-of.ts +99 -0
- package/src/authorization/model/environment.ts +48 -0
- package/src/authorization/model/execution_context.ts +20 -0
- package/src/authorization/model/iam_policy.ts +42 -0
- package/src/authorization/model/identity_account.ts +26 -0
- package/src/authorization/model/index.ts +108 -0
- package/src/authorization/model/mcp_server.ts +59 -0
- package/src/authorization/model/memory.ts +27 -0
- package/src/authorization/model/oauth_app.ts +42 -0
- package/src/authorization/model/organization.ts +55 -0
- package/src/authorization/model/plugin.ts +66 -0
- package/src/authorization/model/project.ts +47 -0
- package/src/authorization/model/rewrite.ts +213 -0
- package/src/authorization/model/schedule.ts +40 -0
- package/src/authorization/model/session.ts +50 -0
- package/src/authorization/model/skill.ts +60 -0
- package/src/authorization/model/workflow.ts +60 -0
- package/src/authorization/model/workflow_execution.ts +44 -0
- package/src/authorization/model/workflow_instance.ts +122 -0
- package/src/authorization/organization-directory.ts +114 -0
- package/src/authorization/person.ts +68 -0
- package/src/authorization/posture.ts +49 -0
- package/src/authorization/schedule-fire-caller.ts +87 -0
- package/src/authorization/store-test-kit.ts +454 -0
- package/src/authorization/tuples.ts +190 -0
- package/src/boot/compose.ts +246 -52
- package/src/boot/inprocess.ts +115 -31
- package/src/domain/agent/controller.ts +11 -0
- package/src/domain/executioncontext/__tests__/executioncontext.test.ts +104 -0
- package/src/domain/executioncontext/__tests__/resolve-values-capability.test.ts +33 -4
- package/src/domain/executioncontext/resolve-values-for-caller.ts +79 -22
- package/src/domain/iampolicy/__tests__/membership.test.ts +357 -3
- package/src/domain/iampolicy/constants.ts +12 -0
- package/src/domain/iampolicy/membership.ts +221 -66
- package/src/domain/identityaccount/__tests__/account-for-stamp.test.ts +111 -0
- package/src/domain/identityaccount/actor.ts +84 -0
- package/src/domain/identityaccount/resolve.ts +31 -0
- package/src/domain/mcpserver/__tests__/connect.test.ts +17 -2
- package/src/domain/mcpserver/connect-execution-id.ts +34 -0
- package/src/domain/mcpserver/connect.ts +38 -3
- package/src/domain/mcpserver/controller.ts +11 -0
- package/src/domain/mcpserver/engine.ts +9 -3
- package/src/domain/mcpserver/start-connect.ts +1 -1
- package/src/domain/platform/controller.ts +24 -11
- package/src/domain/plugin/__tests__/materialize.test.ts +303 -0
- package/src/domain/plugin/__tests__/overlay-parse.test.ts +85 -0
- package/src/domain/plugin/__tests__/plugin.test.ts +796 -0
- package/src/domain/plugin/__tests__/sanitize.test.ts +174 -0
- package/src/domain/plugin/archive.ts +89 -0
- package/src/domain/plugin/constants.ts +53 -0
- package/src/domain/plugin/controller.ts +913 -0
- package/src/domain/plugin/materialize/agent.ts +186 -0
- package/src/domain/plugin/materialize/default-agent-instructions.ts +59 -0
- package/src/domain/plugin/materialize/identity.ts +67 -0
- package/src/domain/plugin/materialize/mcp-servers.ts +175 -0
- package/src/domain/plugin/materialize/plan.ts +124 -0
- package/src/domain/plugin/materialize/ports.ts +53 -0
- package/src/domain/plugin/materialize/skills.ts +68 -0
- package/src/domain/plugin/materialize/workflows.ts +51 -0
- package/src/domain/plugin/members.ts +180 -0
- package/src/domain/plugin/overlay/documents.ts +78 -0
- package/src/domain/plugin/overlay/parse.ts +115 -0
- package/src/domain/plugin/overlay/sanitize.ts +151 -0
- package/src/domain/plugin/push.ts +1062 -0
- package/src/domain/plugin/search-extractor.ts +60 -0
- package/src/domain/skill/constants.ts +11 -14
- package/src/domain/skill/controller.ts +44 -36
- package/src/domain/skill/push.ts +61 -156
- package/src/domain/skill/search-extractor.ts +3 -1
- package/src/domain/skill/storage/artifact-storage.ts +23 -124
- package/src/domain/skill/storage/zip-gate.ts +58 -154
- package/src/domain/skill/version-resolution.ts +67 -269
- package/src/domain/workflow/controller.ts +38 -4
- package/src/domain/workflow/registry/data/task-kind-registry.json +1 -0
- package/src/domain/workflowexecution/__tests__/phases.test.ts +58 -0
- package/src/domain/workflowexecution/phases.ts +33 -0
- package/src/extensions/__tests__/built-in-authorization-composed.test.ts +835 -0
- package/src/extensions/__tests__/composed-support.ts +32 -1
- package/src/extensions/__tests__/extension-composition.test.ts +42 -1
- package/src/extensions/__tests__/list-read-scope.test.ts +137 -33
- package/src/extensions/__tests__/role-reconciliation-composed.test.ts +209 -0
- package/src/extensions/__tests__/tier-truthfulness.test.ts +6 -14
- package/src/extensions/authorizer.ts +10 -5
- package/src/extensions/drivers.ts +4 -1
- package/src/extensions/list-read-scope.ts +67 -45
- package/src/extensions/organization-directory.ts +13 -9
- package/src/extensions/resource-authorization.ts +34 -0
- package/src/extensions/schedule-fire-caller.ts +49 -18
- package/src/identity/__tests__/oidc-verifier.test.ts +22 -0
- package/src/identity/oidc-verifier.ts +8 -1
- package/src/index.ts +51 -1
- package/src/pipeline/__tests__/kind-by-id-prefix.test.ts +75 -0
- package/src/pipeline/__tests__/router-transport.test.ts +1 -3
- package/src/pipeline/apiresource-labels.ts +31 -3
- package/src/pipeline/apiresource-meta.ts +41 -0
- package/src/pipeline/errors.ts +5 -5
- package/src/pipeline/steps/__tests__/authorize-annotation-completeness.test.ts +1 -20
- package/src/pipeline/steps/__tests__/guard-memory-capture.test.ts +58 -44
- package/src/pipeline/steps/__tests__/guard-plugin-managed.test.ts +151 -0
- package/src/pipeline/steps/__tests__/guard-reserved-labels.test.ts +83 -8
- package/src/pipeline/steps/authorization-facts.ts +131 -0
- package/src/pipeline/steps/delete.ts +11 -3
- package/src/pipeline/steps/duplicate.ts +8 -2
- package/src/pipeline/steps/guard-memory-capture.ts +5 -3
- package/src/pipeline/steps/guard-plugin-managed.ts +133 -0
- package/src/pipeline/steps/guard-reserved-labels.ts +29 -8
- package/src/pipeline/steps/helpers.ts +4 -1
- package/src/pipeline/steps/index-search.ts +28 -15
- package/src/pipeline/steps/load-existing.ts +12 -3
- package/src/pipeline/steps/references.ts +36 -2
- package/src/pipeline/steps/resolve-artifact-source.ts +66 -0
- package/src/pipeline/steps/server-stamped-reserved-labels.ts +2 -1
- package/src/pipeline/steps/slug.ts +7 -2
- package/src/pipeline/steps/validate-visibility.ts +9 -2
- package/src/pipeline/steps/validation.ts +3 -1
- package/src/pipeline/steps/version-archive.ts +225 -0
- package/src/pipeline/steps/version-history.ts +362 -0
- package/src/pipeline/steps/visibility-gates.ts +12 -9
- package/src/query/README.md +1 -1
- package/src/query/search/__tests__/criteria.test.ts +6 -7
- package/src/query/search/__tests__/query-store.test.ts +9 -2
- package/src/query/search/__tests__/registry.test.ts +6 -4
- package/src/query/search/registry.ts +6 -1
- package/src/runnerauth/__tests__/bound-execution.test.ts +334 -0
- package/src/runnerauth/__tests__/built-in-runner-credential-provider.test.ts +516 -0
- package/src/runnerauth/__tests__/dispatch-credential.test.ts +94 -0
- package/src/runnerauth/__tests__/runner-credential-provider.test.ts +27 -0
- package/src/runnerauth/__tests__/runner-subject-composed.test.ts +497 -0
- package/src/runnerauth/__tests__/runner-subject-verifier.test.ts +541 -0
- package/src/runnerauth/bound-execution.ts +270 -0
- package/src/runnerauth/built-in-runner-credential-provider.ts +300 -0
- package/src/runnerauth/constants.ts +74 -0
- package/src/runnerauth/dispatch-credential.ts +63 -0
- package/src/runnerauth/runner-credential-provider.ts +60 -11
- package/src/runnerauth/runner-subject-verifier.ts +152 -0
- package/src/runnerauth/runnerauth.ts +148 -38
- package/src/temporal/agentexecution/__tests__/engine-client.test.ts +107 -38
- package/src/temporal/agentexecution/__tests__/invoke-workflow.test.ts +105 -2
- package/src/temporal/agentexecution/engine-client.ts +27 -2
- package/src/temporal/agentexecution/workflow-input.ts +13 -0
- package/src/temporal/agentexecution/workflows/invoke-agent-execution.ts +90 -44
- package/src/temporal/schedule/__tests__/run-starter.test.ts +86 -24
- package/src/temporal/schedule/run-starter.ts +31 -8
- package/src/temporal/workflowexecution/__tests__/engine-client.test.ts +139 -33
- package/src/temporal/workflowexecution/engine-client.ts +48 -21
- package/src/temporal/workflowexecution/workflow-input.ts +14 -0
- package/dist/domain/skill/storage/prefilter.d.ts.map +0 -1
- package/dist/domain/skill/storage/prefilter.js.map +0 -1
- /package/dist/{domain/skill/storage → archive}/prefilter.js +0 -0
|
@@ -1,34 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Execution-scoped runner tokens — ports pkg/runnerauth/runnerauth.go
|
|
3
|
-
* (oss#535)
|
|
3
|
+
* (oss#535): one HS256 token type, bound to ONE execution, serving two
|
|
4
|
+
* lanes that the server's posture decides between.
|
|
4
5
|
*
|
|
5
6
|
* WHY: since oss#535 the EC read RPCs redact is_secret values for every
|
|
6
7
|
* caller — the same contract the cloud edition enforces — but the runner
|
|
7
8
|
* still needs the real values to serve executions. Cloud distinguishes the
|
|
8
|
-
* runner by the token_type claim of its platform-minted credential;
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* the minimal equivalent: the platform exchange mints a short-lived token
|
|
13
|
-
* bound to ONE execution, and the EC handler decrypts only for a token
|
|
14
|
-
* whose binding matches the requested ExecutionContext.
|
|
9
|
+
* runner by the token_type claim of its platform-minted credential; this
|
|
10
|
+
* module is the open-source equivalent: a token whose binding names the
|
|
11
|
+
* execution it serves, and the EC handler decrypts only for a token whose
|
|
12
|
+
* binding matches the requested ExecutionContext.
|
|
15
13
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
14
|
+
* THE TWO LANES, BY POSTURE. Until 2026-09-16 this header stated the
|
|
15
|
+
* token was "deliberately NOT an IdentityVerifier on the chassis:
|
|
16
|
+
* presenting it must never change the caller's identity". That sentence
|
|
17
|
+
* described a server that did not enforce authorization: with the
|
|
18
|
+
* permissive Authorizer, the runner's operator key could do everything,
|
|
19
|
+
* so the token only needed to unlock one decrypt lane. Under the built-in
|
|
20
|
+
* authorization posture (an OIDC self-host; authorization/posture.ts) the
|
|
21
|
+
* server enforces the cloud's model, and a runner keyed with one
|
|
22
|
+
* operator's API key could report on nobody's run but the operator's.
|
|
23
|
+
* So under that posture the SAME token is also an identity
|
|
24
|
+
* (runner-subject-verifier.ts): it admits its bearer as the human whose
|
|
25
|
+
* run it is, the person the execution row's creator stamp names, for as
|
|
26
|
+
* long as that run lives. The runner acts as the run's human, which is
|
|
27
|
+
* what the cloud's managed sandbox has always done. Under trusted-local
|
|
28
|
+
* no verifier is composed and the token stays the decrypt-lane
|
|
29
|
+
* discriminator it was: anyone who can reach that server can mint one,
|
|
30
|
+
* and there is one person to be.
|
|
23
31
|
*
|
|
24
32
|
* Token shape (field names are wire contract — the runner's
|
|
25
33
|
* token-claims.ts reads token_type by name):
|
|
26
34
|
* {"token_type":"execution_scoped","execution_id":"<id>","iat":…,"exp":…}
|
|
27
35
|
*
|
|
28
|
-
*
|
|
29
|
-
* (
|
|
30
|
-
*
|
|
31
|
-
*
|
|
36
|
+
* Two mints, one shape:
|
|
37
|
+
* - `mint(executionId, ttl)` — the CLOCKED token: the trusted-local
|
|
38
|
+
* exchange and the connect and sandbox lanes, whose one unit of work
|
|
39
|
+
* has a bounded lifetime. `exp` is present and enforced. The connect
|
|
40
|
+
* lane's token binds no execution row but the connect's own
|
|
41
|
+
* ExecutionContext (domain/mcpserver/connect-execution-id.ts), and
|
|
42
|
+
* under the built-in posture it too is an identity: its bearer acts
|
|
43
|
+
* as the person who asked for the connect, whom that row was created
|
|
44
|
+
* by (bound-execution.ts, the `mcp-connect` binding).
|
|
45
|
+
* - `mintRunCredential(executionId)` — the RUN credential: the two
|
|
46
|
+
* execution engines put it on every dispatch's workflow input
|
|
47
|
+
* (dispatch-credential.ts), and under the built-in posture the
|
|
48
|
+
* exchange mints it too, for the run's own person only
|
|
49
|
+
* (built-in-runner-credential-provider.ts). NO `exp`. A run waits on
|
|
50
|
+
* humans with no timeout and outlives any clock; its credential's
|
|
51
|
+
* validity is the ROW's — the execution is live, or ended within a
|
|
52
|
+
* short grace (bound-execution.ts) — read by both lanes that accept
|
|
53
|
+
* the token, because a plaintext token in Temporal history must not
|
|
54
|
+
* decrypt a finished run's secrets, and the clock that prevented that
|
|
55
|
+
* is gone.
|
|
56
|
+
* `verify` enforces `exp` when present and accepts its absence; it never
|
|
57
|
+
* decides liveness, which needs the store.
|
|
58
|
+
*
|
|
59
|
+
* Consumers arrive with their own domains, through the provider seam
|
|
60
|
+
* (runner-credential-provider.ts): the platform exchange RPC and the two
|
|
61
|
+
* engine clients (mint), the executioncontext resolve step and the
|
|
62
|
+
* runner-subject verifier (verify). This module lands with the
|
|
63
|
+
* encryption sub-project because its signing key rides the shared key
|
|
64
|
+
* ladder and its boot posture is a ratified cross-domain invariant
|
|
32
65
|
* (fatal — see compose.ts).
|
|
33
66
|
*/
|
|
34
67
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
@@ -105,10 +138,10 @@ export class RunnerAuthService {
|
|
|
105
138
|
/**
|
|
106
139
|
* Go NewServiceFromEnv: key via the shared ladder (env var → key file →
|
|
107
140
|
* auto-generate). Errors only on unusable explicit configuration; the
|
|
108
|
-
* composition root maps that to the BOOT-FATAL posture
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
141
|
+
* composition root maps that to the BOOT-FATAL posture: a server that
|
|
142
|
+
* cannot mint runner tokens would hand every execution redaction markers
|
|
143
|
+
* instead of its secrets — the silent-junk failure the encryption work
|
|
144
|
+
* (stigmer#405) made fail-loud.
|
|
112
145
|
*/
|
|
113
146
|
static fromEnv(options = {}) {
|
|
114
147
|
const key = getOrCreateNamedKey(RUNNER_TOKEN_KEY_ENV_VAR, RUNNER_TOKEN_KEY_FILE_NAME, options);
|
|
@@ -123,25 +156,43 @@ export class RunnerAuthService {
|
|
|
123
156
|
* (DEFAULT_TTL_SECONDS when <= 0).
|
|
124
157
|
*/
|
|
125
158
|
mint(executionId, ttlSeconds = 0) {
|
|
159
|
+
const ttl = ttlSeconds > 0 ? ttlSeconds : DEFAULT_TTL_SECONDS;
|
|
160
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
161
|
+
return {
|
|
162
|
+
token: this.signClaims(executionId, {
|
|
163
|
+
iat: nowSeconds,
|
|
164
|
+
exp: nowSeconds + ttl,
|
|
165
|
+
}),
|
|
166
|
+
ttlSeconds: ttl,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* The run credential: bound to `executionId`, with NO `exp` (see the
|
|
171
|
+
* header — a run outlives any clock; the row decides). The dispatch
|
|
172
|
+
* path mints it into the workflow input; only the string travels, since
|
|
173
|
+
* there is no lifetime to report.
|
|
174
|
+
*/
|
|
175
|
+
mintRunCredential(executionId) {
|
|
176
|
+
return this.signClaims(executionId, {
|
|
177
|
+
iat: Math.floor(Date.now() / 1000),
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
signClaims(executionId, clock) {
|
|
126
181
|
if (this.key === undefined) {
|
|
127
182
|
throw new MintingDisabledError();
|
|
128
183
|
}
|
|
129
184
|
if (executionId === "") {
|
|
130
185
|
throw new Error("execution id is required to mint a runner token");
|
|
131
186
|
}
|
|
132
|
-
const ttl = ttlSeconds > 0 ? ttlSeconds : DEFAULT_TTL_SECONDS;
|
|
133
|
-
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
134
187
|
const claims = {
|
|
135
188
|
token_type: TOKEN_TYPE_EXECUTION_SCOPED,
|
|
136
189
|
execution_id: executionId,
|
|
137
|
-
|
|
138
|
-
exp: nowSeconds + ttl,
|
|
139
|
-
};
|
|
140
|
-
const signingInput = JWT_HEADER + "." + Buffer.from(JSON.stringify(claims)).toString("base64url");
|
|
141
|
-
return {
|
|
142
|
-
token: signingInput + "." + this.sign(signingInput),
|
|
143
|
-
ttlSeconds: ttl,
|
|
190
|
+
...clock,
|
|
144
191
|
};
|
|
192
|
+
const signingInput = JWT_HEADER +
|
|
193
|
+
"." +
|
|
194
|
+
Buffer.from(JSON.stringify(claims)).toString("base64url");
|
|
195
|
+
return signingInput + "." + this.sign(signingInput);
|
|
145
196
|
}
|
|
146
197
|
/**
|
|
147
198
|
* Go Verify: checks signature, algorithm, expiry, and token type, and
|
|
@@ -152,6 +203,8 @@ export class RunnerAuthService {
|
|
|
152
203
|
* Check order mirrors Go: enabled → three parts → exact encoded-header
|
|
153
204
|
* compare → constant-time HMAC → payload decode → claims. The expiry
|
|
154
205
|
* boundary is `now >= exp` (a token in its expiring second is invalid).
|
|
206
|
+
* A token with no `exp` is a run credential and passes this check; a
|
|
207
|
+
* present `exp` that is not a number is a malformed clock and refuses.
|
|
155
208
|
*/
|
|
156
209
|
verify(token) {
|
|
157
210
|
if (this.key === undefined) {
|
|
@@ -183,9 +236,12 @@ export class RunnerAuthService {
|
|
|
183
236
|
}
|
|
184
237
|
if (claims.token_type !== TOKEN_TYPE_EXECUTION_SCOPED ||
|
|
185
238
|
typeof claims.execution_id !== "string" ||
|
|
186
|
-
claims.execution_id === ""
|
|
187
|
-
|
|
188
|
-
|
|
239
|
+
claims.execution_id === "") {
|
|
240
|
+
throw new InvalidTokenError();
|
|
241
|
+
}
|
|
242
|
+
if (claims.exp !== undefined &&
|
|
243
|
+
(typeof claims.exp !== "number" ||
|
|
244
|
+
Math.floor(Date.now() / 1000) >= claims.exp)) {
|
|
189
245
|
throw new InvalidTokenError();
|
|
190
246
|
}
|
|
191
247
|
return claims.execution_id;
|
|
@@ -200,4 +256,44 @@ export class RunnerAuthService {
|
|
|
200
256
|
.digest("base64url");
|
|
201
257
|
}
|
|
202
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* The `token_type` claim read off an UNVERIFIED token, or undefined for
|
|
261
|
+
* anything that is not a three-segment token with a JSON payload naming
|
|
262
|
+
* one. This is the runner-subject verifier's claim rule (the chassis
|
|
263
|
+
* contract: decide "is this ours?" before trusting anything), so it must
|
|
264
|
+
* never throw and must trust nothing it reads — `verify` runs afterwards
|
|
265
|
+
* on a claimed token. It is NOT a shortcut for reading claims a caller
|
|
266
|
+
* intends to act on.
|
|
267
|
+
*/
|
|
268
|
+
export function peekTokenType(token) {
|
|
269
|
+
const claims = decodePayload(token);
|
|
270
|
+
const type = claims?.["token_type"];
|
|
271
|
+
return typeof type === "string" && type !== "" ? type : undefined;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Whether a token this module has ALREADY verified carries a clock. The
|
|
275
|
+
* decrypt lane reads it to know which validity rule applies (a clocked
|
|
276
|
+
* token's clock was enforced by `verify`; a run credential's validity is
|
|
277
|
+
* the row's). Reading the payload of a verified token is a read of
|
|
278
|
+
* trusted state, the GuardMemoryCapture precedent; on anything `verify`
|
|
279
|
+
* has not accepted the answer is meaningless, so callers verify first.
|
|
280
|
+
*/
|
|
281
|
+
export function isClockedToken(verifiedToken) {
|
|
282
|
+
return typeof decodePayload(verifiedToken)?.["exp"] === "number";
|
|
283
|
+
}
|
|
284
|
+
function decodePayload(token) {
|
|
285
|
+
const segments = token.split(".");
|
|
286
|
+
if (segments.length !== 3) {
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
try {
|
|
290
|
+
const decoded = JSON.parse(Buffer.from(segments[1] ?? "", "base64url").toString("utf8"));
|
|
291
|
+
return typeof decoded === "object" && decoded !== null
|
|
292
|
+
? decoded
|
|
293
|
+
: undefined;
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
203
299
|
//# sourceMappingURL=runnerauth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runnerauth.js","sourceRoot":"","sources":["../../src/runnerauth/runnerauth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runnerauth.js","sourceRoot":"","sources":["../../src/runnerauth/runnerauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,18 +19,30 @@
|
|
|
19
19
|
* engine per client instance — a new engine object per RPC would be
|
|
20
20
|
* garbage for no behavior.
|
|
21
21
|
*
|
|
22
|
+
* The run credential rides the input (2026-09-16): every dispatch — a
|
|
23
|
+
* fresh start and a recovery alike, both through startInvokeWorkflow —
|
|
24
|
+
* asks the composed credential provider for the run's credential
|
|
25
|
+
* (runnerauth/dispatch-credential.ts) and carries it as
|
|
26
|
+
* `execution_context_token`, the connect lane's shape. Minting here, in
|
|
27
|
+
* the one place that builds the input, is what keeps the create step and
|
|
28
|
+
* the recover path ignorant of credentials; a provider without the
|
|
29
|
+
* capability (an edition credentialed another way) leaves the key off.
|
|
30
|
+
*
|
|
22
31
|
* Proven by the agentexecution suites on local-execution.
|
|
23
32
|
*/
|
|
24
33
|
import type { Client } from "@temporalio/client";
|
|
25
34
|
import type { Logger } from "../../boot/logger.js";
|
|
26
35
|
import { type ConnectedExecutionEngine, type ExecutionEngineStateProvider, type StartInvokeWorkflowInput } from "../../domain/agentexecution/engine.js";
|
|
27
36
|
import type { AgentExecutionTemporalConfig } from "../../domain/agentexecution/temporal/config.js";
|
|
37
|
+
import type { RunCredentialMint } from "../../runnerauth/dispatch-credential.js";
|
|
28
38
|
import type { Store } from "../../store/interface.js";
|
|
29
39
|
import type { TemporalManager } from "../manager.js";
|
|
30
40
|
export interface TemporalExecutionEngineDeps {
|
|
31
41
|
readonly client: Client;
|
|
32
42
|
readonly config: AgentExecutionTemporalConfig;
|
|
33
43
|
readonly store: Store;
|
|
44
|
+
/** The composed credential provider — the dispatch reads its run-credential capability (module header). */
|
|
45
|
+
readonly runnerCredentials: RunCredentialMint;
|
|
34
46
|
readonly logger: Logger;
|
|
35
47
|
}
|
|
36
48
|
export declare class TemporalExecutionEngine implements ConnectedExecutionEngine {
|
|
@@ -48,6 +60,7 @@ export interface EngineStateProviderDeps {
|
|
|
48
60
|
readonly manager: TemporalManager;
|
|
49
61
|
readonly config: AgentExecutionTemporalConfig;
|
|
50
62
|
readonly store: Store;
|
|
63
|
+
readonly runnerCredentials: RunCredentialMint;
|
|
51
64
|
readonly logger: Logger;
|
|
52
65
|
}
|
|
53
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-client.d.ts","sourceRoot":"","sources":["../../../src/temporal/agentexecution/engine-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"engine-client.d.ts","sourceRoot":"","sources":["../../../src/temporal/agentexecution/engine-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAIL,KAAK,wBAAwB,EAE7B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAEnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAYrD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,2GAA2G;IAC3G,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,uBAAwB,YAAW,wBAAwB;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,2BAA2B;IAExD,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuEnE,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAW7D,MAAM;CAcrB;AAcD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,uBAAuB,GAC5B,4BAA4B,CAwB9B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WorkflowNotFoundError } from "@temporalio/common";
|
|
2
2
|
import { ENGINE_DISCONNECTED, EngineDispatchError, EngineWorkflowNotFoundError, } from "../../domain/agentexecution/engine.js";
|
|
3
|
+
import { runCredentialForDispatch } from "../../runnerauth/dispatch-credential.js";
|
|
3
4
|
import { resolveActivityTaskQueue } from "./dispatch.js";
|
|
4
5
|
import { INVOKE_AGENT_EXECUTION_WORKFLOW_NAME, invokeWorkflowIdFor, MEMO_ACTIVITY_TASK_QUEUE, SIGNAL_APPROVAL_GATE_RESOLVED, SIGNAL_PAUSE, SIGNAL_RESUME, } from "./names.js";
|
|
5
6
|
export class TemporalExecutionEngine {
|
|
@@ -8,7 +9,7 @@ export class TemporalExecutionEngine {
|
|
|
8
9
|
this.deps = deps;
|
|
9
10
|
}
|
|
10
11
|
async startInvokeWorkflow(input) {
|
|
11
|
-
const { client, config, store, logger } = this.deps;
|
|
12
|
+
const { client, config, store, runnerCredentials, logger } = this.deps;
|
|
12
13
|
let dispatch;
|
|
13
14
|
try {
|
|
14
15
|
dispatch = await resolveActivityTaskQueue(store, input.sessionId, config, input.activityTaskQueueOverride, logger);
|
|
@@ -19,6 +20,7 @@ export class TemporalExecutionEngine {
|
|
|
19
20
|
throw new EngineDispatchError(error instanceof Error ? error.message : String(error));
|
|
20
21
|
}
|
|
21
22
|
const workflowId = invokeWorkflowIdFor(input.executionId);
|
|
23
|
+
const runCredential = runCredentialForDispatch(runnerCredentials, input.executionId, logger);
|
|
22
24
|
// Slim input with Go's omitempty shape (workflow-input.ts): zero-value
|
|
23
25
|
// fields are omitted so TS- and Go-authored histories carry the same
|
|
24
26
|
// keys. callback_token is base64 — Go's []byte JSON rendering.
|
|
@@ -27,7 +29,9 @@ export class TemporalExecutionEngine {
|
|
|
27
29
|
session_id: input.sessionId,
|
|
28
30
|
agent_id: input.agentId,
|
|
29
31
|
...(input.callbackToken.length > 0
|
|
30
|
-
? {
|
|
32
|
+
? {
|
|
33
|
+
callback_token: Buffer.from(input.callbackToken).toString("base64"),
|
|
34
|
+
}
|
|
31
35
|
: {}),
|
|
32
36
|
...(input.autoApproveAll ? { auto_approve_all: true } : {}),
|
|
33
37
|
...(input.parentWorkflowId !== ""
|
|
@@ -37,6 +41,9 @@ export class TemporalExecutionEngine {
|
|
|
37
41
|
...(dispatch.executionTarget !== 0
|
|
38
42
|
? { execution_target: dispatch.executionTarget }
|
|
39
43
|
: {}),
|
|
44
|
+
...(runCredential !== ""
|
|
45
|
+
? { execution_context_token: runCredential }
|
|
46
|
+
: {}),
|
|
40
47
|
};
|
|
41
48
|
// NOTE deliberately NO workflowRunTimeout: HITL approval can block for
|
|
42
49
|
// minutes, hours, or days — a finite timeout would contradict the
|
|
@@ -133,6 +140,7 @@ export function newExecutionEngineStateProvider(deps) {
|
|
|
133
140
|
client,
|
|
134
141
|
config: deps.config,
|
|
135
142
|
store: deps.store,
|
|
143
|
+
runnerCredentials: deps.runnerCredentials,
|
|
136
144
|
logger: deps.logger,
|
|
137
145
|
}),
|
|
138
146
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-client.js","sourceRoot":"","sources":["../../../src/temporal/agentexecution/engine-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine-client.js","sourceRoot":"","sources":["../../../src/temporal/agentexecution/engine-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,19 @@ export interface InvokeAgentExecutionWorkflowInput {
|
|
|
25
25
|
readonly auto_approve_all?: boolean;
|
|
26
26
|
readonly parent_workflow_id?: string;
|
|
27
27
|
readonly invoker_identity_account_id?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The run credential (runnerauth: a clockless execution-scoped token
|
|
30
|
+
* bound to this execution), minted by the engine client at dispatch
|
|
31
|
+
* when the composed credential provider defines `mintRunCredential`
|
|
32
|
+
* and omitted otherwise. The connect lane's key for the same token
|
|
33
|
+
* type (domain/mcpserver/engine.ts). The workflow hands it to the
|
|
34
|
+
* runner's activities, which present it on the run's own RPCs: under
|
|
35
|
+
* the built-in authorization posture it admits the runner as the
|
|
36
|
+
* human whose run this is, for as long as the run lives. Like the
|
|
37
|
+
* connect lane's, it sits in Temporal history in the clear — history
|
|
38
|
+
* is operator-only, and the operator holds the signing key already.
|
|
39
|
+
*/
|
|
40
|
+
readonly execution_context_token?: string;
|
|
28
41
|
/**
|
|
29
42
|
* Session harness as the proto enum numeric value (0=UNSPECIFIED treated
|
|
30
43
|
* as NATIVE, 1=NATIVE, 2=CURSOR) — selects ExecuteDeepAgent vs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-input.d.ts","sourceRoot":"","sources":["../../../src/temporal/agentexecution/workflow-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC"}
|
|
1
|
+
{"version":3,"file":"workflow-input.d.ts","sourceRoot":"","sources":["../../../src/temporal/agentexecution/workflow-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke-agent-execution.d.ts","sourceRoot":"","sources":["../../../../src/temporal/agentexecution/workflows/invoke-agent-execution.ts"],"names":[],"mappings":"AA+GA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"invoke-agent-execution.d.ts","sourceRoot":"","sources":["../../../../src/temporal/agentexecution/workflows/invoke-agent-execution.ts"],"names":[],"mappings":"AA+GA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAoO9E,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,IAAI,CAAC,CA8Kf"}
|
|
@@ -91,6 +91,22 @@ function recoveryBackoffMs(cycle) {
|
|
|
91
91
|
const pauseSignal = defineSignal(SIGNAL_PAUSE);
|
|
92
92
|
const resumeSignal = defineSignal(SIGNAL_RESUME);
|
|
93
93
|
const approvalGateResolvedSignal = defineSignal(SIGNAL_APPROVAL_GATE_RESOLVED);
|
|
94
|
+
/**
|
|
95
|
+
* The ONE builder of an Execute* input for both harness flows and both
|
|
96
|
+
* invocations (first turn and every HITL re-invocation): the run's
|
|
97
|
+
* coordinates from the workflow input, the harness thread and the turn
|
|
98
|
+
* from the caller.
|
|
99
|
+
*/
|
|
100
|
+
function executeActivityInput(input, threadId, turnSeq) {
|
|
101
|
+
const runCredential = input.execution_context_token ?? "";
|
|
102
|
+
return {
|
|
103
|
+
execution_id: input.execution_id,
|
|
104
|
+
thread_id: threadId,
|
|
105
|
+
invoker_identity_account_id: input.invoker_identity_account_id ?? "",
|
|
106
|
+
turn_seq: turnSeq,
|
|
107
|
+
...(runCredential !== "" ? { execution_context_token: runCredential } : {}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
94
110
|
function newEnsureThreadProxy(taskQueue) {
|
|
95
111
|
return proxyActivities({
|
|
96
112
|
taskQueue,
|
|
@@ -337,7 +353,6 @@ function installSignalBuffers() {
|
|
|
337
353
|
async function executeDeepAgentFlow(input, activityTaskQueue, signals, isWorkflowCancelled) {
|
|
338
354
|
const executionId = input.execution_id;
|
|
339
355
|
const sessionId = input.session_id;
|
|
340
|
-
const invoker = input.invoker_identity_account_id ?? "";
|
|
341
356
|
log.info("Step 1: Ensuring thread", { sessionId, agentId: input.agent_id });
|
|
342
357
|
const ensureThread = newEnsureThreadProxy(activityTaskQueue);
|
|
343
358
|
let threadId;
|
|
@@ -348,7 +363,7 @@ async function executeDeepAgentFlow(input, activityTaskQueue, signals, isWorkflo
|
|
|
348
363
|
throw wrapActivityError("EnsureThread", error);
|
|
349
364
|
}
|
|
350
365
|
log.info("Thread ensured", { threadId });
|
|
351
|
-
fireGenerateSessionSubject(activityTaskQueue,
|
|
366
|
+
fireGenerateSessionSubject(activityTaskQueue, input);
|
|
352
367
|
log.info("Step 2: Executing deep agent", { executionId, threadId });
|
|
353
368
|
const agentProxy = newExecuteAgentProxy(activityTaskQueue);
|
|
354
369
|
return runWithPauseAndRecovery({
|
|
@@ -360,19 +375,9 @@ async function executeDeepAgentFlow(input, activityTaskQueue, signals, isWorkflo
|
|
|
360
375
|
executionId,
|
|
361
376
|
signals,
|
|
362
377
|
parentWorkflowId: input.parent_workflow_id ?? "",
|
|
363
|
-
firstInvoke: () => agentProxy[EXECUTE_DEEP_AGENT_ACTIVITY_NAME](
|
|
364
|
-
execution_id: executionId,
|
|
365
|
-
thread_id: threadId,
|
|
366
|
-
invoker_identity_account_id: invoker,
|
|
367
|
-
turn_seq: 0,
|
|
368
|
-
}),
|
|
378
|
+
firstInvoke: () => agentProxy[EXECUTE_DEEP_AGENT_ACTIVITY_NAME](executeActivityInput(input, threadId, 0)),
|
|
369
379
|
// The LangGraph thread id is stable — re-invocations reuse it.
|
|
370
|
-
reinvoke: (turnSeq) => agentProxy[EXECUTE_DEEP_AGENT_ACTIVITY_NAME](
|
|
371
|
-
execution_id: executionId,
|
|
372
|
-
thread_id: threadId,
|
|
373
|
-
invoker_identity_account_id: invoker,
|
|
374
|
-
turn_seq: turnSeq,
|
|
375
|
-
}),
|
|
380
|
+
reinvoke: (turnSeq) => agentProxy[EXECUTE_DEEP_AGENT_ACTIVITY_NAME](executeActivityInput(input, threadId, turnSeq)),
|
|
376
381
|
nullResultMessage: "activity returned null status - this should never happen",
|
|
377
382
|
nullResultAfterApprovalMessage: "activity returned null status after approval - this should never happen",
|
|
378
383
|
}),
|
|
@@ -389,8 +394,7 @@ async function executeDeepAgentFlow(input, activityTaskQueue, signals, isWorkflo
|
|
|
389
394
|
async function executeCursorFlow(input, activityTaskQueue, signals, isWorkflowCancelled) {
|
|
390
395
|
const executionId = input.execution_id;
|
|
391
396
|
const sessionId = input.session_id;
|
|
392
|
-
|
|
393
|
-
fireGenerateSessionSubject(activityTaskQueue, executionId);
|
|
397
|
+
fireGenerateSessionSubject(activityTaskQueue, input);
|
|
394
398
|
log.info("Executing Cursor agent", { executionId, sessionId });
|
|
395
399
|
const agentProxy = newExecuteAgentProxy(activityTaskQueue);
|
|
396
400
|
return runWithPauseAndRecovery({
|
|
@@ -411,12 +415,7 @@ async function executeCursorFlow(input, activityTaskQueue, signals, isWorkflowCa
|
|
|
411
415
|
log.warn("Failed to read session harness_state_id (non-fatal, using empty)", { sessionId, error: errorMessage(error) });
|
|
412
416
|
harnessStateId = "";
|
|
413
417
|
}
|
|
414
|
-
return agentProxy[EXECUTE_CURSOR_ACTIVITY_NAME](
|
|
415
|
-
execution_id: executionId,
|
|
416
|
-
thread_id: harnessStateId,
|
|
417
|
-
invoker_identity_account_id: invoker,
|
|
418
|
-
turn_seq: 0,
|
|
419
|
-
});
|
|
418
|
+
return agentProxy[EXECUTE_CURSOR_ACTIVITY_NAME](executeActivityInput(input, harnessStateId, 0));
|
|
420
419
|
},
|
|
421
420
|
reinvoke: async (turnSeq) => {
|
|
422
421
|
let harnessStateId;
|
|
@@ -431,24 +430,29 @@ async function executeCursorFlow(input, activityTaskQueue, signals, isWorkflowCa
|
|
|
431
430
|
cycle: turnSeq,
|
|
432
431
|
harnessStateId,
|
|
433
432
|
});
|
|
434
|
-
return agentProxy[EXECUTE_CURSOR_ACTIVITY_NAME](
|
|
435
|
-
execution_id: executionId,
|
|
436
|
-
thread_id: harnessStateId,
|
|
437
|
-
invoker_identity_account_id: invoker,
|
|
438
|
-
turn_seq: turnSeq,
|
|
439
|
-
});
|
|
433
|
+
return agentProxy[EXECUTE_CURSOR_ACTIVITY_NAME](executeActivityInput(input, harnessStateId, turnSeq));
|
|
440
434
|
},
|
|
441
435
|
nullResultMessage: "cursor activity returned null status - this should never happen",
|
|
442
436
|
nullResultAfterApprovalMessage: "cursor activity returned null status after approval - this should never happen",
|
|
443
437
|
}),
|
|
444
438
|
});
|
|
445
439
|
}
|
|
446
|
-
/**
|
|
447
|
-
|
|
440
|
+
/**
|
|
441
|
+
* GenerateSessionSubject: fire-and-forget, non-blocking (issue #665). The
|
|
442
|
+
* argument shape follows the run credential's presence — see
|
|
443
|
+
* GenerateSessionSubjectInput for why the credential-less dispatch keeps
|
|
444
|
+
* the positional string.
|
|
445
|
+
*/
|
|
446
|
+
function fireGenerateSessionSubject(activityTaskQueue, input) {
|
|
447
|
+
const executionId = input.execution_id;
|
|
448
|
+
const runCredential = input.execution_context_token ?? "";
|
|
449
|
+
const argument = runCredential !== ""
|
|
450
|
+
? { execution_id: executionId, execution_context_token: runCredential }
|
|
451
|
+
: executionId;
|
|
448
452
|
const subjectProxy = newSubjectProxy(activityTaskQueue);
|
|
449
453
|
void (async () => {
|
|
450
454
|
try {
|
|
451
|
-
await subjectProxy[GENERATE_SESSION_SUBJECT_ACTIVITY_NAME](
|
|
455
|
+
await subjectProxy[GENERATE_SESSION_SUBJECT_ACTIVITY_NAME](argument);
|
|
452
456
|
}
|
|
453
457
|
catch (error) {
|
|
454
458
|
log.warn("Session subject generation failed (non-critical)", {
|