@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
@@ -29,8 +29,18 @@ import path from "node:path";
29
29
  import type { ConnectRouter, Transport } from "@connectrpc/connect";
30
30
 
31
31
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
32
+ import { ServerEdition } from "@stigmer/protos/ai/stigmer/platform/v1/server_info_pb";
32
33
  import { HealthCheckResponse_ServingStatus as ServingStatus } from "@stigmer/protos/grpc/health/v1/health_pb";
33
34
 
35
+ import { newBuiltInAuthorizer } from "../authorization/authorizer.js";
36
+ import { newBuiltInListReadScope } from "../authorization/list-read-scope.js";
37
+ import { newBuiltInOrganizationDirectory } from "../authorization/organization-directory.js";
38
+ import { authorizationPostureOf } from "../authorization/posture.js";
39
+ import { newBuiltInScheduleFireCaller } from "../authorization/schedule-fire-caller.js";
40
+ import type { Authorizer } from "../extensions/authorizer.js";
41
+ import type { ListReadScope } from "../extensions/list-read-scope.js";
42
+ import type { OrganizationDirectory } from "../extensions/organization-directory.js";
43
+ import type { ScheduleFireCallerMint } from "../extensions/schedule-fire-caller.js";
34
44
  import { registerAgentServices } from "../domain/agent/controller.js";
35
45
  import {
36
46
  newConfigFromEnv,
@@ -99,12 +109,15 @@ import { registerMcpServerServices } from "../domain/mcpserver/controller.js";
99
109
  import { registerPlatformServices } from "../domain/platform/controller.js";
100
110
  import { registerProjectServices } from "../domain/project/controller.js";
101
111
  import { registerSessionServices } from "../domain/session/controller.js";
112
+ import { registerPluginServices } from "../domain/plugin/controller.js";
113
+ import { PLUGIN_ARTIFACT_KEY_PREFIX } from "../domain/plugin/constants.js";
102
114
  import { registerSkillServices } from "../domain/skill/controller.js";
103
115
  import {
104
116
  DEFAULT_SLOT_TTL_MS,
105
117
  MAX_ZIP_SIZE,
106
118
  } from "../domain/skill/constants.js";
107
119
  import { newSkillArtifactStorage } from "../domain/skill/storage/artifact-storage.js";
120
+ import { newContentAddressedArchiveStore } from "../archive/content-store.js";
108
121
  import {
109
122
  newSkillTransferLane,
110
123
  uploadUrl as skillUploadUrl,
@@ -285,20 +298,6 @@ export async function composeServer(
285
298
  units: extensions.unitNames.join(", "),
286
299
  });
287
300
  }
288
- // The ONE composed Authorizer (DD-007 §3): an extension's registration
289
- // or the OSS permissive single-team default. Resolved here, handed to
290
- // every controller as an explicit dependency — the Authorize step at
291
- // position 1 of every chain calls it (O2).
292
- const authorizer =
293
- extensions.authorizer ?? newPermissiveSingleTeamAuthorizer();
294
- // The built-in authorization POSTURE (20260913.01, Q-OR-6), named once:
295
- // no unit registered an Authorizer, so the roles open source records
296
- // exist to feed the built-in one. Under it — and only under it — the
297
- // identity-accounts stage below installs the built-in role lifecycle
298
- // and the membership rules; a composition with its own Authorizer has
299
- // its own onboarding and gets neither.
300
- const builtInAuthorization = extensions.authorizer === undefined;
301
-
302
301
  // Stage: storage — the driver selection seam (DD-010): DATABASE_URL
303
302
  // present → Postgres (async connect + advisory-locked migrations), else
304
303
  // sqlite on DB_PATH (migrations v1–v7, incl. adopting a Go-created
