@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,128 @@
1
+ /**
2
+ * The agent from a plugin — materialised only when the plugin carries
3
+ * something agent-like: a skill, a sub-agent file, or an
4
+ * `ai.stigmer/agent.yaml`. An MCP-only plugin becomes its servers and no
5
+ * agent (the "a plugin is a toolbox, an agent is the worker" rule): most
6
+ * plugins in the wild are one server and one token, and five thin agents
7
+ * nobody runs would be the plugin-versus-agent confusion this kind exists
8
+ * to remove.
9
+ *
10
+ * Two sources, never mixed: the author's `agent.yaml` wholesale when
11
+ * present (its references still resolve in the agent chain's
12
+ * ValidateReferences), otherwise the composed default — instructions from
13
+ * the versioned template, every skill as a `skill_ref`, every server as an
14
+ * `mcp_server_usage`, every `agents/*.md` as a `sub_agent` with access to
15
+ * all the plugin's servers and the skills it asked for.
16
+ *
17
+ * Model hints are recorded, never applied: a dialect's `model` becomes a
18
+ * status warning and the sub-agent runs on the session's model. The
19
+ * catalog seam exposes neither family nor cost tier, the runner drops a
20
+ * sub-agent whose override it cannot resolve, and pinning a model the user
21
+ * did not choose has cost consequences; a later catalog seam can change
22
+ * this in one place. A sub-agent named like a runner built-in is recorded
23
+ * the same way: the runner warns and continues, so the install does too.
24
+ */
25
+ import { create } from "@bufbuild/protobuf";
26
+ import { AgentSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
27
+ import { AgentSpecSchema, McpAccessSchema, McpServerUsageSchema, SubAgentSchema, } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/spec_pb";
28
+ import { PluginWarningSchema } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/status_pb";
29
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
30
+ import { ApiResourceReferenceSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
31
+ import { BUILT_IN_SUB_AGENT_NAMES, SERVER_WARNING_KINDS, } from "../constants.js";
32
+ import { renderDefaultAgentInstructions } from "./default-agent-instructions.js";
33
+ import { memberMetadata } from "./identity.js";
34
+ import { mcpServerSlugOf } from "./mcp-servers.js";
35
+ import { skillSlugOf } from "./skills.js";
36
+ /** Whether the plugin materialises an agent at all. */
37
+ export function carriesAgent(plugin) {
38
+ return (plugin.skills.length > 0 ||
39
+ plugin.subAgents.length > 0 ||
40
+ plugin.overlay.agent !== undefined);
41
+ }
42
+ export function planAgent(plugin, overlayAgent, identity, warnings) {
43
+ if (!carriesAgent(plugin)) {
44
+ return undefined;
45
+ }
46
+ const member = { name: identity.name, slug: identity.slug };
47
+ if (overlayAgent !== undefined) {
48
+ return {
49
+ ...member,
50
+ resource: create(AgentSchema, {
51
+ apiVersion: "agentic.stigmer.ai/v1",
52
+ kind: "Agent",
53
+ metadata: memberMetadata(identity, member, overlayAgent.metadata),
54
+ spec: overlayAgent.spec,
55
+ }),
56
+ };
57
+ }
58
+ const serverSlugs = plugin.mcpServers.map(mcpServerSlugOf);
59
+ const skillSlugByName = new Map(plugin.skills.map((skill) => [skill.name, skillSlugOf(skill)]));
60
+ const spec = create(AgentSpecSchema, {
61
+ description: plugin.description ?? "",
62
+ instructions: renderDefaultAgentInstructions(plugin),
63
+ skillRefs: [...skillSlugByName.values()].map((slug) => create(ApiResourceReferenceSchema, {
64
+ org: identity.org,
65
+ kind: ApiResourceKind.skill,
66
+ slug,
67
+ })),
68
+ mcpServerUsages: serverSlugs.map((slug) => create(McpServerUsageSchema, {
69
+ mcpServerRef: create(ApiResourceReferenceSchema, {
70
+ org: identity.org,
71
+ kind: ApiResourceKind.mcp_server,
72
+ slug,
73
+ }),
74
+ })),
75
+ subAgents: plugin.subAgents.map((subAgent) => planSubAgent(subAgent, identity, serverSlugs, skillSlugByName, warnings)),
76
+ });
77
+ return {
78
+ ...member,
79
+ resource: create(AgentSchema, {
80
+ apiVersion: "agentic.stigmer.ai/v1",
81
+ kind: "Agent",
82
+ metadata: memberMetadata(identity, member),
83
+ spec,
84
+ }),
85
+ };
86
+ }
87
+ function planSubAgent(subAgent, identity, serverSlugs, skillSlugByName, warnings) {
88
+ if (BUILT_IN_SUB_AGENT_NAMES.has(subAgent.name)) {
89
+ warnings.push(create(PluginWarningSchema, {
90
+ kind: SERVER_WARNING_KINDS.subAgentNameBuiltin,
91
+ path: subAgent.path,
92
+ message: `sub-agent '${subAgent.name}' shares its name with a built-in sub-agent; ` +
93
+ "the runner warns and runs the plugin's",
94
+ }));
95
+ }
96
+ const hint = subAgent.modelHint;
97
+ if (hint !== undefined &&
98
+ hint.alias !== "inherit" &&
99
+ hint.alias !== "unknown") {
100
+ // An unknown alias already carries the library's own sentence.
101
+ warnings.push(create(PluginWarningSchema, {
102
+ kind: SERVER_WARNING_KINDS.modelHintUnresolved,
103
+ path: subAgent.path,
104
+ message: `sub-agent '${subAgent.name}' names model '${hint.raw}'; Stigmer does not pin a model ` +
105
+ "from a plugin, so it runs on the session's model",
106
+ }));
107
+ }
108
+ return create(SubAgentSchema, {
109
+ name: subAgent.name,
110
+ description: subAgent.description ?? "",
111
+ instructions: subAgent.instructions,
112
+ mcpAccess: serverSlugs.map((slug) => create(McpAccessSchema, { mcpServer: slug })),
113
+ skillRefs: subAgent.skillNames.flatMap((name) => {
114
+ const slug = skillSlugByName.get(name);
115
+ // An unknown skill name already carries the library's own warning.
116
+ return slug === undefined
117
+ ? []
118
+ : [
119
+ create(ApiResourceReferenceSchema, {
120
+ org: identity.org,
121
+ kind: ApiResourceKind.skill,
122
+ slug,
123
+ }),
124
+ ];
125
+ }),
126
+ });
127
+ }
128
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The system prompt of a plugin's composed agent — the agent Stigmer
3
+ * materialises when a plugin carries skills or sub-agents but no
4
+ * `ai.stigmer/agent.yaml` of its own. A prompt is code: this module is its
5
+ * one home, it is versioned so a later change to the wording is a visible
6
+ * behaviour change with a number, and its rendering is pinned by a snapshot
7
+ * test. Nothing here reaches the runner; the text becomes
8
+ * `AgentSpec.instructions` and the runner composes it with the mounted
9
+ * skills like any other agent's.
10
+ *
11
+ * Design: the template names the plugin, lists what it carries, and gives
12
+ * three standing instructions (read the skill before acting, use the tools
13
+ * it names, report what was and was not done). Deliberately short: skills
14
+ * carry the real knowledge, and a long composed prompt would compete with
15
+ * them for the model's attention.
16
+ */
17
+ import type { PluginPackage } from "@stigmer/plugin-package";
18
+ /** Bumped whenever the rendered text changes; the snapshot test pins the pair. */
19
+ export declare const DEFAULT_AGENT_INSTRUCTIONS_VERSION = 1;
20
+ /** Renders the composed agent's instructions for a plugin. */
21
+ export declare function renderDefaultAgentInstructions(plugin: PluginPackage): string;
22
+ //# sourceMappingURL=default-agent-instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-agent-instructions.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/default-agent-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,kFAAkF;AAClF,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD,8DAA8D;AAC9D,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAoC5E"}
@@ -0,0 +1,31 @@
1
+ /** Bumped whenever the rendered text changes; the snapshot test pins the pair. */
2
+ export const DEFAULT_AGENT_INSTRUCTIONS_VERSION = 1;
3
+ /** Renders the composed agent's instructions for a plugin. */
4
+ export function renderDefaultAgentInstructions(plugin) {
5
+ const lines = [];
6
+ const description = plugin.description?.trim() ?? "";
7
+ lines.push(description === ""
8
+ ? `You are ${plugin.name}, an agent installed from the ${plugin.name} plugin.`
9
+ : `You are ${plugin.name}: ${description}`);
10
+ if (plugin.skills.length > 0) {
11
+ lines.push("");
12
+ lines.push("Your skills:");
13
+ for (const skill of plugin.skills) {
14
+ const summary = skill.description?.trim() ?? "";
15
+ lines.push(summary === "" ? `- ${skill.name}` : `- ${skill.name}: ${summary}`);
16
+ }
17
+ }
18
+ if (plugin.mcpServers.length > 0) {
19
+ lines.push("");
20
+ lines.push("Your tools come from these MCP servers:");
21
+ for (const server of plugin.mcpServers) {
22
+ lines.push(`- ${server.name}`);
23
+ }
24
+ }
25
+ lines.push("");
26
+ lines.push("Before acting on a task a skill covers, read that skill and follow it. " +
27
+ "Use the tools your servers provide rather than guessing at their results. " +
28
+ "When you finish, state what you did and what you could not do.");
29
+ return lines.join("\n");
30
+ }
31
+ //# sourceMappingURL=default-agent-instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-agent-instructions.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/default-agent-instructions.ts"],"names":[],"mappings":"AAkBA,kFAAkF;AAClF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,UAAU,8BAA8B,CAAC,MAAqB;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrD,KAAK,CAAC,IAAI,CACR,WAAW,KAAK,EAAE;QAChB,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,iCAAiC,MAAM,CAAC,IAAI,UAAU;QAC9E,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAC7C,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CACR,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,yEAAyE;QACvE,4EAA4E;QAC5E,gEAAgE,CACnE,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
2
+ import type { ApiResourceMetadata } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
3
+ /** The plugin, as its members see it. */
4
+ export interface PluginIdentity {
5
+ readonly org: string;
6
+ /** The plugin's resource id — the membership label's value. */
7
+ readonly id: string;
8
+ readonly slug: string;
9
+ readonly name: string;
10
+ /** The archive digest — the convergence label's value. */
11
+ readonly digest: string;
12
+ /** The level every member takes; unspecified means the child kind's default. */
13
+ readonly visibility: ApiResourceVisibility;
14
+ }
15
+ /** The two labels a member carries, and nothing else the plugin owns. */
16
+ export declare function memberLabels(identity: PluginIdentity): Record<string, string>;
17
+ /**
18
+ * A member's metadata: the plugin's org and visibility, the member's own
19
+ * name and slug, the plugin's labels merged OVER any the overlay author
20
+ * wrote (an author may label their agent; they may not claim membership of
21
+ * another plugin, and the sanitiser has already refused every reserved key
22
+ * an author tried).
23
+ */
24
+ export declare function memberMetadata(identity: PluginIdentity, member: {
25
+ readonly name: string;
26
+ readonly slug: string;
27
+ }, authored?: ApiResourceMetadata): ApiResourceMetadata;
28
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/identity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4DAA4D,CAAC;AAOtG,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC5C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK7E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACxD,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,mBAAmB,CAerB"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * What every member of a plugin inherits from the plugin: the
3
+ * organization, the two reserved labels (the plugin's id for membership,
4
+ * the archive digest for convergence) and the visibility. One function
5
+ * stamps a child's metadata so the four materialisers cannot disagree on
6
+ * how a member is marked, and one type carries the plugin's identity into
7
+ * them so none reaches back into the head.
8
+ */
9
+ import { create } from "@bufbuild/protobuf";
10
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
11
+ import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
12
+ import { PLUGIN_LABEL, PLUGIN_VERSION_LABEL, } from "../../../pipeline/apiresource-labels.js";
13
+ /** The two labels a member carries, and nothing else the plugin owns. */
14
+ export function memberLabels(identity) {
15
+ return {
16
+ [PLUGIN_LABEL]: identity.id,
17
+ [PLUGIN_VERSION_LABEL]: identity.digest,
18
+ };
19
+ }
20
+ /**
21
+ * A member's metadata: the plugin's org and visibility, the member's own
22
+ * name and slug, the plugin's labels merged OVER any the overlay author
23
+ * wrote (an author may label their agent; they may not claim membership of
24
+ * another plugin, and the sanitiser has already refused every reserved key
25
+ * an author tried).
26
+ */
27
+ export function memberMetadata(identity, member, authored) {
28
+ const metadata = authored === undefined ? create(ApiResourceMetadataSchema, {}) : authored;
29
+ metadata.org = identity.org;
30
+ metadata.name = member.name;
31
+ metadata.slug = member.slug;
32
+ metadata.id = "";
33
+ if (identity.visibility !==
34
+ ApiResourceVisibility.api_resource_visibility_unspecified) {
35
+ metadata.visibility = identity.visibility;
36
+ }
37
+ metadata.labels = { ...metadata.labels, ...memberLabels(identity) };
38
+ return metadata;
39
+ }
40
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,4DAA4D,CAAC;AAGvG,OAAO,EACL,YAAY,EACZ,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AAejD,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,QAAwB;IACnD,OAAO;QACL,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE;QAC3B,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAwB,EACxB,MAAwD,EACxD,QAA8B;IAE9B,MAAM,QAAQ,GACZ,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC5B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,IACE,QAAQ,CAAC,UAAU;QACnB,qBAAqB,CAAC,mCAAmC,EACzD,CAAC;QACD,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC5C,CAAC;IACD,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { PluginMcpServer, PluginPackage } from "@stigmer/plugin-package";
2
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
3
+ import type { PluginIdentity } from "./identity.js";
4
+ export interface PlannedMcpServer {
5
+ readonly name: string;
6
+ readonly slug: string;
7
+ readonly resource: McpServer;
8
+ }
9
+ /** A refused overlay, phrased for the author. */
10
+ export declare class McpServerOverlayError extends Error {
11
+ constructor(server: string, reason: string);
12
+ }
13
+ export declare function mcpServerSlugOf(server: PluginMcpServer): string;
14
+ export declare function planMcpServers(plugin: PluginPackage, overlays: ReadonlyMap<string, McpServer>, identity: PluginIdentity): PlannedMcpServer[];
15
+ //# sourceMappingURL=mcp-servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/mcp-servers.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAUxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,iDAAiD;AACjD,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI3C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EACxC,QAAQ,EAAE,cAAc,GACvB,gBAAgB,EAAE,CAuDpB"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * MCP servers from a plugin: one `McpServer` per `mcpServers` entry of the
3
+ * portable `mcp.json`, layered with the plugin's Stigmer overlay for that
4
+ * server when the author wrote one (`ai.stigmer/mcp-servers/<name>.yaml`).
5
+ *
6
+ * The portable file owns what every client reads: the transport (`http`
7
+ * url and headers, or `stdio` command and args) and the variables the
8
+ * server references, which become `EnvVarDeclaration`s the runner resolves
9
+ * from the user's Environment. The overlay owns what only Stigmer reads:
10
+ * OAuth (`auth`), scope hints, default and pinned tools, the icon, tags,
11
+ * the repository link, and a richer description. An overlay that sets the
12
+ * transport or declares env is refused: the portable file is the one home
13
+ * of both, so a Cursor or Claude user installing the same plugin sees the
14
+ * same server.
15
+ *
16
+ * The server's name is the `mcpServers` key and its slug `generateSlug`
17
+ * of it (the platform's one slug rule: lowercase, dots and spaces to
18
+ * hyphens, every other symbol dropped, so `my_server` becomes `myserver`);
19
+ * sub-agents and the agent's usages reference the slug.
20
+ */
21
+ import { create } from "@bufbuild/protobuf";
22
+ import { EnvVarDeclarationSchema } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/spec_pb";
23
+ import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
24
+ import { HttpServerConfigSchema, McpServerSpecSchema, StdioServerConfigSchema, } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/spec_pb";
25
+ import { generateSlug } from "../../../pipeline/steps/slug.js";
26
+ import { memberMetadata } from "./identity.js";
27
+ /** A refused overlay, phrased for the author. */
28
+ export class McpServerOverlayError extends Error {
29
+ constructor(server, reason) {
30
+ super(`overlay for MCP server '${server}': ${reason}`);
31
+ this.name = "McpServerOverlayError";
32
+ }
33
+ }
34
+ export function mcpServerSlugOf(server) {
35
+ return generateSlug(server.name);
36
+ }
37
+ export function planMcpServers(plugin, overlays, identity) {
38
+ const env = declaredVariables(plugin);
39
+ return plugin.mcpServers.map((server) => {
40
+ const overlay = overlays.get(server.name);
41
+ const spec = create(McpServerSpecSchema, {
42
+ description: plugin.description ?? "",
43
+ env: Object.fromEntries(server.env.map((name) => [name, env.get(name) ?? inferredSecret()])),
44
+ });
45
+ switch (server.transport) {
46
+ case "http":
47
+ spec.serverType = {
48
+ case: "http",
49
+ value: create(HttpServerConfigSchema, {
50
+ url: server.url,
51
+ headers: { ...server.headers },
52
+ }),
53
+ };
54
+ break;
55
+ case "stdio":
56
+ spec.serverType = {
57
+ case: "stdio",
58
+ value: create(StdioServerConfigSchema, {
59
+ command: server.command,
60
+ args: [...server.args],
61
+ }),
62
+ };
63
+ break;
64
+ default: {
65
+ const exhaustive = server;
66
+ throw new Error(`unknown transport ${JSON.stringify(exhaustive)}`);
67
+ }
68
+ }
69
+ if (overlay !== undefined) {
70
+ layerOverlay(server.name, spec, overlay);
71
+ }
72
+ const slug = mcpServerSlugOf(server);
73
+ return {
74
+ name: server.name,
75
+ slug,
76
+ resource: create(McpServerSchema, {
77
+ apiVersion: "agentic.stigmer.ai/v1",
78
+ kind: "McpServer",
79
+ metadata: memberMetadata(identity, { name: server.name, slug }, overlay?.metadata),
80
+ spec,
81
+ }),
82
+ };
83
+ });
84
+ }
85
+ /** Every declared variable, by name, as the runner's declaration shape. */
86
+ function declaredVariables(plugin) {
87
+ return new Map(plugin.variables.map((variable) => [
88
+ variable.name,
89
+ create(EnvVarDeclarationSchema, {
90
+ isSecret: variable.isSecret,
91
+ description: variable.description ?? "",
92
+ optional: variable.optional,
93
+ }),
94
+ ]));
95
+ }
96
+ /**
97
+ * A reference the library did not declare cannot happen — it infers every
98
+ * undeclared `${VAR}` as a required secret — so this arm is the honest
99
+ * default for a name the declaration list somehow lacks.
100
+ */
101
+ function inferredSecret() {
102
+ return create(EnvVarDeclarationSchema, { isSecret: true, optional: false });
103
+ }
104
+ /** The overlay's Stigmer-only fields over the portable spec; the portable owner's fields stay. */
105
+ function layerOverlay(serverName, spec, overlay) {
106
+ const authored = overlay.spec;
107
+ if (authored === undefined) {
108
+ return;
109
+ }
110
+ if (authored.serverType.case !== undefined) {
111
+ throw new McpServerOverlayError(serverName, "the transport (http or stdio) lives in mcp.json, where every client reads it; the overlay may not redefine it");
112
+ }
113
+ if (Object.keys(authored.env).length > 0) {
114
+ throw new McpServerOverlayError(serverName, "variables are declared where mcp.json references them (the plugin's variables or userConfig); the overlay may not declare env");
115
+ }
116
+ if (authored.description !== "")
117
+ spec.description = authored.description;
118
+ if (authored.iconUrl !== "")
119
+ spec.iconUrl = authored.iconUrl;
120
+ if (authored.tags.length > 0)
121
+ spec.tags = [...authored.tags];
122
+ if (authored.defaultEnabledTools.length > 0)
123
+ spec.defaultEnabledTools = [...authored.defaultEnabledTools];
124
+ if (authored.pinnedToolApprovals.length > 0)
125
+ spec.pinnedToolApprovals = [...authored.pinnedToolApprovals];
126
+ if (authored.repositoryUrl !== "")
127
+ spec.repositoryUrl = authored.repositoryUrl;
128
+ if (authored.auth !== undefined)
129
+ spec.auth = authored.auth;
130
+ }
131
+ //# sourceMappingURL=mcp-servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-servers.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/mcp-servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { PluginFiles, PluginPackage } from "@stigmer/plugin-package";
2
+ import type { PluginWarning } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/status_pb";
3
+ import type { PlannedMember } from "../members.js";
4
+ import type { ParsedOverlays } from "../overlay/documents.js";
5
+ import type { PlannedAgent } from "./agent.js";
6
+ import type { PluginIdentity } from "./identity.js";
7
+ import type { PlannedMcpServer } from "./mcp-servers.js";
8
+ import type { PlannedSkill } from "./skills.js";
9
+ import type { PlannedWorkflow } from "./workflows.js";
10
+ export interface MaterializationPlan {
11
+ readonly skills: readonly PlannedSkill[];
12
+ readonly mcpServers: readonly PlannedMcpServer[];
13
+ readonly agent: PlannedAgent | undefined;
14
+ readonly workflows: readonly PlannedWorkflow[];
15
+ /** Every member the push intends, in materialisation order. */
16
+ readonly members: readonly PlannedMember[];
17
+ /** The audit tag this push assigns; empty when the version does not fit. */
18
+ readonly tag: string;
19
+ readonly warnings: readonly PluginWarning[];
20
+ }
21
+ /** The manifest version as a tag, or empty with a warning when it cannot be one. */
22
+ export declare function versionTag(version: string | undefined, warnings: PluginWarning[]): string;
23
+ export declare function planMaterialization(plugin: PluginPackage, files: PluginFiles, overlays: ParsedOverlays, identity: PluginIdentity, message: string): MaterializationPlan;
24
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/plan.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AAI5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,aAAa,EAAE,GACxB,MAAM,CAgBR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,GACd,mBAAmB,CAiDrB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The materialisation plan: everything a push will write, computed before
3
+ * anything is written. One pure function turns the library's description
4
+ * of the package, the parsed overlay and the plugin's identity into the
5
+ * four planned member sets plus the warnings the plan itself raised, so
6
+ * the push step can check every slug against the organization, pre-
7
+ * authorise the caller for every child kind, and decide whether the
8
+ * members already converge — all before the first in-process call.
9
+ *
10
+ * Warnings collected here join the library's in `PluginStatus.warnings`:
11
+ * every ignored component (recorded once per component, as the library
12
+ * records it), each unapplied model hint, each built-in name shadowed, and
13
+ * a manifest version the tag pattern rejects.
14
+ */
15
+ import { create } from "@bufbuild/protobuf";
16
+ import { PluginWarningSchema } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/status_pb";
17
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
18
+ import { SERVER_WARNING_KINDS, VERSION_TAG_PATTERN } from "../constants.js";
19
+ import { planAgent } from "./agent.js";
20
+ import { planMcpServers } from "./mcp-servers.js";
21
+ import { planSkills } from "./skills.js";
22
+ import { planWorkflows } from "./workflows.js";
23
+ /** The manifest version as a tag, or empty with a warning when it cannot be one. */
24
+ export function versionTag(version, warnings) {
25
+ if (version === undefined || version === "") {
26
+ return "";
27
+ }
28
+ if (VERSION_TAG_PATTERN.test(version)) {
29
+ return version;
30
+ }
31
+ warnings.push(create(PluginWarningSchema, {
32
+ kind: SERVER_WARNING_KINDS.versionNotTaggable,
33
+ message: `version '${version}' cannot be a tag (letters, digits, '.', '_' and '-' only); ` +
34
+ "this version is reachable by its digest but not by name",
35
+ }));
36
+ return "";
37
+ }
38
+ export function planMaterialization(plugin, files, overlays, identity, message) {
39
+ const warnings = [];
40
+ for (const ignored of plugin.ignored) {
41
+ warnings.push(create(PluginWarningSchema, {
42
+ kind: SERVER_WARNING_KINDS.componentIgnored,
43
+ path: ignored.path,
44
+ message: `${ignored.kind} at '${ignored.path}' is not installed; Stigmer reads skills, MCP servers, sub-agents and the ai.stigmer/ overlay`,
45
+ }));
46
+ }
47
+ const tag = versionTag(plugin.version, warnings);
48
+ const skills = planSkills(plugin, files, identity, tag, message);
49
+ const mcpServers = planMcpServers(plugin, new Map(overlays.mcpServers.map((document) => [
50
+ document.server,
51
+ document.resource,
52
+ ])), identity);
53
+ const agent = planAgent(plugin, overlays.agent?.resource, identity, warnings);
54
+ const workflows = planWorkflows(overlays.workflows, identity);
55
+ const members = [
56
+ ...skills.map((skill) => ({
57
+ kind: ApiResourceKind.skill,
58
+ slug: skill.slug,
59
+ name: skill.name,
60
+ })),
61
+ ...mcpServers.map((server) => ({
62
+ kind: ApiResourceKind.mcp_server,
63
+ slug: server.slug,
64
+ name: server.name,
65
+ })),
66
+ ...(agent === undefined
67
+ ? []
68
+ : [{ kind: ApiResourceKind.agent, slug: agent.slug, name: agent.name }]),
69
+ ...workflows.map((workflow) => ({
70
+ kind: ApiResourceKind.workflow,
71
+ slug: workflow.slug,
72
+ name: workflow.name,
73
+ })),
74
+ ];
75
+ return { skills, mcpServers, agent, workflows, members, tag, warnings };
76
+ }
77
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The one edge the plugin domain has onto the four child domains — a
3
+ * consumer-defined, method-segregated surface the composition root
4
+ * satisfies with in-process clients (boot/inprocess.ts), the
5
+ * `AgentInstanceApplier` shape. Every call rides the in-process router
6
+ * transport AS THE INSTALLING CALLER (the `asCaller` call options): each
7
+ * child's full chain runs — validation, the caller's own permission for
8
+ * that kind, references, the reserved-label and managed guards (both pass
9
+ * by origin), persist, tuples, index — so a materialised skill is a skill
10
+ * the CLI could have pushed, attributed to the user who installed it.
11
+ *
12
+ * Why an interface and not the clients: the domain reads at its boundary
13
+ * what it needs and nothing more (no update, no create, no reads), the
14
+ * agent↔agentinstance-style cycle between routes and clients is broken at
15
+ * the consumer with a lazy provider, and a test supplies a recording fake.
16
+ */
17
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
18
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
19
+ import type { Skill } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
20
+ import type { PushSkillRequest } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
21
+ import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
22
+ import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
23
+ import type { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
24
+ import type { CallerIdentity } from "../../../extensions/identity.js";
25
+ export interface PluginMaterializer {
26
+ /** Skill push is upsert-by-slug from the frontmatter; the request carries the plugin's labels. */
27
+ pushSkill(request: PushSkillRequest, caller: CallerIdentity): Promise<Skill>;
28
+ /** Apply is upsert-by-slug for the three YAML kinds. */
29
+ applyMcpServer(server: McpServer, caller: CallerIdentity): Promise<McpServer>;
30
+ applyAgent(agent: Agent, caller: CallerIdentity): Promise<Agent>;
31
+ applyWorkflow(workflow: Workflow, caller: CallerIdentity): Promise<Workflow>;
32
+ /**
33
+ * The one door for a level change (metadata.proto): an existing member
34
+ * whose level differs from the plugin's is moved here after apply.
35
+ */
36
+ updateVisibility(kind: ApiResourceKind, resourceId: string, visibility: ApiResourceVisibility, caller: CallerIdentity): Promise<void>;
37
+ /** A member the new archive dropped, or the whole set on uninstall. */
38
+ deleteByKind(kind: ApiResourceKind, resourceId: string, caller: CallerIdentity): Promise<void>;
39
+ }
40
+ /** Lazy provider: the clients exist only after the routes they ride are registered. */
41
+ export type PluginMaterializerProvider = () => PluginMaterializer;
42
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AACxF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uDAAuD,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAC3H,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAEpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,kGAAkG;IAClG,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7E,wDAAwD;IACxD,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9E,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,qBAAqB,EACjC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,uEAAuE;IACvE,YAAY,CACV,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,uFAAuF;AACvF,MAAM,MAAM,0BAA0B,GAAG,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/ports.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { PluginFiles, PluginPackage, PluginSkill } from "@stigmer/plugin-package";
2
+ import type { PushSkillRequest } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
3
+ import type { PluginIdentity } from "./identity.js";
4
+ export interface PlannedSkill {
5
+ readonly name: string;
6
+ readonly slug: string;
7
+ readonly request: PushSkillRequest;
8
+ }
9
+ /** The slug a plugin skill will have once pushed; the plan checks it before any write. */
10
+ export declare function skillSlugOf(skill: PluginSkill): string;
11
+ export declare function planSkills(plugin: PluginPackage, files: PluginFiles, identity: PluginIdentity, tag: string, message: string): PlannedSkill[];
12
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../src/domain/plugin/materialize/skills.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAK1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAqBhB"}