@noodleseed/one 0.129.2 → 0.131.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 (231) hide show
  1. package/dist/bin.js +0 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +3 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/intents-ops.d.ts +3 -0
  6. package/dist/commands/intents-ops.d.ts.map +1 -0
  7. package/dist/commands/intents-ops.js +147 -0
  8. package/dist/commands/intents-ops.js.map +1 -0
  9. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  10. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  11. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  12. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +1 -1
  13. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  14. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  15. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  16. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  17. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  18. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  19. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  20. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +1 -0
  21. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  22. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +1 -1
  23. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  24. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  25. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +21 -0
  26. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts.map +1 -1
  27. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +10 -0
  28. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js.map +1 -1
  29. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +7 -1
  30. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +5 -0
  32. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js.map +1 -1
  33. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.d.ts +5 -1
  34. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.d.ts.map +1 -1
  35. package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.js.map +1 -1
  36. package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts +1 -0
  37. package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts.map +1 -1
  38. package/node_modules/@noodle-borg/assistant-gateway/dist/index.js +1 -0
  39. package/node_modules/@noodle-borg/assistant-gateway/dist/index.js.map +1 -1
  40. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts +8 -1
  41. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js +24 -1
  43. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js.map +1 -1
  44. package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.d.ts +22 -0
  45. package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.d.ts.map +1 -0
  46. package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.js +28 -0
  47. package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.js.map +1 -0
  48. package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
  49. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.d.ts.map +1 -1
  50. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js +66 -1
  51. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js.map +1 -1
  52. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/compiler/dist/compile.js +9 -0
  54. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  55. package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts +2 -1
  56. package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts.map +1 -1
  57. package/node_modules/@noodle-borg/knowledge/dist/fusion.js +3 -2
  58. package/node_modules/@noodle-borg/knowledge/dist/fusion.js.map +1 -1
  59. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts.map +1 -1
  60. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js +7 -2
  61. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js.map +1 -1
  62. package/node_modules/@noodle-borg/module/dist/index.d.ts +1 -0
  63. package/node_modules/@noodle-borg/module/dist/index.d.ts.map +1 -1
  64. package/node_modules/@noodle-borg/module/dist/index.js +1 -0
  65. package/node_modules/@noodle-borg/module/dist/index.js.map +1 -1
  66. package/node_modules/@noodle-borg/module/dist/intent.d.ts +54 -0
  67. package/node_modules/@noodle-borg/module/dist/intent.d.ts.map +1 -0
  68. package/node_modules/@noodle-borg/module/dist/intent.js +11 -0
  69. package/node_modules/@noodle-borg/module/dist/intent.js.map +1 -0
  70. package/node_modules/@noodle-borg/observability/dist/index.d.ts +6 -0
  71. package/node_modules/@noodle-borg/observability/dist/index.d.ts.map +1 -0
  72. package/node_modules/@noodle-borg/observability/dist/index.js +6 -0
  73. package/node_modules/@noodle-borg/observability/dist/index.js.map +1 -0
  74. package/node_modules/@noodle-borg/observability/dist/intent-capture.d.ts +65 -0
  75. package/node_modules/@noodle-borg/observability/dist/intent-capture.d.ts.map +1 -0
  76. package/node_modules/@noodle-borg/observability/dist/intent-capture.js +327 -0
  77. package/node_modules/@noodle-borg/observability/dist/intent-capture.js.map +1 -0
  78. package/node_modules/@noodle-borg/observability/dist/request-event-buffer.d.ts.map +1 -0
  79. package/node_modules/@noodle-borg/observability/dist/request-event-buffer.js.map +1 -0
  80. package/node_modules/@noodle-borg/observability/dist/request-events-postgres.d.ts.map +1 -0
  81. package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js.map +1 -0
  82. package/node_modules/@noodle-borg/observability/dist/request-events.d.ts.map +1 -0
  83. package/node_modules/@noodle-borg/observability/dist/request-events.js.map +1 -0
  84. package/node_modules/@noodle-borg/observability/dist/runtime.d.ts +11 -0
  85. package/node_modules/@noodle-borg/observability/dist/runtime.d.ts.map +1 -0
  86. package/node_modules/@noodle-borg/observability/dist/runtime.js +29 -0
  87. package/node_modules/@noodle-borg/observability/dist/runtime.js.map +1 -0
  88. package/node_modules/@noodle-borg/observability/package.json +32 -0
  89. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.d.ts.map +1 -1
  90. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js +22 -3
  91. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js.map +1 -1
  92. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -0
  93. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
  94. package/node_modules/@noodle-borg/protocol/dist/index.js +1 -0
  95. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
  96. package/node_modules/@noodle-borg/protocol/dist/intent-capture.d.ts +47 -0
  97. package/node_modules/@noodle-borg/protocol/dist/intent-capture.d.ts.map +1 -0
  98. package/node_modules/@noodle-borg/protocol/dist/intent-capture.js +101 -0
  99. package/node_modules/@noodle-borg/protocol/dist/intent-capture.js.map +1 -0
  100. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +5 -2
  101. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/protocol/dist/mapping.js +9 -7
  103. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
  104. package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +3 -0
  105. package/node_modules/@noodle-borg/protocol/dist/observation.d.ts.map +1 -1
  106. package/node_modules/@noodle-borg/protocol/dist/observation.js.map +1 -1
  107. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +4 -0
  108. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  109. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  110. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts.map +1 -1
  111. package/node_modules/@noodle-borg/protocol/dist/v2/server.js +23 -4
  112. package/node_modules/@noodle-borg/protocol/dist/v2/server.js.map +1 -1
  113. package/node_modules/@noodle-borg/protocol/package.json +1 -0
  114. package/node_modules/@noodle-borg/service/dist/archive-preflight.d.ts +5 -0
  115. package/node_modules/@noodle-borg/service/dist/archive-preflight.d.ts.map +1 -0
  116. package/node_modules/@noodle-borg/service/dist/archive-preflight.js +19 -0
  117. package/node_modules/@noodle-borg/service/dist/archive-preflight.js.map +1 -0
  118. package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -3
  119. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  120. package/node_modules/@noodle-borg/service/dist/index.js +1 -3
  121. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  122. package/node_modules/@noodle-borg/service/dist/main.js +2 -0
  123. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/observability-runtime.d.ts +25 -0
  125. package/node_modules/@noodle-borg/service/dist/observability-runtime.d.ts.map +1 -0
  126. package/node_modules/@noodle-borg/service/dist/observability-runtime.js +61 -0
  127. package/node_modules/@noodle-borg/service/dist/observability-runtime.js.map +1 -0
  128. package/node_modules/@noodle-borg/service/dist/options.d.ts +10 -1
  129. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts +2 -0
  131. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +3 -0
  133. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js.map +1 -1
  134. package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.d.ts.map +1 -1
  135. package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +1 -1
  136. package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js.map +1 -1
  137. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +70 -30
  139. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  140. package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.d.ts +11 -0
  141. package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.d.ts.map +1 -0
  142. package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.js +22 -0
  143. package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.js.map +1 -0
  144. package/node_modules/@noodle-borg/service/dist/routes/intent-capture.d.ts +20 -0
  145. package/node_modules/@noodle-borg/service/dist/routes/intent-capture.d.ts.map +1 -0
  146. package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js +158 -0
  147. package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js.map +1 -0
  148. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +3 -1
  149. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  150. package/node_modules/@noodle-borg/service/dist/routes/paths.js +6 -0
  151. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  152. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  153. package/node_modules/@noodle-borg/service/dist/serve.js +16 -16
  154. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  155. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +2 -0
  156. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
  157. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
  158. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
  159. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  160. package/node_modules/@noodle-borg/service/dist/service.js +25 -32
  161. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  162. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  163. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +1 -1
  164. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  165. package/node_modules/@noodle-borg/service/package.json +2 -1
  166. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +6 -1
  167. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/transport-http/dist/handler.js +4 -0
  169. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  170. package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts +15 -1
  171. package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +51 -3
  173. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js.map +1 -1
  174. package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts +3 -1
  175. package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts.map +1 -1
  176. package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +21 -5
  177. package/node_modules/@noodle-borg/transport-http/dist/serve-request.js.map +1 -1
  178. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +40 -2
  179. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +26 -2
  181. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -1
  182. package/node_modules/@noodleseed/assistant/README.md +23 -1
  183. package/node_modules/@noodleseed/assistant/dist/{chunk-DLUINP4W.js → chunk-LEKEIHJV.js} +61 -33
  184. package/node_modules/@noodleseed/assistant/dist/{chunk-DLUINP4W.js.map → chunk-LEKEIHJV.js.map} +1 -1
  185. package/node_modules/@noodleseed/assistant/dist/{chunk-52XT7BLR.js → chunk-ZPZHPXIQ.js} +129 -82
  186. package/node_modules/@noodleseed/assistant/dist/chunk-ZPZHPXIQ.js.map +1 -0
  187. package/node_modules/@noodleseed/assistant/dist/{client-7o7n2nqw.d.cts → client-BZ7xPwfW.d.cts} +14 -5
  188. package/node_modules/@noodleseed/assistant/dist/{client-CysBQBdd.d.ts → client-BkJlpN5N.d.ts} +14 -5
  189. package/node_modules/@noodleseed/assistant/dist/client.cjs +127 -80
  190. package/node_modules/@noodleseed/assistant/dist/client.cjs.map +1 -1
  191. package/node_modules/@noodleseed/assistant/dist/client.d.cts +1 -1
  192. package/node_modules/@noodleseed/assistant/dist/client.d.ts +1 -1
  193. package/node_modules/@noodleseed/assistant/dist/client.js +1 -1
  194. package/node_modules/@noodleseed/assistant/dist/embed.global.js +65 -65
  195. package/node_modules/@noodleseed/assistant/dist/index.cjs +186 -111
  196. package/node_modules/@noodleseed/assistant/dist/index.cjs.map +1 -1
  197. package/node_modules/@noodleseed/assistant/dist/index.d.cts +2 -2
  198. package/node_modules/@noodleseed/assistant/dist/index.d.ts +2 -2
  199. package/node_modules/@noodleseed/assistant/dist/index.js +2 -2
  200. package/node_modules/@noodleseed/assistant/dist/react/client.cjs +127 -80
  201. package/node_modules/@noodleseed/assistant/dist/react/client.cjs.map +1 -1
  202. package/node_modules/@noodleseed/assistant/dist/react/client.d.cts +1 -1
  203. package/node_modules/@noodleseed/assistant/dist/react/client.d.ts +1 -1
  204. package/node_modules/@noodleseed/assistant/dist/react/client.js +1 -1
  205. package/node_modules/@noodleseed/assistant/dist/react.cjs +187 -111
  206. package/node_modules/@noodleseed/assistant/dist/react.cjs.map +1 -1
  207. package/node_modules/@noodleseed/assistant/dist/react.d.cts +8 -1
  208. package/node_modules/@noodleseed/assistant/dist/react.d.ts +8 -1
  209. package/node_modules/@noodleseed/assistant/dist/react.js +3 -2
  210. package/node_modules/@noodleseed/assistant/dist/react.js.map +1 -1
  211. package/node_modules/@noodleseed/assistant/dist/server.cjs +1 -0
  212. package/node_modules/@noodleseed/assistant/dist/server.cjs.map +1 -1
  213. package/node_modules/@noodleseed/assistant/dist/server.d.cts +15 -0
  214. package/node_modules/@noodleseed/assistant/dist/server.d.ts +15 -0
  215. package/node_modules/@noodleseed/assistant/dist/server.js +1 -0
  216. package/node_modules/@noodleseed/assistant/dist/server.js.map +1 -1
  217. package/node_modules/@noodleseed/assistant/package.json +1 -1
  218. package/package.json +3 -2
  219. package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.d.ts.map +0 -1
  220. package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.js.map +0 -1
  221. package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.d.ts.map +0 -1
  222. package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js.map +0 -1
  223. package/node_modules/@noodle-borg/service/dist/store/request-events.d.ts.map +0 -1
  224. package/node_modules/@noodle-borg/service/dist/store/request-events.js.map +0 -1
  225. package/node_modules/@noodleseed/assistant/dist/chunk-52XT7BLR.js.map +0 -1
  226. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-event-buffer.d.ts +0 -0
  227. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-event-buffer.js +0 -0
  228. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events-postgres.d.ts +0 -0
  229. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events-postgres.js +0 -0
  230. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events.d.ts +0 -0
  231. /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events.js +0 -0
