@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
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin search extractor — both sides of the searchable contract (the
|
|
3
|
+
* index side pipeline/steps/index-search.ts consumes, the query side the
|
|
4
|
+
* SearchService renders). A plugin's summary is its manifest description;
|
|
5
|
+
* its keywords join the tags so `stigmer list plugin` and the console's
|
|
6
|
+
* search find a plugin by what its author called it.
|
|
7
|
+
*/
|
|
8
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
9
|
+
|
|
10
|
+
import { PluginSchema } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
|
|
11
|
+
import type { Plugin } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
|
|
12
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
13
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
14
|
+
import type { SearchResult } from "@stigmer/protos/ai/stigmer/search/v1/io_pb";
|
|
15
|
+
|
|
16
|
+
import { buildSearchResult } from "../../query/search/extractor.js";
|
|
17
|
+
import type { SearchableExtractor } from "../../query/search/extractor.js";
|
|
18
|
+
import type { SearchIndexEntry } from "../../store/interface.js";
|
|
19
|
+
|
|
20
|
+
export const pluginSearchExtractor: SearchableExtractor = {
|
|
21
|
+
kind: ApiResourceKind.plugin,
|
|
22
|
+
schema: PluginSchema,
|
|
23
|
+
|
|
24
|
+
getSearchSummary(resource: Message): string {
|
|
25
|
+
const plugin = resource as unknown as Plugin;
|
|
26
|
+
return plugin.spec?.description ?? "";
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
toSearchResult(resource: Message, score: number): SearchResult | undefined {
|
|
30
|
+
const plugin = resource as unknown as Plugin;
|
|
31
|
+
return buildSearchResult({
|
|
32
|
+
kind: ApiResourceKind.plugin,
|
|
33
|
+
metadata: plugin.metadata,
|
|
34
|
+
summary: plugin.spec?.description ?? "",
|
|
35
|
+
score,
|
|
36
|
+
createdAt: plugin.status?.audit?.specAudit?.createdAt,
|
|
37
|
+
updatedAt: plugin.status?.audit?.specAudit?.updatedAt,
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
getSearchIndexEntry(resource: Message): SearchIndexEntry | undefined {
|
|
42
|
+
const plugin = resource as unknown as Plugin;
|
|
43
|
+
const metadata = plugin.metadata;
|
|
44
|
+
if (metadata === undefined) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
name: metadata.name,
|
|
49
|
+
description: plugin.spec?.description ?? "",
|
|
50
|
+
// The index carries one tags string; the manifest's keywords are
|
|
51
|
+
// what an author expects a search to match, so they join the tags.
|
|
52
|
+
tags: [...metadata.tags, ...(plugin.spec?.keywords ?? [])].join(" "),
|
|
53
|
+
org: metadata.org,
|
|
54
|
+
visibility: ApiResourceVisibility[metadata.visibility] ?? "",
|
|
55
|
+
createdAt: Number(
|
|
56
|
+
plugin.status?.audit?.specAudit?.createdAt?.seconds ?? 0n,
|
|
57
|
+
),
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
};
|
|
@@ -8,21 +8,18 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* The compressed
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* The archive budgets (compressed ceiling, uncompressed total, ratio, file
|
|
12
|
+
* count) are the platform's, shared with every archive-shaped push since
|
|
13
|
+
* plugins arrived; they live in src/archive/limits.ts and are re-exported
|
|
14
|
+
* here so the skill domain's consumers keep their names. Go:
|
|
15
|
+
* storage.MaxZipSize and its three siblings.
|
|
15
16
|
*/
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export const MAX_COMPRESSION_RATIO = 100;
|
|
23
|
-
|
|
24
|
-
/** Entry-count ceiling. */
|
|
25
|
-
export const MAX_FILES = 10_000;
|
|
17
|
+
export {
|
|
18
|
+
MAX_COMPRESSION_RATIO,
|
|
19
|
+
MAX_FILES,
|
|
20
|
+
MAX_UNCOMPRESSED_SIZE,
|
|
21
|
+
MAX_ZIP_SIZE,
|
|
22
|
+
} from "../../archive/limits.js";
|
|
26
23
|
|
|
27
24
|
/** SKILL.md in-memory extraction cap (memory-exhaustion guard). */
|
|
28
25
|
export const MAX_SKILL_MD_SIZE = 1 * 1024 * 1024;
|
|
@@ -70,8 +70,10 @@ import { newPipeline } from "../../pipeline/pipeline.js";
|
|
|
70
70
|
import type { PipelineStep } from "../../pipeline/pipeline.js";
|
|
71
71
|
import { callerIdentityOf } from "../../pipeline/interceptors/auth.js";
|
|
72
72
|
import { RequestContext } from "../../pipeline/request-context.js";
|
|
73
|
-
import {
|
|
74
|
-
|
|
73
|
+
import {
|
|
74
|
+
authorizeResolvedResource,
|
|
75
|
+
newAuthorizeStep,
|
|
76
|
+
} from "../../pipeline/steps/authorize.js";
|
|
75
77
|
import { newAuthorizeVisibilityTransitionStep } from "../../pipeline/steps/visibility-gates.js";
|
|
76
78
|
import {
|
|
77
79
|
newCleanupIamPoliciesStep,
|
|
@@ -80,7 +82,6 @@ import {
|
|
|
80
82
|
} from "../../pipeline/steps/authorization-tuples.js";
|
|
81
83
|
import { setAuditFieldsForUpdate } from "../../pipeline/steps/defaults.js";
|
|
82
84
|
import {
|
|
83
|
-
RESOURCE_ID_KEY,
|
|
84
85
|
newDeleteResourceStep,
|
|
85
86
|
newExtractResourceIdStep,
|
|
86
87
|
newLoadExistingForDeleteStep,
|
|
@@ -91,11 +92,15 @@ import {
|
|
|
91
92
|
TARGET_RESOURCE_KEY,
|
|
92
93
|
newLoadTargetStep,
|
|
93
94
|
} from "../../pipeline/steps/load-target.js";
|
|
95
|
+
import { newGuardPluginManagedStep } from "../../pipeline/steps/guard-plugin-managed.js";
|
|
96
|
+
import { newGuardReservedLabelsStep } from "../../pipeline/steps/guard-reserved-labels.js";
|
|
94
97
|
import { newValidateProtoStep } from "../../pipeline/steps/validation.js";
|
|
95
98
|
import { newValidateVisibilityUpdateStep } from "../../pipeline/steps/validate-visibility.js";
|
|
99
|
+
import { newDeleteVersionArchivesStep } from "../../pipeline/steps/version-archive.js";
|
|
96
100
|
import type { Store } from "../../store/interface.js";
|
|
97
101
|
import { MAX_ZIP_SIZE, TRANSFER_LANE_NOT_CONFIGURED } from "./constants.js";
|
|
98
102
|
import {
|
|
103
|
+
EXISTING_SKILL_KEY,
|
|
99
104
|
SKILL_KEY,
|
|
100
105
|
newArchiveCurrentSkillStep,
|
|
101
106
|
newBuildInitialSkillStep,
|
|
@@ -189,8 +194,9 @@ function kindOf(ctx: HandlerContext): ApiResourceKind {
|
|
|
189
194
|
}
|
|
190
195
|
|
|
191
196
|
/**
|
|
192
|
-
* Push — the
|
|
193
|
-
*
|
|
197
|
+
* Push — the upsert-by-slug pipeline (push.ts holds the steps and the
|
|
198
|
+
* versioning discipline; GuardReservedLabels is spliced here because the
|
|
199
|
+
* request's labels persist). Returns the built skill from context: the
|
|
194
200
|
* pipeline's message type is the request, so the resource rides SKILL_KEY.
|
|
195
201
|
*
|
|
196
202
|
* `method` is the AUTHORIZING descriptor, passed by the caller because two
|
|
@@ -220,9 +226,30 @@ async function push(
|
|
|
220
226
|
.addStep(newExtractAndHashArtifactStep())
|
|
221
227
|
.addStep(newResolveSlugForPushStep())
|
|
222
228
|
.addStep(newFindExistingBySlugStep(deps.store))
|
|
229
|
+
// A skill has no update RPC: a second push under the same name IS the
|
|
230
|
+
// client's mutation path, so a plugin-managed skill refuses it here,
|
|
231
|
+
// naming the plugin. The controller's own re-materialisation passes by
|
|
232
|
+
// origin.
|
|
233
|
+
.addStep(
|
|
234
|
+
newGuardPluginManagedStep<typeof PushSkillRequestSchema>(deps.store, {
|
|
235
|
+
existingKey: EXISTING_SKILL_KEY,
|
|
236
|
+
}),
|
|
237
|
+
)
|
|
223
238
|
.addStep(newGenerateIdIfNeededStep())
|
|
224
239
|
.addStep(newCheckAndStoreArtifactStep(deps.artifactStorage))
|
|
225
240
|
.addStep(newPopulateSkillFieldsStep())
|
|
241
|
+
// The reserved-namespace guard every write boundary runs, positioned
|
|
242
|
+
// after the populate step because the skill rides SKILL_KEY (not
|
|
243
|
+
// newState) and its stored labels ride EXISTING_SKILL_KEY.
|
|
244
|
+
.addStep(
|
|
245
|
+
newGuardReservedLabelsStep<typeof PushSkillRequestSchema>(
|
|
246
|
+
deps.authorizer,
|
|
247
|
+
{
|
|
248
|
+
stateOf: (stepCtx) => stepCtx.get(SKILL_KEY) as Skill | undefined,
|
|
249
|
+
existingKey: EXISTING_SKILL_KEY,
|
|
250
|
+
},
|
|
251
|
+
),
|
|
252
|
+
)
|
|
226
253
|
.addStep(newArchiveCurrentSkillStep(deps.store, deps.logger))
|
|
227
254
|
.addStep(newStoreSkillStep(deps.store))
|
|
228
255
|
.addStep(
|
|
@@ -415,6 +442,11 @@ async function updateVisibility(
|
|
|
415
442
|
)
|
|
416
443
|
.addStep(newValidateProtoStep())
|
|
417
444
|
.addStep(newLoadSkillForVisibilityUpdateStep(deps.store))
|
|
445
|
+
.addStep(
|
|
446
|
+
newGuardPluginManagedStep(deps.store, {
|
|
447
|
+
existingKey: UPDATE_VISIBILITY_SKILL_KEY,
|
|
448
|
+
}),
|
|
449
|
+
)
|
|
418
450
|
.addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_SKILL_KEY))
|
|
419
451
|
.addStep(newValidateVisibilityUpdateStep())
|
|
420
452
|
.addStep(
|
|
@@ -562,6 +594,7 @@ async function deleteSkill(
|
|
|
562
594
|
.addStep(newValidateProtoStep())
|
|
563
595
|
.addStep(newExtractResourceIdStep())
|
|
564
596
|
.addStep(newLoadExistingForDeleteStep(deps.store, SkillSchema))
|
|
597
|
+
.addStep(newGuardPluginManagedStep(deps.store))
|
|
565
598
|
.addStep(newDeleteSkillArchivesStep(deps.store, deps.logger))
|
|
566
599
|
.addStep(newDeleteResourceStep(deps.store))
|
|
567
600
|
.addStep(
|
|
@@ -583,42 +616,17 @@ async function deleteSkill(
|
|
|
583
616
|
|
|
584
617
|
/**
|
|
585
618
|
* DeleteSkillArchives — best-effort audit cleanup (Go
|
|
586
|
-
* DeleteSkillArchivesStep): failures log and never block the delete.
|
|
619
|
+
* DeleteSkillArchivesStep): failures log and never block the delete. The
|
|
620
|
+
* mechanics are the shared content-addressed step's.
|
|
587
621
|
*/
|
|
588
622
|
function newDeleteSkillArchivesStep(
|
|
589
623
|
store: Store,
|
|
590
624
|
logger: Logger,
|
|
591
625
|
): PipelineStep<typeof SkillCommandController.method.delete.input> {
|
|
592
|
-
return {
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
): Promise<void> {
|
|
597
|
-
const resourceId = ctx.get(RESOURCE_ID_KEY);
|
|
598
|
-
if (typeof resourceId !== "string") {
|
|
599
|
-
throw new Error(
|
|
600
|
-
"resource id not found in context (ExtractResourceIdStep must run first)",
|
|
601
|
-
);
|
|
602
|
-
}
|
|
603
|
-
try {
|
|
604
|
-
const deletedCount = await store.deleteAuditByResourceId(
|
|
605
|
-
ctx.apiResourceKind,
|
|
606
|
-
resourceId,
|
|
607
|
-
);
|
|
608
|
-
if (deletedCount > 0) {
|
|
609
|
-
logger.info("Deleted archive records for skill", {
|
|
610
|
-
skillId: resourceId,
|
|
611
|
-
count: deletedCount,
|
|
612
|
-
});
|
|
613
|
-
}
|
|
614
|
-
} catch (error) {
|
|
615
|
-
logger.warn("failed to delete skill archives (best-effort)", {
|
|
616
|
-
skillId: resourceId,
|
|
617
|
-
error: error instanceof Error ? error.message : String(error),
|
|
618
|
-
});
|
|
619
|
-
}
|
|
620
|
-
},
|
|
621
|
-
};
|
|
626
|
+
return newDeleteVersionArchivesStep(store, logger, {
|
|
627
|
+
stepName: "DeleteSkillArchives",
|
|
628
|
+
noun: "skill",
|
|
629
|
+
});
|
|
622
630
|
}
|
|
623
631
|
|
|
624
632
|
/** Get — the standard LoadTarget-by-id pipeline. */
|
package/src/domain/skill/push.ts
CHANGED
|
@@ -7,10 +7,14 @@
|
|
|
7
7
|
* ValidateProto → ResolveArtifactSource → BuildInitialSkill →
|
|
8
8
|
* ExtractAndHashArtifact → ResolveSlugForPush → FindExistingBySlug →
|
|
9
9
|
* GenerateIDIfNeeded → CheckAndStoreArtifact → PopulateSkillFields →
|
|
10
|
-
* ArchiveCurrentSkill → StoreSkill →
|
|
10
|
+
* GuardReservedLabels → ArchiveCurrentSkill → StoreSkill →
|
|
11
|
+
* IndexSkillSearch
|
|
11
12
|
*
|
|
12
|
-
* Step names and context keys are Go's, verbatim
|
|
13
|
-
*
|
|
13
|
+
* Step names and context keys are Go's, verbatim; GuardReservedLabels
|
|
14
|
+
* joined when PushSkillRequest gained `labels` (a plugin materialises its
|
|
15
|
+
* skills with the plugin label through this chain, so the chain must run
|
|
16
|
+
* the same reserved-namespace guard every other write boundary runs). The
|
|
17
|
+
* load-bearing semantics, all preserved:
|
|
14
18
|
* - exactly one artifact source (inline bytes XOR upload ref — proto
|
|
15
19
|
* CEL); a staged ref is consumed (retired) whatever happens downstream;
|
|
16
20
|
* - content addressing: same bytes = same SHA-256 = one stored copy;
|
|
@@ -52,11 +56,7 @@ import {
|
|
|
52
56
|
defaultVisibilityFor,
|
|
53
57
|
getIdPrefix,
|
|
54
58
|
} from "../../pipeline/apiresource-meta.js";
|
|
55
|
-
import {
|
|
56
|
-
failedPreconditionError,
|
|
57
|
-
internalError,
|
|
58
|
-
invalidArgumentError,
|
|
59
|
-
} from "../../pipeline/errors.js";
|
|
59
|
+
import { internalError, invalidArgumentError } from "../../pipeline/errors.js";
|
|
60
60
|
import type { PipelineStep } from "../../pipeline/pipeline.js";
|
|
61
61
|
import type { RequestContext } from "../../pipeline/request-context.js";
|
|
62
62
|
import {
|
|
@@ -70,7 +70,11 @@ import {
|
|
|
70
70
|
} from "../../pipeline/steps/defaults.js";
|
|
71
71
|
import { findResourceBySlug } from "../../pipeline/steps/helpers.js";
|
|
72
72
|
import { generateSlug } from "../../pipeline/steps/slug.js";
|
|
73
|
-
import {
|
|
73
|
+
import {
|
|
74
|
+
ARTIFACT_BYTES_KEY,
|
|
75
|
+
newResolveArtifactSourceStep as newSharedResolveArtifactSourceStep,
|
|
76
|
+
} from "../../pipeline/steps/resolve-artifact-source.js";
|
|
77
|
+
import { newArchiveCurrentVersionStep } from "../../pipeline/steps/version-archive.js";
|
|
74
78
|
import type { Store } from "../../store/interface.js";
|
|
75
79
|
import { TRANSFER_LANE_NOT_CONFIGURED } from "./constants.js";
|
|
76
80
|
import { skillSearchExtractor } from "./search-extractor.js";
|
|
@@ -83,49 +87,27 @@ type PushDesc = typeof PushSkillRequestSchema;
|
|
|
83
87
|
|
|
84
88
|
// Context keys for the push operation (Go push.go, verbatim).
|
|
85
89
|
export const SKILL_KEY = "skill";
|
|
86
|
-
export
|
|
90
|
+
export { ARTIFACT_BYTES_KEY };
|
|
87
91
|
export const EXTRACT_RESULT_KEY = "extractResult";
|
|
88
92
|
export const ARTIFACT_STORAGE_KEY_KEY = "artifactStorageKey";
|
|
89
93
|
export const EXISTING_SKILL_KEY = "existingSkill";
|
|
90
94
|
export const SHOULD_CREATE_SKILL_KEY = "shouldCreateSkill";
|
|
91
95
|
|
|
92
96
|
/**
|
|
93
|
-
* ResolveArtifactSource —
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* consumed HERE, which retires the single-use reference regardless of how
|
|
97
|
-
* the rest of the pipeline fares. Downstream steps read ARTIFACT_BYTES_KEY
|
|
98
|
-
* and never touch the request's artifact field, so the two sources are
|
|
99
|
-
* indistinguishable past this point.
|
|
97
|
+
* ResolveArtifactSource — the shared step bound to PushSkillRequest's two
|
|
98
|
+
* sources and the skill lane's FailedPrecondition copy (see
|
|
99
|
+
* pipeline/steps/resolve-artifact-source.ts for the semantics).
|
|
100
100
|
*/
|
|
101
101
|
export function newResolveArtifactSourceStep(
|
|
102
102
|
slots: UploadSlots | undefined,
|
|
103
103
|
): PipelineStep<PushDesc> {
|
|
104
|
-
return {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
if (slots === undefined) {
|
|
113
|
-
throw failedPreconditionError(TRANSFER_LANE_NOT_CONFIGURED);
|
|
114
|
-
}
|
|
115
|
-
let data: Uint8Array;
|
|
116
|
-
try {
|
|
117
|
-
data = await slots.consume(req.artifactUploadRef);
|
|
118
|
-
} catch (error) {
|
|
119
|
-
// The reference is client-supplied state, not server fault:
|
|
120
|
-
// unknown, expired, already consumed, or minted-but-never-uploaded
|
|
121
|
-
// all mean the client must re-mint and re-upload.
|
|
122
|
-
throw invalidArgumentError(
|
|
123
|
-
`artifact_upload_ref not usable: ${error instanceof Error ? error.message : String(error)} — request a new upload URL via createArtifactUploadUrl`,
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
ctx.set(ARTIFACT_BYTES_KEY, data);
|
|
127
|
-
},
|
|
128
|
-
};
|
|
104
|
+
return newSharedResolveArtifactSourceStep<PushDesc>(slots, {
|
|
105
|
+
source: (req) => ({
|
|
106
|
+
artifact: req.artifact,
|
|
107
|
+
artifactUploadRef: req.artifactUploadRef,
|
|
108
|
+
}),
|
|
109
|
+
laneNotConfigured: TRANSFER_LANE_NOT_CONFIGURED,
|
|
110
|
+
});
|
|
129
111
|
}
|
|
130
112
|
|
|
131
113
|
/**
|
|
@@ -138,10 +120,16 @@ export function newBuildInitialSkillStep(): PipelineStep<PushDesc> {
|
|
|
138
120
|
name: "BuildInitialSkill",
|
|
139
121
|
execute(ctx: RequestContext<PushDesc>): void {
|
|
140
122
|
const req = ctx.input;
|
|
123
|
+
// The request's labels ARE the skill's labels (replace, never merge):
|
|
124
|
+
// a push is the skill's definition. GuardReservedLabels, spliced after
|
|
125
|
+
// FindExistingBySlug, judges them against the stored skill's.
|
|
141
126
|
const skill = create(SkillSchema, {
|
|
142
127
|
apiVersion: "agentic.stigmer.ai/v1",
|
|
143
128
|
kind: "Skill",
|
|
144
|
-
metadata: create(ApiResourceMetadataSchema, {
|
|
129
|
+
metadata: create(ApiResourceMetadataSchema, {
|
|
130
|
+
org: req.org,
|
|
131
|
+
labels: { ...req.labels },
|
|
132
|
+
}),
|
|
145
133
|
spec: create(SkillSpecSchema, { tag: req.tag }),
|
|
146
134
|
status: create(SkillStatusSchema, { state: SkillState.READY }),
|
|
147
135
|
});
|
|
@@ -306,6 +294,13 @@ export function newPopulateSkillFieldsStep(): PipelineStep<PushDesc> {
|
|
|
306
294
|
skill.spec!.name = extractResult.name;
|
|
307
295
|
skill.spec!.description = extractResult.description;
|
|
308
296
|
|
|
297
|
+
// A push IS the skill's definition: the labels it carries are the
|
|
298
|
+
// labels the skill has (replace, never merge), so a re-push that
|
|
299
|
+
// omits a label removes it — the apply chains' BuildUpdateState
|
|
300
|
+
// posture. The reserved namespace is judged by GuardReservedLabels
|
|
301
|
+
// right after this step, against the stored skill's labels.
|
|
302
|
+
skill.metadata!.labels = { ...req.labels };
|
|
303
|
+
|
|
309
304
|
if (
|
|
310
305
|
skill.metadata!.visibility ===
|
|
311
306
|
ApiResourceVisibility.api_resource_visibility_unspecified
|
|
@@ -360,126 +355,36 @@ export function newPopulateSkillFieldsStep(): PipelineStep<PushDesc> {
|
|
|
360
355
|
* ArchiveCurrentSkill — the versioning heart (#341/#475): repoint or
|
|
361
356
|
* archive, then the single-holder tag assignment, each with its safe
|
|
362
357
|
* degradation (see the module doc). Runs AFTER PopulateSkillFields so the
|
|
363
|
-
* archived snapshot is the fully-populated head.
|
|
358
|
+
* archived snapshot is the fully-populated head. The mechanism is the
|
|
359
|
+
* shared version-archive step; this binding says where a skill keeps its
|
|
360
|
+
* hash (status.version_hash, mirrored in metadata.version.id) and its tag
|
|
361
|
+
* (spec.tag).
|
|
364
362
|
*/
|
|
365
363
|
export function newArchiveCurrentSkillStep(
|
|
366
364
|
store: Store,
|
|
367
365
|
logger: Logger,
|
|
368
366
|
): PipelineStep<PushDesc> {
|
|
369
|
-
return
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
// assignment below still runs. An unexpected lookup failure degrades
|
|
383
|
-
// to archiving anyway — a possible duplicate row beats a failed push
|
|
384
|
-
// (readers resolve duplicates newest-wins).
|
|
385
|
-
let alreadyArchived = false;
|
|
386
|
-
try {
|
|
387
|
-
await store.getAuditByHash(
|
|
388
|
-
ctx.apiResourceKind,
|
|
389
|
-
skillId,
|
|
390
|
-
versionHash,
|
|
391
|
-
SkillSchema,
|
|
392
|
-
);
|
|
393
|
-
alreadyArchived = true;
|
|
394
|
-
} catch (error) {
|
|
395
|
-
if (!(error instanceof AuditNotFoundError)) {
|
|
396
|
-
logger.warn(
|
|
397
|
-
"Could not check for an existing archived skill version — archiving anyway",
|
|
398
|
-
{
|
|
399
|
-
skillId,
|
|
400
|
-
versionHash,
|
|
401
|
-
error: error instanceof Error ? error.message : String(error),
|
|
402
|
-
},
|
|
403
|
-
);
|
|
367
|
+
return newArchiveCurrentVersionStep<typeof SkillSchema, PushDesc>(
|
|
368
|
+
store,
|
|
369
|
+
logger,
|
|
370
|
+
{
|
|
371
|
+
stepName: "ArchiveCurrentSkill",
|
|
372
|
+
resourceKey: SKILL_KEY,
|
|
373
|
+
schema: SkillSchema,
|
|
374
|
+
noun: "skill",
|
|
375
|
+
headHashOf: (skill) => skill.status?.versionHash ?? "",
|
|
376
|
+
clearHeadHash: (skill) => {
|
|
377
|
+
skill.status!.versionHash = "";
|
|
378
|
+
if (skill.metadata?.version !== undefined) {
|
|
379
|
+
skill.metadata.version.id = "";
|
|
404
380
|
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
// single-holder primitive — a later tag move never rewrites this
|
|
411
|
-
// immutable content.
|
|
412
|
-
try {
|
|
413
|
-
await store.saveAudit(
|
|
414
|
-
ctx.apiResourceKind,
|
|
415
|
-
skillId,
|
|
416
|
-
SkillSchema,
|
|
417
|
-
skill,
|
|
418
|
-
versionHash,
|
|
419
|
-
"",
|
|
420
|
-
);
|
|
421
|
-
} catch (error) {
|
|
422
|
-
logger.error(
|
|
423
|
-
"Failed to archive skill version — reverting the version hash to maintain the audit-resolvability invariant",
|
|
424
|
-
{
|
|
425
|
-
skillId,
|
|
426
|
-
versionHash,
|
|
427
|
-
error: error instanceof Error ? error.message : String(error),
|
|
428
|
-
},
|
|
429
|
-
);
|
|
430
|
-
// Revert: the persisted head must never reference an audit entry
|
|
431
|
-
// that does not exist. The push still succeeds, but without
|
|
432
|
-
// version tracking for this apply.
|
|
433
|
-
skill.status!.versionHash = "";
|
|
434
|
-
if (skill.metadata?.version !== undefined) {
|
|
435
|
-
skill.metadata.version.id = "";
|
|
436
|
-
}
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
// Assign the requested tag through setAuditTag — the single-holder
|
|
442
|
-
// primitive — so the head version (freshly archived or repointed-to)
|
|
443
|
-
// becomes the tag's sole holder; any prior holder is cleared.
|
|
444
|
-
if (tag !== "") {
|
|
445
|
-
try {
|
|
446
|
-
await store.setAuditTag(
|
|
447
|
-
ctx.apiResourceKind,
|
|
448
|
-
skillId,
|
|
449
|
-
versionHash,
|
|
450
|
-
tag,
|
|
451
|
-
);
|
|
452
|
-
} catch (error) {
|
|
453
|
-
logger.error(
|
|
454
|
-
"Archived skill version but failed to assign its tag — clearing the live tag to stay consistent with the audit column",
|
|
455
|
-
{
|
|
456
|
-
skillId,
|
|
457
|
-
versionHash,
|
|
458
|
-
tag,
|
|
459
|
-
error: error instanceof Error ? error.message : String(error),
|
|
460
|
-
},
|
|
461
|
-
);
|
|
462
|
-
// The audit head is now untagged; keep the live head consistent
|
|
463
|
-
// so get / getByReference never advertise a tag the store cannot
|
|
464
|
-
// resolve.
|
|
465
|
-
skill.spec!.tag = "";
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
if (alreadyArchived) {
|
|
470
|
-
logger.info(
|
|
471
|
-
"Skill version content already archived — repointed head without a new history row",
|
|
472
|
-
{ skillId, versionHash, tag },
|
|
473
|
-
);
|
|
474
|
-
} else {
|
|
475
|
-
logger.info("Archived skill version to audit history", {
|
|
476
|
-
skillId,
|
|
477
|
-
versionHash,
|
|
478
|
-
tag,
|
|
479
|
-
});
|
|
480
|
-
}
|
|
381
|
+
},
|
|
382
|
+
liveTagOf: (skill) => skill.spec?.tag ?? "",
|
|
383
|
+
clearLiveTag: (skill) => {
|
|
384
|
+
skill.spec!.tag = "";
|
|
385
|
+
},
|
|
481
386
|
},
|
|
482
|
-
|
|
387
|
+
);
|
|
483
388
|
}
|
|
484
389
|
|
|
485
390
|
/** StoreSkill — persists the fully populated head. */
|
|
@@ -55,7 +55,9 @@ export const skillSearchExtractor: SearchableExtractor = {
|
|
|
55
55
|
org: metadata.org,
|
|
56
56
|
// The enum NAME string, exactly Go's visibility.String().
|
|
57
57
|
visibility: ApiResourceVisibility[metadata.visibility] ?? "",
|
|
58
|
-
createdAt: Number(
|
|
58
|
+
createdAt: Number(
|
|
59
|
+
skill.status?.audit?.specAudit?.createdAt?.seconds ?? 0n,
|
|
60
|
+
),
|
|
59
61
|
};
|
|
60
62
|
},
|
|
61
63
|
};
|