@stigmer/server 3.15.3-dev.20260914121148 → 3.16.0

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 (680) 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/lane-admission.d.ts +50 -0
  42. package/dist/authorization/lane-admission.d.ts.map +1 -0
  43. package/dist/authorization/lane-admission.js +13 -0
  44. package/dist/authorization/lane-admission.js.map +1 -0
  45. package/dist/authorization/list-read-scope.d.ts +18 -0
  46. package/dist/authorization/list-read-scope.d.ts.map +1 -0
  47. package/dist/authorization/list-read-scope.js +155 -0
  48. package/dist/authorization/list-read-scope.js.map +1 -0
  49. package/dist/authorization/model/agent.d.ts +2 -0
  50. package/dist/authorization/model/agent.d.ts.map +1 -0
  51. package/dist/authorization/model/agent.js +42 -0
  52. package/dist/authorization/model/agent.js.map +1 -0
  53. package/dist/authorization/model/agent_channel.d.ts +2 -0
  54. package/dist/authorization/model/agent_channel.d.ts.map +1 -0
  55. package/dist/authorization/model/agent_channel.js +38 -0
  56. package/dist/authorization/model/agent_channel.js.map +1 -0
  57. package/dist/authorization/model/agent_execution.d.ts +2 -0
  58. package/dist/authorization/model/agent_execution.d.ts.map +1 -0
  59. package/dist/authorization/model/agent_execution.js +25 -0
  60. package/dist/authorization/model/agent_execution.js.map +1 -0
  61. package/dist/authorization/model/agent_instance.d.ts +2 -0
  62. package/dist/authorization/model/agent_instance.d.ts.map +1 -0
  63. package/dist/authorization/model/agent_instance.js +47 -0
  64. package/dist/authorization/model/agent_instance.js.map +1 -0
  65. package/dist/authorization/model/agent_share.d.ts +2 -0
  66. package/dist/authorization/model/agent_share.d.ts.map +1 -0
  67. package/dist/authorization/model/agent_share.js +29 -0
  68. package/dist/authorization/model/agent_share.js.map +1 -0
  69. package/dist/authorization/model/api_key.d.ts +2 -0
  70. package/dist/authorization/model/api_key.d.ts.map +1 -0
  71. package/dist/authorization/model/api_key.js +27 -0
  72. package/dist/authorization/model/api_key.js.map +1 -0
  73. package/dist/authorization/model/artifact.d.ts +2 -0
  74. package/dist/authorization/model/artifact.d.ts.map +1 -0
  75. package/dist/authorization/model/artifact.js +27 -0
  76. package/dist/authorization/model/artifact.js.map +1 -0
  77. package/dist/authorization/model/channel_app.d.ts +2 -0
  78. package/dist/authorization/model/channel_app.d.ts.map +1 -0
  79. package/dist/authorization/model/channel_app.js +28 -0
  80. package/dist/authorization/model/channel_app.js.map +1 -0
  81. package/dist/authorization/model/default-of.d.ts +38 -0
  82. package/dist/authorization/model/default-of.d.ts.map +1 -0
  83. package/dist/authorization/model/default-of.js +39 -0
  84. package/dist/authorization/model/default-of.js.map +1 -0
  85. package/dist/authorization/model/environment.d.ts +2 -0
  86. package/dist/authorization/model/environment.d.ts.map +1 -0
  87. package/dist/authorization/model/environment.js +33 -0
  88. package/dist/authorization/model/environment.js.map +1 -0
  89. package/dist/authorization/model/execution_context.d.ts +2 -0
  90. package/dist/authorization/model/execution_context.d.ts.map +1 -0
  91. package/dist/authorization/model/execution_context.js +19 -0
  92. package/dist/authorization/model/execution_context.js.map +1 -0
  93. package/dist/authorization/model/iam_policy.d.ts +2 -0
  94. package/dist/authorization/model/iam_policy.d.ts.map +1 -0
  95. package/dist/authorization/model/iam_policy.js +31 -0
  96. package/dist/authorization/model/iam_policy.js.map +1 -0
  97. package/dist/authorization/model/identity_account.d.ts +2 -0
  98. package/dist/authorization/model/identity_account.d.ts.map +1 -0
  99. package/dist/authorization/model/identity_account.js +25 -0
  100. package/dist/authorization/model/identity_account.js.map +1 -0
  101. package/dist/authorization/model/index.d.ts +36 -0
  102. package/dist/authorization/model/index.d.ts.map +1 -0
  103. package/dist/authorization/model/index.js +72 -0
  104. package/dist/authorization/model/index.js.map +1 -0
  105. package/dist/authorization/model/mcp_server.d.ts +2 -0
  106. package/dist/authorization/model/mcp_server.d.ts.map +1 -0
  107. package/dist/authorization/model/mcp_server.js +37 -0
  108. package/dist/authorization/model/mcp_server.js.map +1 -0
  109. package/dist/authorization/model/memory.d.ts +2 -0
  110. package/dist/authorization/model/memory.d.ts.map +1 -0
  111. package/dist/authorization/model/memory.js +26 -0
  112. package/dist/authorization/model/memory.js.map +1 -0
  113. package/dist/authorization/model/oauth_app.d.ts +2 -0
  114. package/dist/authorization/model/oauth_app.d.ts.map +1 -0
  115. package/dist/authorization/model/oauth_app.js +30 -0
  116. package/dist/authorization/model/oauth_app.js.map +1 -0
  117. package/dist/authorization/model/organization.d.ts +2 -0
  118. package/dist/authorization/model/organization.d.ts.map +1 -0
  119. package/dist/authorization/model/organization.js +54 -0
  120. package/dist/authorization/model/organization.js.map +1 -0
  121. package/dist/authorization/model/plugin.d.ts +2 -0
  122. package/dist/authorization/model/plugin.d.ts.map +1 -0
  123. package/dist/authorization/model/plugin.js +44 -0
  124. package/dist/authorization/model/plugin.js.map +1 -0
  125. package/dist/authorization/model/project.d.ts +2 -0
  126. package/dist/authorization/model/project.d.ts.map +1 -0
  127. package/dist/authorization/model/project.js +32 -0
  128. package/dist/authorization/model/project.js.map +1 -0
  129. package/dist/authorization/model/rewrite.d.ts +127 -0
  130. package/dist/authorization/model/rewrite.d.ts.map +1 -0
  131. package/dist/authorization/model/rewrite.js +82 -0
  132. package/dist/authorization/model/rewrite.js.map +1 -0
  133. package/dist/authorization/model/schedule.d.ts +2 -0
  134. package/dist/authorization/model/schedule.d.ts.map +1 -0
  135. package/dist/authorization/model/schedule.js +29 -0
  136. package/dist/authorization/model/schedule.js.map +1 -0
  137. package/dist/authorization/model/session.d.ts +2 -0
  138. package/dist/authorization/model/session.d.ts.map +1 -0
  139. package/dist/authorization/model/session.js +38 -0
  140. package/dist/authorization/model/session.js.map +1 -0
  141. package/dist/authorization/model/skill.d.ts +2 -0
  142. package/dist/authorization/model/skill.d.ts.map +1 -0
  143. package/dist/authorization/model/skill.js +38 -0
  144. package/dist/authorization/model/skill.js.map +1 -0
  145. package/dist/authorization/model/workflow.d.ts +2 -0
  146. package/dist/authorization/model/workflow.d.ts.map +1 -0
  147. package/dist/authorization/model/workflow.js +38 -0
  148. package/dist/authorization/model/workflow.js.map +1 -0
  149. package/dist/authorization/model/workflow_execution.d.ts +2 -0
  150. package/dist/authorization/model/workflow_execution.d.ts.map +1 -0
  151. package/dist/authorization/model/workflow_execution.js +32 -0
  152. package/dist/authorization/model/workflow_execution.js.map +1 -0
  153. package/dist/authorization/model/workflow_instance.d.ts +2 -0
  154. package/dist/authorization/model/workflow_instance.d.ts.map +1 -0
  155. package/dist/authorization/model/workflow_instance.js +92 -0
  156. package/dist/authorization/model/workflow_instance.js.map +1 -0
  157. package/dist/authorization/organization-directory.d.ts +13 -0
  158. package/dist/authorization/organization-directory.d.ts.map +1 -0
  159. package/dist/authorization/organization-directory.js +83 -0
  160. package/dist/authorization/organization-directory.js.map +1 -0
  161. package/dist/authorization/person.d.ts +42 -0
  162. package/dist/authorization/person.d.ts.map +1 -0
  163. package/dist/authorization/person.js +19 -0
  164. package/dist/authorization/person.js.map +1 -0
  165. package/dist/authorization/posture.d.ts +38 -0
  166. package/dist/authorization/posture.d.ts.map +1 -0
  167. package/dist/authorization/posture.js +7 -0
  168. package/dist/authorization/posture.js.map +1 -0
  169. package/dist/authorization/schedule-fire-caller.d.ts +12 -0
  170. package/dist/authorization/schedule-fire-caller.d.ts.map +1 -0
  171. package/dist/authorization/schedule-fire-caller.js +67 -0
  172. package/dist/authorization/schedule-fire-caller.js.map +1 -0
  173. package/dist/authorization/store-test-kit.d.ts +68 -0
  174. package/dist/authorization/store-test-kit.d.ts.map +1 -0
  175. package/dist/authorization/store-test-kit.js +311 -0
  176. package/dist/authorization/store-test-kit.js.map +1 -0
  177. package/dist/authorization/tuples.d.ts +115 -0
  178. package/dist/authorization/tuples.d.ts.map +1 -0
  179. package/dist/authorization/tuples.js +83 -0
  180. package/dist/authorization/tuples.js.map +1 -0
  181. package/dist/boot/compose.d.ts.map +1 -1
  182. package/dist/boot/compose.js +220 -43
  183. package/dist/boot/compose.js.map +1 -1
  184. package/dist/boot/inprocess.d.ts +12 -0
  185. package/dist/boot/inprocess.d.ts.map +1 -1
  186. package/dist/boot/inprocess.js +68 -21
  187. package/dist/boot/inprocess.js.map +1 -1
  188. package/dist/domain/agent/controller.d.ts.map +1 -1
  189. package/dist/domain/agent/controller.js +9 -0
  190. package/dist/domain/agent/controller.js.map +1 -1
  191. package/dist/domain/executioncontext/resolve-values-for-caller.d.ts +33 -14
  192. package/dist/domain/executioncontext/resolve-values-for-caller.d.ts.map +1 -1
  193. package/dist/domain/executioncontext/resolve-values-for-caller.js +32 -8
  194. package/dist/domain/executioncontext/resolve-values-for-caller.js.map +1 -1
  195. package/dist/domain/iampolicy/constants.d.ts +11 -0
  196. package/dist/domain/iampolicy/constants.d.ts.map +1 -1
  197. package/dist/domain/iampolicy/constants.js +11 -0
  198. package/dist/domain/iampolicy/constants.js.map +1 -1
  199. package/dist/domain/iampolicy/membership.d.ts +72 -1
  200. package/dist/domain/iampolicy/membership.d.ts.map +1 -1
  201. package/dist/domain/iampolicy/membership.js +141 -56
  202. package/dist/domain/iampolicy/membership.js.map +1 -1
  203. package/dist/domain/identityaccount/actor.d.ts +41 -0
  204. package/dist/domain/identityaccount/actor.d.ts.map +1 -0
  205. package/dist/domain/identityaccount/actor.js +34 -0
  206. package/dist/domain/identityaccount/actor.js.map +1 -0
  207. package/dist/domain/identityaccount/resolve.d.ts +19 -0
  208. package/dist/domain/identityaccount/resolve.d.ts.map +1 -1
  209. package/dist/domain/identityaccount/resolve.js +12 -0
  210. package/dist/domain/identityaccount/resolve.js.map +1 -1
  211. package/dist/domain/mcpserver/connect-execution-id.d.ts +5 -0
  212. package/dist/domain/mcpserver/connect-execution-id.d.ts.map +1 -0
  213. package/dist/domain/mcpserver/connect-execution-id.js +32 -0
  214. package/dist/domain/mcpserver/connect-execution-id.js.map +1 -0
  215. package/dist/domain/mcpserver/connect.d.ts +28 -2
  216. package/dist/domain/mcpserver/connect.d.ts.map +1 -1
  217. package/dist/domain/mcpserver/connect.js +27 -7
  218. package/dist/domain/mcpserver/connect.js.map +1 -1
  219. package/dist/domain/mcpserver/controller.d.ts.map +1 -1
  220. package/dist/domain/mcpserver/controller.js +9 -0
  221. package/dist/domain/mcpserver/controller.js.map +1 -1
  222. package/dist/domain/mcpserver/engine.d.ts +9 -3
  223. package/dist/domain/mcpserver/engine.d.ts.map +1 -1
  224. package/dist/domain/mcpserver/engine.js.map +1 -1
  225. package/dist/domain/mcpserver/start-connect.js +1 -1
  226. package/dist/domain/mcpserver/start-connect.js.map +1 -1
  227. package/dist/domain/platform/controller.d.ts +24 -11
  228. package/dist/domain/platform/controller.d.ts.map +1 -1
  229. package/dist/domain/platform/controller.js.map +1 -1
  230. package/dist/domain/plugin/archive.d.ts +37 -0
  231. package/dist/domain/plugin/archive.d.ts.map +1 -0
  232. package/dist/domain/plugin/archive.js +50 -0
  233. package/dist/domain/plugin/archive.js.map +1 -0
  234. package/dist/domain/plugin/constants.d.ts +38 -0
  235. package/dist/domain/plugin/constants.d.ts.map +1 -0
  236. package/dist/domain/plugin/constants.js +46 -0
  237. package/dist/domain/plugin/constants.js.map +1 -0
  238. package/dist/domain/plugin/controller.d.ts +25 -0
  239. package/dist/domain/plugin/controller.d.ts.map +1 -0
  240. package/dist/domain/plugin/controller.js +493 -0
  241. package/dist/domain/plugin/controller.js.map +1 -0
  242. package/dist/domain/plugin/materialize/agent.d.ts +13 -0
  243. package/dist/domain/plugin/materialize/agent.d.ts.map +1 -0
  244. package/dist/domain/plugin/materialize/agent.js +128 -0
  245. package/dist/domain/plugin/materialize/agent.js.map +1 -0
  246. package/dist/domain/plugin/materialize/default-agent-instructions.d.ts +22 -0
  247. package/dist/domain/plugin/materialize/default-agent-instructions.d.ts.map +1 -0
  248. package/dist/domain/plugin/materialize/default-agent-instructions.js +31 -0
  249. package/dist/domain/plugin/materialize/default-agent-instructions.js.map +1 -0
  250. package/dist/domain/plugin/materialize/identity.d.ts +28 -0
  251. package/dist/domain/plugin/materialize/identity.d.ts.map +1 -0
  252. package/dist/domain/plugin/materialize/identity.js +40 -0
  253. package/dist/domain/plugin/materialize/identity.js.map +1 -0
  254. package/dist/domain/plugin/materialize/mcp-servers.d.ts +15 -0
  255. package/dist/domain/plugin/materialize/mcp-servers.d.ts.map +1 -0
  256. package/dist/domain/plugin/materialize/mcp-servers.js +131 -0
  257. package/dist/domain/plugin/materialize/mcp-servers.js.map +1 -0
  258. package/dist/domain/plugin/materialize/plan.d.ts +24 -0
  259. package/dist/domain/plugin/materialize/plan.d.ts.map +1 -0
  260. package/dist/domain/plugin/materialize/plan.js +77 -0
  261. package/dist/domain/plugin/materialize/plan.js.map +1 -0
  262. package/dist/domain/plugin/materialize/ports.d.ts +42 -0
  263. package/dist/domain/plugin/materialize/ports.d.ts.map +1 -0
  264. package/dist/domain/plugin/materialize/ports.js +2 -0
  265. package/dist/domain/plugin/materialize/ports.js.map +1 -0
  266. package/dist/domain/plugin/materialize/skills.d.ts +12 -0
  267. package/dist/domain/plugin/materialize/skills.d.ts.map +1 -0
  268. package/dist/domain/plugin/materialize/skills.js +44 -0
  269. package/dist/domain/plugin/materialize/skills.js.map +1 -0
  270. package/dist/domain/plugin/materialize/workflows.d.ts +15 -0
  271. package/dist/domain/plugin/materialize/workflows.d.ts.map +1 -0
  272. package/dist/domain/plugin/materialize/workflows.js +31 -0
  273. package/dist/domain/plugin/materialize/workflows.js.map +1 -0
  274. package/dist/domain/plugin/members.d.ts +42 -0
  275. package/dist/domain/plugin/members.d.ts.map +1 -0
  276. package/dist/domain/plugin/members.js +97 -0
  277. package/dist/domain/plugin/members.js.map +1 -0
  278. package/dist/domain/plugin/overlay/documents.d.ts +31 -0
  279. package/dist/domain/plugin/overlay/documents.d.ts.map +1 -0
  280. package/dist/domain/plugin/overlay/documents.js +38 -0
  281. package/dist/domain/plugin/overlay/documents.js.map +1 -0
  282. package/dist/domain/plugin/overlay/parse.d.ts +16 -0
  283. package/dist/domain/plugin/overlay/parse.d.ts.map +1 -0
  284. package/dist/domain/plugin/overlay/parse.js +79 -0
  285. package/dist/domain/plugin/overlay/parse.js.map +1 -0
  286. package/dist/domain/plugin/overlay/sanitize.d.ts +10 -0
  287. package/dist/domain/plugin/overlay/sanitize.d.ts.map +1 -0
  288. package/dist/domain/plugin/overlay/sanitize.js +103 -0
  289. package/dist/domain/plugin/overlay/sanitize.js.map +1 -0
  290. package/dist/domain/plugin/push.d.ts +133 -0
  291. package/dist/domain/plugin/push.d.ts.map +1 -0
  292. package/dist/domain/plugin/push.js +800 -0
  293. package/dist/domain/plugin/push.js.map +1 -0
  294. package/dist/domain/plugin/search-extractor.d.ts +3 -0
  295. package/dist/domain/plugin/search-extractor.d.ts.map +1 -0
  296. package/dist/domain/plugin/search-extractor.js +41 -0
  297. package/dist/domain/plugin/search-extractor.js.map +1 -0
  298. package/dist/domain/skill/constants.d.ts +6 -11
  299. package/dist/domain/skill/constants.d.ts.map +1 -1
  300. package/dist/domain/skill/constants.js +6 -11
  301. package/dist/domain/skill/constants.js.map +1 -1
  302. package/dist/domain/skill/controller.d.ts.map +1 -1
  303. package/dist/domain/skill/controller.js +33 -30
  304. package/dist/domain/skill/controller.js.map +1 -1
  305. package/dist/domain/skill/push.d.ts +9 -10
  306. package/dist/domain/skill/push.d.ts.map +1 -1
  307. package/dist/domain/skill/push.js +53 -122
  308. package/dist/domain/skill/push.js.map +1 -1
  309. package/dist/domain/skill/search-extractor.d.ts.map +1 -1
  310. package/dist/domain/skill/search-extractor.js.map +1 -1
  311. package/dist/domain/skill/storage/artifact-storage.d.ts +26 -29
  312. package/dist/domain/skill/storage/artifact-storage.d.ts.map +1 -1
  313. package/dist/domain/skill/storage/artifact-storage.js +6 -103
  314. package/dist/domain/skill/storage/artifact-storage.js.map +1 -1
  315. package/dist/domain/skill/storage/zip-gate.d.ts +1 -2
  316. package/dist/domain/skill/storage/zip-gate.d.ts.map +1 -1
  317. package/dist/domain/skill/storage/zip-gate.js +56 -126
  318. package/dist/domain/skill/storage/zip-gate.js.map +1 -1
  319. package/dist/domain/skill/version-resolution.d.ts +5 -5
  320. package/dist/domain/skill/version-resolution.d.ts.map +1 -1
  321. package/dist/domain/skill/version-resolution.js +34 -216
  322. package/dist/domain/skill/version-resolution.js.map +1 -1
  323. package/dist/domain/workflow/controller.d.ts.map +1 -1
  324. package/dist/domain/workflow/controller.js +30 -3
  325. package/dist/domain/workflow/controller.js.map +1 -1
  326. package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -0
  327. package/dist/domain/workflowexecution/phases.d.ts +21 -0
  328. package/dist/domain/workflowexecution/phases.d.ts.map +1 -0
  329. package/dist/domain/workflowexecution/phases.js +31 -0
  330. package/dist/domain/workflowexecution/phases.js.map +1 -0
  331. package/dist/extensions/authorizer.d.ts +10 -5
  332. package/dist/extensions/authorizer.d.ts.map +1 -1
  333. package/dist/extensions/drivers.d.ts +4 -1
  334. package/dist/extensions/drivers.d.ts.map +1 -1
  335. package/dist/extensions/list-read-scope.d.ts +47 -20
  336. package/dist/extensions/list-read-scope.d.ts.map +1 -1
  337. package/dist/extensions/list-read-scope.js +20 -24
  338. package/dist/extensions/list-read-scope.js.map +1 -1
  339. package/dist/extensions/organization-directory.d.ts +13 -9
  340. package/dist/extensions/organization-directory.d.ts.map +1 -1
  341. package/dist/extensions/organization-directory.js.map +1 -1
  342. package/dist/extensions/resource-authorization.d.ts +33 -0
  343. package/dist/extensions/resource-authorization.d.ts.map +1 -1
  344. package/dist/extensions/schedule-fire-caller.d.ts +45 -18
  345. package/dist/extensions/schedule-fire-caller.d.ts.map +1 -1
  346. package/dist/extensions/schedule-fire-caller.js +12 -1
  347. package/dist/extensions/schedule-fire-caller.js.map +1 -1
  348. package/dist/identity/oidc-verifier.js +8 -1
  349. package/dist/identity/oidc-verifier.js.map +1 -1
  350. package/dist/index.d.ts +10 -0
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.js +8 -0
  353. package/dist/index.js.map +1 -1
  354. package/dist/pipeline/apiresource-labels.d.ts +23 -3
  355. package/dist/pipeline/apiresource-labels.d.ts.map +1 -1
  356. package/dist/pipeline/apiresource-labels.js +20 -0
  357. package/dist/pipeline/apiresource-labels.js.map +1 -1
  358. package/dist/pipeline/apiresource-meta.d.ts +15 -0
  359. package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
  360. package/dist/pipeline/apiresource-meta.js +34 -0
  361. package/dist/pipeline/apiresource-meta.js.map +1 -1
  362. package/dist/pipeline/errors.d.ts.map +1 -1
  363. package/dist/pipeline/errors.js.map +1 -1
  364. package/dist/pipeline/steps/authorization-facts.d.ts +12 -0
  365. package/dist/pipeline/steps/authorization-facts.d.ts.map +1 -0
  366. package/dist/pipeline/steps/authorization-facts.js +100 -0
  367. package/dist/pipeline/steps/authorization-facts.js.map +1 -0
  368. package/dist/pipeline/steps/delete.d.ts.map +1 -1
  369. package/dist/pipeline/steps/delete.js +1 -1
  370. package/dist/pipeline/steps/delete.js.map +1 -1
  371. package/dist/pipeline/steps/duplicate.d.ts.map +1 -1
  372. package/dist/pipeline/steps/duplicate.js.map +1 -1
  373. package/dist/pipeline/steps/guard-memory-capture.d.ts.map +1 -1
  374. package/dist/pipeline/steps/guard-memory-capture.js +5 -3
  375. package/dist/pipeline/steps/guard-memory-capture.js.map +1 -1
  376. package/dist/pipeline/steps/guard-plugin-managed.d.ts +12 -0
  377. package/dist/pipeline/steps/guard-plugin-managed.d.ts.map +1 -0
  378. package/dist/pipeline/steps/guard-plugin-managed.js +96 -0
  379. package/dist/pipeline/steps/guard-plugin-managed.js.map +1 -0
  380. package/dist/pipeline/steps/guard-reserved-labels.d.ts +16 -2
  381. package/dist/pipeline/steps/guard-reserved-labels.d.ts.map +1 -1
  382. package/dist/pipeline/steps/guard-reserved-labels.js +11 -7
  383. package/dist/pipeline/steps/guard-reserved-labels.js.map +1 -1
  384. package/dist/pipeline/steps/helpers.d.ts.map +1 -1
  385. package/dist/pipeline/steps/helpers.js.map +1 -1
  386. package/dist/pipeline/steps/index-search.d.ts.map +1 -1
  387. package/dist/pipeline/steps/index-search.js.map +1 -1
  388. package/dist/pipeline/steps/load-existing.d.ts.map +1 -1
  389. package/dist/pipeline/steps/load-existing.js +1 -1
  390. package/dist/pipeline/steps/load-existing.js.map +1 -1
  391. package/dist/pipeline/steps/references.d.ts +16 -0
  392. package/dist/pipeline/steps/references.d.ts.map +1 -1
  393. package/dist/pipeline/steps/references.js +18 -0
  394. package/dist/pipeline/steps/references.js.map +1 -1
  395. package/dist/pipeline/steps/resolve-artifact-source.d.ts +35 -0
  396. package/dist/pipeline/steps/resolve-artifact-source.d.ts.map +1 -0
  397. package/dist/pipeline/steps/resolve-artifact-source.js +27 -0
  398. package/dist/pipeline/steps/resolve-artifact-source.js.map +1 -0
  399. package/dist/pipeline/steps/server-stamped-reserved-labels.d.ts.map +1 -1
  400. package/dist/pipeline/steps/server-stamped-reserved-labels.js.map +1 -1
  401. package/dist/pipeline/steps/slug.d.ts.map +1 -1
  402. package/dist/pipeline/steps/slug.js.map +1 -1
  403. package/dist/pipeline/steps/validate-visibility.d.ts +9 -0
  404. package/dist/pipeline/steps/validate-visibility.d.ts.map +1 -1
  405. package/dist/pipeline/steps/validate-visibility.js +6 -1
  406. package/dist/pipeline/steps/validate-visibility.js.map +1 -1
  407. package/dist/pipeline/steps/validation.d.ts.map +1 -1
  408. package/dist/pipeline/steps/validation.js.map +1 -1
  409. package/dist/pipeline/steps/version-archive.d.ts +63 -0
  410. package/dist/pipeline/steps/version-archive.d.ts.map +1 -0
  411. package/dist/pipeline/steps/version-archive.js +129 -0
  412. package/dist/pipeline/steps/version-archive.js.map +1 -0
  413. package/dist/pipeline/steps/version-history.d.ts +49 -0
  414. package/dist/pipeline/steps/version-history.d.ts.map +1 -0
  415. package/dist/pipeline/steps/version-history.js +229 -0
  416. package/dist/pipeline/steps/version-history.js.map +1 -0
  417. package/dist/pipeline/steps/visibility-gates.d.ts +8 -0
  418. package/dist/pipeline/steps/visibility-gates.d.ts.map +1 -1
  419. package/dist/pipeline/steps/visibility-gates.js +7 -2
  420. package/dist/pipeline/steps/visibility-gates.js.map +1 -1
  421. package/dist/query/search/registry.d.ts.map +1 -1
  422. package/dist/query/search/registry.js +2 -0
  423. package/dist/query/search/registry.js.map +1 -1
  424. package/dist/runnerauth/bound-execution.d.ts +27 -0
  425. package/dist/runnerauth/bound-execution.d.ts.map +1 -0
  426. package/dist/runnerauth/bound-execution.js +137 -0
  427. package/dist/runnerauth/bound-execution.js.map +1 -0
  428. package/dist/runnerauth/built-in-runner-credential-provider.d.ts +28 -0
  429. package/dist/runnerauth/built-in-runner-credential-provider.d.ts.map +1 -0
  430. package/dist/runnerauth/built-in-runner-credential-provider.js +217 -0
  431. package/dist/runnerauth/built-in-runner-credential-provider.js.map +1 -0
  432. package/dist/runnerauth/constants.d.ts +63 -0
  433. package/dist/runnerauth/constants.d.ts.map +1 -0
  434. package/dist/runnerauth/constants.js +63 -0
  435. package/dist/runnerauth/constants.js.map +1 -0
  436. package/dist/runnerauth/dispatch-credential.d.ts +38 -0
  437. package/dist/runnerauth/dispatch-credential.d.ts.map +1 -0
  438. package/dist/runnerauth/dispatch-credential.js +17 -0
  439. package/dist/runnerauth/dispatch-credential.js.map +1 -0
  440. package/dist/runnerauth/runner-credential-provider.d.ts +49 -11
  441. package/dist/runnerauth/runner-credential-provider.d.ts.map +1 -1
  442. package/dist/runnerauth/runner-credential-provider.js +16 -4
  443. package/dist/runnerauth/runner-credential-provider.js.map +1 -1
  444. package/dist/runnerauth/runner-subject-verifier.d.ts +14 -0
  445. package/dist/runnerauth/runner-subject-verifier.d.ts.map +1 -0
  446. package/dist/runnerauth/runner-subject-verifier.js +115 -0
  447. package/dist/runnerauth/runner-subject-verifier.js.map +1 -0
  448. package/dist/runnerauth/runnerauth.d.ts +33 -4
  449. package/dist/runnerauth/runnerauth.d.ts.map +1 -1
  450. package/dist/runnerauth/runnerauth.js +131 -35
  451. package/dist/runnerauth/runnerauth.js.map +1 -1
  452. package/dist/temporal/agentexecution/engine-client.d.ts +13 -0
  453. package/dist/temporal/agentexecution/engine-client.d.ts.map +1 -1
  454. package/dist/temporal/agentexecution/engine-client.js +10 -2
  455. package/dist/temporal/agentexecution/engine-client.js.map +1 -1
  456. package/dist/temporal/agentexecution/workflow-input.d.ts +13 -0
  457. package/dist/temporal/agentexecution/workflow-input.d.ts.map +1 -1
  458. package/dist/temporal/agentexecution/workflows/invoke-agent-execution.d.ts.map +1 -1
  459. package/dist/temporal/agentexecution/workflows/invoke-agent-execution.js +35 -31
  460. package/dist/temporal/agentexecution/workflows/invoke-agent-execution.js.map +1 -1
  461. package/dist/temporal/schedule/run-starter.d.ts +1 -1
  462. package/dist/temporal/schedule/run-starter.d.ts.map +1 -1
  463. package/dist/temporal/schedule/run-starter.js +14 -1
  464. package/dist/temporal/schedule/run-starter.js.map +1 -1
  465. package/dist/temporal/workflowexecution/engine-client.d.ts +24 -0
  466. package/dist/temporal/workflowexecution/engine-client.d.ts.map +1 -1
  467. package/dist/temporal/workflowexecution/engine-client.js +26 -19
  468. package/dist/temporal/workflowexecution/engine-client.js.map +1 -1
  469. package/dist/temporal/workflowexecution/workflow-input.d.ts +14 -0
  470. package/dist/temporal/workflowexecution/workflow-input.d.ts.map +1 -1
  471. package/package.json +5 -4
  472. package/src/archive/__tests__/archive.test.ts +233 -0
  473. package/src/{domain/skill → archive}/__tests__/prefilter.test.ts +1 -1
  474. package/src/archive/content-store.ts +132 -0
  475. package/src/archive/inflate.ts +107 -0
  476. package/src/archive/limits.ts +42 -0
  477. package/src/archive/open.ts +131 -0
  478. package/src/{domain/skill/storage → archive}/prefilter.ts +5 -0
  479. package/src/archive/write.ts +54 -0
  480. package/src/authorization/README.md +124 -0
  481. package/src/authorization/__tests__/authorizer.test.ts +719 -0
  482. package/src/authorization/__tests__/derived-tuples.test.ts +802 -0
  483. package/src/authorization/__tests__/drivers.ts +70 -0
  484. package/src/authorization/__tests__/evaluator.test.ts +359 -0
  485. package/src/authorization/__tests__/facts.test.ts +155 -0
  486. package/src/authorization/__tests__/fixtures/fga/agent-channel-owner.fga.yaml +112 -0
  487. package/src/authorization/__tests__/fixtures/fga/agent-share-owner.fga.yaml +109 -0
  488. package/src/authorization/__tests__/fixtures/fga/artifact-org-and-owner.fga.yaml +128 -0
  489. package/src/authorization/__tests__/fixtures/fga/blueprint-private-visibility.fga.yaml +410 -0
  490. package/src/authorization/__tests__/fixtures/fga/channel-app-owner.fga.yaml +125 -0
  491. package/src/authorization/__tests__/fixtures/fga/channel-participation.fga.yaml +201 -0
  492. package/src/authorization/__tests__/fixtures/fga/channel-session-visibility.fga.yaml +187 -0
  493. package/src/authorization/__tests__/fixtures/fga/cross-org-share-creation.fga.yaml +98 -0
  494. package/src/authorization/__tests__/fixtures/fga/default-instance-inheritance.fga.yaml +271 -0
  495. package/src/authorization/__tests__/fixtures/fga/memory-subject-only.fga.yaml +72 -0
  496. package/src/authorization/__tests__/fixtures/fga/org-admin-owner-inheritance.fga.yaml +328 -0
  497. package/src/authorization/__tests__/fixtures/fga/org-shared-environment.fga.yaml +144 -0
  498. package/src/authorization/__tests__/fixtures/fga/platform-visibility.fga.yaml +223 -0
  499. package/src/authorization/__tests__/fixtures/fga/provider-standing-viewer.fga.yaml +40 -0
  500. package/src/authorization/__tests__/fixtures/fga/public-visibility-setter.fga.yaml +52 -0
  501. package/src/authorization/__tests__/fixtures/fga/reserved-label-writer.fga.yaml +41 -0
  502. package/src/authorization/__tests__/fixtures/fga/schedule-owner.fga.yaml +113 -0
  503. package/src/authorization/__tests__/fixtures/fga/schedule-session-visibility.fga.yaml +214 -0
  504. package/src/authorization/__tests__/fixtures/fga/session-personal-resource.fga.yaml +117 -0
  505. package/src/authorization/__tests__/fixtures/fga/workflow-execution-sharing.fga.yaml +192 -0
  506. package/src/authorization/__tests__/lane-admission.test.ts +115 -0
  507. package/src/authorization/__tests__/list-read-scope.measure.test.ts +317 -0
  508. package/src/authorization/__tests__/list-read-scope.test.ts +796 -0
  509. package/src/authorization/__tests__/organization-directory.test.ts +236 -0
  510. package/src/authorization/__tests__/person.test.ts +114 -0
  511. package/src/authorization/__tests__/posture.test.ts +25 -0
  512. package/src/authorization/__tests__/schedule-fire-caller.test.ts +134 -0
  513. package/src/authorization/__tests__/store-tests.test.ts +306 -0
  514. package/src/authorization/__tests__/support.ts +101 -0
  515. package/src/authorization/__tests__/tuples.test.ts +62 -0
  516. package/src/authorization/__tests__/wire-permissions.test.ts +154 -0
  517. package/src/authorization/authorizer.ts +208 -0
  518. package/src/authorization/derived-tuples.ts +384 -0
  519. package/src/authorization/evaluator.ts +283 -0
  520. package/src/authorization/facts.ts +47 -0
  521. package/src/authorization/lane-admission.ts +73 -0
  522. package/src/authorization/list-read-scope.ts +216 -0
  523. package/src/authorization/model/__tests__/registry.test.ts +317 -0
  524. package/src/authorization/model/agent.ts +64 -0
  525. package/src/authorization/model/agent_channel.ts +49 -0
  526. package/src/authorization/model/agent_execution.ts +33 -0
  527. package/src/authorization/model/agent_instance.ts +66 -0
  528. package/src/authorization/model/agent_share.ts +40 -0
  529. package/src/authorization/model/api_key.ts +28 -0
  530. package/src/authorization/model/artifact.ts +38 -0
  531. package/src/authorization/model/channel_app.ts +39 -0
  532. package/src/authorization/model/default-of.ts +99 -0
  533. package/src/authorization/model/environment.ts +48 -0
  534. package/src/authorization/model/execution_context.ts +20 -0
  535. package/src/authorization/model/iam_policy.ts +42 -0
  536. package/src/authorization/model/identity_account.ts +26 -0
  537. package/src/authorization/model/index.ts +108 -0
  538. package/src/authorization/model/mcp_server.ts +59 -0
  539. package/src/authorization/model/memory.ts +27 -0
  540. package/src/authorization/model/oauth_app.ts +42 -0
  541. package/src/authorization/model/organization.ts +55 -0
  542. package/src/authorization/model/plugin.ts +66 -0
  543. package/src/authorization/model/project.ts +47 -0
  544. package/src/authorization/model/rewrite.ts +213 -0
  545. package/src/authorization/model/schedule.ts +40 -0
  546. package/src/authorization/model/session.ts +50 -0
  547. package/src/authorization/model/skill.ts +60 -0
  548. package/src/authorization/model/workflow.ts +60 -0
  549. package/src/authorization/model/workflow_execution.ts +44 -0
  550. package/src/authorization/model/workflow_instance.ts +122 -0
  551. package/src/authorization/organization-directory.ts +114 -0
  552. package/src/authorization/person.ts +68 -0
  553. package/src/authorization/posture.ts +49 -0
  554. package/src/authorization/schedule-fire-caller.ts +87 -0
  555. package/src/authorization/store-test-kit.ts +454 -0
  556. package/src/authorization/tuples.ts +190 -0
  557. package/src/boot/compose.ts +246 -52
  558. package/src/boot/inprocess.ts +115 -31
  559. package/src/domain/agent/controller.ts +11 -0
  560. package/src/domain/executioncontext/__tests__/executioncontext.test.ts +104 -0
  561. package/src/domain/executioncontext/__tests__/resolve-values-capability.test.ts +33 -4
  562. package/src/domain/executioncontext/resolve-values-for-caller.ts +79 -22
  563. package/src/domain/iampolicy/__tests__/membership.test.ts +357 -3
  564. package/src/domain/iampolicy/constants.ts +12 -0
  565. package/src/domain/iampolicy/membership.ts +221 -66
  566. package/src/domain/identityaccount/__tests__/account-for-stamp.test.ts +111 -0
  567. package/src/domain/identityaccount/actor.ts +84 -0
  568. package/src/domain/identityaccount/resolve.ts +31 -0
  569. package/src/domain/mcpserver/__tests__/connect.test.ts +17 -2
  570. package/src/domain/mcpserver/connect-execution-id.ts +34 -0
  571. package/src/domain/mcpserver/connect.ts +38 -3
  572. package/src/domain/mcpserver/controller.ts +11 -0
  573. package/src/domain/mcpserver/engine.ts +9 -3
  574. package/src/domain/mcpserver/start-connect.ts +1 -1
  575. package/src/domain/platform/controller.ts +24 -11
  576. package/src/domain/plugin/__tests__/materialize.test.ts +303 -0
  577. package/src/domain/plugin/__tests__/overlay-parse.test.ts +85 -0
  578. package/src/domain/plugin/__tests__/plugin.test.ts +796 -0
  579. package/src/domain/plugin/__tests__/sanitize.test.ts +174 -0
  580. package/src/domain/plugin/archive.ts +89 -0
  581. package/src/domain/plugin/constants.ts +53 -0
  582. package/src/domain/plugin/controller.ts +913 -0
  583. package/src/domain/plugin/materialize/agent.ts +186 -0
  584. package/src/domain/plugin/materialize/default-agent-instructions.ts +59 -0
  585. package/src/domain/plugin/materialize/identity.ts +67 -0
  586. package/src/domain/plugin/materialize/mcp-servers.ts +175 -0
  587. package/src/domain/plugin/materialize/plan.ts +124 -0
  588. package/src/domain/plugin/materialize/ports.ts +53 -0
  589. package/src/domain/plugin/materialize/skills.ts +68 -0
  590. package/src/domain/plugin/materialize/workflows.ts +51 -0
  591. package/src/domain/plugin/members.ts +180 -0
  592. package/src/domain/plugin/overlay/documents.ts +78 -0
  593. package/src/domain/plugin/overlay/parse.ts +115 -0
  594. package/src/domain/plugin/overlay/sanitize.ts +151 -0
  595. package/src/domain/plugin/push.ts +1062 -0
  596. package/src/domain/plugin/search-extractor.ts +60 -0
  597. package/src/domain/skill/constants.ts +11 -14
  598. package/src/domain/skill/controller.ts +44 -36
  599. package/src/domain/skill/push.ts +61 -156
  600. package/src/domain/skill/search-extractor.ts +3 -1
  601. package/src/domain/skill/storage/artifact-storage.ts +23 -124
  602. package/src/domain/skill/storage/zip-gate.ts +58 -154
  603. package/src/domain/skill/version-resolution.ts +67 -269
  604. package/src/domain/workflow/controller.ts +38 -4
  605. package/src/domain/workflow/registry/data/task-kind-registry.json +1 -0
  606. package/src/domain/workflowexecution/__tests__/phases.test.ts +58 -0
  607. package/src/domain/workflowexecution/phases.ts +33 -0
  608. package/src/extensions/__tests__/built-in-authorization-composed.test.ts +835 -0
  609. package/src/extensions/__tests__/composed-support.ts +32 -1
  610. package/src/extensions/__tests__/extension-composition.test.ts +42 -1
  611. package/src/extensions/__tests__/list-read-scope.test.ts +137 -33
  612. package/src/extensions/__tests__/role-reconciliation-composed.test.ts +209 -0
  613. package/src/extensions/__tests__/tier-truthfulness.test.ts +6 -14
  614. package/src/extensions/authorizer.ts +10 -5
  615. package/src/extensions/drivers.ts +4 -1
  616. package/src/extensions/list-read-scope.ts +67 -45
  617. package/src/extensions/organization-directory.ts +13 -9
  618. package/src/extensions/resource-authorization.ts +34 -0
  619. package/src/extensions/schedule-fire-caller.ts +49 -18
  620. package/src/identity/__tests__/oidc-verifier.test.ts +22 -0
  621. package/src/identity/oidc-verifier.ts +8 -1
  622. package/src/index.ts +51 -1
  623. package/src/pipeline/__tests__/kind-by-id-prefix.test.ts +75 -0
  624. package/src/pipeline/__tests__/router-transport.test.ts +1 -3
  625. package/src/pipeline/apiresource-labels.ts +31 -3
  626. package/src/pipeline/apiresource-meta.ts +41 -0
  627. package/src/pipeline/errors.ts +5 -5
  628. package/src/pipeline/steps/__tests__/authorize-annotation-completeness.test.ts +1 -20
  629. package/src/pipeline/steps/__tests__/guard-memory-capture.test.ts +58 -44
  630. package/src/pipeline/steps/__tests__/guard-plugin-managed.test.ts +151 -0
  631. package/src/pipeline/steps/__tests__/guard-reserved-labels.test.ts +83 -8
  632. package/src/pipeline/steps/authorization-facts.ts +131 -0
  633. package/src/pipeline/steps/delete.ts +11 -3
  634. package/src/pipeline/steps/duplicate.ts +8 -2
  635. package/src/pipeline/steps/guard-memory-capture.ts +5 -3
  636. package/src/pipeline/steps/guard-plugin-managed.ts +133 -0
  637. package/src/pipeline/steps/guard-reserved-labels.ts +29 -8
  638. package/src/pipeline/steps/helpers.ts +4 -1
  639. package/src/pipeline/steps/index-search.ts +28 -15
  640. package/src/pipeline/steps/load-existing.ts +12 -3
  641. package/src/pipeline/steps/references.ts +36 -2
  642. package/src/pipeline/steps/resolve-artifact-source.ts +66 -0
  643. package/src/pipeline/steps/server-stamped-reserved-labels.ts +2 -1
  644. package/src/pipeline/steps/slug.ts +7 -2
  645. package/src/pipeline/steps/validate-visibility.ts +9 -2
  646. package/src/pipeline/steps/validation.ts +3 -1
  647. package/src/pipeline/steps/version-archive.ts +225 -0
  648. package/src/pipeline/steps/version-history.ts +362 -0
  649. package/src/pipeline/steps/visibility-gates.ts +12 -9
  650. package/src/query/README.md +1 -1
  651. package/src/query/search/__tests__/criteria.test.ts +6 -7
  652. package/src/query/search/__tests__/query-store.test.ts +9 -2
  653. package/src/query/search/__tests__/registry.test.ts +6 -4
  654. package/src/query/search/registry.ts +6 -1
  655. package/src/runnerauth/__tests__/bound-execution.test.ts +334 -0
  656. package/src/runnerauth/__tests__/built-in-runner-credential-provider.test.ts +516 -0
  657. package/src/runnerauth/__tests__/dispatch-credential.test.ts +94 -0
  658. package/src/runnerauth/__tests__/runner-credential-provider.test.ts +27 -0
  659. package/src/runnerauth/__tests__/runner-subject-composed.test.ts +497 -0
  660. package/src/runnerauth/__tests__/runner-subject-verifier.test.ts +541 -0
  661. package/src/runnerauth/bound-execution.ts +270 -0
  662. package/src/runnerauth/built-in-runner-credential-provider.ts +300 -0
  663. package/src/runnerauth/constants.ts +74 -0
  664. package/src/runnerauth/dispatch-credential.ts +63 -0
  665. package/src/runnerauth/runner-credential-provider.ts +60 -11
  666. package/src/runnerauth/runner-subject-verifier.ts +152 -0
  667. package/src/runnerauth/runnerauth.ts +148 -38
  668. package/src/temporal/agentexecution/__tests__/engine-client.test.ts +107 -38
  669. package/src/temporal/agentexecution/__tests__/invoke-workflow.test.ts +105 -2
  670. package/src/temporal/agentexecution/engine-client.ts +27 -2
  671. package/src/temporal/agentexecution/workflow-input.ts +13 -0
  672. package/src/temporal/agentexecution/workflows/invoke-agent-execution.ts +90 -44
  673. package/src/temporal/schedule/__tests__/run-starter.test.ts +86 -24
  674. package/src/temporal/schedule/run-starter.ts +31 -8
  675. package/src/temporal/workflowexecution/__tests__/engine-client.test.ts +139 -33
  676. package/src/temporal/workflowexecution/engine-client.ts +48 -21
  677. package/src/temporal/workflowexecution/workflow-input.ts +14 -0
  678. package/dist/domain/skill/storage/prefilter.d.ts.map +0 -1
  679. package/dist/domain/skill/storage/prefilter.js.map +0 -1
  680. /package/dist/{domain/skill/storage → archive}/prefilter.js +0 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Plugin search extractor — both sides of the searchable contract (the
3
+ * index side pipeline/steps/index-search.ts consumes, the query side the
4
+ * SearchService renders). A plugin's summary is its manifest description;
5
+ * its keywords join the tags so `stigmer list plugin` and the console's
6
+ * search find a plugin by what its author called it.
7
+ */
8
+ import type { Message } from "@bufbuild/protobuf";
9
+
10
+ import { PluginSchema } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
11
+ import type { Plugin } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
12
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
13
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
14
+ import type { SearchResult } from "@stigmer/protos/ai/stigmer/search/v1/io_pb";
15
+
16
+ import { buildSearchResult } from "../../query/search/extractor.js";
17
+ import type { SearchableExtractor } from "../../query/search/extractor.js";
18
+ import type { SearchIndexEntry } from "../../store/interface.js";
19
+
20
+ export const pluginSearchExtractor: SearchableExtractor = {
21
+ kind: ApiResourceKind.plugin,
22
+ schema: PluginSchema,
23
+
24
+ getSearchSummary(resource: Message): string {
25
+ const plugin = resource as unknown as Plugin;
26
+ return plugin.spec?.description ?? "";
27
+ },
28
+
29
+ toSearchResult(resource: Message, score: number): SearchResult | undefined {
30
+ const plugin = resource as unknown as Plugin;
31
+ return buildSearchResult({
32
+ kind: ApiResourceKind.plugin,
33
+ metadata: plugin.metadata,
34
+ summary: plugin.spec?.description ?? "",
35
+ score,
36
+ createdAt: plugin.status?.audit?.specAudit?.createdAt,
37
+ updatedAt: plugin.status?.audit?.specAudit?.updatedAt,
38
+ });
39
+ },
40
+
41
+ getSearchIndexEntry(resource: Message): SearchIndexEntry | undefined {
42
+ const plugin = resource as unknown as Plugin;
43
+ const metadata = plugin.metadata;
44
+ if (metadata === undefined) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ name: metadata.name,
49
+ description: plugin.spec?.description ?? "",
50
+ // The index carries one tags string; the manifest's keywords are
51
+ // what an author expects a search to match, so they join the tags.
52
+ tags: [...metadata.tags, ...(plugin.spec?.keywords ?? [])].join(" "),
53
+ org: metadata.org,
54
+ visibility: ApiResourceVisibility[metadata.visibility] ?? "",
55
+ createdAt: Number(
56
+ plugin.status?.audit?.specAudit?.createdAt?.seconds ?? 0n,
57
+ ),
58
+ };
59
+ },
60
+ };
@@ -8,21 +8,18 @@
8
8
  */