@@ -1,4 +1,4 @@
1
- import { A as AssistantPageContext, a as AssistantContext, C as CreateAssistantClientOptions, b as AssistantChatState, c as AssistantClient } from '../client-7o7n2nqw.cjs';
1
+ import { A as AssistantPageContext, a as AssistantContext, C as CreateAssistantClientOptions, b as AssistantChatState, c as AssistantClient } from '../client-BZ7xPwfW.cjs';
2
2
  import '../appearance-Cc-eqSbp.cjs';
3
3
  import 'ai';
4
4
 
@@ -1,4 +1,4 @@
1
- import { A as AssistantPageContext, a as AssistantContext, C as CreateAssistantClientOptions, b as AssistantChatState, c as AssistantClient } from '../client-CysBQBdd.js';
1
+ import { A as AssistantPageContext, a as AssistantContext, C as CreateAssistantClientOptions, b as AssistantChatState, c as AssistantClient } from '../client-BkJlpN5N.js';
2
2
  import '../appearance-Cc-eqSbp.js';
3
3
  import 'ai';
4
4
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  createAssistantClient
4
- } from "../chunk-52XT7BLR.js";
4
+ } from "../chunk-ZPZHPXIQ.js";
5
5
  import "../chunk-3YYTUJPJ.js";
6
6
  import "../chunk-5FUTL2UF.js";
