@noodleseed/one 0.151.1 → 0.153.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 (379) hide show
  1. package/dist/agent-product-skill-state.d.ts +2 -2
  2. package/dist/agent-product-skill-state.d.ts.map +1 -1
  3. package/dist/agent-product-skill-state.js.map +1 -1
  4. package/dist/agent-skills-state.d.ts +2 -2
  5. package/dist/agent-skills-state.d.ts.map +1 -1
  6. package/dist/agent-skills-state.js +1 -1
  7. package/dist/agent-skills-state.js.map +1 -1
  8. package/dist/agents.d.ts +2 -3
  9. package/dist/agents.d.ts.map +1 -1
  10. package/dist/agents.js.map +1 -1
  11. package/dist/assistant-embed-scaffold-template.d.ts +1 -0
  12. package/dist/assistant-embed-scaffold-template.d.ts.map +1 -1
  13. package/dist/assistant-embed-scaffold-template.js +80 -12
  14. package/dist/assistant-embed-scaffold-template.js.map +1 -1
  15. package/dist/checklist.d.ts +2 -1
  16. package/dist/checklist.d.ts.map +1 -1
  17. package/dist/commands/apps-ops.d.ts +0 -4
  18. package/dist/commands/apps-ops.d.ts.map +1 -1
  19. package/dist/commands/apps-ops.js +3 -3
  20. package/dist/commands/apps-ops.js.map +1 -1
  21. package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
  22. package/dist/commands/assistant-embed-ops.js +141 -4
  23. package/dist/commands/assistant-embed-ops.js.map +1 -1
  24. package/dist/commands/assistant-ops.js +1 -1
  25. package/dist/commands/assistant-ops.js.map +1 -1
  26. package/dist/commands/auth-ops.d.ts +0 -14
  27. package/dist/commands/auth-ops.d.ts.map +1 -1
  28. package/dist/commands/auth-ops.js +1 -1
  29. package/dist/commands/auth-ops.js.map +1 -1
  30. package/dist/commands/author-loop.d.ts +0 -2
  31. package/dist/commands/author-loop.d.ts.map +1 -1
  32. package/dist/commands/author-loop.js +2 -2
  33. package/dist/commands/author-loop.js.map +1 -1
  34. package/dist/commands/catalog.d.ts +1 -7
  35. package/dist/commands/catalog.d.ts.map +1 -1
  36. package/dist/commands/catalog.js +3 -3
  37. package/dist/commands/catalog.js.map +1 -1
  38. package/dist/commands/config-values.d.ts +1 -47
  39. package/dist/commands/config-values.d.ts.map +1 -1
  40. package/dist/commands/config-values.js +11 -11
  41. package/dist/commands/config-values.js.map +1 -1
  42. package/dist/commands/connect-oauth.d.ts +0 -1
  43. package/dist/commands/connect-oauth.d.ts.map +1 -1
  44. package/dist/commands/connect-oauth.js +1 -1
  45. package/dist/commands/connect-oauth.js.map +1 -1
  46. package/dist/commands/connect.d.ts +0 -1
  47. package/dist/commands/connect.d.ts.map +1 -1
  48. package/dist/commands/connect.js +1 -1
  49. package/dist/commands/connect.js.map +1 -1
  50. package/dist/commands/customer-auth-smoke.d.ts +2 -1
  51. package/dist/commands/customer-auth-smoke.d.ts.map +1 -1
  52. package/dist/commands/customer-auth-smoke.js +3 -2
  53. package/dist/commands/customer-auth-smoke.js.map +1 -1
  54. package/dist/commands/deploy-ops.d.ts +0 -9
  55. package/dist/commands/deploy-ops.d.ts.map +1 -1
  56. package/dist/commands/deploy-ops.js +3 -4
  57. package/dist/commands/deploy-ops.js.map +1 -1
  58. package/dist/commands/deploy-resume.d.ts +0 -1
  59. package/dist/commands/deploy-resume.d.ts.map +1 -1
  60. package/dist/commands/deploy-resume.js +1 -1
  61. package/dist/commands/deploy-resume.js.map +1 -1
  62. package/dist/commands/deploy-version-resolution.d.ts +0 -2
  63. package/dist/commands/deploy-version-resolution.d.ts.map +1 -1
  64. package/dist/commands/deploy-version-resolution.js +1 -1
  65. package/dist/commands/deploy-version-resolution.js.map +1 -1
  66. package/dist/commands/deployments-ops.d.ts +0 -2
  67. package/dist/commands/deployments-ops.d.ts.map +1 -1
  68. package/dist/commands/deployments-ops.js +2 -2
  69. package/dist/commands/deployments-ops.js.map +1 -1
  70. package/dist/commands/envs-ops.d.ts +0 -3
  71. package/dist/commands/envs-ops.d.ts.map +1 -1
  72. package/dist/commands/envs-ops.js +3 -3
  73. package/dist/commands/envs-ops.js.map +1 -1
  74. package/dist/commands/feedback-ops.d.ts +0 -8
  75. package/dist/commands/feedback-ops.d.ts.map +1 -1
  76. package/dist/commands/feedback-ops.js +1 -1
  77. package/dist/commands/feedback-ops.js.map +1 -1
  78. package/dist/commands/github-ops.d.ts +0 -2
  79. package/dist/commands/github-ops.d.ts.map +1 -1
  80. package/dist/commands/github-ops.js +2 -2
  81. package/dist/commands/github-ops.js.map +1 -1
  82. package/dist/commands/mcp-apps.d.ts +0 -1
  83. package/dist/commands/mcp-apps.d.ts.map +1 -1
  84. package/dist/commands/org-admin.d.ts +0 -17
  85. package/dist/commands/org-admin.d.ts.map +1 -1
  86. package/dist/commands/org-admin.js +1 -2
  87. package/dist/commands/org-admin.js.map +1 -1
  88. package/dist/commands/output.d.ts +3 -12
  89. package/dist/commands/output.d.ts.map +1 -1
  90. package/dist/commands/output.js.map +1 -1
  91. package/dist/commands/platform-account-reset-files.d.ts +0 -3
  92. package/dist/commands/platform-account-reset-files.d.ts.map +1 -1
  93. package/dist/commands/platform-account-reset-files.js +1 -1
  94. package/dist/commands/platform-account-reset-files.js.map +1 -1
  95. package/dist/commands/platform-auth-rollout-acceleration-files.d.ts +0 -3
  96. package/dist/commands/platform-auth-rollout-acceleration-files.d.ts.map +1 -1
  97. package/dist/commands/platform-auth-rollout-acceleration-files.js +1 -1
  98. package/dist/commands/platform-auth-rollout-acceleration-files.js.map +1 -1
  99. package/dist/commands/project-setup.d.ts +0 -1
  100. package/dist/commands/project-setup.d.ts.map +1 -1
  101. package/dist/commands/project-setup.js +1 -1
  102. package/dist/commands/project-setup.js.map +1 -1
  103. package/dist/commands/resource-shared.d.ts +0 -6
  104. package/dist/commands/resource-shared.d.ts.map +1 -1
  105. package/dist/commands/resource-shared.js +1 -1
  106. package/dist/commands/resource-shared.js.map +1 -1
  107. package/dist/commands/session.d.ts +3 -13
  108. package/dist/commands/session.d.ts.map +1 -1
  109. package/dist/commands/session.js +2 -2
  110. package/dist/commands/session.js.map +1 -1
  111. package/dist/commands/target-picker.d.ts +0 -2
  112. package/dist/commands/target-picker.d.ts.map +1 -1
  113. package/dist/commands/target-picker.js +1 -1
  114. package/dist/commands/target-picker.js.map +1 -1
  115. package/dist/commands/update-ops.d.ts +0 -8
  116. package/dist/commands/update-ops.d.ts.map +1 -1
  117. package/dist/commands/update-ops.js +1 -1
  118. package/dist/commands/update-ops.js.map +1 -1
  119. package/dist/control-plane.d.ts +1 -1
  120. package/dist/control-plane.d.ts.map +1 -1
  121. package/dist/control-plane.js.map +1 -1
  122. package/dist/deploy.d.ts +0 -12
  123. package/dist/deploy.d.ts.map +1 -1
  124. package/dist/deploy.js +2 -2
  125. package/dist/deploy.js.map +1 -1
  126. package/dist/dev.d.ts.map +1 -1
  127. package/dist/dev.js +2 -3
  128. package/dist/dev.js.map +1 -1
  129. package/dist/devtools-auth-session.d.ts +0 -1
  130. package/dist/devtools-auth-session.d.ts.map +1 -1
  131. package/dist/devtools-auth-session.js.map +1 -1
  132. package/dist/devtools-chat.d.ts +1 -1
  133. package/dist/devtools-chat.d.ts.map +1 -1
  134. package/dist/devtools-chat.js.map +1 -1
  135. package/dist/devtools-delegated-exchange-state.d.ts +1 -1
  136. package/dist/devtools-delegated-exchange-state.d.ts.map +1 -1
  137. package/dist/devtools-design-contract.d.ts +3 -3
  138. package/dist/devtools-design-contract.d.ts.map +1 -1
  139. package/dist/devtools-design-contract.js +1 -1
  140. package/dist/devtools-design-contract.js.map +1 -1
  141. package/dist/devtools-preview.d.ts +1 -1
  142. package/dist/devtools-preview.d.ts.map +1 -1
  143. package/dist/devtools-rpc-forwarder.d.ts +2 -1
  144. package/dist/devtools-rpc-forwarder.d.ts.map +1 -1
  145. package/dist/devtools-rpc-forwarder.js +11 -12
  146. package/dist/devtools-rpc-forwarder.js.map +1 -1
  147. package/dist/gradient.d.ts +0 -3
  148. package/dist/gradient.d.ts.map +1 -1
  149. package/dist/gradient.js +1 -3
  150. package/dist/gradient.js.map +1 -1
  151. package/dist/local-compile.d.ts +2 -1
  152. package/dist/local-compile.d.ts.map +1 -1
  153. package/dist/local-target.d.ts +2 -1
  154. package/dist/local-target.d.ts.map +1 -1
  155. package/dist/node-version.d.ts +0 -2
  156. package/dist/node-version.d.ts.map +1 -1
  157. package/dist/node-version.js +2 -2
  158. package/dist/node-version.js.map +1 -1
  159. package/dist/plugin-mode/build-readiness-tools.d.ts +5 -4
  160. package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -1
  161. package/dist/plugin-mode/plugin-operation-contract.d.ts +0 -35
  162. package/dist/plugin-mode/plugin-operation-contract.d.ts.map +1 -1
  163. package/dist/plugin-mode/plugin-operation-contract.js +1 -1
  164. package/dist/plugin-mode/plugin-operation-contract.js.map +1 -1
  165. package/dist/project-entrypoint.d.ts +2 -1
  166. package/dist/project-entrypoint.d.ts.map +1 -1
  167. package/dist/project.d.ts +3 -3
  168. package/dist/project.d.ts.map +1 -1
  169. package/dist/project.js.map +1 -1
  170. package/dist/skills-update.d.ts +0 -1
  171. package/dist/skills-update.d.ts.map +1 -1
  172. package/dist/skills-update.js +1 -1
  173. package/dist/skills-update.js.map +1 -1
  174. package/dist/status.d.ts +0 -9
  175. package/dist/status.d.ts.map +1 -1
  176. package/dist/status.js +0 -16
  177. package/dist/status.js.map +1 -1
  178. package/dist/update-binary.d.ts +3 -2
  179. package/dist/update-binary.d.ts.map +1 -1
  180. package/dist/update-check.d.ts +0 -3
  181. package/dist/update-check.d.ts.map +1 -1
  182. package/dist/update-check.js +1 -1
  183. package/dist/update-check.js.map +1 -1
  184. package/dist/validate.d.ts +2 -1
  185. package/dist/validate.d.ts.map +1 -1
  186. package/node_modules/@noodle-borg/agent-kit/dist/behavior-skills.js +10 -10
  187. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +11 -8
  188. package/node_modules/@noodle-borg/agent-kit/dist/index.js +13 -1
  189. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.d.ts +0 -2
  190. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.js +1 -1
  191. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +1 -1
  192. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +8 -0
  193. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +6 -6
  194. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-operations-ref.js +78 -0
  195. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +156 -135
  196. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-renderer-ref.js +109 -0
  197. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.d.ts +2 -3
  198. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
  199. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  200. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +1 -1
  201. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-browser-fields.d.ts +3 -0
  202. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-browser-fields.js +15 -0
  203. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.d.ts +1 -1
  204. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.js +3 -2
  205. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +19 -11
  206. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +24 -23
  207. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript-events.d.ts +24 -0
  208. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript-events.js +39 -0
  209. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript.d.ts +6 -2
  210. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript.js +11 -0
  211. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-view-availability.d.ts +8 -0
  212. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-view-availability.js +8 -0
  213. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts +3 -0
  214. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +7 -1
  215. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +1 -0
  216. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts +1 -0
  217. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js +1 -0
  218. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +1 -0
  219. package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +1 -0
  220. package/node_modules/@noodle-borg/assistant-gateway/package.json +2 -1
  221. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +2 -1
  222. package/node_modules/@noodle-borg/authoring/dist/connections.d.ts +0 -2
  223. package/node_modules/@noodle-borg/authoring/dist/connections.js +1 -1
  224. package/node_modules/@noodle-borg/authoring/dist/load-authored.js +2 -2
  225. package/node_modules/@noodle-borg/authoring/dist/react/bridge.d.ts +3 -2
  226. package/node_modules/@noodle-borg/authoring/dist/react/form-components.d.ts +0 -8
  227. package/node_modules/@noodle-borg/authoring/dist/react/form-components.js +2 -4
  228. package/node_modules/@noodle-borg/authoring/dist/react/hooks.d.ts +2 -2
  229. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +2 -0
  230. package/node_modules/@noodle-borg/authoring/dist/server.js +3 -0
  231. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +12 -11
  232. package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +4 -1
  233. package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +4 -1
  234. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +0 -1
  235. package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.d.ts +1 -1
  236. package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +14 -14
  237. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +0 -2
  238. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +1 -1
  239. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +4 -0
  240. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +20 -1
  241. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +2 -1
  242. package/node_modules/@noodle-borg/compiler/dist/state-handles.js +1 -0
  243. package/node_modules/@noodle-borg/compiler/package.json +1 -4
  244. package/node_modules/@noodle-borg/connector-defs/dist/credential-profiles.js +1 -1
  245. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +0 -6
  246. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -2
  247. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +2 -1
  248. package/node_modules/@noodle-borg/connector-http/dist/mcp/config.js +1 -1
  249. package/node_modules/@noodle-borg/control-plane/dist/deploy-auth.d.ts +0 -1
  250. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +1 -1
  251. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts +2 -1
  252. package/node_modules/@noodle-borg/knowledge-operations/package.json +1 -2
  253. package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js +3 -1
  254. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.js +1 -1
  255. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
  256. package/node_modules/@noodle-borg/protocol/dist/index.js +1 -1
  257. package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.js +2 -2
  258. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +1 -1
  259. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +1 -1
  260. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +4 -6
  261. package/node_modules/@noodle-borg/protocol/dist/mapping.js +1 -1
  262. package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +0 -9
  263. package/node_modules/@noodle-borg/protocol/dist/observation.js +1 -1
  264. package/node_modules/@noodle-borg/protocol/dist/v2/handler.d.ts +2 -1
  265. package/node_modules/@noodle-borg/protocol/dist/v2/versions.d.ts +4 -0
  266. package/node_modules/@noodle-borg/protocol/dist/v2/versions.js +2 -0
  267. package/node_modules/@noodle-borg/protocol/dist/widget/domain-projection.d.ts +2 -1
  268. package/node_modules/@noodle-borg/protocol/package.json +0 -1
  269. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +2 -2
  270. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +1 -0
  271. package/node_modules/@noodle-borg/runtime/dist/index.js +1 -0
  272. package/node_modules/@noodle-borg/runtime/dist/state-handle-ownership.d.ts +21 -0
  273. package/node_modules/@noodle-borg/runtime/dist/state-handle-ownership.js +10 -0
  274. package/node_modules/@noodle-borg/runtime/package.json +6 -1
  275. package/node_modules/@noodle-borg/service/dist/app-package-snapshot.d.ts +1 -2
  276. package/node_modules/@noodle-borg/service/dist/app-package-snapshot.js +1 -2
  277. package/node_modules/@noodle-borg/service/dist/archive-preflight.js +1 -1
  278. package/node_modules/@noodle-borg/service/dist/assets.js +1 -1
  279. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +2 -2
  280. package/node_modules/@noodle-borg/service/dist/client-compatibility.js +1 -2
  281. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +2 -2
  282. package/node_modules/@noodle-borg/service/dist/external-credential-exchange.d.ts +0 -1
  283. package/node_modules/@noodle-borg/service/dist/external-credential-exchange.js +1 -1
  284. package/node_modules/@noodle-borg/service/dist/http-util.js +1 -72
  285. package/node_modules/@noodle-borg/service/dist/managed-config-expressions.d.ts +0 -1
  286. package/node_modules/@noodle-borg/service/dist/managed-config-expressions.js +1 -1
  287. package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js +1 -1
  288. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +2 -2
  289. package/node_modules/@noodle-borg/service/dist/observability-runtime.js +2 -3
  290. package/node_modules/@noodle-borg/service/dist/registry-targets.js +3 -3
  291. package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +0 -4
  292. package/node_modules/@noodle-borg/service/dist/routes/access.js +1 -1
  293. package/node_modules/@noodle-borg/service/dist/routes/alerts.js +3 -2
  294. package/node_modules/@noodle-borg/service/dist/routes/analytics.js +2 -1
  295. package/node_modules/@noodle-borg/service/dist/routes/apps.js +1 -1
  296. package/node_modules/@noodle-borg/service/dist/routes/archive.js +2 -1
  297. package/node_modules/@noodle-borg/service/dist/routes/asset-control-plane.js +2 -1
  298. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +7 -2
  299. package/node_modules/@noodle-borg/service/dist/routes/assistant-appearance.js +2 -1
  300. package/node_modules/@noodle-borg/service/dist/routes/assistant-clients.js +2 -1
  301. package/node_modules/@noodle-borg/service/dist/routes/assistant-doctor.js +2 -1
  302. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +15 -8
  303. package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +2 -1
  304. package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-replay.js +5 -3
  305. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +5 -3
  306. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-configuration.js +1 -1
  307. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +1 -1
  308. package/node_modules/@noodle-borg/service/dist/routes/assistant-route-http.js +4 -3
  309. package/node_modules/@noodle-borg/service/dist/routes/assistant-sandbox.js +1 -1
  310. package/node_modules/@noodle-borg/service/dist/routes/assistant-suggestions.js +1 -1
  311. package/node_modules/@noodle-borg/service/dist/routes/assistant-transcript.js +48 -9
  312. package/node_modules/@noodle-borg/service/dist/routes/assistant-usage.js +2 -1
  313. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +2 -1
  314. package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js +2 -2
  315. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +1 -1
  316. package/node_modules/@noodle-borg/service/dist/routes/config-values-paths.js +1 -1
  317. package/node_modules/@noodle-borg/service/dist/routes/config-values.js +2 -1
  318. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +2 -3
  319. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +1 -1
  320. package/node_modules/@noodle-borg/service/dist/routes/deployment-activation-response.js +1 -1
  321. package/node_modules/@noodle-borg/service/dist/routes/deployment-lock.js +1 -1
  322. package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js +1 -1
  323. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +1 -1
  324. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +2 -1
  325. package/node_modules/@noodle-borg/service/dist/routes/environment-production.js +2 -1
  326. package/node_modules/@noodle-borg/service/dist/routes/envs.js +1 -1
  327. package/node_modules/@noodle-borg/service/dist/routes/google-workload-identity.js +1 -1
  328. package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js +2 -1
  329. package/node_modules/@noodle-borg/service/dist/routes/logs.js +2 -1
  330. package/node_modules/@noodle-borg/service/dist/routes/openai-apps-challenge.js +1 -2
  331. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +2 -1
  332. package/node_modules/@noodle-borg/service/dist/routes/org-domains.js +2 -1
  333. package/node_modules/@noodle-borg/service/dist/routes/org-mcp-subdomain.js +1 -1
  334. package/node_modules/@noodle-borg/service/dist/routes/paths.js +0 -39
  335. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +3 -3
  336. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +2 -1
  337. package/node_modules/@noodle-borg/service/dist/routes/service-principals-dispatch.js +2 -3
  338. package/node_modules/@noodle-borg/service/dist/routes/service-principals.js +1 -1
  339. package/node_modules/@noodle-borg/service/dist/service-config.d.ts +3 -2
  340. package/node_modules/@noodle-borg/service/dist/service-config.js +1 -1
  341. package/node_modules/@noodle-borg/service/dist/service.js +5 -2
  342. package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +1 -1
  343. package/node_modules/@noodle-borg/service/dist/store/audit.js +1 -1
  344. package/node_modules/@noodle-borg/service/dist/store/records.js +1 -1
  345. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +1 -1
  346. package/node_modules/@noodle-borg/service/dist/store/validate.js +1 -1
  347. package/node_modules/@noodle-borg/service/dist/store.d.ts +2 -2
  348. package/node_modules/@noodle-borg/service/dist/store.js +1 -1
  349. package/node_modules/@noodle-borg/service/package.json +1 -1
  350. package/node_modules/@noodle-borg/transport-http/dist/client-identity.js +1 -1
  351. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -2
  352. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts +51 -0
  353. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js +7 -7
  354. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +4 -2
  355. package/node_modules/@noodle-borg/transport-http/dist/index.js +3 -1
  356. package/node_modules/@noodle-borg/transport-http/dist/request-body.d.ts +29 -0
  357. package/node_modules/@noodle-borg/transport-http/dist/request-body.js +64 -0
  358. package/node_modules/@noodle-borg/transport-http/dist/responses.d.ts +28 -0
  359. package/node_modules/@noodle-borg/transport-http/dist/routing.d.ts +2 -4
  360. package/node_modules/@noodle-borg/transport-http/dist/routing.js +3 -3
  361. package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +2 -13
  362. package/node_modules/@noodle-borg/transport-http/package.json +0 -1
  363. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +19 -25
  364. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +20 -34
  365. package/node_modules/@noodleseed/assistant/README.md +1 -1
  366. package/node_modules/@noodleseed/assistant/package.json +2 -1
  367. package/package.json +2 -2
  368. package/dist/commands/catalog-data-billing.d.ts +0 -3
  369. package/dist/commands/catalog-data-billing.d.ts.map +0 -1
  370. package/dist/commands/catalog-data-billing.js +0 -3
  371. package/dist/commands/catalog-data-billing.js.map +0 -1
  372. package/dist/commands/catalog-data-policy.d.ts +0 -3
  373. package/dist/commands/catalog-data-policy.d.ts.map +0 -1
  374. package/dist/commands/catalog-data-policy.js +0 -3
  375. package/dist/commands/catalog-data-policy.js.map +0 -1
  376. package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts +0 -50
  377. package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts +0 -17
  378. package/node_modules/@noodle-borg/transport-http/dist/module-http.d.ts +0 -13
  379. package/node_modules/@noodle-borg/transport-http/dist/module-http.js +0 -28
