@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
@@ -70,6 +70,9 @@ import type {
70
70
  import type { AgentExecutionApprovalForwarder } from "../domain/workflowexecution/submit-approval.js";
71
71
  import type { AgentExecutionFileDecisionForwarder } from "../domain/workflowexecution/submit-file-decision.js";
72
72
  import type { ParentWorkflowLoader } from "../domain/workflowinstance/steps.js";
73
+ import type { PluginMaterializer } from "../domain/plugin/materialize/ports.js";
74
+ import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
75
+ import type { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
73
76
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
74
77
  import type { OrphanDeleter } from "../domain/project/reconcile.js";
75
78
  import type { ExecutionStatusWriter } from "../temporal/agentexecution/activities.js";
@@ -153,6 +156,17 @@ export interface InProcessClients {
153
156
  * minted — exactly like the schedule clock and the reconciler above.
154
157
  */
155
158
  readonly executionStatusWriter: ExecutionStatusWriter;
159
+ /**
160
+ * The plugin controller's materialisation edge: every member a plugin
161
+ * installs, upgrades, re-levels or removes goes through the owning
162
+ * domain's FULL chain (skill push, the three applies, updateVisibility,
163
+ * delete) AS THE INSTALLING CALLER (the asCaller call options), so a
164
+ * materialised skill is attributed to the user who installed it and
165
+ * carries the plugin's reserved labels by the in-process origin the
166
+ * guards pass structurally. The delete routing is the reconciler's
167
+ * switch, shared.
168
+ */
169
+ readonly pluginMaterializer: PluginMaterializer;
156
170
  }
157
171
 
158
172
  /**
@@ -318,8 +332,14 @@ export function createInProcessClients(
318
332
  executionContextCreator: {
319
333
  create: (ec) => executionContextCommand.create(ec),
320
334
  },
335
+ // The connect lane's ephemeral EC is created AS THE CONNECTING PERSON
336
+ // (ruling R5's asCaller lane): its creator stamp is what the
337
+ // runner-subject verifier resolves the connect token's bearer to under
338
+ // the built-in posture (runnerauth/bound-execution.ts). The delete
339
+ // stays the server's own act — the row is the lane's, whoever asked.
321
340
  connectExecutionContextClient: {
322
- create: (ec) => executionContextCommand.create(ec),
341
+ create: (ec, caller) =>
342
+ executionContextCommand.create(ec, asCaller(caller)),
323
343
  delete: (input) => executionContextCommand.delete(input),
324
344
  },
325
345
  // The workflowexecution edges: the default-instance self-heal creates
@@ -378,38 +398,102 @@ export function createInProcessClients(
378
398
  // delete is attempted, in both editions. Log-only surface: reconcile
379
399
  // failures never reach the wire.
380
400
  projectOrphanDeleter: {
381
- async delete(kind, resourceId) {
382
- switch (kind) {
383
- case ApiResourceKind.agent:
384
- await agentCommand.delete(
385
- create(AgentIdSchema, { value: resourceId }),
386
- );
387
- return;
388
- case ApiResourceKind.workflow:
389
- await workflowCommand.delete(
390
- create(WorkflowIdSchema, { value: resourceId }),
391
- );
392
- return;
393
- case ApiResourceKind.mcp_server:
394
- // McpServer's delete input is the commons ApiResourceDeleteInput
395
- // (not an id wrapper) — Go's client builds the same message.
396
- await mcpServerCommand.delete(
397
- create(ApiResourceDeleteInputSchema, { resourceId }),
398
- );
399
- return;
400
- case ApiResourceKind.skill:
401
- await skillCommand.delete(
402
- create(SkillIdSchema, { value: resourceId }),
403
- );
404
- return;
405
- default:
406
- throw new Error(
407
- `unsupported resource kind for delete: ${ApiResourceKind[kind] ?? String(kind)}`,
408
- );
409
- }
410
- },
401
+ delete: (kind, resourceId) => deleteByKind(kind, resourceId),
402
+ },
403
+ pluginMaterializer: {
404
+ pushSkill: (request, caller) =>
405
+ skillCommand.push(request, asCaller(caller)),
406
+ applyMcpServer: (server, caller) =>
407
+ mcpServerCommand.apply(server, asCaller(caller)),
408
+ applyAgent: (agent, caller) =>
409
+ agentCommand.apply(agent, asCaller(caller)),
410
+ applyWorkflow: (workflow, caller) =>
411
+ workflowCommand.apply(workflow, asCaller(caller)),
412
+ updateVisibility: (kind, resourceId, visibility, caller) =>
413
+ updateVisibilityByKind(kind, resourceId, visibility, asCaller(caller)),
414
+ deleteByKind: (kind, resourceId, caller) =>
415
+ deleteByKind(kind, resourceId, asCaller(caller)),
411
416
  },
412
417
  };
413
418
 
419
+ /**
420
+ * Delete routing for the four reconciled kinds — Go's
421
+ * ResourceDeleterAdapter.Delete switch (execution_engine.go:75-92),
422
+ * shared by the project reconciler (internal class, no caller) and the
423
+ * plugin controller (as the installing caller). Every orphan or member
424
+ * delete runs the owning domain's FULL pipeline. The unsupported-kind
425
+ * default is defense-in-depth: both callers refuse unsupported kinds
426
+ * before any delete is attempted.
427
+ */
428
+ async function deleteByKind(
429
+ kind: ApiResourceKind,
430
+ resourceId: string,
431
+ options?: CallOptions,
432
+ ): Promise<void> {
433
+ switch (kind) {
434
+ case ApiResourceKind.agent:
435
+ await agentCommand.delete(
436
+ create(AgentIdSchema, { value: resourceId }),
437
+ options,
438
+ );
439
+ return;
440
+ case ApiResourceKind.workflow:
441
+ await workflowCommand.delete(
442
+ create(WorkflowIdSchema, { value: resourceId }),
443
+ options,
444
+ );
445
+ return;
446
+ case ApiResourceKind.mcp_server:
447
+ // McpServer's delete input is the commons ApiResourceDeleteInput
448
+ // (not an id wrapper) — Go's client builds the same message.
449
+ await mcpServerCommand.delete(
450
+ create(ApiResourceDeleteInputSchema, { resourceId }),
451
+ options,
452
+ );
453
+ return;
454
+ case ApiResourceKind.skill:
455
+ await skillCommand.delete(
456
+ create(SkillIdSchema, { value: resourceId }),
457
+ options,
458
+ );
459
+ return;
460
+ default:
461
+ throw new Error(
462
+ `unsupported resource kind for delete: ${ApiResourceKind[kind] ?? String(kind)}`,
463
+ );
464
+ }
465
+ }
466
+
467
+ /** The one door for a level change on each member kind (metadata.proto). */
468
+ async function updateVisibilityByKind(
469
+ kind: ApiResourceKind,
470
+ resourceId: string,
471
+ visibility: ApiResourceVisibility,
472
+ options: CallOptions,
473
+ ): Promise<void> {
474
+ const input = create(UpdateVisibilityInputSchema, {
475
+ resourceId,
476
+ visibility,
477
+ });
478
+ switch (kind) {
479
+ case ApiResourceKind.agent:
480
+ await agentCommand.updateVisibility(input, options);
481
+ return;
482
+ case ApiResourceKind.workflow:
483
+ await workflowCommand.updateVisibility(input, options);
484
+ return;
485
+ case ApiResourceKind.mcp_server:
486
+ await mcpServerCommand.updateVisibility(input, options);
487
+ return;
488
+ case ApiResourceKind.skill:
489
+ await skillCommand.updateVisibility(input, options);
490
+ return;
491
+ default:
492
+ throw new Error(
493
+ `unsupported resource kind for updateVisibility: ${ApiResourceKind[kind] ?? String(kind)}`,
494
+ );
495
+ }
496
+ }
497
+
414
498
  return { clients, transport };
415
499
  }
@@ -64,6 +64,7 @@ import {
64
64
  EXISTING_RESOURCE_KEY,
65
65
  newLoadExistingStep,
66
66
  } from "../../pipeline/steps/load-existing.js";
67
+ import { newGuardPluginManagedStep } from "../../pipeline/steps/guard-plugin-managed.js";
67
68
  import {
68
69
  SHOULD_CREATE_KEY,
69
70
  newLoadForApplyStep,
@@ -216,6 +217,10 @@ async function update(
216
217
  .addStep(newValidateProtoStep())
217
218
  .addStep(newResolveSlugStep())
218
219
  .addStep(newLoadExistingStep(deps.store))
220
+ // A resource a plugin materialised is the plugin's to redefine; a client
221
+ // write is refused naming the plugin (GuardPluginManaged, keyed on the
222
+ // STORED labels and the plugin row's existence).
223
+ .addStep(newGuardPluginManagedStep(deps.store))
219
224
  .addStep(newBuildUpdateStateStep())
220
225
  .addStep(newGuardReservedLabelsStep(deps.authorizer))
221
226
  .addStep(newNormalizeReferencesStep())
@@ -294,6 +299,7 @@ async function deleteAgent(
294
299
  .addStep(newValidateProtoStep())
295
300
  .addStep(newExtractResourceIdStep())
296
301
  .addStep(newLoadExistingForDeleteStep(deps.store, AgentSchema))
302
+ .addStep(newGuardPluginManagedStep(deps.store))
297
303
  .addStep(newCascadeDeleteInstancesStep(deps.store, deps.logger))
298
304
  .addStep(newCascadeDeleteSharesStep(deps.store, deps.logger))
299
305
  .addStep(newDeleteResourceStep(deps.store))
@@ -349,6 +355,11 @@ async function updateVisibility(
349
355
  )
350
356
  .addStep(newValidateProtoStep())
351
357
  .addStep(newLoadAgentForVisibilityUpdateStep(deps.store))
358
+ .addStep(
359
+ newGuardPluginManagedStep(deps.store, {
360
+ existingKey: UPDATE_VISIBILITY_AGENT_KEY,
361
+ }),
362
+ )
352
363
  .addStep(newRecordVisibilityBeforeUpdateStep(UPDATE_VISIBILITY_AGENT_KEY))
353
364
  .addStep(newValidateVisibilityUpdateStep())
354
365
  .addStep(
@@ -36,6 +36,8 @@ import type { Client, Transport } from "@connectrpc/connect";
36
36
  import { createGrpcTransport } from "@connectrpc/connect-node";
37
37
  import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
38
38
 
39
+ import { AgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
40
+ import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
39
41
  import { ExecutionContextSchema } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/api_pb";
40
42
  import type { ExecutionContext } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/api_pb";
41
43
  import { ExecutionContextCommandController } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/command_pb";
@@ -53,6 +55,7 @@ import {
53
55
  } from "../../../encryption/encryption.js";
54
56
  import { SqliteStore } from "../../../store/sqlite/store.js";
55
57
  import { REDACTED_MARKER } from "../../environment/constants.js";
58
+ import { newConnectExecutionId } from "../../mcpserver/connect-execution-id.js";
56
59
  import {
57
60
  DELETE_EXECUTION_CONTEXT_ACTIVITY_NAME,
58
61
  deleteExecutionContextForExecution,
@@ -419,6 +422,107 @@ describe("executioncontext domain (encryption + runner auth enabled)", () => {
419
422
  });
420
423
  });
421
424
 
425
+ describe("the run credential on the decrypt lane — validity is the row's", () => {
426
+ // A no-`exp` token: the row is the only thing that can end it, so the
427
+ // lane reads the bound execution's liveness for exactly this shape and
428
+ // keeps the clocked arms above untouched (their ECs name no row).
429
+ const RUN_ID = "aex_run_credential";
430
+
431
+ async function seedRun(
432
+ phase: ExecutionPhase,
433
+ completedAt = "",
434
+ ): Promise<void> {
435
+ await ts.server.store.saveResource(
436
+ ApiResourceKind.agent_execution,
437
+ RUN_ID,
438
+ AgentExecutionSchema,
439
+ create(AgentExecutionSchema, {
440
+ metadata: { id: RUN_ID, name: RUN_ID, org: "test-org" },
441
+ status: { phase, completedAt },
442
+ }),
443
+ );
444
+ }
445
+
446
+ beforeAll(async () => {
447
+ await ts.command.create(ecInput({ executionId: RUN_ID }));
448
+ });
449
+
450
+ async function readRun(): Promise<ExecutionContext> {
451
+ const credential = ts.server.runnerAuthService.mintRunCredential(RUN_ID);
452
+ return await ts.query.getByExecutionId(
453
+ { executionId: RUN_ID },
454
+ { headers: bearerHeaders(credential) },
455
+ );
456
+ }
457
+
458
+ it("decrypts while the run is live", async () => {
459
+ await seedRun(ExecutionPhase.EXECUTION_IN_PROGRESS);
460
+ expect((await readRun()).spec!.data["API_TOKEN"]!.value).toBe(
461
+ "super-secret-token",
462
+ );
463
+ });
464
+
465
+ it("still decrypts just after the run ended — the grace covers the writes that trail the terminal stamp", async () => {
466
+ await seedRun(
467
+ ExecutionPhase.EXECUTION_COMPLETED,
468
+ new Date().toISOString(),
469
+ );
470
+ expect((await readRun()).spec!.data["API_TOKEN"]!.value).toBe(
471
+ "super-secret-token",
472
+ );
473
+ });
474
+
475
+ it("redacts once the run is over past the grace — a token in Temporal history cannot decrypt a finished run's secrets", async () => {
476
+ await seedRun(
477
+ ExecutionPhase.EXECUTION_COMPLETED,
478
+ new Date(Date.now() - 60 * 60 * 1000).toISOString(),
479
+ );
480
+ expect((await readRun()).spec!.data["API_TOKEN"]!.value).toBe(
481
+ REDACTED_MARKER,
482
+ );
483
+ });
484
+
485
+ it("redacts for a terminal run that does not say when it ended — no grace without a timestamp", async () => {
486
+ await seedRun(ExecutionPhase.EXECUTION_FAILED);
487
+ expect((await readRun()).spec!.data["API_TOKEN"]!.value).toBe(
488
+ REDACTED_MARKER,
489
+ );
490
+ });
491
+
492
+ it("redacts when the credential names a run this server does not have", async () => {
493
+ const orphan = "aex_no_such_run";
494
+ await ts.command.create(ecInput({ executionId: orphan }));
495
+ const credential = ts.server.runnerAuthService.mintRunCredential(orphan);
496
+ const ec = await ts.query.getByExecutionId(
497
+ { executionId: orphan },
498
+ { headers: bearerHeaders(credential) },
499
+ );
500
+ expect(ec.spec!.data["API_TOKEN"]!.value).toBe(REDACTED_MARKER);
501
+ });
502
+
503
+ it("redacts for a clockless token bound to a connect's EC — a connect is not a run, and no mint produces that shape (the verifier refuses it through the same predicate)", async () => {
504
+ const connectId = newConnectExecutionId("mcps_conn");
505
+ await ts.command.create(ecInput({ executionId: connectId }));
506
+ const clockless =
507
+ ts.server.runnerAuthService.mintRunCredential(connectId);
508
+ const redacted = await ts.query.getByExecutionId(
509
+ { executionId: connectId },
510
+ { headers: bearerHeaders(clockless) },
511
+ );
512
+ expect(redacted.spec!.data["API_TOKEN"]!.value).toBe(REDACTED_MARKER);
513
+ // The connect lane's own CLOCKED token keeps decrypting the same EC:
514
+ // the clocked arms above are untouched by the run-credential rule.
515
+ const clocked = ts.server.runnerAuthService.mint(connectId, 300).token;
516
+ const decrypted = await ts.query.getByExecutionId(
517
+ { executionId: connectId },
518
+ { headers: bearerHeaders(clocked) },
519
+ );
520
+ expect(decrypted.spec!.data["API_TOKEN"]!.value).toBe(
521
+ "super-secret-token",
522
+ );
523
+ });
524
+ });
525
+
422
526
  describe("decrypt error doctrine", () => {
423
527
  it("tampered stored ciphertext drops the ONE key while the read succeeds; intact keys decrypt", async () => {
424
528
  const created = await ts.command.create(
@@ -19,6 +19,7 @@ import {
19
19
  EncryptionScope,
20
20
  SecretService,
21
21
  } from "../../../encryption/encryption.js";
22
+ import type { BoundExecutionStore } from "../../../runnerauth/bound-execution.js";
22
23
  import { InvalidTokenError } from "../../../runnerauth/runnerauth.js";
23
24
  import type { RunnerCredentialProvider } from "../../../runnerauth/runner-credential-provider.js";
24
25
  import { resolveValuesForCaller } from "../resolve-values-for-caller.js";
@@ -31,6 +32,14 @@ const silentLogger = createLogger({
31
32
 
32
33
  const secretService = SecretService.create(Buffer.alloc(32, 7));
33
34
 
35
+ /** The capability arm never reads the store — a store that proves it. */
36
+ const store: BoundExecutionStore = {
37
+ getResource: () =>
38
+ Promise.reject(new Error("the capability arm must not read the store")),
39
+ findByField: () =>
40
+ Promise.reject(new Error("the capability arm must not read the store")),
41
+ };
42
+
34
43
  /** A minimal HandlerContext: the resolve path reads only the auth header. */
35
44
  function ctxWithBearer(token: string): HandlerContext {
36
45
  const headers = new Headers();
@@ -84,7 +93,12 @@ describe("resolveValuesForCaller (capability delegation — C4)", () => {
84
93
  const provider = providerWith(async () => true);
85
94
  const ec = await executionContext();
86
95
  await resolveValuesForCaller(
87
- { logger: silentLogger, secretService, runnerAuthService: provider },
96
+ {
97
+ logger: silentLogger,
98
+ secretService,
99
+ runnerAuthService: provider,
100
+ store,
101
+ },
88
102
  ctxWithBearer("sandbox-token"),
89
103
  ec,
90
104
  );
@@ -96,7 +110,12 @@ describe("resolveValuesForCaller (capability delegation — C4)", () => {
96
110
  const provider = providerWith(async () => false);
97
111
  const ec = await executionContext();
98
112
  await resolveValuesForCaller(
99
- { logger: silentLogger, secretService, runnerAuthService: provider },
113
+ {
114
+ logger: silentLogger,
115
+ secretService,
116
+ runnerAuthService: provider,
117
+ store,
118
+ },
100
119
  ctxWithBearer("someone-elses-token"),
101
120
  ec,
102
121
  );
@@ -107,7 +126,12 @@ describe("resolveValuesForCaller (capability delegation — C4)", () => {
107
126
  const provider = providerWith(async () => true);
108
127
  const ec = await executionContext();
109
128
  await resolveValuesForCaller(
110
- { logger: silentLogger, secretService, runnerAuthService: provider },
129
+ {
130
+ logger: silentLogger,
131
+ secretService,
132
+ runnerAuthService: provider,
133
+ store,
134
+ },
111
135
  ctxWithBearer(""),
112
136
  ec,
113
137
  );
@@ -121,7 +145,12 @@ describe("resolveValuesForCaller (capability delegation — C4)", () => {
121
145
  });
122
146
  const ec = await executionContext();
123
147
  await resolveValuesForCaller(
124
- { logger: silentLogger, secretService, runnerAuthService: provider },
148
+ {
149
+ logger: silentLogger,
150
+ secretService,
151
+ runnerAuthService: provider,
152
+ store,
153
+ },
125
154
  ctxWithBearer("sandbox-token"),
126
155
  ec,
127
156
  );
@@ -14,21 +14,37 @@
14
14
  * distinguishes itself with an execution-scoped token minted by
15
15
  * getRunnerScopedToken and presented as a Bearer authorization header
16
16
  * (the same header shape a cloud runner uses for its sandbox credential).
17
- * Decrypt requires the FULL binding: a valid, unexpired token whose
18
- * execution_id claim equals this EC's spec.execution_id. Everything else
19
- * — no header, malformed or expired token, or a token minted for a
20
- * different execution — falls closed to the same redaction
21
- * get/getByReference apply, as a SUCCESSFUL response, not an error.
17
+ * Decrypt requires the FULL binding: a valid token whose execution_id
18
+ * claim equals this EC's spec.execution_id, and — for a RUN credential,
19
+ * the no-`exp` token the dispatch path hands the runner — a bound
20
+ * execution that is still live (runnerauth/bound-execution.ts: not
21
+ * terminal, or ended within the grace). Everything else — no header, a
22
+ * malformed or expired token, a token minted for a different execution,
23
+ * a run credential whose run is over — falls closed to the same
24
+ * redaction get/getByReference apply, as a SUCCESSFUL response, not an
25
+ * error.
22
26
  *
23
- * Token verification lives HERE, in the domain, not on the identity
24
- * chassis (O2, 20260827.01): the runner token is a lane discriminator,
25
- * not a caller identity — the chassis deliberately lets it fall through
26
- * to the trusted-local identity (ruling Q6), and this is the one RPC
27
- * that reads the raw header — exactly the consumer the runnerauth module
28
- * header reserves ("the executioncontext resolve step"). The
29
- * redaction-as-success contract is pinned by the conformance suites and
30
- * must survive every future verifier: a runner token is NEVER an
31
- * authentication credential.
27
+ * The decrypt decision lives HERE, in the domain, whatever the identity
28
+ * chassis makes of the token. Under trusted-local no verifier claims it
29
+ * and this is the one RPC that reads the raw header (the consumer the
30
+ * runnerauth module header reserves, "the executioncontext resolve
31
+ * step"). Under the built-in authorization posture the runner-subject
32
+ * verifier ALSO admits the same token as the run's human at position 1
33
+ * (runnerauth.ts header, 2026-09-16) — that decides WHO is calling and
34
+ * whether they may read the row; whether the row's secrets are decrypted
35
+ * for them is still this lane's binding check, so a person who can view
36
+ * an execution's context never receives its plaintext by holding a
37
+ * credential for a different one. The redaction-as-success contract is
38
+ * pinned by the conformance suites and holds on every arm.
39
+ *
40
+ * Why liveness is read only for a no-`exp` token: a clocked token's
41
+ * validity was decided by `verify` (its clock) and its binding, and the
42
+ * ExecutionContext it opens need not name an execution row at all — the
43
+ * connect lane's token opens an EC for an MCP discovery, and the rosters
44
+ * pin a clocked token decrypting an EC whose execution id names no row.
45
+ * A run credential has no clock; the row is the only thing that can end
46
+ * it, and a plaintext token in Temporal history must not decrypt a
47
+ * finished run's secrets for good.
32
48
  *
33
49
  * # Decrypt error doctrine (the oss#405 runtime-resolution doctrine,
34
50
  * # arms per the two-armed taxonomy in encryption/errors.ts)
@@ -56,8 +72,16 @@ import { EncryptionUnavailableError } from "../../encryption/encryption.js";
56
72
  import type { SecretService } from "../../encryption/encryption.js";
57
73
  import { internalError } from "../../pipeline/errors.js";
58
74
  import { parseBearerToken } from "../../pipeline/interceptors/auth.js";
75
+ import {
76
+ bindsARun,
77
+ loadBoundExecution,
78
+ } from "../../runnerauth/bound-execution.js";
79
+ import type { BoundExecutionStore } from "../../runnerauth/bound-execution.js";
59
80
  import type { RunnerCredentialProvider } from "../../runnerauth/runner-credential-provider.js";
60
- import { TOKEN_TYPE_EXECUTION_SCOPED } from "../../runnerauth/runnerauth.js";
81
+ import {
82
+ isClockedToken,
83
+ TOKEN_TYPE_EXECUTION_SCOPED,
84
+ } from "../../runnerauth/runnerauth.js";
61
85
  import { encryptionKeyMissingMessage } from "./constants.js";
62
86
  import { redactExecutionContextSecrets } from "./redact.js";
63
87
 
@@ -65,6 +89,8 @@ export interface ResolveValuesDeps {
65
89
  readonly logger: Logger;
66
90
  readonly secretService: SecretService;
67
91
  readonly runnerAuthService: RunnerCredentialProvider;
92
+ /** Where the bound execution lives — read for a run credential's liveness only. */
93
+ readonly store: BoundExecutionStore;
68
94
  }
69
95
 
70
96
  /**
@@ -123,15 +149,23 @@ async function runnerMayDecrypt(
123
149
  }
124
150
  }
125
151
 
126
- const executionId = verifyRunnerToken(deps, ctx, ec);
127
- if (executionId !== undefined) {
152
+ const token = bearerToken(ctx);
153
+ const executionId = verifyRunnerToken(deps, token, ec);
154
+ if (executionId === undefined) {
155
+ return false;
156
+ }
157
+ if (!isClockedToken(token) && !(await runIsLive(deps, executionId))) {
128
158
  deps.logger.debug(
129
- "Scope-bound runner token presented - decrypting execution context secrets",
159
+ "Run credential presented for a run that is over - redacting execution context secrets",
130
160
  { executionId },
131
161
  );
132
- return true;
162
+ return false;
133
163
  }
134
- return false;
164
+ deps.logger.debug(
165
+ "Scope-bound runner token presented - decrypting execution context secrets",
166
+ { executionId },
167
+ );
168
+ return true;
135
169
  }
136
170
 
137
171
  /**
@@ -148,10 +182,9 @@ async function runnerMayDecrypt(
148
182
  */
149
183
  function verifyRunnerToken(
150
184
  deps: ResolveValuesDeps,
151
- ctx: HandlerContext,
185
+ token: string,
152
186
  ec: ExecutionContext,
153
187
  ): string | undefined {
154
- const token = bearerToken(ctx);
155
188
  if (token === "") {
156
189
  return undefined;
157
190
  }
@@ -183,6 +216,30 @@ function verifyRunnerToken(
183
216
  return tokenExecutionId;
184
217
  }
185
218
 
219
+ /**
220
+ * A run credential's liveness: the bound execution exists, IS a run
221
+ * (`bindsARun` — a clockless token bound to a connect is a shape no mint
222
+ * produces, refused here and by the verifier through the one predicate)
223
+ * and is live (runnerauth/bound-execution.ts). A missing row is "not
224
+ * live" — the credential opens nothing. A store fault is an
225
+ * infrastructure fault, sanitized here as every direct handler does (the
226
+ * store-fault doctrine): an outage must not read as a redaction decision,
227
+ * and the same store just served the row this read is for.
228
+ */
229
+ async function runIsLive(
230
+ deps: ResolveValuesDeps,
231
+ executionId: string,
232
+ ): Promise<boolean> {
233
+ try {
234
+ const execution = await loadBoundExecution(deps.store, executionId);
235
+ return (
236
+ execution !== undefined && bindsARun(execution.kind) && execution.live
237
+ );
238
+ } catch (error) {
239
+ throw internalError(error, "failed to load the run credential's execution");
240
+ }
241
+ }
242
+
186
243
  /**
187
244
  * The Bearer credential from the request's authorization header; empty
188
245
  * when absent or differently shaped. The parsing shape (Go's exact