@@ -331,6 +330,38 @@ export async function composeServer(
331
330
  const requireAuthentication =
332
331
  authEnabled || extensions.requireAuthentication !== undefined;
333
332
 
333
+ // The AUTHORIZATION posture (authorization/posture.ts), named once and
334
+ // handed down: a unit's own Authorizer (nothing built in installs);
335
+ // the built-in posture (no unit Authorizer under an authentication
336
+ // posture — open source composes its Authorizer, organization directory
337
+ // and schedule fire caller below, and the roles 2b records are
338
+ // enforced); or trusted-local (the permissive default: one caller,
339
+ // nothing to separate). `builtInAuthorization` (20260913.01, Q-OR-6) is
340
+ // the first two together — the roles exist to feed the built-in
341
+ // authorizer, so the identity stage installs the built-in role
342
+ // lifecycle and the membership rules under both; a composition with its
343
+ // own Authorizer has its own onboarding and gets neither.
344
+ const authorizationPosture = authorizationPostureOf({
345
+ unitAuthorizer: extensions.authorizer !== undefined,
346
+ requireAuthentication,
347
+ });
348
+ const builtInAuthorization = authorizationPosture !== "unit-authorizer";
349
+ // The built-in authorizer declares the open-source kinds and no other
350
+ // (its registry is pinned set-equal to that tier), so a composition
351
+ // that serves a wider edition must bring its own Authorizer: every
352
+ // check on a kind the model does not declare would otherwise fault
353
+ // INTERNAL per request. Refused at boot, the same class as a
354
+ // misconfigured registry (DD-006 §2b) and the verifierless posture
355
+ // below — caught before any side effect.
356
+ if (
357
+ authorizationPosture === "built-in" &&
358
+ extensions.edition !== ServerEdition.oss
359
+ ) {
360
+ throw new Error(
361
+ `the composition serves edition '${ServerEdition[extensions.edition]}' under the require-authentication posture but registers no Authorizer — the built-in authorizer enforces the open-source kinds only; register an Authorizer or serve the open-source edition`,
362
+ );
363
+ }
364
+
334
365
  // Stage: identity accounts (20260911.11) — the first domain whose
335
366
  // persistence is a PORT rather than the generic Store. The composed
336
367
  // driver (`drivers.identityAccountStore`, Q-IA-9) serves when a unit
@@ -400,6 +431,75 @@ export async function composeServer(
400
431
  operatorEmail: operatorIdentity.email,
401
432
  })
402
433
  : undefined;
434
+ // The ONE composed Authorizer (DD-007 §3), bound here — after the store,
435
+ // the account port and the IamPolicy port it reads — and handed to every
436
+ // controller as an explicit dependency; the Authorize step at position 1
437
+ // of every chain calls it (O2). By posture: an extension's registration;
438
+ // open source's built-in Authorizer (authorization/authorizer.ts — the
439
+ // cloud's model evaluated over the tuples the row would have had); or
440
+ // the permissive single-team default. The organization directory and the
441
+ // schedule fire caller are bound beside it under the same posture, so
442
+ // `findMyOrganizations` lists what a person may view and a scheduled run
443
+ // belongs to the person who scheduled it — a fire the internal lane
444
+ // would otherwise hand to nobody an enforcing evaluator recognizes.
445
+ const authorizer: Authorizer =
446
+ extensions.authorizer ??
447
+ (authorizationPosture === "built-in"
448
+ ? newBuiltInAuthorizer({
449
+ store,
450
+ policies: iamPolicies,
451
+ accounts: identityAccounts,
452
+ edition: extensions.edition,
453
+ logger,
454
+ })
455
+ : newPermissiveSingleTeamAuthorizer());
456
+ const organizationDirectory: OrganizationDirectory | undefined =
457
+ extensions.drivers.organizationDirectory ??
458
+ (authorizationPosture === "built-in"
459
+ ? newBuiltInOrganizationDirectory({
460
+ store,
461
+ policies: iamPolicies,
462
+ accounts: identityAccounts,
463
+ })
464
+ : undefined);
465
+ const scheduleFireCaller: ScheduleFireCallerMint | undefined =
466
+ extensions.drivers.scheduleFireCaller ??
467
+ (authorizationPosture === "built-in"
468
+ ? newBuiltInScheduleFireCaller({ store, accounts: identityAccounts })
469
+ : undefined);
470
+ // The ONE list read scope (the seam's single-instance point), bound
471
+ // here under the same posture and handed to every list-shaped consumer
472
+ // below — the post-scan lanes through restrictListByReadScope, the
473
+ // search, activity and summary lanes through the enumeration verb. A
474
+ // unit's driver wins in every posture; the built-in one evaluates the
475
+ // model per candidate over the facts the candidate carries
476
+ // (authorization/list-read-scope.ts); trusted-local composes none and
477
+ // keeps the full scan.
478
+ const listReadScope: ListReadScope | undefined =
479
+ extensions.drivers.listReadScope ??
480
+ (authorizationPosture === "built-in"
481
+ ? newBuiltInListReadScope({
482
+ store,
483
+ policies: iamPolicies,
484
+ accounts: identityAccounts,
485
+ logger,
486
+ })
487
+ : undefined);
488
+ logger.info("authorization posture resolved", {
489
+ posture: authorizationPosture,
490
+ authorizer:
491
+ extensions.authorizer !== undefined
492
+ ? "extension"
493
+ : authorizationPosture === "built-in"
494
+ ? "built-in"
495
+ : "permissive",
496
+ listReadScope:
497
+ extensions.drivers.listReadScope !== undefined
498
+ ? "extension"
499
+ : authorizationPosture === "built-in"
500
+ ? "built-in"
501
+ : "none",
502
+ });
403
503
  const identityAccountPath = {
404
504
  accounts: identityAccounts,
405
505
  logger,
@@ -456,6 +556,22 @@ export async function composeServer(
456
556
  });
