@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
@@ -133,7 +133,9 @@ type AssistantClientLifecycleEvent = NamedEvent<'session_started', {
133
133
  readonly modelContext: AssistantModelContextUpdate;
134
134
  }> | NamedEvent<'message_started', {
135
135
  readonly message: string;
136
- }> | NamedEvent<'message_completed', Readonly<Record<string, never>>> | NamedEvent<'interaction_started', {
136
+ }> | NamedEvent<'message_completed', Readonly<Record<string, never>>> | NamedEvent<'resume_started', {
137
+ readonly tool: string;
138
+ }> | NamedEvent<'interaction_started', {
137
139
  readonly id: string;
138
140
  readonly action: 'accept' | 'decline' | 'cancel';
139
141
  }> | NamedEvent<'interaction_completed', {
@@ -201,6 +203,11 @@ type AssistantSessionSourceOptions = {
201
203
  readonly sessionEndpoint?: undefined;
202
204
  };
203
205
 
206
+ declare class AssistantClientError extends Error {
207
+ readonly detail: AssistantErrorDetail;
208
+ constructor(detail: AssistantErrorDetail, message: string, options?: ErrorOptions);
209
+ }
210
+
204
211
  type AssistantContextValue = string | number | boolean | null;
205
212
  type AssistantContext = Readonly<Record<string, AssistantContextValue>>;
206
213
  interface AssistantClientContext {
@@ -226,6 +233,10 @@ interface AssistantSessionResponse {
226
233
  readonly sandbox?: string;
227
234
  };
228
235
  readonly configuration?: AssistantConfiguration;
236
+ /** Armed post-sign-in resume hint: present only on an elevation exchange (issue #1177). */
237
+ readonly resume?: {
238
+ readonly tool: string;
239
+ };
229
240
  }
230
241
 
231
242
  interface AssistantClientBehaviorOptions<TPageContext extends AssistantPageContext = AssistantContext> {
@@ -253,6 +264,8 @@ interface AssistantClient<TPageContext extends AssistantPageContext = AssistantC
253
264
  getChatState(): AssistantChatState;
254
265
  connect(): Promise<void>;
255
266
  hasSession(): boolean;
267
+ /** A request holds the single-flight slot. Optional so external implementations stay valid. */
268
+ isBusy?(): boolean;
256
269
  sendMessage(message: string): Promise<void>;
257
270
  respond(id: string, response: AssistantInteractionResponse): Promise<void>;
258
271
  updateContext(context: AssistantContext): void;
@@ -267,10 +280,6 @@ interface AssistantClient<TPageContext extends AssistantPageContext = AssistantC
267
280
  resetSession(): void;
268
281
  abort(): void;
269
282
  }
270
- declare class AssistantClientError extends Error {
271
- readonly detail: AssistantErrorDetail;
272
- constructor(detail: AssistantErrorDetail, message: string, options?: ErrorOptions);
273
- }
274
283
  declare function createAssistantClient<TPageContext extends AssistantPageContext = AssistantContext>(options: CreateAssistantClientOptions<TPageContext>): AssistantClient<TPageContext>;
275
284
 
276
285
  export { type AssistantPageContext as A, type AssistantInteractionStatus as B, type CreateAssistantClientOptions as C, type AssistantJsonValue as D, type AssistantSessionResponse as E, type AssistantToolCompletedDetail as F, type AssistantToolCompletedEvent as G, type AssistantToolProposedDetail as H, type AssistantToolProposedEvent as I, type AssistantToolResultData as J, type AssistantToolStartedDetail as K, type AssistantToolStartedEvent as L, type AssistantUIDataTypes as M, type AssistantUIMessage as N, type AssistantUnrecognizedEvent as O, type AssistantViewData as P, createAssistantClient as Q, type AssistantContext as a, type AssistantChatState as b, type AssistantClient as c, type AssistantViewAvailableDetail as d, type AssistantModelContextUpdate as e, type AssistantClientEvent as f, type AssistantErrorDetail as g, type AssistantInteractionResponse as h, type AssistantEvent as i, type AssistantViewAvailableEvent as j, type AssistantChatError as k, type AssistantClientContext as l, AssistantClientError as m, type AssistantClientLifecycleEvent as n, type AssistantConfirmationData as o, type AssistantContentDetail as p, type AssistantContentEvent as q, type AssistantContextValue as r, type AssistantDoneEvent as s, type AssistantErrorEvent as t, type AssistantErrorEventDetail as u, type AssistantInputRequestData as v, type AssistantInputRequestedDetail as w, type AssistantInputRequestedEvent as x, type AssistantInteractionResolvedDetail as y, type AssistantInteractionResolvedEvent as z };
@@ -133,7 +133,9 @@ type AssistantClientLifecycleEvent = NamedEvent<'session_started', {
133
133
  readonly modelContext: AssistantModelContextUpdate;
134
134
  }> | NamedEvent<'message_started', {
135
135
  readonly message: string;
136
- }> | NamedEvent<'message_completed', Readonly<Record<string, never>>> | NamedEvent<'interaction_started', {
136
+ }> | NamedEvent<'message_completed', Readonly<Record<string, never>>> | NamedEvent<'resume_started', {
137
+ readonly tool: string;
138
+ }> | NamedEvent<'interaction_started', {
137
139
  readonly id: string;
138
140
  readonly action: 'accept' | 'decline' | 'cancel';
139
141
  }> | NamedEvent<'interaction_completed', {
@@ -201,6 +203,11 @@ type AssistantSessionSourceOptions = {
201
203
  readonly sessionEndpoint?: undefined;
202
204
  };
203
205
 
206
+ declare class AssistantClientError extends Error {
207
+ readonly detail: AssistantErrorDetail;
208
+ constructor(detail: AssistantErrorDetail, message: string, options?: ErrorOptions);
209
+ }
210
+
204
211
  type AssistantContextValue = string | number | boolean | null;
205
212
  type AssistantContext = Readonly<Record<string, AssistantContextValue>>;
206
213
  interface AssistantClientContext {
@@ -226,6 +233,10 @@ interface AssistantSessionResponse {
226
233
  readonly sandbox?: string;
227
234
  };
228
235
  readonly configuration?: AssistantConfiguration;
236
+ /** Armed post-sign-in resume hint: present only on an elevation exchange (issue #1177). */
237
+ readonly resume?: {
238
+ readonly tool: string;
239
+ };
229
240
  }
230
241
 
231
242
  interface AssistantClientBehaviorOptions<TPageContext extends AssistantPageContext = AssistantContext> {
@@ -253,6 +264,8 @@ interface AssistantClient<TPageContext extends AssistantPageContext = AssistantC
253
264
  getChatState(): AssistantChatState;
254
265
  connect(): Promise<void>;
255
266
  hasSession(): boolean;
267
+ /** A request holds the single-flight slot. Optional so external implementations stay valid. */
268
+ isBusy?(): boolean;
256
269
  sendMessage(message: string): Promise<void>;
257
270
  respond(id: string, response: AssistantInteractionResponse): Promise<void>;
258
271
  updateContext(context: AssistantContext): void;
@@ -267,10 +280,6 @@ interface AssistantClient<TPageContext extends AssistantPageContext = AssistantC
267
280
  resetSession(): void;
268
281
  abort(): void;
269
282
  }
270
- declare class AssistantClientError extends Error {
271
- readonly detail: AssistantErrorDetail;
272
- constructor(detail: AssistantErrorDetail, message: string, options?: ErrorOptions);
273
- }
274
283
  declare function createAssistantClient<TPageContext extends AssistantPageContext = AssistantContext>(options: CreateAssistantClientOptions<TPageContext>): AssistantClient<TPageContext>;
275
284
 
276
285
  export { type AssistantPageContext as A, type AssistantInteractionStatus as B, type CreateAssistantClientOptions as C, type AssistantJsonValue as D, type AssistantSessionResponse as E, type AssistantToolCompletedDetail as F, type AssistantToolCompletedEvent as G, type AssistantToolProposedDetail as H, type AssistantToolProposedEvent as I, type AssistantToolResultData as J, type AssistantToolStartedDetail as K, type AssistantToolStartedEvent as L, type AssistantUIDataTypes as M, type AssistantUIMessage as N, type AssistantUnrecognizedEvent as O, type AssistantViewData as P, createAssistantClient as Q, type AssistantContext as a, type AssistantChatState as b, type AssistantClient as c, type AssistantViewAvailableDetail as d, type AssistantModelContextUpdate as e, type AssistantClientEvent as f, type AssistantErrorDetail as g, type AssistantInteractionResponse as h, type AssistantEvent as i, type AssistantViewAvailableEvent as j, type AssistantChatError as k, type AssistantClientContext as l, AssistantClientError as m, type AssistantClientLifecycleEvent as n, type AssistantConfirmationData as o, type AssistantContentDetail as p, type AssistantContentEvent as q, type AssistantContextValue as r, type AssistantDoneEvent as s, type AssistantErrorEvent as t, type AssistantErrorEventDetail as u, type AssistantInputRequestData as v, type AssistantInputRequestedDetail as w, type AssistantInputRequestedEvent as x, type AssistantInteractionResolvedDetail as y, type AssistantInteractionResolvedEvent as z };
@@ -22639,6 +22639,12 @@ var AssistantChatStateStore = class {
22639
22639
  case "interaction_started":
22640
22640
  this.#beginInteraction(event.data.id);
22641
22641
  return;
22642
+ case "resume_started":
22643
+ this.#status = "submitted";
22644
+ this.#error = void 0;
22645
+ this.#startOperation();
22646
+ this.#notify();
22647
+ return;
22642
22648
  case "content":
22643
22649
  this.#writeText(event.data.delta);
22644
22650
  return;
@@ -22894,6 +22900,78 @@ function isRecord(value) {
22894
22900
  return typeof value === "object" && value !== null && !Array.isArray(value);
22895
22901
  }
22896
22902
 
22903
+ // src/client-errors.ts
22904
+ async function refusalCode(response) {
22905
+ try {
22906
+ const body = await response.clone().json();
22907
+ const code = body.code;
22908
+ return typeof code === "string" ? code : void 0;
22909
+ } catch {
22910
+ return void 0;
22911
+ }
22912
+ }
22913
+ var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
22914
+ "daily_turn_budget_exhausted",
22915
+ "daily_session_budget_exhausted"
22916
+ ]);
22917
+ var AssistantClientError = class extends Error {
22918
+ detail;
22919
+ constructor(detail, message, options) {
22920
+ super(message, options);
22921
+ this.name = "AssistantClientError";
22922
+ this.detail = detail;
22923
+ }
22924
+ };
22925
+ function parseSession(value) {
22926
+ if (!isRecord2(value) || !isRecord2(value.endpoints)) {
22927
+ throw clientError("session_failed", "Assistant session response is invalid", true);
22928
+ }
22929
+ const interactions = value.endpoints.interactions;
22930
+ const apps = value.endpoints.apps;
22931
+ const sandbox = value.endpoints.sandbox;
22932
+ 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") {
22933
+ throw clientError("session_failed", "Assistant session response is invalid", true);
22934
+ }
22935
+ return {
22936
+ token: value.token,
22937
+ expiresAt: value.expiresAt,
22938
+ endpoints: {
22939
+ turns: value.endpoints.turns,
22940
+ toolConfirmations: value.endpoints.toolConfirmations,
22941
+ ...typeof interactions === "string" ? { interactions } : {},
22942
+ ...typeof apps === "string" ? { apps } : {},
22943
+ ...typeof sandbox === "string" ? { sandbox } : {}
22944
+ },
22945
+ ...isRecord2(value.configuration) ? { configuration: value.configuration } : {},
22946
+ ...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
22947
+ };
22948
+ }
22949
+ function isRecord2(value) {
22950
+ return typeof value === "object" && value !== null && !Array.isArray(value);
22951
+ }
22952
+ async function readStableErrorCode(response) {
22953
+ let value;
22954
+ try {
22955
+ value = await response.json();
22956
+ } catch {
22957
+ return void 0;
22958
+ }
22959
+ if (!isRecord2(value) || typeof value.code !== "string") return void 0;
22960
+ return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
22961
+ }
22962
+ function clientError(code, message, retryable, status, options, serviceCode) {
22963
+ return new AssistantClientError(
22964
+ {
22965
+ code,
22966
+ ...status === void 0 ? {} : { status },
22967
+ retryable,
22968
+ ...serviceCode === void 0 ? {} : { serviceCode }
22969
+ },
22970
+ message,
22971
+ options
22972
+ );
22973
+ }
22974
+
22897
22975
  // src/events.ts
