@stigmer/server 3.15.3-dev.20260914100347 → 3.15.3-dev.20260916211208
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/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 +157 -32
- 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 +62 -20
- 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/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 +26 -0
- package/dist/domain/identityaccount/actor.d.ts.map +1 -0
- package/dist/domain/identityaccount/actor.js +17 -0
- package/dist/domain/identityaccount/actor.js.map +1 -0
- 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/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 +101 -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/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 +75 -11
- package/dist/extensions/list-read-scope.d.ts.map +1 -1
- package/dist/extensions/list-read-scope.js +40 -7
- 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/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 +21 -0
- package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
- package/dist/pipeline/apiresource-meta.js +28 -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/authorization-tuples.d.ts.map +1 -1
- package/dist/pipeline/steps/authorization-tuples.js +7 -26
- package/dist/pipeline/steps/authorization-tuples.js.map +1 -1
- 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-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/shapes.d.ts +18 -0
- package/dist/pipeline/steps/shapes.d.ts.map +1 -1
- package/dist/pipeline/steps/shapes.js +29 -0
- package/dist/pipeline/steps/shapes.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/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/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__/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/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 +91 -0
- package/src/authorization/store-test-kit.ts +454 -0
- package/src/authorization/tuples.ts +190 -0
- package/src/boot/compose.ts +175 -38
- package/src/boot/inprocess.ts +108 -30
- package/src/domain/agent/controller.ts +11 -0
- 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/actor.ts +44 -0
- package/src/domain/mcpserver/controller.ts +11 -0
- 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 +681 -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 +149 -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/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 +35 -0
- package/src/extensions/__tests__/list-read-scope.test.ts +245 -3
- 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 +116 -16
- 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/index.ts +51 -1
- package/src/pipeline/__tests__/inherited-authorization-parent.test.ts +51 -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 +37 -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 +3 -9
- 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/authorization-tuples.ts +7 -28
- package/src/pipeline/steps/delete.ts +11 -3
- package/src/pipeline/steps/duplicate.ts +8 -2
- 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/shapes.ts +31 -0
- 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/temporal/schedule/__tests__/run-starter.test.ts +86 -24
- package/src/temporal/schedule/run-starter.ts +31 -8
- 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,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The relation-rewrite vocabulary the model declarations are written in —
|
|
3
|
+
* the four forms an OpenFGA `define` line takes in the cloud's 27 `.fga`
|
|
4
|
+
* files, and nothing more:
|
|
5
|
+
*
|
|
6
|
+
* define organization: [organization] → direct(objectOf("organization"))
|
|
7
|
+
* define owner: [identity_account] or admin from organization
|
|
8
|
+
* → union(direct(objectOf("identity_account")), from("admin", "organization"))
|
|
9
|
+
* define viewer: [identity_account, identity_account:* with allow_public,
|
|
10
|
+
* organization#member, organization#viewer] or owner or platform_viewer
|
|
11
|
+
* → union(direct(objectOf(...), publicWith(...), usersetOf(...), usersetOf(...)),
|
|
12
|
+
* computed("owner"), computed("platform_viewer"))
|
|
13
|
+
* define can_view: viewer → computed("viewer")
|
|
14
|
+
*
|
|
15
|
+
* A declaration file (model/<kind>.ts) is a TRANSCRIPT of its `.fga`
|
|
16
|
+
* file: the same relations, in the file's order, each line rewritten in
|
|
17
|
+
* these builders so a reader with the model open sees the same text, and
|
|
18
|
+
* so a structural compare against the file (the cloud's drift test at
|
|
19
|
+
* the re-pin) needs no translation table. Intersection and exclusion
|
|
20
|
+
* (`and`, `but not`) do not appear in the model and have no node here;
|
|
21
|
+
* the day they do, the transcript cannot be written and the gap is a
|
|
22
|
+
* design act, not a silent approximation.
|
|
23
|
+
*
|
|
24
|
+
* The direct form carries its type restrictions (`[identity_account,
|
|
25
|
+
* organization#viewer]`) because the evaluator ENFORCES them: a tuple
|
|
26
|
+
* whose subject the line does not list is ignored, which is what OpenFGA
|
|
27
|
+
* does at write time. That is the fail-closed property of this design —
|
|
28
|
+
* a derivation that drifts from the model (a userset the line dropped)
|
|
29
|
+
* makes open source deny, never allow.
|
|
30
|
+
*
|
|
31
|
+
* `derived` names the relations `kind_meta.authorization` cannot derive
|
|
32
|
+
* from the row alone: `default_of` on an instance (the
|
|
33
|
+
* blueprint's `status.default_instance_id` must name this row — one
|
|
34
|
+
* blueprint read through the loader; default-of.ts, shared by the two
|
|
35
|
+
* instance kinds) and `execution_viewer` on a workflow instance
|
|
36
|
+
* (`spec.execution_visibility`; workflow_instance.ts). A declaration that
|
|
37
|
+
* has such a relation states the rule beside the transcript; the tuple
|
|
38
|
+
* source dispatches to it by relation.
|
|
39
|
+
*/
|
|
40
|
+
import type { DescMessage, Message } from "@bufbuild/protobuf";
|
|
41
|
+
|
|
42
|
+
import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
43
|
+
|
|
44
|
+
import { kindEnumName } from "../../pipeline/apiresource-meta.js";
|
|
45
|
+
import type { ObjectRef, RowLoader, Tuple } from "../tuples.js";
|
|
46
|
+
|
|
47
|
+
/** One entry of a direct line's type restriction list. */
|
|
48
|
+
export type SubjectType =
|
|
49
|
+
/** `[organization]`, `[identity_account]` — objects of the type. */
|
|
50
|
+
| { readonly form: "object"; readonly type: string }
|
|
51
|
+
/** `[organization#viewer]` — everyone holding `relation` on an object of the type. */
|
|
52
|
+
| {
|
|
53
|
+
readonly form: "userset";
|
|
54
|
+
readonly type: string;
|
|
55
|
+
readonly relation: string;
|
|
56
|
+
}
|
|
57
|
+
/** `[identity_account:* with allow_public]` — every object of the type, under the condition. */
|
|
58
|
+
| {
|
|
59
|
+
readonly form: "wildcard";
|
|
60
|
+
readonly type: string;
|
|
61
|
+
readonly condition: string;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export type Rewrite =
|
|
65
|
+
/** `[…]` — the tuples stored on the relation itself, restricted to the listed subject types. */
|
|
66
|
+
| { readonly node: "this"; readonly subjects: ReadonlyArray<SubjectType> }
|
|
67
|
+
/** `or owner` — another relation of the same object. */
|
|
68
|
+
| { readonly node: "computed"; readonly relation: string }
|
|
69
|
+
/** `admin from organization` — `relation` on every object the `tupleset` relation links to. */
|
|
70
|
+
| {
|
|
71
|
+
readonly node: "from";
|
|
72
|
+
readonly relation: string;
|
|
73
|
+
readonly tupleset: string;
|
|
74
|
+
}
|
|
75
|
+
/** `a or b or c` — the first true member wins, in the line's order. */
|
|
76
|
+
| { readonly node: "union"; readonly members: ReadonlyArray<Rewrite> };
|
|
77
|
+
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Builders — named so a transcript reads like its `.fga` line.
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
|
|
82
|
+
export function objectOf(type: string): SubjectType {
|
|
83
|
+
return { form: "object", type };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function usersetOf(type: string, relation: string): SubjectType {
|
|
87
|
+
return { form: "userset", type, relation };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function publicWith(type: string, condition: string): SubjectType {
|
|
91
|
+
return { form: "wildcard", type, condition };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function direct(...subjects: ReadonlyArray<SubjectType>): Rewrite {
|
|
95
|
+
return { node: "this", subjects };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function computed(relation: string): Rewrite {
|
|
99
|
+
return { node: "computed", relation };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function from(relation: string, tupleset: string): Rewrite {
|
|
103
|
+
return { node: "from", relation, tupleset };
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function union(...members: ReadonlyArray<Rewrite>): Rewrite {
|
|
107
|
+
return { node: "union", members };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// A kind's declaration.
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* A relation the row does not carry as a `kind_meta` fact: the rule that
|
|
116
|
+
* derives its tuples for `object` from its decoded row, reading related
|
|
117
|
+
* rows through the loader. The source hands the object it already
|
|
118
|
+
* resolved so a rule never re-derives its own reference from the row.
|
|
119
|
+
* Pure over its inputs; faults propagate.
|
|
120
|
+
*/
|
|
121
|
+
export type DerivedRelation = (
|
|
122
|
+
object: ObjectRef,
|
|
123
|
+
row: Message,
|
|
124
|
+
loader: RowLoader,
|
|
125
|
+
) => Promise<ReadonlyArray<Tuple>>;
|
|
126
|
+
|
|
127
|
+
export interface KindDeclaration {
|
|
128
|
+
readonly kind: ApiResourceKind;
|
|
129
|
+
/** The FGA type name — the kind's enum member name, as the cloud renders objects. */
|
|
130
|
+
readonly type: string;
|
|
131
|
+
/** The kind's message schema: what a stored row decodes with, and where its audit lives. */
|
|
132
|
+
readonly schema: DescMessage;
|
|
133
|
+
/** The `.fga` file this transcribes, relative to the cloud's `fga/` folder. */
|
|
134
|
+
readonly source: string;
|
|
135
|
+
/** Every relation the file defines, in the file's order. */
|
|
136
|
+
readonly relations: ReadonlyMap<string, Rewrite>;
|
|
137
|
+
/** The relations `kind_meta` cannot derive (the module header). */
|
|
138
|
+
readonly derived: ReadonlyMap<string, DerivedRelation>;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface KindDeclarationInput {
|
|
142
|
+
readonly kind: ApiResourceKind;
|
|
143
|
+
readonly schema: DescMessage;
|
|
144
|
+
readonly source: string;
|
|
145
|
+
readonly relations: ReadonlyArray<readonly [name: string, rewrite: Rewrite]>;
|
|
146
|
+
readonly derived?: ReadonlyArray<
|
|
147
|
+
readonly [name: string, rule: DerivedRelation]
|
|
148
|
+
>;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Builds a declaration and refuses a transcript that cannot be right at
|
|
153
|
+
* module load: a relation declared twice, a `computed` naming a relation
|
|
154
|
+
* the kind does not define, a `from` whose tupleset the kind does not
|
|
155
|
+
* define (its `relation` is the PARENT's and is resolved at evaluation),
|
|
156
|
+
* a derived rule for a relation the transcript does not declare.
|
|
157
|
+
*/
|
|
158
|
+
export function declareKind(input: KindDeclarationInput): KindDeclaration {
|
|
159
|
+
const type = kindEnumName(input.kind);
|
|
160
|
+
const relations = new Map<string, Rewrite>();
|
|
161
|
+
for (const [name, rewrite] of input.relations) {
|
|
162
|
+
if (relations.has(name)) {
|
|
163
|
+
throw new Error(`${input.source}: relation '${name}' is declared twice`);
|
|
164
|
+
}
|
|
165
|
+
relations.set(name, rewrite);
|
|
166
|
+
}
|
|
167
|
+
for (const [name, rewrite] of relations) {
|
|
168
|
+
for (const reference of localReferences(rewrite)) {
|
|
169
|
+
if (!relations.has(reference.relation)) {
|
|
170
|
+
throw new Error(
|
|
171
|
+
`${input.source}: '${name}' names ${reference.role} '${reference.relation}', which ${type} does not declare`,
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const derived = new Map<string, DerivedRelation>();
|
|
177
|
+
for (const [name, rule] of input.derived ?? []) {
|
|
178
|
+
if (!relations.has(name)) {
|
|
179
|
+
throw new Error(
|
|
180
|
+
`${input.source}: a derived rule for '${name}', which ${type} does not declare`,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
derived.set(name, rule);
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
kind: input.kind,
|
|
187
|
+
type,
|
|
188
|
+
schema: input.schema,
|
|
189
|
+
source: input.source,
|
|
190
|
+
relations,
|
|
191
|
+
derived,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** The relations of the SAME kind a rewrite names: computed targets and tuplesets. */
|
|
196
|
+
function localReferences(
|
|
197
|
+
rewrite: Rewrite,
|
|
198
|
+
): ReadonlyArray<{ readonly role: string; readonly relation: string }> {
|
|
199
|
+
switch (rewrite.node) {
|
|
200
|
+
case "this":
|
|
201
|
+
return [];
|
|
202
|
+
case "computed":
|
|
203
|
+
return [{ role: "relation", relation: rewrite.relation }];
|
|
204
|
+
case "from":
|
|
205
|
+
return [{ role: "tupleset", relation: rewrite.tupleset }];
|
|
206
|
+
case "union":
|
|
207
|
+
return rewrite.members.flatMap(localReferences);
|
|
208
|
+
default: {
|
|
209
|
+
const exhaustive: never = rewrite;
|
|
210
|
+
throw new Error(`unknown rewrite node: ${JSON.stringify(exhaustive)}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/schedule.fga — a scheduled run's
|
|
3
|
+
* definition, admin-owned like a blueprint and viewable by its owners and
|
|
4
|
+
* explicit grantees. The sessions its fires create name it back through
|
|
5
|
+
* `session#schedule`, a link the cloud writes and this edition does not
|
|
6
|
+
* (session.ts); the schedule's own relations are unaffected.
|
|
7
|
+
*/
|
|
8
|
+
import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
|
|
9
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
computed,
|
|
13
|
+
declareKind,
|
|
14
|
+
direct,
|
|
15
|
+
from,
|
|
16
|
+
objectOf,
|
|
17
|
+
union,
|
|
18
|
+
} from "./rewrite.js";
|
|
19
|
+
|
|
20
|
+
export const scheduleDeclaration = declareKind({
|
|
21
|
+
kind: ApiResourceKind.schedule,
|
|
22
|
+
schema: ScheduleSchema,
|
|
23
|
+
source: "fga/model/agentic/schedule.fga",
|
|
24
|
+
relations: [
|
|
25
|
+
["organization", direct(objectOf("organization"))],
|
|
26
|
+
[
|
|
27
|
+
"owner",
|
|
28
|
+
union(
|
|
29
|
+
direct(objectOf("identity_account")),
|
|
30
|
+
from("admin", "organization"),
|
|
31
|
+
),
|
|
32
|
+
],
|
|
33
|
+
["viewer", union(direct(objectOf("identity_account")), computed("owner"))],
|
|
34
|
+
["can_view", computed("viewer")],
|
|
35
|
+
["can_edit", computed("owner")],
|
|
36
|
+
["can_delete", computed("owner")],
|
|
37
|
+
["can_grant_access", computed("owner")],
|
|
38
|
+
["can_view_access", computed("viewer")],
|
|
39
|
+
],
|
|
40
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/session.fga — a personal resource: the
|
|
3
|
+
* owner and explicit grantees, and NO admin arm anywhere ("private
|
|
4
|
+
* conversations that admins have no business accessing", the file's own
|
|
5
|
+
* words). Three parent links beside the organization: `agent_instance`,
|
|
6
|
+
* `channel` and `schedule`. None is a `kind_meta` fact — the cloud's
|
|
7
|
+
* channel and schedule lanes write them — so on this edition the
|
|
8
|
+
* derivation produces no such tuple and `viewer from channel` / `viewer
|
|
9
|
+
* from schedule` resolve to nobody; the lines stand in the transcript
|
|
10
|
+
* because they are the model's, and a scheduled run reaches its creator
|
|
11
|
+
* through the fire caller's stamp on the session instead.
|
|
12
|
+
*/
|
|
13
|
+
import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
14
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
computed,
|
|
18
|
+
declareKind,
|
|
19
|
+
direct,
|
|
20
|
+
from,
|
|
21
|
+
objectOf,
|
|
22
|
+
union,
|
|
23
|
+
} from "./rewrite.js";
|
|
24
|
+
|
|
25
|
+
export const sessionDeclaration = declareKind({
|
|
26
|
+
kind: ApiResourceKind.session,
|
|
27
|
+
schema: SessionSchema,
|
|
28
|
+
source: "fga/model/agentic/session.fga",
|
|
29
|
+
relations: [
|
|
30
|
+
["organization", direct(objectOf("organization"))],
|
|
31
|
+
["agent_instance", direct(objectOf("agent_instance"))],
|
|
32
|
+
["channel", direct(objectOf("agent_channel"))],
|
|
33
|
+
["schedule", direct(objectOf("schedule"))],
|
|
34
|
+
["owner", direct(objectOf("identity_account"))],
|
|
35
|
+
["viewer", union(direct(objectOf("identity_account")), computed("owner"))],
|
|
36
|
+
[
|
|
37
|
+
"can_view",
|
|
38
|
+
union(
|
|
39
|
+
computed("viewer"),
|
|
40
|
+
from("viewer", "channel"),
|
|
41
|
+
from("viewer", "schedule"),
|
|
42
|
+
),
|
|
43
|
+
],
|
|
44
|
+
["can_edit", computed("owner")],
|
|
45
|
+
["can_delete", computed("owner")],
|
|
46
|
+
["can_create_execution_in", computed("viewer")],
|
|
47
|
+
["can_grant_access", computed("owner")],
|
|
48
|
+
["can_view_access", computed("viewer")],
|
|
49
|
+
],
|
|
50
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/skill.fga — a blueprint whose verbs are
|
|
3
|
+
* `can_use` and `can_clone` rather than `can_execute`. Only `can_view`,
|
|
4
|
+
* `can_edit`, `can_delete`, `can_grant_access` and `can_view_access` are
|
|
5
|
+
* in the wire's IamPermission vocabulary; the others are the model's and
|
|
6
|
+
* are carried so the transcript is the file.
|
|
7
|
+
*/
|
|
8
|
+
import { SkillSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
|
|
9
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
computed,
|
|
13
|
+
declareKind,
|
|
14
|
+
direct,
|
|
15
|
+
from,
|
|
16
|
+
objectOf,
|
|
17
|
+
publicWith,
|
|
18
|
+
union,
|
|
19
|
+
usersetOf,
|
|
20
|
+
} from "./rewrite.js";
|
|
21
|
+
|
|
22
|
+
export const skillDeclaration = declareKind({
|
|
23
|
+
kind: ApiResourceKind.skill,
|
|
24
|
+
schema: SkillSchema,
|
|
25
|
+
source: "fga/model/agentic/skill.fga",
|
|
26
|
+
relations: [
|
|
27
|
+
["organization", direct(objectOf("organization"))],
|
|
28
|
+
[
|
|
29
|
+
"owner",
|
|
30
|
+
union(
|
|
31
|
+
direct(objectOf("identity_account")),
|
|
32
|
+
from("admin", "organization"),
|
|
33
|
+
),
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
"platform_viewer",
|
|
37
|
+
direct(usersetOf("identity_provider", "platform_user")),
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
"viewer",
|
|
41
|
+
union(
|
|
42
|
+
direct(
|
|
43
|
+
objectOf("identity_account"),
|
|
44
|
+
publicWith("identity_account", "allow_public"),
|
|
45
|
+
usersetOf("organization", "member"),
|
|
46
|
+
usersetOf("organization", "viewer"),
|
|
47
|
+
),
|
|
48
|
+
computed("owner"),
|
|
49
|
+
computed("platform_viewer"),
|
|
50
|
+
),
|
|
51
|
+
],
|
|
52
|
+
["can_view", computed("viewer")],
|
|
53
|
+
["can_edit", computed("owner")],
|
|
54
|
+
["can_delete", computed("owner")],
|
|
55
|
+
["can_use", computed("viewer")],
|
|
56
|
+
["can_clone", computed("viewer")],
|
|
57
|
+
["can_grant_access", computed("owner")],
|
|
58
|
+
["can_view_access", computed("viewer")],
|
|
59
|
+
],
|
|
60
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/workflow.fga — the agent's shape
|
|
3
|
+
* without `can_create_instance` (a workflow instance is created through
|
|
4
|
+
* the workflow-instance lane, gated by the organization). Kept as its own
|
|
5
|
+
* transcript, not a shared "blueprint" helper, so the file-by-file drift
|
|
6
|
+
* compare sees exactly this file's lines.
|
|
7
|
+
*/
|
|
8
|
+
import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
|
|
9
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
computed,
|
|
13
|
+
declareKind,
|
|
14
|
+
direct,
|
|
15
|
+
from,
|
|
16
|
+
objectOf,
|
|
17
|
+
publicWith,
|
|
18
|
+
union,
|
|
19
|
+
usersetOf,
|
|
20
|
+
} from "./rewrite.js";
|
|
21
|
+
|
|
22
|
+
export const workflowDeclaration = declareKind({
|
|
23
|
+
kind: ApiResourceKind.workflow,
|
|
24
|
+
schema: WorkflowSchema,
|
|
25
|
+
source: "fga/model/agentic/workflow.fga",
|
|
26
|
+
relations: [
|
|
27
|
+
["organization", direct(objectOf("organization"))],
|
|
28
|
+
[
|
|
29
|
+
"owner",
|
|
30
|
+
union(
|
|
31
|
+
direct(objectOf("identity_account")),
|
|
32
|
+
from("admin", "organization"),
|
|
33
|
+
),
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
"platform_viewer",
|
|
37
|
+
direct(usersetOf("identity_provider", "platform_user")),
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
"viewer",
|
|
41
|
+
union(
|
|
42
|
+
direct(
|
|
43
|
+
objectOf("identity_account"),
|
|
44
|
+
publicWith("identity_account", "allow_public"),
|
|
45
|
+
usersetOf("organization", "member"),
|
|
46
|
+
usersetOf("organization", "viewer"),
|
|
47
|
+
),
|
|
48
|
+
computed("owner"),
|
|
49
|
+
computed("platform_viewer"),
|
|
50
|
+
),
|
|
51
|
+
],
|
|
52
|
+
["can_view", computed("viewer")],
|
|
53
|
+
["can_edit", computed("owner")],
|
|
54
|
+
["can_delete", computed("owner")],
|
|
55
|
+
["can_execute", computed("viewer")],
|
|
56
|
+
["can_clone", computed("viewer")],
|
|
57
|
+
["can_grant_access", computed("owner")],
|
|
58
|
+
["can_view_access", computed("viewer")],
|
|
59
|
+
],
|
|
60
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/workflow_execution.fga — a run with an
|
|
3
|
+
* owner of its own (the person who triggered it; `kind_meta` attribution
|
|
4
|
+
* DIRECT, unlike agent_execution's inherited owner) and two ways in for
|
|
5
|
+
* others: an explicit per-run grant, or the instance's opt-in run
|
|
6
|
+
* audience through `execution_viewer from workflow_instance`, standing on
|
|
7
|
+
* the `workflow_instance` link the derivation writes from
|
|
8
|
+
* `spec.workflow_instance_id`. No `can_delete`: run history outlives its
|
|
9
|
+
* instance by design.
|
|
10
|
+
*/
|
|
11
|
+
import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
12
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
computed,
|
|
16
|
+
declareKind,
|
|
17
|
+
direct,
|
|
18
|
+
from,
|
|
19
|
+
objectOf,
|
|
20
|
+
union,
|
|
21
|
+
} from "./rewrite.js";
|
|
22
|
+
|
|
23
|
+
export const workflowExecutionDeclaration = declareKind({
|
|
24
|
+
kind: ApiResourceKind.workflow_execution,
|
|
25
|
+
schema: WorkflowExecutionSchema,
|
|
26
|
+
source: "fga/model/agentic/workflow_execution.fga",
|
|
27
|
+
relations: [
|
|
28
|
+
["organization", direct(objectOf("organization"))],
|
|
29
|
+
["workflow_instance", direct(objectOf("workflow_instance"))],
|
|
30
|
+
["owner", direct(objectOf("identity_account"))],
|
|
31
|
+
[
|
|
32
|
+
"viewer",
|
|
33
|
+
union(
|
|
34
|
+
direct(objectOf("identity_account")),
|
|
35
|
+
computed("owner"),
|
|
36
|
+
from("execution_viewer", "workflow_instance"),
|
|
37
|
+
),
|
|
38
|
+
],
|
|
39
|
+
["can_view", computed("viewer")],
|
|
40
|
+
["can_edit", computed("owner")],
|
|
41
|
+
["can_grant_access", computed("owner")],
|
|
42
|
+
["can_view_access", computed("viewer")],
|
|
43
|
+
],
|
|
44
|
+
});
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript of fga/model/agentic/workflow_instance.fga — the agent
|
|
3
|
+
* instance's shape plus one relation of its own: `execution_viewer`, the
|
|
4
|
+
* opt-in audience for the instance's RUN history, kept apart from
|
|
5
|
+
* `viewer` so making an instance org-runnable never exposes other
|
|
6
|
+
* people's run inputs and outputs. Consumed by workflow_execution through
|
|
7
|
+
* `execution_viewer from workflow_instance`.
|
|
8
|
+
*
|
|
9
|
+
* `execution_viewer` is derived here from `spec.execution_visibility`
|
|
10
|
+
* (the second rule `kind_meta` cannot express): `organization` derives
|
|
11
|
+
* `#execution_viewer@organization:<org>#viewer` — the organization's full
|
|
12
|
+
* read audience, the shape the file's comment names and the cloud's own
|
|
13
|
+
* store test writes, with `#member` the legacy shape the line still
|
|
14
|
+
* admits — and `private` or unset derives nothing, so each run stays its
|
|
15
|
+
* triggerer's. The cloud has no writer for this tuple today; this
|
|
16
|
+
* edition enforces the field as the contract states it.
|
|
17
|
+
*/
|
|
18
|
+
import { isMessage } from "@bufbuild/protobuf";
|
|
19
|
+
|
|
20
|
+
import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
|
|
21
|
+
import { WorkflowInstanceSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
|
|
22
|
+
import { WorkflowExecutionVisibility } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/spec_pb";
|
|
23
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
24
|
+
|
|
25
|
+
import { defaultOfBlueprint } from "./default-of.js";
|
|
26
|
+
import type { DerivedRelation } from "./rewrite.js";
|
|
27
|
+
import {
|
|
28
|
+
computed,
|
|
29
|
+
declareKind,
|
|
30
|
+
direct,
|
|
31
|
+
from,
|
|
32
|
+
objectOf,
|
|
33
|
+
publicWith,
|
|
34
|
+
union,
|
|
35
|
+
usersetOf,
|
|
36
|
+
} from "./rewrite.js";
|
|
37
|
+
|
|
38
|
+
const executionViewer: DerivedRelation = (object, row) => {
|
|
39
|
+
if (!isMessage(row, WorkflowInstanceSchema)) {
|
|
40
|
+
return Promise.resolve([]);
|
|
41
|
+
}
|
|
42
|
+
const level =
|
|
43
|
+
row.spec?.executionVisibility ?? WorkflowExecutionVisibility.unspecified;
|
|
44
|
+
switch (level) {
|
|
45
|
+
case WorkflowExecutionVisibility.organization: {
|
|
46
|
+
const org = row.metadata?.org ?? "";
|
|
47
|
+
return Promise.resolve(
|
|
48
|
+
org === ""
|
|
49
|
+
? []
|
|
50
|
+
: [
|
|
51
|
+
{
|
|
52
|
+
object,
|
|
53
|
+
relation: "execution_viewer",
|
|
54
|
+
subject: {
|
|
55
|
+
form: "userset",
|
|
56
|
+
object: { type: "organization", id: org },
|
|
57
|
+
relation: "viewer",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
case WorkflowExecutionVisibility.private:
|
|
64
|
+
case WorkflowExecutionVisibility.unspecified:
|
|
65
|
+
return Promise.resolve([]);
|
|
66
|
+
default: {
|
|
67
|
+
const exhaustive: never = level;
|
|
68
|
+
throw new Error(`unknown execution visibility: ${String(exhaustive)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const workflowInstanceDeclaration = declareKind({
|
|
74
|
+
kind: ApiResourceKind.workflow_instance,
|
|
75
|
+
schema: WorkflowInstanceSchema,
|
|
76
|
+
source: "fga/model/agentic/workflow_instance.fga",
|
|
77
|
+
relations: [
|
|
78
|
+
["organization", direct(objectOf("organization"))],
|
|
79
|
+
["workflow", direct(objectOf("workflow"))],
|
|
80
|
+
["default_of", direct(objectOf("workflow"))],
|
|
81
|
+
["owner", direct(objectOf("identity_account"))],
|
|
82
|
+
[
|
|
83
|
+
"viewer",
|
|
84
|
+
union(
|
|
85
|
+
direct(
|
|
86
|
+
objectOf("identity_account"),
|
|
87
|
+
publicWith("identity_account", "allow_public"),
|
|
88
|
+
usersetOf("organization", "member"),
|
|
89
|
+
usersetOf("organization", "viewer"),
|
|
90
|
+
),
|
|
91
|
+
computed("owner"),
|
|
92
|
+
from("viewer", "default_of"),
|
|
93
|
+
),
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"execution_viewer",
|
|
97
|
+
direct(
|
|
98
|
+
objectOf("identity_account"),
|
|
99
|
+
usersetOf("organization", "member"),
|
|
100
|
+
usersetOf("organization", "viewer"),
|
|
101
|
+
),
|
|
102
|
+
],
|
|
103
|
+
["can_view", computed("viewer")],
|
|
104
|
+
["can_execute", computed("can_view")],
|
|
105
|
+
["can_edit", computed("owner")],
|
|
106
|
+
["can_delete", computed("owner")],
|
|
107
|
+
["can_grant_access", computed("owner")],
|
|
108
|
+
["can_view_access", computed("viewer")],
|
|
109
|
+
],
|
|
110
|
+
derived: [
|
|
111
|
+
[
|
|
112
|
+
"default_of",
|
|
113
|
+
defaultOfBlueprint({
|
|
114
|
+
kind: ApiResourceKind.workflow,
|
|
115
|
+
schema: WorkflowSchema,
|
|
116
|
+
defaultInstanceIdOf: (workflow) =>
|
|
117
|
+
workflow.status?.defaultInstanceId ?? "",
|
|
118
|
+
}),
|
|
119
|
+
],
|
|
120
|
+
["execution_viewer", executionViewer],
|
|
121
|
+
],
|
|
122
|
+
});
|