457
557
  }
458
558
  }
559
+ // The built-in posture's own boot ensure, the sibling of the block
560
+ // above: the membership rules run at a person's FIRST provisioning, so a
561
+ // database whose people were provisioned before the rules existed (a
562
+ // 3.15.x self-host with OIDC on) holds accounts with no role rows — and
563
+ // the built-in authorizer below would make every one of them an
564
+ // outsider on every organization, with nobody left who could grant a
565
+ // way back. Once per database (a bootstrap-state marker; the rules'
566
+ // header), the same arms run for every person account in creation
567
+ // order; a fault is a loud boot throw like the storage stage's, and the
568
+ // next boot converges. Under the built-in posture only: a unit with its
569
+ // own Authorizer has its own onboarding, and trusted-local has the
570
+ // operator ensure above and one principal.
571
+ if (authorizationPosture === "built-in" && membership !== undefined) {
572
+ await membership.ensureRolesForExistingAccounts();
573
+ logger.info("built-in posture role reconciliation ensured");
574
+ }
459
575
 
460
576
  // Stage: keys — the ratified fail-loud boot ASYMMETRY (D2 cross-domain
461
577
  // invariants; Go server.go:277-293):
@@ -643,9 +759,10 @@ export async function composeServer(
643
759
  );
644
760
  // Every fire enters the FULL execution create pipeline through the
645
761
  // in-process agentexecution client (Go server.go 581: the RunStarter's
646
- // ExecutionCreator edge). The composed scheduleFireCaller driver
647
- // (stigmer-cloud#572), when present, gives each fire its edition
648
- // identity — propagated by the creator's asCaller lane.
762
+ // ExecutionCreator edge). The scheduleFireCaller driver bound in the
763
+ // identity stage (stigmer-cloud#572; a unit's, or open source's under
764
+ // the built-in posture), when present, gives each fire its identity —
765
+ // propagated by the creator's asCaller lane.
649
766
  const scheduleRunStarter = new RunStarter({
650
767
  store,
651
768
  config: scheduleTemporalConfig,
@@ -656,7 +773,7 @@ export async function composeServer(
656
773
  fireCaller,
657
774
  ),
658
775
  },
659
- fireCallerMint: extensions.drivers.scheduleFireCaller,
776
+ fireCallerMint: scheduleFireCaller,
660
777
  logger,
661
778
  });
662
779
  const scheduleReconciler = new ScheduleReconciler(
@@ -820,6 +937,14 @@ export async function composeServer(
820
937
  );
821
938
  })();
822
939
  const skillArtifactStorage = newSkillArtifactStorage(skillStorageDriver);
