@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,109 @@
1
+ # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/agent-share-owner.fga.yaml
2
+ # at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
3
+ # The body below is byte-identical to the source; the cloud re-runs the LIVE
4
+ # file against this evaluator at the re-pin, so a stale copy is caught there.
5
+ # Agent shares are owner-scoped channel config (decision 011, D1):
6
+ # the creator owns the share; view/edit/delete/rotate require ownership or
7
+ # an explicit grant. Plain org members get NO implicit access, and —
8
+ # critically — no visitor-facing tuples exist at all: guest/member
9
+ # admission to the hosted chat is app-level (shared-profile, mint, and
10
+ # create-time gates), never FGA.
11
+ #
12
+ # T08: org ADMINS inherit owner (consistent with agents — an admin who can
13
+ # edit the agent can manage its channels). The narrowness these tests pin
14
+ # is now: owner + admins have control, granted viewers read, plain members
15
+ # have nothing.
16
+
17
+ name: agent-share-owner
18
+ model_file: ../model/fga.mod
19
+
20
+ tuples:
21
+ # Org membership for both accounts — proving membership grants nothing.
22
+ - user: identity_account:alice
23
+ relation: member
24
+ object: organization:acme
25
+ - user: identity_account:mallory
26
+ relation: member
27
+ object: organization:acme
28
+
29
+ # Org admin — proving T08 inheritance reaches shares.
30
+ - user: identity_account:ana
31
+ relation: admin
32
+ object: organization:acme
33
+
34
+ # The share, created by alice (the config-driven create tuples).
35
+ - user: organization:acme
36
+ relation: organization
37
+ object: agent_share:support-bot-share
38
+ - user: identity_account:alice
39
+ relation: owner
40
+ object: agent_share:support-bot-share
41
+
42
+ # An explicit viewer grant to carol (not even an org member).
43
+ - user: identity_account:carol
44
+ relation: viewer
45
+ object: agent_share:support-bot-share
46
+
47
+ tests:
48
+ - name: owner has full control including grant management
49
+ check:
50
+ - user: identity_account:alice
51
+ object: agent_share:support-bot-share
52
+ assertions:
53
+ can_view: true
54
+ can_edit: true
55
+ can_delete: true
56
+ can_grant_access: true
57
+ can_view_access: true
58
+
59
+ - name: explicitly granted viewer can read but not mutate
60
+ check:
61
+ - user: identity_account:carol
62
+ object: agent_share:support-bot-share
63
+ assertions:
64
+ can_view: true
65
+ can_edit: false
66
+ can_delete: false
67
+ can_grant_access: false
68
+ can_view_access: true
69
+
70
+ - name: fellow org member has no implicit access
71
+ check:
72
+ - user: identity_account:mallory
73
+ object: agent_share:support-bot-share
74
+ assertions:
75
+ can_view: false
76
+ can_edit: false
77
+ can_delete: false
78
+ can_grant_access: false
79
+ can_view_access: false
80
+
81
+ - name: org admin inherits share management (T08)
82
+ check:
83
+ - user: identity_account:ana
84
+ object: agent_share:support-bot-share
85
+ assertions:
86
+ can_view: true
87
+ can_edit: true
88
+ can_delete: true
89
+ can_grant_access: true
90
+
91
+ - name: listing shares reflects ownership and grants, not membership
92
+ list_objects:
93
+ - user: identity_account:alice
94
+ type: agent_share
95
+ assertions:
96
+ can_view:
97
+ - agent_share:support-bot-share
98
+ can_edit:
99
+ - agent_share:support-bot-share
100
+ - user: identity_account:carol
101
+ type: agent_share
102
+ assertions:
103
+ can_view:
104
+ - agent_share:support-bot-share
105
+ can_edit: []
106
+ - user: identity_account:mallory
107
+ type: agent_share
108
+ assertions:
109
+ can_view: []
@@ -0,0 +1,128 @@
1
+ # Pinned copy of stigmer-cloud backend/services/stigmer-server/fga/tests/artifact-org-and-owner.fga.yaml
2
+ # at commit b87dd1170 (the OpenFGA store test the cloud runs against its live model).
3
+ # The body below is byte-identical to the source; the cloud re-runs the LIVE
4
+ # file against this evaluator at the re-pin, so a stale copy is caught there.
5
+ # Artifacts are org-scoped execution outputs with creator ownership on
6
+ # top (cloud#216). The two access arms these tests pin:
7
+ #
8
+ # 1. Org inheritance — anyone who is at least a viewer of the owning org
9
+ # can view its artifacts ("if you can view resources in the org, you
10
+ # can view its artifacts"). Editing stays org-admin-only.
11
+ # 2. Creator ownership — the identity whose execution produced the
12
+ # artifact can view it WITHOUT any org role. This is the guest-share /
13
+ # embedded-user case: org guests are not org viewers, but their
14
+ # sessions render artifact-backed review payloads and artifact tabs.
15
+ #
16
+ # The narrowness pinned: creator-owners read but never edit (all guests
17
+ # of an org share one guest identity account — owner-edit would let one
18
+ # guest soft-delete another's artifacts), and no arm crosses org
19
+ # boundaries.
20
+ #
21
+ # Run: fga model test --tests artifact-org-and-owner.fga.yaml
22
+
23
+ name: artifact-org-and-owner
24
+ model_file: ../model/fga.mod
25
+
26
+ tuples:
27
+ # Org roles: victor views, ana administers acme. Rival org for the
28
+ # cross-org boundary.
29
+ - user: identity_account:victor
30
+ relation: viewer
31
+ object: organization:acme
32
+ - user: identity_account:ana
33
+ relation: admin
34
+ object: organization:acme
35
+ - user: identity_account:eve
36
+ relation: member
37
+ object: organization:rival
38
+
39
+ # Guest identity: an org GUEST, deliberately not an org viewer.
40
+ - user: identity_account:acme-guest
41
+ relation: guest
42
+ object: organization:acme
43
+
44
+ # Artifact produced by a signed-in member's execution.
45
+ - user: organization:acme
46
+ relation: organization
47
+ object: artifact:art_report
48
+ - user: identity_account:victor
49
+ relation: owner
50
+ object: artifact:art_report
51
+
52
+ # Artifact produced by a guest-share execution: creator is the guest
53
+ # identity account (runner tokens carry the acting identity as sub).
54
+ - user: organization:acme
55
+ relation: organization
56
+ object: artifact:art_guest_plan
57
+ - user: identity_account:acme-guest
58
+ relation: owner
59
+ object: artifact:art_guest_plan
60
+
61
+ tests:
62
+ - name: org viewer reads any org artifact but cannot edit
63
+ check:
64
+ - user: identity_account:victor
65
+ object: artifact:art_report
66
+ assertions:
67
+ can_view: true
68
+ can_edit: false
69
+ - user: identity_account:victor
70
+ object: artifact:art_guest_plan
71
+ assertions:
72
+ can_view: true
73
+ can_edit: false
74
+
75
+ - name: org admin views and edits org artifacts
76
+ check:
77
+ - user: identity_account:ana
78
+ object: artifact:art_report
79
+ assertions:
80
+ can_view: true
81
+ can_edit: true
82
+
83
+ - name: guest creator reads own execution's artifact via ownership, never edits
84
+ check:
85
+ - user: identity_account:acme-guest
86
+ object: artifact:art_guest_plan
87
+ assertions:
88
+ can_view: true
89
+ can_edit: false
90
+
91
+ - name: guest role alone grants nothing on other artifacts in the org
92
+ check:
93
+ - user: identity_account:acme-guest
94
+ object: artifact:art_report
95
+ assertions:
96
+ can_view: false
97
+ can_edit: false
98
+
99
+ - name: cross-org caller is denied everything
100
+ check:
101
+ - user: identity_account:eve
102
+ object: artifact:art_report
103
+ assertions:
104
+ can_view: false
105
+ can_edit: false
106
+ - user: identity_account:eve
107
+ object: artifact:art_guest_plan
108
+ assertions:
109
+ can_view: false
110
+ can_edit: false
111
+
112
+ - name: listing reflects org inheritance plus creator ownership
113
+ list_objects:
114
+ - user: identity_account:victor
115
+ type: artifact
116
+ assertions:
117
+ can_view:
118
+ - artifact:art_report
119
+ - artifact:art_guest_plan
120
+ - user: identity_account:acme-guest
121
+ type: artifact
122
+ assertions:
123
+ can_view:
124
+ - artifact:art_guest_plan
125
+ - user: identity_account:eve
126
+ type: artifact
127
+ assertions:
128
+ can_view: []
@@ -0,0 +1,410 @@
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).
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 real blueprint privacy (Phase 3 of the visibility model).
6
+ #
7
+ # Blueprint viewer relations no longer include the unconditional
8
+ # `viewer from organization` grant: a PRIVATE blueprint is invisible to the
9
+ # rest of its own org. Every broader level is an explicit tuple written by
10
+ # VisibilityTupleReconciler:
11
+ #
12
+ # ORG viewer@organization:<org>#viewer (the org's FULL read audience —
13
+ # every role satisfies organization#viewer, including read-only
14
+ # viewers; pre-cloud#257 tuples carried #member, which excluded
15
+ # viewer-role users — still honored until backfilled, see the
16
+ # legacy-bot fixture)
17
+ # PUBLIC viewer@identity_account:* (allow_public) + the ORG tuple
18
+ # PLATFORM platform_viewer@identity_provider:<idp>#platform_user + the ORG tuple
19
+ #
20
+ # Read vs spend: an org viewer-role user READS org-visible blueprints (and, at
21
+ # the model level, satisfies can_execute — run-what-you-can-read), but every
22
+ # spend path is gated in Java on the org-level can_create_session /
23
+ # can_create_execution_in permissions, which require member-or-guest. The
24
+ # vera assertions pin both halves of that contract.
25
+ #
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.
29
+ #
30
+ # T08 exception: org ADMINS (and org owners, via the role hierarchy) are
31
+ # composed into blueprint `owner` and therefore see, list, and manage
32
+ # PRIVATE blueprints — the GitHub-org-admin model. "Private is real" now
33
+ # means: invisible to plain members, never to org admins. Pinned by the
34
+ # oscar (org admin) assertions below.
35
+ #
36
+ # Run with:
37
+ # fga model test --tests blueprint-private-visibility.fga.yaml
38
+ #
39
+ # Scenario: org "acme" has owner-creator carol, org admin oscar, plain
40
+ # member dave, and read-only viewer vera (the role SSO auto-provisioning
41
+ # 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.
44
+ name: blueprint-private-visibility
45
+ model_file: ../model/fga.mod
46
+
47
+ tuples:
48
+ # --- Org memberships ---
49
+ - user: identity_account:carol
50
+ relation: owner
51
+ object: organization:acme
52
+ - user: identity_account:oscar
53
+ relation: admin
54
+ object: organization:acme
55
+ - user: identity_account:dave
56
+ relation: member
57
+ object: organization:acme
58
+ - user: identity_account:vera
59
+ relation: viewer
60
+ object: organization:acme
61
+ - user: identity_account:mallory
62
+ relation: member
63
+ object: organization:outsider
64
+
65
+ # --- PRIVATE blueprints (no visibility tuples at all) ---
66
+ - user: organization:acme
67
+ relation: organization
68
+ object: agent:secret-bot
69
+ - user: identity_account:carol
70
+ relation: owner
71
+ object: agent:secret-bot
72
+ - user: organization:acme
73
+ relation: organization
74
+ object: skill:secret-notes
75
+ - user: identity_account:carol
76
+ relation: owner
77
+ object: skill:secret-notes
78
+ - user: organization:acme
79
+ relation: organization
80
+ object: workflow:secret-flow
81
+ - user: identity_account:carol
82
+ relation: owner
83
+ object: workflow:secret-flow
84
+ - user: organization:acme
85
+ relation: organization
86
+ object: mcp_server:secret-tools
87
+ - user: identity_account:carol
88
+ relation: owner
89
+ object: mcp_server:secret-tools
90
+
91
+ # --- ORG-visible agent (explicit org viewer tuple, cloud#257 shape) ---
92
+ - user: organization:acme
93
+ relation: organization
94
+ object: agent:team-bot
95
+ - user: identity_account:carol
96
+ relation: owner
97
+ object: agent:team-bot
98
+ - user: organization:acme#viewer
99
+ relation: viewer
100
+ object: agent:team-bot
101
+
102
+ # --- ORG-visible agent with the LEGACY pre-cloud#257 tuple shape ---
103
+ # Pins two transition facts until the boot backfill converges prod tuples:
104
+ # members must keep their access through the old shape, and viewer-role
105
+ # users are still refused by it (the cloud#257 defect, alive on legacy
106
+ # tuples only).
107
+ - user: organization:acme
108
+ relation: organization
109
+ object: agent:legacy-bot
110
+ - user: identity_account:carol
111
+ relation: owner
112
+ object: agent:legacy-bot
113
+ - user: organization:acme#member
114
+ relation: viewer
115
+ object: agent:legacy-bot
116
+
117
+ # --- PUBLIC agent (wildcard + org floor tuple) ---
118
+ - user: organization:acme
119
+ relation: organization
120
+ object: agent:open-bot
121
+ - user: identity_account:carol
122
+ relation: owner
123
+ object: agent:open-bot
124
+ - user: identity_account:*
125
+ relation: viewer
126
+ object: agent:open-bot
127
+ condition:
128
+ name: allow_public
129
+ - user: organization:acme#viewer
130
+ relation: viewer
131
+ object: agent:open-bot
132
+
133
+ # --- PRIVATE agent with an explicit individual viewer grant ---
134
+ - user: organization:acme
135
+ relation: organization
136
+ object: agent:shared-secret
137
+ - user: identity_account:carol
138
+ relation: owner
139
+ object: agent:shared-secret
140
+ - user: identity_account:dave
141
+ relation: viewer
142
+ object: agent:shared-secret
143
+
144
+ tests:
145
+ - name: private blueprints are invisible to fellow org members (all four kinds)
146
+ check:
147
+ - user: identity_account:dave
148
+ object: agent:secret-bot
149
+ context:
150
+ allow: false
151
+ assertions:
152
+ can_view: false
153
+ can_execute: false
154
+ can_create_instance: false
155
+ can_clone: false
156
+ - user: identity_account:dave
157
+ object: skill:secret-notes
158
+ context:
159
+ allow: false
160
+ assertions:
161
+ can_view: false
162
+ can_use: false
163
+ - user: identity_account:dave
164
+ object: workflow:secret-flow
165
+ context:
166
+ allow: false
167
+ assertions:
168
+ can_view: false
169
+ can_execute: false
170
+ - user: identity_account:dave
171
+ object: mcp_server:secret-tools
172
+ context:
173
+ allow: false
174
+ assertions:
175
+ can_view: false
176
+ can_use: false
177
+ can_connect: false
178
+
179
+ - name: org admin sees and manages private blueprints of every kind (T08)
180
+ check:
181
+ - user: identity_account:oscar
182
+ object: agent:secret-bot
183
+ context:
184
+ allow: false
185
+ assertions:
186
+ can_view: true
187
+ can_edit: true
188
+ can_delete: true
189
+ can_execute: true
190
+ - user: identity_account:oscar
191
+ object: skill:secret-notes
192
+ context:
193
+ allow: false
194
+ assertions:
195
+ can_view: true
196
+ can_edit: true
197
+ - user: identity_account:oscar
198
+ object: workflow:secret-flow
199
+ context:
200
+ allow: false
201
+ assertions:
202
+ can_view: true
203
+ can_edit: true
204
+ # mcp_server had admin inheritance before T08 — asserted here so all
205
+ # four private-blueprint kinds are pinned to the same rule.
206
+ - user: identity_account:oscar
207
+ object: mcp_server:secret-tools
208
+ context:
209
+ allow: false
210
+ assertions:
211
+ can_view: true
212
+ can_edit: true
213
+
214
+ - name: org admin's listable agents include private ones (T08)
215
+ list_objects:
216
+ - user: identity_account:oscar
217
+ type: agent
218
+ context:
219
+ allow: false
220
+ assertions:
221
+ can_view:
222
+ - agent:secret-bot
223
+ - agent:team-bot
224
+ - agent:legacy-bot
225
+ - agent:open-bot
226
+ - agent:shared-secret
227
+
228
+ - name: owner retains full access to private blueprints
229
+ check:
230
+ - user: identity_account:carol
231
+ object: agent:secret-bot
232
+ context:
233
+ allow: false
234
+ assertions:
235
+ can_view: true
236
+ can_execute: true
237
+ can_create_instance: true
238
+ can_edit: true
239
+ can_delete: true
240
+ - user: identity_account:carol
241
+ object: workflow:secret-flow
242
+ context:
243
+ allow: false
244
+ assertions:
245
+ can_view: true
246
+ can_execute: true
247
+ can_edit: true
248
+
249
+ - name: org-visible agent is viewable and runnable by org members, not outsiders
250
+ check:
251
+ - user: identity_account:dave
252
+ object: agent:team-bot
253
+ context:
254
+ allow: false
255
+ assertions:
256
+ can_view: true
257
+ can_execute: true
258
+ can_create_instance: true
259
+ can_edit: false
260
+ can_delete: false
261
+ - user: identity_account:mallory
262
+ object: agent:team-bot
263
+ context:
264
+ allow: false
265
+ assertions:
266
+ can_view: false
267
+ can_execute: false
268
+
269
+ - name: public agent is reachable by everyone with allow context, and by org members without it
270
+ check:
271
+ # Outsider resolves through the conditional wildcard ({"allow": true}).
272
+ - user: identity_account:mallory
273
+ object: agent:open-bot
274
+ context:
275
+ allow: true
276
+ assertions:
277
+ can_view: true
278
+ can_execute: true
279
+ # Org member resolves through the org floor tuple even with the
280
+ # wildcard suppressed — this is what keeps public blueprints in
281
+ # org-scoped listings.
282
+ - user: identity_account:dave
283
+ object: agent:open-bot
284
+ context:
285
+ allow: false
286
+ assertions:
287
+ can_view: true
288
+ can_execute: true
289
+
290
+ - name: explicit individual viewer grant on a private agent conveys view and run
291
+ check:
292
+ # Run-what-you-can-read: can_execute derives from viewer, so an
293
+ # explicit viewer grant is enough to run (matches the execution gate,
294
+ # which checks can_view).
295
+ - user: identity_account:dave
296
+ object: agent:shared-secret
297
+ context:
298
+ allow: false
299
+ assertions:
300
+ can_view: true
301
+ can_execute: true
302
+ can_edit: false
303
+
304
+ - name: org member's listable agents exclude private ones (wildcard suppressed)
305
+ list_objects:
306
+ - user: identity_account:dave
307
+ type: agent
308
+ context:
309
+ allow: false
310
+ assertions:
311
+ can_view:
312
+ - agent:team-bot
313
+ - agent:legacy-bot
314
+ - agent:open-bot
315
+ - agent:shared-secret
316
+
317
+ - name: owner's listable agents include everything they authored
318
+ list_objects:
319
+ - user: identity_account:carol
320
+ type: agent
321
+ context:
322
+ allow: false
323
+ assertions:
324
+ can_view:
325
+ - agent:secret-bot
326
+ - agent:team-bot
327
+ - agent:legacy-bot
328
+ - agent:open-bot
329
+ - agent:shared-secret
330
+
331
+ # ── cloud#257: the viewer-role cell (previously untested) ──────────────
332
+
333
+ - name: org viewer reads org-visible blueprints — the cloud#257 contract
334
+ check:
335
+ # View, clone and (model-level) execute all derive from viewer; the
336
+ # spend refusal is pinned separately on the org permissions below.
337
+ - user: identity_account:vera
338
+ object: agent:team-bot
339
+ context:
340
+ allow: false
341
+ assertions:
342
+ can_view: true
343
+ can_clone: true
344
+ can_execute: true
345
+ can_edit: false
346
+ can_delete: false
347
+ # The org floor of a PUBLIC blueprint reaches viewers the same way.
348
+ - user: identity_account:vera
349
+ object: agent:open-bot
350
+ context:
351
+ allow: false
352
+ assertions:
353
+ can_view: true
354
+ # Private stays private — the viewer role grants nothing beyond the
355
+ # explicit visibility tuples.
356
+ - user: identity_account:vera
357
+ object: agent:secret-bot
358
+ context:
359
+ allow: false
360
+ assertions:
361
+ can_view: false
362
+ can_execute: false
363
+
364
+ - name: org viewer holds no spend authority on the org (the cost gate)
365
+ check:
366
+ # Java execution lanes (session create, agent-execution create,
367
+ # workflow-execution create, EC create) all check these org-level
368
+ # permissions — this is why widening read to viewers exposes no cost.
369
+ - user: identity_account:vera
370
+ object: organization:acme
371
+ assertions:
372
+ can_view: true
373
+ can_create_session: false
374
+ can_create_execution_in: false
375
+ - user: identity_account:dave
376
+ object: organization:acme
377
+ assertions:
378
+ can_create_session: true
379
+ can_create_execution_in: true
380
+
381
+ - name: legacy member-shaped tuple keeps members but still excludes viewers (until backfilled)
382
+ check:
383
+ - user: identity_account:dave
384
+ object: agent:legacy-bot
385
+ context:
386
+ allow: false
387
+ assertions:
388
+ can_view: true
389
+ can_execute: true
390
+ # The original cloud#257 defect, pinned on the legacy shape: the org
391
+ # role hierarchy flows downward, so a viewer-role user never satisfies
392
+ # organization#member. The boot backfill converges these tuples.
393
+ - user: identity_account:vera
394
+ object: agent:legacy-bot
395
+ context:
396
+ allow: false
397
+ assertions:
398
+ can_view: false
399
+ can_execute: false
400
+
401
+ - name: org viewer's listable agents are exactly the viewer-shaped org-visible ones
402
+ list_objects:
403
+ - user: identity_account:vera
404
+ type: agent
405
+ context:
406
+ allow: false
407
+ assertions:
408
+ can_view:
409
+ - agent:team-bot
410
+ - agent:open-bot