9
9
 
10
10
  /**
11
- * The compressed-artifact ceiling. Exported because it is the platform's
12
- * skill size limit, not just an extraction guard: the transfer lane
13
- * (createArtifactUploadUrl) enforces it before any bytes move, and clients
14
- * quote it in fail-loud size errors (#675). Go: storage.MaxZipSize.
11
+ * The archive budgets (compressed ceiling, uncompressed total, ratio, file
12
+ * count) are the platform's, shared with every archive-shaped push since
13
+ * plugins arrived; they live in src/archive/limits.ts and are re-exported
14
+ * here so the skill domain's consumers keep their names. Go:
15
+ * storage.MaxZipSize and its three siblings.
15
16
  */
16
- export const MAX_ZIP_SIZE = 100 * 1024 * 1024;
17
-
18
- /** Total declared-uncompressed budget across all entries (ZIP-bomb guard). */
19
- export const MAX_UNCOMPRESSED_SIZE = 500 * 1024 * 1024;
20
-
21
- /** Per-file declared compression ratio ceiling (ZIP-bomb guard). */
22
- export const MAX_COMPRESSION_RATIO = 100;
23
-
24
- /** Entry-count ceiling. */
25
- export const MAX_FILES = 10_000;
17
+ export {
18
+ MAX_COMPRESSION_RATIO,
19
+ MAX_FILES,
20
+ MAX_UNCOMPRESSED_SIZE,
21
+ MAX_ZIP_SIZE,
22
+ } from "../../archive/limits.js";
26
23
 
