@stigmer/server 3.21.0 → 3.22.1-dev.20260922095755

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.
Files changed (383) hide show
  1. package/dist/authorization/authorizer.d.ts +4 -8
  2. package/dist/authorization/authorizer.d.ts.map +1 -1
  3. package/dist/authorization/authorizer.js +5 -9
  4. package/dist/authorization/authorizer.js.map +1 -1
  5. package/dist/authorization/derived-tuples.d.ts.map +1 -1
  6. package/dist/authorization/derived-tuples.js +10 -25
  7. package/dist/authorization/derived-tuples.js.map +1 -1
  8. package/dist/authorization/evaluator.d.ts +13 -8
  9. package/dist/authorization/evaluator.d.ts.map +1 -1
  10. package/dist/authorization/evaluator.js +4 -20
  11. package/dist/authorization/evaluator.js.map +1 -1
  12. package/dist/authorization/list-read-scope.d.ts.map +1 -1
  13. package/dist/authorization/list-read-scope.js +24 -20
  14. package/dist/authorization/list-read-scope.js.map +1 -1
  15. package/dist/authorization/model/agent.d.ts.map +1 -1
  16. package/dist/authorization/model/agent.js +4 -5
  17. package/dist/authorization/model/agent.js.map +1 -1
  18. package/dist/authorization/model/agent_instance.d.ts.map +1 -1
  19. package/dist/authorization/model/agent_instance.js +2 -2
  20. package/dist/authorization/model/agent_instance.js.map +1 -1
  21. package/dist/authorization/model/mcp_server.d.ts.map +1 -1
  22. package/dist/authorization/model/mcp_server.js +2 -2
  23. package/dist/authorization/model/mcp_server.js.map +1 -1
  24. package/dist/authorization/model/organization.d.ts.map +1 -1
  25. package/dist/authorization/model/organization.js +2 -0
  26. package/dist/authorization/model/organization.js.map +1 -1
  27. package/dist/authorization/model/plugin.d.ts.map +1 -1
  28. package/dist/authorization/model/plugin.js +3 -4
  29. package/dist/authorization/model/plugin.js.map +1 -1
  30. package/dist/authorization/model/rewrite.d.ts +8 -10
  31. package/dist/authorization/model/rewrite.d.ts.map +1 -1
  32. package/dist/authorization/model/rewrite.js +0 -3
  33. package/dist/authorization/model/rewrite.js.map +1 -1
  34. package/dist/authorization/model/skill.d.ts.map +1 -1
  35. package/dist/authorization/model/skill.js +2 -2
  36. package/dist/authorization/model/skill.js.map +1 -1
  37. package/dist/authorization/model/workflow.d.ts.map +1 -1
  38. package/dist/authorization/model/workflow.js +2 -2
  39. package/dist/authorization/model/workflow.js.map +1 -1
  40. package/dist/authorization/model/workflow_instance.d.ts.map +1 -1
  41. package/dist/authorization/model/workflow_instance.js +2 -2
  42. package/dist/authorization/model/workflow_instance.js.map +1 -1
  43. package/dist/authorization/organization-directory.d.ts.map +1 -1
  44. package/dist/authorization/organization-directory.js +2 -3
  45. package/dist/authorization/organization-directory.js.map +1 -1
  46. package/dist/authorization/store-test-kit.d.ts +0 -6
  47. package/dist/authorization/store-test-kit.d.ts.map +1 -1
  48. package/dist/authorization/store-test-kit.js +16 -62
  49. package/dist/authorization/store-test-kit.js.map +1 -1
  50. package/dist/authorization/tuples.d.ts +13 -32
  51. package/dist/authorization/tuples.d.ts.map +1 -1
  52. package/dist/authorization/tuples.js +3 -11
  53. package/dist/authorization/tuples.js.map +1 -1
  54. package/dist/domain/agent/controller.d.ts.map +1 -1
  55. package/dist/domain/agent/controller.js +6 -4
  56. package/dist/domain/agent/controller.js.map +1 -1
  57. package/dist/domain/agentchannel/controller.d.ts.map +1 -1
  58. package/dist/domain/agentchannel/controller.js +9 -2
  59. package/dist/domain/agentchannel/controller.js.map +1 -1
  60. package/dist/domain/agentchannel/steps.d.ts +19 -0
  61. package/dist/domain/agentchannel/steps.d.ts.map +1 -1
  62. package/dist/domain/agentchannel/steps.js +32 -0
  63. package/dist/domain/agentchannel/steps.js.map +1 -1
  64. package/dist/domain/agentexecution/controller.d.ts.map +1 -1
  65. package/dist/domain/agentexecution/controller.js +3 -1
  66. package/dist/domain/agentexecution/controller.js.map +1 -1
  67. package/dist/domain/agentinstance/controller.d.ts +5 -5
  68. package/dist/domain/agentinstance/controller.d.ts.map +1 -1
  69. package/dist/domain/agentinstance/controller.js +9 -5
  70. package/dist/domain/agentinstance/controller.js.map +1 -1
  71. package/dist/domain/agentinstance/steps.d.ts +43 -8
  72. package/dist/domain/agentinstance/steps.d.ts.map +1 -1
  73. package/dist/domain/agentinstance/steps.js +71 -8
  74. package/dist/domain/agentinstance/steps.js.map +1 -1
  75. package/dist/domain/agentshare/constants.d.ts +6 -11
  76. package/dist/domain/agentshare/constants.d.ts.map +1 -1
  77. package/dist/domain/agentshare/constants.js +8 -16
  78. package/dist/domain/agentshare/constants.js.map +1 -1
  79. package/dist/domain/agentshare/controller.d.ts.map +1 -1
  80. package/dist/domain/agentshare/controller.js +10 -2
  81. package/dist/domain/agentshare/controller.js.map +1 -1
  82. package/dist/domain/agentshare/steps.d.ts +61 -10
  83. package/dist/domain/agentshare/steps.d.ts.map +1 -1
  84. package/dist/domain/agentshare/steps.js +121 -117
  85. package/dist/domain/agentshare/steps.js.map +1 -1
  86. package/dist/domain/artifact/controller.js +21 -25
  87. package/dist/domain/artifact/controller.js.map +1 -1
  88. package/dist/domain/channelapp/controller.d.ts.map +1 -1
  89. package/dist/domain/channelapp/controller.js +2 -0
  90. package/dist/domain/channelapp/controller.js.map +1 -1
  91. package/dist/domain/environment/controller.d.ts.map +1 -1
  92. package/dist/domain/environment/controller.js +4 -3
  93. package/dist/domain/environment/controller.js.map +1 -1
  94. package/dist/domain/executioncontext/controller.d.ts.map +1 -1
  95. package/dist/domain/executioncontext/controller.js +4 -1
  96. package/dist/domain/executioncontext/controller.js.map +1 -1
  97. package/dist/domain/executioncontext/steps.d.ts.map +1 -1
  98. package/dist/domain/executioncontext/steps.js +2 -1
  99. package/dist/domain/executioncontext/steps.js.map +1 -1
  100. package/dist/domain/mcpserver/connect.d.ts.map +1 -1
  101. package/dist/domain/mcpserver/connect.js +8 -7
  102. package/dist/domain/mcpserver/connect.js.map +1 -1
  103. package/dist/domain/mcpserver/controller.d.ts.map +1 -1
  104. package/dist/domain/mcpserver/controller.js +5 -4
  105. package/dist/domain/mcpserver/controller.js.map +1 -1
  106. package/dist/domain/mcpserver/start-connect.d.ts.map +1 -1
  107. package/dist/domain/mcpserver/start-connect.js +8 -7
  108. package/dist/domain/mcpserver/start-connect.js.map +1 -1
  109. package/dist/domain/memory/controller.d.ts.map +1 -1
  110. package/dist/domain/memory/controller.js +6 -1
  111. package/dist/domain/memory/controller.js.map +1 -1
  112. package/dist/domain/memory/steps.d.ts +23 -0
  113. package/dist/domain/memory/steps.d.ts.map +1 -1
  114. package/dist/domain/memory/steps.js +35 -0
  115. package/dist/domain/memory/steps.js.map +1 -1
  116. package/dist/domain/oauthapp/controller.d.ts.map +1 -1
  117. package/dist/domain/oauthapp/controller.js +2 -0
  118. package/dist/domain/oauthapp/controller.js.map +1 -1
  119. package/dist/domain/plugin/controller.d.ts.map +1 -1
  120. package/dist/domain/plugin/controller.js +6 -27
  121. package/dist/domain/plugin/controller.js.map +1 -1
  122. package/dist/domain/plugin/push.d.ts +7 -5
  123. package/dist/domain/plugin/push.d.ts.map +1 -1
  124. package/dist/domain/plugin/push.js +8 -14
  125. package/dist/domain/plugin/push.js.map +1 -1
  126. package/dist/domain/schedule/controller.d.ts.map +1 -1
  127. package/dist/domain/schedule/controller.js +10 -2
  128. package/dist/domain/schedule/controller.js.map +1 -1
  129. package/dist/domain/schedule/steps.d.ts +19 -0
  130. package/dist/domain/schedule/steps.d.ts.map +1 -1
  131. package/dist/domain/schedule/steps.js +32 -0
  132. package/dist/domain/schedule/steps.js.map +1 -1
  133. package/dist/domain/session/controller.d.ts.map +1 -1
  134. package/dist/domain/session/controller.js +3 -2
  135. package/dist/domain/session/controller.js.map +1 -1
  136. package/dist/domain/session/steps.d.ts +8 -9
  137. package/dist/domain/session/steps.d.ts.map +1 -1
  138. package/dist/domain/session/steps.js +17 -21
  139. package/dist/domain/session/steps.js.map +1 -1
  140. package/dist/domain/skill/controller.d.ts.map +1 -1
  141. package/dist/domain/skill/controller.js +8 -19
  142. package/dist/domain/skill/controller.js.map +1 -1
  143. package/dist/domain/workflow/agent-call-references.d.ts +54 -0
  144. package/dist/domain/workflow/agent-call-references.d.ts.map +1 -0
  145. package/dist/domain/workflow/agent-call-references.js +97 -0
  146. package/dist/domain/workflow/agent-call-references.js.map +1 -0
  147. package/dist/domain/workflow/controller.d.ts.map +1 -1
  148. package/dist/domain/workflow/controller.js +44 -113
  149. package/dist/domain/workflow/controller.js.map +1 -1
  150. package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -1
  151. package/dist/domain/workflow/validation/task-config-constraints.d.ts +10 -1
  152. package/dist/domain/workflow/validation/task-config-constraints.d.ts.map +1 -1
  153. package/dist/domain/workflow/validation/task-config-constraints.js +3 -2
  154. package/dist/domain/workflow/validation/task-config-constraints.js.map +1 -1
  155. package/dist/domain/workflow/version-resolution.d.ts +5 -0
  156. package/dist/domain/workflow/version-resolution.d.ts.map +1 -0
  157. package/dist/domain/workflow/version-resolution.js +113 -0
  158. package/dist/domain/workflow/version-resolution.js.map +1 -0
  159. package/dist/domain/workflowexecution/controller.d.ts.map +1 -1
  160. package/dist/domain/workflowexecution/controller.js +4 -2
  161. package/dist/domain/workflowexecution/controller.js.map +1 -1
  162. package/dist/domain/workflowinstance/controller.d.ts.map +1 -1
  163. package/dist/domain/workflowinstance/controller.js +9 -5
  164. package/dist/domain/workflowinstance/controller.js.map +1 -1
  165. package/dist/domain/workflowinstance/steps.d.ts +20 -0
  166. package/dist/domain/workflowinstance/steps.d.ts.map +1 -1
  167. package/dist/domain/workflowinstance/steps.js +39 -0
  168. package/dist/domain/workflowinstance/steps.js.map +1 -1
  169. package/dist/extensions/authorization-queries.d.ts +6 -5
  170. package/dist/extensions/authorization-queries.d.ts.map +1 -1
  171. package/dist/extensions/identity.d.ts +19 -0
  172. package/dist/extensions/identity.d.ts.map +1 -1
  173. package/dist/extensions/identity.js +22 -3
  174. package/dist/extensions/identity.js.map +1 -1
  175. package/dist/extensions/list-read-scope.d.ts +42 -8
  176. package/dist/extensions/list-read-scope.d.ts.map +1 -1
  177. package/dist/extensions/list-read-scope.js +13 -2
  178. package/dist/extensions/list-read-scope.js.map +1 -1
  179. package/dist/extensions/resource-authorization.d.ts +3 -2
  180. package/dist/extensions/resource-authorization.d.ts.map +1 -1
  181. package/dist/index.d.ts +1 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js.map +1 -1
  184. package/dist/pipeline/apiresource-meta.d.ts +12 -3
  185. package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
  186. package/dist/pipeline/apiresource-meta.js +21 -10
  187. package/dist/pipeline/apiresource-meta.js.map +1 -1
  188. package/dist/pipeline/steps/authorization-tuples.d.ts +9 -3
  189. package/dist/pipeline/steps/authorization-tuples.d.ts.map +1 -1
  190. package/dist/pipeline/steps/authorization-tuples.js +9 -11
  191. package/dist/pipeline/steps/authorization-tuples.js.map +1 -1
  192. package/dist/pipeline/steps/authorize-resolved-target.d.ts +88 -0
  193. package/dist/pipeline/steps/authorize-resolved-target.d.ts.map +1 -0
  194. package/dist/pipeline/steps/authorize-resolved-target.js +36 -0
  195. package/dist/pipeline/steps/authorize-resolved-target.js.map +1 -0
  196. package/dist/pipeline/steps/authorize.d.ts +27 -0
  197. package/dist/pipeline/steps/authorize.d.ts.map +1 -1
  198. package/dist/pipeline/steps/authorize.js +49 -10
  199. package/dist/pipeline/steps/authorize.js.map +1 -1
  200. package/dist/pipeline/steps/guard-memory-capture.d.ts.map +1 -1
  201. package/dist/pipeline/steps/guard-memory-capture.js +2 -1
  202. package/dist/pipeline/steps/guard-memory-capture.js.map +1 -1
  203. package/dist/pipeline/steps/guard-reserved-labels.d.ts.map +1 -1
  204. package/dist/pipeline/steps/guard-reserved-labels.js +6 -7
  205. package/dist/pipeline/steps/guard-reserved-labels.js.map +1 -1
  206. package/dist/pipeline/steps/helpers.d.ts +9 -5
  207. package/dist/pipeline/steps/helpers.d.ts.map +1 -1
  208. package/dist/pipeline/steps/helpers.js +11 -15
  209. package/dist/pipeline/steps/helpers.js.map +1 -1
  210. package/dist/pipeline/steps/references.d.ts +178 -20
  211. package/dist/pipeline/steps/references.d.ts.map +1 -1
  212. package/dist/pipeline/steps/references.js +344 -43
  213. package/dist/pipeline/steps/references.js.map +1 -1
  214. package/dist/pipeline/steps/version-history.d.ts +11 -0
  215. package/dist/pipeline/steps/version-history.d.ts.map +1 -1
  216. package/dist/pipeline/steps/version-history.js +26 -0
  217. package/dist/pipeline/steps/version-history.js.map +1 -1
  218. package/dist/query/search/controller.js +0 -1
  219. package/dist/query/search/controller.js.map +1 -1
  220. package/dist/query/search/criteria.d.ts +1 -5
  221. package/dist/query/search/criteria.d.ts.map +1 -1
  222. package/dist/query/search/criteria.js +3 -13
  223. package/dist/query/search/criteria.js.map +1 -1
  224. package/dist/query/search/handler.d.ts +5 -4
  225. package/dist/query/search/handler.d.ts.map +1 -1
  226. package/dist/query/search/handler.js +7 -6
  227. package/dist/query/search/handler.js.map +1 -1
  228. package/dist/query/search/query-store.d.ts.map +1 -1
  229. package/dist/query/search/query-store.js +0 -2
  230. package/dist/query/search/query-store.js.map +1 -1
  231. package/dist/store/interface.d.ts +3 -6
  232. package/dist/store/interface.d.ts.map +1 -1
  233. package/dist/store/interface.js.map +1 -1
  234. package/dist/store/postgres/migrations.d.ts +3 -1
  235. package/dist/store/postgres/migrations.d.ts.map +1 -1
  236. package/dist/store/postgres/migrations.js +35 -1
  237. package/dist/store/postgres/migrations.js.map +1 -1
  238. package/dist/store/postgres/store.d.ts.map +1 -1
  239. package/dist/store/postgres/store.js +4 -9
  240. package/dist/store/postgres/store.js.map +1 -1
  241. package/dist/store/public-visibility-retired.d.ts +67 -0
  242. package/dist/store/public-visibility-retired.d.ts.map +1 -0
  243. package/dist/store/public-visibility-retired.js +55 -0
  244. package/dist/store/public-visibility-retired.js.map +1 -0
  245. package/dist/store/sqlite/migrations.d.ts +3 -1
  246. package/dist/store/sqlite/migrations.d.ts.map +1 -1
  247. package/dist/store/sqlite/migrations.js +36 -1
  248. package/dist/store/sqlite/migrations.js.map +1 -1
  249. package/dist/store/sqlite/store.d.ts.map +1 -1
  250. package/dist/store/sqlite/store.js +4 -8
  251. package/dist/store/sqlite/store.js.map +1 -1
  252. package/package.json +6 -6
  253. package/src/authorization/README.md +24 -26
  254. package/src/authorization/__tests__/authorizer.test.ts +10 -9
  255. package/src/authorization/__tests__/derived-tuples.test.ts +4 -11
  256. package/src/authorization/__tests__/evaluator.test.ts +14 -73
  257. package/src/authorization/__tests__/facts.test.ts +2 -2
  258. package/src/authorization/__tests__/fixtures/fga/blueprint-private-visibility.fga.yaml +6 -98
  259. package/src/authorization/__tests__/fixtures/fga/default-instance-inheritance.fga.yaml +4 -61
  260. package/src/authorization/__tests__/fixtures/fga/org-admin-owner-inheritance.fga.yaml +1 -21
  261. package/src/authorization/__tests__/fixtures/fga/platform-visibility.fga.yaml +1 -25
  262. package/src/authorization/__tests__/fixtures/fga/workflow-execution-sharing.fga.yaml +1 -3
  263. package/src/authorization/__tests__/list-read-scope.test.ts +41 -29
  264. package/src/authorization/__tests__/skip-lane-inventory.test.ts +160 -0
  265. package/src/authorization/__tests__/store-tests.test.ts +1 -6
  266. package/src/authorization/__tests__/tuples.test.ts +12 -11
  267. package/src/authorization/__tests__/wire-permissions.test.ts +5 -5
  268. package/src/authorization/authorizer.ts +4 -9
  269. package/src/authorization/derived-tuples.ts +14 -31
  270. package/src/authorization/evaluator.ts +15 -44
  271. package/src/authorization/list-read-scope.ts +27 -22
  272. package/src/authorization/model/__tests__/registry.test.ts +2 -0
  273. package/src/authorization/model/agent.ts +2 -5
  274. package/src/authorization/model/agent_instance.ts +0 -2
  275. package/src/authorization/model/mcp_server.ts +0 -2
  276. package/src/authorization/model/organization.ts +2 -0
  277. package/src/authorization/model/plugin.ts +1 -4
  278. package/src/authorization/model/rewrite.ts +8 -13
  279. package/src/authorization/model/skill.ts +0 -2
  280. package/src/authorization/model/workflow.ts +0 -2
  281. package/src/authorization/model/workflow_instance.ts +0 -2
  282. package/src/authorization/organization-directory.ts +1 -3
  283. package/src/authorization/store-test-kit.ts +16 -75
  284. package/src/authorization/tuples.ts +16 -39
  285. package/src/domain/agent/__tests__/agent.test.ts +11 -4
  286. package/src/domain/agent/controller.ts +17 -7
  287. package/src/domain/agentchannel/__tests__/agentchannel.test.ts +223 -48
  288. package/src/domain/agentchannel/__tests__/create-authorization.test.ts +58 -0
  289. package/src/domain/agentchannel/controller.ts +25 -1
  290. package/src/domain/agentchannel/steps.ts +40 -0
  291. package/src/domain/agentexecution/controller.ts +6 -1
  292. package/src/domain/agentinstance/__tests__/create-authorization.composed.test.ts +243 -0
  293. package/src/domain/agentinstance/__tests__/create-authorization.test.ts +144 -0
  294. package/src/domain/agentinstance/controller.ts +30 -17
  295. package/src/domain/agentinstance/steps.ts +82 -8
  296. package/src/domain/agentshare/__tests__/agentshare.test.ts +196 -172
  297. package/src/domain/agentshare/__tests__/create-authorization.test.ts +71 -0
  298. package/src/domain/agentshare/__tests__/member-audience.test.ts +113 -0
  299. package/src/domain/agentshare/constants.ts +14 -26
  300. package/src/domain/agentshare/controller.ts +27 -1
  301. package/src/domain/agentshare/steps.ts +168 -155
  302. package/src/domain/artifact/controller.ts +18 -22
  303. package/src/domain/channelapp/controller.ts +10 -0
  304. package/src/domain/environment/controller.ts +15 -8
  305. package/src/domain/executioncontext/__tests__/executioncontext.test.ts +1 -0
  306. package/src/domain/executioncontext/controller.ts +15 -1
  307. package/src/domain/executioncontext/steps.ts +2 -1
  308. package/src/domain/mcpserver/__tests__/mcpserver.test.ts +115 -28
  309. package/src/domain/mcpserver/__tests__/oauth-handshake.test.ts +53 -18
  310. package/src/domain/mcpserver/connect.ts +11 -10
  311. package/src/domain/mcpserver/controller.ts +19 -13
  312. package/src/domain/mcpserver/start-connect.ts +17 -11
  313. package/src/domain/memory/__tests__/create-authorization.test.ts +59 -0
  314. package/src/domain/memory/controller.ts +11 -0
  315. package/src/domain/memory/steps.ts +41 -0
  316. package/src/domain/oauthapp/controller.ts +10 -0
  317. package/src/domain/plugin/controller.ts +23 -44
  318. package/src/domain/plugin/push.ts +8 -16
  319. package/src/domain/schedule/__tests__/create-authorization.test.ts +58 -0
  320. package/src/domain/schedule/controller.ts +26 -1
  321. package/src/domain/schedule/steps.ts +45 -2
  322. package/src/domain/session/controller.ts +12 -4
  323. package/src/domain/session/steps.ts +24 -32
  324. package/src/domain/skill/controller.ts +24 -30
  325. package/src/domain/workflow/__tests__/agent-call-references.test.ts +222 -0
  326. package/src/domain/workflow/agent-call-references.ts +157 -0
  327. package/src/domain/workflow/controller.ts +86 -155
  328. package/src/domain/workflow/registry/data/task-kind-registry.json +1 -1
  329. package/src/domain/workflow/validation/task-config-constraints.ts +7 -3
  330. package/src/domain/workflow/version-resolution.ts +166 -0
  331. package/src/domain/workflowexecution/controller.ts +7 -2
  332. package/src/domain/workflowinstance/__tests__/create-authorization.test.ts +109 -0
  333. package/src/domain/workflowinstance/controller.ts +25 -12
  334. package/src/domain/workflowinstance/steps.ts +49 -1
  335. package/src/extensions/__tests__/built-in-authorization-composed.test.ts +32 -19
  336. package/src/extensions/__tests__/composed-support.ts +38 -4
  337. package/src/extensions/__tests__/extension-composition.test.ts +4 -4
  338. package/src/extensions/__tests__/identity.test.ts +44 -1
  339. package/src/extensions/__tests__/list-read-scope-composed.test.ts +96 -7
  340. package/src/extensions/__tests__/list-read-scope.test.ts +63 -0
  341. package/src/extensions/authorization-queries.ts +6 -5
  342. package/src/extensions/identity.ts +23 -5
  343. package/src/extensions/list-read-scope.ts +48 -8
  344. package/src/extensions/resource-authorization.ts +3 -5
  345. package/src/index.ts +0 -1
  346. package/src/pipeline/__tests__/supports-visibility.test.ts +112 -0
  347. package/src/pipeline/apiresource-meta.ts +21 -10
  348. package/src/pipeline/steps/__tests__/authorization-tuples.test.ts +18 -31
  349. package/src/pipeline/steps/__tests__/authorize-resolved-target.test.ts +285 -0
  350. package/src/pipeline/steps/__tests__/references.test.ts +703 -0
  351. package/src/pipeline/steps/authorization-tuples.ts +9 -11
  352. package/src/pipeline/steps/authorize-resolved-target.ts +129 -0
  353. package/src/pipeline/steps/authorize.ts +70 -13
  354. package/src/pipeline/steps/guard-memory-capture.ts +2 -1
  355. package/src/pipeline/steps/guard-reserved-labels.ts +6 -9
  356. package/src/pipeline/steps/helpers.ts +11 -15
  357. package/src/pipeline/steps/references.ts +578 -70
  358. package/src/pipeline/steps/version-history.ts +34 -0
  359. package/src/query/search/__tests__/criteria.test.ts +0 -4
  360. package/src/query/search/__tests__/query-store.test.ts +11 -40
  361. package/src/query/search/controller.ts +0 -1
  362. package/src/query/search/criteria.ts +0 -14
  363. package/src/query/search/handler.ts +6 -7
  364. package/src/query/search/query-store.ts +0 -2
  365. package/src/store/__tests__/public-visibility-retired.test.ts +127 -0
  366. package/src/store/__tests__/store-contract.ts +6 -51
  367. package/src/store/interface.ts +3 -6
  368. package/src/store/postgres/__tests__/migrations.test.ts +187 -6
  369. package/src/store/postgres/__tests__/store-contract.test.ts +0 -2
  370. package/src/store/postgres/migrations.ts +48 -1
  371. package/src/store/postgres/store.ts +4 -11
  372. package/src/store/public-visibility-retired.ts +119 -0
  373. package/src/store/sqlite/__tests__/migrations.test.ts +191 -5
  374. package/src/store/sqlite/migrations.ts +45 -1
  375. package/src/store/sqlite/store.ts +4 -10
  376. package/dist/pipeline/steps/visibility-gates.d.ts +0 -27
  377. package/dist/pipeline/steps/visibility-gates.d.ts.map +0 -1
  378. package/dist/pipeline/steps/visibility-gates.js +0 -139
  379. package/dist/pipeline/steps/visibility-gates.js.map +0 -1
  380. package/src/authorization/__tests__/fixtures/fga/cross-org-share-creation.fga.yaml +0 -98
  381. package/src/authorization/__tests__/fixtures/fga/public-visibility-setter.fga.yaml +0 -52
  382. package/src/pipeline/steps/__tests__/visibility-gates.test.ts +0 -187
  383. package/src/pipeline/steps/visibility-gates.ts +0 -174
