@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
@@ -163,7 +163,7 @@ export function resolveHostPackageAssets(distribution, inputs, target) {
163
163
  issues,
164
164
  };
165
165
  }
166
- export function normalizeHostAssetPath(value) {
166
+ function normalizeHostAssetPath(value) {
167
167
  const normalized = value.replace(/\\/g, '/').replace(/^\.\/+/, '');
168
168
  return safeRelativePath(normalized) ? normalized : undefined;
169
169
  }
@@ -0,0 +1,3 @@
1
+ /** Positive allowlist of `server.assistant` fields that may reach the browser. */
2
+ export declare const ASSISTANT_BROWSER_UI_FIELDS: readonly ["theme", "layout", "behavior", "labels", "presentation", "suggestedPrompts", "privacyUrl", "termsUrl", "locale", "direction", "webmcp"];
3
+ //# sourceMappingURL=assistant-browser-fields.d.ts.map
@@ -0,0 +1,15 @@
1
+ /** Positive allowlist of `server.assistant` fields that may reach the browser. */
2
+ export const ASSISTANT_BROWSER_UI_FIELDS = [
3
+ 'theme',
4
+ 'layout',
5
+ 'behavior',
6
+ 'labels',
7
+ 'presentation',
8
+ 'suggestedPrompts',
9
+ 'privacyUrl',
10
+ 'termsUrl',
11
+ 'locale',
12
+ 'direction',
13
+ 'webmcp',
14
+ ];
15
+ //# sourceMappingURL=assistant-browser-fields.js.map
@@ -1,7 +1,7 @@
1
1
  import type { ArtifactServer } from '@noodle-borg/compiler';
2
2
  import { type AssistantAppearanceOverride } from './assistant-appearance.js';
3
3
  import type { AssistantAppearanceSettingsStore } from './assistant-appearance-store.js';
4
- import { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-store.js';
4
+ import { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-browser-fields.js';
5
5
  import type { TenantRef } from './tenant-ref.js';
6
6
  /**
7
7
  * What the browser is allowed to see.
@@ -1,5 +1,5 @@
1
1
  import { resolveAssistantAppearanceConfiguration, } from './assistant-appearance.js';
2
- import { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-store.js';
2
+ import { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-browser-fields.js';
3
3
  /**
4
4
  * What the browser is allowed to see.
5
5
  *
@@ -41,7 +41,8 @@ export function assistantBrowserConfiguration(server, boundSurface) {
41
41
  function surfaceOfMode(assistant, mode) {
42
42
  if (mode === undefined || !Array.isArray(assistant?.surfaces))
43
43
  return undefined;
44
- return assistant.surfaces.find((surface) => surface.mode === mode);
44
+ // A `mixed` surface mints `public` sessions (ADR 0220): it is the public binding's surface.
45
+ return assistant.surfaces.find((surface) => surface.mode === mode || (mode === 'public' && surface.mode === 'mixed'));
45
46
  }
46
47
  /** Resolve environment operator state above the immutable deployment projection. */
47
48
  export async function effectiveAssistantBrowserConfiguration(server, tenant, store, boundSurface) {
@@ -1,20 +1,14 @@
1
1
  import type { ArtifactServer } from '@noodle-borg/compiler';
2
2
  import type { CallerIdentity } from '@noodle-borg/runtime';
3
+ import type { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-browser-fields.js';
3
4
  import type { AssistantContextPreferences } from './assistant-context.js';
4
5
  import type { AssistantCustomerRouting } from './assistant-customer-routing.js';
5
- import { type AssistantInteractionClaimResult, type AssistantInteractionCompletionResult, type AssistantInteractionCreateInput, type AssistantInteractionRecord, type AssistantInteractionScope, type AssistantInteractionTransitionInput, type AssistantInteractionTransitionResult, type AssistantPendingConfirmationInteractionRecord, type AssistantPendingInputInteractionRecord } from './assistant-interaction-state.js';
6
+ import { type AssistantInteractionClaimResult, type AssistantInteractionCompletionResult, type AssistantInteractionCreateInput, type AssistantInteractionRecord, type AssistantInteractionScope, type AssistantInteractionTransitionInput, type AssistantInteractionTransitionResult, type AssistantPendingConfirmationInteractionRecord, type AssistantPendingInputInteractionRecord, type AssistantPendingInteractionRecord } from './assistant-interaction-state.js';
7
+ import type { AssistantRecoverableView } from './assistant-view-availability.js';
6
8
  import type { TenantRef } from './tenant-ref.js';
7
- export { ASSISTANT_INTERACTION_EXECUTING_GRACE_MS, ASSISTANT_INTERACTION_OUTCOME_RETENTION_MS, type AssistantConfirmationInteractionRecord, AssistantInteractionCapacityError, type AssistantInteractionClaimResult, type AssistantInteractionCompletion, type AssistantInteractionCompletionResult, type AssistantInteractionCreateInput, type AssistantInteractionKind, type AssistantInteractionPublicArray, type AssistantInteractionPublicObject, type AssistantInteractionPublicOutcome, type AssistantInteractionPublicValue, type AssistantInteractionRecord, type AssistantInteractionScope, type AssistantInteractionStatus, type AssistantInteractionTransitionInput, type AssistantInteractionTransitionNext, type AssistantInteractionTransitionResult, type AssistantPendingConfirmationInteractionRecord, type AssistantPendingInputInteractionRecord, DEFAULT_MAX_PENDING_INTERACTIONS_PER_SESSION, } from './assistant-interaction-state.js';
9
+ export { ASSISTANT_INTERACTION_EXECUTING_GRACE_MS, ASSISTANT_INTERACTION_OUTCOME_RETENTION_MS, type AssistantConfirmationInteractionRecord, AssistantInteractionCapacityError, type AssistantInteractionClaimResult, type AssistantInteractionCompletion, type AssistantInteractionCompletionResult, type AssistantInteractionCreateInput, type AssistantInteractionKind, type AssistantInteractionPublicArray, type AssistantInteractionPublicObject, type AssistantInteractionPublicOutcome, type AssistantInteractionPublicValue, type AssistantInteractionRecord, type AssistantInteractionScope, type AssistantInteractionStatus, type AssistantInteractionTransitionInput, type AssistantInteractionTransitionNext, type AssistantInteractionTransitionResult, type AssistantPendingConfirmationInteractionRecord, type AssistantPendingInputInteractionRecord, type AssistantPendingInteractionRecord, DEFAULT_MAX_PENDING_INTERACTIONS_PER_SESSION, } from './assistant-interaction-state.js';
8
10
  export declare const ASSISTANT_SESSION_IDLE_MS: number;
9
- /**
10
- * The only `server.assistant` fields that may reach a browser.
11
- *
12
- * It lives here, beside the record it types, so the allowlist and the shape it produces cannot drift
13
- * apart: the projection in `packages/service` iterates this same list. A denylist here would be a type
14
- * that lies — it once admitted `sessionClaims` key names, and would now admit the public surface's
15
- * capability allowlist — so growth in the manifest must not be able to grow the browser payload.
16
- */
17
- export declare const ASSISTANT_BROWSER_UI_FIELDS: readonly ["theme", "layout", "behavior", "labels", "presentation", "suggestedPrompts", "privacyUrl", "termsUrl", "locale", "direction", "webmcp"];
11
+ export { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-browser-fields.js';
18
12
  export interface AssistantClientRecord {
19
13
  readonly id: string;
20
14
  readonly name: string;
@@ -79,6 +73,8 @@ export interface AssistantSessionRecord {
79
73
  readonly initialSuggestions?: AssistantInitialSuggestionsState;
80
74
  /** Latest validated follow-up suggestions, replayed with the visible transcript. */
81
75
  readonly latestSuggestions?: AssistantSuggestedPrompts;
76
+ /** Latest renderer descriptor; HTML is re-resolved from the current surface artifact on recovery. */
77
+ readonly latestView?: AssistantRecoverableView;
82
78
  }
83
79
  export interface AssistantSuggestedPrompts {
84
80
  readonly phase: 'initial' | 'follow_up';
@@ -165,6 +161,7 @@ export interface AssistantStore {
165
161
  completeInitialSuggestions(id: string, prompts: readonly string[]): Promise<boolean>;
166
162
  failInitialSuggestions(id: string): Promise<boolean>;
167
163
  replaceLatestSuggestions(id: string, suggestions: AssistantSuggestedPrompts | undefined): Promise<boolean>;
164
+ replaceLatestView(id: string, view: AssistantRecoverableView | undefined): Promise<boolean>;
168
165
  /** Atomically reserve one once-per-session model tool use. */
169
166
  claimModelToolUse(id: string, tool: string): Promise<boolean>;
170
167
  /** Release a reservation only when execution failed before a usable result or interaction existed. */
@@ -221,6 +218,11 @@ export interface AssistantStore {
221
218
  }): Promise<AssistantInteractionCompletionResult>;
222
219
  transitionInteraction(input: AssistantInteractionTransitionInput): Promise<AssistantInteractionTransitionResult>;
223
220
  getInteraction(input: AssistantInteractionScope): Promise<AssistantInteractionRecord | undefined>;
221
+ findPendingInteraction(input: {
222
+ readonly sessionId: string;
223
+ readonly deploymentId: string;
224
+ readonly now: Date;
225
+ }): Promise<AssistantPendingInteractionRecord | undefined>;
224
226
  /** @deprecated Temporary compatibility for the accept-only route while it moves to claim/complete. */
225
227
  consumeInteraction(id: string, sessionId: string, deploymentId: string, now: Date): Promise<(import('./assistant-interaction-state.js').AssistantConfirmationInteractionRecord & {
226
228
  readonly status: 'executing';
@@ -269,6 +271,7 @@ export declare class InMemoryAssistantStore implements AssistantStore {
269
271
  completeInitialSuggestions(id: string, prompts: readonly string[]): Promise<boolean>;
270
272
  failInitialSuggestions(id: string): Promise<boolean>;
271
273
  replaceLatestSuggestions(id: string, suggestions: AssistantSuggestedPrompts | undefined): Promise<boolean>;
274
+ replaceLatestView(id: string, view: AssistantRecoverableView | undefined): Promise<boolean>;
272
275
  claimModelToolUse(id: string, tool: string): Promise<boolean>;
273
276
  releaseModelToolUse(id: string, tool: string): Promise<boolean>;
274
277
  getSession(token: string, now: Date): Promise<AssistantSessionRecord | undefined>;
@@ -285,6 +288,11 @@ export declare class InMemoryAssistantStore implements AssistantStore {
285
288
  }): Promise<AssistantInteractionCompletionResult>;
286
289
  transitionInteraction(input: AssistantInteractionTransitionInput): Promise<AssistantInteractionTransitionResult>;
287
290
  getInteraction(input: AssistantInteractionScope): Promise<AssistantInteractionRecord | undefined>;
291
+ findPendingInteraction(input: {
292
+ readonly sessionId: string;
293
+ readonly deploymentId: string;
294
+ readonly now: Date;
295
+ }): Promise<AssistantPendingInteractionRecord | undefined>;
288
296
  consumeInteraction(id: string, sessionId: string, deploymentId: string, now: Date): Promise<(import('./assistant-interaction-state.js').AssistantConfirmationInteractionRecord & {
289
297
  readonly status: 'executing';
290
298
  }) | undefined>;
@@ -3,29 +3,7 @@ import { ADMISSION_DEFAULTS } from '@noodle-borg/admission-limits/portable';
3
3
  import { AssistantInteractionCapacityError, cloneInteraction, completedInteraction, createPendingInteraction, DEFAULT_MAX_PENDING_INTERACTIONS_PER_SESSION, executingInteraction, expireStrandedExecutingInteraction, isPrunableInteraction, isTerminalInteraction, shouldExpireStrandedExecutingInteraction, transitionedInteractions, } from './assistant-interaction-state.js';
4
4
  export { ASSISTANT_INTERACTION_EXECUTING_GRACE_MS, ASSISTANT_INTERACTION_OUTCOME_RETENTION_MS, AssistantInteractionCapacityError, DEFAULT_MAX_PENDING_INTERACTIONS_PER_SESSION, } from './assistant-interaction-state.js';
5
5
  export const ASSISTANT_SESSION_IDLE_MS = 30 * 60 * 1000;
6
- /**
7
- * The only `server.assistant` fields that may reach a browser.
8
- *
9
- * It lives here, beside the record it types, so the allowlist and the shape it produces cannot drift
10
- * apart: the projection in `packages/service` iterates this same list. A denylist here would be a type
11
- * that lies — it once admitted `sessionClaims` key names, and would now admit the public surface's
12
- * capability allowlist — so growth in the manifest must not be able to grow the browser payload.
13
- */
14
- export const ASSISTANT_BROWSER_UI_FIELDS = [
15
- 'theme',
16
- 'layout',
17
- 'behavior',
18
- 'labels',
19
- 'presentation',
20
- 'suggestedPrompts',
21
- 'privacyUrl',
22
- 'termsUrl',
23
- 'locale',
24
- 'direction',
25
- // Not appearance: the browser must know whether this deployment opted into projecting its tools to
26
- // a page agent (ADR 0220). It travels the allowlist like everything else the page may see.
27
- 'webmcp',
28
- ];
6
+ export { ASSISTANT_BROWSER_UI_FIELDS } from './assistant-browser-fields.js';
29
7
  /** Latest prompt messages retained for model continuity; turn admission is tracked separately. */
30
8
  export const ASSISTANT_HISTORY_MAX_MESSAGES = 40;
31
9
  export class InMemoryAssistantStore {
@@ -199,6 +177,19 @@ export class InMemoryAssistantStore {
199
177
  }
200
178
  return true;
201
179
  }
180
+ async replaceLatestView(id, view) {
181
+ const session = this.#sessions.get(id);
182
+ if (!session)
183
+ return false;
184
+ const next = {
185
+ ...session,
186
+ ...(view === undefined ? {} : { latestView: structuredClone(view) }),
187
+ };
188
+ if (view === undefined)
189
+ delete next.latestView;
190
+ this.#sessions.set(id, next);
191
+ return true;
192
+ }
202
193
  async claimModelToolUse(id, tool) {
203
194
  const session = this.#sessions.get(id);
204
195
  if (!session || session.modelToolUses.includes(tool))
@@ -319,6 +310,16 @@ export class InMemoryAssistantStore {
319
310
  const interaction = this.#scopedInteraction(input);
320
311
  return interaction ? cloneInteraction(interaction) : undefined;
321
312
  }
313
+ async findPendingInteraction(input) {
314
+ this.#pruneInteractions(input.now);
315
+ const interaction = [...this.#interactions.values()]
316
+ .filter((candidate) => candidate.sessionId === input.sessionId &&
317
+ candidate.deploymentId === input.deploymentId &&
318
+ candidate.status === 'pending' &&
319
+ Date.parse(candidate.expiresAt) > input.now.getTime())
320
+ .sort((left, right) => Date.parse(right.createdAt) - Date.parse(left.createdAt))[0];
321
+ return interaction ? cloneInteraction(interaction) : undefined;
322
+ }
322
323
  async consumeInteraction(id, sessionId, deploymentId, now) {
323
324
  const result = this.#claimInteraction({ id, sessionId, deploymentId, now }, 'confirmation');
324
325
  return result.disposition === 'claimed' && result.interaction.kind === 'confirmation'
@@ -0,0 +1,24 @@
1
+ import type { AssistantTranscriptEntry } from './assistant-transcript.js';
2
+ import type { AssistantViewAvailableData } from './assistant-view-availability.js';
3
+ export interface AssistantTranscriptEvent {
4
+ readonly event: string;
5
+ readonly data: Readonly<Record<string, unknown>>;
6
+ }
7
+ export interface AssistantRecoveredInteraction {
8
+ readonly event: 'tool_proposed' | 'input_requested';
9
+ readonly data: Readonly<Record<string, unknown>>;
10
+ }
11
+ /**
12
+ * Project retained visual state through the ordinary assistant event protocol. The browser therefore
13
+ * has one parser and one rendering path for live and recovered turns; this function owns only ordering.
14
+ */
15
+ export declare function assistantTranscriptEvents(input: {
16
+ readonly entries: readonly AssistantTranscriptEntry[];
17
+ readonly latestView?: AssistantViewAvailableData;
18
+ readonly pendingInteraction?: AssistantRecoveredInteraction;
19
+ readonly suggestions?: {
20
+ readonly phase: 'initial' | 'follow_up';
21
+ readonly prompts: readonly string[];
22
+ };
23
+ }): readonly AssistantTranscriptEvent[];
24
+ //# sourceMappingURL=assistant-transcript-events.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Project retained visual state through the ordinary assistant event protocol. The browser therefore
3
+ * has one parser and one rendering path for live and recovered turns; this function owns only ordering.
4
+ */
5
+ export function assistantTranscriptEvents(input) {
6
+ const events = [];
7
+ let open = false;
8
+ let awaitingAssistant = false;
9
+ for (const entry of input.entries) {
10
+ if (entry.role === 'user') {
11
+ if (open)
12
+ events.push({ event: 'message_completed', data: {} });
13
+ events.push({ event: 'message_started', data: { message: entry.text } });
14
+ open = true;
15
+ awaitingAssistant = true;
16
+ continue;
17
+ }
18
+ if (!open || !awaitingAssistant) {
19
+ if (open)
20
+ events.push({ event: 'message_completed', data: {} });
21
+ events.push({ event: 'resume_started', data: { tool: '' } });
22
+ open = true;
23
+ }
24
+ events.push({ event: 'content', data: { delta: entry.text } });
25
+ awaitingAssistant = false;
26
+ }
27
+ if (open)
28
+ events.push({ event: 'message_completed', data: {} });
29
+ if (input.latestView)
30
+ events.push({ event: 'view_available', data: { ...input.latestView } });
31
+ if (input.pendingInteraction)
32
+ events.push(input.pendingInteraction);
33
+ if (input.suggestions?.phase === 'follow_up') {
34
+ events.push({ event: 'suggested_prompts', data: { ...input.suggestions } });
35
+ }
36
+ events.push({ event: 'done', data: {} });
37
+ return events;
38
+ }
39
+ //# sourceMappingURL=assistant-transcript-events.js.map
@@ -1,4 +1,3 @@
1
- import type { AssistantHistoryMessage } from './assistant-store.js';
2
1
  /**
3
2
  * The bounded visible-transcript projection (ADR 0141/0201 amendments 2026-08-26): what a widget may
4
3
  * repaint after a full-page navigation — the sign-in redirect above all — from the session's own
@@ -14,5 +13,10 @@ export interface AssistantTranscriptEntry {
14
13
  readonly role: 'user' | 'assistant';
15
14
  readonly text: string;
16
15
  }
17
- export declare function visibleTranscript(history: readonly AssistantHistoryMessage[]): readonly AssistantTranscriptEntry[];
16
+ export interface AssistantTranscriptHistoryEntry {
17
+ readonly role: 'user' | 'assistant';
18
+ readonly content: string;
19
+ readonly kind?: 'visible' | 'narration';
20
+ }
21
+ export declare function visibleTranscript(history: readonly AssistantTranscriptHistoryEntry[]): readonly AssistantTranscriptEntry[];
18
22
  //# sourceMappingURL=assistant-transcript.d.ts.map
@@ -1,3 +1,14 @@
1
+ /**
2
+ * The bounded visible-transcript projection (ADR 0141/0201 amendments 2026-08-26): what a widget may
3
+ * repaint after a full-page navigation — the sign-in redirect above all — from the session's own
4
+ * short-lived history. Transport-free like every gateway decision; `packages/service` adapts.
5
+ *
6
+ * Only rows explicitly tagged `visible` project. Everything else fails closed out of the transcript:
7
+ * `narration` rows are model-facing scaffolding (resolution summaries carrying tool output,
8
+ * `[platform]` resume prompts the visitor never saw), and an untagged legacy row cannot prove which
9
+ * it was. This is a read-only projection over state that already exists and already expires with the
10
+ * session — it is not a durable transcript, and nothing here may extend a retention window.
11
+ */
1
12
  export function visibleTranscript(history) {
2
13
  return history
3
14
  .filter((entry) => entry.kind === 'visible')
@@ -14,6 +14,14 @@ export interface AssistantViewAvailableData {
14
14
  readonly allowedOpenDomains?: readonly string[];
15
15
  readonly replayed?: true;
16
16
  }
17
+ /** Persisted renderer descriptor: bounded public data only, never HTML or a resource body. */
18
+ export interface AssistantRecoverableView {
19
+ readonly id: string;
20
+ readonly tool: string;
21
+ readonly result: unknown;
22
+ readonly arguments?: unknown;
23
+ }
24
+ export declare function recoverableAssistantView(view: Pick<AssistantViewAvailableData, 'id' | 'tool' | 'result' | 'arguments'>): AssistantRecoverableView;
17
25
  /** A declared widget the completed tool could not surface — reported so the drop is never silent. */
18
26
  export interface AssistantViewUnresolved {
19
27
  readonly tool: string;
@@ -1,5 +1,13 @@
1
1
  import { injectWidgetBridge } from '@noodle-borg/protocol';
2
2
  const MCP_APP_MIME_TYPE = 'text/html;profile=mcp-app';
3
+ export function recoverableAssistantView(view) {
4
+ return {
5
+ id: view.id,
6
+ tool: view.tool,
7
+ result: structuredClone(view.result),
8
+ ...(view.arguments === undefined ? {} : { arguments: structuredClone(view.arguments) }),
9
+ };
10
+ }
3
11
  /**
4
12
  * Resolve a self-contained, statically compiled MCP App document for the embedded host. The linked
5
13
  * resource must be present in the same compiled artifact and carry the MCP App MIME type; arbitrary
@@ -19,6 +19,8 @@ export interface AssistantElevationRecord {
19
19
  readonly tenant: TenantRef;
20
20
  /** The capability the visitor was refused, carried so the audit says what they signed in for. */
21
21
  readonly tool: string;
22
+ /** Canonical server-side snapshot of handles eligible when this ticket was issued. */
23
+ readonly claimableStateHandles: readonly string[];
22
24
  readonly continuationHash: string;
23
25
  readonly createdAt: string;
24
26
  readonly expiresAt: string;
@@ -48,6 +50,7 @@ export interface AssistantElevationStore {
48
50
  readonly sessionId: string;
49
51
  readonly tenant: TenantRef;
50
52
  readonly tool: string;
53
+ readonly claimableStateHandles?: readonly string[];
51
54
  readonly now: Date;
52
55
  }): Promise<{
53
56
  readonly elevation: AssistantElevationRecord;
@@ -66,10 +66,16 @@ export type ElevationResult = {
66
66
  readonly token: string;
67
67
  /** What the visitor was refused before signing in, for the audit trail. */
68
68
  readonly tool: string;
69
+ /** Whether one-shot auto-resume was actually armed after pending-interaction suppression. */
70
+ readonly resumeArmed: boolean;
69
71
  } | {
70
72
  readonly ok: false;
71
73
  readonly status: 403 | 409;
72
- readonly code: 'elevation_ticket_invalid' | 'elevation_ticket_expired' | 'elevation_tenant_mismatch' | 'elevation_session_unavailable' | 'elevation_already_signed_in';
74
+ readonly code: 'elevation_ticket_invalid' | 'elevation_ticket_expired' | 'elevation_tenant_mismatch' | 'elevation_session_unavailable' | 'elevation_already_signed_in' | 'elevation_state_conflict';
73
75
  };
76
+ /** One commit boundary for ticket spend, state adoption, session rebind, and audit. */
77
+ export interface AssistantElevationCoordinator {
78
+ complete(request: ElevationRequest): Promise<ElevationResult>;
79
+ }
74
80
  export declare function completeElevation(request: ElevationRequest, ports: ElevationPorts): Promise<ElevationResult>;
75
81
  //# sourceMappingURL=elevation.d.ts.map
@@ -45,6 +45,7 @@ export async function completeElevation(request, ports) {
45
45
  session: elevated.session,
46
46
  token: elevated.token,
47
47
  tool: claimed.elevation.tool,
48
+ resumeArmed: request.resume === true,
48
49
  };
49
50
  }
50
51
  //# sourceMappingURL=elevation.js.map
@@ -7,6 +7,7 @@ export declare class InMemoryAssistantElevationStore implements AssistantElevati
7
7
  readonly sessionId: string;
8
8
  readonly tenant: TenantRef;
9
9
  readonly tool: string;
10
+ readonly claimableStateHandles?: readonly string[];
10
11
  readonly now: Date;
11
12
  }): Promise<{
12
13
  readonly elevation: AssistantElevationRecord;
@@ -15,6 +15,7 @@ export class InMemoryAssistantElevationStore {
15
15
  sessionId: input.sessionId,
16
16
  tenant: input.tenant,
17
17
  tool: input.tool,
18
+ claimableStateHandles: [...(input.claimableStateHandles ?? [])].sort(),
18
19
  continuationHash: elevationDigest(continuation),
19
20
  createdAt: input.now.toISOString(),
20
21
  expiresAt: new Date(input.now.getTime() + ASSISTANT_ELEVATION_TTL_MS).toISOString(),
@@ -15,6 +15,7 @@ export * from './assistant-presentation.js';
15
15
  export * from './assistant-sensitive-values.js';
16
16
  export * from './assistant-store.js';
17
17
  export * from './assistant-transcript.js';
18
+ export * from './assistant-transcript-events.js';
18
19
  export * from './assistant-view-availability.js';
19
20
  export * from './elevation.js';
20
21
  export * from './elevation-store.js';
@@ -15,6 +15,7 @@ export * from './assistant-presentation.js';
15
15
  export * from './assistant-sensitive-values.js';
16
16
  export * from './assistant-store.js';
17
17
  export * from './assistant-transcript.js';
18
+ export * from './assistant-transcript-events.js';
18
19
  export * from './assistant-view-availability.js';
19
20
  export * from './elevation.js';
20
21
  export * from './elevation-store.js';
@@ -39,9 +39,10 @@
39
39
  "@noodle-borg/compiler": "0.0.0",
40
40
  "@noodle-borg/connector-defs": "0.0.0",
41
41
  "@noodle-borg/module": "0.0.0",
42
+ "@noodle-borg/module-audit": "0.0.0",
42
43
  "@noodle-borg/protocol": "0.0.0",
43
44
  "@noodle-borg/runtime": "0.0.0",
44
- "@noodleseed/assistant": "1.31.0",
45
+ "@noodleseed/assistant": "1.32.0",
45
46
  "zod": "^4.4.3"
46
47
  },
47
48
  "devDependencies": {
@@ -134,7 +134,7 @@ export type AssistantModel = OpenAICompatibleModel | NoodleManagedModel;
134
134
  * `${user.claims.<key>}` in tool fulfilment; `exposeToModel: true` additionally places the value
135
135
  * in the assistant's identity system line so the model can use it directly.
136
136
  */
137
- export interface SessionClaimDeclaration {
137
+ interface SessionClaimDeclaration {
138
138
  readonly exposeToModel?: boolean;
139
139
  }
140
140
  /**
@@ -275,4 +275,5 @@ export declare function openAICompatible(input: OpenAICompatibleModelInput): Ope
275
275
  /** Use Noodle Seed Cloud's operator-selected model. Provider details never enter authored source. */
276
276
  export declare function noodleManaged(): NoodleManagedModel;
277
277
  export declare function embeddedAssistant(input: EmbeddedAssistantOptions): EmbeddedAssistantConfig;
278
+ export {};
278
279
  //# sourceMappingURL=assistant.d.ts.map
@@ -15,8 +15,6 @@ export type { ConnectionBinding, ConnectionRef, ConnectionSource, GoogleWorkload
15
15
  type ManifestV2ConnectorBinding = NonNullable<NonNullable<Extract<Manifest, {
16
16
  manifestVersion: '2';
17
17
  }>['connectors']>[string]['binding']>;
18
- /** Internal manifest projection: clone readonly author inputs to the mutable generated schema shape. */
19
- export declare function toManifestConnectionBinding(binding: ConnectionBinding): ManifestV2ConnectorBinding;
20
18
  export declare function toManifestConnectorRef(connector: ConnectorRef): {
21
19
  readonly id: string;
22
20
  readonly version: string;
@@ -25,7 +25,7 @@ export function bind(connector, options) {
25
25
  };
26
26
  }
27
27
  /** Internal manifest projection: clone readonly author inputs to the mutable generated schema shape. */
28
- export function toManifestConnectionBinding(binding) {
28
+ function toManifestConnectionBinding(binding) {
29
29
  const source = binding.connection.source;
30
30
  return {
31
31
  profile: binding.profile,
@@ -33,9 +33,9 @@ export function prepareAuthoringRuntimeDir(dir, options) {
33
33
  './react': './react.mjs',
34
34
  },
35
35
  }));
36
- writeFileSync(join(self, 'index.mjs'), "export { annotations, asset, authenticatedWebsite, bind, clientCredentials, connector, connection, customerAuth, customerEndpoint, embeddedAssistant, externalExchange, file, gmailConnector, googleWorkloadIdentity, handoffSession, knowledge, managedSecret, noodleManaged, openAICompatible, prompt, publicWebsite, resource, secret, server, site, tool, variable, when, z } from '@noodle-borg/authoring';\n");
36
+ writeFileSync(join(self, 'index.mjs'), "export { algolia, annotations, asset, authenticatedWebsite, bind, clientCredentials, connector, connection, customerAuth, customerEndpoint, embeddedAssistant, externalExchange, file, firecrawl, gmailConnector, googleWorkloadIdentity, handoffSession, knowledge, managedSecret, meilisearch, noodleManaged, openAICompatible, prompt, publicWebsite, resource, secret, server, site, tavily, tool, variable, when, z } from '@noodle-borg/authoring';\n");
37
37
  writeFileSync(join(self, 'platform.mjs'), "export { noodlePlatform, noodlePlatformCatalog } from '@noodle-borg/authoring';\n");
38
- writeFileSync(join(self, 'react.mjs'), "export { generateHelpers } from '@noodle-borg/authoring/react';\n");
38
+ writeFileSync(join(self, 'react.mjs'), "export * from '@noodle-borg/authoring/react';\n");
39
39
  }
40
40
  function pathExists(path) {
41
41
  try {
@@ -44,12 +44,12 @@ export type ModelContextUpdate = {
44
44
  }[];
45
45
  readonly structuredContent?: Readonly<Record<string, unknown>>;
46
46
  };
47
- export type RuntimeBrandAsset = {
47
+ type RuntimeBrandAsset = {
48
48
  readonly uri: string;
49
49
  readonly darkUri?: string;
50
50
  readonly alt: string;
51
51
  };
52
- export type RuntimeBrandTheme = {
52
+ type RuntimeBrandTheme = {
53
53
  readonly surface?: string;
54
54
  readonly surfaceRaised?: string;
55
55
  readonly surfaceMuted?: string;
@@ -108,4 +108,5 @@ export declare function globalViewState(): Record<string, unknown>;
108
108
  export declare function setGlobalViewState(value: Record<string, unknown>): void;
109
109
  export declare function globalLayout(): LayoutState;
110
110
  export declare function globalBranding(): RuntimeBranding;
111
+ export {};
111
112
  //# sourceMappingURL=bridge.d.ts.map
@@ -58,8 +58,6 @@ export type RadioGroupProps = Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue
58
58
  readonly options: readonly RadioOption[];
59
59
  readonly value?: string;
60
60
  readonly defaultValue?: string;
61
- /** @deprecated Use `onValueChange`; retained for source compatibility. */
62
- readonly onChange?: (value: string) => void;
63
61
  readonly onValueChange?: (value: string) => void;
64
62
  /** Shared radio `name`; defaults to a stable generated id. */
65
63
  readonly name?: string;
@@ -71,8 +69,6 @@ export declare const RadioGroup: import("react").ForwardRefExoticComponent<Omit<
71
69
  readonly options: readonly RadioOption[];
72
70
  readonly value?: string;
73
71
  readonly defaultValue?: string;
74
- /** @deprecated Use `onValueChange`; retained for source compatibility. */
75
- readonly onChange?: (value: string) => void;
76
72
  readonly onValueChange?: (value: string) => void;
77
73
  /** Shared radio `name`; defaults to a stable generated id. */
78
74
  readonly name?: string;
@@ -101,8 +97,6 @@ export type SegmentedControlProps = Omit<HTMLAttributes<HTMLDivElement>, 'defaul
101
97
  readonly options: readonly SegmentedOption[];
102
98
  readonly value?: string;
103
99
  readonly defaultValue?: string;
104
- /** @deprecated Use `onValueChange`; retained for source compatibility. */
105
- readonly onChange?: (value: string) => void;
106
100
  readonly onValueChange?: (value: string) => void;
107
101
  readonly name?: string;
108
102
  readonly disabled?: boolean;
@@ -113,8 +107,6 @@ export declare const SegmentedControl: import("react").ForwardRefExoticComponent
113
107
  readonly options: readonly SegmentedOption[];
114
108
  readonly value?: string;
115
109
  readonly defaultValue?: string;
116
- /** @deprecated Use `onValueChange`; retained for source compatibility. */
117
- readonly onChange?: (value: string) => void;
118
110
  readonly onValueChange?: (value: string) => void;
119
111
  readonly name?: string;
120
112
  readonly disabled?: boolean;
@@ -152,7 +152,7 @@ export const Checkbox = forwardRef(function Checkbox({ label, className, onChang
152
152
  ? box
153
153
  : createElement('label', { className: 'nsr-check' }, box, createElement('span', null, label));
154
154
  });
155
- export const RadioGroup = forwardRef(function RadioGroup({ options, value, defaultValue, onChange, onValueChange, name, direction = 'column', disabled, required, className, ...props }, ref) {
155
+ export const RadioGroup = forwardRef(function RadioGroup({ options, value, defaultValue, onValueChange, name, direction = 'column', disabled, required, className, ...props }, ref) {
156
156
  const fallbackName = useId();
157
157
  const groupName = name ?? fallbackName;
158
158
  const field = useFieldControlProps({ ...props, required }, 'group');
@@ -174,7 +174,6 @@ export const RadioGroup = forwardRef(function RadioGroup({ options, value, defau
174
174
  required: field.required,
175
175
  disabled: disabled || option.disabled,
176
176
  onChange: () => {
177
- onChange?.(option.value);
178
177
  onValueChange?.(option.value);
179
178
  },
180
179
  }), createElement('span', null, option.label))));
@@ -208,7 +207,7 @@ export const Slider = forwardRef(function Slider({ className, ...props }, ref) {
208
207
  });
209
208
  });
210
209
  /** Single-select value picker implemented with native radios for keyboard and form behavior. */
211
- export const SegmentedControl = forwardRef(function SegmentedControl({ options, value, defaultValue, onChange, onValueChange, name, disabled, required, className, ...props }, ref) {
210
+ export const SegmentedControl = forwardRef(function SegmentedControl({ options, value, defaultValue, onValueChange, name, disabled, required, className, ...props }, ref) {
212
211
  const fallbackName = useId();
213
212
  const groupName = name ?? fallbackName;
214
213
  const field = useFieldControlProps({ ...props, required }, 'group');
@@ -234,7 +233,6 @@ export const SegmentedControl = forwardRef(function SegmentedControl({ options,
234
233
  required: field.required,
235
234
  disabled: disabled || option.disabled,
236
235
  onChange: () => {
237
- onChange?.(option.value);
238
236
  onValueChange?.(option.value);
239
237
  },
240
238
  }), createElement('span', { className: 'nsr-segmented-label' }, option.label))));
@@ -1,7 +1,7 @@
1
1
  import { type AppFlow, type AppFlowConfig } from './app-flow.js';
2
2
  import { type DisplayMode, type LayoutState, type ModelContextUpdate, type NoodleReactBridge, type RuntimeBranding, type ToolResult } from './bridge.js';
3
3
  import { type HandoffController } from './handoff.js';
4
- import { createViewStore, type StoreHookResult } from './store.js';
4
+ import { createViewStore } from './store.js';
5
5
  export type ToolStatus = 'idle' | 'pending' | 'success' | 'error';
6
6
  export type CallToolState = {
7
7
  readonly status: ToolStatus;
@@ -54,5 +54,5 @@ export declare function useSendFollowUpMessage(): (message: {
54
54
  export declare function useUpdateModelContext(): (update: ModelContextUpdate) => Promise<void>;
55
55
  /** Publish a portable, structured widget lifecycle summary through the standard model-context path. */
56
56
  export declare function useWidgetLifecycle(widgetName: string): (lifecycle: 'mounted' | 'submitted' | 'cancelled' | 'dismissed', summary?: Readonly<Record<string, unknown>>) => Promise<void>;
57
- export type { DisplayMode, LayoutState, ModelContextUpdate, NoodleReactBridge, RuntimeBranding, StoreHookResult, ToolResult, };
57
+ export type { DisplayMode, LayoutState, ModelContextUpdate, NoodleReactBridge, RuntimeBranding, ToolResult, };
58
58
  //# sourceMappingURL=hooks.d.ts.map
@@ -19,6 +19,8 @@ export interface StateHandleOptions {
19
19
  readonly version: string;
20
20
  readonly scope?: StateHandleScope;
21
21
  readonly ttlSeconds?: number;
22
+ /** Move this caller-scoped, finite-lived state to the authenticated caller during ticket elevation. */
23
+ readonly claimOnAuthentication?: true;
22
24
  }
23
25
  export interface ServerOptions {
24
26
  readonly title: string;
@@ -231,6 +231,9 @@ class ServerBuilder {
231
231
  version: handle.version,
232
232
  ...(handle.scope !== undefined ? { scope: handle.scope } : {}),
233
233
  ...(handle.ttlSeconds !== undefined ? { ttlSeconds: handle.ttlSeconds } : {}),
234
+ ...(handle.claimOnAuthentication === true
235
+ ? { claimOnAuthentication: true }
236
+ : {}),
234
237
  },
235
238
  ])),
236
239
  },