@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,213 @@
1
+ /**
2
+ * The relation-rewrite vocabulary the model declarations are written in —
3
+ * the four forms an OpenFGA `define` line takes in the cloud's 27 `.fga`
4
+ * files, and nothing more:
5
+ *
6
+ * define organization: [organization] → direct(objectOf("organization"))
7
+ * define owner: [identity_account] or admin from organization
8
+ * → union(direct(objectOf("identity_account")), from("admin", "organization"))
9
+ * define viewer: [identity_account, identity_account:* with allow_public,
10
+ * organization#member, organization#viewer] or owner or platform_viewer
11
+ * → union(direct(objectOf(...), publicWith(...), usersetOf(...), usersetOf(...)),
12
+ * computed("owner"), computed("platform_viewer"))
13
+ * define can_view: viewer → computed("viewer")
14
+ *
15
+ * A declaration file (model/<kind>.ts) is a TRANSCRIPT of its `.fga`
16
+ * file: the same relations, in the file's order, each line rewritten in
17
+ * these builders so a reader with the model open sees the same text, and
18
+ * so a structural compare against the file (the cloud's drift test at
19
+ * the re-pin) needs no translation table. Intersection and exclusion
20
+ * (`and`, `but not`) do not appear in the model and have no node here;
21
+ * the day they do, the transcript cannot be written and the gap is a
22
+ * design act, not a silent approximation.
23
+ *
24
+ * The direct form carries its type restrictions (`[identity_account,
25
+ * organization#viewer]`) because the evaluator ENFORCES them: a tuple
26
+ * whose subject the line does not list is ignored, which is what OpenFGA
27
+ * does at write time. That is the fail-closed property of this design —
28
+ * a derivation that drifts from the model (a userset the line dropped)
29
+ * makes open source deny, never allow.
30
+ *
31
+ * `derived` names the relations `kind_meta.authorization` cannot derive
32
+ * from the row alone: `default_of` on an instance (the
33
+ * blueprint's `status.default_instance_id` must name this row — one
34
+ * blueprint read through the loader; default-of.ts, shared by the two
35
+ * instance kinds) and `execution_viewer` on a workflow instance
36
+ * (`spec.execution_visibility`; workflow_instance.ts). A declaration that
37
+ * has such a relation states the rule beside the transcript; the tuple
38
+ * source dispatches to it by relation.
39
+ */
40
+ import type { DescMessage, Message } from "@bufbuild/protobuf";
41
+
42
+ import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
43
+
44
+ import { kindEnumName } from "../../pipeline/apiresource-meta.js";
45
+ import type { ObjectRef, RowLoader, Tuple } from "../tuples.js";
46
+
47
+ /** One entry of a direct line's type restriction list. */
48
+ export type SubjectType =
49
+ /** `[organization]`, `[identity_account]` — objects of the type. */
50
+ | { readonly form: "object"; readonly type: string }
51
+ /** `[organization#viewer]` — everyone holding `relation` on an object of the type. */
52
+ | {
53
+ readonly form: "userset";
54
+ readonly type: string;
55
+ readonly relation: string;
56
+ }
57
+ /** `[identity_account:* with allow_public]` — every object of the type, under the condition. */
58
+ | {
59
+ readonly form: "wildcard";
60
+ readonly type: string;
61
+ readonly condition: string;
62
+ };
63
+
64
+ export type Rewrite =
65
+ /** `[…]` — the tuples stored on the relation itself, restricted to the listed subject types. */
66
+ | { readonly node: "this"; readonly subjects: ReadonlyArray<SubjectType> }
67
+ /** `or owner` — another relation of the same object. */
68
+ | { readonly node: "computed"; readonly relation: string }
69
+ /** `admin from organization` — `relation` on every object the `tupleset` relation links to. */
70
+ | {
71
+ readonly node: "from";
72
+ readonly relation: string;
73
+ readonly tupleset: string;
74
+ }
75
+ /** `a or b or c` — the first true member wins, in the line's order. */
76
+ | { readonly node: "union"; readonly members: ReadonlyArray<Rewrite> };
77
+
78
+ // ---------------------------------------------------------------------------
79
+ // Builders — named so a transcript reads like its `.fga` line.
80
+ // ---------------------------------------------------------------------------
81
+
82
+ export function objectOf(type: string): SubjectType {
83
+ return { form: "object", type };
84
+ }
85
+
86
+ export function usersetOf(type: string, relation: string): SubjectType {
87
+ return { form: "userset", type, relation };
88
+ }
89
+
90
+ export function publicWith(type: string, condition: string): SubjectType {
91
+ return { form: "wildcard", type, condition };
92
+ }
93
+
94
+ export function direct(...subjects: ReadonlyArray<SubjectType>): Rewrite {
95
+ return { node: "this", subjects };
96
+ }
97
+
98
+ export function computed(relation: string): Rewrite {
99
+ return { node: "computed", relation };
100
+ }
101
+
102
+ export function from(relation: string, tupleset: string): Rewrite {
103
+ return { node: "from", relation, tupleset };
104
+ }
105
+
106
+ export function union(...members: ReadonlyArray<Rewrite>): Rewrite {
107
+ return { node: "union", members };
108
+ }
109
+
110
+ // ---------------------------------------------------------------------------
111
+ // A kind's declaration.
112
+ // ---------------------------------------------------------------------------
113
+
114
+ /**
115
+ * A relation the row does not carry as a `kind_meta` fact: the rule that
116
+ * derives its tuples for `object` from its decoded row, reading related
117
+ * rows through the loader. The source hands the object it already
118
+ * resolved so a rule never re-derives its own reference from the row.
119
+ * Pure over its inputs; faults propagate.
120
+ */
121
+ export type DerivedRelation = (
122
+ object: ObjectRef,
123
+ row: Message,
124
+ loader: RowLoader,
125
+ ) => Promise<ReadonlyArray<Tuple>>;
126
+
127
+ export interface KindDeclaration {
128
+ readonly kind: ApiResourceKind;
129
+ /** The FGA type name — the kind's enum member name, as the cloud renders objects. */
130
+ readonly type: string;
131
+ /** The kind's message schema: what a stored row decodes with, and where its audit lives. */
132
+ readonly schema: DescMessage;
133
+ /** The `.fga` file this transcribes, relative to the cloud's `fga/` folder. */
134
+ readonly source: string;
135
+ /** Every relation the file defines, in the file's order. */
136
+ readonly relations: ReadonlyMap<string, Rewrite>;
137
+ /** The relations `kind_meta` cannot derive (the module header). */
138
+ readonly derived: ReadonlyMap<string, DerivedRelation>;
139
+ }
140
+
141
+ export interface KindDeclarationInput {
142
+ readonly kind: ApiResourceKind;
143
+ readonly schema: DescMessage;
144
+ readonly source: string;
145
+ readonly relations: ReadonlyArray<readonly [name: string, rewrite: Rewrite]>;
146
+ readonly derived?: ReadonlyArray<
147
+ readonly [name: string, rule: DerivedRelation]
148
+ >;
149
+ }
150
+
151
+ /**
152
+ * Builds a declaration and refuses a transcript that cannot be right at
153
+ * module load: a relation declared twice, a `computed` naming a relation
154
+ * the kind does not define, a `from` whose tupleset the kind does not
155
+ * define (its `relation` is the PARENT's and is resolved at evaluation),
156
+ * a derived rule for a relation the transcript does not declare.
157
+ */
158
+ export function declareKind(input: KindDeclarationInput): KindDeclaration {
159
+ const type = kindEnumName(input.kind);
160
+ const relations = new Map<string, Rewrite>();
161
+ for (const [name, rewrite] of input.relations) {
162
+ if (relations.has(name)) {
163
+ throw new Error(`${input.source}: relation '${name}' is declared twice`);
164
+ }
165
+ relations.set(name, rewrite);
166
+ }
167
+ for (const [name, rewrite] of relations) {
168
+ for (const reference of localReferences(rewrite)) {
169
+ if (!relations.has(reference.relation)) {
170
+ throw new Error(
171
+ `${input.source}: '${name}' names ${reference.role} '${reference.relation}', which ${type} does not declare`,
172
+ );
173
+ }
174
+ }
175
+ }
176
+ const derived = new Map<string, DerivedRelation>();
177
+ for (const [name, rule] of input.derived ?? []) {
178
+ if (!relations.has(name)) {
179
+ throw new Error(
180
+ `${input.source}: a derived rule for '${name}', which ${type} does not declare`,
181
+ );
182
+ }
183
+ derived.set(name, rule);
184
+ }
185
+ return {
186
+ kind: input.kind,
187
+ type,
188
+ schema: input.schema,
189
+ source: input.source,
190
+ relations,
191
+ derived,
192
+ };
193
+ }
194
+
195
+ /** The relations of the SAME kind a rewrite names: computed targets and tuplesets. */
196
+ function localReferences(
197
+ rewrite: Rewrite,
198
+ ): ReadonlyArray<{ readonly role: string; readonly relation: string }> {
199
+ switch (rewrite.node) {
200
+ case "this":
201
+ return [];
202
+ case "computed":
203
+ return [{ role: "relation", relation: rewrite.relation }];
204
+ case "from":
205
+ return [{ role: "tupleset", relation: rewrite.tupleset }];
206
+ case "union":
207
+ return rewrite.members.flatMap(localReferences);
208
+ default: {
209
+ const exhaustive: never = rewrite;
210
+ throw new Error(`unknown rewrite node: ${JSON.stringify(exhaustive)}`);
211
+ }
212
+ }
213
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/schedule.fga — a scheduled run's
3
+ * definition, admin-owned like a blueprint and viewable by its owners and
4
+ * explicit grantees. The sessions its fires create name it back through
5
+ * `session#schedule`, a link the cloud writes and this edition does not
6
+ * (session.ts); the schedule's own relations are unaffected.
7
+ */
8
+ import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
9
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+
11
+ import {
12
+ computed,
13
+ declareKind,
14
+ direct,
15
+ from,
16
+ objectOf,
17
+ union,
18
+ } from "./rewrite.js";
19
+
20
+ export const scheduleDeclaration = declareKind({
21
+ kind: ApiResourceKind.schedule,
22
+ schema: ScheduleSchema,
23
+ source: "fga/model/agentic/schedule.fga",
24
+ relations: [
25
+ ["organization", direct(objectOf("organization"))],
26
+ [
27
+ "owner",
28
+ union(
29
+ direct(objectOf("identity_account")),
30
+ from("admin", "organization"),
31
+ ),
32
+ ],
33
+ ["viewer", union(direct(objectOf("identity_account")), computed("owner"))],
34
+ ["can_view", computed("viewer")],
35
+ ["can_edit", computed("owner")],
36
+ ["can_delete", computed("owner")],
37
+ ["can_grant_access", computed("owner")],
38
+ ["can_view_access", computed("viewer")],
39
+ ],
40
+ });
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/session.fga — a personal resource: the
3
+ * owner and explicit grantees, and NO admin arm anywhere ("private
4
+ * conversations that admins have no business accessing", the file's own
5
+ * words). Three parent links beside the organization: `agent_instance`,
6
+ * `channel` and `schedule`. None is a `kind_meta` fact — the cloud's
7
+ * channel and schedule lanes write them — so on this edition the
8
+ * derivation produces no such tuple and `viewer from channel` / `viewer
9
+ * from schedule` resolve to nobody; the lines stand in the transcript
10
+ * because they are the model's, and a scheduled run reaches its creator
11
+ * through the fire caller's stamp on the session instead.
12
+ */
13
+ import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
14
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
15
+
16
+ import {
17
+ computed,
18
+ declareKind,
19
+ direct,
20
+ from,
21
+ objectOf,
22
+ union,
23
+ } from "./rewrite.js";
24
+
25
+ export const sessionDeclaration = declareKind({
26
+ kind: ApiResourceKind.session,
27
+ schema: SessionSchema,
28
+ source: "fga/model/agentic/session.fga",
29
+ relations: [
30
+ ["organization", direct(objectOf("organization"))],
31
+ ["agent_instance", direct(objectOf("agent_instance"))],
32
+ ["channel", direct(objectOf("agent_channel"))],
33
+ ["schedule", direct(objectOf("schedule"))],
34
+ ["owner", direct(objectOf("identity_account"))],
35
+ ["viewer", union(direct(objectOf("identity_account")), computed("owner"))],
36
+ [
37
+ "can_view",
38
+ union(
39
+ computed("viewer"),
40
+ from("viewer", "channel"),
41
+ from("viewer", "schedule"),
42
+ ),
43
+ ],
44
+ ["can_edit", computed("owner")],
45
+ ["can_delete", computed("owner")],
46
+ ["can_create_execution_in", computed("viewer")],
47
+ ["can_grant_access", computed("owner")],
48
+ ["can_view_access", computed("viewer")],
49
+ ],
50
+ });
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/skill.fga — a blueprint whose verbs are
3
+ * `can_use` and `can_clone` rather than `can_execute`. Only `can_view`,
4
+ * `can_edit`, `can_delete`, `can_grant_access` and `can_view_access` are
5
+ * in the wire's IamPermission vocabulary; the others are the model's and
6
+ * are carried so the transcript is the file.
7
+ */
8
+ import { SkillSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
9
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+
11
+ import {
12
+ computed,
13
+ declareKind,
14
+ direct,
15
+ from,
16
+ objectOf,
17
+ publicWith,
18
+ union,
19
+ usersetOf,
20
+ } from "./rewrite.js";
21
+
22
+ export const skillDeclaration = declareKind({
23
+ kind: ApiResourceKind.skill,
24
+ schema: SkillSchema,
25
+ source: "fga/model/agentic/skill.fga",
26
+ relations: [
27
+ ["organization", direct(objectOf("organization"))],
28
+ [
29
+ "owner",
30
+ union(
31
+ direct(objectOf("identity_account")),
32
+ from("admin", "organization"),
33
+ ),
34
+ ],
35
+ [
36
+ "platform_viewer",
37
+ direct(usersetOf("identity_provider", "platform_user")),
38
+ ],
39
+ [
40
+ "viewer",
41
+ union(
42
+ direct(
43
+ objectOf("identity_account"),
44
+ publicWith("identity_account", "allow_public"),
45
+ usersetOf("organization", "member"),
46
+ usersetOf("organization", "viewer"),
47
+ ),
48
+ computed("owner"),
49
+ computed("platform_viewer"),
50
+ ),
51
+ ],
52
+ ["can_view", computed("viewer")],
53
+ ["can_edit", computed("owner")],
54
+ ["can_delete", computed("owner")],
55
+ ["can_use", computed("viewer")],
56
+ ["can_clone", computed("viewer")],
57
+ ["can_grant_access", computed("owner")],
58
+ ["can_view_access", computed("viewer")],
59
+ ],
60
+ });
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/workflow.fga — the agent's shape
3
+ * without `can_create_instance` (a workflow instance is created through
4
+ * the workflow-instance lane, gated by the organization). Kept as its own
5
+ * transcript, not a shared "blueprint" helper, so the file-by-file drift
6
+ * compare sees exactly this file's lines.
7
+ */
8
+ import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
9
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+
11
+ import {
12
+ computed,
13
+ declareKind,
14
+ direct,
15
+ from,
16
+ objectOf,
17
+ publicWith,
18
+ union,
19
+ usersetOf,
20
+ } from "./rewrite.js";
21
+
22
+ export const workflowDeclaration = declareKind({
23
+ kind: ApiResourceKind.workflow,
24
+ schema: WorkflowSchema,
25
+ source: "fga/model/agentic/workflow.fga",
26
+ relations: [
27
+ ["organization", direct(objectOf("organization"))],
28
+ [
29
+ "owner",
30
+ union(
31
+ direct(objectOf("identity_account")),
32
+ from("admin", "organization"),
33
+ ),
34
+ ],
35
+ [
36
+ "platform_viewer",
37
+ direct(usersetOf("identity_provider", "platform_user")),
38
+ ],
39
+ [
40
+ "viewer",
41
+ union(
42
+ direct(
43
+ objectOf("identity_account"),
44
+ publicWith("identity_account", "allow_public"),
45
+ usersetOf("organization", "member"),
46
+ usersetOf("organization", "viewer"),
47
+ ),
48
+ computed("owner"),
49
+ computed("platform_viewer"),
50
+ ),
51
+ ],
52
+ ["can_view", computed("viewer")],
53
+ ["can_edit", computed("owner")],
54
+ ["can_delete", computed("owner")],
55
+ ["can_execute", computed("viewer")],
56
+ ["can_clone", computed("viewer")],
57
+ ["can_grant_access", computed("owner")],
58
+ ["can_view_access", computed("viewer")],
59
+ ],
60
+ });
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/workflow_execution.fga — a run with an
3
+ * owner of its own (the person who triggered it; `kind_meta` attribution
4
+ * DIRECT, unlike agent_execution's inherited owner) and two ways in for
5
+ * others: an explicit per-run grant, or the instance's opt-in run
6
+ * audience through `execution_viewer from workflow_instance`, standing on
7
+ * the `workflow_instance` link the derivation writes from
8
+ * `spec.workflow_instance_id`. No `can_delete`: run history outlives its
9
+ * instance by design.
10
+ */
11
+ import { WorkflowExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
12
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
13
+
14
+ import {
15
+ computed,
16
+ declareKind,
17
+ direct,
18
+ from,
19
+ objectOf,
20
+ union,
21
+ } from "./rewrite.js";
22
+
23
+ export const workflowExecutionDeclaration = declareKind({
24
+ kind: ApiResourceKind.workflow_execution,
25
+ schema: WorkflowExecutionSchema,
26
+ source: "fga/model/agentic/workflow_execution.fga",
27
+ relations: [
28
+ ["organization", direct(objectOf("organization"))],
29
+ ["workflow_instance", direct(objectOf("workflow_instance"))],
30
+ ["owner", direct(objectOf("identity_account"))],
31
+ [
32
+ "viewer",
33
+ union(
34
+ direct(objectOf("identity_account")),
35
+ computed("owner"),
36
+ from("execution_viewer", "workflow_instance"),
37
+ ),
38
+ ],
39
+ ["can_view", computed("viewer")],
40
+ ["can_edit", computed("owner")],
41
+ ["can_grant_access", computed("owner")],
42
+ ["can_view_access", computed("viewer")],
43
+ ],
44
+ });
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Transcript of fga/model/agentic/workflow_instance.fga — the agent
3
+ * instance's shape plus one relation of its own: `execution_viewer`, the
4
+ * opt-in audience for the instance's RUN history, kept apart from
5
+ * `viewer` so making an instance org-runnable never exposes other
6
+ * people's run inputs and outputs. Consumed by workflow_execution through
7
+ * `execution_viewer from workflow_instance`.
8
+ *
9
+ * `execution_viewer` is derived here from `spec.execution_visibility`
10
+ * (the second rule `kind_meta` cannot express): `organization` derives
11
+ * `#execution_viewer@organization:<org>#viewer` — the organization's full
12
+ * read audience, the shape the file's comment names and the cloud's own
13
+ * store test writes, with `#member` the legacy shape the line still
14
+ * admits — and `private` or unset derives nothing, so each run stays its
15
+ * triggerer's. The cloud has no writer for this tuple today; this
16
+ * edition enforces the field as the contract states it.
17
+ */
18
+ import { isMessage } from "@bufbuild/protobuf";
19
+
20
+ import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
21
+ import { WorkflowInstanceSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
22
+ import { WorkflowExecutionVisibility } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/spec_pb";
23
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
24
+
25
+ import { defaultOfBlueprint } from "./default-of.js";
26
+ import type { DerivedRelation } from "./rewrite.js";
27
+ import {
28
+ computed,
29
+ declareKind,
30
+ direct,
31
+ from,
32
+ objectOf,
33
+ publicWith,
34
+ union,
35
+ usersetOf,
36
+ } from "./rewrite.js";
37
+
38
+ const executionViewer: DerivedRelation = (object, row) => {
39
+ if (!isMessage(row, WorkflowInstanceSchema)) {
40
+ return Promise.resolve([]);
41
+ }
42
+ const level =
43
+ row.spec?.executionVisibility ?? WorkflowExecutionVisibility.unspecified;
44
+ switch (level) {
45
+ case WorkflowExecutionVisibility.organization: {
46
+ const org = row.metadata?.org ?? "";
47
+ return Promise.resolve(
48
+ org === ""
49
+ ? []
50
+ : [
51
+ {
52
+ object,
53
+ relation: "execution_viewer",
54
+ subject: {
55
+ form: "userset",
56
+ object: { type: "organization", id: org },
57
+ relation: "viewer",
58
+ },
59
+ },
60
+ ],
61
+ );
62
+ }
63
+ case WorkflowExecutionVisibility.private:
64
+ case WorkflowExecutionVisibility.unspecified:
65
+ return Promise.resolve([]);
66
+ default: {
67
+ const exhaustive: never = level;
68
+ throw new Error(`unknown execution visibility: ${String(exhaustive)}`);
69
+ }
70
+ }
71
+ };
72
+
73
+ export const workflowInstanceDeclaration = declareKind({
74
+ kind: ApiResourceKind.workflow_instance,
75
+ schema: WorkflowInstanceSchema,
76
+ source: "fga/model/agentic/workflow_instance.fga",
77
+ relations: [
78
+ ["organization", direct(objectOf("organization"))],
79
+ ["workflow", direct(objectOf("workflow"))],
80
+ ["default_of", direct(objectOf("workflow"))],
81
+ ["owner", direct(objectOf("identity_account"))],
82
+ [
83
+ "viewer",
84
+ union(
85
+ direct(
86
+ objectOf("identity_account"),
87
+ publicWith("identity_account", "allow_public"),
88
+ usersetOf("organization", "member"),
89
+ usersetOf("organization", "viewer"),
90
+ ),
91
+ computed("owner"),
92
+ from("viewer", "default_of"),
93
+ ),
94
+ ],
95
+ [
96
+ "execution_viewer",
97
+ direct(
98
+ objectOf("identity_account"),
99
+ usersetOf("organization", "member"),
100
+ usersetOf("organization", "viewer"),
101
+ ),
102
+ ],
103
+ ["can_view", computed("viewer")],
104
+ ["can_execute", computed("can_view")],
105
+ ["can_edit", computed("owner")],
106
+ ["can_delete", computed("owner")],
107
+ ["can_grant_access", computed("owner")],
108
+ ["can_view_access", computed("viewer")],
109
+ ],
110
+ derived: [
111
+ [
112
+ "default_of",
113
+ defaultOfBlueprint({
114
+ kind: ApiResourceKind.workflow,
115
+ schema: WorkflowSchema,
116
+ defaultInstanceIdOf: (workflow) =>
117
+ workflow.status?.defaultInstanceId ?? "",
118
+ }),
119
+ ],
120
+ ["execution_viewer", executionViewer],
121
+ ],
122
+ });