22898
22976
  function toAssistantClientEvent(event) {
22899
22977
  const value = event.data;
@@ -22909,12 +22987,12 @@ function toAssistantClientEvent(event) {
22909
22987
  }
22910
22988
  break;
22911
22989
  case "tool_proposed":
22912
- 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)) {
22990
+ 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)) {
22913
22991
  return event;
22914
22992
  }
22915
22993
  break;
22916
22994
  case "input_requested":
22917
- if (hasString(value, "id") && hasString(value, "message") && isRecord2(value.requestedSchema) && hasString(value, "expiresAt") && hasOptionalTurnId(value)) {
22995
+ if (hasString(value, "id") && hasString(value, "message") && isRecord3(value.requestedSchema) && hasString(value, "expiresAt") && hasOptionalTurnId(value)) {
22918
22996
  return event;
22919
22997
  }
22920
22998
  break;
@@ -22958,7 +23036,7 @@ function toAssistantClientEvent(event) {
22958
23036
  return { event: "unrecognized", data: { name: event.event, payload: value } };
22959
23037
  }
22960
23038
  function isViewAvailableDetail(value) {
22961
- 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);
23039
+ 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);
22962
23040
  }
22963
23041
  function isHttpsUrl(value) {
22964
23042
  if (typeof value !== "string") return false;
@@ -22991,11 +23069,11 @@ function isJsonValue(value, depth) {
22991
23069
  if (Array.isArray(value)) {
22992
23070
  return value.length <= 256 && value.every((entry) => isJsonValue(entry, depth + 1));
22993
23071
  }
22994
- if (!isRecord2(value)) return false;
23072
+ if (!isRecord3(value)) return false;
22995
23073
  const entries = Object.entries(value);
22996
23074
  return entries.length <= 256 && entries.every(([, entry]) => isJsonValue(entry, depth + 1));
22997
23075
  }
22998
- function isRecord2(value) {
23076
+ function isRecord3(value) {
22999
23077
  return typeof value === "object" && value !== null && !Array.isArray(value);
23000
23078
  }
23001
23079
 
@@ -23235,15 +23313,15 @@ function parseFrame(frame) {
23235
23313
  if (event === "done" && !isValidDonePayload(parsed)) {
23236
23314
  throw invalidStream("assistant event stream contained an invalid done event");
23237
23315
  }
23238
- return { event, data: isRecord3(parsed) ? parsed : { value: parsed } };
23316
+ return { event, data: isRecord4(parsed) ? parsed : { value: parsed } };
23239
23317
  }
23240
23318
  function normalizeLineEndings(input) {
23241
23319
  return input.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
23242
23320
  }
23243
23321
  function isValidDonePayload(value) {
23244
- return isRecord3(value) && (value.turnId === void 0 || typeof value.turnId === "string" && value.turnId.length > 0);
23322
+ return isRecord4(value) && (value.turnId === void 0 || typeof value.turnId === "string" && value.turnId.length > 0);
23245
23323
  }
23246
- function isRecord3(value) {
23324
+ function isRecord4(value) {
23247
23325
  return typeof value === "object" && value !== null && !Array.isArray(value);
23248
23326
  }
23249
23327
  function invalidStream(message, cause) {
@@ -23254,27 +23332,6 @@ function isAbortError2(error51) {
23254
23332
  }
23255
23333
 
23256
23334
  // src/client.ts
23257
- async function refusalCode(response) {
23258
- try {
23259
- const body = await response.clone().json();
23260
- const code = body.code;
23261
- return typeof code === "string" ? code : void 0;
23262
- } catch {
23263
- return void 0;
23264
- }
23265
- }
23266
- var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
23267
- "daily_turn_budget_exhausted",
23268
- "daily_session_budget_exhausted"
23269
- ]);
23270
- var AssistantClientError = class extends Error {
23271
- detail;
23272
- constructor(detail, message, options) {
23273
- super(message, options);
23274
- this.name = "AssistantClientError";
23275
- this.detail = detail;
23276
- }
23277
- };
23278
23335
  var DefaultAssistantClient = class {
23279
23336
  #source;
23280
23337
  #fetch;
@@ -23309,12 +23366,50 @@ var DefaultAssistantClient = class {
23309
23366
  hasSession() {
23310
23367
  return this.#session !== void 0;
23311
23368
  }
23369
+ /** Whether a request holds the single-flight slot, so callers can refuse before mutating UI. */
23370
+ isBusy() {
23371
+ return this.#active !== void 0;
23372
+ }
23312
23373
  async connect() {
23313
23374
  if (this.#session) return;
23314
23375
  await this.#singleFlight(async (signal) => {
23315
- if (!this.#session) await this.#createSession(signal);
23376
+ if (this.#session) return;
23377
+ const session = await this.#createSession(signal);
23378
+ if (session.resume) {
23379
+ try {
23380
+ await this.#runChatOperation(signal, () => this.#resumeTurn(session, signal));
23381
+ } catch {
23382
+ }
23383
+ }
23316
23384
  });
23317
23385
  }
23386
+ /** POST the one-shot resume trigger; a 409 means nothing was pending, which renders as silence. */
23387
+ async #resumeTurn(session, signal) {
23388
+ const response = await this.#request(
23389
+ session.endpoints.turns,
23390
+ {
23391
+ method: "POST",
23392
+ headers: authorizedHeaders(session.token, "text/event-stream"),
23393
+ body: JSON.stringify({ resume: true }),
23394
+ signal
23395
+ },
23396
+ "turn_failed"
23397
+ );
23398
+ if (response.status === 409) return;
23399
+ if (!response.ok) {
23400
+ throw clientError(
23401
+ "turn_failed",
23402
+ `Assistant turn failed (${response.status})`,
23403
+ false,
23404
+ response.status,
23405
+ void 0,
23406
+ await refusalCode(response)
23407
+ );
23408
+ }
23409
+ this.#emit({ event: "resume_started", data: { tool: session.resume?.tool ?? "" } });
23410
+ await this.#consume(response);
23411
+ this.#emit({ event: "message_completed", data: {} });
23412
+ }
23318
23413
  async sendMessage(text2) {
23319
23414
  const message = text2.trim();
23320
23415
  if (!message) return;
@@ -23719,10 +23814,10 @@ function authorizedHeaders(token, accept) {
23719
23814
  };
23720
23815
  }
23721
23816
  function parseAppInteraction(value) {
23722
- if (!isRecord4(value) || !isRecord4(value.interaction)) return void 0;
23817
+ if (!isRecord2(value) || !isRecord2(value.interaction)) return void 0;
23723
23818
  const event = value.interaction.event;
23724
23819
  const data = value.interaction.data;
23725
- if (event !== "tool_proposed" && event !== "input_requested" || !isRecord4(data)) {
23820
+ if (event !== "tool_proposed" && event !== "input_requested" || !isRecord2(data)) {
23726
23821
  return void 0;
23727
23822
  }
23728
23823
  const parsed = toAssistantClientEvent({ event, data });
@@ -23742,54 +23837,6 @@ function appInteractionStopped(action) {
23742
23837
  isError: true
23743
23838
  };
23744
23839
  }
23745
- function parseSession(value) {
23746
- if (!isRecord4(value) || !isRecord4(value.endpoints)) {
23747
- throw clientError("session_failed", "Assistant session response is invalid", true);
23748
- }
23749
- const interactions = value.endpoints.interactions;
23750
- const apps = value.endpoints.apps;
23751
- const sandbox = value.endpoints.sandbox;
23752
- 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") {
23753
- throw clientError("session_failed", "Assistant session response is invalid", true);
23754
- }
23755
- return {
23756
- token: value.token,
23757
- expiresAt: value.expiresAt,
23758
- endpoints: {
23759
- turns: value.endpoints.turns,
23760
- toolConfirmations: value.endpoints.toolConfirmations,
23761
- ...typeof interactions === "string" ? { interactions } : {},
23762
- ...typeof apps === "string" ? { apps } : {},
23763
- ...typeof sandbox === "string" ? { sandbox } : {}
23764
- },
23765
- ...isRecord4(value.configuration) ? { configuration: value.configuration } : {}
23766
- };
23767
- }
23768
- function isRecord4(value) {
23769
- return typeof value === "object" && value !== null && !Array.isArray(value);
23770
- }
23771
- async function readStableErrorCode(response) {
23772
- let value;
23773
- try {
23774
- value = await response.json();
23775
- } catch {
23776
- return void 0;
23777
- }
23778
- if (!isRecord4(value) || typeof value.code !== "string") return void 0;
23779
- return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
23780
- }
23781
- function clientError(code, message, retryable, status, options, serviceCode) {
23782
- return new AssistantClientError(
23783
- {
23784
- code,
23785
- ...status === void 0 ? {} : { status },
23786
- retryable,
23787
- ...serviceCode === void 0 ? {} : { serviceCode }
23788
- },
23789
- message,
23790
- options
23791
- );
23792
- }
23793
23840
  // Annotate the CommonJS export names for ESM import in node:
23794
23841
  0 && (module.exports = {
23795
23842
  AssistantClientError,