940
+ // Plugin archives are pushed archives exactly as skills' are, so they
941
+ // ride the same blob driver and backend selection; the key prefix
942
+ // (`plugins/`) keeps the two stores apart and the plugin store owns its
943
+ // keys (src/archive/content-store.ts).
944
+ const pluginArtifactStorage = newContentAddressedArchiveStore(
945
+ skillStorageDriver,
946
+ PLUGIN_ARTIFACT_KEY_PREFIX,
947
+ );
823
948
  const skillTransferLane = newSkillTransferLane(
824
949
  skillUploadSlots,
825
950
  skillArtifactStorage,
@@ -886,14 +1011,10 @@ export async function composeServer(
886
1011
  const searchHandler = new SearchHandler(
887
1012
  searchQueryStore,
888
1013
  logger,
889
- extensions.drivers.listReadScope,
1014
+ listReadScope,
890
1015
  );
891
1016
  // The activity recents feed (#14) — pure reads over listResources.
892
- const activityHandler = new ActivityHandler(
893
- store,
894
- logger,
895
- extensions.drivers.listReadScope,
896
- );
1017
+ const activityHandler = new ActivityHandler(store, logger, listReadScope);
897
1018
  // The environment runtime-resolution service (#5) — the decrypt-for-
898
1019
  // execution path the EC builder uses to resolve environment_refs (the
899
1020
  // RPC surface redacts secret values, oss#405).
@@ -972,10 +1093,10 @@ export async function composeServer(
972
1093
  logger,
973
1094
  authorizer,
974
1095
  gateSteps: extensions.gateSteps,
975
- // The role lifecycle (the identity stage): the composed driver, or
976
- // open source's owner-row writer under the built-in posture.
1096
+ // The role lifecycle and the directory (the identity stage): the
1097
+ // composed drivers, or open source's under the built-in posture.
977
1098
  authorizationLifecycle: roleLifecycle,
978
- organizationDirectory: extensions.drivers.organizationDirectory,
1099
+ organizationDirectory,
979
1100
  });
980
1101
  // ApiKey is the first domain born AFTER the Go port (O3, 20260827.06 —
981
1102
  // DD-003: the apikey contract is wholly OSS), so it has no Go
@@ -987,7 +1108,7 @@ export async function composeServer(
987
1108
  logger,
988
1109
  authorizer,
989
1110
  authorizationLifecycle,
990
- listReadScope: extensions.drivers.listReadScope,
1111
+ listReadScope,
991
1112
  });
992
1113
  // IdentityAccount (20260911.11): served once by open source in every
993
1114
  // edition over the store PORT bound in the identity-accounts stage; a
@@ -1028,7 +1149,7 @@ export async function composeServer(
1028
1149
  authorizer,
1029
1150
  secretService,
1030
1151
  authorizationLifecycle,
1031
- listReadScope: extensions.drivers.listReadScope,
1152
+ listReadScope,
1032
1153
  });
1033
1154
  // OAuthApp reuses the environment's SecretService instance — Go wires
1034
1155
  // ONE encryption service for both (server.go 302–307).
@@ -1060,7 +1181,7 @@ export async function composeServer(
1060
1181
  authorizer,
1061
1182
  authorizationLifecycle,
1062
1183
  parentAgentLoader: () => requireInProcess().parentAgentLoader,
1063
- listReadScope: extensions.drivers.listReadScope,
1184
+ listReadScope,
1064
1185
  });
1065
1186
  registerSessionServices(router, {
1066
1187
  store,
@@ -1071,7 +1192,7 @@ export async function composeServer(
1071
1192
  gateSteps: extensions.gateSteps,
1072
1193
  sandboxLane,
1073
1194
  authorizationLifecycle,
1074
- listReadScope: extensions.drivers.listReadScope,
1195
+ listReadScope,
1075
1196
  });
1076
1197
  // The sharing/channel family registers after the agent family, as in
1077
1198
  // Go server.go (agent 378 → agentshare 384 → agentchannel 391 →
@@ -1083,14 +1204,14 @@ export async function composeServer(
1083
1204
  logger,
1084
1205
  authorizer,
1085
1206
  authorizationLifecycle,
1086
- listReadScope: extensions.drivers.listReadScope,
1207
+ listReadScope,
1087
1208
  });