7
7
 
@@ -27033,6 +27033,12 @@ var AssistantChatStateStore = class {
27033
27033
  case "interaction_started":
27034
27034
  this.#beginInteraction(event.data.id);
27035
27035
  return;
27036
+ case "resume_started":
27037
+ this.#status = "submitted";
27038
+ this.#error = void 0;
27039
+ this.#startOperation();
27040
+ this.#notify();
27041
+ return;
27036
27042
  case "content":
27037
27043
  this.#writeText(event.data.delta);
27038
27044
  return;
@@ -27288,6 +27294,78 @@ function isRecord(value) {
27288
27294
  return typeof value === "object" && value !== null && !Array.isArray(value);
27289
27295
  }
27290
27296
 
27297
+ // src/client-errors.ts
27298
+ async function refusalCode(response) {
27299
+ try {
27300
+ const body = await response.clone().json();
27301
+ const code = body.code;
27302
+ return typeof code === "string" ? code : void 0;
27303
+ } catch {
27304
+ return void 0;
27305
+ }
27306
+ }
27307
+ var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
27308
+ "daily_turn_budget_exhausted",
27309
+ "daily_session_budget_exhausted"
27310
+ ]);
27311
+ var AssistantClientError = class extends Error {
27312
+ detail;
27313
+ constructor(detail, message, options) {
27314
+ super(message, options);
27315
+ this.name = "AssistantClientError";
27316
+ this.detail = detail;
27317
+ }
27318
+ };
27319
+ function parseSession(value) {
27320
+ if (!isRecord2(value) || !isRecord2(value.endpoints)) {
27321
+ throw clientError("session_failed", "Assistant session response is invalid", true);
27322
+ }
27323
+ const interactions = value.endpoints.interactions;
27324
+ const apps = value.endpoints.apps;
27325
+ const sandbox = value.endpoints.sandbox;
27326
+ if (typeof value.token !== "string" || typeof value.expiresAt !== "string" || typeof value.endpoints.turns !== "string" || typeof value.endpoints.toolConfirmations !== "string" || interactions !== void 0 && typeof interactions !== "string" || apps !== void 0 && typeof apps !== "string" || sandbox !== void 0 && typeof sandbox !== "string") {
27327
+ throw clientError("session_failed", "Assistant session response is invalid", true);
27328
+ }
27329
+ return {
27330
+ token: value.token,
27331
+ expiresAt: value.expiresAt,
27332
+ endpoints: {
27333
+ turns: value.endpoints.turns,
27334
+ toolConfirmations: value.endpoints.toolConfirmations,
27335
+ ...typeof interactions === "string" ? { interactions } : {},
27336
+ ...typeof apps === "string" ? { apps } : {},
27337
+ ...typeof sandbox === "string" ? { sandbox } : {}
27338
+ },
27339
+ ...isRecord2(value.configuration) ? { configuration: value.configuration } : {},
27340
+ ...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
27341
+ };
27342
+ }
27343
+ function isRecord2(value) {
27344
+ return typeof value === "object" && value !== null && !Array.isArray(value);
27345
+ }
27346
+ async function readStableErrorCode(response) {
27347
+ let value;
27348
+ try {
27349
+ value = await response.json();
27350
+ } catch {
27351
+ return void 0;
27352
+ }
27353
+ if (!isRecord2(value) || typeof value.code !== "string") return void 0;
27354
+ return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
27355
+ }
27356
+ function clientError(code, message, retryable, status, options, serviceCode) {
27357
+ return new AssistantClientError(
27358
+ {
27359
+ code,
27360
+ ...status === void 0 ? {} : { status },
27361
+ retryable,
27362
+ ...serviceCode === void 0 ? {} : { serviceCode }
27363
+ },
27364
+ message,
27365
+ options
27366
+ );
27367
+ }
27368
+
27291
27369
  // src/events.ts