27
24
  /** SKILL.md in-memory extraction cap (memory-exhaustion guard). */
28
25
  export const MAX_SKILL_MD_SIZE = 1 * 1024 * 1024;
@@ -70,8 +70,10 @@ import { newPipeline } from "../../pipeline/pipeline.js";
70
70
  import type { PipelineStep } from "../../pipeline/pipeline.js";
71
71
  import { callerIdentityOf } from "../../pipeline/interceptors/auth.js";
72
72
  import { RequestContext } from "../../pipeline/request-context.js";
73
- import { authorizeResolvedResource,
74
- newAuthorizeStep } from "../../pipeline/steps/authorize.js";
73
+ import {
74
+ authorizeResolvedResource,
75
+ newAuthorizeStep,
76
+ } from "../../pipeline/steps/authorize.js";
75
77
  import { newAuthorizeVisibilityTransitionStep } from "../../pipeline/steps/visibility-gates.js";
76
78
  import {
77
79
  newCleanupIamPoliciesStep,
@@ -80,7 +82,6 @@ import {
80
82
  } from "../../pipeline/steps/authorization-tuples.js";
81
83
  import { setAuditFieldsForUpdate } from "../../pipeline/steps/defaults.js";
82
84
  import {
83
- RESOURCE_ID_KEY,
84
85
  newDeleteResourceStep,
85
86
  newExtractResourceIdStep,
86
87
  newLoadExistingForDeleteStep,
@@ -91,11 +92,15 @@ import {
91
92
  TARGET_RESOURCE_KEY,
92
93
  newLoadTargetStep,
93
94
  } from "../../pipeline/steps/load-target.js";
95
+ import { newGuardPluginManagedStep } from "../../pipeline/steps/guard-plugin-managed.js";
96
+ import { newGuardReservedLabelsStep } from "../../pipeline/steps/guard-reserved-labels.js";
94
97
  import { newValidateProtoStep } from "../../pipeline/steps/validation.js";
95
98
  import { newValidateVisibilityUpdateStep } from "../../pipeline/steps/validate-visibility.js";
99
+ import { newDeleteVersionArchivesStep } from "../../pipeline/steps/version-archive.js";
96
100
  import type { Store } from "../../store/interface.js";
97
101
  import { MAX_ZIP_SIZE, TRANSFER_LANE_NOT_CONFIGURED } from "./constants.js";
98
102
  import {
103
+ EXISTING_SKILL_KEY,
99
104
  SKILL_KEY,
100
105
  newArchiveCurrentSkillStep,
101
106
  newBuildInitialSkillStep,
@@ -189,8 +194,9 @@ function kindOf(ctx: HandlerContext): ApiResourceKind {
189
194
  }
190
195
 
191
196
  /**
192
- * Push — the 12-step upsert-by-slug pipeline (push.ts holds the steps and
193
- * the versioning discipline). Returns the built skill from context: the
197
+ * Push — the upsert-by-slug pipeline (push.ts holds the steps and the
198
+ * versioning discipline; GuardReservedLabels is spliced here because the
199
+ * request's labels persist). Returns the built skill from context: the
194
200
  * pipeline's message type is the request, so the resource rides SKILL_KEY.
195
201
  *
196
202
  * `method` is the AUTHORIZING descriptor, passed by the caller because two
@@ -220,9 +226,30 @@ async function push(
220
226
  .addStep(newExtractAndHashArtifactStep())
221
227
  .addStep(newResolveSlugForPushStep())
222
228
  .addStep(newFindExistingBySlugStep(deps.store))
229
+ // A skill has no update RPC: a second push under the same name IS the
230
+ // client's mutation path, so a plugin-managed skill refuses it here,
231
+ // naming the plugin. The controller's own re-materialisation passes by
232
+ // origin.
233
+ .addStep(
234
+ newGuardPluginManagedStep<typeof PushSkillRequestSchema>(deps.store, {
235
+ existingKey: EXISTING_SKILL_KEY,
236
+ }),
237
+ )
223
238
  .addStep(newGenerateIdIfNeededStep())
224
239
  .addStep(newCheckAndStoreArtifactStep(deps.artifactStorage))
225
240
  .addStep(newPopulateSkillFieldsStep())
241
+ // The reserved-namespace guard every write boundary runs, positioned
242
+ // after the populate step because the skill rides SKILL_KEY (not
243
+ // newState) and its stored labels ride EXISTING_SKILL_KEY.
244
+ .addStep(
245
+ newGuardReservedLabelsStep<typeof PushSkillRequestSchema>(
246
+ deps.authorizer,
247
+ {
248
+ stateOf: (stepCtx) => stepCtx.get(SKILL_KEY) as Skill | undefined,
249
+ existingKey: EXISTING_SKILL_KEY,
250
+ },
251
+ ),
252
+ )
226
253
  .addStep(newArchiveCurrentSkillStep(deps.store, deps.logger))
227
254
  .addStep(newStoreSkillStep(deps.store))
228
255
  .addStep(
@@ -415,6 +442,11 @@ async function updateVisibility(
415
442
  )
416
443
  .addStep(newValidateProtoStep())
417
444
  .addStep(newLoadSkillForVisibilityUpdateStep(deps.store))
445
+ .addStep(
446
+ newGuardPluginManagedStep(deps.store, {
447
+ existingKey: UPDATE_VISIBILITY_SKILL_KEY,
448
+ }),
449
+ )
418
450
  .addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_SKILL_KEY))
419
451
  .addStep(newValidateVisibilityUpdateStep())
420
452
  .addStep(
@@ -562,6 +594,7 @@ async function deleteSkill(
562
594
  .addStep(newValidateProtoStep())
563
595
  .addStep(newExtractResourceIdStep())
564
596
  .addStep(newLoadExistingForDeleteStep(deps.store, SkillSchema))
597
+ .addStep(newGuardPluginManagedStep(deps.store))
565
598
  .addStep(newDeleteSkillArchivesStep(deps.store, deps.logger))
566
599
  .addStep(newDeleteResourceStep(deps.store))
567
600
  .addStep(
@@ -583,42 +616,17 @@ async function deleteSkill(
583
616
 
584
617
  /**
585
618
  * DeleteSkillArchives — best-effort audit cleanup (Go
586
- * DeleteSkillArchivesStep): failures log and never block the delete.
619
+ * DeleteSkillArchivesStep): failures log and never block the delete. The
620
+ * mechanics are the shared content-addressed step's.
587
621
  */
588
622
  function newDeleteSkillArchivesStep(
589
623
  store: Store,
590
624
  logger: Logger,
591
625
  ): PipelineStep<typeof SkillCommandController.method.delete.input> {
592
- return {
593
- name: "DeleteSkillArchives",
594
- async execute(
595
- ctx: RequestContext<typeof SkillCommandController.method.delete.input>,
596
- ): Promise<void> {
597
- const resourceId = ctx.get(RESOURCE_ID_KEY);
598
- if (typeof resourceId !== "string") {
599
- throw new Error(
600
- "resource id not found in context (ExtractResourceIdStep must run first)",
601
- );
602
- }
603
- try {
604
- const deletedCount = await store.deleteAuditByResourceId(
605
- ctx.apiResourceKind,
606
- resourceId,
607
- );
608
- if (deletedCount > 0) {
609
- logger.info("Deleted archive records for skill", {
610
- skillId: resourceId,
611
- count: deletedCount,
612
- });
613
- }
614
- } catch (error) {
615
- logger.warn("failed to delete skill archives (best-effort)", {
616
- skillId: resourceId,
617
- error: error instanceof Error ? error.message : String(error),
618
- });
619
- }
620
- },
621
- };
626
+ return newDeleteVersionArchivesStep(store, logger, {
627
+ stepName: "DeleteSkillArchives",
628
+ noun: "skill",
629
+ });
622
630
  }
623
631
 
624
632
  /** Get — the standard LoadTarget-by-id pipeline. */
@@ -7,10 +7,14 @@
7
7
  * ValidateProto → ResolveArtifactSource → BuildInitialSkill →
8
8
  * ExtractAndHashArtifact → ResolveSlugForPush → FindExistingBySlug →
9
9
  * GenerateIDIfNeeded → CheckAndStoreArtifact → PopulateSkillFields →
10
- * ArchiveCurrentSkill → StoreSkill → IndexSkillSearch
10
+ * GuardReservedLabels → ArchiveCurrentSkill → StoreSkill →
11
+ * IndexSkillSearch
11
12
  *
12
- * Step names and context keys are Go's, verbatim. The load-bearing
13
- * semantics, all preserved:
13
+ * Step names and context keys are Go's, verbatim; GuardReservedLabels
14
+ * joined when PushSkillRequest gained `labels` (a plugin materialises its
15
+ * skills with the plugin label through this chain, so the chain must run
16
+ * the same reserved-namespace guard every other write boundary runs). The
17
+ * load-bearing semantics, all preserved:
14
18
  * - exactly one artifact source (inline bytes XOR upload ref — proto
15
19
  * CEL); a staged ref is consumed (retired) whatever happens downstream;
16
20
  * - content addressing: same bytes = same SHA-256 = one stored copy;
@@ -52,11 +56,7 @@ import {
52
56
  defaultVisibilityFor,
53
57
  getIdPrefix,
54
58
  } from "../../pipeline/apiresource-meta.js";
55
- import {
56
- failedPreconditionError,
57
- internalError,
58
- invalidArgumentError,
59
- } from "../../pipeline/errors.js";
59
+ import { internalError, invalidArgumentError } from "../../pipeline/errors.js";
60
60
  import type { PipelineStep } from "../../pipeline/pipeline.js";
61
61
  import type { RequestContext } from "../../pipeline/request-context.js";
62
62
  import {
@@ -70,7 +70,11 @@ import {
70
70
  } from "../../pipeline/steps/defaults.js";
71
71
  import { findResourceBySlug } from "../../pipeline/steps/helpers.js";
72
72
  import { generateSlug } from "../../pipeline/steps/slug.js";
73
- import { AuditNotFoundError } from "../../store/interface.js";
73
+ import {
74
+ ARTIFACT_BYTES_KEY,
75
+ newResolveArtifactSourceStep as newSharedResolveArtifactSourceStep,
76
+ } from "../../pipeline/steps/resolve-artifact-source.js";
77
+ import { newArchiveCurrentVersionStep } from "../../pipeline/steps/version-archive.js";
74
78
  import type { Store } from "../../store/interface.js";
75
79
  import { TRANSFER_LANE_NOT_CONFIGURED } from "./constants.js";
76
80
  import { skillSearchExtractor } from "./search-extractor.js";
@@ -83,49 +87,27 @@ type PushDesc = typeof PushSkillRequestSchema;
83
87
 
84
88
  // Context keys for the push operation (Go push.go, verbatim).
85
89
  export const SKILL_KEY = "skill";
86
- export const ARTIFACT_BYTES_KEY = "pushArtifactBytes";
90
+ export { ARTIFACT_BYTES_KEY };
87
91
  export const EXTRACT_RESULT_KEY = "extractResult";
88
92
  export const ARTIFACT_STORAGE_KEY_KEY = "artifactStorageKey";
89
93
  export const EXISTING_SKILL_KEY = "existingSkill";
90
94
  export const SHOULD_CREATE_SKILL_KEY = "shouldCreateSkill";
91
95
 
92
96
  /**
93
- * ResolveArtifactSource — materializes the artifact ZIP bytes from
94
- * whichever source the request carries (proto validation has already
95
- * guaranteed exactly one): inline bytes pass through; an upload ref is
96
- * consumed HERE, which retires the single-use reference regardless of how
97
- * the rest of the pipeline fares. Downstream steps read ARTIFACT_BYTES_KEY
98
- * and never touch the request's artifact field, so the two sources are
99
- * indistinguishable past this point.
97
+ * ResolveArtifactSource — the shared step bound to PushSkillRequest's two
98
+ * sources and the skill lane's FailedPrecondition copy (see
99
+ * pipeline/steps/resolve-artifact-source.ts for the semantics).
100
100
  */
101
101
  export function newResolveArtifactSourceStep(
102
102
  slots: UploadSlots | undefined,
103
103
  ): PipelineStep<PushDesc> {
104
- return {
105
- name: "ResolveArtifactSource",
106
- async execute(ctx: RequestContext<PushDesc>): Promise<void> {
107
- const req = ctx.input;
108
- if (req.artifactUploadRef === "") {
109
- ctx.set(ARTIFACT_BYTES_KEY, req.artifact);
110
- return;
111
- }
112
- if (slots === undefined) {
113
- throw failedPreconditionError(TRANSFER_LANE_NOT_CONFIGURED);
114
- }
115
- let data: Uint8Array;
116
- try {
117
- data = await slots.consume(req.artifactUploadRef);
118
- } catch (error) {
119
- // The reference is client-supplied state, not server fault:
120
- // unknown, expired, already consumed, or minted-but-never-uploaded
121
- // all mean the client must re-mint and re-upload.
122
- throw invalidArgumentError(
123
- `artifact_upload_ref not usable: ${error instanceof Error ? error.message : String(error)} — request a new upload URL via createArtifactUploadUrl`,
124
- );
125
- }
126
- ctx.set(ARTIFACT_BYTES_KEY, data);
127
- },
128
- };
104
+ return newSharedResolveArtifactSourceStep<PushDesc>(slots, {
105
+ source: (req) => ({
106
+ artifact: req.artifact,
107
+ artifactUploadRef: req.artifactUploadRef,
108
+ }),
109
+ laneNotConfigured: TRANSFER_LANE_NOT_CONFIGURED,
110
+ });
129
111
  }
130
112
 
131
113
  /**
@@ -138,10 +120,16 @@ export function newBuildInitialSkillStep(): PipelineStep<PushDesc> {
138
120
  name: "BuildInitialSkill",
139
121
  execute(ctx: RequestContext<PushDesc>): void {
140
122
  const req = ctx.input;
123
+ // The request's labels ARE the skill's labels (replace, never merge):
124
+ // a push is the skill's definition. GuardReservedLabels, spliced after
125
+ // FindExistingBySlug, judges them against the stored skill's.
141
126
  const skill = create(SkillSchema, {
142
127
  apiVersion: "agentic.stigmer.ai/v1",
143
128
  kind: "Skill",
144
- metadata: create(ApiResourceMetadataSchema, { org: req.org }),
129
+ metadata: create(ApiResourceMetadataSchema, {
130
+ org: req.org,
131
+ labels: { ...req.labels },
132
+ }),
145
133
  spec: create(SkillSpecSchema, { tag: req.tag }),
146
134
  status: create(SkillStatusSchema, { state: SkillState.READY }),
147
135
  });
@@ -306,6 +294,13 @@ export function newPopulateSkillFieldsStep(): PipelineStep<PushDesc> {
306
294
  skill.spec!.name = extractResult.name;
307
295
  skill.spec!.description = extractResult.description;
308
296
 
297
+ // A push IS the skill's definition: the labels it carries are the
298
+ // labels the skill has (replace, never merge), so a re-push that
299
+ // omits a label removes it — the apply chains' BuildUpdateState
300
+ // posture. The reserved namespace is judged by GuardReservedLabels
301
+ // right after this step, against the stored skill's labels.
302
+ skill.metadata!.labels = { ...req.labels };
303
+
309
304
  if (
310
305
  skill.metadata!.visibility ===
311
306
  ApiResourceVisibility.api_resource_visibility_unspecified
@@ -360,126 +355,36 @@ export function newPopulateSkillFieldsStep(): PipelineStep<PushDesc> {
360
355
  * ArchiveCurrentSkill — the versioning heart (#341/#475): repoint or
361
356
  * archive, then the single-holder tag assignment, each with its safe
362
357
  * degradation (see the module doc). Runs AFTER PopulateSkillFields so the
363
- * archived snapshot is the fully-populated head.
358
+ * archived snapshot is the fully-populated head. The mechanism is the
359
+ * shared version-archive step; this binding says where a skill keeps its
360
+ * hash (status.version_hash, mirrored in metadata.version.id) and its tag
361
+ * (spec.tag).
364
362
  */
365
363
  export function newArchiveCurrentSkillStep(
366
364
  store: Store,
367
365
  logger: Logger,
368
366
  ): PipelineStep<PushDesc> {
369
- return {
370
- name: "ArchiveCurrentSkill",
371
- async execute(ctx: RequestContext<PushDesc>): Promise<void> {
372
- const skill = ctx.get(SKILL_KEY) as Skill;
373
- const versionHash = skill.status?.versionHash ?? "";
374
- if (versionHash === "") {
375
- return;
376
- }
377
- const tag = skill.spec?.tag ?? "";
378
- const skillId = skill.metadata!.id;
379
-
380
- // Repoint, never duplicate: if this content was ever archived, the
381
- // head simply repoints to the existing row and only the tag
382
- // assignment below still runs. An unexpected lookup failure degrades
383
- // to archiving anyway — a possible duplicate row beats a failed push
384
- // (readers resolve duplicates newest-wins).
385
- let alreadyArchived = false;
386
- try {
387
- await store.getAuditByHash(
388
- ctx.apiResourceKind,
389
- skillId,
390
- versionHash,
391
- SkillSchema,
392
- );
393
- alreadyArchived = true;
394
- } catch (error) {
395
- if (!(error instanceof AuditNotFoundError)) {
396
- logger.warn(
397
- "Could not check for an existing archived skill version — archiving anyway",
398
- {
399
- skillId,
400
- versionHash,
401
- error: error instanceof Error ? error.message : String(error),
402
- },
403
- );
367
+ return newArchiveCurrentVersionStep<typeof SkillSchema, PushDesc>(
368
+ store,
369
+ logger,
370
+ {
371
+ stepName: "ArchiveCurrentSkill",
372
+ resourceKey: SKILL_KEY,
373
+ schema: SkillSchema,
374
+ noun: "skill",
375
+ headHashOf: (skill) => skill.status?.versionHash ?? "",
376
+ clearHeadHash: (skill) => {
377
+ skill.status!.versionHash = "";
378
+ if (skill.metadata?.version !== undefined) {
379
+ skill.metadata.version.id = "";
404
380
  }
405
- }
406
-
407
- if (!alreadyArchived) {
408
- // Archive the snapshot tagless: the tag lives only in the audit
409
- // tag column (the source of truth), assigned below through the
410
- // single-holder primitive — a later tag move never rewrites this
411
- // immutable content.
412
- try {
413
- await store.saveAudit(
414
- ctx.apiResourceKind,
415
- skillId,
416
- SkillSchema,
417
- skill,
418
- versionHash,
419
- "",
420
- );
421
- } catch (error) {
422
- logger.error(
423
- "Failed to archive skill version — reverting the version hash to maintain the audit-resolvability invariant",
424
- {
425
- skillId,
426
- versionHash,
427
- error: error instanceof Error ? error.message : String(error),
428
- },
429
- );
430
- // Revert: the persisted head must never reference an audit entry
431
- // that does not exist. The push still succeeds, but without
432
- // version tracking for this apply.
433
- skill.status!.versionHash = "";
434
- if (skill.metadata?.version !== undefined) {
435
- skill.metadata.version.id = "";
436
- }
437
- return;
438
- }
439
- }
440
-
441
- // Assign the requested tag through setAuditTag — the single-holder
442
- // primitive — so the head version (freshly archived or repointed-to)
443
- // becomes the tag's sole holder; any prior holder is cleared.
444
- if (tag !== "") {
445
- try {
446
- await store.setAuditTag(
447
- ctx.apiResourceKind,
448
- skillId,
449
- versionHash,
450
- tag,
451
- );
452
- } catch (error) {
453
- logger.error(
454
- "Archived skill version but failed to assign its tag — clearing the live tag to stay consistent with the audit column",
455
- {
456
- skillId,
457
- versionHash,
458
- tag,
459
- error: error instanceof Error ? error.message : String(error),
460
- },
461
- );
462
- // The audit head is now untagged; keep the live head consistent
463
- // so get / getByReference never advertise a tag the store cannot
464
- // resolve.
465
- skill.spec!.tag = "";
466
- }
467
- }
468
-
469
- if (alreadyArchived) {
470
- logger.info(
471
- "Skill version content already archived — repointed head without a new history row",
472
- { skillId, versionHash, tag },
473
- );
474
- } else {
475
- logger.info("Archived skill version to audit history", {
476
- skillId,
477
- versionHash,
478
- tag,
479
- });
480
- }
381
+ },
382
+ liveTagOf: (skill) => skill.spec?.tag ?? "",
383
+ clearLiveTag: (skill) => {
384
+ skill.spec!.tag = "";
385
+ },
481
386
  },
482
- };
387
+ );
483
388
  }
484
389
 
485
390
  /** StoreSkill — persists the fully populated head. */
@@ -55,7 +55,9 @@ export const skillSearchExtractor: SearchableExtractor = {
55
55
  org: metadata.org,
56
56
  // The enum NAME string, exactly Go's visibility.String().
57
57
  visibility: ApiResourceVisibility[metadata.visibility] ?? "",
58
- createdAt: Number(skill.status?.audit?.specAudit?.createdAt?.seconds ?? 0n),
58
+ createdAt: Number(
59
+ skill.status?.audit?.specAudit?.createdAt?.seconds ?? 0n,
60
+ ),
59
61
  };
60
62
  },
61
63
  };