1088
1209
  registerAgentChannelServices(router, {
1089
1210
  store,
1090
1211
  logger,
1091
1212
  authorizer,
1092
1213
  authorizationLifecycle,
1093
- listReadScope: extensions.drivers.listReadScope,
1214
+ listReadScope,
1094
1215
  // The SAME domain-owned registry instance the workflow validator
1095
1216
  // and the registry lanes read — the channel model-pin rule
1096
1217
  // (stigmer/stigmer#774) can never drift from the served pickers.
@@ -1124,14 +1245,14 @@ export async function composeServer(
1124
1245
  clock: () => scheduleSyncer,
1125
1246
  runner: () => scheduleRunStarter,
1126
1247
  authorizationLifecycle,
1127
- listReadScope: extensions.drivers.listReadScope,
1248
+ listReadScope,
1128
1249
  });
1129
1250
  registerMemoryServices(router, {
1130
1251
  store,
1131
1252
  logger,
1132
1253
  authorizer,
1133
1254
  authorizationLifecycle,
1134
- listReadScope: extensions.drivers.listReadScope,
1255
+ listReadScope,
1135
1256
  runnerCredentialProvider: runnerCredentials,
1136
1257
  });
1137
1258
  registerAgentExecutionServices(router, {
@@ -1139,7 +1260,7 @@ export async function composeServer(
1139
1260
  logger,
1140
1261
  authorizer,
1141
1262
  authorizationLifecycle,
1142
- listReadScope: extensions.drivers.listReadScope,
1263
+ listReadScope,
1143
1264
  runnerCredentialProvider: runnerCredentials,
1144
1265
  broker: agentExecutionStreamBroker,
1145
1266
  engineState: executionEngineState,
@@ -1182,14 +1303,14 @@ export async function composeServer(
1182
1303
  authorizer,
1183
1304
  authorizationLifecycle,
1184
1305
  parentWorkflowLoader: () => requireInProcess().parentWorkflowLoader,
1185
- listReadScope: extensions.drivers.listReadScope,
1306
+ listReadScope,
1186
1307
  });
1187
1308
  registerWorkflowExecutionServices(router, {
1188
1309
  store,
1189
1310
  logger,
1190
1311
  authorizer,
1191
1312
  authorizationLifecycle,
1192
- listReadScope: extensions.drivers.listReadScope,
1313
+ listReadScope,
1193
1314
  gateSteps: extensions.gateSteps,
1194
1315
  engineState: workflowExecutionEngineState,
1195
1316
  broker: workflowExecutionStreamBroker,
@@ -1263,6 +1384,22 @@ export async function composeServer(
1263
1384
  baseUrl: config.skillTransferBaseUrl,
1264
1385
  },
1265
1386
  });
1387
+ // Plugins materialise their members through the in-process lane as
1388
+ // the installing caller; the lazy provider resolves the clients built
1389
+ // from these same routes after boot. The upload slots are the skill
1390
+ // lane's: one upload surface for every archive.
1391
+ registerPluginServices(router, {
1392
+ store,
1393
+ logger,
1394
+ authorizer,
1395
+ authorizationLifecycle,
1396
+ artifactStorage: pluginArtifactStorage,
1397
+ materializerProvider: () => requireInProcess().pluginMaterializer,
1398
+ transferLane: {
1399
+ slots: skillUploadSlots,
1400
+ baseUrl: config.skillTransferBaseUrl,
1401
+ },
1402
+ });
1266
1403
  // Artifact CRUD shares the ONE blob store with agentexecution's
1267
1404
  // attachment lanes (Go server.go 347–374).
1268
1405
  registerArtifactServices(router, {
@@ -70,6 +70,9 @@ import type {
70
70
  import type { AgentExecutionApprovalForwarder } from "../domain/workflowexecution/submit-approval.js";
71
71
  import type { AgentExecutionFileDecisionForwarder } from "../domain/workflowexecution/submit-file-decision.js";
72
72
  import type { ParentWorkflowLoader } from "../domain/workflowinstance/steps.js";
73
+ import type { PluginMaterializer } from "../domain/plugin/materialize/ports.js";
74
+ import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
75
+ import type { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
73
76
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
74
77
  import type { OrphanDeleter } from "../domain/project/reconcile.js";
75
78
  import type { ExecutionStatusWriter } from "../temporal/agentexecution/activities.js";
@@ -153,6 +156,17 @@ export interface InProcessClients {
153
156
  * minted — exactly like the schedule clock and the reconciler above.
154
157
  */
155
158
  readonly executionStatusWriter: ExecutionStatusWriter;
159
+ /**
160
+ * The plugin controller's materialisation edge: every member a plugin
161
+ * installs, upgrades, re-levels or removes goes through the owning
162
+ * domain's FULL chain (skill push, the three applies, updateVisibility,
163
+ * delete) AS THE INSTALLING CALLER (the asCaller call options), so a
164
+ * materialised skill is attributed to the user who installed it and
165
+ * carries the plugin's reserved labels by the in-process origin the
166
+ * guards pass structurally. The delete routing is the reconciler's
167
+ * switch, shared.
168
+ */
169
+ readonly pluginMaterializer: PluginMaterializer;
156
170
  }
157
171
 
158
172
  /**
@@ -378,38 +392,102 @@ export function createInProcessClients(
378
392
  // delete is attempted, in both editions. Log-only surface: reconcile
379
393
  // failures never reach the wire.
380
394
  projectOrphanDeleter: {
381
- async delete(kind, resourceId) {
382
- switch (kind) {
383
- case ApiResourceKind.agent:
384
- await agentCommand.delete(
385
- create(AgentIdSchema, { value: resourceId }),
386
- );
387
- return;
388
- case ApiResourceKind.workflow:
389
- await workflowCommand.delete(
390
- create(WorkflowIdSchema, { value: resourceId }),
391
- );
392
- return;
393
- case ApiResourceKind.mcp_server:
394
- // McpServer's delete input is the commons ApiResourceDeleteInput
395
- // (not an id wrapper) — Go's client builds the same message.
396
- await mcpServerCommand.delete(
397
- create(ApiResourceDeleteInputSchema, { resourceId }),
398
- );
399
- return;
400
- case ApiResourceKind.skill:
401
- await skillCommand.delete(
402
- create(SkillIdSchema, { value: resourceId }),
403
- );
404
- return;
405
- default:
406
- throw new Error(
407
- `unsupported resource kind for delete: ${ApiResourceKind[kind] ?? String(kind)}`,
408
- );
409
- }
410
- },
395
+ delete: (kind, resourceId) => deleteByKind(kind, resourceId),
396
+ },
397
+ pluginMaterializer: {
398
+ pushSkill: (request, caller) =>
399
+ skillCommand.push(request, asCaller(caller)),
400
+ applyMcpServer: (server, caller) =>
401
+ mcpServerCommand.apply(server, asCaller(caller)),
402
+ applyAgent: (agent, caller) =>
403
+ agentCommand.apply(agent, asCaller(caller)),
404
+ applyWorkflow: (workflow, caller) =>
405
+ workflowCommand.apply(workflow, asCaller(caller)),
406
+ updateVisibility: (kind, resourceId, visibility, caller) =>
407
+ updateVisibilityByKind(kind, resourceId, visibility, asCaller(caller)),
408
+ deleteByKind: (kind, resourceId, caller) =>
409
+ deleteByKind(kind, resourceId, asCaller(caller)),
411
410
  },
412
411
  };
413
412
 
413
+ /**
414
+ * Delete routing for the four reconciled kinds — Go's
415
+ * ResourceDeleterAdapter.Delete switch (execution_engine.go:75-92),
416
+ * shared by the project reconciler (internal class, no caller) and the
417
+ * plugin controller (as the installing caller). Every orphan or member
418
+ * delete runs the owning domain's FULL pipeline. The unsupported-kind
419
+ * default is defense-in-depth: both callers refuse unsupported kinds
420
+ * before any delete is attempted.
421
+ */
422
+ async function deleteByKind(
423
+ kind: ApiResourceKind,
424
+ resourceId: string,
425
+ options?: CallOptions,
426
+ ): Promise<void> {
427
+ switch (kind) {
428
+ case ApiResourceKind.agent:
429
+ await agentCommand.delete(
430
+ create(AgentIdSchema, { value: resourceId }),
431
+ options,
432
+ );
433
+ return;
434
+ case ApiResourceKind.workflow:
435
+ await workflowCommand.delete(
436
+ create(WorkflowIdSchema, { value: resourceId }),
437
+ options,
438
+ );
439
+ return;
440
+ case ApiResourceKind.mcp_server:
441
+ // McpServer's delete input is the commons ApiResourceDeleteInput
442
+ // (not an id wrapper) — Go's client builds the same message.
443
+ await mcpServerCommand.delete(
444
+ create(ApiResourceDeleteInputSchema, { resourceId }),
445
+ options,
446
+ );
447
+ return;
448
+ case ApiResourceKind.skill:
449
+ await skillCommand.delete(
450
+ create(SkillIdSchema, { value: resourceId }),
451
+ options,
452
+ );
453
+ return;
454
+ default:
455
+ throw new Error(
456
+ `unsupported resource kind for delete: ${ApiResourceKind[kind] ?? String(kind)}`,
457
+ );
458
+ }
459
+ }
460
+
461
+ /** The one door for a level change on each member kind (metadata.proto). */
462
+ async function updateVisibilityByKind(
463
+ kind: ApiResourceKind,
464
+ resourceId: string,
465
+ visibility: ApiResourceVisibility,
466
+ options: CallOptions,
467
+ ): Promise<void> {
468
+ const input = create(UpdateVisibilityInputSchema, {
469
+ resourceId,
470
+ visibility,
471
+ });
472
+ switch (kind) {
473
+ case ApiResourceKind.agent:
474
+ await agentCommand.updateVisibility(input, options);
475
+ return;
476
+ case ApiResourceKind.workflow:
477
+ await workflowCommand.updateVisibility(input, options);
478
+ return;
479
+ case ApiResourceKind.mcp_server:
480
+ await mcpServerCommand.updateVisibility(input, options);
481
+ return;
482
+ case ApiResourceKind.skill:
483
+ await skillCommand.updateVisibility(input, options);
484
+ return;
485
+ default:
486
+ throw new Error(
487
+ `unsupported resource kind for updateVisibility: ${ApiResourceKind[kind] ?? String(kind)}`,
488
+ );
489
+ }
490
+ }
491
+
414
492
  return { clients, transport };
415
493
  }
@@ -64,6 +64,7 @@ import {
64
64
  EXISTING_RESOURCE_KEY,
65
65
  newLoadExistingStep,
66
66
  } from "../../pipeline/steps/load-existing.js";
67
+ import { newGuardPluginManagedStep } from "../../pipeline/steps/guard-plugin-managed.js";
67
68
  import {
68
69
  SHOULD_CREATE_KEY,
69
70
  newLoadForApplyStep,
@@ -216,6 +217,10 @@ async function update(
216
217
  .addStep(newValidateProtoStep())
217
218
  .addStep(newResolveSlugStep())
218
219
  .addStep(newLoadExistingStep(deps.store))
220
+ // A resource a plugin materialised is the plugin's to redefine; a client
221
+ // write is refused naming the plugin (GuardPluginManaged, keyed on the
222
+ // STORED labels and the plugin row's existence).
223
+ .addStep(newGuardPluginManagedStep(deps.store))
219
224
  .addStep(newBuildUpdateStateStep())
220
225
  .addStep(newGuardReservedLabelsStep(deps.authorizer))
221
226
  .addStep(newNormalizeReferencesStep())
@@ -294,6 +299,7 @@ async function deleteAgent(
294
299
  .addStep(newValidateProtoStep())
295
300
  .addStep(newExtractResourceIdStep())
296
301
  .addStep(newLoadExistingForDeleteStep(deps.store, AgentSchema))
302
+ .addStep(newGuardPluginManagedStep(deps.store))
297
303
  .addStep(newCascadeDeleteInstancesStep(deps.store, deps.logger))
298
304
  .addStep(newCascadeDeleteSharesStep(deps.store, deps.logger))
299
305
  .addStep(newDeleteResourceStep(deps.store))
@@ -349,6 +355,11 @@ async function updateVisibility(
349
355
  )
350
356
  .addStep(newValidateProtoStep())
351
357
  .addStep(newLoadAgentForVisibilityUpdateStep(deps.store))
358
+ .addStep(
359
+ newGuardPluginManagedStep(deps.store, {
360
+ existingKey: UPDATE_VISIBILITY_AGENT_KEY,
361
+ }),
362
+ )
352
363
  .addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_AGENT_KEY))
353
364
  .addStep(newValidateVisibilityUpdateStep())
354
365
  .addStep(