@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
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
* (Cloud's push handler does not validate either) — do not "fix" these.
|
|
16
16
|
*/
|
|
17
17
|
import type { DescMessage } from "@bufbuild/protobuf";
|
|
18
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
18
19
|
import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
|
|
20
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
19
21
|
import type { PipelineStep } from "../pipeline.js";
|
|
20
22
|
export declare function newValidateVisibilityStep<Desc extends DescMessage>(): PipelineStep<Desc>;
|
|
21
23
|
export declare function newValidateVisibilityUpdateStep(): PipelineStep<typeof UpdateVisibilityInputSchema>;
|
|
@@ -26,4 +28,11 @@ export declare function newValidateVisibilityUpdateStep(): PipelineStep<typeof U
|
|
|
26
28
|
* the PREDICATE lives in the instance controllers' own guard steps.
|
|
27
29
|
*/
|
|
28
30
|
export declare function rejectDefaultInstanceVisibilityUpdate(): never;
|
|
31
|
+
/** Go rejectUnsupportedVisibility (the shared level check + copy). */
|
|
32
|
+
/**
|
|
33
|
+
* The one sentence for a level a kind does not support. Exported for the
|
|
34
|
+
* push-shaped chains whose requested level rides the request rather than
|
|
35
|
+
* a resource's metadata (plugin push), so the copy stays in one place.
|
|
36
|
+
*/
|
|
37
|
+
export declare function rejectUnsupportedVisibility(kind: ApiResourceKind, visibility: ApiResourceVisibility): void;
|
|
29
38
|
//# sourceMappingURL=validate-visibility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-visibility.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/validate-visibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-visibility.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/validate-visibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAYtH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,wBAAgB,yBAAyB,CACvC,IAAI,SAAS,WAAW,KACrB,YAAY,CAAC,IAAI,CAAC,CAWtB;AAED,wBAAgB,+BAA+B,IAAI,YAAY,CAC7D,OAAO,2BAA2B,CACnC,CAOA;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,IAAI,KAAK,CAK7D;AAED,sEAAsE;AACtE;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,qBAAqB,GAChC,IAAI,CAeN"}
|
|
@@ -34,7 +34,12 @@ export function rejectDefaultInstanceVisibilityUpdate() {
|
|
|
34
34
|
"the parent blueprint. Change the blueprint's visibility instead.");
|
|
35
35
|
}
|
|
36
36
|
/** Go rejectUnsupportedVisibility (the shared level check + copy). */
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The one sentence for a level a kind does not support. Exported for the
|
|
39
|
+
* push-shaped chains whose requested level rides the request rather than
|
|
40
|
+
* a resource's metadata (plugin push), so the copy stays in one place.
|
|
41
|
+
*/
|
|
42
|
+
export function rejectUnsupportedVisibility(kind, visibility) {
|
|
38
43
|
let supported;
|
|
39
44
|
let levels;
|
|
40
45
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-visibility.js","sourceRoot":"","sources":["../../../src/pipeline/steps/validate-visibility.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAI/F,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,yBAAyB;
|
|
1
|
+
{"version":3,"file":"validate-visibility.js","sourceRoot":"","sources":["../../../src/pipeline/steps/validate-visibility.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAI/F,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,yBAAyB;IAGvC,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,OAAO,CAAC,GAAyB;YAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,yDAAyD;YACnE,CAAC;YACD,2BAA2B,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B;IAG7C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,OAAO,CAAC,GAAuD;YAC7D,2BAA2B,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzE,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qCAAqC;IACnD,MAAM,uBAAuB,CAC3B,6EAA6E;QAC3E,kEAAkE,CACrE,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAqB,EACrB,UAAiC;IAEjC,IAAI,SAAkB,CAAC;IACvB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,CAAC,KAAK,EAAE,+CAA+C,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,oBAAoB,CACxB,GAAG,mBAAmB,CAAC,IAAI,CAAC,+BAA+B,qBAAqB,CAAC,UAAU,CAAC,kCAAkC,MAAM,GAAG,CACxI,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/validation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,wBAAgB,SAAS,IAAI,SAAS,CAKrC;AAED,wBAAgB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/validation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,wBAAgB,SAAS,IAAI,SAAS,CAKrC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,SAAS,WAAW,KACrB,YAAY,CAAC,IAAI,CAAC,CAmBtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/pipeline/steps/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,0EAA0E;AAC1E,yBAAyB;AACzB,IAAI,eAAsC,CAAC;AAE3C,MAAM,UAAU,SAAS;IACvB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,GAAG,eAAe,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/pipeline/steps/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,0EAA0E;AAC1E,yBAAyB;AACzB,IAAI,eAAsC,CAAC;AAE3C,MAAM,UAAU,SAAS;IACvB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,GAAG,eAAe,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAGlC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,CAAC,GAAyB;YAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,CAAC;YACD,oEAAoE;YACpE,qDAAqD;YACrD,MAAM,IAAI,YAAY,CACpB,6BAA6B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EACnD,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write side of content-addressed versioning, shared by every kind
|
|
3
|
+
* whose version is the SHA-256 of a pushed archive (skills, plugins): the
|
|
4
|
+
* "archive the head" step a push runs after the head is fully populated,
|
|
5
|
+
* and the best-effort archive cleanup a delete runs before the row. Skills
|
|
6
|
+
* carried both alone (#341, adopted for skills in #475; the Go
|
|
7
|
+
* ArchiveCurrentSkillStep / DeleteSkillArchivesStep port); plugins need the
|
|
8
|
+
* identical semantics over another schema, so the steps live here and each
|
|
9
|
+
* kind names its step (`ArchiveCurrentSkill`, `ArchiveCurrentPlugin`), its
|
|
10
|
+
* context key and where its hash and tag live.
|
|
11
|
+
*
|
|
12
|
+
* The load-bearing semantics, all preserved from the skill port:
|
|
13
|
+
* - repoint-never-duplicate: re-pushing EVER-archived content repoints the
|
|
14
|
+
* head to the existing audit row (an A→B→A re-push must not duplicate
|
|
15
|
+
* A's row);
|
|
16
|
+
* - snapshots archive TAGLESS; the audit tag COLUMN is the tag's only
|
|
17
|
+
* home, assigned through the single-holder setAuditTag primitive —
|
|
18
|
+
* assigned even when the content was already archived, because
|
|
19
|
+
* re-pushing under a new tag is the only retag path;
|
|
20
|
+
* - safe degradation: archive failure clears the version hash from the
|
|
21
|
+
* head (the persisted head never references an unresolvable audit
|
|
22
|
+
* entry); tag-assignment failure clears the live tag.
|
|
23
|
+
*
|
|
24
|
+
* Proven by the skill domain's __tests__/push-degradation.test.ts (the
|
|
25
|
+
* failing-store arms) and both kinds' conformance suites (the
|
|
26
|
+
* content-addressed versioning blocks).
|
|
27
|
+
*/
|
|
28
|
+
import type { DescMessage, MessageShape } from "@bufbuild/protobuf";
|
|
29
|
+
import type { Logger } from "../../boot/logger.js";
|
|
30
|
+
import type { PipelineStep } from "../pipeline.js";
|
|
31
|
+
import type { Store } from "../../store/interface.js";
|
|
32
|
+
/** What a content-versioned kind must expose for its head to be archived. */
|
|
33
|
+
export interface ArchiveCurrentVersionBinding<Desc extends DescMessage> {
|
|
34
|
+
/** The step's name in the chain; shared vocabulary, never renamed. */
|
|
35
|
+
readonly stepName: string;
|
|
36
|
+
/** The context key the fully populated head rides. */
|
|
37
|
+
readonly resourceKey: string;
|
|
38
|
+
readonly schema: Desc;
|
|
39
|
+
/** The noun in log lines: "skill", "plugin". */
|
|
40
|
+
readonly noun: string;
|
|
41
|
+
headHashOf(resource: MessageShape<Desc>): string;
|
|
42
|
+
/** Degradation arm: the head must never reference an unresolvable audit row. */
|
|
43
|
+
clearHeadHash(resource: MessageShape<Desc>): void;
|
|
44
|
+
liveTagOf(resource: MessageShape<Desc>): string;
|
|
45
|
+
/** Degradation arm: the live tag must agree with the audit column. */
|
|
46
|
+
clearLiveTag(resource: MessageShape<Desc>): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Repoint or archive, then the single-holder tag assignment, each with its
|
|
50
|
+
* safe degradation. Runs AFTER the populate step so the archived snapshot
|
|
51
|
+
* is the fully populated head.
|
|
52
|
+
*/
|
|
53
|
+
export declare function newArchiveCurrentVersionStep<Desc extends DescMessage, RequestDesc extends DescMessage>(store: Store, logger: Logger, binding: ArchiveCurrentVersionBinding<Desc>): PipelineStep<RequestDesc>;
|
|
54
|
+
/**
|
|
55
|
+
* Best-effort audit cleanup BEFORE the resource row (no FK cascade in the
|
|
56
|
+
* schema, by design): failures log and never block the delete. Reads the
|
|
57
|
+
* id ExtractResourceId set.
|
|
58
|
+
*/
|
|
59
|
+
export declare function newDeleteVersionArchivesStep<RequestDesc extends DescMessage>(store: Store, logger: Logger, binding: {
|
|
60
|
+
readonly stepName: string;
|
|
61
|
+
readonly noun: string;
|
|
62
|
+
}): PipelineStep<RequestDesc>;
|
|
63
|
+
//# sourceMappingURL=version-archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-archive.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/version-archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAItD,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B,CAAC,IAAI,SAAS,WAAW;IACpE,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACjD,gFAAgF;IAChF,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAChD,sEAAsE;IACtE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,SAAS,WAAW,EACxB,WAAW,SAAS,WAAW,EAE/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,4BAA4B,CAAC,IAAI,CAAC,GAC1C,YAAY,CAAC,WAAW,CAAC,CAiH3B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,SAAS,WAAW,EAC1E,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5D,YAAY,CAAC,WAAW,CAAC,CA8B3B"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { AuditNotFoundError } from "../../store/interface.js";
|
|
2
|
+
import { RESOURCE_ID_KEY } from "./delete.js";
|
|
3
|
+
import { metadataOf } from "./shapes.js";
|
|
4
|
+
/**
|
|
5
|
+
* Repoint or archive, then the single-holder tag assignment, each with its
|
|
6
|
+
* safe degradation. Runs AFTER the populate step so the archived snapshot
|
|
7
|
+
* is the fully populated head.
|
|
8
|
+
*/
|
|
9
|
+
export function newArchiveCurrentVersionStep(store, logger, binding) {
|
|
10
|
+
return {
|
|
11
|
+
name: binding.stepName,
|
|
12
|
+
async execute(ctx) {
|
|
13
|
+
const resource = ctx.get(binding.resourceKey);
|
|
14
|
+
const versionHash = binding.headHashOf(resource);
|
|
15
|
+
if (versionHash === "") {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const tag = binding.liveTagOf(resource);
|
|
19
|
+
const resourceId = metadataOf(resource)?.id ?? "";
|
|
20
|
+
const idField = `${binding.noun}Id`;
|
|
21
|
+
// Repoint, never duplicate: if this content was ever archived, the
|
|
22
|
+
// head simply repoints to the existing row and only the tag
|
|
23
|
+
// assignment below still runs. An unexpected lookup failure degrades
|
|
24
|
+
// to archiving anyway — a possible duplicate row beats a failed push
|
|
25
|
+
// (readers resolve duplicates newest-wins).
|
|
26
|
+
let alreadyArchived = false;
|
|
27
|
+
try {
|
|
28
|
+
await store.getAuditByHash(ctx.apiResourceKind, resourceId, versionHash, binding.schema);
|
|
29
|
+
alreadyArchived = true;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (!(error instanceof AuditNotFoundError)) {
|
|
33
|
+
logger.warn(`Could not check for an existing archived ${binding.noun} version — archiving anyway`, {
|
|
34
|
+
[idField]: resourceId,
|
|
35
|
+
versionHash,
|
|
36
|
+
error: error instanceof Error ? error.message : String(error),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!alreadyArchived) {
|
|
41
|
+
// Archive the snapshot tagless: the tag lives only in the audit tag
|
|
42
|
+
// column (the source of truth), assigned below through the
|
|
43
|
+
// single-holder primitive — a later tag move never rewrites this
|
|
44
|
+
// immutable content.
|
|
45
|
+
try {
|
|
46
|
+
await store.saveAudit(ctx.apiResourceKind, resourceId, binding.schema, resource, versionHash, "");
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.error(`Failed to archive ${binding.noun} version — reverting the version hash to maintain the audit-resolvability invariant`, {
|
|
50
|
+
[idField]: resourceId,
|
|
51
|
+
versionHash,
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
});
|
|
54
|
+
// Revert: the persisted head must never reference an audit entry
|
|
55
|
+
// that does not exist. The push still succeeds, but without
|
|
56
|
+
// version tracking for this apply.
|
|
57
|
+
binding.clearHeadHash(resource);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Assign the requested tag through setAuditTag — the single-holder
|
|
62
|
+
// primitive — so the head version (freshly archived or repointed-to)
|
|
63
|
+
// becomes the tag's sole holder; any prior holder is cleared.
|
|
64
|
+
if (tag !== "") {
|
|
65
|
+
try {
|
|
66
|
+
await store.setAuditTag(ctx.apiResourceKind, resourceId, versionHash, tag);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
logger.error(`Archived ${binding.noun} version but failed to assign its tag — clearing the live tag to stay consistent with the audit column`, {
|
|
70
|
+
[idField]: resourceId,
|
|
71
|
+
versionHash,
|
|
72
|
+
tag,
|
|
73
|
+
error: error instanceof Error ? error.message : String(error),
|
|
74
|
+
});
|
|
75
|
+
// The audit head is now untagged; keep the live head consistent
|
|
76
|
+
// so get / getByReference never advertise a tag the store cannot
|
|
77
|
+
// resolve.
|
|
78
|
+
binding.clearLiveTag(resource);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (alreadyArchived) {
|
|
82
|
+
logger.info(`${capitalize(binding.noun)} version content already archived — repointed head without a new history row`, { [idField]: resourceId, versionHash, tag });
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
logger.info(`Archived ${binding.noun} version to audit history`, {
|
|
86
|
+
[idField]: resourceId,
|
|
87
|
+
versionHash,
|
|
88
|
+
tag,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Best-effort audit cleanup BEFORE the resource row (no FK cascade in the
|
|
96
|
+
* schema, by design): failures log and never block the delete. Reads the
|
|
97
|
+
* id ExtractResourceId set.
|
|
98
|
+
*/
|
|
99
|
+
export function newDeleteVersionArchivesStep(store, logger, binding) {
|
|
100
|
+
return {
|
|
101
|
+
name: binding.stepName,
|
|
102
|
+
async execute(ctx) {
|
|
103
|
+
const resourceId = ctx.get(RESOURCE_ID_KEY);
|
|
104
|
+
if (typeof resourceId !== "string") {
|
|
105
|
+
throw new Error("resource id not found in context (ExtractResourceIdStep must run first)");
|
|
106
|
+
}
|
|
107
|
+
const idField = `${binding.noun}Id`;
|
|
108
|
+
try {
|
|
109
|
+
const deletedCount = await store.deleteAuditByResourceId(ctx.apiResourceKind, resourceId);
|
|
110
|
+
if (deletedCount > 0) {
|
|
111
|
+
logger.info(`Deleted archive records for ${binding.noun}`, {
|
|
112
|
+
[idField]: resourceId,
|
|
113
|
+
count: deletedCount,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
logger.warn(`failed to delete ${binding.noun} archives (best-effort)`, {
|
|
119
|
+
[idField]: resourceId,
|
|
120
|
+
error: error instanceof Error ? error.message : String(error),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function capitalize(word) {
|
|
127
|
+
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=version-archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-archive.js","sourceRoot":"","sources":["../../../src/pipeline/steps/version-archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { DescMessage, Message, MessageShape } from "@bufbuild/protobuf";
|
|
2
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
3
|
+
import type { ApiResourceReferenceSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
|
|
4
|
+
import type { PipelineStep } from "../pipeline.js";
|
|
5
|
+
import type { Store } from "../../store/interface.js";
|
|
6
|
+
export declare function isVersionHash(version: string): boolean;
|
|
7
|
+
/** What a content-versioned kind must say about itself for the ladder. */
|
|
8
|
+
export interface VersionedResourceBinding<Desc extends DescMessage> {
|
|
9
|
+
readonly kind: ApiResourceKind;
|
|
10
|
+
readonly schema: Desc;
|
|
11
|
+
/** The noun in sentences: "skill", "plugin". */
|
|
12
|
+
readonly noun: string;
|
|
13
|
+
/** The head's content hash (status.version_hash, status.digest). */
|
|
14
|
+
headHashOf(resource: MessageShape<Desc>): string;
|
|
15
|
+
/** The tag the live head claims (spec.tag; the plugin's manifest version). */
|
|
16
|
+
liveTagOf(resource: MessageShape<Desc>): string;
|
|
17
|
+
}
|
|
18
|
+
type GetByReferenceDesc = typeof ApiResourceReferenceSchema;
|
|
19
|
+
/** The reference + version ladder (Go LoadSkillByReferenceStep, generalised). */
|
|
20
|
+
export declare function newLoadByReferenceWithVersionStep<Desc extends DescMessage>(store: Store, binding: VersionedResourceBinding<Desc>, stepName: string): PipelineStep<GetByReferenceDesc>;
|
|
21
|
+
export declare const LIST_VERSIONS_RESOURCE_ID_KEY = "listVersionsResourceId";
|
|
22
|
+
export declare const LIST_VERSIONS_HEAD_HASH_KEY = "listVersionsHeadHash";
|
|
23
|
+
export declare const LIST_VERSIONS_RESPONSE_KEY = "listVersionsResponse";
|
|
24
|
+
/** The fields every ListVersions input carries; the binding reads them off its own message. */
|
|
25
|
+
export interface ListVersionsInputShape {
|
|
26
|
+
readonly org: string;
|
|
27
|
+
readonly slug: string;
|
|
28
|
+
readonly pageToken: string;
|
|
29
|
+
readonly pageSize: number;
|
|
30
|
+
}
|
|
31
|
+
/** What differs per kind in the version history: the input, the entry, the response. */
|
|
32
|
+
export interface VersionHistoryBinding<Desc extends DescMessage, InputDesc extends DescMessage, Entry extends Message, Response extends Message> extends VersionedResourceBinding<Desc> {
|
|
33
|
+
input(message: MessageShape<InputDesc>): ListVersionsInputShape;
|
|
34
|
+
/** An archived snapshot to one entry; `tag` is the audit column's. */
|
|
35
|
+
mapEntry(snapshot: MessageShape<Desc>, isCurrent: boolean, tag: string): Entry;
|
|
36
|
+
response(entries: Entry[], nextPageToken: string, totalCount: number): Response;
|
|
37
|
+
}
|
|
38
|
+
/** Resolves the head by slug and captures its id and hash (Go ResolveSkillBySlugStep, generalised). */
|
|
39
|
+
export declare function newResolveBySlugForVersionsStep<Desc extends DescMessage, InputDesc extends DescMessage, Entry extends Message, Response extends Message>(store: Store, binding: VersionHistoryBinding<Desc, InputDesc, Entry, Response>, stepName: string): PipelineStep<InputDesc>;
|
|
40
|
+
/** Audit records → entries → one page (Go LoadAndMapVersionsStep, generalised). */
|
|
41
|
+
export declare function newLoadAndMapVersionsStep<Desc extends DescMessage, InputDesc extends DescMessage, Entry extends Message, Response extends Message>(store: Store, binding: VersionHistoryBinding<Desc, InputDesc, Entry, Response>, stepName: string): PipelineStep<InputDesc>;
|
|
42
|
+
/**
|
|
43
|
+
* Decodes the base64 cursor with Go's strictness: base64.StdEncoding
|
|
44
|
+
* rejects malformed input and strconv.Atoi rejects trailing garbage —
|
|
45
|
+
* Buffer.from is lenient on both, so validity is checked explicitly.
|
|
46
|
+
*/
|
|
47
|
+
export declare function decodePageToken(token: string): number;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=version-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-history.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/version-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The read side of content-addressed versioning, shared by every kind whose
|
|
3
|
+
* version is the SHA-256 of a pushed archive (skills, plugins): the
|
|
4
|
+
* getByReference version ladder and the paginated version history. Skills
|
|
5
|
+
* carried both alone (the Go LoadSkillByReferenceStep / ListVersions port);
|
|
6
|
+
* plugins need the identical ladder over another schema, and a second copy
|
|
7
|
+
* would be the drift the house forbids, so the steps take a
|
|
8
|
+
* `VersionedResourceBinding` that names what differs per kind (the schema,
|
|
9
|
+
* the noun in sentences, where the head hash and the live tag live, how a
|
|
10
|
+
* snapshot maps to an entry) and keep everything else once.
|
|
11
|
+
*
|
|
12
|
+
* The ladder: resolve the live head by slug+org; empty/"latest" returns it;
|
|
13
|
+
* a 64-hex version matches the head's hash or falls to the indexed
|
|
14
|
+
* audit-by-hash lookup; anything else is a tag, matching the head's live
|
|
15
|
+
* tag first (honest under the single-holder model: a push reconciles the
|
|
16
|
+
* live tag with the audit tag column, clearing the live tag when
|
|
17
|
+
* assignment fails) and then the indexed audit-by-tag lookup.
|
|
18
|
+
*
|
|
19
|
+
* listVersions marks is_current by HEAD-HASH match, not recency: under
|
|
20
|
+
* repoint semantics (#475) re-pushing archived content re-activates its
|
|
21
|
+
* existing row, so the current version need not be the newest-archived
|
|
22
|
+
* one. Tags come from the audit COLUMN (the single-holder source of
|
|
23
|
+
* truth), never from the snapshot.
|
|
24
|
+
*
|
|
25
|
+
* Proven by the skill domain's __tests__/skill.test.ts (ladder and
|
|
26
|
+
* pagination blocks) and the skill and plugin conformance suites'
|
|
27
|
+
* getByReference/listVersions blocks.
|
|
28
|
+
*/
|
|
29
|
+
import { fromBinary } from "@bufbuild/protobuf";
|
|
30
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
31
|
+
import { internalError, invalidArgumentError, notFoundError, } from "../errors.js";
|
|
32
|
+
import { AuditNotFoundError } from "../../store/interface.js";
|
|
33
|
+
import { findResourceBySlug, requireOrgForReference } from "./helpers.js";
|
|
34
|
+
import { TARGET_RESOURCE_KEY } from "./load-target.js";
|
|
35
|
+
import { metadataOf } from "./shapes.js";
|
|
36
|
+
/** A 64-character lowercase-hex string (a SHA-256 content hash). */
|
|
37
|
+
const HASH_PATTERN = /^[a-f0-9]{64}$/;
|
|
38
|
+
export function isVersionHash(version) {
|
|
39
|
+
return HASH_PATTERN.test(version);
|
|
40
|
+
}
|
|
41
|
+
/** The reference + version ladder (Go LoadSkillByReferenceStep, generalised). */
|
|
42
|
+
export function newLoadByReferenceWithVersionStep(store, binding, stepName) {
|
|
43
|
+
return {
|
|
44
|
+
name: stepName,
|
|
45
|
+
async execute(ctx) {
|
|
46
|
+
const ref = ctx.input;
|
|
47
|
+
if (ref.slug === "") {
|
|
48
|
+
throw invalidArgumentError("slug is required in reference");
|
|
49
|
+
}
|
|
50
|
+
// Org-scoped kinds: the slug is unique only within an org, so an
|
|
51
|
+
// empty-org reference is under-specified.
|
|
52
|
+
requireOrgForReference(ctx.apiResourceKind, ref.org);
|
|
53
|
+
if (ref.kind !== ApiResourceKind.api_resource_kind_unknown &&
|
|
54
|
+
ref.kind !== binding.kind) {
|
|
55
|
+
throw invalidArgumentError(`kind mismatch: expected ${ApiResourceKind[binding.kind]}, got ${ApiResourceKind[ref.kind]}`);
|
|
56
|
+
}
|
|
57
|
+
let head;
|
|
58
|
+
try {
|
|
59
|
+
head = await findResourceBySlug(store, ctx.apiResourceKind, binding.schema, ref.slug, ref.org);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw internalError(error, `failed to list ${binding.noun}s`);
|
|
63
|
+
}
|
|
64
|
+
if (head === undefined) {
|
|
65
|
+
throw notFoundError(binding.noun, ref.slug);
|
|
66
|
+
}
|
|
67
|
+
const version = ref.version.trim();
|
|
68
|
+
if (version === "" || version === "latest") {
|
|
69
|
+
ctx.set(TARGET_RESOURCE_KEY, head);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (headMatchesVersion(binding, head, version)) {
|
|
73
|
+
ctx.set(TARGET_RESOURCE_KEY, head);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const archived = await findAuditByVersion(store, ctx.apiResourceKind, binding.schema, idOf(head), version);
|
|
77
|
+
if (archived === undefined) {
|
|
78
|
+
throw notFoundError(`${binding.noun} version`, `${ref.slug}:${version}`);
|
|
79
|
+
}
|
|
80
|
+
ctx.set(TARGET_RESOURCE_KEY, archived);
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** Whether the live head IS the requested version — by hash, or by its live tag. */
|
|
85
|
+
function headMatchesVersion(binding, head, version) {
|
|
86
|
+
if (isVersionHash(version)) {
|
|
87
|
+
return binding.headHashOf(head) === version;
|
|
88
|
+
}
|
|
89
|
+
const liveTag = binding.liveTagOf(head);
|
|
90
|
+
return liveTag !== "" && liveTag === version;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Indexed audit lookup by hash or tag — not-found is a normal outcome
|
|
94
|
+
* (undefined), storage failures are Internal.
|
|
95
|
+
*/
|
|
96
|
+
async function findAuditByVersion(store, kind, schema, resourceId, version) {
|
|
97
|
+
if (isVersionHash(version)) {
|
|
98
|
+
try {
|
|
99
|
+
return await store.getAuditByHash(kind, resourceId, version, schema);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error instanceof AuditNotFoundError) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
throw internalError(error, "failed to query audit by hash");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
return await store.getAuditByTag(kind, resourceId, version, schema);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof AuditNotFoundError) {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
throw internalError(error, "failed to query audit by tag");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// ─── listVersions ────────────────────────────────────────────────────────
|
|
119
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
120
|
+
const MAX_PAGE_SIZE = 100;
|
|
121
|
+
export const LIST_VERSIONS_RESOURCE_ID_KEY = "listVersionsResourceId";
|
|
122
|
+
export const LIST_VERSIONS_HEAD_HASH_KEY = "listVersionsHeadHash";
|
|
123
|
+
export const LIST_VERSIONS_RESPONSE_KEY = "listVersionsResponse";
|
|
124
|
+
/** Resolves the head by slug and captures its id and hash (Go ResolveSkillBySlugStep, generalised). */
|
|
125
|
+
export function newResolveBySlugForVersionsStep(store, binding, stepName) {
|
|
126
|
+
return {
|
|
127
|
+
name: stepName,
|
|
128
|
+
async execute(ctx) {
|
|
129
|
+
const req = binding.input(ctx.input);
|
|
130
|
+
let head;
|
|
131
|
+
try {
|
|
132
|
+
head = await findResourceBySlug(store, ctx.apiResourceKind, binding.schema, req.slug, req.org);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
throw internalError(error, `failed to search for ${binding.noun}`);
|
|
136
|
+
}
|
|
137
|
+
if (head === undefined) {
|
|
138
|
+
throw notFoundError(binding.noun, `${req.slug} (org: ${req.org})`);
|
|
139
|
+
}
|
|
140
|
+
ctx.set(LIST_VERSIONS_RESOURCE_ID_KEY, idOf(head));
|
|
141
|
+
// The live head's hash decides is_current downstream. Under repoint
|
|
142
|
+
// semantics the current version need not be the newest-archived row,
|
|
143
|
+
// so recency cannot stand in for currency.
|
|
144
|
+
ctx.set(LIST_VERSIONS_HEAD_HASH_KEY, binding.headHashOf(head));
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/** Audit records → entries → one page (Go LoadAndMapVersionsStep, generalised). */
|
|
149
|
+
export function newLoadAndMapVersionsStep(store, binding, stepName) {
|
|
150
|
+
return {
|
|
151
|
+
name: stepName,
|
|
152
|
+
async execute(ctx) {
|
|
153
|
+
const req = binding.input(ctx.input);
|
|
154
|
+
const resourceId = ctx.get(LIST_VERSIONS_RESOURCE_ID_KEY);
|
|
155
|
+
let records;
|
|
156
|
+
try {
|
|
157
|
+
records = await store.listAuditRecords(ctx.apiResourceKind, resourceId);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
throw internalError(error, "failed to load version history");
|
|
161
|
+
}
|
|
162
|
+
// is_current = the entry whose hash matches the live head, not the
|
|
163
|
+
// newest row. Legacy data may hold duplicate-hash rows (predating
|
|
164
|
+
// repoint semantics); marking only the first match keeps
|
|
165
|
+
// exactly-one-current true for them too.
|
|
166
|
+
const headHash = ctx.get(LIST_VERSIONS_HEAD_HASH_KEY);
|
|
167
|
+
let currentMarked = false;
|
|
168
|
+
const entries = [];
|
|
169
|
+
for (const record of records) {
|
|
170
|
+
let snapshot;
|
|
171
|
+
try {
|
|
172
|
+
snapshot = fromBinary(binding.schema, record.data);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const isCurrent = !currentMarked &&
|
|
178
|
+
headHash !== "" &&
|
|
179
|
+
binding.headHashOf(snapshot) === headHash;
|
|
180
|
+
currentMarked = currentMarked || isCurrent;
|
|
181
|
+
// Tag comes from the audit column (source of truth), not the snapshot.
|
|
182
|
+
entries.push(binding.mapEntry(snapshot, isCurrent, record.tag));
|
|
183
|
+
}
|
|
184
|
+
let pageSize = req.pageSize;
|
|
185
|
+
if (pageSize <= 0) {
|
|
186
|
+
pageSize = DEFAULT_PAGE_SIZE;
|
|
187
|
+
}
|
|
188
|
+
if (pageSize > MAX_PAGE_SIZE) {
|
|
189
|
+
pageSize = MAX_PAGE_SIZE;
|
|
190
|
+
}
|
|
191
|
+
let startIndex = 0;
|
|
192
|
+
if (req.pageToken !== "") {
|
|
193
|
+
startIndex = decodePageToken(req.pageToken);
|
|
194
|
+
}
|
|
195
|
+
let pageEntries = [];
|
|
196
|
+
let nextPageToken = "";
|
|
197
|
+
if (startIndex < entries.length) {
|
|
198
|
+
const end = Math.min(startIndex + pageSize, entries.length);
|
|
199
|
+
pageEntries = entries.slice(startIndex, end);
|
|
200
|
+
if (end < entries.length) {
|
|
201
|
+
nextPageToken = Buffer.from(String(end)).toString("base64");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
ctx.set(LIST_VERSIONS_RESPONSE_KEY, binding.response(pageEntries, nextPageToken, entries.length));
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Decodes the base64 cursor with Go's strictness: base64.StdEncoding
|
|
210
|
+
* rejects malformed input and strconv.Atoi rejects trailing garbage —
|
|
211
|
+
* Buffer.from is lenient on both, so validity is checked explicitly.
|
|
212
|
+
*/
|
|
213
|
+
export function decodePageToken(token) {
|
|
214
|
+
const decoded = Buffer.from(token, "base64");
|
|
215
|
+
if (decoded.toString("base64") !== token) {
|
|
216
|
+
throw invalidArgumentError("invalid page_token");
|
|
217
|
+
}
|
|
218
|
+
const text = decoded.toString("utf8");
|
|
219
|
+
const index = Number.parseInt(text, 10);
|
|
220
|
+
if (!Number.isSafeInteger(index) || String(index) !== text || index < 0) {
|
|
221
|
+
throw invalidArgumentError("invalid page_token");
|
|
222
|
+
}
|
|
223
|
+
return index;
|
|
224
|
+
}
|
|
225
|
+
/** metadata.id of a resource message; every versioned kind carries the commons metadata. */
|
|
226
|
+
function idOf(resource) {
|
|
227
|
+
return metadataOf(resource)?.id ?? "";
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=version-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-history.js","sourceRoot":"","sources":["../../../src/pipeline/steps/version-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DescMessage } from "@bufbuild/protobuf";
|
|
2
2
|
import type { Authorizer } from "../../extensions/authorizer.js";
|
|
3
|
+
import type { CallerIdentity } from "../../extensions/identity.js";
|
|
3
4
|
import type { PipelineStep } from "../pipeline.js";
|
|
4
5
|
/**
|
|
5
6
|
* The denial callers see at both doors (the Java policy copy verbatim).
|
|
@@ -16,4 +17,11 @@ export declare function newGuardPublicVisibilityStep<Desc extends DescMessage>(a
|
|
|
16
17
|
* the RecordVisibilityBeforeUpdate pattern).
|
|
17
18
|
*/
|
|
18
19
|
export declare function newAuthorizeVisibilityTransitionStep<Desc extends DescMessage>(targetKey: string, authorizer: Authorizer): PipelineStep<Desc>;
|
|
20
|
+
/**
|
|
21
|
+
* The single owner of "may this caller set public?" — both doors call it,
|
|
22
|
+
* and so does the plugin push chain, whose requested level rides the
|
|
23
|
+
* request (the level then flows to every member through the members' own
|
|
24
|
+
* create and updateVisibility doors, which run this check again).
|
|
25
|
+
*/
|
|
26
|
+
export declare function requireOperatorMaySetPublic(authorizer: Authorizer, caller: CallerIdentity): Promise<void>;
|
|
19
27
|
//# sourceMappingURL=visibility-gates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visibility-gates.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/visibility-gates.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"visibility-gates.d.ts","sourceRoot":"","sources":["../../../src/pipeline/steps/visibility-gates.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,QAEU,CAAC;AAEtD,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAAC,IAAI,SAAS,WAAW,EACnE,UAAU,EAAE,UAAU,GACrB,YAAY,CAAC,IAAI,CAAC,CAgBpB;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,SAAS,WAAW,EAC3E,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GACrB,YAAY,CAAC,IAAI,CAAC,CA+BpB;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
|
@@ -100,8 +100,13 @@ export function newAuthorizeVisibilityTransitionStep(targetKey, authorizer) {
|
|
|
100
100
|
},
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
|
-
/**
|
|
104
|
-
|
|
103
|
+
/**
|
|
104
|
+
* The single owner of "may this caller set public?" — both doors call it,
|
|
105
|
+
* and so does the plugin push chain, whose requested level rides the
|
|
106
|
+
* request (the level then flows to every member through the members' own
|
|
107
|
+
* create and updateVisibility doors, which run this check again).
|
|
108
|
+
*/
|
|
109
|
+
export async function requireOperatorMaySetPublic(authorizer, caller) {
|
|
105
110
|
let decision;
|
|
106
111
|
try {
|
|
107
112
|
decision = await authorizer.authorize(caller, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visibility-gates.js","sourceRoot":"","sources":["../../../src/pipeline/steps/visibility-gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAEtH,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"visibility-gates.js","sourceRoot":"","sources":["../../../src/pipeline/steps/visibility-gates.ts"],"names":[],"mappings":"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"}
|