@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,125 @@
|
|
|
1
|
+
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/channel-app-owner.fga.yaml
|
|
2
|
+
# at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
|
|
3
|
+
# The body below is byte-identical to the source; the cloud re-runs the LIVE
|
|
4
|
+
# file against this evaluator at the re-pin, so a stale copy is caught there.
|
|
5
|
+
# Channel apps are owner-scoped provider credentials (T04 item 2, the
|
|
6
|
+
# oauth_app RESTRICTED posture with T08 admin inheritance): the creator
|
|
7
|
+
# owns the app; view/edit/delete require ownership or an explicit grant.
|
|
8
|
+
# Plain org members get NO implicit access — the resource carries the
|
|
9
|
+
# org's webhook signing secret and OAuth client secret.
|
|
10
|
+
#
|
|
11
|
+
# Org ADMINS inherit owner (T08): a credential holder needs an operator
|
|
12
|
+
# of last resort more than any blueprint does — an ex-employee owner must
|
|
13
|
+
# never strand secret rotation. The narrowness these tests pin: owner +
|
|
14
|
+
# admins have control, granted viewers read, plain members have nothing,
|
|
15
|
+
# and only admins can create.
|
|
16
|
+
#
|
|
17
|
+
# Run: fga model test --tests channel-app-owner.fga.yaml
|
|
18
|
+
|
|
19
|
+
name: channel-app-owner
|
|
20
|
+
model_file: ../model/fga.mod
|
|
21
|
+
|
|
22
|
+
tuples:
|
|
23
|
+
# Org membership for both accounts — proving membership grants nothing.
|
|
24
|
+
# alice created the app while she was an admin and was later demoted to
|
|
25
|
+
# member (creation is admin-gated; the owner tuple survives demotion) —
|
|
26
|
+
# this keeps the direct-owner path distinct from admin inheritance.
|
|
27
|
+
- user: identity_account:alice
|
|
28
|
+
relation: member
|
|
29
|
+
object: organization:acme
|
|
30
|
+
- user: identity_account:mallory
|
|
31
|
+
relation: member
|
|
32
|
+
object: organization:acme
|
|
33
|
+
|
|
34
|
+
# Org admin — proving T08 inheritance reaches channel apps.
|
|
35
|
+
- user: identity_account:ana
|
|
36
|
+
relation: admin
|
|
37
|
+
object: organization:acme
|
|
38
|
+
|
|
39
|
+
# The channel app, created by alice (the config-driven create tuples).
|
|
40
|
+
- user: organization:acme
|
|
41
|
+
relation: organization
|
|
42
|
+
object: channel_app:acme-support-bot
|
|
43
|
+
- user: identity_account:alice
|
|
44
|
+
relation: owner
|
|
45
|
+
object: channel_app:acme-support-bot
|
|
46
|
+
|
|
47
|
+
# An explicit viewer grant to carol (not even an org member).
|
|
48
|
+
- user: identity_account:carol
|
|
49
|
+
relation: viewer
|
|
50
|
+
object: channel_app:acme-support-bot
|
|
51
|
+
|
|
52
|
+
tests:
|
|
53
|
+
- name: owner has full control including grant management
|
|
54
|
+
check:
|
|
55
|
+
- user: identity_account:alice
|
|
56
|
+
object: channel_app:acme-support-bot
|
|
57
|
+
assertions:
|
|
58
|
+
can_view: true
|
|
59
|
+
can_edit: true
|
|
60
|
+
can_delete: true
|
|
61
|
+
can_grant_access: true
|
|
62
|
+
can_view_access: true
|
|
63
|
+
|
|
64
|
+
- name: explicitly granted viewer can read but not mutate
|
|
65
|
+
check:
|
|
66
|
+
- user: identity_account:carol
|
|
67
|
+
object: channel_app:acme-support-bot
|
|
68
|
+
assertions:
|
|
69
|
+
can_view: true
|
|
70
|
+
can_edit: false
|
|
71
|
+
can_delete: false
|
|
72
|
+
can_grant_access: false
|
|
73
|
+
can_view_access: true
|
|
74
|
+
|
|
75
|
+
- name: fellow org member has no implicit access
|
|
76
|
+
check:
|
|
77
|
+
- user: identity_account:mallory
|
|
78
|
+
object: channel_app:acme-support-bot
|
|
79
|
+
assertions:
|
|
80
|
+
can_view: false
|
|
81
|
+
can_edit: false
|
|
82
|
+
can_delete: false
|
|
83
|
+
can_grant_access: false
|
|
84
|
+
can_view_access: false
|
|
85
|
+
|
|
86
|
+
- name: org admin inherits channel app management (T08)
|
|
87
|
+
check:
|
|
88
|
+
- user: identity_account:ana
|
|
89
|
+
object: channel_app:acme-support-bot
|
|
90
|
+
assertions:
|
|
91
|
+
can_view: true
|
|
92
|
+
can_edit: true
|
|
93
|
+
can_delete: true
|
|
94
|
+
can_grant_access: true
|
|
95
|
+
|
|
96
|
+
- name: creation is admin-gated on the organization
|
|
97
|
+
check:
|
|
98
|
+
- user: identity_account:ana
|
|
99
|
+
object: organization:acme
|
|
100
|
+
assertions:
|
|
101
|
+
can_create_channel_app: true
|
|
102
|
+
- user: identity_account:mallory
|
|
103
|
+
object: organization:acme
|
|
104
|
+
assertions:
|
|
105
|
+
can_create_channel_app: false
|
|
106
|
+
|
|
107
|
+
- name: listing channel apps reflects ownership and grants, not membership
|
|
108
|
+
list_objects:
|
|
109
|
+
- user: identity_account:alice
|
|
110
|
+
type: channel_app
|
|
111
|
+
assertions:
|
|
112
|
+
can_view:
|
|
113
|
+
- channel_app:acme-support-bot
|
|
114
|
+
can_edit:
|
|
115
|
+
- channel_app:acme-support-bot
|
|
116
|
+
- user: identity_account:carol
|
|
117
|
+
type: channel_app
|
|
118
|
+
assertions:
|
|
119
|
+
can_view:
|
|
120
|
+
- channel_app:acme-support-bot
|
|
121
|
+
can_edit: []
|
|
122
|
+
- user: identity_account:mallory
|
|
123
|
+
type: channel_app
|
|
124
|
+
assertions:
|
|
125
|
+
can_view: []
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/channel-participation.fga.yaml
|
|
2
|
+
# at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
|
|
3
|
+
# The body below is byte-identical to the source; the cloud re-runs the LIVE
|
|
4
|
+
# file against this evaluator at the re-pin, so a stale copy is caught there.
|
|
5
|
+
# Store tests for conversation participation on agent channels (the
|
|
6
|
+
# `participant` relation and `can_participate` permission,
|
|
7
|
+
# channel-conversations DD-010).
|
|
8
|
+
#
|
|
9
|
+
# The model change under test, in one line each:
|
|
10
|
+
# participant: [identity_account] or owner (owner participates free)
|
|
11
|
+
# viewer: [identity_account] or participant (widened from `or owner`)
|
|
12
|
+
# can_participate: participant (the reply/takeover bar)
|
|
13
|
+
#
|
|
14
|
+
# The invariants this suite pins:
|
|
15
|
+
# 1. Read and speak are DIFFERENT powers: a granted viewer can see
|
|
16
|
+
# conversations but cannot participate (the DD-010 rejected
|
|
17
|
+
# alternative "widen viewer alone" stays rejected).
|
|
18
|
+
# 2. Participation is NOT configuration: a participant can never
|
|
19
|
+
# edit/delete/grant on the channel.
|
|
20
|
+
# 3. The viewer widening is behavior-preserving for existing grants:
|
|
21
|
+
# owner ⊆ participant ⊆ viewer, so every pre-DD-010 owner/admin
|
|
22
|
+
# read keeps working (asserted below, byte-identical semantics).
|
|
23
|
+
# 4. Conversation READ rides the existing session.can_view composition
|
|
24
|
+
# (`viewer from channel`) unchanged, still read-only — participants
|
|
25
|
+
# inherit view on channel sessions but never
|
|
26
|
+
# can_create_execution_in (DD-012's read-only-by-construction).
|
|
27
|
+
# 5. The personal-session invariant is untouched: a participant sees
|
|
28
|
+
# nothing of anyone's console sessions.
|
|
29
|
+
#
|
|
30
|
+
# Run with:
|
|
31
|
+
# fga model test --tests channel-participation.fga.yaml
|
|
32
|
+
#
|
|
33
|
+
# Scenario: org "acme" has admin alice, member bob (who connected the
|
|
34
|
+
# WhatsApp channel and owns it), member trina (an ISC trainer granted
|
|
35
|
+
# participant — the DD-010 launch persona), member carol (granted plain
|
|
36
|
+
# viewer), and member dave (no relation to the channel). "rival" is
|
|
37
|
+
# another org whose admin eve must see nothing. The channel session is
|
|
38
|
+
# owned by acme's system-channel account; bob also has a personal
|
|
39
|
+
# console session to prove invariant 5.
|
|
40
|
+
name: channel-participation
|
|
41
|
+
model_file: ../model/fga.mod
|
|
42
|
+
|
|
43
|
+
tuples:
|
|
44
|
+
# --- Org roles ---
|
|
45
|
+
- user: identity_account:alice
|
|
46
|
+
relation: admin
|
|
47
|
+
object: organization:acme
|
|
48
|
+
- user: identity_account:bob
|
|
49
|
+
relation: member
|
|
50
|
+
object: organization:acme
|
|
51
|
+
- user: identity_account:trina
|
|
52
|
+
relation: member
|
|
53
|
+
object: organization:acme
|
|
54
|
+
- user: identity_account:carol
|
|
55
|
+
relation: member
|
|
56
|
+
object: organization:acme
|
|
57
|
+
- user: identity_account:dave
|
|
58
|
+
relation: member
|
|
59
|
+
object: organization:acme
|
|
60
|
+
- user: identity_account:eve
|
|
61
|
+
relation: admin
|
|
62
|
+
object: organization:rival
|
|
63
|
+
|
|
64
|
+
# --- The AgentChannel (tuples written on create: org link + creator owner) ---
|
|
65
|
+
- user: organization:acme
|
|
66
|
+
relation: organization
|
|
67
|
+
object: agent_channel:wa-line
|
|
68
|
+
- user: identity_account:bob
|
|
69
|
+
relation: owner
|
|
70
|
+
object: agent_channel:wa-line
|
|
71
|
+
|
|
72
|
+
# --- The DD-010 grants (IamPolicy-written: participant vs plain viewer) ---
|
|
73
|
+
- user: identity_account:trina
|
|
74
|
+
relation: participant
|
|
75
|
+
object: agent_channel:wa-line
|
|
76
|
+
- user: identity_account:carol
|
|
77
|
+
relation: viewer
|
|
78
|
+
object: agent_channel:wa-line
|
|
79
|
+
|
|
80
|
+
# --- A channel session (owned by the org's system-channel account) ---
|
|
81
|
+
- user: organization:acme
|
|
82
|
+
relation: organization
|
|
83
|
+
object: session:member-chat
|
|
84
|
+
- user: identity_account:sys-channel-acme
|
|
85
|
+
relation: owner
|
|
86
|
+
object: session:member-chat
|
|
87
|
+
# The structural link written by ChannelSessionLinkStep:
|
|
88
|
+
- user: agent_channel:wa-line
|
|
89
|
+
relation: channel
|
|
90
|
+
object: session:member-chat
|
|
91
|
+
|
|
92
|
+
# --- Bob's personal console session (invariant 5's control subject) ---
|
|
93
|
+
- user: organization:acme
|
|
94
|
+
relation: organization
|
|
95
|
+
object: session:bobs-chat
|
|
96
|
+
- user: identity_account:bob
|
|
97
|
+
relation: owner
|
|
98
|
+
object: session:bobs-chat
|
|
99
|
+
|
|
100
|
+
tests:
|
|
101
|
+
- name: a granted participant may read and speak but never configure
|
|
102
|
+
check:
|
|
103
|
+
- user: identity_account:trina
|
|
104
|
+
object: agent_channel:wa-line
|
|
105
|
+
assertions:
|
|
106
|
+
can_view: true
|
|
107
|
+
can_participate: true
|
|
108
|
+
can_edit: false
|
|
109
|
+
can_delete: false
|
|
110
|
+
can_grant_access: false
|
|
111
|
+
can_view_access: true
|
|
112
|
+
|
|
113
|
+
- name: a granted viewer may read but never speak — read and speak are different powers
|
|
114
|
+
check:
|
|
115
|
+
- user: identity_account:carol
|
|
116
|
+
object: agent_channel:wa-line
|
|
117
|
+
assertions:
|
|
118
|
+
can_view: true
|
|
119
|
+
can_participate: false
|
|
120
|
+
can_edit: false
|
|
121
|
+
|
|
122
|
+
- name: the channel owner participates without an explicit tuple
|
|
123
|
+
check:
|
|
124
|
+
- user: identity_account:bob
|
|
125
|
+
object: agent_channel:wa-line
|
|
126
|
+
assertions:
|
|
127
|
+
can_view: true
|
|
128
|
+
can_participate: true
|
|
129
|
+
can_edit: true
|
|
130
|
+
can_delete: true
|
|
131
|
+
can_grant_access: true
|
|
132
|
+
|
|
133
|
+
- name: an org admin participates through owner inheritance, no tuple needed
|
|
134
|
+
check:
|
|
135
|
+
- user: identity_account:alice
|
|
136
|
+
object: agent_channel:wa-line
|
|
137
|
+
assertions:
|
|
138
|
+
can_view: true
|
|
139
|
+
can_participate: true
|
|
140
|
+
can_edit: true
|
|
141
|
+
|
|
142
|
+
- name: a plain org member has no access of any kind
|
|
143
|
+
check:
|
|
144
|
+
- user: identity_account:dave
|
|
145
|
+
object: agent_channel:wa-line
|
|
146
|
+
assertions:
|
|
147
|
+
can_view: false
|
|
148
|
+
can_participate: false
|
|
149
|
+
can_edit: false
|
|
150
|
+
can_delete: false
|
|
151
|
+
can_grant_access: false
|
|
152
|
+
can_view_access: false
|
|
153
|
+
|
|
154
|
+
- name: a foreign org admin has no access of any kind
|
|
155
|
+
check:
|
|
156
|
+
- user: identity_account:eve
|
|
157
|
+
object: agent_channel:wa-line
|
|
158
|
+
assertions:
|
|
159
|
+
can_view: false
|
|
160
|
+
can_participate: false
|
|
161
|
+
can_edit: false
|
|
162
|
+
|
|
163
|
+
- name: participants inherit channel-session read through the existing composition, read-only
|
|
164
|
+
check:
|
|
165
|
+
- user: identity_account:trina
|
|
166
|
+
object: session:member-chat
|
|
167
|
+
assertions:
|
|
168
|
+
can_view: true
|
|
169
|
+
can_create_execution_in: false
|
|
170
|
+
can_edit: false
|
|
171
|
+
can_delete: false
|
|
172
|
+
can_grant_access: false
|
|
173
|
+
|
|
174
|
+
- name: the personal-session invariant is untouched — a participant sees no console sessions
|
|
175
|
+
check:
|
|
176
|
+
- user: identity_account:trina
|
|
177
|
+
object: session:bobs-chat
|
|
178
|
+
assertions:
|
|
179
|
+
can_view: false
|
|
180
|
+
can_create_execution_in: false
|
|
181
|
+
|
|
182
|
+
- name: list viewable and participable channels resolve per grant (drives listConversations)
|
|
183
|
+
list_objects:
|
|
184
|
+
- user: identity_account:trina
|
|
185
|
+
type: agent_channel
|
|
186
|
+
assertions:
|
|
187
|
+
can_view:
|
|
188
|
+
- agent_channel:wa-line
|
|
189
|
+
can_participate:
|
|
190
|
+
- agent_channel:wa-line
|
|
191
|
+
- user: identity_account:carol
|
|
192
|
+
type: agent_channel
|
|
193
|
+
assertions:
|
|
194
|
+
can_view:
|
|
195
|
+
- agent_channel:wa-line
|
|
196
|
+
can_participate: []
|
|
197
|
+
- user: identity_account:dave
|
|
198
|
+
type: agent_channel
|
|
199
|
+
assertions:
|
|
200
|
+
can_view: []
|
|
201
|
+
can_participate: []
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/channel-session-visibility.fga.yaml
|
|
2
|
+
# at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
|
|
3
|
+
# The body below is byte-identical to the source; the cloud re-runs the LIVE
|
|
4
|
+
# file against this evaluator at the re-pin, so a stale copy is caught there.
|
|
5
|
+
# Store tests for channel-session read-only observability (the session
|
|
6
|
+
# `channel` structural link).
|
|
7
|
+
#
|
|
8
|
+
# A session created by the channel runtime carries a single
|
|
9
|
+
# session#channel@agent_channel:<id>
|
|
10
|
+
# tuple and inherits the channel's viewer set (connector owner + org admins
|
|
11
|
+
# via `admin from organization` on agent_channel) into can_view ONLY —
|
|
12
|
+
# `viewer from channel` is composed into session.can_view, deliberately NOT
|
|
13
|
+
# into session.viewer, so channel observers never gain
|
|
14
|
+
# can_create_execution_in / can_edit / can_delete / can_grant_access.
|
|
15
|
+
# Executions follow through agent_execution's
|
|
16
|
+
# `can_view: viewer or can_view from session`.
|
|
17
|
+
#
|
|
18
|
+
# The personal-session invariant is untouched: console sessions never carry
|
|
19
|
+
# a channel tuple, so `viewer from channel` resolves to nothing for them
|
|
20
|
+
# (pinned below and by session-personal-resource.fga.yaml).
|
|
21
|
+
#
|
|
22
|
+
# Run with:
|
|
23
|
+
# fga model test --tests channel-session-visibility.fga.yaml
|
|
24
|
+
#
|
|
25
|
+
# Scenario: org "acme" has admin alice, member bob (who connected the Slack
|
|
26
|
+
# channel and owns it), and member carol (no relation to the channel).
|
|
27
|
+
# "rival" is another org whose admin eve must see nothing. The channel
|
|
28
|
+
# session is owned by acme's system-channel account; bob also has a normal
|
|
29
|
+
# personal console session to prove the invariant.
|
|
30
|
+
name: channel-session-visibility
|
|
31
|
+
model_file: ../model/fga.mod
|
|
32
|
+
|
|
33
|
+
tuples:
|
|
34
|
+
# --- Org roles ---
|
|
35
|
+
- user: identity_account:alice
|
|
36
|
+
relation: admin
|
|
37
|
+
object: organization:acme
|
|
38
|
+
- user: identity_account:bob
|
|
39
|
+
relation: member
|
|
40
|
+
object: organization:acme
|
|
41
|
+
- user: identity_account:carol
|
|
42
|
+
relation: member
|
|
43
|
+
object: organization:acme
|
|
44
|
+
- user: identity_account:eve
|
|
45
|
+
relation: admin
|
|
46
|
+
object: organization:rival
|
|
47
|
+
|
|
48
|
+
# --- The AgentChannel (tuples written on create: org link + creator owner) ---
|
|
49
|
+
- user: organization:acme
|
|
50
|
+
relation: organization
|
|
51
|
+
object: agent_channel:slack-conn
|
|
52
|
+
- user: identity_account:bob
|
|
53
|
+
relation: owner
|
|
54
|
+
object: agent_channel:slack-conn
|
|
55
|
+
|
|
56
|
+
# --- The channel session (owned by the org's system-channel account) ---
|
|
57
|
+
- user: organization:acme
|
|
58
|
+
relation: organization
|
|
59
|
+
object: session:channel-chat
|
|
60
|
+
- user: identity_account:sys-channel-acme
|
|
61
|
+
relation: owner
|
|
62
|
+
object: session:channel-chat
|
|
63
|
+
# The structural link written by ChannelSessionLinkStep:
|
|
64
|
+
- user: agent_channel:slack-conn
|
|
65
|
+
relation: channel
|
|
66
|
+
object: session:channel-chat
|
|
67
|
+
|
|
68
|
+
# --- An execution inside the channel session ---
|
|
69
|
+
- user: session:channel-chat
|
|
70
|
+
relation: session
|
|
71
|
+
object: agent_execution:channel-run-1
|
|
72
|
+
|
|
73
|
+
# --- bob's ordinary personal console session (NO channel tuple) ---
|
|
74
|
+
- user: organization:acme
|
|
75
|
+
relation: organization
|
|
76
|
+
object: session:bobs-chat
|
|
77
|
+
- user: identity_account:bob
|
|
78
|
+
relation: owner
|
|
79
|
+
object: session:bobs-chat
|
|
80
|
+
- user: session:bobs-chat
|
|
81
|
+
relation: session
|
|
82
|
+
object: agent_execution:bobs-run-1
|
|
83
|
+
|
|
84
|
+
tests:
|
|
85
|
+
- name: channel connector can view the conversation but only view it
|
|
86
|
+
check:
|
|
87
|
+
- user: identity_account:bob
|
|
88
|
+
object: session:channel-chat
|
|
89
|
+
assertions:
|
|
90
|
+
can_view: true
|
|
91
|
+
can_create_execution_in: false
|
|
92
|
+
can_edit: false
|
|
93
|
+
can_delete: false
|
|
94
|
+
can_grant_access: false
|
|
95
|
+
can_view_access: false
|
|
96
|
+
|
|
97
|
+
- name: org admin inherits view through the channel, read-only
|
|
98
|
+
check:
|
|
99
|
+
- user: identity_account:alice
|
|
100
|
+
object: session:channel-chat
|
|
101
|
+
assertions:
|
|
102
|
+
can_view: true
|
|
103
|
+
can_create_execution_in: false
|
|
104
|
+
can_edit: false
|
|
105
|
+
can_delete: false
|
|
106
|
+
can_grant_access: false
|
|
107
|
+
|
|
108
|
+
- name: plain org member without channel access sees nothing
|
|
109
|
+
check:
|
|
110
|
+
- user: identity_account:carol
|
|
111
|
+
object: session:channel-chat
|
|
112
|
+
assertions:
|
|
113
|
+
can_view: false
|
|
114
|
+
can_create_execution_in: false
|
|
115
|
+
|
|
116
|
+
- name: another org's admin sees nothing
|
|
117
|
+
check:
|
|
118
|
+
- user: identity_account:eve
|
|
119
|
+
object: session:channel-chat
|
|
120
|
+
assertions:
|
|
121
|
+
can_view: false
|
|
122
|
+
|
|
123
|
+
- name: the system-channel account keeps full session ownership
|
|
124
|
+
check:
|
|
125
|
+
- user: identity_account:sys-channel-acme
|
|
126
|
+
object: session:channel-chat
|
|
127
|
+
assertions:
|
|
128
|
+
can_view: true
|
|
129
|
+
can_create_execution_in: true
|
|
130
|
+
can_edit: true
|
|
131
|
+
can_delete: true
|
|
132
|
+
|
|
133
|
+
- name: executions inherit read-only channel observability
|
|
134
|
+
check:
|
|
135
|
+
- user: identity_account:bob
|
|
136
|
+
object: agent_execution:channel-run-1
|
|
137
|
+
assertions:
|
|
138
|
+
can_view: true
|
|
139
|
+
can_edit: false
|
|
140
|
+
- user: identity_account:alice
|
|
141
|
+
object: agent_execution:channel-run-1
|
|
142
|
+
assertions:
|
|
143
|
+
can_view: true
|
|
144
|
+
can_edit: false
|
|
145
|
+
- user: identity_account:carol
|
|
146
|
+
object: agent_execution:channel-run-1
|
|
147
|
+
assertions:
|
|
148
|
+
can_view: false
|
|
149
|
+
|
|
150
|
+
- name: personal-session invariant is untouched by the channel model
|
|
151
|
+
check:
|
|
152
|
+
# Admin still has no path into a console session (no channel tuple).
|
|
153
|
+
- user: identity_account:alice
|
|
154
|
+
object: session:bobs-chat
|
|
155
|
+
assertions:
|
|
156
|
+
can_view: false
|
|
157
|
+
can_edit: false
|
|
158
|
+
can_delete: false
|
|
159
|
+
- user: identity_account:alice
|
|
160
|
+
object: agent_execution:bobs-run-1
|
|
161
|
+
assertions:
|
|
162
|
+
can_view: false
|
|
163
|
+
# And the owner's own access is unchanged.
|
|
164
|
+
- user: identity_account:bob
|
|
165
|
+
object: session:bobs-chat
|
|
166
|
+
assertions:
|
|
167
|
+
can_view: true
|
|
168
|
+
can_edit: true
|
|
169
|
+
can_create_execution_in: true
|
|
170
|
+
|
|
171
|
+
- name: list viewable sessions resolves the channel chain (drives listByChannel)
|
|
172
|
+
list_objects:
|
|
173
|
+
- user: identity_account:alice
|
|
174
|
+
type: session
|
|
175
|
+
assertions:
|
|
176
|
+
can_view:
|
|
177
|
+
- session:channel-chat
|
|
178
|
+
- user: identity_account:bob
|
|
179
|
+
type: session
|
|
180
|
+
assertions:
|
|
181
|
+
can_view:
|
|
182
|
+
- session:channel-chat
|
|
183
|
+
- session:bobs-chat
|
|
184
|
+
- user: identity_account:carol
|
|
185
|
+
type: session
|
|
186
|
+
assertions:
|
|
187
|
+
can_view: []
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/cross-org-share-creation.fga.yaml
|
|
2
|
+
# at commit 2ec420161 (the OpenFGA store test the cloud runs against its live model).
|
|
3
|
+
# The body below is byte-identical to the source; the cloud re-runs the LIVE
|
|
4
|
+
# file against this evaluator at the re-pin, so a stale copy is caught there.
|
|
5
|
+
# Cross-org share creation, the FGA half of the decision 013 D2 consent
|
|
6
|
+
# bar. Creating a share of ANOTHER org's marketplace-public agent requires:
|
|
7
|
+
#
|
|
8
|
+
# 1. can_execute on the agent — granted to every authenticated account by
|
|
9
|
+
# the allow_public wildcard when the agent is public (checked here),
|
|
10
|
+
# and to nobody cross-org when it is not.
|
|
11
|
+
# 2. can_create_agent_share on the SHARE's own org — admin-level: a
|
|
12
|
+
# public share spends the org's credits on the open internet. The
|
|
13
|
+
# per-kind can_create_* pattern, one more row.
|
|
14
|
+
#
|
|
15
|
+
# The same-org bar (agent can_edit) is untouched and pinned by
|
|
16
|
+
# agent-share-owner.fga.yaml; the app-level halves of the contract
|
|
17
|
+
# (visibility check, audience rule, dependency sweep, agent-id pin) are
|
|
18
|
+
# handler logic outside FGA, pinned by the Java and Go unit tests.
|
|
19
|
+
|
|
20
|
+
name: cross-org-share-creation
|
|
21
|
+
model_file: ../model/fga.mod
|
|
22
|
+
|
|
23
|
+
tuples:
|
|
24
|
+
# provider-org publishes a marketplace-public agent (the conditional
|
|
25
|
+
# wildcard viewer tuple visibility_public writes).
|
|
26
|
+
- user: organization:provider-org
|
|
27
|
+
relation: organization
|
|
28
|
+
object: agent:public-helper
|
|
29
|
+
- user: identity_account:paula
|
|
30
|
+
relation: owner
|
|
31
|
+
object: agent:public-helper
|
|
32
|
+
- user: identity_account:*
|
|
33
|
+
relation: viewer
|
|
34
|
+
object: agent:public-helper
|
|
35
|
+
condition:
|
|
36
|
+
name: allow_public
|
|
37
|
+
context: {}
|
|
38
|
+
|
|
39
|
+
# A private agent in the same provider org — the wildcard is absent.
|
|
40
|
+
- user: organization:provider-org
|
|
41
|
+
relation: organization
|
|
42
|
+
object: agent:private-helper
|
|
43
|
+
- user: identity_account:paula
|
|
44
|
+
relation: owner
|
|
45
|
+
object: agent:private-helper
|
|
46
|
+
|
|
47
|
+
# consumer-org: an admin and a plain member.
|
|
48
|
+
- user: identity_account:adam
|
|
49
|
+
relation: admin
|
|
50
|
+
object: organization:consumer-org
|
|
51
|
+
- user: identity_account:mia
|
|
52
|
+
relation: member
|
|
53
|
+
object: organization:consumer-org
|
|
54
|
+
|
|
55
|
+
tests:
|
|
56
|
+
- name: consumer-org admin holds both halves of the cross-org bar
|
|
57
|
+
check:
|
|
58
|
+
- user: identity_account:adam
|
|
59
|
+
object: agent:public-helper
|
|
60
|
+
context:
|
|
61
|
+
allow: true
|
|
62
|
+
assertions:
|
|
63
|
+
can_execute: true
|
|
64
|
+
can_edit: false
|
|
65
|
+
- user: identity_account:adam
|
|
66
|
+
object: organization:consumer-org
|
|
67
|
+
assertions:
|
|
68
|
+
can_create_agent_share: true
|
|
69
|
+
|
|
70
|
+
- name: plain member lacks the org-side bar (spending is admin-level)
|
|
71
|
+
check:
|
|
72
|
+
- user: identity_account:mia
|
|
73
|
+
object: agent:public-helper
|
|
74
|
+
context:
|
|
75
|
+
allow: true
|
|
76
|
+
assertions:
|
|
77
|
+
can_execute: true
|
|
78
|
+
- user: identity_account:mia
|
|
79
|
+
object: organization:consumer-org
|
|
80
|
+
assertions:
|
|
81
|
+
can_create_agent_share: false
|
|
82
|
+
|
|
83
|
+
- name: nobody cross-org can execute a private agent
|
|
84
|
+
check:
|
|
85
|
+
- user: identity_account:adam
|
|
86
|
+
object: agent:private-helper
|
|
87
|
+
context:
|
|
88
|
+
allow: true
|
|
89
|
+
assertions:
|
|
90
|
+
can_execute: false
|
|
91
|
+
can_view: false
|
|
92
|
+
|
|
93
|
+
- name: the org-side bar does not leak across orgs
|
|
94
|
+
check:
|
|
95
|
+
- user: identity_account:paula
|
|
96
|
+
object: organization:consumer-org
|
|
97
|
+
assertions:
|
|
98
|
+
can_create_agent_share: false
|