@stigmer/server 3.22.1-dev.20260922095755 → 3.23.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/dist/artifactstorage/artifact-storage.d.ts +29 -31
- package/dist/artifactstorage/artifact-storage.d.ts.map +1 -1
- package/dist/artifactstorage/artifact-storage.js +5 -7
- package/dist/artifactstorage/artifact-storage.js.map +1 -1
- package/dist/artifactstorage/r2-storage.d.ts +12 -7
- package/dist/artifactstorage/r2-storage.d.ts.map +1 -1
- package/dist/artifactstorage/r2-storage.js +6 -14
- package/dist/artifactstorage/r2-storage.js.map +1 -1
- package/dist/authorization/authorizer.d.ts +8 -4
- package/dist/authorization/authorizer.d.ts.map +1 -1
- package/dist/authorization/authorizer.js +9 -5
- package/dist/authorization/authorizer.js.map +1 -1
- package/dist/authorization/derived-tuples.d.ts.map +1 -1
- package/dist/authorization/derived-tuples.js +25 -10
- package/dist/authorization/derived-tuples.js.map +1 -1
- package/dist/authorization/evaluator.d.ts +8 -7
- package/dist/authorization/evaluator.d.ts.map +1 -1
- package/dist/authorization/evaluator.js +20 -4
- package/dist/authorization/evaluator.js.map +1 -1
- package/dist/authorization/list-read-scope.d.ts.map +1 -1
- package/dist/authorization/list-read-scope.js +9 -5
- package/dist/authorization/list-read-scope.js.map +1 -1
- package/dist/authorization/model/agent.d.ts.map +1 -1
- package/dist/authorization/model/agent.js +5 -4
- package/dist/authorization/model/agent.js.map +1 -1
- package/dist/authorization/model/agent_instance.d.ts.map +1 -1
- package/dist/authorization/model/agent_instance.js +2 -2
- package/dist/authorization/model/agent_instance.js.map +1 -1
- package/dist/authorization/model/mcp_server.d.ts.map +1 -1
- package/dist/authorization/model/mcp_server.js +2 -2
- package/dist/authorization/model/mcp_server.js.map +1 -1
- package/dist/authorization/model/plugin.d.ts.map +1 -1
- package/dist/authorization/model/plugin.js +4 -3
- package/dist/authorization/model/plugin.js.map +1 -1
- package/dist/authorization/model/rewrite.d.ts +10 -8
- package/dist/authorization/model/rewrite.d.ts.map +1 -1
- package/dist/authorization/model/rewrite.js +3 -0
- package/dist/authorization/model/rewrite.js.map +1 -1
- package/dist/authorization/model/skill.d.ts.map +1 -1
- package/dist/authorization/model/skill.js +2 -2
- package/dist/authorization/model/skill.js.map +1 -1
- package/dist/authorization/model/workflow.d.ts.map +1 -1
- package/dist/authorization/model/workflow.js +2 -2
- package/dist/authorization/model/workflow.js.map +1 -1
- package/dist/authorization/model/workflow_instance.d.ts.map +1 -1
- package/dist/authorization/model/workflow_instance.js +2 -2
- package/dist/authorization/model/workflow_instance.js.map +1 -1
- package/dist/authorization/organization-directory.d.ts.map +1 -1
- package/dist/authorization/organization-directory.js +3 -2
- package/dist/authorization/organization-directory.js.map +1 -1
- package/dist/authorization/store-test-kit.d.ts +6 -0
- package/dist/authorization/store-test-kit.d.ts.map +1 -1
- package/dist/authorization/store-test-kit.js +62 -16
- package/dist/authorization/store-test-kit.js.map +1 -1
- package/dist/authorization/tuples.d.ts +32 -13
- package/dist/authorization/tuples.d.ts.map +1 -1
- package/dist/authorization/tuples.js +11 -3
- package/dist/authorization/tuples.js.map +1 -1
- package/dist/boot/compose.d.ts.map +1 -1
- package/dist/boot/compose.js +49 -24
- package/dist/boot/compose.js.map +1 -1
- package/dist/boot/config.d.ts +4 -3
- package/dist/boot/config.d.ts.map +1 -1
- package/dist/boot/config.js.map +1 -1
- package/dist/boot/skill-transfer-origin.d.ts +52 -0
- package/dist/boot/skill-transfer-origin.d.ts.map +1 -0
- package/dist/boot/skill-transfer-origin.js +54 -0
- package/dist/boot/skill-transfer-origin.js.map +1 -0
- package/dist/domain/agent/controller.d.ts.map +1 -1
- package/dist/domain/agent/controller.js +4 -4
- package/dist/domain/agent/controller.js.map +1 -1
- package/dist/domain/agentchannel/controller.d.ts.map +1 -1
- package/dist/domain/agentchannel/controller.js +1 -3
- package/dist/domain/agentchannel/controller.js.map +1 -1
- package/dist/domain/agentexecution/controller.d.ts.map +1 -1
- package/dist/domain/agentexecution/controller.js +1 -3
- package/dist/domain/agentexecution/controller.js.map +1 -1
- package/dist/domain/agentinstance/controller.d.ts.map +1 -1
- package/dist/domain/agentinstance/controller.js +4 -3
- package/dist/domain/agentinstance/controller.js.map +1 -1
- package/dist/domain/agentshare/constants.d.ts +11 -6
- package/dist/domain/agentshare/constants.d.ts.map +1 -1
- package/dist/domain/agentshare/constants.js +16 -8
- package/dist/domain/agentshare/constants.js.map +1 -1
- package/dist/domain/agentshare/controller.d.ts.map +1 -1
- package/dist/domain/agentshare/controller.js +1 -3
- package/dist/domain/agentshare/controller.js.map +1 -1
- package/dist/domain/agentshare/steps.d.ts +25 -18
- package/dist/domain/agentshare/steps.d.ts.map +1 -1
- package/dist/domain/agentshare/steps.js +142 -41
- package/dist/domain/agentshare/steps.js.map +1 -1
- package/dist/domain/environment/controller.d.ts.map +1 -1
- package/dist/domain/environment/controller.js +3 -2
- package/dist/domain/environment/controller.js.map +1 -1
- package/dist/domain/executioncontext/controller.d.ts.map +1 -1
- package/dist/domain/executioncontext/controller.js +1 -2
- package/dist/domain/executioncontext/controller.js.map +1 -1
- package/dist/domain/mcpserver/controller.d.ts.map +1 -1
- package/dist/domain/mcpserver/controller.js +4 -3
- package/dist/domain/mcpserver/controller.js.map +1 -1
- package/dist/domain/plugin/controller.d.ts +3 -7
- package/dist/domain/plugin/controller.d.ts.map +1 -1
- package/dist/domain/plugin/controller.js +11 -9
- package/dist/domain/plugin/controller.js.map +1 -1
- package/dist/domain/plugin/push.d.ts +5 -7
- package/dist/domain/plugin/push.d.ts.map +1 -1
- package/dist/domain/plugin/push.js +14 -8
- package/dist/domain/plugin/push.js.map +1 -1
- package/dist/domain/schedule/controller.d.ts.map +1 -1
- package/dist/domain/schedule/controller.js +1 -3
- package/dist/domain/schedule/controller.js.map +1 -1
- package/dist/domain/session/controller.d.ts.map +1 -1
- package/dist/domain/session/controller.js +2 -3
- package/dist/domain/session/controller.js.map +1 -1
- package/dist/domain/skill/constants.d.ts +26 -3
- package/dist/domain/skill/constants.d.ts.map +1 -1
- package/dist/domain/skill/constants.js +26 -3
- package/dist/domain/skill/constants.js.map +1 -1
- package/dist/domain/skill/controller.d.ts +6 -11
- package/dist/domain/skill/controller.d.ts.map +1 -1
- package/dist/domain/skill/controller.js +35 -22
- package/dist/domain/skill/controller.js.map +1 -1
- package/dist/domain/skill/push.d.ts +2 -2
- package/dist/domain/skill/push.d.ts.map +1 -1
- package/dist/domain/skill/push.js +2 -2
- package/dist/domain/skill/push.js.map +1 -1
- package/dist/domain/skill/transfer/handler.d.ts +17 -9
- package/dist/domain/skill/transfer/handler.d.ts.map +1 -1
- package/dist/domain/skill/transfer/handler.js +19 -8
- package/dist/domain/skill/transfer/handler.js.map +1 -1
- package/dist/domain/skill/transfer/slots.d.ts +26 -41
- package/dist/domain/skill/transfer/slots.d.ts.map +1 -1
- package/dist/domain/skill/transfer/slots.js +80 -87
- package/dist/domain/skill/transfer/slots.js.map +1 -1
- package/dist/domain/skill/transfer/staging.d.ts +48 -0
- package/dist/domain/skill/transfer/staging.d.ts.map +1 -0
- package/dist/domain/skill/transfer/staging.js +127 -0
- package/dist/domain/skill/transfer/staging.js.map +1 -0
- package/dist/domain/workflow/controller.d.ts.map +1 -1
- package/dist/domain/workflow/controller.js +6 -14
- package/dist/domain/workflow/controller.js.map +1 -1
- package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -1
- package/dist/domain/workflow/validation/task-config-constraints.d.ts +1 -10
- package/dist/domain/workflow/validation/task-config-constraints.d.ts.map +1 -1
- package/dist/domain/workflow/validation/task-config-constraints.js +2 -3
- package/dist/domain/workflow/validation/task-config-constraints.js.map +1 -1
- package/dist/domain/workflowexecution/controller.d.ts.map +1 -1
- package/dist/domain/workflowexecution/controller.js +2 -4
- package/dist/domain/workflowexecution/controller.js.map +1 -1
- package/dist/domain/workflowinstance/controller.d.ts.map +1 -1
- package/dist/domain/workflowinstance/controller.js +4 -3
- package/dist/domain/workflowinstance/controller.js.map +1 -1
- package/dist/extensions/authorization-queries.d.ts +5 -6
- package/dist/extensions/authorization-queries.d.ts.map +1 -1
- package/dist/extensions/list-read-scope.d.ts +1 -1
- package/dist/extensions/resource-authorization.d.ts +2 -3
- package/dist/extensions/resource-authorization.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline/apiresource-meta.d.ts +3 -12
- package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
- package/dist/pipeline/apiresource-meta.js +10 -21
- package/dist/pipeline/apiresource-meta.js.map +1 -1
- package/dist/pipeline/steps/authorization-tuples.d.ts +3 -9
- package/dist/pipeline/steps/authorization-tuples.d.ts.map +1 -1
- package/dist/pipeline/steps/authorization-tuples.js +11 -9
- package/dist/pipeline/steps/authorization-tuples.js.map +1 -1
- package/dist/pipeline/steps/references.d.ts +20 -178
- package/dist/pipeline/steps/references.d.ts.map +1 -1
- package/dist/pipeline/steps/references.js +43 -344
- package/dist/pipeline/steps/references.js.map +1 -1
- package/dist/pipeline/steps/resolve-artifact-source.d.ts +11 -8
- package/dist/pipeline/steps/resolve-artifact-source.d.ts.map +1 -1
- package/dist/pipeline/steps/resolve-artifact-source.js +8 -4
- package/dist/pipeline/steps/resolve-artifact-source.js.map +1 -1
- package/dist/pipeline/steps/visibility-gates.d.ts +27 -0
- package/dist/pipeline/steps/visibility-gates.d.ts.map +1 -0
- package/dist/pipeline/steps/visibility-gates.js +139 -0
- package/dist/pipeline/steps/visibility-gates.js.map +1 -0
- package/dist/query/search/controller.js +1 -0
- package/dist/query/search/controller.js.map +1 -1
- package/dist/query/search/criteria.d.ts +5 -1
- package/dist/query/search/criteria.d.ts.map +1 -1
- package/dist/query/search/criteria.js +13 -3
- package/dist/query/search/criteria.js.map +1 -1
- package/dist/query/search/handler.d.ts +4 -5
- package/dist/query/search/handler.d.ts.map +1 -1
- package/dist/query/search/handler.js +6 -7
- package/dist/query/search/handler.js.map +1 -1
- package/dist/query/search/query-store.d.ts.map +1 -1
- package/dist/query/search/query-store.js +2 -0
- package/dist/query/search/query-store.js.map +1 -1
- package/dist/store/interface.d.ts +6 -3
- package/dist/store/interface.d.ts.map +1 -1
- package/dist/store/interface.js.map +1 -1
- package/dist/store/postgres/migrations.d.ts +1 -3
- package/dist/store/postgres/migrations.d.ts.map +1 -1
- package/dist/store/postgres/migrations.js +1 -35
- package/dist/store/postgres/migrations.js.map +1 -1
- package/dist/store/postgres/store.d.ts.map +1 -1
- package/dist/store/postgres/store.js +9 -4
- package/dist/store/postgres/store.js.map +1 -1
- package/dist/store/sqlite/migrations.d.ts +1 -3
- package/dist/store/sqlite/migrations.d.ts.map +1 -1
- package/dist/store/sqlite/migrations.js +1 -36
- package/dist/store/sqlite/migrations.js.map +1 -1
- package/dist/store/sqlite/store.d.ts.map +1 -1
- package/dist/store/sqlite/store.js +8 -4
- package/dist/store/sqlite/store.js.map +1 -1
- package/package.json +6 -6
- package/src/artifactstorage/__tests__/artifact-storage.test.ts +36 -33
- package/src/artifactstorage/__tests__/r2-storage.test.ts +11 -13
- package/src/artifactstorage/artifact-storage.ts +37 -33
- package/src/artifactstorage/r2-storage.ts +6 -15
- package/src/authorization/README.md +26 -24
- package/src/authorization/__tests__/authorizer.test.ts +9 -10
- package/src/authorization/__tests__/derived-tuples.test.ts +11 -4
- package/src/authorization/__tests__/evaluator.test.ts +73 -14
- package/src/authorization/__tests__/facts.test.ts +2 -2
- package/src/authorization/__tests__/fixtures/fga/agent-instance-creation.fga.yaml +185 -0
- package/src/authorization/__tests__/fixtures/fga/blueprint-private-visibility.fga.yaml +98 -6
- 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 +61 -4
- package/src/authorization/__tests__/fixtures/fga/mcp-server-authoring.fga.yaml +143 -0
- package/src/authorization/__tests__/fixtures/fga/org-admin-owner-inheritance.fga.yaml +21 -1
- package/src/authorization/__tests__/fixtures/fga/platform-visibility.fga.yaml +25 -1
- package/src/authorization/__tests__/fixtures/fga/public-visibility-setter.fga.yaml +52 -0
- package/src/authorization/__tests__/fixtures/fga/workflow-execution-sharing.fga.yaml +3 -1
- package/src/authorization/__tests__/list-read-scope.test.ts +17 -18
- package/src/authorization/__tests__/store-tests.test.ts +8 -1
- package/src/authorization/__tests__/tuples.test.ts +11 -12
- package/src/authorization/authorizer.ts +9 -4
- package/src/authorization/derived-tuples.ts +31 -14
- package/src/authorization/evaluator.ts +44 -8
- package/src/authorization/list-read-scope.ts +11 -5
- package/src/authorization/model/agent.ts +5 -2
- package/src/authorization/model/agent_instance.ts +2 -0
- package/src/authorization/model/mcp_server.ts +2 -0
- package/src/authorization/model/plugin.ts +4 -1
- package/src/authorization/model/rewrite.ts +13 -8
- package/src/authorization/model/skill.ts +2 -0
- package/src/authorization/model/workflow.ts +2 -0
- package/src/authorization/model/workflow_instance.ts +2 -0
- package/src/authorization/organization-directory.ts +3 -1
- package/src/authorization/store-test-kit.ts +75 -16
- package/src/authorization/tuples.ts +39 -16
- package/src/boot/__tests__/skill-transfer-origin.test.ts +72 -0
- package/src/boot/compose.ts +62 -25
- package/src/boot/config.ts +4 -3
- package/src/boot/skill-transfer-origin.ts +76 -0
- package/src/domain/agent/__tests__/agent.test.ts +4 -11
- package/src/domain/agent/controller.ts +7 -7
- package/src/domain/agentchannel/__tests__/agentchannel.test.ts +48 -223
- package/src/domain/agentchannel/controller.ts +1 -6
- package/src/domain/agentexecution/controller.ts +1 -6
- package/src/domain/agentinstance/controller.ts +12 -6
- package/src/domain/agentshare/__tests__/agentshare.test.ts +172 -196
- package/src/domain/agentshare/__tests__/create-authorization.test.ts +31 -16
- package/src/domain/agentshare/constants.ts +26 -14
- package/src/domain/agentshare/controller.ts +1 -6
- package/src/domain/agentshare/steps.ts +194 -41
- package/src/domain/environment/controller.ts +8 -5
- package/src/domain/executioncontext/controller.ts +1 -5
- package/src/domain/mcpserver/__tests__/mcpserver.test.ts +28 -115
- package/src/domain/mcpserver/__tests__/oauth-handshake.test.ts +18 -53
- package/src/domain/mcpserver/controller.ts +12 -6
- package/src/domain/plugin/controller.ts +23 -18
- package/src/domain/plugin/push.ts +16 -8
- package/src/domain/schedule/controller.ts +1 -6
- package/src/domain/session/controller.ts +4 -12
- package/src/domain/skill/__tests__/skill.test.ts +5 -3
- package/src/domain/skill/__tests__/slots.test.ts +113 -60
- package/src/domain/skill/__tests__/staging.test.ts +304 -0
- package/src/domain/skill/constants.ts +28 -3
- package/src/domain/skill/controller.ts +51 -35
- package/src/domain/skill/push.ts +3 -3
- package/src/domain/skill/transfer/handler.ts +33 -15
- package/src/domain/skill/transfer/slots.ts +89 -100
- package/src/domain/skill/transfer/staging.ts +191 -0
- package/src/domain/workflow/controller.ts +10 -28
- package/src/domain/workflow/registry/data/task-kind-registry.json +1 -1
- package/src/domain/workflow/validation/task-config-constraints.ts +3 -7
- package/src/domain/workflowexecution/controller.ts +2 -7
- package/src/domain/workflowinstance/controller.ts +12 -6
- package/src/extensions/__tests__/built-in-authorization-composed.test.ts +19 -32
- package/src/extensions/__tests__/extension-composition.test.ts +4 -4
- package/src/extensions/__tests__/list-read-scope-composed.test.ts +6 -9
- package/src/extensions/authorization-queries.ts +5 -6
- package/src/extensions/list-read-scope.ts +1 -1
- package/src/extensions/resource-authorization.ts +5 -3
- package/src/index.ts +14 -0
- package/src/pipeline/apiresource-meta.ts +10 -21
- package/src/pipeline/steps/__tests__/authorization-tuples.test.ts +31 -18
- package/src/pipeline/steps/__tests__/visibility-gates.test.ts +187 -0
- package/src/pipeline/steps/authorization-tuples.ts +11 -9
- package/src/pipeline/steps/references.ts +70 -578
- package/src/pipeline/steps/resolve-artifact-source.ts +20 -13
- package/src/pipeline/steps/visibility-gates.ts +174 -0
- package/src/query/search/__tests__/criteria.test.ts +4 -0
- package/src/query/search/__tests__/query-store.test.ts +40 -11
- package/src/query/search/controller.ts +1 -0
- package/src/query/search/criteria.ts +14 -0
- package/src/query/search/handler.ts +7 -6
- package/src/query/search/query-store.ts +2 -0
- package/src/store/__tests__/store-contract.ts +51 -6
- package/src/store/interface.ts +6 -3
- package/src/store/postgres/__tests__/migrations.test.ts +6 -187
- package/src/store/postgres/__tests__/store-contract.test.ts +2 -0
- package/src/store/postgres/migrations.ts +1 -48
- package/src/store/postgres/store.ts +11 -4
- package/src/store/sqlite/__tests__/migrations.test.ts +5 -191
- package/src/store/sqlite/migrations.ts +1 -45
- package/src/store/sqlite/store.ts +10 -4
- package/src/transport/registry/__tests__/lanes.test.ts +1 -1
- package/dist/domain/workflow/agent-call-references.d.ts +0 -54
- package/dist/domain/workflow/agent-call-references.d.ts.map +0 -1
- package/dist/domain/workflow/agent-call-references.js +0 -97
- package/dist/domain/workflow/agent-call-references.js.map +0 -1
- package/dist/store/public-visibility-retired.d.ts +0 -67
- package/dist/store/public-visibility-retired.d.ts.map +0 -1
- package/dist/store/public-visibility-retired.js +0 -55
- package/dist/store/public-visibility-retired.js.map +0 -1
- package/src/domain/workflow/__tests__/agent-call-references.test.ts +0 -222
- package/src/domain/workflow/agent-call-references.ts +0 -157
- package/src/pipeline/__tests__/supports-visibility.test.ts +0 -112
- package/src/pipeline/steps/__tests__/references.test.ts +0 -703
- package/src/store/__tests__/public-visibility-retired.test.ts +0 -127
- package/src/store/public-visibility-retired.ts +0 -119
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/agent-instance-creation.fga.yaml
|
|
2
|
+
# at commit 4c03c38d2 (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 agent-instance creation: two halves, asked together by
|
|
6
|
+
# the create since stigmer#1209 (v3.22.0). The agent half is the agent's
|
|
7
|
+
# can_create_instance (can_execute, so the viewer set: whoever may run the
|
|
8
|
+
# agent may instantiate it). The organization half is
|
|
9
|
+
# can_create_agent_instance: member on the organization the instance is
|
|
10
|
+
# created IN, which is the caller's own, not the agent's: a personal
|
|
11
|
+
# instance of another organization's public agent lives in the caller's
|
|
12
|
+
# organization (the marketplace case), so the agent's permission alone
|
|
13
|
+
# would let a row be planted in any organization named on the request.
|
|
14
|
+
#
|
|
15
|
+
# What these pin: owners, admins and members hold the organization half;
|
|
16
|
+
# a viewer-role account may run an org-visible agent (the agent half) and
|
|
17
|
+
# still lacks the organization half; a guest holds neither; an outsider
|
|
18
|
+
# holds neither; and the marketplace case passes on the caller's own
|
|
19
|
+
# organization while the agent half comes from the public wildcard.
|
|
20
|
+
#
|
|
21
|
+
# Run: fga model test --tests agent-instance-creation.fga.yaml
|
|
22
|
+
|
|
23
|
+
name: agent-instance-creation
|
|
24
|
+
model_file: ../model/fga.mod
|
|
25
|
+
|
|
26
|
+
tuples:
|
|
27
|
+
# Org acme: olivia owns it, oscar administers, dave is a plain member,
|
|
28
|
+
# vera a read-only viewer, greta the share-link guest account.
|
|
29
|
+
- user: identity_account:olivia
|
|
30
|
+
relation: owner
|
|
31
|
+
object: organization:acme
|
|
32
|
+
- user: identity_account:oscar
|
|
33
|
+
relation: admin
|
|
34
|
+
object: organization:acme
|
|
35
|
+
- user: identity_account:dave
|
|
36
|
+
relation: member
|
|
37
|
+
object: organization:acme
|
|
38
|
+
- user: identity_account:vera
|
|
39
|
+
relation: viewer
|
|
40
|
+
object: organization:acme
|
|
41
|
+
- user: identity_account:greta
|
|
42
|
+
relation: guest
|
|
43
|
+
object: organization:acme
|
|
44
|
+
|
|
45
|
+
# Org consumer: mia is a plain member there and holds no role in acme.
|
|
46
|
+
- user: identity_account:mia
|
|
47
|
+
relation: member
|
|
48
|
+
object: organization:consumer
|
|
49
|
+
|
|
50
|
+
# An ORG-visible agent in acme, authored by oscar.
|
|
51
|
+
- user: organization:acme
|
|
52
|
+
relation: organization
|
|
53
|
+
object: agent:team-bot
|
|
54
|
+
- user: identity_account:oscar
|
|
55
|
+
relation: owner
|
|
56
|
+
object: agent:team-bot
|
|
57
|
+
- user: organization:acme#viewer
|
|
58
|
+
relation: viewer
|
|
59
|
+
object: agent:team-bot
|
|
60
|
+
|
|
61
|
+
# A PRIVATE agent in acme, authored by oscar (no visibility tuple).
|
|
62
|
+
- user: organization:acme
|
|
63
|
+
relation: organization
|
|
64
|
+
object: agent:secret-bot
|
|
65
|
+
- user: identity_account:oscar
|
|
66
|
+
relation: owner
|
|
67
|
+
object: agent:secret-bot
|
|
68
|
+
|
|
69
|
+
# A PUBLIC marketplace agent in acme (the conditional wildcard plus the
|
|
70
|
+
# org floor tuple the visibility writer emits).
|
|
71
|
+
- user: organization:acme
|
|
72
|
+
relation: organization
|
|
73
|
+
object: agent:open-bot
|
|
74
|
+
- user: identity_account:oscar
|
|
75
|
+
relation: owner
|
|
76
|
+
object: agent:open-bot
|
|
77
|
+
- user: identity_account:*
|
|
78
|
+
relation: viewer
|
|
79
|
+
object: agent:open-bot
|
|
80
|
+
condition:
|
|
81
|
+
name: allow_public
|
|
82
|
+
context: {}
|
|
83
|
+
- user: organization:acme#viewer
|
|
84
|
+
relation: viewer
|
|
85
|
+
object: agent:open-bot
|
|
86
|
+
|
|
87
|
+
tests:
|
|
88
|
+
- name: owners, admins and members hold the organization half
|
|
89
|
+
check:
|
|
90
|
+
- user: identity_account:olivia
|
|
91
|
+
object: organization:acme
|
|
92
|
+
assertions:
|
|
93
|
+
can_create_agent_instance: true
|
|
94
|
+
- user: identity_account:oscar
|
|
95
|
+
object: organization:acme
|
|
96
|
+
assertions:
|
|
97
|
+
can_create_agent_instance: true
|
|
98
|
+
- user: identity_account:dave
|
|
99
|
+
object: organization:acme
|
|
100
|
+
assertions:
|
|
101
|
+
can_create_agent_instance: true
|
|
102
|
+
|
|
103
|
+
- name: a viewer, a guest and an outsider do not
|
|
104
|
+
check:
|
|
105
|
+
- user: identity_account:vera
|
|
106
|
+
object: organization:acme
|
|
107
|
+
assertions:
|
|
108
|
+
can_create_agent_instance: false
|
|
109
|
+
can_create_session: false
|
|
110
|
+
- user: identity_account:greta
|
|
111
|
+
object: organization:acme
|
|
112
|
+
assertions:
|
|
113
|
+
can_create_agent_instance: false
|
|
114
|
+
can_create_session: true
|
|
115
|
+
- user: identity_account:mia
|
|
116
|
+
object: organization:acme
|
|
117
|
+
assertions:
|
|
118
|
+
can_create_agent_instance: false
|
|
119
|
+
|
|
120
|
+
- name: a member instantiates an org-visible agent, both halves held
|
|
121
|
+
check:
|
|
122
|
+
- user: identity_account:dave
|
|
123
|
+
object: agent:team-bot
|
|
124
|
+
context:
|
|
125
|
+
allow: false
|
|
126
|
+
assertions:
|
|
127
|
+
can_create_instance: true
|
|
128
|
+
can_execute: true
|
|
129
|
+
|
|
130
|
+
- name: a viewer may run the org-visible agent and still cannot instantiate it here
|
|
131
|
+
check:
|
|
132
|
+
- user: identity_account:vera
|
|
133
|
+
object: agent:team-bot
|
|
134
|
+
context:
|
|
135
|
+
allow: false
|
|
136
|
+
assertions:
|
|
137
|
+
can_create_instance: true
|
|
138
|
+
- user: identity_account:vera
|
|
139
|
+
object: organization:acme
|
|
140
|
+
assertions:
|
|
141
|
+
can_create_agent_instance: false
|
|
142
|
+
|
|
143
|
+
- name: a private agent gives the agent half to its author and the admins only
|
|
144
|
+
check:
|
|
145
|
+
- user: identity_account:oscar
|
|
146
|
+
object: agent:secret-bot
|
|
147
|
+
context:
|
|
148
|
+
allow: false
|
|
149
|
+
assertions:
|
|
150
|
+
can_create_instance: true
|
|
151
|
+
- user: identity_account:olivia
|
|
152
|
+
object: agent:secret-bot
|
|
153
|
+
context:
|
|
154
|
+
allow: false
|
|
155
|
+
assertions:
|
|
156
|
+
can_create_instance: true
|
|
157
|
+
- user: identity_account:dave
|
|
158
|
+
object: agent:secret-bot
|
|
159
|
+
context:
|
|
160
|
+
allow: false
|
|
161
|
+
assertions:
|
|
162
|
+
can_create_instance: false
|
|
163
|
+
- user: identity_account:mia
|
|
164
|
+
object: agent:secret-bot
|
|
165
|
+
context:
|
|
166
|
+
allow: false
|
|
167
|
+
assertions:
|
|
168
|
+
can_create_instance: false
|
|
169
|
+
|
|
170
|
+
- name: the marketplace case, the agent half from the wildcard and the organization half at home
|
|
171
|
+
check:
|
|
172
|
+
- user: identity_account:mia
|
|
173
|
+
object: agent:open-bot
|
|
174
|
+
context:
|
|
175
|
+
allow: true
|
|
176
|
+
assertions:
|
|
177
|
+
can_create_instance: true
|
|
178
|
+
- user: identity_account:mia
|
|
179
|
+
object: organization:consumer
|
|
180
|
+
assertions:
|
|
181
|
+
can_create_agent_instance: true
|
|
182
|
+
- user: identity_account:mia
|
|
183
|
+
object: organization:acme
|
|
184
|
+
assertions:
|
|
185
|
+
can_create_agent_instance: false
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/blueprint-private-visibility.fga.yaml
|
|
2
|
-
#
|
|
2
|
+
# at commit 2ec420161 (the OpenFGA store test the cloud runs against its live model).
|
|
3
3
|
# The body below is byte-identical to the source; the cloud re-runs the LIVE
|
|
4
4
|
# file against this evaluator at the re-pin, so a stale copy is caught there.
|
|
5
5
|
# Store tests for real blueprint privacy (Phase 3 of the visibility model).
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# viewers; pre-cloud#257 tuples carried #member, which excluded
|
|
15
15
|
# viewer-role users — still honored until backfilled, see the
|
|
16
16
|
# legacy-bot fixture)
|
|
17
|
+
# PUBLIC viewer@identity_account:* (allow_public) + the ORG tuple
|
|
17
18
|
# PLATFORM platform_viewer@identity_provider:<idp>#platform_user + the ORG tuple
|
|
18
19
|
#
|
|
19
20
|
# Read vs spend: an org viewer-role user READS org-visible blueprints (and, at
|
|
@@ -22,8 +23,9 @@
|
|
|
22
23
|
# can_create_execution_in permissions, which require member-or-guest. The
|
|
23
24
|
# vera assertions pin both halves of that contract.
|
|
24
25
|
#
|
|
25
|
-
# The ORG tuple rides along on PLATFORM (the "org floor") so a shared
|
|
26
|
-
# blueprint stays listable in its own org
|
|
26
|
+
# The ORG tuple rides along on PUBLIC/PLATFORM (the "org floor") so a shared
|
|
27
|
+
# blueprint stays listable in its own org — org-scoped ListObjects runs with
|
|
28
|
+
# {"allow": false}, which suppresses the public wildcard.
|
|
27
29
|
#
|
|
28
30
|
# T08 exception: org ADMINS (and org owners, via the role hierarchy) are
|
|
29
31
|
# composed into blueprint `owner` and therefore see, list, and manage
|
|
@@ -37,8 +39,8 @@
|
|
|
37
39
|
# Scenario: org "acme" has owner-creator carol, org admin oscar, plain
|
|
38
40
|
# member dave, and read-only viewer vera (the role SSO auto-provisioning
|
|
39
41
|
# grants by default); mallory belongs to an unrelated org. Carol authors one
|
|
40
|
-
# blueprint of each kind at PRIVATE, plus an ORG agent
|
|
41
|
-
# agent whose tuple still carries the pre-cloud#257 shape.
|
|
42
|
+
# blueprint of each kind at PRIVATE, plus an ORG agent, a PUBLIC agent, and
|
|
43
|
+
# a legacy ORG agent whose tuple still carries the pre-cloud#257 shape.
|
|
42
44
|
name: blueprint-private-visibility
|
|
43
45
|
model_file: ../model/fga.mod
|
|
44
46
|
|
|
@@ -112,6 +114,22 @@ tuples:
|
|
|
112
114
|
relation: viewer
|
|
113
115
|
object: agent:legacy-bot
|
|
114
116
|
|
|
117
|
+
# --- PUBLIC agent (wildcard + org floor tuple) ---
|
|
118
|
+
- user: organization:acme
|
|
119
|
+
relation: organization
|
|
120
|
+
object: agent:open-bot
|
|
121
|
+
- user: identity_account:carol
|
|
122
|
+
relation: owner
|
|
123
|
+
object: agent:open-bot
|
|
124
|
+
- user: identity_account:*
|
|
125
|
+
relation: viewer
|
|
126
|
+
object: agent:open-bot
|
|
127
|
+
condition:
|
|
128
|
+
name: allow_public
|
|
129
|
+
- user: organization:acme#viewer
|
|
130
|
+
relation: viewer
|
|
131
|
+
object: agent:open-bot
|
|
132
|
+
|
|
115
133
|
# --- PRIVATE agent with an explicit individual viewer grant ---
|
|
116
134
|
- user: organization:acme
|
|
117
135
|
relation: organization
|
|
@@ -128,6 +146,8 @@ tests:
|
|
|
128
146
|
check:
|
|
129
147
|
- user: identity_account:dave
|
|
130
148
|
object: agent:secret-bot
|
|
149
|
+
context:
|
|
150
|
+
allow: false
|
|
131
151
|
assertions:
|
|
132
152
|
can_view: false
|
|
133
153
|
can_execute: false
|
|
@@ -135,16 +155,22 @@ tests:
|
|
|
135
155
|
can_clone: false
|
|
136
156
|
- user: identity_account:dave
|
|
137
157
|
object: skill:secret-notes
|
|
158
|
+
context:
|
|
159
|
+
allow: false
|
|
138
160
|
assertions:
|
|
139
161
|
can_view: false
|
|
140
162
|
can_use: false
|
|
141
163
|
- user: identity_account:dave
|
|
142
164
|
object: workflow:secret-flow
|
|
165
|
+
context:
|
|
166
|
+
allow: false
|
|
143
167
|
assertions:
|
|
144
168
|
can_view: false
|
|
145
169
|
can_execute: false
|
|
146
170
|
- user: identity_account:dave
|
|
147
171
|
object: mcp_server:secret-tools
|
|
172
|
+
context:
|
|
173
|
+
allow: false
|
|
148
174
|
assertions:
|
|
149
175
|
can_view: false
|
|
150
176
|
can_use: false
|
|
@@ -154,6 +180,8 @@ tests:
|
|
|
154
180
|
check:
|
|
155
181
|
- user: identity_account:oscar
|
|
156
182
|
object: agent:secret-bot
|
|
183
|
+
context:
|
|
184
|
+
allow: false
|
|
157
185
|
assertions:
|
|
158
186
|
can_view: true
|
|
159
187
|
can_edit: true
|
|
@@ -161,11 +189,15 @@ tests:
|
|
|
161
189
|
can_execute: true
|
|
162
190
|
- user: identity_account:oscar
|
|
163
191
|
object: skill:secret-notes
|
|
192
|
+
context:
|
|
193
|
+
allow: false
|
|
164
194
|
assertions:
|
|
165
195
|
can_view: true
|
|
166
196
|
can_edit: true
|
|
167
197
|
- user: identity_account:oscar
|
|
168
198
|
object: workflow:secret-flow
|
|
199
|
+
context:
|
|
200
|
+
allow: false
|
|
169
201
|
assertions:
|
|
170
202
|
can_view: true
|
|
171
203
|
can_edit: true
|
|
@@ -173,6 +205,8 @@ tests:
|
|
|
173
205
|
# four private-blueprint kinds are pinned to the same rule.
|
|
174
206
|
- user: identity_account:oscar
|
|
175
207
|
object: mcp_server:secret-tools
|
|
208
|
+
context:
|
|
209
|
+
allow: false
|
|
176
210
|
assertions:
|
|
177
211
|
can_view: true
|
|
178
212
|
can_edit: true
|
|
@@ -181,17 +215,22 @@ tests:
|
|
|
181
215
|
list_objects:
|
|
182
216
|
- user: identity_account:oscar
|
|
183
217
|
type: agent
|
|
218
|
+
context:
|
|
219
|
+
allow: false
|
|
184
220
|
assertions:
|
|
185
221
|
can_view:
|
|
186
222
|
- agent:secret-bot
|
|
187
223
|
- agent:team-bot
|
|
188
224
|
- agent:legacy-bot
|
|
225
|
+
- agent:open-bot
|
|
189
226
|
- agent:shared-secret
|
|
190
227
|
|
|
191
228
|
- name: owner retains full access to private blueprints
|
|
192
229
|
check:
|
|
193
230
|
- user: identity_account:carol
|
|
194
231
|
object: agent:secret-bot
|
|
232
|
+
context:
|
|
233
|
+
allow: false
|
|
195
234
|
assertions:
|
|
196
235
|
can_view: true
|
|
197
236
|
can_execute: true
|
|
@@ -200,6 +239,8 @@ tests:
|
|
|
200
239
|
can_delete: true
|
|
201
240
|
- user: identity_account:carol
|
|
202
241
|
object: workflow:secret-flow
|
|
242
|
+
context:
|
|
243
|
+
allow: false
|
|
203
244
|
assertions:
|
|
204
245
|
can_view: true
|
|
205
246
|
can_execute: true
|
|
@@ -209,6 +250,8 @@ tests:
|
|
|
209
250
|
check:
|
|
210
251
|
- user: identity_account:dave
|
|
211
252
|
object: agent:team-bot
|
|
253
|
+
context:
|
|
254
|
+
allow: false
|
|
212
255
|
assertions:
|
|
213
256
|
can_view: true
|
|
214
257
|
can_execute: true
|
|
@@ -217,10 +260,33 @@ tests:
|
|
|
217
260
|
can_delete: false
|
|
218
261
|
- user: identity_account:mallory
|
|
219
262
|
object: agent:team-bot
|
|
263
|
+
context:
|
|
264
|
+
allow: false
|
|
220
265
|
assertions:
|
|
221
266
|
can_view: false
|
|
222
267
|
can_execute: false
|
|
223
268
|
|
|
269
|
+
- name: public agent is reachable by everyone with allow context, and by org members without it
|
|
270
|
+
check:
|
|
271
|
+
# Outsider resolves through the conditional wildcard ({"allow": true}).
|
|
272
|
+
- user: identity_account:mallory
|
|
273
|
+
object: agent:open-bot
|
|
274
|
+
context:
|
|
275
|
+
allow: true
|
|
276
|
+
assertions:
|
|
277
|
+
can_view: true
|
|
278
|
+
can_execute: true
|
|
279
|
+
# Org member resolves through the org floor tuple even with the
|
|
280
|
+
# wildcard suppressed — this is what keeps public blueprints in
|
|
281
|
+
# org-scoped listings.
|
|
282
|
+
- user: identity_account:dave
|
|
283
|
+
object: agent:open-bot
|
|
284
|
+
context:
|
|
285
|
+
allow: false
|
|
286
|
+
assertions:
|
|
287
|
+
can_view: true
|
|
288
|
+
can_execute: true
|
|
289
|
+
|
|
224
290
|
- name: explicit individual viewer grant on a private agent conveys view and run
|
|
225
291
|
check:
|
|
226
292
|
# Run-what-you-can-read: can_execute derives from viewer, so an
|
|
@@ -228,30 +294,38 @@ tests:
|
|
|
228
294
|
# which checks can_view).
|
|
229
295
|
- user: identity_account:dave
|
|
230
296
|
object: agent:shared-secret
|
|
297
|
+
context:
|
|
298
|
+
allow: false
|
|
231
299
|
assertions:
|
|
232
300
|
can_view: true
|
|
233
301
|
can_execute: true
|
|
234
302
|
can_edit: false
|
|
235
303
|
|
|
236
|
-
- name: org member's listable agents exclude private ones
|
|
304
|
+
- name: org member's listable agents exclude private ones (wildcard suppressed)
|
|
237
305
|
list_objects:
|
|
238
306
|
- user: identity_account:dave
|
|
239
307
|
type: agent
|
|
308
|
+
context:
|
|
309
|
+
allow: false
|
|
240
310
|
assertions:
|
|
241
311
|
can_view:
|
|
242
312
|
- agent:team-bot
|
|
243
313
|
- agent:legacy-bot
|
|
314
|
+
- agent:open-bot
|
|
244
315
|
- agent:shared-secret
|
|
245
316
|
|
|
246
317
|
- name: owner's listable agents include everything they authored
|
|
247
318
|
list_objects:
|
|
248
319
|
- user: identity_account:carol
|
|
249
320
|
type: agent
|
|
321
|
+
context:
|
|
322
|
+
allow: false
|
|
250
323
|
assertions:
|
|
251
324
|
can_view:
|
|
252
325
|
- agent:secret-bot
|
|
253
326
|
- agent:team-bot
|
|
254
327
|
- agent:legacy-bot
|
|
328
|
+
- agent:open-bot
|
|
255
329
|
- agent:shared-secret
|
|
256
330
|
|
|
257
331
|
# ── cloud#257: the viewer-role cell (previously untested) ──────────────
|
|
@@ -262,16 +336,27 @@ tests:
|
|
|
262
336
|
# spend refusal is pinned separately on the org permissions below.
|
|
263
337
|
- user: identity_account:vera
|
|
264
338
|
object: agent:team-bot
|
|
339
|
+
context:
|
|
340
|
+
allow: false
|
|
265
341
|
assertions:
|
|
266
342
|
can_view: true
|
|
267
343
|
can_clone: true
|
|
268
344
|
can_execute: true
|
|
269
345
|
can_edit: false
|
|
270
346
|
can_delete: false
|
|
347
|
+
# The org floor of a PUBLIC blueprint reaches viewers the same way.
|
|
348
|
+
- user: identity_account:vera
|
|
349
|
+
object: agent:open-bot
|
|
350
|
+
context:
|
|
351
|
+
allow: false
|
|
352
|
+
assertions:
|
|
353
|
+
can_view: true
|
|
271
354
|
# Private stays private — the viewer role grants nothing beyond the
|
|
272
355
|
# explicit visibility tuples.
|
|
273
356
|
- user: identity_account:vera
|
|
274
357
|
object: agent:secret-bot
|
|
358
|
+
context:
|
|
359
|
+
allow: false
|
|
275
360
|
assertions:
|
|
276
361
|
can_view: false
|
|
277
362
|
can_execute: false
|
|
@@ -297,6 +382,8 @@ tests:
|
|
|
297
382
|
check:
|
|
298
383
|
- user: identity_account:dave
|
|
299
384
|
object: agent:legacy-bot
|
|
385
|
+
context:
|
|
386
|
+
allow: false
|
|
300
387
|
assertions:
|
|
301
388
|
can_view: true
|
|
302
389
|
can_execute: true
|
|
@@ -305,6 +392,8 @@ tests:
|
|
|
305
392
|
# organization#member. The boot backfill converges these tuples.
|
|
306
393
|
- user: identity_account:vera
|
|
307
394
|
object: agent:legacy-bot
|
|
395
|
+
context:
|
|
396
|
+
allow: false
|
|
308
397
|
assertions:
|
|
309
398
|
can_view: false
|
|
310
399
|
can_execute: false
|
|
@@ -313,6 +402,9 @@ tests:
|
|
|
313
402
|
list_objects:
|
|
314
403
|
- user: identity_account:vera
|
|
315
404
|
type: agent
|
|
405
|
+
context:
|
|
406
|
+
allow: false
|
|
316
407
|
assertions:
|
|
317
408
|
can_view:
|
|
318
409
|
- agent:team-bot
|
|
410
|
+
- agent:open-bot
|
|
@@ -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
|