27292
27370
  function toAssistantClientEvent(event) {
27293
27371
  const value = event.data;
@@ -27303,12 +27381,12 @@ function toAssistantClientEvent(event) {
27303
27381
  }
27304
27382
  break;
27305
27383
  case "tool_proposed":
27306
- if (hasString(value, "id") && hasString(value, "tool") && hasOptionalString(value.title) && hasOptionalString(value.description) && hasOptionalJson(value.arguments) && (value.reviewSchema === void 0 || isRecord2(value.reviewSchema)) && hasOptionalString(value.expiresAt) && (value.requiresConfirmation === void 0 || value.requiresConfirmation === true) && hasOptionalTurnId(value)) {
27384
+ if (hasString(value, "id") && hasString(value, "tool") && hasOptionalString(value.title) && hasOptionalString(value.description) && hasOptionalJson(value.arguments) && (value.reviewSchema === void 0 || isRecord3(value.reviewSchema)) && hasOptionalString(value.expiresAt) && (value.requiresConfirmation === void 0 || value.requiresConfirmation === true) && hasOptionalTurnId(value)) {
27307
27385
  return event;
27308
27386
  }
27309
27387
  break;
27310
27388
  case "input_requested":
27311
- if (hasString(value, "id") && hasString(value, "message") && isRecord2(value.requestedSchema) && hasString(value, "expiresAt") && hasOptionalTurnId(value)) {
27389
+ if (hasString(value, "id") && hasString(value, "message") && isRecord3(value.requestedSchema) && hasString(value, "expiresAt") && hasOptionalTurnId(value)) {
27312
27390
  return event;
27313
27391
  }
27314
27392
  break;
@@ -27352,7 +27430,7 @@ function toAssistantClientEvent(event) {
27352
27430
  return { event: "unrecognized", data: { name: event.event, payload: value } };
27353
27431
  }
27354
27432
  function isViewAvailableDetail(value) {
27355
- return hasString(value, "id") && hasString(value, "tool") && typeof value.resourceUri === "string" && value.resourceUri.startsWith("ui://") && hasOptionalString(value.title) && (value.replayed === void 0 || value.replayed === true) && isJsonValue(value.result, 0) && hasOptionalJson(value.arguments) && hasOptionalString(value.html) && (value.resourceMeta === void 0 || isRecord2(value.resourceMeta)) && (value.allowedOpenDomains === void 0 || Array.isArray(value.allowedOpenDomains) && value.allowedOpenDomains.every(isHttpsUrl)) && hasOptionalTurnId(value);
27433
+ return hasString(value, "id") && hasString(value, "tool") && typeof value.resourceUri === "string" && value.resourceUri.startsWith("ui://") && hasOptionalString(value.title) && (value.replayed === void 0 || value.replayed === true) && isJsonValue(value.result, 0) && hasOptionalJson(value.arguments) && hasOptionalString(value.html) && (value.resourceMeta === void 0 || isRecord3(value.resourceMeta)) && (value.allowedOpenDomains === void 0 || Array.isArray(value.allowedOpenDomains) && value.allowedOpenDomains.every(isHttpsUrl)) && hasOptionalTurnId(value);
27356
27434
  }
27357
27435
  function isHttpsUrl(value) {
27358
27436
  if (typeof value !== "string") return false;
@@ -27385,11 +27463,11 @@ function isJsonValue(value, depth) {
27385
27463
  if (Array.isArray(value)) {
27386
27464
  return value.length <= 256 && value.every((entry) => isJsonValue(entry, depth + 1));
27387
27465
  }
27388
- if (!isRecord2(value)) return false;
27466
+ if (!isRecord3(value)) return false;
27389
27467
  const entries2 = Object.entries(value);
27390
27468
  return entries2.length <= 256 && entries2.every(([, entry]) => isJsonValue(entry, depth + 1));
27391
27469
  }
27392
- function isRecord2(value) {
27470
+ function isRecord3(value) {
27393
27471
  return typeof value === "object" && value !== null && !Array.isArray(value);
27394
27472
  }
27395
27473
 
@@ -27519,15 +27597,15 @@ function parseFrame(frame) {
27519
27597
  if (event === "done" && !isValidDonePayload(parsed)) {
27520
27598
  throw invalidStream("assistant event stream contained an invalid done event");
27521
27599
  }
27522
- return { event, data: isRecord3(parsed) ? parsed : { value: parsed } };
27600
+ return { event, data: isRecord4(parsed) ? parsed : { value: parsed } };
27523
27601
  }
27524
27602
  function normalizeLineEndings(input) {
27525
27603
  return input.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
27526
27604
  }
27527
27605
  function isValidDonePayload(value) {
27528
- return isRecord3(value) && (value.turnId === void 0 || typeof value.turnId === "string" && value.turnId.length > 0);
27606
+ return isRecord4(value) && (value.turnId === void 0 || typeof value.turnId === "string" && value.turnId.length > 0);
27529
27607
  }
27530
- function isRecord3(value) {
27608
+ function isRecord4(value) {
27531
27609
  return typeof value === "object" && value !== null && !Array.isArray(value);
27532
27610
  }
27533
27611
  function invalidStream(message, cause) {
@@ -27538,27 +27616,6 @@ function isAbortError2(error51) {
27538
27616
  }
27539
27617
 
27540
27618
  // src/client.ts
27541
- async function refusalCode(response) {
27542
- try {
27543
- const body = await response.clone().json();
27544
- const code = body.code;
27545
- return typeof code === "string" ? code : void 0;
27546
- } catch {
27547
- return void 0;
27548
- }
27549
- }
27550
- var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
27551
- "daily_turn_budget_exhausted",
27552
- "daily_session_budget_exhausted"
27553
- ]);
27554
- var AssistantClientError = class extends Error {
27555
- detail;
27556
- constructor(detail, message, options) {
27557
- super(message, options);
27558
- this.name = "AssistantClientError";
27559
- this.detail = detail;
27560
- }
27561
- };
27562
27619
  var DefaultAssistantClient = class {
27563
27620
  #source;
27564
27621
  #fetch;
@@ -27593,12 +27650,50 @@ var DefaultAssistantClient = class {
27593
27650
  hasSession() {
27594
27651
  return this.#session !== void 0;
27595
27652
  }
27653
+ /** Whether a request holds the single-flight slot, so callers can refuse before mutating UI. */
27654
+ isBusy() {
27655
+ return this.#active !== void 0;
27656
+ }
27596
27657
  async connect() {
27597
27658
  if (this.#session) return;
27598
27659
  await this.#singleFlight(async (signal) => {
27599
- if (!this.#session) await this.#createSession(signal);
27660
+ if (this.#session) return;
27661
+ const session = await this.#createSession(signal);
27662
+ if (session.resume) {
27663
+ try {
27664
+ await this.#runChatOperation(signal, () => this.#resumeTurn(session, signal));
27665
+ } catch {
27666
+ }
27667
+ }
27600
27668
  });
27601
27669
  }
27670
+ /** POST the one-shot resume trigger; a 409 means nothing was pending, which renders as silence. */
27671
+ async #resumeTurn(session, signal) {
27672
+ const response = await this.#request(
27673
+ session.endpoints.turns,
27674
+ {
27675
+ method: "POST",
27676
+ headers: authorizedHeaders(session.token, "text/event-stream"),
27677
+ body: JSON.stringify({ resume: true }),
27678
+ signal
27679
+ },
27680
+ "turn_failed"
27681
+ );
27682
+ if (response.status === 409) return;
27683
+ if (!response.ok) {
27684
+ throw clientError(
27685
+ "turn_failed",
27686
+ `Assistant turn failed (${response.status})`,
27687
+ false,
27688
+ response.status,
27689
+ void 0,
27690
+ await refusalCode(response)
27691
+ );
27692
+ }
27693
+ this.#emit({ event: "resume_started", data: { tool: session.resume?.tool ?? "" } });
27694
+ await this.#consume(response);
27695
+ this.#emit({ event: "message_completed", data: {} });
27696
+ }
27602
27697
  async sendMessage(text3) {
27603
27698
  const message = text3.trim();
27604
27699
  if (!message) return;
@@ -28003,10 +28098,10 @@ function authorizedHeaders(token, accept) {
28003
28098
  };
28004
28099
  }
28005
28100
  function parseAppInteraction(value) {
28006
- if (!isRecord4(value) || !isRecord4(value.interaction)) return void 0;
28101
+ if (!isRecord2(value) || !isRecord2(value.interaction)) return void 0;
28007
28102
  const event = value.interaction.event;
28008
28103
  const data = value.interaction.data;
28009
- if (event !== "tool_proposed" && event !== "input_requested" || !isRecord4(data)) {
28104
+ if (event !== "tool_proposed" && event !== "input_requested" || !isRecord2(data)) {
28010
28105
  return void 0;
28011
28106
  }
28012
28107
  const parsed = toAssistantClientEvent({ event, data });
@@ -28026,54 +28121,6 @@ function appInteractionStopped(action) {
28026
28121
  isError: true
28027
28122
  };
28028
28123
  }
28029
- function parseSession(value) {
28030
- if (!isRecord4(value) || !isRecord4(value.endpoints)) {
28031
- throw clientError("session_failed", "Assistant session response is invalid", true);
28032
- }
28033
- const interactions = value.endpoints.interactions;
28034
- const apps = value.endpoints.apps;
28035
- const sandbox = value.endpoints.sandbox;
28036
- if (typeof value.token !== "string" || typeof value.expiresAt !== "string" || typeof value.endpoints.turns !== "string" || typeof value.endpoints.toolConfirmations !== "string" || interactions !== void 0 && typeof interactions !== "string" || apps !== void 0 && typeof apps !== "string" || sandbox !== void 0 && typeof sandbox !== "string") {
28037
- throw clientError("session_failed", "Assistant session response is invalid", true);
28038
- }
28039
- return {
28040
- token: value.token,
28041
- expiresAt: value.expiresAt,
28042
- endpoints: {
28043
- turns: value.endpoints.turns,
28044
- toolConfirmations: value.endpoints.toolConfirmations,
28045
- ...typeof interactions === "string" ? { interactions } : {},
28046
- ...typeof apps === "string" ? { apps } : {},
28047
- ...typeof sandbox === "string" ? { sandbox } : {}
28048
- },
28049
- ...isRecord4(value.configuration) ? { configuration: value.configuration } : {}
28050
- };
28051
- }
28052
- function isRecord4(value) {
28053
- return typeof value === "object" && value !== null && !Array.isArray(value);
28054
- }
28055
- async function readStableErrorCode(response) {
28056
- let value;
28057
- try {
28058
- value = await response.json();
28059
- } catch {
28060
- return void 0;
28061
- }
28062
- if (!isRecord4(value) || typeof value.code !== "string") return void 0;
28063
- return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
28064
- }
28065
- function clientError(code, message, retryable, status, options, serviceCode) {
28066
- return new AssistantClientError(
28067
- {
28068
- code,
28069
- ...status === void 0 ? {} : { status },
28070
- retryable,
28071
- ...serviceCode === void 0 ? {} : { serviceCode }
28072
- },
28073
- message,
28074
- options
28075
- );
28076
- }
28077
28124
 
28078
28125
  // src/input-request-card.ts
28079
28126
  function createInputRequestCard(options) {
@@ -31258,6 +31305,11 @@ var AssistantElementEventController = class {
31258
31305
  this.#completedTool = void 0;
31259
31306
  return;
31260
31307
  }
31308
+ if (name21 === "resume_started") {
31309
+ this.#startStream("message");
31310
+ this.#host.element.dispatchEvent(new CustomEvent("assistant-message-started"));
31311
+ return;
31312
+ }
31261
31313
  if (name21 === "interaction_completed") {
31262
31314
  if (this.#streamKind !== "interaction") return;
31263
31315
  this.#finishInteraction(String(data.id ?? ""), String(data.action ?? "accept"));
@@ -31476,6 +31528,36 @@ function queryRequired(root, selector) {
31476
31528
  if (!element) throw new Error(`assistant renderer is missing ${selector}`);
31477
31529
  return element;
31478
31530
  }
31531
+ function assistantElementMarkup(appearance, open, styles) {
31532
+ return `${styles}
31533
+ <button class="launcher" type="button" aria-label="${escapeAttribute(appearance.labels.open)}" aria-controls="assistant-panel" aria-expanded="${String(open)}"><slot name="launcher-icon"></slot><span class="visually-hidden" data-session-status aria-live="polite" hidden></span></button>
31534
+ <section class="panel" id="assistant-panel" role="dialog" aria-label="${escapeAttribute(appearance.brand.name)}">
31535
+ <header><slot name="header-leading"></slot><img class="brand-logo" alt=""><strong></strong><slot name="header-actions"></slot><button class="close" type="button" aria-label="${escapeAttribute(appearance.labels.close)}"></button></header>
31536
+ <div class="welcome"><slot name="empty-state"></slot></div>
31537
+ <div class="suggested-prompts"></div>
31538
+ <div class="messages-region">
31539
+ <div class="messages" aria-live="polite"></div>
31540
+ <button class="new-messages" type="button" aria-label="${escapeAttribute(appearance.labels.newMessages)}" hidden></button>
31541
+ </div>
31542
+ <form><slot name="composer-leading"></slot><textarea rows="1"></textarea><button class="send" type="submit"></button><slot name="composer-trailing"></slot></form>
31543
+ <nav class="legal" aria-label="Legal"></nav>
31544
+ <slot name="conversation-footer"></slot>
31545
+ </section>`;
31546
+ }
31547
+ function appendLegalLinks(legal, appearance) {
31548
+ for (const [label, href] of [
31549
+ ["Privacy", appearance.privacyUrl],
31550
+ ["Terms", appearance.termsUrl]
31551
+ ]) {
31552
+ if (!href) continue;
31553
+ const link = document.createElement("a");
31554
+ link.href = href;
31555
+ link.target = "_blank";
31556
+ link.rel = "noopener noreferrer";
31557
+ link.textContent = label;
31558
+ legal.append(link);
31559
+ }
31560
+ }
31479
31561
 
31480
31562
  // src/element-page-context-controller.ts
31481
31563
  var AssistantElementPageContextController = class {
@@ -32263,6 +32345,8 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32263
32345
  #pendingUserEcho;
32264
32346
  #sessionState = "idle";
32265
32347
  #startOpenApplied = false;
32348
+ #readyDispatched = false;
32349
+ #turnInFlight = false;
32266
32350
  #hostAppearance;
32267
32351
  #appearanceWarningKeys = /* @__PURE__ */ new Set();
32268
32352
  #appearanceStyleSnapshot = /* @__PURE__ */ new Map();
@@ -32334,7 +32418,10 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32334
32418
  document.addEventListener("pointerdown", this.#handleDocumentPointerDown);
32335
32419
  if (this.#appearance.behavior.startOpen) this.#applyStartOpenPolicy();
32336
32420
  this.#render();
32337
- this.dispatchEvent(new CustomEvent("assistant-ready"));
32421
+ if (!this.#readyDispatched) {
32422
+ this.#readyDispatched = true;
32423
+ this.dispatchEvent(new CustomEvent("assistant-ready"));
32424
+ }
32338
32425
  if (this.hasAttribute("start-open")) {
32339
32426
  this.setAttribute("open", "");
32340
32427
  this.#startOpenApplied = true;
@@ -32448,7 +32535,14 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32448
32535
  async sendMessage(text3) {
32449
32536
  const message = text3.trim();
32450
32537
  if (!message) return;
32538
+ if (this.#turnInFlight) {
32539
+ throw new AssistantClientError(
32540
+ { code: "request_in_progress", retryable: true },
32541
+ "an assistant request is already in progress"
32542
+ );
32543
+ }
32451
32544
  const generation = this.#conversationGeneration;
32545
+ this.#turnInFlight = true;
32452
32546
  this.#pendingUserEcho = message;
32453
32547
  this.#appendMessage("user", message);
32454
32548
  this.#setBusy(true);
@@ -32465,6 +32559,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32465
32559
  this.#dispatchClientError(error51, "turn_failed");
32466
32560
  throw error51;
32467
32561
  } finally {
32562
+ this.#turnInFlight = false;
32468
32563
  if (this.#pendingUserEcho === message) this.#pendingUserEcho = void 0;
32469
32564
  if (generation === this.#conversationGeneration) this.#setBusy(false);
32470
32565
  }
@@ -32533,6 +32628,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32533
32628
  #primeSession() {
32534
32629
  if (!this.sessionEndpoint && !this.embedId) return;
32535
32630
  if (this.#sessionBootstrap || this.#client?.hasSession()) return;
32631
+ if (this.#client?.isBusy?.() === true) return;
32536
32632
  if (this.embedId && !this.#pageContext) void this.#automaticPageContext.refresh();
32537
32633
  const client = this.#ensureClient();
32538
32634
  const generation = this.#conversationGeneration;
@@ -32562,6 +32658,8 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32562
32658
  if (event.event === "content" || event.event === "message_completed" || event.event === "interaction_completed" || event.event === "error") {
32563
32659
  this.#removeThinking();
32564
32660
  }
32661
+ if (event.event === "resume_started") this.#setBusy(true);
32662
+ if (event.event === "message_completed" || event.event === "error") this.#setBusy(false);
32565
32663
  }
32566
32664
  #setBusy(busy) {
32567
32665
  this.toggleAttribute("busy", busy);
@@ -32770,7 +32868,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32770
32868
  queryRequired(this.shadowRoot, "header").hidden = !appearance.behavior.showHeader;
32771
32869
  const legal = queryRequired(this.shadowRoot, ".legal");
32772
32870
  legal.replaceChildren();
32773
- this.#appendLegalLinks(legal);
32871
+ appendLegalLinks(legal, this.#appearance);
32774
32872
  this.#applyTheme();
32775
32873
  }
32776
32874
  #render() {
@@ -32786,20 +32884,11 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32786
32884
  this.dataset.position = appearance.layout.position;
32787
32885
  this.dataset.density = appearance.layout.density;
32788
32886
  this.toggleAttribute("mobile-fullscreen", appearance.layout.mobileFullscreen);
32789
- this.shadowRoot.innerHTML = `${ASSISTANT_ELEMENT_STYLES}${presentationStyles}
32790
- <button class="launcher" type="button" aria-label="${escapeAttribute(appearance.labels.open)}" aria-controls="assistant-panel" aria-expanded="${String(this.hasAttribute("open"))}"><slot name="launcher-icon"></slot><span class="visually-hidden" data-session-status aria-live="polite" hidden></span></button>
32791
- <section class="panel" id="assistant-panel" role="dialog" aria-label="${escapeAttribute(appearance.brand.name)}">
32792
- <header><slot name="header-leading"></slot><img class="brand-logo" alt=""><strong></strong><slot name="header-actions"></slot><button class="close" type="button" aria-label="${escapeAttribute(appearance.labels.close)}"></button></header>
32793
- <div class="welcome"><slot name="empty-state"></slot></div>
32794
- <div class="suggested-prompts"></div>
32795
- <div class="messages-region">
32796
- <div class="messages" aria-live="polite"></div>
32797
- <button class="new-messages" type="button" aria-label="${escapeAttribute(appearance.labels.newMessages)}" hidden></button>
32798
- </div>
32799
- <form><slot name="composer-leading"></slot><textarea rows="1"></textarea><button class="send" type="submit"></button><slot name="composer-trailing"></slot></form>
32800
- <nav class="legal" aria-label="Legal"></nav>
32801
- <slot name="conversation-footer"></slot>
32802
- </section>`;
32887
+ this.shadowRoot.innerHTML = assistantElementMarkup(
32888
+ appearance,
32889
+ this.hasAttribute("open"),
32890
+ `${ASSISTANT_ELEMENT_STYLES}${presentationStyles}`
32891
+ );
32803
32892
  queryRequired(this.shadowRoot, "strong").textContent = appearance.brand.name;
32804
32893
  const logo = queryRequired(this.shadowRoot, ".brand-logo");
32805
32894
  const logoUrl = appearance.brand.logo[this.#resolvedMode()];
@@ -32826,7 +32915,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32826
32915
  if (!appearance.behavior.showHeader)
32827
32916
  queryRequired(this.shadowRoot, "header").hidden = true;
32828
32917
  const legal = queryRequired(this.shadowRoot, ".legal");
32829
- this.#appendLegalLinks(legal);
32918
+ appendLegalLinks(legal, this.#appearance);
32830
32919
  this.#messages = this.shadowRoot.querySelector(".messages") ?? void 0;
32831
32920
  this.#messages?.append(...conversation);
32832
32921
  this.#thinking = this.#messages?.querySelector(".thinking") ?? void 0;
@@ -32865,20 +32954,6 @@ var NoodleAssistantElement = class extends HTMLElementBase {
32865
32954
  });
32866
32955
  this.#applyTheme();
32867
32956
  }
32868
- #appendLegalLinks(legal) {
32869
- for (const [label, href] of [
32870
- ["Privacy", this.#appearance.privacyUrl],
32871
- ["Terms", this.#appearance.termsUrl]
32872
- ]) {
32873
- if (!href) continue;
32874
- const link = document.createElement("a");
32875
- link.href = href;
32876
- link.target = "_blank";
32877
- link.rel = "noopener noreferrer";
32878
- link.textContent = label;
32879
- legal.append(link);
32880
- }
32881
- }
32882
32957
  };
32883
32958
  function registerNoodleAssistant() {
32884
32959
  if (globalThis.customElements && !customElements.get(ASSISTANT_TAG_NAME)) {
@@ -32948,6 +33023,7 @@ var NoodleAssistantWithRef = (0, import_react2.forwardRef)(
32948
33023
  const ready = () => {
32949
33024
  if (readyNotified.current) return;
32950
33025
  readyNotified.current = true;
33026
+ console.debug("[noodle-assistant] ready");
32951
33027
  props.onReady?.();
32952
33028
  };
32953
33029
  const error51 = (event) => props.onError?.(event.detail);