@stigmer/server 3.15.3-dev.20260914100347 → 3.15.3-dev.20260916211208

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/README.md +3 -3
  2. package/dist/archive/content-store.d.ts +35 -0
  3. package/dist/archive/content-store.d.ts.map +1 -0
  4. package/dist/archive/content-store.js +98 -0
  5. package/dist/archive/content-store.js.map +1 -0
  6. package/dist/archive/inflate.d.ts +22 -0
  7. package/dist/archive/inflate.d.ts.map +1 -0
  8. package/dist/archive/inflate.js +75 -0
  9. package/dist/archive/inflate.js.map +1 -0
  10. package/dist/archive/limits.d.ts +33 -0
  11. package/dist/archive/limits.d.ts.map +1 -0
  12. package/dist/archive/limits.js +31 -0
  13. package/dist/archive/limits.js.map +1 -0
  14. package/dist/archive/open.d.ts +24 -0
  15. package/dist/archive/open.d.ts.map +1 -0
  16. package/dist/archive/open.js +93 -0
  17. package/dist/archive/open.js.map +1 -0
  18. package/dist/{domain/skill/storage → archive}/prefilter.d.ts +5 -0
  19. package/dist/archive/prefilter.d.ts.map +1 -0
  20. package/dist/archive/prefilter.js.map +1 -0
  21. package/dist/archive/write.d.ts +8 -0
  22. package/dist/archive/write.d.ts.map +1 -0
  23. package/dist/archive/write.js +44 -0
  24. package/dist/archive/write.js.map +1 -0
  25. package/dist/authorization/authorizer.d.ts +98 -0
  26. package/dist/authorization/authorizer.d.ts.map +1 -0
  27. package/dist/authorization/authorizer.js +156 -0
  28. package/dist/authorization/authorizer.js.map +1 -0
  29. package/dist/authorization/derived-tuples.d.ts +42 -0
  30. package/dist/authorization/derived-tuples.d.ts.map +1 -0
  31. package/dist/authorization/derived-tuples.js +240 -0
  32. package/dist/authorization/derived-tuples.js.map +1 -0
  33. package/dist/authorization/evaluator.d.ts +66 -0
  34. package/dist/authorization/evaluator.d.ts.map +1 -0
  35. package/dist/authorization/evaluator.js +153 -0
  36. package/dist/authorization/evaluator.js.map +1 -0
  37. package/dist/authorization/facts.d.ts +29 -0
  38. package/dist/authorization/facts.d.ts.map +1 -0
  39. package/dist/authorization/facts.js +17 -0
  40. package/dist/authorization/facts.js.map +1 -0
  41. package/dist/authorization/list-read-scope.d.ts +18 -0
  42. package/dist/authorization/list-read-scope.d.ts.map +1 -0
  43. package/dist/authorization/list-read-scope.js +155 -0
  44. package/dist/authorization/list-read-scope.js.map +1 -0
  45. package/dist/authorization/model/agent.d.ts +2 -0
  46. package/dist/authorization/model/agent.d.ts.map +1 -0
  47. package/dist/authorization/model/agent.js +42 -0
  48. package/dist/authorization/model/agent.js.map +1 -0
  49. package/dist/authorization/model/agent_channel.d.ts +2 -0
  50. package/dist/authorization/model/agent_channel.d.ts.map +1 -0
  51. package/dist/authorization/model/agent_channel.js +38 -0
  52. package/dist/authorization/model/agent_channel.js.map +1 -0
  53. package/dist/authorization/model/agent_execution.d.ts +2 -0
  54. package/dist/authorization/model/agent_execution.d.ts.map +1 -0
  55. package/dist/authorization/model/agent_execution.js +25 -0
  56. package/dist/authorization/model/agent_execution.js.map +1 -0
  57. package/dist/authorization/model/agent_instance.d.ts +2 -0
  58. package/dist/authorization/model/agent_instance.d.ts.map +1 -0
  59. package/dist/authorization/model/agent_instance.js +47 -0
  60. package/dist/authorization/model/agent_instance.js.map +1 -0
  61. package/dist/authorization/model/agent_share.d.ts +2 -0
  62. package/dist/authorization/model/agent_share.d.ts.map +1 -0
  63. package/dist/authorization/model/agent_share.js +29 -0
  64. package/dist/authorization/model/agent_share.js.map +1 -0
  65. package/dist/authorization/model/api_key.d.ts +2 -0
  66. package/dist/authorization/model/api_key.d.ts.map +1 -0
  67. package/dist/authorization/model/api_key.js +27 -0
  68. package/dist/authorization/model/api_key.js.map +1 -0
  69. package/dist/authorization/model/artifact.d.ts +2 -0
  70. package/dist/authorization/model/artifact.d.ts.map +1 -0
  71. package/dist/authorization/model/artifact.js +27 -0
  72. package/dist/authorization/model/artifact.js.map +1 -0
  73. package/dist/authorization/model/channel_app.d.ts +2 -0
  74. package/dist/authorization/model/channel_app.d.ts.map +1 -0
  75. package/dist/authorization/model/channel_app.js +28 -0
  76. package/dist/authorization/model/channel_app.js.map +1 -0
  77. package/dist/authorization/model/default-of.d.ts +38 -0
  78. package/dist/authorization/model/default-of.d.ts.map +1 -0
  79. package/dist/authorization/model/default-of.js +39 -0
  80. package/dist/authorization/model/default-of.js.map +1 -0
  81. package/dist/authorization/model/environment.d.ts +2 -0
  82. package/dist/authorization/model/environment.d.ts.map +1 -0
  83. package/dist/authorization/model/environment.js +33 -0
  84. package/dist/authorization/model/environment.js.map +1 -0
  85. package/dist/authorization/model/execution_context.d.ts +2 -0
  86. package/dist/authorization/model/execution_context.d.ts.map +1 -0
  87. package/dist/authorization/model/execution_context.js +19 -0
  88. package/dist/authorization/model/execution_context.js.map +1 -0
  89. package/dist/authorization/model/iam_policy.d.ts +2 -0
  90. package/dist/authorization/model/iam_policy.d.ts.map +1 -0
  91. package/dist/authorization/model/iam_policy.js +31 -0
  92. package/dist/authorization/model/iam_policy.js.map +1 -0
  93. package/dist/authorization/model/identity_account.d.ts +2 -0
  94. package/dist/authorization/model/identity_account.d.ts.map +1 -0
  95. package/dist/authorization/model/identity_account.js +25 -0
  96. package/dist/authorization/model/identity_account.js.map +1 -0
  97. package/dist/authorization/model/index.d.ts +36 -0
  98. package/dist/authorization/model/index.d.ts.map +1 -0
  99. package/dist/authorization/model/index.js +72 -0
  100. package/dist/authorization/model/index.js.map +1 -0
  101. package/dist/authorization/model/mcp_server.d.ts +2 -0
  102. package/dist/authorization/model/mcp_server.d.ts.map +1 -0
  103. package/dist/authorization/model/mcp_server.js +37 -0
  104. package/dist/authorization/model/mcp_server.js.map +1 -0
  105. package/dist/authorization/model/memory.d.ts +2 -0
  106. package/dist/authorization/model/memory.d.ts.map +1 -0
  107. package/dist/authorization/model/memory.js +26 -0
  108. package/dist/authorization/model/memory.js.map +1 -0
  109. package/dist/authorization/model/oauth_app.d.ts +2 -0
  110. package/dist/authorization/model/oauth_app.d.ts.map +1 -0
  111. package/dist/authorization/model/oauth_app.js +30 -0
  112. package/dist/authorization/model/oauth_app.js.map +1 -0
  113. package/dist/authorization/model/organization.d.ts +2 -0
  114. package/dist/authorization/model/organization.d.ts.map +1 -0
  115. package/dist/authorization/model/organization.js +54 -0
  116. package/dist/authorization/model/organization.js.map +1 -0
  117. package/dist/authorization/model/plugin.d.ts +2 -0
  118. package/dist/authorization/model/plugin.d.ts.map +1 -0
  119. package/dist/authorization/model/plugin.js +44 -0
  120. package/dist/authorization/model/plugin.js.map +1 -0
  121. package/dist/authorization/model/project.d.ts +2 -0
  122. package/dist/authorization/model/project.d.ts.map +1 -0
  123. package/dist/authorization/model/project.js +32 -0
  124. package/dist/authorization/model/project.js.map +1 -0
  125. package/dist/authorization/model/rewrite.d.ts +127 -0
  126. package/dist/authorization/model/rewrite.d.ts.map +1 -0
  127. package/dist/authorization/model/rewrite.js +82 -0
  128. package/dist/authorization/model/rewrite.js.map +1 -0
  129. package/dist/authorization/model/schedule.d.ts +2 -0
  130. package/dist/authorization/model/schedule.d.ts.map +1 -0
  131. package/dist/authorization/model/schedule.js +29 -0
  132. package/dist/authorization/model/schedule.js.map +1 -0
  133. package/dist/authorization/model/session.d.ts +2 -0
  134. package/dist/authorization/model/session.d.ts.map +1 -0
  135. package/dist/authorization/model/session.js +38 -0
  136. package/dist/authorization/model/session.js.map +1 -0
  137. package/dist/authorization/model/skill.d.ts +2 -0
  138. package/dist/authorization/model/skill.d.ts.map +1 -0
  139. package/dist/authorization/model/skill.js +38 -0
  140. package/dist/authorization/model/skill.js.map +1 -0
  141. package/dist/authorization/model/workflow.d.ts +2 -0
  142. package/dist/authorization/model/workflow.d.ts.map +1 -0
  143. package/dist/authorization/model/workflow.js +38 -0
  144. package/dist/authorization/model/workflow.js.map +1 -0
  145. package/dist/authorization/model/workflow_execution.d.ts +2 -0
  146. package/dist/authorization/model/workflow_execution.d.ts.map +1 -0
  147. package/dist/authorization/model/workflow_execution.js +32 -0
  148. package/dist/authorization/model/workflow_execution.js.map +1 -0
  149. package/dist/authorization/model/workflow_instance.d.ts +2 -0
  150. package/dist/authorization/model/workflow_instance.d.ts.map +1 -0
  151. package/dist/authorization/model/workflow_instance.js +92 -0
  152. package/dist/authorization/model/workflow_instance.js.map +1 -0
  153. package/dist/authorization/organization-directory.d.ts +13 -0
  154. package/dist/authorization/organization-directory.d.ts.map +1 -0
  155. package/dist/authorization/organization-directory.js +83 -0
  156. package/dist/authorization/organization-directory.js.map +1 -0
  157. package/dist/authorization/person.d.ts +42 -0
  158. package/dist/authorization/person.d.ts.map +1 -0
  159. package/dist/authorization/person.js +19 -0
  160. package/dist/authorization/person.js.map +1 -0
  161. package/dist/authorization/posture.d.ts +38 -0
  162. package/dist/authorization/posture.d.ts.map +1 -0
  163. package/dist/authorization/posture.js +7 -0
  164. package/dist/authorization/posture.js.map +1 -0
  165. package/dist/authorization/schedule-fire-caller.d.ts +12 -0
  166. package/dist/authorization/schedule-fire-caller.d.ts.map +1 -0
  167. package/dist/authorization/schedule-fire-caller.js +67 -0
  168. package/dist/authorization/schedule-fire-caller.js.map +1 -0
  169. package/dist/authorization/store-test-kit.d.ts +68 -0
  170. package/dist/authorization/store-test-kit.d.ts.map +1 -0
  171. package/dist/authorization/store-test-kit.js +311 -0
  172. package/dist/authorization/store-test-kit.js.map +1 -0
  173. package/dist/authorization/tuples.d.ts +115 -0
  174. package/dist/authorization/tuples.d.ts.map +1 -0
  175. package/dist/authorization/tuples.js +83 -0
  176. package/dist/authorization/tuples.js.map +1 -0
  177. package/dist/boot/compose.d.ts.map +1 -1
  178. package/dist/boot/compose.js +157 -32
  179. package/dist/boot/compose.js.map +1 -1
  180. package/dist/boot/inprocess.d.ts +12 -0
  181. package/dist/boot/inprocess.d.ts.map +1 -1
  182. package/dist/boot/inprocess.js +62 -20
  183. package/dist/boot/inprocess.js.map +1 -1
  184. package/dist/domain/agent/controller.d.ts.map +1 -1
  185. package/dist/domain/agent/controller.js +9 -0
  186. package/dist/domain/agent/controller.js.map +1 -1
  187. package/dist/domain/iampolicy/constants.d.ts +11 -0
  188. package/dist/domain/iampolicy/constants.d.ts.map +1 -1
  189. package/dist/domain/iampolicy/constants.js +11 -0
  190. package/dist/domain/iampolicy/constants.js.map +1 -1
  191. package/dist/domain/iampolicy/membership.d.ts +72 -1
  192. package/dist/domain/iampolicy/membership.d.ts.map +1 -1
  193. package/dist/domain/iampolicy/membership.js +141 -56
  194. package/dist/domain/iampolicy/membership.js.map +1 -1
  195. package/dist/domain/identityaccount/actor.d.ts +26 -0
  196. package/dist/domain/identityaccount/actor.d.ts.map +1 -0
  197. package/dist/domain/identityaccount/actor.js +17 -0
  198. package/dist/domain/identityaccount/actor.js.map +1 -0
  199. package/dist/domain/mcpserver/controller.d.ts.map +1 -1
  200. package/dist/domain/mcpserver/controller.js +9 -0
  201. package/dist/domain/mcpserver/controller.js.map +1 -1
  202. package/dist/domain/plugin/archive.d.ts +37 -0
  203. package/dist/domain/plugin/archive.d.ts.map +1 -0
  204. package/dist/domain/plugin/archive.js +50 -0
  205. package/dist/domain/plugin/archive.js.map +1 -0
  206. package/dist/domain/plugin/constants.d.ts +38 -0
  207. package/dist/domain/plugin/constants.d.ts.map +1 -0
  208. package/dist/domain/plugin/constants.js +46 -0
  209. package/dist/domain/plugin/constants.js.map +1 -0
  210. package/dist/domain/plugin/controller.d.ts +25 -0
  211. package/dist/domain/plugin/controller.d.ts.map +1 -0
  212. package/dist/domain/plugin/controller.js +493 -0
  213. package/dist/domain/plugin/controller.js.map +1 -0
  214. package/dist/domain/plugin/materialize/agent.d.ts +13 -0
  215. package/dist/domain/plugin/materialize/agent.d.ts.map +1 -0
  216. package/dist/domain/plugin/materialize/agent.js +128 -0
  217. package/dist/domain/plugin/materialize/agent.js.map +1 -0
  218. package/dist/domain/plugin/materialize/default-agent-instructions.d.ts +22 -0
  219. package/dist/domain/plugin/materialize/default-agent-instructions.d.ts.map +1 -0
  220. package/dist/domain/plugin/materialize/default-agent-instructions.js +31 -0
  221. package/dist/domain/plugin/materialize/default-agent-instructions.js.map +1 -0
  222. package/dist/domain/plugin/materialize/identity.d.ts +28 -0
  223. package/dist/domain/plugin/materialize/identity.d.ts.map +1 -0
  224. package/dist/domain/plugin/materialize/identity.js +40 -0
  225. package/dist/domain/plugin/materialize/identity.js.map +1 -0
  226. package/dist/domain/plugin/materialize/mcp-servers.d.ts +15 -0
  227. package/dist/domain/plugin/materialize/mcp-servers.d.ts.map +1 -0
  228. package/dist/domain/plugin/materialize/mcp-servers.js +131 -0
  229. package/dist/domain/plugin/materialize/mcp-servers.js.map +1 -0
  230. package/dist/domain/plugin/materialize/plan.d.ts +24 -0
  231. package/dist/domain/plugin/materialize/plan.d.ts.map +1 -0
  232. package/dist/domain/plugin/materialize/plan.js +77 -0
  233. package/dist/domain/plugin/materialize/plan.js.map +1 -0
  234. package/dist/domain/plugin/materialize/ports.d.ts +42 -0
  235. package/dist/domain/plugin/materialize/ports.d.ts.map +1 -0
  236. package/dist/domain/plugin/materialize/ports.js +2 -0
  237. package/dist/domain/plugin/materialize/ports.js.map +1 -0
  238. package/dist/domain/plugin/materialize/skills.d.ts +12 -0
  239. package/dist/domain/plugin/materialize/skills.d.ts.map +1 -0
  240. package/dist/domain/plugin/materialize/skills.js +44 -0
  241. package/dist/domain/plugin/materialize/skills.js.map +1 -0
  242. package/dist/domain/plugin/materialize/workflows.d.ts +15 -0
  243. package/dist/domain/plugin/materialize/workflows.d.ts.map +1 -0
  244. package/dist/domain/plugin/materialize/workflows.js +31 -0
  245. package/dist/domain/plugin/materialize/workflows.js.map +1 -0
  246. package/dist/domain/plugin/members.d.ts +42 -0
  247. package/dist/domain/plugin/members.d.ts.map +1 -0
  248. package/dist/domain/plugin/members.js +97 -0
  249. package/dist/domain/plugin/members.js.map +1 -0
  250. package/dist/domain/plugin/overlay/documents.d.ts +31 -0
  251. package/dist/domain/plugin/overlay/documents.d.ts.map +1 -0
  252. package/dist/domain/plugin/overlay/documents.js +38 -0
  253. package/dist/domain/plugin/overlay/documents.js.map +1 -0
  254. package/dist/domain/plugin/overlay/parse.d.ts +16 -0
  255. package/dist/domain/plugin/overlay/parse.d.ts.map +1 -0
  256. package/dist/domain/plugin/overlay/parse.js +79 -0
  257. package/dist/domain/plugin/overlay/parse.js.map +1 -0
  258. package/dist/domain/plugin/overlay/sanitize.d.ts +10 -0
  259. package/dist/domain/plugin/overlay/sanitize.d.ts.map +1 -0
  260. package/dist/domain/plugin/overlay/sanitize.js +101 -0
  261. package/dist/domain/plugin/overlay/sanitize.js.map +1 -0
  262. package/dist/domain/plugin/push.d.ts +133 -0
  263. package/dist/domain/plugin/push.d.ts.map +1 -0
  264. package/dist/domain/plugin/push.js +800 -0
  265. package/dist/domain/plugin/push.js.map +1 -0
  266. package/dist/domain/plugin/search-extractor.d.ts +3 -0
  267. package/dist/domain/plugin/search-extractor.d.ts.map +1 -0
  268. package/dist/domain/plugin/search-extractor.js +41 -0
  269. package/dist/domain/plugin/search-extractor.js.map +1 -0
  270. package/dist/domain/skill/constants.d.ts +6 -11
  271. package/dist/domain/skill/constants.d.ts.map +1 -1
  272. package/dist/domain/skill/constants.js +6 -11
  273. package/dist/domain/skill/constants.js.map +1 -1
  274. package/dist/domain/skill/controller.d.ts.map +1 -1
  275. package/dist/domain/skill/controller.js +33 -30
  276. package/dist/domain/skill/controller.js.map +1 -1
  277. package/dist/domain/skill/push.d.ts +9 -10
  278. package/dist/domain/skill/push.d.ts.map +1 -1
  279. package/dist/domain/skill/push.js +53 -122
  280. package/dist/domain/skill/push.js.map +1 -1
  281. package/dist/domain/skill/search-extractor.d.ts.map +1 -1
  282. package/dist/domain/skill/search-extractor.js.map +1 -1
  283. package/dist/domain/skill/storage/artifact-storage.d.ts +26 -29
  284. package/dist/domain/skill/storage/artifact-storage.d.ts.map +1 -1
  285. package/dist/domain/skill/storage/artifact-storage.js +6 -103
  286. package/dist/domain/skill/storage/artifact-storage.js.map +1 -1
  287. package/dist/domain/skill/storage/zip-gate.d.ts +1 -2
  288. package/dist/domain/skill/storage/zip-gate.d.ts.map +1 -1
  289. package/dist/domain/skill/storage/zip-gate.js +56 -126
  290. package/dist/domain/skill/storage/zip-gate.js.map +1 -1
  291. package/dist/domain/skill/version-resolution.d.ts +5 -5
  292. package/dist/domain/skill/version-resolution.d.ts.map +1 -1
  293. package/dist/domain/skill/version-resolution.js +34 -216
  294. package/dist/domain/skill/version-resolution.js.map +1 -1
  295. package/dist/domain/workflow/controller.d.ts.map +1 -1
  296. package/dist/domain/workflow/controller.js +30 -3
  297. package/dist/domain/workflow/controller.js.map +1 -1
  298. package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -0
  299. package/dist/extensions/authorizer.d.ts +10 -5
  300. package/dist/extensions/authorizer.d.ts.map +1 -1
  301. package/dist/extensions/drivers.d.ts +4 -1
  302. package/dist/extensions/drivers.d.ts.map +1 -1
  303. package/dist/extensions/list-read-scope.d.ts +75 -11
  304. package/dist/extensions/list-read-scope.d.ts.map +1 -1
  305. package/dist/extensions/list-read-scope.js +40 -7
  306. package/dist/extensions/list-read-scope.js.map +1 -1
  307. package/dist/extensions/organization-directory.d.ts +13 -9
  308. package/dist/extensions/organization-directory.d.ts.map +1 -1
  309. package/dist/extensions/organization-directory.js.map +1 -1
  310. package/dist/extensions/resource-authorization.d.ts +33 -0
  311. package/dist/extensions/resource-authorization.d.ts.map +1 -1
  312. package/dist/extensions/schedule-fire-caller.d.ts +45 -18
  313. package/dist/extensions/schedule-fire-caller.d.ts.map +1 -1
  314. package/dist/extensions/schedule-fire-caller.js +12 -1
  315. package/dist/extensions/schedule-fire-caller.js.map +1 -1
  316. package/dist/index.d.ts +10 -0
  317. package/dist/index.d.ts.map +1 -1
  318. package/dist/index.js +8 -0
  319. package/dist/index.js.map +1 -1
  320. package/dist/pipeline/apiresource-labels.d.ts +23 -3
  321. package/dist/pipeline/apiresource-labels.d.ts.map +1 -1
  322. package/dist/pipeline/apiresource-labels.js +20 -0
  323. package/dist/pipeline/apiresource-labels.js.map +1 -1
  324. package/dist/pipeline/apiresource-meta.d.ts +21 -0
  325. package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
  326. package/dist/pipeline/apiresource-meta.js +28 -0
  327. package/dist/pipeline/apiresource-meta.js.map +1 -1
  328. package/dist/pipeline/errors.d.ts.map +1 -1
  329. package/dist/pipeline/errors.js.map +1 -1
  330. package/dist/pipeline/steps/authorization-facts.d.ts +12 -0
  331. package/dist/pipeline/steps/authorization-facts.d.ts.map +1 -0
  332. package/dist/pipeline/steps/authorization-facts.js +100 -0
  333. package/dist/pipeline/steps/authorization-facts.js.map +1 -0
  334. package/dist/pipeline/steps/authorization-tuples.d.ts.map +1 -1
  335. package/dist/pipeline/steps/authorization-tuples.js +7 -26
  336. package/dist/pipeline/steps/authorization-tuples.js.map +1 -1
  337. package/dist/pipeline/steps/delete.d.ts.map +1 -1
  338. package/dist/pipeline/steps/delete.js +1 -1
  339. package/dist/pipeline/steps/delete.js.map +1 -1
  340. package/dist/pipeline/steps/duplicate.d.ts.map +1 -1
  341. package/dist/pipeline/steps/duplicate.js.map +1 -1
  342. package/dist/pipeline/steps/guard-plugin-managed.d.ts +12 -0
  343. package/dist/pipeline/steps/guard-plugin-managed.d.ts.map +1 -0
  344. package/dist/pipeline/steps/guard-plugin-managed.js +96 -0
  345. package/dist/pipeline/steps/guard-plugin-managed.js.map +1 -0
  346. package/dist/pipeline/steps/guard-reserved-labels.d.ts +16 -2
  347. package/dist/pipeline/steps/guard-reserved-labels.d.ts.map +1 -1
  348. package/dist/pipeline/steps/guard-reserved-labels.js +11 -7
  349. package/dist/pipeline/steps/guard-reserved-labels.js.map +1 -1
  350. package/dist/pipeline/steps/helpers.d.ts.map +1 -1
  351. package/dist/pipeline/steps/helpers.js.map +1 -1
  352. package/dist/pipeline/steps/index-search.d.ts.map +1 -1
  353. package/dist/pipeline/steps/index-search.js.map +1 -1
  354. package/dist/pipeline/steps/load-existing.d.ts.map +1 -1
  355. package/dist/pipeline/steps/load-existing.js +1 -1
  356. package/dist/pipeline/steps/load-existing.js.map +1 -1
  357. package/dist/pipeline/steps/references.d.ts +16 -0
  358. package/dist/pipeline/steps/references.d.ts.map +1 -1
  359. package/dist/pipeline/steps/references.js +18 -0
  360. package/dist/pipeline/steps/references.js.map +1 -1
  361. package/dist/pipeline/steps/resolve-artifact-source.d.ts +35 -0
  362. package/dist/pipeline/steps/resolve-artifact-source.d.ts.map +1 -0
  363. package/dist/pipeline/steps/resolve-artifact-source.js +27 -0
  364. package/dist/pipeline/steps/resolve-artifact-source.js.map +1 -0
  365. package/dist/pipeline/steps/server-stamped-reserved-labels.d.ts.map +1 -1
  366. package/dist/pipeline/steps/server-stamped-reserved-labels.js.map +1 -1
  367. package/dist/pipeline/steps/shapes.d.ts +18 -0
  368. package/dist/pipeline/steps/shapes.d.ts.map +1 -1
  369. package/dist/pipeline/steps/shapes.js +29 -0
  370. package/dist/pipeline/steps/shapes.js.map +1 -1
  371. package/dist/pipeline/steps/slug.d.ts.map +1 -1
  372. package/dist/pipeline/steps/slug.js.map +1 -1
  373. package/dist/pipeline/steps/validate-visibility.d.ts +9 -0
  374. package/dist/pipeline/steps/validate-visibility.d.ts.map +1 -1
  375. package/dist/pipeline/steps/validate-visibility.js +6 -1
  376. package/dist/pipeline/steps/validate-visibility.js.map +1 -1
  377. package/dist/pipeline/steps/validation.d.ts.map +1 -1
  378. package/dist/pipeline/steps/validation.js.map +1 -1
  379. package/dist/pipeline/steps/version-archive.d.ts +63 -0
  380. package/dist/pipeline/steps/version-archive.d.ts.map +1 -0
  381. package/dist/pipeline/steps/version-archive.js +129 -0
  382. package/dist/pipeline/steps/version-archive.js.map +1 -0
  383. package/dist/pipeline/steps/version-history.d.ts +49 -0
  384. package/dist/pipeline/steps/version-history.d.ts.map +1 -0
  385. package/dist/pipeline/steps/version-history.js +229 -0
  386. package/dist/pipeline/steps/version-history.js.map +1 -0
  387. package/dist/pipeline/steps/visibility-gates.d.ts +8 -0
  388. package/dist/pipeline/steps/visibility-gates.d.ts.map +1 -1
  389. package/dist/pipeline/steps/visibility-gates.js +7 -2
  390. package/dist/pipeline/steps/visibility-gates.js.map +1 -1
  391. package/dist/query/search/registry.d.ts.map +1 -1
  392. package/dist/query/search/registry.js +2 -0
  393. package/dist/query/search/registry.js.map +1 -1
  394. package/dist/temporal/schedule/run-starter.d.ts +1 -1
  395. package/dist/temporal/schedule/run-starter.d.ts.map +1 -1
  396. package/dist/temporal/schedule/run-starter.js +14 -1
  397. package/dist/temporal/schedule/run-starter.js.map +1 -1
  398. package/package.json +5 -4
  399. package/src/archive/__tests__/archive.test.ts +233 -0
  400. package/src/{domain/skill → archive}/__tests__/prefilter.test.ts +1 -1
  401. package/src/archive/content-store.ts +132 -0
  402. package/src/archive/inflate.ts +107 -0
  403. package/src/archive/limits.ts +42 -0
  404. package/src/archive/open.ts +131 -0
  405. package/src/{domain/skill/storage → archive}/prefilter.ts +5 -0
  406. package/src/archive/write.ts +54 -0
  407. package/src/authorization/README.md +124 -0
  408. package/src/authorization/__tests__/authorizer.test.ts +719 -0
  409. package/src/authorization/__tests__/derived-tuples.test.ts +802 -0
  410. package/src/authorization/__tests__/drivers.ts +70 -0
  411. package/src/authorization/__tests__/evaluator.test.ts +359 -0
  412. package/src/authorization/__tests__/facts.test.ts +155 -0
  413. package/src/authorization/__tests__/fixtures/fga/agent-channel-owner.fga.yaml +112 -0
  414. package/src/authorization/__tests__/fixtures/fga/agent-share-owner.fga.yaml +109 -0
  415. package/src/authorization/__tests__/fixtures/fga/artifact-org-and-owner.fga.yaml +128 -0
  416. package/src/authorization/__tests__/fixtures/fga/blueprint-private-visibility.fga.yaml +410 -0
  417. package/src/authorization/__tests__/fixtures/fga/channel-app-owner.fga.yaml +125 -0
  418. package/src/authorization/__tests__/fixtures/fga/channel-participation.fga.yaml +201 -0
  419. package/src/authorization/__tests__/fixtures/fga/channel-session-visibility.fga.yaml +187 -0
  420. package/src/authorization/__tests__/fixtures/fga/cross-org-share-creation.fga.yaml +98 -0
  421. package/src/authorization/__tests__/fixtures/fga/default-instance-inheritance.fga.yaml +271 -0
  422. package/src/authorization/__tests__/fixtures/fga/memory-subject-only.fga.yaml +72 -0
  423. package/src/authorization/__tests__/fixtures/fga/org-admin-owner-inheritance.fga.yaml +328 -0
  424. package/src/authorization/__tests__/fixtures/fga/org-shared-environment.fga.yaml +144 -0
  425. package/src/authorization/__tests__/fixtures/fga/platform-visibility.fga.yaml +223 -0
  426. package/src/authorization/__tests__/fixtures/fga/provider-standing-viewer.fga.yaml +40 -0
  427. package/src/authorization/__tests__/fixtures/fga/public-visibility-setter.fga.yaml +52 -0
  428. package/src/authorization/__tests__/fixtures/fga/reserved-label-writer.fga.yaml +41 -0
  429. package/src/authorization/__tests__/fixtures/fga/schedule-owner.fga.yaml +113 -0
  430. package/src/authorization/__tests__/fixtures/fga/schedule-session-visibility.fga.yaml +214 -0
  431. package/src/authorization/__tests__/fixtures/fga/session-personal-resource.fga.yaml +117 -0
  432. package/src/authorization/__tests__/fixtures/fga/workflow-execution-sharing.fga.yaml +192 -0
  433. package/src/authorization/__tests__/list-read-scope.measure.test.ts +317 -0
  434. package/src/authorization/__tests__/list-read-scope.test.ts +796 -0
  435. package/src/authorization/__tests__/organization-directory.test.ts +236 -0
  436. package/src/authorization/__tests__/person.test.ts +114 -0
  437. package/src/authorization/__tests__/posture.test.ts +25 -0
  438. package/src/authorization/__tests__/schedule-fire-caller.test.ts +134 -0
  439. package/src/authorization/__tests__/store-tests.test.ts +306 -0
  440. package/src/authorization/__tests__/support.ts +101 -0
  441. package/src/authorization/__tests__/tuples.test.ts +62 -0
  442. package/src/authorization/__tests__/wire-permissions.test.ts +154 -0
  443. package/src/authorization/authorizer.ts +208 -0
  444. package/src/authorization/derived-tuples.ts +384 -0
  445. package/src/authorization/evaluator.ts +283 -0
  446. package/src/authorization/facts.ts +47 -0
  447. package/src/authorization/list-read-scope.ts +216 -0
  448. package/src/authorization/model/__tests__/registry.test.ts +317 -0
  449. package/src/authorization/model/agent.ts +64 -0
  450. package/src/authorization/model/agent_channel.ts +49 -0
  451. package/src/authorization/model/agent_execution.ts +33 -0
  452. package/src/authorization/model/agent_instance.ts +66 -0
  453. package/src/authorization/model/agent_share.ts +40 -0
  454. package/src/authorization/model/api_key.ts +28 -0
  455. package/src/authorization/model/artifact.ts +38 -0
  456. package/src/authorization/model/channel_app.ts +39 -0
  457. package/src/authorization/model/default-of.ts +99 -0
  458. package/src/authorization/model/environment.ts +48 -0
  459. package/src/authorization/model/execution_context.ts +20 -0
  460. package/src/authorization/model/iam_policy.ts +42 -0
  461. package/src/authorization/model/identity_account.ts +26 -0
  462. package/src/authorization/model/index.ts +108 -0
  463. package/src/authorization/model/mcp_server.ts +59 -0
  464. package/src/authorization/model/memory.ts +27 -0
  465. package/src/authorization/model/oauth_app.ts +42 -0
  466. package/src/authorization/model/organization.ts +55 -0
  467. package/src/authorization/model/plugin.ts +66 -0
  468. package/src/authorization/model/project.ts +47 -0
  469. package/src/authorization/model/rewrite.ts +213 -0
  470. package/src/authorization/model/schedule.ts +40 -0
  471. package/src/authorization/model/session.ts +50 -0
  472. package/src/authorization/model/skill.ts +60 -0
  473. package/src/authorization/model/workflow.ts +60 -0
  474. package/src/authorization/model/workflow_execution.ts +44 -0
  475. package/src/authorization/model/workflow_instance.ts +122 -0
  476. package/src/authorization/organization-directory.ts +114 -0
  477. package/src/authorization/person.ts +68 -0
  478. package/src/authorization/posture.ts +49 -0
  479. package/src/authorization/schedule-fire-caller.ts +91 -0
  480. package/src/authorization/store-test-kit.ts +454 -0
  481. package/src/authorization/tuples.ts +190 -0
  482. package/src/boot/compose.ts +175 -38
  483. package/src/boot/inprocess.ts +108 -30
  484. package/src/domain/agent/controller.ts +11 -0
  485. package/src/domain/iampolicy/__tests__/membership.test.ts +357 -3
  486. package/src/domain/iampolicy/constants.ts +12 -0
  487. package/src/domain/iampolicy/membership.ts +221 -66
  488. package/src/domain/identityaccount/actor.ts +44 -0
  489. package/src/domain/mcpserver/controller.ts +11 -0
  490. package/src/domain/plugin/__tests__/materialize.test.ts +303 -0
  491. package/src/domain/plugin/__tests__/overlay-parse.test.ts +85 -0
  492. package/src/domain/plugin/__tests__/plugin.test.ts +681 -0
  493. package/src/domain/plugin/__tests__/sanitize.test.ts +174 -0
  494. package/src/domain/plugin/archive.ts +89 -0
  495. package/src/domain/plugin/constants.ts +53 -0
  496. package/src/domain/plugin/controller.ts +913 -0
  497. package/src/domain/plugin/materialize/agent.ts +186 -0
  498. package/src/domain/plugin/materialize/default-agent-instructions.ts +59 -0
  499. package/src/domain/plugin/materialize/identity.ts +67 -0
  500. package/src/domain/plugin/materialize/mcp-servers.ts +175 -0
  501. package/src/domain/plugin/materialize/plan.ts +124 -0
  502. package/src/domain/plugin/materialize/ports.ts +53 -0
  503. package/src/domain/plugin/materialize/skills.ts +68 -0
  504. package/src/domain/plugin/materialize/workflows.ts +51 -0
  505. package/src/domain/plugin/members.ts +180 -0
  506. package/src/domain/plugin/overlay/documents.ts +78 -0
  507. package/src/domain/plugin/overlay/parse.ts +115 -0
  508. package/src/domain/plugin/overlay/sanitize.ts +149 -0
  509. package/src/domain/plugin/push.ts +1062 -0
  510. package/src/domain/plugin/search-extractor.ts +60 -0
  511. package/src/domain/skill/constants.ts +11 -14
  512. package/src/domain/skill/controller.ts +44 -36
  513. package/src/domain/skill/push.ts +61 -156
  514. package/src/domain/skill/search-extractor.ts +3 -1
  515. package/src/domain/skill/storage/artifact-storage.ts +23 -124
  516. package/src/domain/skill/storage/zip-gate.ts +58 -154
  517. package/src/domain/skill/version-resolution.ts +67 -269
  518. package/src/domain/workflow/controller.ts +38 -4
  519. package/src/domain/workflow/registry/data/task-kind-registry.json +1 -0
  520. package/src/extensions/__tests__/built-in-authorization-composed.test.ts +835 -0
  521. package/src/extensions/__tests__/composed-support.ts +32 -1
  522. package/src/extensions/__tests__/extension-composition.test.ts +35 -0
  523. package/src/extensions/__tests__/list-read-scope.test.ts +245 -3
  524. package/src/extensions/__tests__/role-reconciliation-composed.test.ts +209 -0
  525. package/src/extensions/__tests__/tier-truthfulness.test.ts +6 -14
  526. package/src/extensions/authorizer.ts +10 -5
  527. package/src/extensions/drivers.ts +4 -1
  528. package/src/extensions/list-read-scope.ts +116 -16
  529. package/src/extensions/organization-directory.ts +13 -9
  530. package/src/extensions/resource-authorization.ts +34 -0
  531. package/src/extensions/schedule-fire-caller.ts +49 -18
  532. package/src/index.ts +51 -1
  533. package/src/pipeline/__tests__/inherited-authorization-parent.test.ts +51 -0
  534. package/src/pipeline/__tests__/router-transport.test.ts +1 -3
  535. package/src/pipeline/apiresource-labels.ts +31 -3
  536. package/src/pipeline/apiresource-meta.ts +37 -0
  537. package/src/pipeline/errors.ts +5 -5
  538. package/src/pipeline/steps/__tests__/authorize-annotation-completeness.test.ts +1 -20
  539. package/src/pipeline/steps/__tests__/guard-memory-capture.test.ts +3 -9
  540. package/src/pipeline/steps/__tests__/guard-plugin-managed.test.ts +151 -0
  541. package/src/pipeline/steps/__tests__/guard-reserved-labels.test.ts +83 -8
  542. package/src/pipeline/steps/authorization-facts.ts +131 -0
  543. package/src/pipeline/steps/authorization-tuples.ts +7 -28
  544. package/src/pipeline/steps/delete.ts +11 -3
  545. package/src/pipeline/steps/duplicate.ts +8 -2
  546. package/src/pipeline/steps/guard-plugin-managed.ts +133 -0
  547. package/src/pipeline/steps/guard-reserved-labels.ts +29 -8
  548. package/src/pipeline/steps/helpers.ts +4 -1
  549. package/src/pipeline/steps/index-search.ts +28 -15
  550. package/src/pipeline/steps/load-existing.ts +12 -3
  551. package/src/pipeline/steps/references.ts +36 -2
  552. package/src/pipeline/steps/resolve-artifact-source.ts +66 -0
  553. package/src/pipeline/steps/server-stamped-reserved-labels.ts +2 -1
  554. package/src/pipeline/steps/shapes.ts +31 -0
  555. package/src/pipeline/steps/slug.ts +7 -2
  556. package/src/pipeline/steps/validate-visibility.ts +9 -2
  557. package/src/pipeline/steps/validation.ts +3 -1
  558. package/src/pipeline/steps/version-archive.ts +225 -0
  559. package/src/pipeline/steps/version-history.ts +362 -0
  560. package/src/pipeline/steps/visibility-gates.ts +12 -9
  561. package/src/query/README.md +1 -1
  562. package/src/query/search/__tests__/criteria.test.ts +6 -7
  563. package/src/query/search/__tests__/query-store.test.ts +9 -2
  564. package/src/query/search/__tests__/registry.test.ts +6 -4
  565. package/src/query/search/registry.ts +6 -1
  566. package/src/temporal/schedule/__tests__/run-starter.test.ts +86 -24
  567. package/src/temporal/schedule/run-starter.ts +31 -8
  568. package/dist/domain/skill/storage/prefilter.d.ts.map +0 -1
  569. package/dist/domain/skill/storage/prefilter.js.map +0 -1
  570. /package/dist/{domain/skill/storage → archive}/prefilter.js +0 -0
