@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,139 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Skill artifact store —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* at cutover the TS server
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* keys listVersions exposes.
|
|
2
|
+
* Skill artifact store — the `skills/` instance of the content-addressed
|
|
3
|
+
* archive store (src/archive/content-store.ts). Artifacts live at
|
|
4
|
+
* {storagePath}/skills/{sha256}.zip, byte-identical to the retired Go
|
|
5
|
+
* server's paths: at cutover the TS server inherited a Go-written storage
|
|
6
|
+
* directory and serves its artifacts in place. Write-once, never
|
|
7
|
+
* garbage-collected (OD-5): there is deliberately NO delete method, so the
|
|
8
|
+
* storage keys listVersions exposes stay downloadable.
|
|
9
9
|
*
|
|
10
|
-
* Since O5 (20260827.02, blueprint 03 §6b) this is a DOMAIN PORT
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* Since O5 (20260827.02, blueprint 03 §6b) this is a DOMAIN PORT over the
|
|
11
|
+
* one ArtifactStorage blob driver (the Q2 gate ruling); the compose root
|
|
12
|
+
* hands it a PER-DOMAIN driver instance rooted at storagePath (Q2b), so
|
|
13
|
+
* skill artifacts never silently follow the generic artifact store's
|
|
14
|
+
* backend selection. The port's implementation moved to src/archive when
|
|
15
|
+
* plugins needed the identical shape under `plugins/`; the names exported
|
|
16
|
+
* here are the skill domain's and every consumer keeps them.
|
|
16
17
|
*
|
|
17
18
|
* Proven by __tests__/artifact-storage.test.ts and the skill conformance
|
|
18
19
|
* suite's getArtifact/round-trip tests.
|
|
19
20
|
*/
|
|
20
|
-
import path from "node:path";
|
|
21
|
-
|
|
22
21
|
import type { ArtifactStorage } from "../../../artifactstorage/artifact-storage.js";
|
|
23
|
-
import {
|
|
22
|
+
import type { ContentAddressedArchiveStore } from "../../../archive/content-store.js";
|
|
23
|
+
import { newContentAddressedArchiveStore } from "../../../archive/content-store.js";
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
* Storage abstraction for skill artifacts (Go ArtifactStorage). The
|
|
27
|
-
* interface exists for the same reason as Go's: cloud uses R2 behind the
|
|
28
|
-
* identical surface, and the controller must not know which one it holds.
|
|
29
|
-
*/
|
|
30
|
-
export interface SkillArtifactStorage {
|
|
31
|
-
/** Saves an artifact under its content hash; returns the storage key. */
|
|
32
|
-
store(hash: string, data: Uint8Array): Promise<string>;
|
|
33
|
-
/** Loads an artifact by storage key; throws ArtifactNotFoundError if absent. */
|
|
34
|
-
get(storageKey: string): Promise<Uint8Array>;
|
|
35
|
-
/** Whether an artifact with this content hash already exists (dedupe). */
|
|
36
|
-
exists(hash: string): Promise<boolean>;
|
|
37
|
-
/** The storage key for a hash, without storing ("skills/<hash>.zip"). */
|
|
38
|
-
getStorageKey(hash: string): string;
|
|
39
|
-
/** The stored artifact's byte size via stat — never loads content. */
|
|
40
|
-
size(storageKey: string): Promise<number>;
|
|
41
|
-
}
|
|
25
|
+
export { ArtifactNotFoundError } from "../../../archive/content-store.js";
|
|
42
26
|
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
* a traversal-shaped key (both render as Go's "artifact not found: %s";
|
|
46
|
-
* distinguishing them would tell a probing caller which escapes exist).
|
|
47
|
-
*/
|
|
48
|
-
export class ArtifactNotFoundError extends Error {
|
|
49
|
-
constructor(storageKey: string) {
|
|
50
|
-
super(`artifact not found: ${storageKey}`);
|
|
51
|
-
this.name = "ArtifactNotFoundError";
|
|
52
|
-
}
|
|
53
|
-
}
|
|
27
|
+
/** Storage abstraction for skill artifacts (Go ArtifactStorage). */
|
|
28
|
+
export type SkillArtifactStorage = ContentAddressedArchiveStore;
|
|
54
29
|
|
|
55
|
-
/**
|
|
56
|
-
const
|
|
30
|
+
/** The key prefix shared with cloud R2 and the download lane's containment check. */
|
|
31
|
+
export const SKILL_ARTIFACT_KEY_PREFIX = "skills/";
|
|
57
32
|
|
|
58
|
-
/**
|
|
59
|
-
* The skill store over a blob driver. Object-literal factory rather than a
|
|
60
|
-
* class: all state is the captured driver, and the seam-adapter shape
|
|
61
|
-
* matches runner-credential-provider.ts (the O5 house style for ports).
|
|
62
|
-
*/
|
|
33
|
+
/** The skill store over a blob driver: "skills/<hash>.zip". */
|
|
63
34
|
export function newSkillArtifactStorage(
|
|
64
35
|
driver: ArtifactStorage,
|
|
65
36
|
): SkillArtifactStorage {
|
|
66
|
-
return
|
|
67
|
-
/**
|
|
68
|
-
* "skills/<hash>.zip" — the relative key format shared with cloud R2.
|
|
69
|
-
* Deliberately a LITERAL forward-slash join, not path.join: the key is
|
|
70
|
-
* a wire-visible identifier (status.artifact_storage_key, download
|
|
71
|
-
* URLs, the lane's "skills/" prefix check), and Windows support
|
|
72
|
-
* arrives only through this server (#24) — path.join would mint
|
|
73
|
-
* backslash keys there that the download lane could never serve.
|
|
74
|
-
*/
|
|
75
|
-
getStorageKey(hash: string): string {
|
|
76
|
-
return `skills/${hash}.zip`;
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
async store(hash: string, data: Uint8Array): Promise<string> {
|
|
80
|
-
const storageKey = this.getStorageKey(hash);
|
|
81
|
-
await driver.upload(storageKey, data, SKILL_ARTIFACT_CONTENT_TYPE);
|
|
82
|
-
return storageKey;
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
async get(storageKey: string): Promise<Uint8Array> {
|
|
86
|
-
if (keyEscapesStore(storageKey)) {
|
|
87
|
-
throw new ArtifactNotFoundError(storageKey);
|
|
88
|
-
}
|
|
89
|
-
try {
|
|
90
|
-
return await driver.download(storageKey);
|
|
91
|
-
} catch (error) {
|
|
92
|
-
if (error instanceof ArtifactStorageNotFoundError) {
|
|
93
|
-
throw new ArtifactNotFoundError(storageKey);
|
|
94
|
-
}
|
|
95
|
-
throw new Error(
|
|
96
|
-
`failed to read artifact: ${error instanceof Error ? error.message : String(error)}`,
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
async exists(hash: string): Promise<boolean> {
|
|
102
|
-
return driver.exists(this.getStorageKey(hash));
|
|
103
|
-
},
|
|
104
|
-
|
|
105
|
-
async size(storageKey: string): Promise<number> {
|
|
106
|
-
if (keyEscapesStore(storageKey)) {
|
|
107
|
-
throw new ArtifactNotFoundError(storageKey);
|
|
108
|
-
}
|
|
109
|
-
try {
|
|
110
|
-
return await driver.size(storageKey);
|
|
111
|
-
} catch (error) {
|
|
112
|
-
if (error instanceof ArtifactStorageNotFoundError) {
|
|
113
|
-
throw new ArtifactNotFoundError(storageKey);
|
|
114
|
-
}
|
|
115
|
-
throw new Error(
|
|
116
|
-
`failed to stat artifact: ${error instanceof Error ? error.message : String(error)}`,
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* The domain's own traversal guard (Go resolveWithinRoot, kept HERE per
|
|
125
|
-
* "the domain owns keys"): a client-supplied storage key that resolves
|
|
126
|
-
* outside the store addresses nothing inside it, and must collapse to the
|
|
127
|
-
* same not-found as a missing file BEFORE the driver sees it — the
|
|
128
|
-
* driver's own containment refusal is a distinguishable error, and
|
|
129
|
-
* distinguishing them would tell a probing caller which escapes exist.
|
|
130
|
-
* Lexical, against a fixed virtual root, so the judgment is identical on
|
|
131
|
-
* every backend rather than an accident of the local driver's directory.
|
|
132
|
-
*/
|
|
133
|
-
function keyEscapesStore(storageKey: string): boolean {
|
|
134
|
-
const virtualRoot = path.resolve(path.sep, "skill-store");
|
|
135
|
-
const resolved = path.resolve(virtualRoot, storageKey);
|
|
136
|
-
return (
|
|
137
|
-
resolved !== virtualRoot && !resolved.startsWith(virtualRoot + path.sep)
|
|
138
|
-
);
|
|
37
|
+
return newContentAddressedArchiveStore(driver, SKILL_ARTIFACT_KEY_PREFIX);
|
|
139
38
|
}
|
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
* arm-for-arm. Validates an uploaded artifact (size caps, ZIP-bomb
|
|
4
4
|
* budgets, entry-count and filename rules, root-SKILL.md presence with the
|
|
5
5
|
* #452 hint), extracts SKILL.md IN MEMORY ONLY (never to disk), and parses
|
|
6
|
-
* its frontmatter.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* its frontmatter.
|
|
7
|
+
*
|
|
8
|
+
* The kind-agnostic half (open, hash, prefilter, structural walk, capped
|
|
9
|
+
* inflate with CRC) is src/archive's, shared with the plugin gate since
|
|
10
|
+
* plugins are pushed as archives too; this module composes it and owns
|
|
11
|
+
* what is a SKILL's: the root-SKILL.md rule, the 1 MB document cap, the
|
|
12
|
+
* frontmatter parse, and every sentence below. The observable error order
|
|
13
|
+
* is the Go gate's exactly: the structural walk tracks SKILL.md placement
|
|
14
|
+
* in the same pass it validates, and rules on presence last.
|
|
10
15
|
*
|
|
11
16
|
* Error strings are wire-visible contract (the push pipeline wraps them
|
|
12
17
|
* into the InvalidArgument "failed to extract SKILL.md: ..." arm), pinned
|
|
@@ -21,24 +26,22 @@
|
|
|
21
26
|
* Proven by __tests__/zip-gate.test.ts and the skill conformance suite's
|
|
22
27
|
* push-validation negatives (CONFORMANCE_TARGET=local).
|
|
23
28
|
*/
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
import { InflateError, inflateEntry } from "../../../archive/inflate.js";
|
|
30
|
+
import { PLATFORM_ARCHIVE_LIMITS } from "../../../archive/limits.js";
|
|
31
|
+
import {
|
|
32
|
+
openArchive,
|
|
33
|
+
validateArchiveStructure,
|
|
34
|
+
} from "../../../archive/open.js";
|
|
35
|
+
import type { PrefilteredEntry } from "../../../archive/prefilter.js";
|
|
30
36
|
import {
|
|
31
|
-
MAX_COMPRESSION_RATIO,
|
|
32
|
-
MAX_FILES,
|
|
33
37
|
MAX_SKILL_MD_SIZE,
|
|
34
|
-
MAX_UNCOMPRESSED_SIZE,
|
|
35
38
|
MAX_ZIP_SIZE,
|
|
36
39
|
NESTED_SKILL_MD_HINT,
|
|
37
40
|
} from "../constants.js";
|
|
38
|
-
import { applyEntryPrefilter } from "./prefilter.js";
|
|
39
|
-
import type { PrefilteredEntry } from "./prefilter.js";
|
|
40
41
|
import { parseFrontmatter } from "./frontmatter.js";
|
|
41
42
|
|
|
43
|
+
export { calculateHash } from "../../../archive/open.js";
|
|
44
|
+
|
|
42
45
|
/** Result of a successful gate pass (Go ExtractSkillMdResult). */
|
|
43
46
|
export interface ExtractSkillMdResult {
|
|
44
47
|
/** Full SKILL.md content, frontmatter included. */
|
|
@@ -51,41 +54,35 @@ export interface ExtractSkillMdResult {
|
|
|
51
54
|
readonly description: string;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
|
-
/** ZIP compression methods the gate can open (Go registers the same two). */
|
|
55
|
-
const METHOD_STORED = 0;
|
|
56
|
-
const METHOD_DEFLATED = 8;
|
|
57
|
-
|
|
58
57
|
/**
|
|
59
58
|
* Validates the artifact and extracts SKILL.md + frontmatter (Go
|
|
60
59
|
* ExtractSkillMd). Throws plain Errors with byte-pinned messages; the
|
|
61
60
|
* push pipeline owns the gRPC code.
|
|
62
61
|
*/
|
|
63
62
|
export function extractSkillMd(zipData: Uint8Array): ExtractSkillMdResult {
|
|
64
|
-
|
|
65
|
-
throw new Error(
|
|
66
|
-
`ZIP file too large: ${zipData.length} bytes (max: ${MAX_ZIP_SIZE})`,
|
|
67
|
-
);
|
|
68
|
-
}
|
|
63
|
+
const { hash, entries } = openArchive(zipData, MAX_ZIP_SIZE);
|
|
69
64
|
|
|
70
|
-
|
|
65
|
+
// SKILL.md must be at the archive root. Nested occurrences are tracked
|
|
66
|
+
// only to make the rejection actionable (the #452 hint), in the same
|
|
67
|
+
// pass the structural checks run so their precedence stays Go's.
|
|
68
|
+
let hasSkillMd = false;
|
|
69
|
+
let hasNestedSkillMd = false;
|
|
70
|
+
validateArchiveStructure(entries, PLATFORM_ARCHIVE_LIMITS, (name) => {
|
|
71
|
+
if (name === "SKILL.md") {
|
|
72
|
+
hasSkillMd = true;
|
|
73
|
+
} else if (name.endsWith("/SKILL.md")) {
|
|
74
|
+
hasNestedSkillMd = true;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
71
77
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// clients see via the %w chain, so it is pinned verbatim.
|
|
78
|
-
throw new Error("invalid ZIP file: zip: not a valid zip file");
|
|
78
|
+
if (!hasSkillMd) {
|
|
79
|
+
if (hasNestedSkillMd) {
|
|
80
|
+
throw new Error(NESTED_SKILL_MD_HINT);
|
|
81
|
+
}
|
|
82
|
+
throw new Error("SKILL.md not found in ZIP archive");
|
|
79
83
|
}
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
// validation sees it (DD-001) — sanitized names, shadowed/special/8.3
|
|
83
|
-
// entries dropped.
|
|
84
|
-
const filtered = applyEntryPrefilter(entries);
|
|
85
|
-
|
|
86
|
-
validateZipContent(filtered);
|
|
87
|
-
|
|
88
|
-
const content = extractSkillMdContent(filtered);
|
|
85
|
+
const content = extractSkillMdContent(entries);
|
|
89
86
|
|
|
90
87
|
let frontmatter;
|
|
91
88
|
try {
|
|
@@ -104,76 +101,10 @@ export function extractSkillMd(zipData: Uint8Array): ExtractSkillMdResult {
|
|
|
104
101
|
};
|
|
105
102
|
}
|
|
106
103
|
|
|
107
|
-
/**
|
|
108
|
-
* Security validation over the (pre-filtered) entry list — Go
|
|
109
|
-
* validateZipContent, checks in its exact order: empty archive, file-count
|
|
110
|
-
* cap, then per entry SKILL.md placement tracking, filename
|
|
111
|
-
* control-character rejection, the running declared-uncompressed budget
|
|
112
|
-
* (fail-fast), and the per-file compression-ratio cap; finally the
|
|
113
|
-
* root-SKILL.md presence rule with the #452 nested-only hint.
|
|
114
|
-
*/
|
|
115
|
-
function validateZipContent(entries: readonly PrefilteredEntry[]): void {
|
|
116
|
-
if (entries.length === 0) {
|
|
117
|
-
throw new Error("ZIP file is empty");
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (entries.length > MAX_FILES) {
|
|
121
|
-
throw new Error(`too many files in ZIP: ${entries.length} (max: ${MAX_FILES})`);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
let totalUncompressedSize = 0;
|
|
125
|
-
let hasSkillMd = false;
|
|
126
|
-
let hasNestedSkillMd = false;
|
|
127
|
-
|
|
128
|
-
for (const { name, entry } of entries) {
|
|
129
|
-
// SKILL.md must be at the archive root. Nested occurrences are tracked
|
|
130
|
-
// only to make the rejection actionable (below).
|
|
131
|
-
if (name === "SKILL.md") {
|
|
132
|
-
hasSkillMd = true;
|
|
133
|
-
} else if (name.endsWith("/SKILL.md")) {
|
|
134
|
-
hasNestedSkillMd = true;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Reject null bytes and control characters in entry names (code
|
|
138
|
-
// points, not UTF-16 units — Go ranges over runes).
|
|
139
|
-
for (const ch of name) {
|
|
140
|
-
const codePoint = ch.codePointAt(0)!;
|
|
141
|
-
if (codePoint < 32 || codePoint === 127) {
|
|
142
|
-
throw new Error(`invalid character in filename: ${name}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Track the declared uncompressed total (fail fast once exceeded).
|
|
147
|
-
totalUncompressedSize += entry.uncompressedSize;
|
|
148
|
-
if (totalUncompressedSize > MAX_UNCOMPRESSED_SIZE) {
|
|
149
|
-
throw new Error(
|
|
150
|
-
`total uncompressed size too large: ${totalUncompressedSize} bytes (max: ${MAX_UNCOMPRESSED_SIZE})`,
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Per-file compression ratio (ZIP-bomb guard); integer division as Go.
|
|
155
|
-
if (entry.compressedSize > 0) {
|
|
156
|
-
const ratio = Math.floor(entry.uncompressedSize / entry.compressedSize);
|
|
157
|
-
if (ratio > MAX_COMPRESSION_RATIO) {
|
|
158
|
-
throw new Error(
|
|
159
|
-
`suspicious compression ratio in ${name}: ${ratio}:1 (max: ${MAX_COMPRESSION_RATIO}:1)`,
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (!hasSkillMd) {
|
|
166
|
-
if (hasNestedSkillMd) {
|
|
167
|
-
throw new Error(NESTED_SKILL_MD_HINT);
|
|
168
|
-
}
|
|
169
|
-
throw new Error("SKILL.md not found in ZIP archive");
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
104
|
/**
|
|
174
105
|
* Extracts SKILL.md's content in memory (Go extractSkillMdContent): the
|
|
175
|
-
* first root-named entry, decompressed under the 1MB cap, CRC-verified
|
|
176
|
-
*
|
|
106
|
+
* first root-named entry, decompressed under the 1MB cap, CRC-verified,
|
|
107
|
+
* UTF-8 decoded. The typed inflate outcome maps to Go's sentences here.
|
|
177
108
|
*/
|
|
178
109
|
function extractSkillMdContent(entries: readonly PrefilteredEntry[]): string {
|
|
179
110
|
for (const { name, entry } of entries) {
|
|
@@ -182,41 +113,28 @@ function extractSkillMdContent(entries: readonly PrefilteredEntry[]): string {
|
|
|
182
113
|
}
|
|
183
114
|
|
|
184
115
|
let contentBytes: Uint8Array;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
contentBytes = new Uint8Array(
|
|
194
|
-
inflateRawSync(entry.compressedData, {
|
|
195
|
-
maxOutputLength: MAX_SKILL_MD_SIZE + 1,
|
|
196
|
-
}),
|
|
197
|
-
);
|
|
198
|
-
} catch (error) {
|
|
199
|
-
if (isOutputLengthError(error)) {
|
|
200
|
-
throw new Error(`SKILL.md too large (max: ${MAX_SKILL_MD_SIZE} bytes)`);
|
|
201
|
-
}
|
|
116
|
+
try {
|
|
117
|
+
contentBytes = inflateEntry(entry, MAX_SKILL_MD_SIZE);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
if (!(error instanceof InflateError)) {
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
switch (error.kind) {
|
|
123
|
+
case "too-large":
|
|
202
124
|
throw new Error(
|
|
203
|
-
`
|
|
125
|
+
`SKILL.md too large (max: ${MAX_SKILL_MD_SIZE} bytes)`,
|
|
204
126
|
);
|
|
127
|
+
case "read-failed":
|
|
128
|
+
throw new Error(`failed to read SKILL.md: ${error.detail}`);
|
|
129
|
+
case "unsupported-method":
|
|
130
|
+
throw new Error(`failed to open SKILL.md: ${error.detail}`);
|
|
131
|
+
case "checksum":
|
|
132
|
+
throw new Error(`failed to read SKILL.md: ${error.detail}`);
|
|
133
|
+
default: {
|
|
134
|
+
const exhaustive: never = error.kind;
|
|
135
|
+
throw new Error(`unknown inflate failure ${String(exhaustive)}`);
|
|
205
136
|
}
|
|
206
|
-
|
|
207
|
-
default:
|
|
208
|
-
// Go: File.Open returns ErrAlgorithm for methods without a
|
|
209
|
-
// registered decompressor; the text is pinned via the %w chain.
|
|
210
|
-
throw new Error("failed to open SKILL.md: zip: unsupported compression algorithm");
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (contentBytes.length > MAX_SKILL_MD_SIZE) {
|
|
214
|
-
throw new Error(`SKILL.md too large (max: ${MAX_SKILL_MD_SIZE} bytes)`);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (crc32(contentBytes) !== entry.crc32) {
|
|
218
|
-
// Go's checksumReader: stdlib ErrChecksum via the read-error arm.
|
|
219
|
-
throw new Error("failed to read SKILL.md: zip: checksum error");
|
|
137
|
+
}
|
|
220
138
|
}
|
|
221
139
|
|
|
222
140
|
if (contentBytes.length === 0) {
|
|
@@ -228,17 +146,3 @@ function extractSkillMdContent(entries: readonly PrefilteredEntry[]): string {
|
|
|
228
146
|
|
|
229
147
|
throw new Error("SKILL.md not found in ZIP archive");
|
|
230
148
|
}
|
|
231
|
-
|
|
232
|
-
/** node:zlib's maxOutputLength violation (the output-cap arm). */
|
|
233
|
-
function isOutputLengthError(error: unknown): boolean {
|
|
234
|
-
return (
|
|
235
|
-
error instanceof Error &&
|
|
236
|
-
(("code" in error && (error as { code?: string }).code === "ERR_BUFFER_TOO_LARGE") ||
|
|
237
|
-
error.message.includes("maxOutputLength"))
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/** SHA-256 hex of the artifact bytes (Go CalculateHash). */
|
|
242
|
-
export function calculateHash(data: Uint8Array): string {
|
|
243
|
-
return createHash("sha256").update(data).digest("hex");
|
|
244
|
-
}
|