@@ -3,8 +3,7 @@
3
3
  * built-in authorizer: which tuples a stored row stands for, in exactly
4
4
  * the shapes the cloud's tuple driver writes (stigmer-cloud
5
5
  * iam/tuple-lifecycle.ts: `organization:<org>#viewer` for the org level,
6
- * the conditional `identity_account:*` for public, the owner by the
7
- * kind's attribution, the parent links by `kind_meta`). Two facts are the
6
+ * the owner by the kind's attribution, the parent links by `kind_meta`). Two facts are the
8
7
  * OSS edition's own and are pinned here by name: the organization's owner
9
8
  * is a ROW (2b's role lifecycle), never derived from its creator stamp,
10
9
  * or a revoked founder would stay owner; and a stamp that names no person
@@ -96,7 +95,7 @@ describe("deriveTuples — the cloud driver's shapes, from the row", () => {
96
95
  ]);
97
96
  });
98
97
 
99
- it("a public blueprint adds the conditional wildcard AND keeps the org floor", () => {
98
+ it("a row that still carries the retired public level derives no viewer tuple at all — no shape reaches every account, and the level's own org floor left with it", () => {
100
99
  expect(
101
100
  derivedFor("skill", {
102
101
  visibility: ApiResourceVisibility.visibility_public,
@@ -104,8 +103,6 @@ describe("deriveTuples — the cloud driver's shapes, from the row", () => {
104
103
  ).toEqual([
105
104
  "skill:skill-1#organization@organization:acme",
106
105
  "skill:skill-1#owner@identity_account:ida_carol",
107
- "skill:skill-1#viewer@identity_account:* with allow_public",
108
- "skill:skill-1#viewer@organization:acme#viewer",
109
106
  ]);
110
107
  });
111
108
 
@@ -166,7 +163,7 @@ describe("deriveTuples — the cloud driver's shapes, from the row", () => {
166
163
  ).toEqual(["memory:memory-1#organization@organization:acme"]);
167
164
  });
168
165
 
169
- it("an environment carries its creator tuple, an org-viewer at org level, and NO public wildcard (the kind's ceiling)", () => {
166
+ it("an environment carries its creator tuple and an org-viewer at org level, and nothing beyond its org ceiling", () => {
170
167
  expect(
171
168
  derivedFor("environment", {
172
169
  visibility: ApiResourceVisibility.visibility_org,
@@ -179,7 +176,7 @@ describe("deriveTuples — the cloud driver's shapes, from the row", () => {
179
176
  ]);
180
177
  expect(
181
178
  derivedFor("environment", {
182
- visibility: ApiResourceVisibility.visibility_public,
179
+ visibility: ApiResourceVisibility.visibility_platform,
183
180
  }),
184
181
  ).toEqual([
185
182
  "environment:environment-1#organization@organization:acme",
@@ -509,9 +506,6 @@ describe.each(driverFixtures(SEEDED_KINDS))(
509
506
  object,
510
507
  "can_view",
511
508
  DAVE,
512
- {
513
- allow: false,
514
- },
515
509
  ),
516
510
  ).toBe(true);
517
511
  expect(rowReads).toBe(1);
@@ -707,7 +701,6 @@ describe.each(driverFixtures(SEEDED_KINDS))(
707
701
  parseObjectRef(object),
708
702
  relation,
709
703
  person,
710
- { allow: true },
711
704
  );
712
705
  }
713
706
 
@@ -1,11 +1,10 @@
1
1
  /**
2
2
  * Pins the evaluator's semantics the store tests cannot express (the
3
3
  * cloud's `.fga.yaml` documents prove the model's answers; this file
4
- * proves the machinery under them): how a person matches a tuple, what
5
- * the `allow_public` context does, that a direct tuple outside the line's
6
- * type restriction is ignored (model drift fails closed), how far a
7
- * resolution may walk, and that a declaration cycle or an undeclared
8
- * target is a thrown fault and never a silent deny.
4
+ * proves the machinery under them): how a person matches a tuple, that a
5
+ * direct tuple outside the line's type restriction is ignored (model drift
6
+ * fails closed), how far a resolution may walk, and that a declaration
7
+ * cycle or an undeclared target is a thrown fault and never a silent deny.
9
8
  *
10
9
  * The fixture source is the in-memory one the store-test kit uses, so the
11
10
  * two proofs share one tuple vocabulary. Where a case needs a shape the
@@ -30,7 +29,6 @@ import {
30
29
  direct,
31
30
  from,
32
31
  objectOf,
33
- publicWith,
34
32
  union,
35
33
  usersetOf,
36
34
  } from "../model/rewrite.js";
@@ -56,22 +54,17 @@ function person(accountId: string, ...aliases: string[]): Person {
56
54
  return { accountId, aliases: new Set([accountId, ...aliases]) };
57
55
  }
58
56
 
59
- const RESOLVE = { allow: true };
60
- const LIST = { allow: false };
61
-
62
57
  async function allowed(
63
58
  source: TupleSource,
64
59
  object: string,
65
60
  relation: string,
66
61
  who: Person,
67
- context = RESOLVE,
68
62
  ): Promise<boolean> {
69
63
  return checkRelation(
70
64
  { model: builtInModel, source },
71
65
  parseObjectRef(object),
72
66
  relation,
73
67
  who,
74
- context,
75
68
  );
76
69
  }
77
70
 
@@ -100,67 +93,17 @@ describe("a person against a direct tuple", () => {
100
93
  });
101
94
  });
102
95
 
103
- describe("the public wildcard and its condition", () => {
104
- const publicViewer = (object: string): Tuple => ({
105
- object: parseObjectRef(object),
106
- relation: "viewer",
107
- subject: {
108
- form: "wildcard",
109
- type: "identity_account",
110
- condition: "allow_public",
111
- },
112
- });
113
- const source = newInMemoryTupleSource([
114
- tuple("agent:open#organization@organization:acme"),
115
- publicViewer("agent:open"),
116
- ]);
117
- const stranger = person("ida_mallory");
118
-
119
- it("reads for anyone on a point check (the cloud's `allow: true`) and for nobody in a listing (`allow: false`)", async () => {
96
+ describe("a stranger against a row with no grant that names them", () => {
97
+ it("reads nothing: no subject form reaches every account, so a stranger holds no relation on a row they were not granted", async () => {
98
+ const source = newInMemoryTupleSource([
99
+ tuple("agent:open#organization@organization:acme"),
100
+ tuple("agent:open#owner@identity_account:ida_carol"),
101
+ tuple("agent:open#viewer@organization:acme#viewer"),
102
+ ]);
103
+ const stranger = person("ida_mallory");
120
104
  expect(await allowed(source, "agent:open", "can_view", stranger)).toBe(
121
- true,
105
+ false,
122
106
  );
123
- expect(
124
- await allowed(source, "agent:open", "can_view", stranger, LIST),
125
- ).toBe(false);
126
- });
127
-
128
- it("ignores a wildcard tuple that carries no condition where the line demands one — a tuple the cloud could never have written", async () => {
129
- const bare = newInMemoryTupleSource([
130
- tuple("agent:open#viewer@identity_account:*"),
131
- ]);
132
- expect(await allowed(bare, "agent:open", "can_view", stranger)).toBe(false);
133
- });
134
-
135
- it("is a thrown fault under a condition the transcript names but the evaluator does not know — a model that grew a condition", async () => {
136
- const grown = declareKind({
137
- kind: ApiResourceKind.agent,
138
- schema: AgentSchema,
139
- source: "test/grown.fga",
140
- relations: [
141
- ["viewer", direct(publicWith("identity_account", "after_hours"))],
142
- ],
143
- });
144
- const afterHours = newInMemoryTupleSource([
145
- {
146
- object: parseObjectRef("agent:open"),
147
- relation: "viewer",
148
- subject: {
149
- form: "wildcard",
150
- type: "identity_account",
151
- condition: "after_hours",
152
- },
153
- },
154
- ]);
155
- await expect(
156
- checkRelation(
157
- { model: newModel([grown]), source: afterHours },
158
- parseObjectRef("agent:open"),
159
- "viewer",
160
- stranger,
161
- RESOLVE,
162
- ),
163
- ).rejects.toMatchObject({ reason: "unknown-condition" });
164
107
  });
165
108
  });
166
109
 
@@ -277,7 +220,6 @@ describe("the walk itself", () => {
277
220
  parseObjectRef("agent:n0"),
278
221
  "next",
279
222
  person("ida_nobody"),
280
- RESOLVE,
281
223
  ),
282
224
  ).rejects.toMatchObject({ reason: "resolution-depth-exceeded" });
283
225
  });
@@ -298,7 +240,6 @@ describe("the walk itself", () => {
298
240
  parseObjectRef("agent:x"),
299
241
  "a",
300
242
  person("ida_nobody"),
301
- RESOLVE,
302
243
  ),
303
244
  ).rejects.toBeInstanceOf(AuthorizationEvaluationError);
304
245
  });
@@ -332,7 +273,7 @@ describe("declareKind validates a transcript at load", () => {
332
273
  source: "test/bad.fga",
333
274
  relations: [
334
275
  ["viewer", direct(objectOf("identity_account"))],
335
- ["viewer", direct(publicWith("identity_account", "allow_public"))],
276
+ ["viewer", direct(usersetOf("organization", "viewer"))],
336
277
  ],
337
278
  }),
338
279
  ).toThrow("declared twice");
@@ -50,7 +50,7 @@ describe("rowFactsOf against the tuple lifecycle's own resolution", () => {
50
50
  for (const visibility of [
51
51
  ApiResourceVisibility.visibility_private,
52
52
  ApiResourceVisibility.visibility_org,
53
- ApiResourceVisibility.visibility_public,
53
+ ApiResourceVisibility.visibility_platform,
54
54
  ]) {
55
55
  it(`${declaration.type} at ${ApiResourceVisibility[visibility]}: the same parent links and visibility shapes`, () => {
56
56
  const row = fixtureRow(declaration, {
@@ -133,7 +133,7 @@ describe("a list candidate against the loaded row — the facts' two producers",
133
133
  for (const visibility of [
134
134
  ApiResourceVisibility.visibility_private,
135
135
  ApiResourceVisibility.visibility_org,
136
- ApiResourceVisibility.visibility_public,
136
+ ApiResourceVisibility.visibility_platform,
137
137
  ]) {
138
138
  it(`${declaration.type} at ${ApiResourceVisibility[visibility]}: the candidate the helper builds carries the facts the driver derives from`, async () => {
139
139
  const row = fixtureRow(declaration, {
@@ -1,5 +1,5 @@
1
1
  # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/blueprint-private-visibility.fga.yaml
2
- # at commit 2ec420161 (the OpenFGA store test the cloud runs against its live model).
2
+ # as changed by stigmer-cloud#765 (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,7 +14,6 @@
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
18
17
  # PLATFORM platform_viewer@identity_provider:<idp>#platform_user + the ORG tuple
19
18
  #
20
19
  # Read vs spend: an org viewer-role user READS org-visible blueprints (and, at
@@ -23,9 +22,8 @@
23
22
  # can_create_execution_in permissions, which require member-or-guest. The
24
23
  # vera assertions pin both halves of that contract.
25
24
  #
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.
25
+ # The ORG tuple rides along on PLATFORM (the "org floor") so a shared
26
+ # blueprint stays listable in its own org.
29
27
  #
30
28
  # T08 exception: org ADMINS (and org owners, via the role hierarchy) are
31
29
  # composed into blueprint `owner` and therefore see, list, and manage
@@ -39,8 +37,8 @@
39
37
  # Scenario: org "acme" has owner-creator carol, org admin oscar, plain
40
38
  # member dave, and read-only viewer vera (the role SSO auto-provisioning
41
39
  # grants by default); mallory belongs to an unrelated org. Carol authors one
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.
40
+ # blueprint of each kind at PRIVATE, plus an ORG agent and a legacy ORG
41
+ # agent whose tuple still carries the pre-cloud#257 shape.
44
42
  name: blueprint-private-visibility
45
43
  model_file: ../model/fga.mod
46
44
 
@@ -114,22 +112,6 @@ tuples:
114
112
  relation: viewer
115
113
  object: agent:legacy-bot
116
114
 
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
-
133
115
  # --- PRIVATE agent with an explicit individual viewer grant ---
134
116
  - user: organization:acme
135
117
  relation: organization
@@ -146,8 +128,6 @@ tests:
146
128
  check:
147
129
  - user: identity_account:dave
148
130
  object: agent:secret-bot
149
- context:
150
- allow: false
151
131
  assertions:
152
132
  can_view: false
153
133
  can_execute: false
@@ -155,22 +135,16 @@ tests:
155
135
  can_clone: false
156
136
  - user: identity_account:dave
157
137
  object: skill:secret-notes
158
- context:
159
- allow: false
160
138
  assertions:
161
139
  can_view: false
162
140
  can_use: false
163
141
  - user: identity_account:dave
164
142
  object: workflow:secret-flow
165
- context:
166
- allow: false
167
143
  assertions:
168
144
  can_view: false
169
145
  can_execute: false
170
146
  - user: identity_account:dave
171
147
  object: mcp_server:secret-tools
172
- context:
173
- allow: false
174
148
  assertions:
175
149
  can_view: false
176
150
  can_use: false
@@ -180,8 +154,6 @@ tests:
180
154
  check:
181
155
  - user: identity_account:oscar
182
156
  object: agent:secret-bot
183
- context:
184
- allow: false
185
157
  assertions:
186
158
  can_view: true
187
159
  can_edit: true
@@ -189,15 +161,11 @@ tests:
189
161
  can_execute: true
190
162
  - user: identity_account:oscar
191
163
  object: skill:secret-notes
192
- context:
193
- allow: false
194
164
  assertions:
195
165
  can_view: true
196
166
  can_edit: true
197
167
  - user: identity_account:oscar
198
168
  object: workflow:secret-flow
199
- context:
200
- allow: false
201
169
  assertions:
202
170
  can_view: true
203
171
  can_edit: true
@@ -205,8 +173,6 @@ tests:
205
173
  # four private-blueprint kinds are pinned to the same rule.
206
174
  - user: identity_account:oscar
207
175
  object: mcp_server:secret-tools
208
- context:
209
- allow: false
210
176
  assertions:
211
177
  can_view: true
212
178
  can_edit: true
@@ -215,22 +181,17 @@ tests:
215
181
  list_objects:
216
182
  - user: identity_account:oscar
217
183
  type: agent
218
- context:
219
- allow: false
220
184
  assertions:
221
185
  can_view:
222
186
  - agent:secret-bot
223
187
  - agent:team-bot
224
188
  - agent:legacy-bot
225
- - agent:open-bot
226
189
  - agent:shared-secret
227
190
 
228
191
  - name: owner retains full access to private blueprints
229
192
  check:
230
193
  - user: identity_account:carol
231
194
  object: agent:secret-bot
232
- context:
233
- allow: false
234
195
  assertions:
235
196
  can_view: true
236
197
  can_execute: true
@@ -239,8 +200,6 @@ tests:
239
200
  can_delete: true
240
201
  - user: identity_account:carol
241
202
  object: workflow:secret-flow
242
- context:
243
- allow: false
244
203
  assertions:
245
204
  can_view: true
246
205
  can_execute: true
@@ -250,8 +209,6 @@ tests:
250
209
  check:
251
210
  - user: identity_account:dave
252
211
  object: agent:team-bot
253
- context:
254
- allow: false
255
212
  assertions:
256
213
  can_view: true
257
214
  can_execute: true
@@ -260,33 +217,10 @@ tests:
260
217
  can_delete: false
261
218
  - user: identity_account:mallory
262
219
  object: agent:team-bot
263
- context:
264
- allow: false
265
220
  assertions:
266
221
  can_view: false
267
222
  can_execute: false
268
223
 
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
-
290
224
  - name: explicit individual viewer grant on a private agent conveys view and run
291
225
  check:
292
226
  # Run-what-you-can-read: can_execute derives from viewer, so an
@@ -294,38 +228,30 @@ tests:
294
228
  # which checks can_view).
295
229
  - user: identity_account:dave
296
230
  object: agent:shared-secret
297
- context:
298
- allow: false
299
231
  assertions:
300
232
  can_view: true
301
233
  can_execute: true
302
234
  can_edit: false
303
235
 
304
- - name: org member's listable agents exclude private ones (wildcard suppressed)
236
+ - name: org member's listable agents exclude private ones
305
237
  list_objects:
306
238
  - user: identity_account:dave
307
239
  type: agent
308
- context:
309
- allow: false
310
240
  assertions:
311
241
  can_view:
312
242
  - agent:team-bot
313
243
  - agent:legacy-bot
314
- - agent:open-bot
315
244
  - agent:shared-secret
316
245
 
317
246
  - name: owner's listable agents include everything they authored
318
247
  list_objects:
319
248
  - user: identity_account:carol
320
249
  type: agent
321
- context:
322
- allow: false
323
250
  assertions:
324
251
  can_view:
325
252
  - agent:secret-bot
326
253
  - agent:team-bot
327
254
  - agent:legacy-bot
328
- - agent:open-bot
329
255
  - agent:shared-secret
330
256
 
331
257
  # ── cloud#257: the viewer-role cell (previously untested) ──────────────
@@ -336,27 +262,16 @@ tests:
336
262
  # spend refusal is pinned separately on the org permissions below.
337
263
  - user: identity_account:vera
338
264
  object: agent:team-bot
339
- context:
340
- allow: false
341
265
  assertions:
342
266
  can_view: true
343
267
  can_clone: true
344
268
  can_execute: true
345
269
  can_edit: false
346
270
  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
354
271
  # Private stays private — the viewer role grants nothing beyond the
355
272
  # explicit visibility tuples.
356
273
  - user: identity_account:vera
357
274
  object: agent:secret-bot
358
- context:
359
- allow: false
360
275
  assertions:
361
276
  can_view: false
362
277
  can_execute: false
@@ -382,8 +297,6 @@ tests:
382
297
  check:
383
298
  - user: identity_account:dave
384
299
  object: agent:legacy-bot
385
- context:
386
- allow: false
387
300
  assertions:
388
301
  can_view: true
389
302
  can_execute: true
@@ -392,8 +305,6 @@ tests:
392
305
  # organization#member. The boot backfill converges these tuples.
393
306
  - user: identity_account:vera
394
307
  object: agent:legacy-bot
395
- context:
396
- allow: false
397
308
  assertions:
398
309
  can_view: false
399
310
  can_execute: false
@@ -402,9 +313,6 @@ tests:
402
313
  list_objects:
403
314
  - user: identity_account:vera
404
315
  type: agent
405
- context:
406
- allow: false
407
316
  assertions:
408
317
  can_view:
409
318
  - agent:team-bot
410
- - agent:open-bot
@@ -1,5 +1,5 @@
1
1
  # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/default-instance-inheritance.fga.yaml
2
- # at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
2
+ # as changed by stigmer-cloud#765 (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 default-instance structural inheritance (default_of).
@@ -7,8 +7,8 @@
7
7
  # A blueprint's system-managed default instance carries a single
8
8
  # instance#default_of@<blueprint>:<id>
9
9
  # tuple and inherits the blueprint's ENTIRE viewer set through
10
- # `viewer from default_of` — org members, public users (allow_public), and
11
- # platform users (identity_provider#platform_user). No enum-derived
10
+ # `viewer from default_of` — org members and platform users
11
+ # (identity_provider#platform_user). No enum-derived
12
12
  # visibility tuples are ever written on default instances, so their access
13
13
  # can never drift from the template's.
14
14
  #
@@ -20,8 +20,7 @@
20
20
  # visibility level; each has a default instance linked via default_of.
21
21
  # Alice (acme member) reaches default instances of platform-shared
22
22
  # blueprints; planton members reach default instances of org-visible ones;
23
- # everyone reaches default instances of public ones; personal instances
24
- # never leak.
23
+ # personal instances never leak.
25
24
  name: default-instance-inheritance
26
25
  model_file: ../model/fga.mod
27
26
 
@@ -115,35 +114,6 @@ tuples:
115
114
  relation: default_of
116
115
  object: agent_instance:internal-default
117
116
 
118
- # --- Public agent + its default instance ---
119
- # PUBLIC carries the org floor tuple too (viewer@org#viewer).
120
- - user: organization:planton
121
- relation: organization
122
- object: agent:public-bot
123
- - user: identity_account:swarup
124
- relation: owner
125
- object: agent:public-bot
126
- - user: identity_account:*
127
- relation: viewer
128
- object: agent:public-bot
129
- condition:
130
- name: allow_public
131
- - user: organization:planton#viewer
132
- relation: viewer
133
- object: agent:public-bot
134
- - user: organization:planton
135
- relation: organization
136
- object: agent_instance:public-bot-default
137
- - user: agent:public-bot
138
- relation: agent
139
- object: agent_instance:public-bot-default
140
- - user: identity_account:swarup
141
- relation: owner
142
- object: agent_instance:public-bot-default
143
- - user: agent:public-bot
144
- relation: default_of
145
- object: agent_instance:public-bot-default
146
-
147
117
  # --- Platform-shared workflow + its default instance ---
148
118
  - user: organization:planton
149
119
  relation: organization
@@ -175,8 +145,6 @@ tests:
175
145
  check:
176
146
  - user: identity_account:alice
177
147
  object: agent_instance:sara-default
178
- context:
179
- allow: false
180
148
  assertions:
181
149
  can_view: true
182
150
  can_execute: true
@@ -187,8 +155,6 @@ tests:
187
155
  check:
188
156
  - user: identity_account:mallory
189
157
  object: agent_instance:sara-default
190
- context:
191
- allow: false
192
158
  assertions:
193
159
  can_view: false
194
160
  can_execute: false
@@ -199,14 +165,10 @@ tests:
199
165
  # default_of tuple — only she (its owner) can reach it.
200
166
  - user: identity_account:swarup
201
167
  object: agent_instance:alice-personal
202
- context:
203
- allow: false
204
168
  assertions:
205
169
  can_view: false
206
170
  - user: identity_account:alice
207
171
  object: agent_instance:alice-personal
208
- context:
209
- allow: false
210
172
  assertions:
211
173
  can_view: true
212
174
  can_edit: true
@@ -215,8 +177,6 @@ tests:
215
177
  check:
216
178
  - user: identity_account:priya
217
179
  object: agent_instance:internal-default
218
- context:
219
- allow: false
220
180
  assertions:
221
181
  can_view: true
222
182
  can_execute: true
@@ -226,34 +186,19 @@ tests:
226
186
  # read audience, and the default instance inherits it structurally.
227
187
  - user: identity_account:veda
228
188
  object: agent_instance:internal-default
229
- context:
230
- allow: false
231
189
  assertions:
232
190
  can_view: true
233
191
  can_edit: false
234
192
  # Managed-org membership grants nothing on non-platform-shared agents.
235
193
  - user: identity_account:alice
236
194
  object: agent_instance:internal-default
237
- context:
238
- allow: false
239
195
  assertions:
240
196
  can_view: false
241
197
 
242
- - name: everyone reaches the default instance of a public agent
243
- check:
244
- - user: identity_account:mallory
245
- object: agent_instance:public-bot-default
246
- context:
247
- allow: true
248
- assertions:
249
- can_view: true
250
-
251
198
  - name: managed-org member reaches the default instance of a platform-shared workflow
252
199
  check:
253
200
  - user: identity_account:alice
254
201
  object: workflow_instance:onboarding-default
255
- context:
256
- allow: false
257
202
  assertions:
258
203
  can_view: true
259
204
  can_execute: true
@@ -263,8 +208,6 @@ tests:
263
208
  list_objects:
264
209
  - user: identity_account:alice
265
210
  type: agent_instance
266
- context:
267
- allow: false
268
211
  assertions:
269
212
  can_view:
270
213
  - agent_instance:sara-default