@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
|
@@ -95,7 +95,9 @@ function newSession(
|
|
|
95
95
|
status: {
|
|
96
96
|
audit: {
|
|
97
97
|
specAudit: {
|
|
98
|
-
createdAt: {
|
|
98
|
+
createdAt: {
|
|
99
|
+
seconds: BigInt(opts?.createdAtSeconds ?? 1_700_000_000),
|
|
100
|
+
},
|
|
99
101
|
},
|
|
100
102
|
},
|
|
101
103
|
},
|
|
@@ -432,7 +434,12 @@ describe("rebuildIndex", () => {
|
|
|
432
434
|
const adopted = SqliteStore.open(fixture.dbPath);
|
|
433
435
|
try {
|
|
434
436
|
const project = create(ProjectSchema, {
|
|
435
|
-
metadata: {
|
|
437
|
+
metadata: {
|
|
438
|
+
id: "prj_1",
|
|
439
|
+
name: "billing",
|
|
440
|
+
slug: "billing",
|
|
441
|
+
org: "acme",
|
|
442
|
+
},
|
|
436
443
|
spec: { description: "the billing project" },
|
|
437
444
|
status: {
|
|
438
445
|
audit: { specAudit: { createdAt: { seconds: 1_700_000_000n } } },
|
|
@@ -78,15 +78,17 @@ describe("SearchableResourceRegistry (Go registry_test.go)", () => {
|
|
|
78
78
|
|
|
79
79
|
it("supportedKinds sorts by the kind NAME string (Go's kind.String() sort)", () => {
|
|
80
80
|
const registry = newSearchableResourceRegistry();
|
|
81
|
-
const names = registry
|
|
81
|
+
const names = registry
|
|
82
|
+
.supportedKinds()
|
|
83
|
+
.map((kind) => ApiResourceKind[kind]);
|
|
82
84
|
expect(names).toEqual([...names].sort((a, b) => a.localeCompare(b)));
|
|
83
85
|
});
|
|
84
86
|
|
|
85
87
|
it("validateExpectedKinds warns with the missing kinds (never throws)", () => {
|
|
86
88
|
const logger = testLogger();
|
|
87
|
-
new SearchableResourceRegistry([
|
|
88
|
-
|
|
89
|
-
);
|
|
89
|
+
new SearchableResourceRegistry([
|
|
90
|
+
agentSearchExtractor,
|
|
91
|
+
]).validateExpectedKinds(logger);
|
|
90
92
|
expect(logger.warns).toHaveLength(1);
|
|
91
93
|
const missing = logger.warns[0]?.missing_kinds as string[];
|
|
92
94
|
expect(missing).toContain("skill");
|
|
@@ -27,6 +27,7 @@ import { environmentSearchExtractor } from "../../domain/environment/search-extr
|
|
|
27
27
|
import { executionContextSearchExtractor } from "../../domain/executioncontext/search-extractor.js";
|
|
28
28
|
import { mcpServerSearchExtractor } from "../../domain/mcpserver/search-extractor.js";
|
|
29
29
|
import { organizationSearchExtractor } from "../../domain/organization/search-extractor.js";
|
|
30
|
+
import { pluginSearchExtractor } from "../../domain/plugin/search-extractor.js";
|
|
30
31
|
import { projectSearchExtractor } from "../../domain/project/search-extractor.js";
|
|
31
32
|
import { sessionSearchExtractor } from "../../domain/session/search-extractor.js";
|
|
32
33
|
import { skillSearchExtractor } from "../../domain/skill/search-extractor.js";
|
|
@@ -39,7 +40,10 @@ import type { SearchableExtractor } from "./extractor.js";
|
|
|
39
40
|
|
|
40
41
|
/** Go SearchableResourceRegistry — kind → extractor, read-only after build. */
|
|
41
42
|
export class SearchableResourceRegistry {
|
|
42
|
-
private readonly extractors: ReadonlyMap<
|
|
43
|
+
private readonly extractors: ReadonlyMap<
|
|
44
|
+
ApiResourceKind,
|
|
45
|
+
SearchableExtractor
|
|
46
|
+
>;
|
|
43
47
|
|
|
44
48
|
constructor(extractors: readonly SearchableExtractor[]) {
|
|
45
49
|
const map = new Map<ApiResourceKind, SearchableExtractor>();
|
|
@@ -111,6 +115,7 @@ export function newSearchableResourceRegistry(): SearchableResourceRegistry {
|
|
|
111
115
|
executionContextSearchExtractor,
|
|
112
116
|
mcpServerSearchExtractor,
|
|
113
117
|
organizationSearchExtractor,
|
|
118
|
+
pluginSearchExtractor,
|
|
114
119
|
projectSearchExtractor,
|
|
115
120
|
sessionSearchExtractor,
|
|
116
121
|
skillSearchExtractor,
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pins the bound-execution reader (bound-execution.ts) in isolation, with
|
|
3
|
+
* the clock injected, so the liveness rule every lane shares is stated
|
|
4
|
+
* by enumeration here and the verifier's and the decrypt lane's tests can
|
|
5
|
+
* assert behavior rather than restate it:
|
|
6
|
+
*
|
|
7
|
+
* - the kind is read off the id alone: the two execution kinds by the
|
|
8
|
+
* contract's prefix table, the connect binding by its own predicate;
|
|
9
|
+
* anything else is `undefined` with no store read;
|
|
10
|
+
* - a connect binding resolves through the connect's ExecutionContext
|
|
11
|
+
* row (by `spec.executionId`), is live while that row exists, and is
|
|
12
|
+
* not a run (`bindsARun`) — the shape both no-`exp` lanes refuse;
|
|
13
|
+
* - live is "not terminal" for each kind's OWN terminal set (the agent
|
|
14
|
+
* side's TERMINATED and WAITING_FOR_APPROVAL, the workflow side's
|
|
15
|
+
* TERMINATED and PAUSED are the arms that differ from a naive set);
|
|
16
|
+
* - a terminal row is live within the grace of its `completed_at`, dead
|
|
17
|
+
* at the boundary and beyond, and dead at once with no timestamp or an
|
|
18
|
+
* unparsable one (fail closed);
|
|
19
|
+
* - a missing row is `undefined`; any other store failure propagates as
|
|
20
|
+
* the same error object.
|
|
21
|
+
*/
|
|
22
|
+
import { create } from "@bufbuild/protobuf";
|
|
23
|
+
import type { DescMessage, MessageShape } from "@bufbuild/protobuf";
|
|
24
|
+
import { describe, expect, it, vi } from "vitest";
|
|
25
|
+
|
|
26
|
+
import { AgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
27
|
+
import { ExecutionPhase as AgentPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
28
|
+
import { ExecutionContextSchema } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/api_pb";
|
|
29
|
+
import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
30
|
+
import { ExecutionPhase as WorkflowPhase } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/enum_pb";
|
|
31
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
32
|
+
|
|
33
|
+
import { newConnectExecutionId } from "../../domain/mcpserver/connect-execution-id.js";
|
|
34
|
+
import { ResourceNotFoundError } from "../../store/interface.js";
|
|
35
|
+
import {
|
|
36
|
+
bindsARun,
|
|
37
|
+
boundExecutionKindOf,
|
|
38
|
+
loadBoundExecution,
|
|
39
|
+
} from "../bound-execution.js";
|
|
40
|
+
import type { BoundExecutionStore } from "../bound-execution.js";
|
|
41
|
+
import { RUN_CREDENTIAL_GRACE_AFTER_TERMINAL_MS } from "../constants.js";
|
|
42
|
+
|
|
43
|
+
const NOW = Date.parse("2026-09-16T12:00:00Z");
|
|
44
|
+
const iso = (offsetMs: number): string =>
|
|
45
|
+
new Date(NOW + offsetMs).toISOString();
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A store of rows by id, plus the connect ECs by the execution id they
|
|
49
|
+
* were created for (`findByField` on `spec.executionId`). `reads` records
|
|
50
|
+
* every lookup key, so an arm can assert "no store read" and which read.
|
|
51
|
+
*/
|
|
52
|
+
function storeOf(
|
|
53
|
+
rows: Record<string, unknown>,
|
|
54
|
+
executionContexts: Record<string, unknown> = {},
|
|
55
|
+
): BoundExecutionStore & {
|
|
56
|
+
reads: string[];
|
|
57
|
+
} {
|
|
58
|
+
const reads: string[] = [];
|
|
59
|
+
return {
|
|
60
|
+
reads,
|
|
61
|
+
getResource<Desc extends DescMessage>(
|
|
62
|
+
kind: ApiResourceKind,
|
|
63
|
+
id: string,
|
|
64
|
+
_schema: Desc,
|
|
65
|
+
): Promise<MessageShape<Desc>> {
|
|
66
|
+
reads.push(id);
|
|
67
|
+
const row = rows[id];
|
|
68
|
+
return row === undefined
|
|
69
|
+
? Promise.reject(new ResourceNotFoundError(`${kind}/${id}`))
|
|
70
|
+
: Promise.resolve(row as MessageShape<Desc>);
|
|
71
|
+
},
|
|
72
|
+
findByField<Desc extends DescMessage>(
|
|
73
|
+
kind: ApiResourceKind,
|
|
74
|
+
fieldPath: string,
|
|
75
|
+
value: string,
|
|
76
|
+
_schema: Desc,
|
|
77
|
+
): Promise<MessageShape<Desc>> {
|
|
78
|
+
reads.push(`${fieldPath}=${value}`);
|
|
79
|
+
const row =
|
|
80
|
+
kind === ApiResourceKind.execution_context &&
|
|
81
|
+
fieldPath === "spec.executionId"
|
|
82
|
+
? executionContexts[value]
|
|
83
|
+
: undefined;
|
|
84
|
+
return row === undefined
|
|
85
|
+
? Promise.reject(new ResourceNotFoundError(`${kind}/${value}`))
|
|
86
|
+
: Promise.resolve(row as MessageShape<Desc>);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function connectContext(executionId: string, createdBy: string, org = "acme") {
|
|
92
|
+
return create(ExecutionContextSchema, {
|
|
93
|
+
metadata: { id: "ectx_1", name: `exec-ctx-${executionId}`, org },
|
|
94
|
+
spec: { executionId },
|
|
95
|
+
status: { audit: { specAudit: { createdBy: { id: createdBy } } } },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function agentRun(
|
|
100
|
+
id: string,
|
|
101
|
+
phase: AgentPhase,
|
|
102
|
+
completedAt = "",
|
|
103
|
+
extra: { createdBy?: string; sessionId?: string; org?: string } = {},
|
|
104
|
+
) {
|
|
105
|
+
return create(AgentExecutionSchema, {
|
|
106
|
+
metadata: { id, name: id, org: extra.org ?? "acme" },
|
|
107
|
+
spec: { sessionId: extra.sessionId ?? "" },
|
|
108
|
+
status: {
|
|
109
|
+
phase,
|
|
110
|
+
completedAt,
|
|
111
|
+
audit: { specAudit: { createdBy: { id: extra.createdBy ?? "" } } },
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function workflowRun(id: string, phase: WorkflowPhase, completedAt = "") {
|
|
117
|
+
return create(WorkflowExecutionSchema, {
|
|
118
|
+
metadata: { id, name: id, org: "acme" },
|
|
119
|
+
status: { phase, completedAt },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
describe("boundExecutionKindOf", () => {
|
|
124
|
+
it.each([
|
|
125
|
+
["aex_1", "agent-execution"],
|
|
126
|
+
["wex_1", "workflow-execution"],
|
|
127
|
+
[newConnectExecutionId("mcps_1"), "mcp-connect"],
|
|
128
|
+
])("%s binds %s", (id, kind) => {
|
|
129
|
+
expect(boundExecutionKindOf(id)).toBe(kind);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it.each([["ses_1"], ["agt_1"], ["zzz_1"], [""], ["aex"], ["connect"]])(
|
|
133
|
+
"%s binds nothing",
|
|
134
|
+
(id) => {
|
|
135
|
+
expect(boundExecutionKindOf(id)).toBeUndefined();
|
|
136
|
+
},
|
|
137
|
+
);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe("bindsARun — what a no-`exp` credential may name", () => {
|
|
141
|
+
it.each([
|
|
142
|
+
["agent-execution", true],
|
|
143
|
+
["workflow-execution", true],
|
|
144
|
+
["mcp-connect", false],
|
|
145
|
+
] as const)("%s → %s", (kind, expected) => {
|
|
146
|
+
expect(bindsARun(kind)).toBe(expected);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
describe("loadBoundExecution", () => {
|
|
151
|
+
it("reads the row's facts the lane needs and nothing else", async () => {
|
|
152
|
+
const store = storeOf({
|
|
153
|
+
aex_1: agentRun("aex_1", AgentPhase.EXECUTION_IN_PROGRESS, "", {
|
|
154
|
+
createdBy: "ida_carol",
|
|
155
|
+
sessionId: "ses_carol",
|
|
156
|
+
org: "acme",
|
|
157
|
+
}),
|
|
158
|
+
});
|
|
159
|
+
expect(await loadBoundExecution(store, "aex_1", NOW)).toEqual({
|
|
160
|
+
kind: "agent-execution",
|
|
161
|
+
executionId: "aex_1",
|
|
162
|
+
org: "acme",
|
|
163
|
+
createdBy: "ida_carol",
|
|
164
|
+
sessionId: "ses_carol",
|
|
165
|
+
live: true,
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it("an id that binds no kind is undefined with NO store read", async () => {
|
|
170
|
+
const store = storeOf({});
|
|
171
|
+
expect(await loadBoundExecution(store, "ses_1", NOW)).toBeUndefined();
|
|
172
|
+
expect(store.reads).toEqual([]);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
describe("the connect binding — the ExecutionContext row by its execution id", () => {
|
|
176
|
+
const connectId = newConnectExecutionId("mcps_1");
|
|
177
|
+
|
|
178
|
+
it("resolves to the row's creator and org, no session, live while the row exists", async () => {
|
|
179
|
+
const store = storeOf(
|
|
180
|
+
{},
|
|
181
|
+
{ [connectId]: connectContext(connectId, "ida_member", "acme") },
|
|
182
|
+
);
|
|
183
|
+
expect(await loadBoundExecution(store, connectId, NOW)).toEqual({
|
|
184
|
+
kind: "mcp-connect",
|
|
185
|
+
executionId: connectId,
|
|
186
|
+
org: "acme",
|
|
187
|
+
createdBy: "ida_member",
|
|
188
|
+
sessionId: "",
|
|
189
|
+
live: true,
|
|
190
|
+
});
|
|
191
|
+
// The read getByExecutionId already makes, and no primary-key read.
|
|
192
|
+
expect(store.reads).toEqual([`spec.executionId=${connectId}`]);
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
it("a connect whose row is gone (the connect settled) is undefined — the credential names no row", async () => {
|
|
196
|
+
expect(
|
|
197
|
+
await loadBoundExecution(storeOf({}), connectId, NOW),
|
|
198
|
+
).toBeUndefined();
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("a store fault on the EC read propagates as the same error object", async () => {
|
|
202
|
+
const fault = new Error("connection reset");
|
|
203
|
+
const store: BoundExecutionStore = {
|
|
204
|
+
getResource: vi.fn(() => Promise.reject(new Error("unreachable"))),
|
|
205
|
+
findByField: vi.fn(() => Promise.reject(fault)),
|
|
206
|
+
};
|
|
207
|
+
await expect(loadBoundExecution(store, connectId, NOW)).rejects.toBe(
|
|
208
|
+
fault,
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it("a missing row is undefined — the typed not-found, and only that, is absorbed", async () => {
|
|
214
|
+
expect(
|
|
215
|
+
await loadBoundExecution(storeOf({}), "aex_missing", NOW),
|
|
216
|
+
).toBeUndefined();
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
it("any other store failure propagates as the same error object", async () => {
|
|
220
|
+
const fault = new Error("connection reset");
|
|
221
|
+
const store: BoundExecutionStore = {
|
|
222
|
+
getResource: vi.fn(() => Promise.reject(fault)),
|
|
223
|
+
findByField: vi.fn(() => Promise.reject(new Error("unreachable"))),
|
|
224
|
+
};
|
|
225
|
+
await expect(loadBoundExecution(store, "aex_1", NOW)).rejects.toBe(fault);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
describe("liveness — the agent execution's own terminal set", () => {
|
|
229
|
+
it.each([
|
|
230
|
+
["PENDING", AgentPhase.EXECUTION_PENDING],
|
|
231
|
+
["IN_PROGRESS", AgentPhase.EXECUTION_IN_PROGRESS],
|
|
232
|
+
["WAITING_FOR_APPROVAL", AgentPhase.EXECUTION_WAITING_FOR_APPROVAL],
|
|
233
|
+
["PAUSED", AgentPhase.EXECUTION_PAUSED],
|
|
234
|
+
])("%s is live", async (_name, phase) => {
|
|
235
|
+
const store = storeOf({ aex_1: agentRun("aex_1", phase) });
|
|
236
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(true);
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
it.each([
|
|
240
|
+
["COMPLETED", AgentPhase.EXECUTION_COMPLETED],
|
|
241
|
+
["FAILED", AgentPhase.EXECUTION_FAILED],
|
|
242
|
+
["CANCELLED", AgentPhase.EXECUTION_CANCELLED],
|
|
243
|
+
["TERMINATED", AgentPhase.EXECUTION_TERMINATED],
|
|
244
|
+
])(
|
|
245
|
+
"%s with no completed_at is dead at once — no grace without a timestamp",
|
|
246
|
+
async (_name, phase) => {
|
|
247
|
+
const store = storeOf({ aex_1: agentRun("aex_1", phase) });
|
|
248
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(
|
|
249
|
+
false,
|
|
250
|
+
);
|
|
251
|
+
},
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
it("a row with no status has not started, which is live", async () => {
|
|
255
|
+
const store = storeOf({
|
|
256
|
+
aex_1: create(AgentExecutionSchema, { metadata: { id: "aex_1" } }),
|
|
257
|
+
});
|
|
258
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(true);
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
describe("liveness — the workflow execution's own terminal set", () => {
|
|
263
|
+
it.each([
|
|
264
|
+
["PENDING", WorkflowPhase.EXECUTION_PENDING],
|
|
265
|
+
["IN_PROGRESS", WorkflowPhase.EXECUTION_IN_PROGRESS],
|
|
266
|
+
["PAUSED", WorkflowPhase.EXECUTION_PAUSED],
|
|
267
|
+
])("%s is live", async (_name, phase) => {
|
|
268
|
+
const store = storeOf({ wex_1: workflowRun("wex_1", phase) });
|
|
269
|
+
expect((await loadBoundExecution(store, "wex_1", NOW))?.live).toBe(true);
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
it.each([
|
|
273
|
+
["COMPLETED", WorkflowPhase.EXECUTION_COMPLETED],
|
|
274
|
+
["FAILED", WorkflowPhase.EXECUTION_FAILED],
|
|
275
|
+
["CANCELLED", WorkflowPhase.EXECUTION_CANCELLED],
|
|
276
|
+
["TERMINATED", WorkflowPhase.EXECUTION_TERMINATED],
|
|
277
|
+
])("%s with no completed_at is dead at once", async (_name, phase) => {
|
|
278
|
+
const store = storeOf({ wex_1: workflowRun("wex_1", phase) });
|
|
279
|
+
expect((await loadBoundExecution(store, "wex_1", NOW))?.live).toBe(false);
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
it("a workflow execution has no session — the field is empty, never a guess", async () => {
|
|
283
|
+
const store = storeOf({
|
|
284
|
+
wex_1: workflowRun("wex_1", WorkflowPhase.EXECUTION_IN_PROGRESS),
|
|
285
|
+
});
|
|
286
|
+
expect((await loadBoundExecution(store, "wex_1", NOW))?.sessionId).toBe(
|
|
287
|
+
"",
|
|
288
|
+
);
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
describe("the grace after terminal, measured from completed_at", () => {
|
|
293
|
+
const G = RUN_CREDENTIAL_GRACE_AFTER_TERMINAL_MS;
|
|
294
|
+
|
|
295
|
+
it.each([
|
|
296
|
+
["the moment it ended", 0, true],
|
|
297
|
+
["one millisecond before the grace ends", -(G - 1), true],
|
|
298
|
+
["exactly at the grace boundary", -G, false],
|
|
299
|
+
["long after", -(G * 10), false],
|
|
300
|
+
])("a run that ended %s → live=%s", async (_label, offset, live) => {
|
|
301
|
+
const store = storeOf({
|
|
302
|
+
aex_1: agentRun("aex_1", AgentPhase.EXECUTION_COMPLETED, iso(offset)),
|
|
303
|
+
});
|
|
304
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(live);
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
it("a completed_at in the future (a skewed writer's clock) is inside the grace, not an error", async () => {
|
|
308
|
+
const store = storeOf({
|
|
309
|
+
aex_1: agentRun("aex_1", AgentPhase.EXECUTION_COMPLETED, iso(60_000)),
|
|
310
|
+
});
|
|
311
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(true);
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
it("an unparsable completed_at gets no grace — fail closed", async () => {
|
|
315
|
+
const store = storeOf({
|
|
316
|
+
aex_1: agentRun(
|
|
317
|
+
"aex_1",
|
|
318
|
+
AgentPhase.EXECUTION_COMPLETED,
|
|
319
|
+
"yesterday-ish",
|
|
320
|
+
),
|
|
321
|
+
});
|
|
322
|
+
expect((await loadBoundExecution(store, "aex_1", NOW))?.live).toBe(false);
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
it("the same rule applies to a workflow execution", async () => {
|
|
326
|
+
const store = storeOf({
|
|
327
|
+
wex_1: workflowRun("wex_1", WorkflowPhase.EXECUTION_FAILED, iso(-1000)),
|
|
328
|
+
wex_2: workflowRun("wex_2", WorkflowPhase.EXECUTION_FAILED, iso(-G)),
|
|
329
|
+
});
|
|
330
|
+
expect((await loadBoundExecution(store, "wex_1", NOW))?.live).toBe(true);
|
|
331
|
+
expect((await loadBoundExecution(store, "wex_2", NOW))?.live).toBe(false);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
});
|