@@ -8,4 +8,6 @@ export const SERVED_MCP_PROTOCOL_VERSIONS = [
8
8
  '2024-10-07',
9
9
  ];
10
10
  export const MODERN_MCP_PROTOCOL_VERSION = SERVED_MCP_PROTOCOL_VERSIONS[0];
11
+ /** The newest revision served through the legacy (v1 SDK) path. */
12
+ export const LEGACY_MCP_PROTOCOL_VERSION = SERVED_MCP_PROTOCOL_VERSIONS[1];
11
13
  //# sourceMappingURL=versions.js.map
@@ -1,8 +1,9 @@
1
- export type WidgetHostKind = 'claude' | 'generic';
1
+ type WidgetHostKind = 'claude' | 'generic';
2
2
  export interface WidgetDomainProjection {
3
3
  readonly host: WidgetHostKind;
4
4
  readonly mcpServerUrl?: string;
5
5
  }
6
6
  export declare function claudeWidgetDomain(mcpServerUrl: string): string | undefined;
7
7
  export declare function projectWidgetResourceMeta(meta: Readonly<Record<string, unknown>>, projection?: WidgetDomainProjection): Readonly<Record<string, unknown>>;
8
+ export {};
8
9
  //# sourceMappingURL=domain-projection.d.ts.map