@@ -0,0 +1,214 @@
1
+ # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/schedule-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 schedule-session read-only observability (the session
6
+ # `schedule` structural link — project DD-012 D-E, the channel-session
7
+ # idiom's second application).
8
+ #
9
+ # A session created by the schedule runtime carries a single
10
+ # session#schedule@schedule:<id>
11
+ # tuple and inherits the schedule's viewer set (creator owner + org admins
12
+ # via `admin from organization` on schedule + explicit grantees) into
13
+ # can_view ONLY — `viewer from schedule` is composed into session.can_view,
14
+ # deliberately NOT into session.viewer, so schedule observers never gain
15
+ # can_create_execution_in / can_edit / can_delete / can_grant_access
16
+ # (injecting a console message into an unattended run is not
17
+ # observability). Executions follow through agent_execution's
18
+ # `can_view: viewer or can_view from session`.
19
+ #
20
+ # The personal-session invariant is untouched: console sessions never carry
21
+ # a schedule tuple, so `viewer from schedule` resolves to nothing for them
22
+ # (pinned below and by session-personal-resource.fga.yaml).
23
+ #
24
+ # Run with:
25
+ # fga model test --tests schedule-session-visibility.fga.yaml
26
+ #
27
+ # Scenario: org "acme" has admin alice, member bob (who created the
28
+ # fee-reminder schedule and owns it), member carol (no relation to the
29
+ # schedule), and member dave (an explicit schedule viewer grant — the
30
+ # console "share this schedule" affordance). "rival" is another org whose
31
+ # admin eve must see nothing. The schedule session is owned by acme's
32
+ # system-schedule account; bob also has a normal personal console session
33
+ # to prove the invariant.
34
+ name: schedule-session-visibility
35
+ model_file: ../model/fga.mod
36
+
37
+ tuples:
38
+ # --- Org roles ---
39
+ - user: identity_account:alice
40
+ relation: admin
41
+ object: organization:acme
42
+ - user: identity_account:bob
43
+ relation: member
44
+ object: organization:acme
45
+ - user: identity_account:carol
46
+ relation: member
47
+ object: organization:acme
48
+ - user: identity_account:dave
49
+ relation: member
50
+ object: organization:acme
51
+ - user: identity_account:eve
52
+ relation: admin
53
+ object: organization:rival
54
+
55
+ # --- The Schedule (tuples written on create: org link + creator owner) ---
56
+ - user: organization:acme
57
+ relation: organization
58
+ object: schedule:fee-reminder
59
+ - user: identity_account:bob
60
+ relation: owner
61
+ object: schedule:fee-reminder
62
+ # dave's explicit viewer grant on the schedule (never on the session):
63
+ - user: identity_account:dave
64
+ relation: viewer
65
+ object: schedule:fee-reminder
66
+
67
+ # --- The schedule session (owned by the org's system-schedule account) ---
68
+ - user: organization:acme
69
+ relation: organization
70
+ object: session:scheduled-run
71
+ - user: identity_account:sys-schedule-acme
72
+ relation: owner
73
+ object: session:scheduled-run
74
+ # The structural link written by ScheduleSessionLinkStep:
75
+ - user: schedule:fee-reminder
76
+ relation: schedule
77
+ object: session:scheduled-run
78
+
79
+ # --- An execution inside the schedule session ---
80
+ - user: session:scheduled-run
81
+ relation: session
82
+ object: agent_execution:scheduled-run-1
83
+
84
+ # --- bob's ordinary personal console session (NO schedule tuple) ---
85
+ - user: organization:acme
86
+ relation: organization
87
+ object: session:bobs-chat
88
+ - user: identity_account:bob
89
+ relation: owner
90
+ object: session:bobs-chat
91
+ - user: session:bobs-chat
92
+ relation: session
93
+ object: agent_execution:bobs-run-1
94
+
95
+ tests:
96
+ - name: schedule creator can view the run but only view it
97
+ check:
98
+ - user: identity_account:bob
99
+ object: session:scheduled-run
100
+ assertions:
101
+ can_view: true
102
+ can_create_execution_in: false
103
+ can_edit: false
104
+ can_delete: false
105
+ can_grant_access: false
106
+ can_view_access: false
107
+
108
+ - name: org admin inherits view through the schedule, read-only
109
+ check:
110
+ - user: identity_account:alice
111
+ object: session:scheduled-run
112
+ assertions:
113
+ can_view: true
114
+ can_create_execution_in: false
115
+ can_edit: false
116
+ can_delete: false
117
+ can_grant_access: false
118
+
119
+ - name: plain org member without schedule access sees nothing
120
+ check:
121
+ - user: identity_account:carol
122
+ object: session:scheduled-run
123
+ assertions:
124
+ can_view: false
125
+ can_create_execution_in: false
126
+
127
+ - name: another org's admin sees nothing
128
+ check:
129
+ - user: identity_account:eve
130
+ object: session:scheduled-run
131
+ assertions:
132
+ can_view: false
133
+
134
+ - name: the system-schedule account keeps full session ownership
135
+ check:
136
+ - user: identity_account:sys-schedule-acme
137
+ object: session:scheduled-run
138
+ assertions:
139
+ can_view: true
140
+ can_create_execution_in: true
141
+ can_edit: true
142
+ can_delete: true
143
+
144
+ - name: executions inherit read-only schedule observability
145
+ check:
146
+ - user: identity_account:bob
147
+ object: agent_execution:scheduled-run-1
148
+ assertions:
149
+ can_view: true
150
+ can_edit: false
151
+ - user: identity_account:alice
152
+ object: agent_execution:scheduled-run-1
153
+ assertions:
154
+ can_view: true
155
+ can_edit: false
156
+ - user: identity_account:carol
157
+ object: agent_execution:scheduled-run-1
158
+ assertions:
159
+ can_view: false
160
+
161
+ - name: an explicit schedule viewer grant reaches the run read-only
162
+ check:
163
+ # dave holds schedule viewer only — he can open the runs, still
164
+ # read-only, and gains nothing on the schedule's management levers.
165
+ - user: identity_account:dave
166
+ object: session:scheduled-run
167
+ assertions:
168
+ can_view: true
169
+ can_create_execution_in: false
170
+ can_edit: false
171
+ - user: identity_account:dave
172
+ object: agent_execution:scheduled-run-1
173
+ assertions:
174
+ can_view: true
175
+ can_edit: false
176
+
177
+ - name: personal-session invariant is untouched by the schedule model
178
+ check:
179
+ # Admin still has no path into a console session (no schedule tuple).
180
+ - user: identity_account:alice
181
+ object: session:bobs-chat
182
+ assertions:
183
+ can_view: false
184
+ can_edit: false
185
+ can_delete: false
186
+ - user: identity_account:alice
187
+ object: agent_execution:bobs-run-1
188
+ assertions:
189
+ can_view: false
190
+ # And the owner's own access is unchanged.
191
+ - user: identity_account:bob
192
+ object: session:bobs-chat
193
+ assertions:
194
+ can_view: true
195
+ can_edit: true
196
+ can_create_execution_in: true
197
+
198
+ - name: list viewable sessions resolves the schedule chain
199
+ list_objects:
200
+ - user: identity_account:alice
201
+ type: session
202
+ assertions:
203
+ can_view:
204
+ - session:scheduled-run
205
+ - user: identity_account:bob
206
+ type: session
207
+ assertions:
208
+ can_view:
209
+ - session:scheduled-run
210
+ - session:bobs-chat
211
+ - user: identity_account:carol
212
+ type: session
213
+ assertions:
214
+ can_view: []
@@ -0,0 +1,117 @@
1
+ # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/session-personal-resource.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 the session personal-resource model, including owner
6
+ # deletability (2026-07-08-owner-session-delete changelog entry).
7
+ #
8
+ # Sessions are always private: no visibility tuples are ever written, so
9
+ # access is owner + explicit viewer grants only. Org admins have no implicit
10
+ # access, and platform operators have no session-delete override — the
11
+ # platform-level can_delete_session relation was removed in favor of
12
+ # `can_delete: owner` on the session itself (deletion no longer threatens
13
+ # the billing trail; usage records are immutable and denormalized).
14
+ #
15
+ # Agent executions inherit ALL access from their parent session
16
+ # (`owner from session`), so the execution assertions here pin the
17
+ # inheritance that session cascade-delete relies on.
18
+ #
19
+ # Run with:
20
+ # fga model test --tests session-personal-resource.fga.yaml
21
+ #
22
+ # Scenario: org "acme" has admin alice, member bob (session creator), and
23
+ # member carol. dana is a platform operator with no relation to the session.
24
+ name: session-personal-resource
25
+ model_file: ../model/fga.mod
26
+
27
+ tuples:
28
+ # --- Org roles ---
29
+ - user: identity_account:alice
30
+ relation: admin
31
+ object: organization:acme
32
+ - user: identity_account:bob
33
+ relation: member
34
+ object: organization:acme
35
+ - user: identity_account:carol
36
+ relation: member
37
+ object: organization:acme
38
+
39
+ # --- Platform operator (no relation to the session) ---
40
+ - user: identity_account:dana
41
+ relation: operator
42
+ object: platform:stigmer
43
+
44
+ # --- bob's session (tuples written on create) ---
45
+ - user: organization:acme
46
+ relation: organization
47
+ object: session:bobs-chat
48
+ - user: identity_account:bob
49
+ relation: owner
50
+ object: session:bobs-chat
51
+
52
+ # --- carol holds an explicit viewer grant on the session ---
53
+ - user: identity_account:carol
54
+ relation: viewer
55
+ object: session:bobs-chat
56
+
57
+ # --- an execution inside the session ---
58
+ - user: session:bobs-chat
59
+ relation: session
60
+ object: agent_execution:run-1
61
+
62
+ tests:
63
+ - name: owner has full control including delete
64
+ check:
65
+ - user: identity_account:bob
66
+ object: session:bobs-chat
67
+ assertions:
68
+ can_view: true
69
+ can_edit: true
70
+ can_delete: true
71
+ can_create_execution_in: true
72
+ can_grant_access: true
73
+
74
+ - name: explicit viewer can view and run, but not edit or delete
75
+ check:
76
+ - user: identity_account:carol
77
+ object: session:bobs-chat
78
+ assertions:
79
+ can_view: true
80
+ can_create_execution_in: true
81
+ can_edit: false
82
+ can_delete: false
83
+ can_grant_access: false
84
+
85
+ - name: org admin has no implicit access to a personal session
86
+ check:
87
+ - user: identity_account:alice
88
+ object: session:bobs-chat
89
+ assertions:
90
+ can_view: false
91
+ can_edit: false
92
+ can_delete: false
93
+
94
+ - name: platform operator has no session-delete override
95
+ check:
96
+ - user: identity_account:dana
97
+ object: session:bobs-chat
98
+ assertions:
99
+ can_view: false
100
+ can_delete: false
101
+
102
+ - name: execution access is inherited from the parent session
103
+ check:
104
+ - user: identity_account:bob
105
+ object: agent_execution:run-1
106
+ assertions:
107
+ can_view: true
108
+ can_edit: true
109
+ - user: identity_account:carol
110
+ object: agent_execution:run-1
111
+ assertions:
112
+ can_view: true
113
+ can_edit: false
114
+ - user: identity_account:alice
115
+ object: agent_execution:run-1
116
+ assertions:
117
+ can_view: false
@@ -0,0 +1,192 @@
1
+ # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/workflow-execution-sharing.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 workflow_execution sharing and run observability.
6
+ #
7
+ # Two independent axes govern who can read a run's inputs/outputs:
8
+ #
9
+ # 1. Per-execution sharing — the triggerer (owner) grants viewer on a single
10
+ # workflow_execution. Enabled by the new can_grant_access / can_view_access
11
+ # relations (mirrors session.fga).
12
+ # 2. Instance-level run observability — opt-in via the workflow_instance's
13
+ # `execution_viewer` relation, inherited by every execution through
14
+ # `viewer = ... or execution_viewer from workflow_instance`.
15
+ #
16
+ # The critical invariant: making an instance org-RUNNABLE (instance#viewer for
17
+ # org members) must NOT leak run history. Only execution_viewer does that.
18
+ #
19
+ # Run with:
20
+ # fga model test --tests workflow-execution-sharing.fga.yaml
21
+ #
22
+ # Scenario: org "acme" with members alice (triggerer), bob, carol; outsider
23
+ # org with member mallory. inst1 is org-runnable but keeps runs private; inst2
24
+ # opts into org-wide run observability.
25
+ name: workflow-execution-sharing
26
+ model_file: ../model/fga.mod
27
+
28
+ tuples:
29
+ # --- Org memberships ---
30
+ - user: identity_account:alice
31
+ relation: member
32
+ object: organization:acme
33
+ - user: identity_account:bob
34
+ relation: member
35
+ object: organization:acme
36
+ - user: identity_account:carol
37
+ relation: member
38
+ object: organization:acme
39
+ - user: identity_account:vera
40
+ relation: viewer
41
+ object: organization:acme
42
+ - user: identity_account:mallory
43
+ relation: member
44
+ object: organization:outsider
45
+
46
+ # --- inst1: ORG-RUNNABLE instance, runs stay PRIVATE (no execution_viewer) ---
47
+ - user: organization:acme
48
+ relation: organization
49
+ object: workflow_instance:inst1
50
+ - user: identity_account:alice
51
+ relation: owner
52
+ object: workflow_instance:inst1
53
+ # Everyone in the org can SEE the instance (cloud#257 viewer shape;
54
+ # RUNNING it is additionally gated in Java on can_create_execution_in)...
55
+ - user: organization:acme#viewer
56
+ relation: viewer
57
+ object: workflow_instance:inst1
58
+ # ...but NO execution_viewer tuple, so run history is not shared.
59
+
60
+ # run1: alice's run on inst1, no explicit grants.
61
+ - user: organization:acme
62
+ relation: organization
63
+ object: workflow_execution:run1
64
+ - user: workflow_instance:inst1
65
+ relation: workflow_instance
66
+ object: workflow_execution:run1
67
+ - user: identity_account:alice
68
+ relation: owner
69
+ object: workflow_execution:run1
70
+
71
+ # run1b: alice's run on inst1, explicitly shared with bob (per-execution).
72
+ - user: organization:acme
73
+ relation: organization
74
+ object: workflow_execution:run1b
75
+ - user: workflow_instance:inst1
76
+ relation: workflow_instance
77
+ object: workflow_execution:run1b
78
+ - user: identity_account:alice
79
+ relation: owner
80
+ object: workflow_execution:run1b
81
+ - user: identity_account:bob
82
+ relation: viewer
83
+ object: workflow_execution:run1b
84
+
85
+ # --- inst2: opts into ORG-WIDE run observability (execution_viewer) ---
86
+ - user: organization:acme
87
+ relation: organization
88
+ object: workflow_instance:inst2
89
+ - user: identity_account:alice
90
+ relation: owner
91
+ object: workflow_instance:inst2
92
+ - user: organization:acme#viewer
93
+ relation: execution_viewer
94
+ object: workflow_instance:inst2
95
+
96
+ # run2: alice's run on inst2.
97
+ - user: organization:acme
98
+ relation: organization
99
+ object: workflow_execution:run2
100
+ - user: workflow_instance:inst2
101
+ relation: workflow_instance
102
+ object: workflow_execution:run2
103
+ - user: identity_account:alice
104
+ relation: owner
105
+ object: workflow_execution:run2
106
+
107
+ tests:
108
+ - name: triggerer always sees and can manage sharing of their own run
109
+ check:
110
+ - user: identity_account:alice
111
+ object: workflow_execution:run1
112
+ assertions:
113
+ can_view: true
114
+ can_grant_access: true
115
+ can_view_access: true
116
+
117
+ - name: org-runnable instance does NOT leak run history to teammates
118
+ check:
119
+ # bob and carol can see/run inst1, but cannot read alice's run1.
120
+ - user: identity_account:bob
121
+ object: workflow_execution:run1
122
+ assertions:
123
+ can_view: false
124
+ can_view_access: false
125
+ - user: identity_account:carol
126
+ object: workflow_execution:run1
127
+ assertions:
128
+ can_view: false
129
+
130
+ - name: per-execution share grants exactly the named teammate
131
+ check:
132
+ - user: identity_account:bob
133
+ object: workflow_execution:run1b
134
+ assertions:
135
+ can_view: true
136
+ can_view_access: true
137
+ # A viewer cannot re-share (only the owner can grant).
138
+ - user: identity_account:bob
139
+ object: workflow_execution:run1b
140
+ assertions:
141
+ can_grant_access: false
142
+ # Another org member not on the grant sees nothing.
143
+ - user: identity_account:carol
144
+ object: workflow_execution:run1b
145
+ assertions:
146
+ can_view: false
147
+
148
+ - name: instance execution_viewer opt-in shares all runs org-wide
149
+ check:
150
+ - user: identity_account:bob
151
+ object: workflow_execution:run2
152
+ assertions:
153
+ can_view: true
154
+ - user: identity_account:carol
155
+ object: workflow_execution:run2
156
+ assertions:
157
+ can_view: true
158
+ # cloud#257: run observability is a pure read grant, so the org's
159
+ # read-only viewers are exactly its audience.
160
+ - user: identity_account:vera
161
+ object: workflow_execution:run2
162
+ assertions:
163
+ can_view: true
164
+ # Outsiders never gain access through org-scoped observability.
165
+ - user: identity_account:mallory
166
+ object: workflow_execution:run2
167
+ assertions:
168
+ can_view: false
169
+
170
+ - name: run privacy holds against org viewers exactly as against members
171
+ check:
172
+ # No execution_viewer opt-in on inst1 → vera reads the instance but
173
+ # never alice's run history.
174
+ - user: identity_account:vera
175
+ object: workflow_instance:inst1
176
+ context:
177
+ allow: false
178
+ assertions:
179
+ can_view: true
180
+ - user: identity_account:vera
181
+ object: workflow_execution:run1
182
+ assertions:
183
+ can_view: false
184
+
185
+ - name: list a teammate's viewable runs reflects both sharing axes
186
+ list_objects:
187
+ - user: identity_account:bob
188
+ type: workflow_execution
189
+ assertions:
190
+ can_view:
191
+ - workflow_execution:run1b
192
+ - workflow_execution:run2