@@ -24,7 +24,6 @@
24
24
  "dependencies": {
25
25
  "@noodle-borg/app-package": "0.0.0",
26
26
  "@noodle-borg/uri-template": "0.0.0",
27
- "@modelcontextprotocol/core": "2.0.0",
28
27
  "@modelcontextprotocol/sdk": "^1.29.0",
29
28
  "@modelcontextprotocol/server": "2.0.0",
30
29
  "@noodle-borg/compiler": "0.0.0",
@@ -34,14 +34,14 @@ export declare function credentialUnavailableErrorSnapshot(value: unknown): Cred
34
34
  * to business backends (docs/SPEC.md "Auth And Identity").
35
35
  */
36
36
  export type DownstreamCredential = BearerDownstreamCredential | CookieDownstreamCredential;
37
- export interface BearerDownstreamCredential {
37
+ interface BearerDownstreamCredential {
38
38
  readonly kind?: 'bearer';
39
39
  /** Opaque secret material the connector presents to its backing system. */
40
40
  readonly token: string;
41
41
  /** Optional scope marker, for the broker's own bookkeeping. */
42
42
  readonly scope?: string;
43
43
  }
44
- export interface CookieDownstreamCredential {
44
+ interface CookieDownstreamCredential {
45
45
  readonly kind: 'cookie';
46
46
  /** Cookie header value scoped by the broker to the connector's allowed downstream origin. */
47
47
  readonly cookie: string;
@@ -18,6 +18,7 @@ export { AllowAllPolicy } from './policy/allow-all.js';
18
18
  export type { PolicyContext, PolicyDecision, PolicyGate } from './policy/types.js';
19
19
  export { type ConfirmationActionReview, type ConfirmationPreparationResult, type ConfirmationReview, type ConnectorFailureAttribution, type ElicitationRequest, type ElicitationResponse, type ExecutionError, type ExecutionErrorCode, type ExecutionResult, type InteractiveExecutionResult, isConfirmationRequired, isInputRequired, isInputRequiredForConfirmation, type PreparedOperationAction, type PreparedToolContinuation, type ToolContinuation, type ToolPreparationContinuation, } from './result.js';
20
20
  export { splitResultMeta } from './result-meta.js';
21
+ export { type CallerStateAdoptionInput, type CallerStateAdoptionResult, claimableStateHandleNames, } from './state-handle-ownership.js';
21
22
  export { assertExpectedStateRevision, assertNoSecretValue, assertSchemaValue, assertStateHandleNotCompleted, COMPLETE_STATE_OPERATION, createMutableStateHandleRecord, createStateConnector, InMemoryStateHandleStore, type MutableStateHandleRecord, PATCH_STATE_OPERATION, READ_STATE_OPERATION, STATE_CONNECTOR_ID, STATE_CONNECTOR_VERSION, STATE_OPERATION_SIGNATURES, StateConnector, type StateHandleRecord, type StateHandleStore, type StateInput, type StateMutationInput, type StatePatchInput, stateHandleRecordForMutation, toPublicStateHandleRecord, } from './state-handles.js';
22
23
  export type { ToolDispatchContext, ToolDispatchDecision, ToolDispatchHook, } from './tool-dispatch.js';
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -15,5 +15,6 @@ export { resolveManagedOrigins, } from './managed-origins.js';
15
15
  export { AllowAllPolicy } from './policy/allow-all.js';
16
16
  export { isConfirmationRequired, isInputRequired, isInputRequiredForConfirmation, } from './result.js';
17
17
  export { splitResultMeta } from './result-meta.js';
18
+ export { claimableStateHandleNames, } from './state-handle-ownership.js';
18
19
  export { assertExpectedStateRevision, assertNoSecretValue, assertSchemaValue, assertStateHandleNotCompleted, COMPLETE_STATE_OPERATION, createMutableStateHandleRecord, createStateConnector, InMemoryStateHandleStore, PATCH_STATE_OPERATION, READ_STATE_OPERATION, STATE_CONNECTOR_ID, STATE_CONNECTOR_VERSION, STATE_OPERATION_SIGNATURES, StateConnector, stateHandleRecordForMutation, toPublicStateHandleRecord, } from './state-handles.js';
19
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,21 @@
1
+ import type { ArtifactState } from '@noodle-borg/compiler';
2
+ export interface CallerStateAdoptionInput {
3
+ readonly deploymentId: string;
4
+ readonly handles: readonly string[];
5
+ readonly sourceCallerSubject: string;
6
+ readonly targetCallerSubject: string;
7
+ /** The old anonymous session's absolute expiry; redirects never extend its authority. */
8
+ readonly redirectExpiresAt: Date;
9
+ readonly now: Date;
10
+ }
11
+ export type CallerStateAdoptionResult = {
12
+ readonly ok: true;
13
+ readonly adoptedHandles: readonly string[];
14
+ readonly adoptedRecords: number;
15
+ } | {
16
+ readonly ok: false;
17
+ readonly reason: 'state_key_conflict';
18
+ };
19
+ /** The canonical sorted declaration projection stored on an elevation ticket. */
20
+ export declare function claimableStateHandleNames(state: ArtifactState | undefined): readonly string[];
21
+ //# sourceMappingURL=state-handle-ownership.d.ts.map
@@ -0,0 +1,10 @@
1
+ /** The canonical sorted declaration projection stored on an elevation ticket. */
2
+ export function claimableStateHandleNames(state) {
3
+ if (state === undefined)
4
+ return [];
5
+ return Object.entries(state.handles)
6
+ .filter(([, handle]) => handle.claimOnAuthentication === true)
7
+ .map(([name]) => name)
8
+ .sort();
9
+ }
10
+ //# sourceMappingURL=state-handle-ownership.js.map
@@ -12,6 +12,10 @@
12
12
  ".": {
13
13
  "types": "./dist/index.d.ts",
14
14
  "import": "./dist/index.js"
15
+ },
16
+ "./postgres": {
17
+ "types": "./dist/postgres.d.ts",
18
+ "import": "./dist/postgres.js"
15
19
  }
16
20
  },
17
21
  "files": [
@@ -26,6 +30,7 @@
26
30
  "@noodle-borg/module": "0.0.0"
27
31
  },
28
32
  "devDependencies": {
29
- "@types/node": "^24.13.1"
33
+ "@types/node": "^24.13.1",
34
+ "@types/pg": "^8.20.0"
30
35
  }
31
36
  }
@@ -1,9 +1,8 @@
1
1
  import { type ProductSkillPackageInput, type RenderedProductSkillBundleV1 } from '@noodle-borg/agent-kit';
2
- import { type AppPackageArtifactV1, type AppPackageSnapshotV1, appPackageSnapshotV1Schema } from '@noodle-borg/app-package';
2
+ import { type AppPackageArtifactV1, type AppPackageSnapshotV1 } from '@noodle-borg/app-package';
3
3
  import type { DeployError } from './registry-types.js';
4
4
  import type { DeployRecord } from './store.js';
5
5
  export type { AppPackageSnapshotV1 };
6
- export { appPackageSnapshotV1Schema };
7
6
  export type AppPackageRenderer = (input: ProductSkillPackageInput) => RenderedProductSkillBundleV1;
8
7
  export declare class AppPackageSnapshotError extends Error {
9
8
  readonly deployError: DeployError;
@@ -1,6 +1,5 @@
1
1
  import { ProductSkillRenderError, renderProductSkillBundle, validateRenderedProductSkillFiles, } from '@noodle-borg/agent-kit';
2
- import { appPackageSnapshotV1Schema, createAppPackageSnapshotV1, parseAppPackageSnapshotV1, } from '@noodle-borg/app-package';
3
- export { appPackageSnapshotV1Schema };
2
+ import { createAppPackageSnapshotV1, parseAppPackageSnapshotV1, } from '@noodle-borg/app-package';
4
3
  export class AppPackageSnapshotError extends Error {
5
4
  deployError;
6
5
  constructor(deployError) {
@@ -1,4 +1,4 @@
1
- import { sendJson } from './http-util.js';
1
+ import { sendJson } from '@noodle-borg/transport-http';
2
2
  export function createArchivePreflight(registry) {
3
3
  return async (ref, _req, res) => {
4
4
  let archivedAt;
@@ -1,6 +1,6 @@
1
1
  import { createHash, randomBytes } from 'node:crypto';
2
2
  import { readFile } from 'node:fs/promises';
3
- import { sendJson } from './http-util.js';
3
+ import { sendJson } from '@noodle-borg/transport-http';
4
4
  export { AssetPlanError, } from '@noodle-borg/module';
5
5
  export class InMemoryAssetStore {
6
6
  #objects = new Map();
@@ -2,7 +2,7 @@ import { serverAuthVariableBindings } from './managed-config-expressions.js';
2
2
  import { missingSecretErrors, missingVariableErrors } from './registry-helpers.js';
3
3
  import { serverAuthSecretBindings } from './server-auth-bindings.js';
4
4
  const VARIABLE = /\$\{env\.([A-Za-z0-9_]+)\}/g;
5
- export function assistantSecretBindings(assistant) {
5
+ function assistantSecretBindings(assistant) {
6
6
  return assistant?.model.kind === 'openai-compatible'
7
7
  ? [
8
8
  {
@@ -14,7 +14,7 @@ export function assistantSecretBindings(assistant) {
14
14
  ]
15
15
  : [];
16
16
  }
17
- export function assistantVariableBindings(assistant) {
17
+ function assistantVariableBindings(assistant) {
18
18
  if (!assistant)
19
19
  return [];
20
20
  if (assistant.model.kind !== 'openai-compatible')
@@ -1,6 +1,5 @@
1
- import { applySecurityHeaders } from '@noodle-borg/transport-http';
1
+ import { applySecurityHeaders, sendJson } from '@noodle-borg/transport-http';
2
2
  import { cliCompatibilityError } from './build-info.js';
3
- import { sendJson } from './http-util.js';
4
3
  export function rejectIncompatibleCli(req, res, buildInfo, tls) {
5
4
  const error = cliCompatibilityError(buildInfo, req.headers['x-noodle-cli-version']);
6
5
  if (!error)
@@ -2,9 +2,9 @@ import { createHash, randomUUID } from 'node:crypto';
2
2
  import { bearerToken } from '@noodle-borg/control-plane/portable';
3
3
  import { createDeveloperMcpServer, DEVELOPER_MCP_PATH, developerMcpContextSchema, environmentNameSchema, tenantSlugSchema, } from '@noodle-borg/developer-mcp';
4
4
  import { createPlatformDualEraMcpHandler } from '@noodle-borg/protocol';
5
- import { applySecurityHeaders, enforceHttps, toWebRequest, writeWebResponse, } from '@noodle-borg/transport-http';
5
+ import { applySecurityHeaders, enforceHttps, readJsonBody, sendJson, toWebRequest, writeWebResponse, } from '@noodle-borg/transport-http';
6
6
  import { activeDeveloperGrantForIdentity } from '../auth/developer-grant-guard.js';
7
- import { baseFromRequest, normalizeServiceBase, readJsonBody, sendJson } from '../http-util.js';
7
+ import { baseFromRequest, normalizeServiceBase } from '../http-util.js';
8
8
  import { ServiceDeveloperControlPlane } from './control-plane-adapter.js';
9
9
  export { DEVELOPER_MCP_PATH };
10
10
  const DEVELOPER_MCP_SCOPES = ['cloud:read'];
@@ -77,6 +77,5 @@ export declare function exchangeExternalCredential(input: {
77
77
  readonly config: ExternalCredentialProviderConfig;
78
78
  readonly nowMs: number;
79
79
  }): Promise<ExternalCredentialExchangeResponse>;
80
- export declare function validateExternalCredentialProviderEndpoint(config: ExternalCredentialProviderConfig): URL;
81
80
  export {};
82
81
  //# sourceMappingURL=external-credential-exchange.d.ts.map
@@ -111,7 +111,7 @@ export async function exchangeExternalCredential(input) {
111
111
  }
112
112
  return externalCredentialExchangeResponseSchema.parse(await readBoundedJson(response, EXTERNAL_CREDENTIAL_EXCHANGE_MAX_RESPONSE_BYTES));
113
113
  }
114
- export function validateExternalCredentialProviderEndpoint(config) {
114
+ function validateExternalCredentialProviderEndpoint(config) {
115
115
  if (!isVisibleBoundedUrlText(config.endpoint) || !isVisibleBoundedUrlText(config.allowedOrigin)) {
116
116
  throw new Error('external credential provider endpoint is not allowed');
117
117
  }
@@ -1,75 +1,4 @@
1
- import { gunzipSync } from 'node:zlib';
2
- import { effectiveProto } from '@noodle-borg/transport-http';
3
- export async function readBody(req, max) {
4
- const body = await readBodyBuffer(req, max);
5
- return body.ok ? { ok: true, text: body.buffer.toString('utf8') } : body;
6
- }
7
- async function readBodyBuffer(req, max) {
8
- const chunks = [];
9
- let size = 0;
10
- for await (const chunk of req) {
11
- const buf = chunk;
12
- size += buf.length;
13
- if (size > max)
14
- return { ok: false, receivedBytes: size, maxBytes: max };
15
- chunks.push(buf);
16
- }
17
- return { ok: true, buffer: Buffer.concat(chunks) };
18
- }
19
- /** Read exact request bytes for signature-verified provider webhooks. */
20
- export function readRawBody(req, max) {
21
- return readBodyBuffer(req, max);
22
- }
23
- export async function readDeployBody(req, max) {
24
- const encoding = (req.headers['content-encoding'] ?? 'identity').trim().toLowerCase();
25
- if (encoding !== 'identity' && encoding !== 'gzip') {
26
- return { ok: false, status: 415, error: `unsupported content encoding "${encoding}"` };
27
- }
28
- const body = await readBodyBuffer(req, max);
29
- if (!body.ok) {
30
- return {
31
- ok: false,
32
- status: 413,
33
- error: `${encoding === 'gzip' ? 'compressed deploy' : 'deploy'} request exceeds the ${body.maxBytes} byte limit (received at least ${body.receivedBytes} bytes)`,
34
- receivedBytes: body.receivedBytes,
35
- maxBytes: body.maxBytes,
36
- };
37
- }
38
- if (encoding === 'identity') {
39
- return { ok: true, text: body.buffer.toString('utf8'), encoding };
40
- }
41
- try {
42
- const expanded = gunzipSync(body.buffer, { maxOutputLength: max });
43
- return { ok: true, text: expanded.toString('utf8'), encoding };
44
- }
45
- catch (error) {
46
- const code = error instanceof Error && 'code' in error ? String(error.code) : '';
47
- if (code === 'ERR_BUFFER_TOO_LARGE') {
48
- return {
49
- ok: false,
50
- status: 413,
51
- error: `expanded deploy request exceeds the ${max} byte limit`,
52
- maxBytes: max,
53
- };
54
- }
55
- return { ok: false, status: 400, error: 'invalid gzip deploy request' };
56
- }
57
- }
58
- export async function readJsonBody(req, max) {
59
- const body = await readBody(req, max);
60
- if (!body.ok)
61
- return { ok: false, status: 413, error: 'request body too large' };
62
- try {
63
- return { ok: true, value: JSON.parse(body.text) };
64
- }
65
- catch (error) {
66
- return { ok: false, status: 400, error: `invalid JSON: ${error.message}` };
67
- }
68
- }
69
- export function sendJson(res, status, body) {
70
- res.writeHead(status, { 'content-type': 'application/json; charset=utf-8' });
71
- res.end(JSON.stringify(body));
72
- }
1
+ import { effectiveProto, sendJson, } from '@noodle-borg/transport-http';
73
2
  /**
74
3
  * Log a thrown route error (redacted to name/message/short-stack — never a body, key, or secret) and
75
4
  * answer 500 if the response hasn't already started. The shared catch tail for async route handlers so
@@ -1,5 +1,4 @@
1
1
  import type { TenantAuthConfig, TenantBridgeAuthConfig } from './store.js';
2
- export declare function managedVariableNamesInString(value: string): readonly string[];
3
2
  export declare function resolveManagedVariablesInString(value: string, variables: Readonly<Record<string, string>>): string;
4
3
  export declare function serverAuthVariableBindings(auth: TenantAuthConfig | undefined): readonly string[];
5
4
  export declare function resolveTenantBridgeAuthVariables(auth: TenantBridgeAuthConfig, variables: Readonly<Record<string, string>>): TenantBridgeAuthConfig;
@@ -1,5 +1,5 @@
1
1
  const MANAGED_VARIABLE_RE = /\$\{env\.([A-Za-z0-9_]+)\}/g;
2
- export function managedVariableNamesInString(value) {
2
+ function managedVariableNamesInString(value) {
3
3
  const names = new Set();
4
4
  for (const match of value.matchAll(MANAGED_VARIABLE_RE)) {
5
5
  if (match[1] !== undefined)
@@ -1,7 +1,7 @@
1
1
  import { renderOAuthPage } from './branding.js';
2
2
  const FIREBASE_AUTHORIZE_PATH = '/oauth/customer/firebase/authorize';
3
3
  const FIREBASE_CALLBACK_PATH = '/oauth/customer/firebase/callback';
4
- export const MICROSOFT_CALLBACK_PATH = '/oauth/customer/microsoft/callback';
4
+ const MICROSOFT_CALLBACK_PATH = '/oauth/customer/microsoft/callback';
5
5
  const MICROSOFT_REQUIRED_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
6
6
  export function bridgeAuthorizeUrl(auth, input) {
7
7
  const issuer = trimTrailingSlash(input.issuer);
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { capabilitiesForDeveloperResource, isDeveloperCapability, isDeveloperResource, } from '@noodle-borg/developer-mcp';
3
- export const DEVELOPER_GRANT_VERSION = 2;
4
- export const DEVELOPER_GRANT_ACCESS_MODEL = 'live_user';
3
+ const DEVELOPER_GRANT_VERSION = 2;
4
+ const DEVELOPER_GRANT_ACCESS_MODEL = 'live_user';
5
5
  export class InMemoryDeveloperGrantStore {
6
6
  #records = new Map();
7
7
  #now;
@@ -1,6 +1,5 @@
1
1
  import { InMemoryIntentCaptureSettingsStore, InMemoryIntentEventStore, InMemoryRequestEventStore, } from '@noodle-borg/observability';
2
- import { applySecurityHeaders, enforceHttps, } from '@noodle-borg/transport-http';
3
- import { sendJson } from './http-util.js';
2
+ import { applySecurityHeaders, enforceHttps, sendJson, } from '@noodle-borg/transport-http';
4
3
  import { dispatchAnalyticsReads } from './routes/analytics-dispatch.js';
5
4
  import { dispatchIntentCaptureRoutes } from './routes/intent-capture-dispatch.js';
6
5
  export function createObservabilityStores(options) {
@@ -11,7 +10,7 @@ export function createObservabilityStores(options) {
11
10
  new Set(options.intentCapturePreviewOrgs ?? []),
12
11
  ];
13
12
  }
14
- export async function resolveIntentMode(target, ref, previewOrgs, settings) {
13
+ async function resolveIntentMode(target, ref, previewOrgs, settings) {
15
14
  if (target === undefined)
16
15
  return undefined;
17
16
  const resolved = ref ??
@@ -36,7 +36,7 @@ export function servedTargetFor(record, served, customerVerifierFactory) {
36
36
  : {}),
37
37
  };
38
38
  }
39
- export class MissingCustomerAuthError extends Error {
39
+ class MissingCustomerAuthError extends Error {
40
40
  deploymentId;
41
41
  constructor(deploymentId) {
42
42
  super('customers access mode requires server.auth');
@@ -54,7 +54,7 @@ export function tryServedTargetFor(record, served, customerVerifierFactory) {
54
54
  throw error;
55
55
  }
56
56
  }
57
- export function servedTargetMatchesRecord(target, record) {
57
+ function servedTargetMatchesRecord(target, record) {
58
58
  const expectedOwner = record.accessMode === 'owner-only' ? deploymentOwnerSubject(record) : undefined;
59
59
  const expectedMembership = record.accessMode === 'org-members' ? record.orgMembershipSources : undefined;
60
60
  return (target.deploymentId === record.deploymentId &&
@@ -98,7 +98,7 @@ function sameStrings(left, right) {
98
98
  left.length === right.length &&
99
99
  left.every((value, index) => value === right[index])));
100
100
  }
101
- export function customerTargetFields(auth, customerVerifierFactory) {
101
+ function customerTargetFields(auth, customerVerifierFactory) {
102
102
  if (auth.kind === 'bridge') {
103
103
  return {
104
104
  verifyToken: customerVerifierFactory?.(auth) ?? denyAllCustomerToken,
@@ -1,7 +1,3 @@
1
- import { accessModeSchema } from '@noodle-borg/wire-contracts';
2
- export function isAccessMode(value) {
3
- return accessModeSchema.safeParse(value).success;
4
- }
5
1
  export function isIdentityAccessMode(accessMode) {
6
2
  return (accessMode === 'owner-only' ||
7
3
  accessMode === 'org-members' ||
@@ -1,6 +1,6 @@
1
1
  import { normalizeServerVersion } from '@noodle-borg/module';
2
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
2
3
  import { accessUpdateRequestSchema } from '@noodle-borg/wire-contracts';
3
- import { readJsonBody, sendJson } from '../http-util.js';
4
4
  import { deploymentOwnerSubject } from '../registry-helpers.js';
5
5
  import { authorizeControlPlane } from './control-plane.js';
6
6
  import { canManageMembers } from './org-admin.js';
@@ -1,12 +1,13 @@
1
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
1
2
  import { AlertRuleResponseSchema, AlertRulesListResponseSchema } from '@noodle-borg/wire-contracts';
2
3
  import { buildAlertWebhookPayload, deliverAlertWebhook, validateAlertWebhookUrl, } from '../alert-webhook.js';
3
- import { readJsonBody, sendForbidden, sendJson } from '../http-util.js';
4
+ import { sendForbidden } from '../http-util.js';
4
5
  import { ALERT_METRICS, ALERT_WINDOWS_MINUTES, MAX_ALERT_RULES_PER_ENV, } from '../store/alert-rules.js';
5
6
  import { sendContract } from './apps.js';
6
7
  import { authorizeControlPlane, authorizeTenantControl } from './control-plane.js';
7
8
  import { canManageMembers } from './org-admin.js';
8
9
  /** Redact a webhook URL to its origin — path/query (where tokens live) never leave the service. */
9
- export function redactWebhookUrl(url) {
10
+ function redactWebhookUrl(url) {
10
11
  try {
11
12
  return `${new URL(url).origin}/…`;
12
13
  }
@@ -1,5 +1,6 @@
1
1
  import { aggregateRequestEvents, parseRequestEventQuery } from '@noodle-borg/observability';
2
- import { normalizedTimestamps, sendJson } from '../http-util.js';
2
+ import { sendJson } from '@noodle-borg/transport-http';
3
+ import { normalizedTimestamps } from '../http-util.js';
3
4
  import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
4
5
  /**
5
6
  * Tenant analytics read routes (ADR 0121 Stage B): `metrics` (aggregated), `events` (the stream), and
@@ -1,5 +1,5 @@
1
+ import { sendJson } from '@noodle-borg/transport-http';
1
2
  import { AppResponseSchema, AppsListResponseSchema } from '@noodle-borg/wire-contracts';
2
- import { sendJson } from '../http-util.js';
3
3
  import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
4
4
  import { appWithEndpointUrl } from './endpoint-enrichment.js';
5
5
  const MAX_APPS_LIMIT = 500;
@@ -1,5 +1,6 @@
1
+ import { sendJson } from '@noodle-borg/transport-http';
1
2
  import { CustomerAuthAudienceConflictError } from '../customer-auth-audience-binding.js';
2
- import { sendForbidden, sendJson } from '../http-util.js';
3
+ import { sendForbidden } from '../http-util.js';
3
4
  import { authorizeControlPlane } from './control-plane.js';
4
5
  import { respondDeploymentActivationError } from './deployment-activation-response.js';
5
6
  import { canManageMembers } from './org-admin.js';
@@ -1,5 +1,6 @@
1
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
1
2
  import { AssetPlanError } from '../assets.js';
2
- import { baseFromRequest, readJsonBody, sendForbidden, sendJson } from '../http-util.js';
3
+ import { baseFromRequest, sendForbidden } from '../http-util.js';
3
4
  import { parsePreparedAssets } from './assets.js';
4
5
  import { authorizeControlPlane } from './control-plane.js';
5
6
  export async function handleAssetPreflight(req, res, options, maxBody, tenant, gate, controlPlane, audit) {
@@ -1,6 +1,6 @@
1
1
  import { ADMISSION_DEFAULTS } from '@noodle-borg/admission-limits/portable';
2
2
  import { assistantCoreModelMessages, assistantTurnModelContextMessages, requestAssistantSuggestedPrompts, requestModelCompletion, resolveAssistantContextProviderModelResult, } from '@noodle-borg/assistant-gateway/model-runtime';
3
- import { assistantGuideModelContext, assistantModelToolOncePerSession, assistantModelToolRequiredWhenVisible, assistantOmittedToolResult, assistantViewAvailableData, dispatchAssistantTool, projectAssistantGuide, publicSurfaceOf, remainingTurnTokens, selectAssistantModelTools, toolTouchesDelegatedAuth, withAssistantSessionExecutionAuthority, } from '@noodle-borg/assistant-gateway/portable';
3
+ import { assistantGuideModelContext, assistantModelToolOncePerSession, assistantModelToolRequiredWhenVisible, assistantOmittedToolResult, assistantViewAvailableData, dispatchAssistantTool, projectAssistantGuide, publicSurfaceOf, recoverableAssistantView, remainingTurnTokens, selectAssistantModelTools, toolTouchesDelegatedAuth, withAssistantSessionExecutionAuthority, } from '@noodle-borg/assistant-gateway/portable';
4
4
  import { validateJsonSchemaWithDefaults } from '@noodle-borg/compiler';
5
5
  import { guardedFetch } from '@noodle-borg/connector-http';
6
6
  import { evaluateToolAuthorization } from '@noodle-borg/protocol';
@@ -207,6 +207,9 @@ export async function runAgentTurn(target, session, message, context, deps, emit
207
207
  tool,
208
208
  session,
209
209
  assistant,
210
+ ...(target.served.artifact.server.state === undefined
211
+ ? {}
212
+ : { state: target.served.artifact.server.state }),
210
213
  elevations: deps.elevations,
211
214
  ...(delegatedKeys !== undefined && delegatedKeys.size > 0
212
215
  ? {
@@ -269,8 +272,10 @@ export async function runAgentTurn(target, session, message, context, deps, emit
269
272
  result: dispatch.output,
270
273
  arguments: args,
271
274
  }, (failure) => deps.logger?.warn('assistant.view.unresolved', { ...failure }));
272
- if (view)
275
+ if (view) {
276
+ await deps.store.replaceLatestView(session.id, recoverableAssistantView(view));
273
277
  emit({ event: 'view_available', data: { ...view } });
278
+ }
274
279
  messages.push({
275
280
  role: 'tool',
276
281
  tool_call_id: call.id,
@@ -1,5 +1,6 @@
1
1
  import { assistantAppearanceOverrideSchema, assistantBrowserConfiguration, resolveAssistantAppearanceConfiguration, } from '@noodle-borg/assistant-gateway/portable';
2
- import { readJsonBody, sendForbidden, sendJson } from '../http-util.js';
2
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
3
+ import { sendForbidden } from '../http-util.js';
3
4
  import { now } from './assistant-route-http.js';
4
5
  import { authorizeControlPlane } from './control-plane.js';
5
6
  export async function handleAssistantAppearance(req, res, tenant, deps) {
@@ -1,4 +1,5 @@
1
- import { readJsonBody, sendForbidden, sendJson } from '../http-util.js';
1
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
2
+ import { sendForbidden } from '../http-util.js';
2
3
  import { now } from './assistant-route-http.js';
3
4
  import { authorizeControlPlane } from './control-plane.js';
4
5
  export async function handleAssistantClients(req, res, tenant, id, action, deps) {
@@ -3,7 +3,8 @@ import { probeAssistantModelBoundary } from '@noodle-borg/assistant-gateway/mode
3
3
  import { assistantCustomerIssuer, completeElevation, publicSurfaceOf, } from '@noodle-borg/assistant-gateway/portable';
4
4
  import { guardedFetch } from '@noodle-borg/connector-http';
5
5
  import { tenantMcpUrl } from '@noodle-borg/module';
6
- import { readJsonBody, sendForbidden, sendJson } from '../http-util.js';
6
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
7
+ import { sendForbidden } from '../http-util.js';
7
8
  import { resolveAssistantModelBinding } from './assistant-model-binding.js';
8
9
  import { now } from './assistant-route-http.js';
9
10
  import { authorizeControlPlane } from './control-plane.js';
@@ -1,7 +1,8 @@
1
1
  import { completeElevation, publicSurfaceOf } from '@noodle-borg/assistant-gateway/portable';
2
2
  import { anonymousBehavior } from '@noodle-borg/compiler';
3
+ import { claimableStateHandleNames } from '@noodle-borg/runtime';
4
+ import { sendJson } from '@noodle-borg/transport-http';
3
5
  import { assistantSessionResponseSchema } from '@noodle-borg/wire-contracts';
4
- import { sendJson } from '../http-util.js';
5
6
  function isMixed(surface) {
6
7
  return surface?.mode === 'mixed';
7
8
  }
@@ -16,6 +17,7 @@ const ELEVATION_REFUSAL_MESSAGES = {
16
17
  elevation_tenant_mismatch: 'sign-in ticket belongs to a different tenant',
17
18
  elevation_session_unavailable: 'the conversation behind this sign-in is no longer available',
18
19
  elevation_already_signed_in: 'this conversation is already signed in',
20
+ elevation_state_conflict: 'the signed-in account already has state at the same key; restart or resolve that draft first',
19
21
  };
20
22
  /**
21
23
  * Decide whether this call is an elevation instead of an execution.
@@ -40,6 +42,7 @@ export async function interceptForElevation(input) {
40
42
  sessionId: input.session.id,
41
43
  tenant: input.session.tenant,
42
44
  tool: input.tool.name,
45
+ claimableStateHandles: claimableStateHandleNames(input.state),
43
46
  now: input.now,
44
47
  });
45
48
  return {
@@ -84,7 +87,7 @@ export async function elevateAssistantSession(res, deps, input) {
84
87
  code: 'elevation_unavailable',
85
88
  });
86
89
  }
87
- const elevated = await completeElevation({
90
+ const request = {
88
91
  continuation: input.signInTicket,
89
92
  tenant: input.client.tenant,
90
93
  caller: input.caller,
@@ -95,11 +98,14 @@ export async function elevateAssistantSession(res, deps, input) {
95
98
  ...(input.customerRouting ? { customerRouting: input.customerRouting } : {}),
96
99
  ...(input.boundSurface ? { boundSurface: input.boundSurface } : {}),
97
100
  resume: input.resume,
98
- }, {
99
- elevations: deps.elevations,
100
- elevateSession: (request) => deps.store.elevateSession(request),
101
- now: () => deps.clock?.() ?? new Date(),
102
- });
101
+ };
102
+ const elevated = deps.elevationCoordinator
103
+ ? await deps.elevationCoordinator.complete(request)
104
+ : await completeElevation(request, {
105
+ elevations: deps.elevations,
106
+ elevateSession: (elevation) => deps.store.elevateSession(elevation),
107
+ now: () => deps.clock?.() ?? new Date(),
108
+ });
103
109
  if (!elevated.ok) {
104
110
  await deps.audit.emit({
105
111
  eventType: 'assistant.session.elevation_refused',
@@ -137,7 +143,8 @@ export async function elevateAssistantSession(res, deps, input) {
137
143
  endpoints: input.endpoints,
138
144
  ...(input.configuration ? { configuration: input.configuration } : {}),
139
145
  // The armed hint: the widget answers with one { resume: true } turn on the turns endpoint.
140
- ...(input.resume ? { resume: { tool: elevated.tool } } : {}),
146
+ ...(elevated.resumeArmed ? { resume: { tool: elevated.tool } } : {}),
147
+ continuedAfterAuthentication: true,
141
148
  };
142
149
  assistantSessionResponseSchema.parse(body);
143
150
  return sendJson(res, 200, body);
@@ -1,6 +1,7 @@
1
1
  import { ADMISSION_DEFAULTS, clamp } from '@noodle-borg/admission-limits/portable';
2
2
  import { assistantEmbedOperatorView, parsePublicEmbedBudget, publicSurfaceOf, surfaceEnvelope, } from '@noodle-borg/assistant-gateway/portable';
3
- import { readJsonBody, sendForbidden, sendJson } from '../http-util.js';
3
+ import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
4
+ import { sendForbidden } from '../http-util.js';
4
5
  import { now } from './assistant-route-http.js';
5
6
  import { authorizeControlPlane } from './control-plane.js';
6
7
  /**
@@ -1,5 +1,5 @@
1
- import { assistantInteractionTool, assistantViewAvailableData, auditAssistantInteraction, } from '@noodle-borg/assistant-gateway/portable';
2
- import { sendJson } from '../http-util.js';
1
+ import { assistantInteractionTool, assistantViewAvailableData, auditAssistantInteraction, recoverableAssistantView, } from '@noodle-borg/assistant-gateway/portable';
2
+ import { sendJson } from '@noodle-borg/transport-http';
3
3
  import { now } from './assistant.js';
4
4
  import { assistantInteractionScope } from './assistant-interaction-resolution.js';
5
5
  import { endInteractionSse, writeInputRequested, writeInteractionError, writeInteractionResolved, writeInteractionSseHeaders, writeToolCompleted, writeToolProposed, writeViewAvailable, } from './assistant-interaction-stream.js';
@@ -71,8 +71,10 @@ export async function replayOrConflict(res, deps, session, interaction, action)
71
71
  replayed: true,
72
72
  }, (failure) => deps.logger?.warn('assistant.view.unresolved', { ...failure }))
73
73
  : undefined;
74
- if (view)
74
+ if (view) {
75
+ await deps.store.replaceLatestView(session.id, recoverableAssistantView(view));
75
76
  writeViewAvailable(res, view);
77
+ }
76
78
  }
77
79
  else if (current.status === 'failed') {
78
80
  writeInteractionError(res, current.publicOutcome.code, false);