@happyvertical/smrt-chat 0.51.39 → 0.53.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 (62) hide show
  1. package/AGENTS.md +19 -2
  2. package/README.md +13 -0
  3. package/dist/assistant-turn-events.d.ts +152 -0
  4. package/dist/assistant-turn-events.d.ts.map +1 -0
  5. package/dist/assistant-turn-events.js +2 -0
  6. package/dist/assistant-turn.d.ts +236 -0
  7. package/dist/assistant-turn.d.ts.map +1 -0
  8. package/dist/chunks/{ChatService-D48KBDZy.js → ChatService-jJi2JJJi.js} +2 -2
  9. package/dist/chunks/ChatService-jJi2JJJi.js.map +1 -0
  10. package/dist/chunks/assistant-turn-events-BbZUf-Ju.js +77 -0
  11. package/dist/chunks/assistant-turn-events-BbZUf-Ju.js.map +1 -0
  12. package/dist/index.d.ts +3 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +776 -104
  15. package/dist/index.js.map +1 -1
  16. package/dist/internal/agent-runtime.js +1 -1
  17. package/dist/manifest.json +6 -2
  18. package/dist/models/AgentSession.d.ts +11 -1
  19. package/dist/models/AgentSession.d.ts.map +1 -1
  20. package/dist/smrt-knowledge.json +7 -13
  21. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte +309 -0
  22. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte.d.ts +19 -0
  23. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte.d.ts.map +1 -0
  24. package/dist/svelte/components/assistant/AssistantComposer.svelte +116 -14
  25. package/dist/svelte/components/assistant/AssistantComposer.svelte.d.ts +28 -0
  26. package/dist/svelte/components/assistant/AssistantComposer.svelte.d.ts.map +1 -1
  27. package/dist/svelte/components/assistant/AssistantDock.svelte +196 -1
  28. package/dist/svelte/components/assistant/AssistantDock.svelte.d.ts +38 -1
  29. package/dist/svelte/components/assistant/AssistantDock.svelte.d.ts.map +1 -1
  30. package/dist/svelte/components/assistant/AssistantThreadList.svelte +13 -1
  31. package/dist/svelte/components/assistant/__tests__/AssistantDock.test.js +16 -16
  32. package/dist/svelte/components/assistant/__tests__/assistant-composer-dictation.test.js +197 -0
  33. package/dist/svelte/components/assistant/__tests__/assistant-dock-choices-pending.test.js +224 -0
  34. package/dist/svelte/components/assistant/__tests__/assistant-dock-choices-preview.test.js +312 -0
  35. package/dist/svelte/components/assistant/__tests__/assistant-dock-choices.test.js +338 -0
  36. package/dist/svelte/components/assistant/__tests__/assistant-dock-client-tools.test.js +442 -0
  37. package/dist/svelte/components/assistant/__tests__/assistant-dock-run.test.js +303 -0
  38. package/dist/svelte/components/assistant/__tests__/assistant-dock-settle.test.js +146 -0
  39. package/dist/svelte/components/assistant/assistant-choices.svelte.d.ts +251 -0
  40. package/dist/svelte/components/assistant/assistant-choices.svelte.d.ts.map +1 -0
  41. package/dist/svelte/components/assistant/assistant-choices.svelte.js +520 -0
  42. package/dist/svelte/components/assistant/assistant-transport.d.ts +54 -1
  43. package/dist/svelte/components/assistant/assistant-transport.d.ts.map +1 -1
  44. package/dist/svelte/components/assistant/assistant-transport.js +64 -0
  45. package/dist/svelte/components/assistant/client-tools.d.ts +85 -0
  46. package/dist/svelte/components/assistant/client-tools.d.ts.map +1 -0
  47. package/dist/svelte/components/assistant/client-tools.js +61 -0
  48. package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts +159 -0
  49. package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts.map +1 -1
  50. package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.js +0 -0
  51. package/dist/svelte/i18n.d.ts +15 -0
  52. package/dist/svelte/i18n.d.ts.map +1 -1
  53. package/dist/svelte/i18n.js +17 -1
  54. package/dist/svelte/index.d.ts +6 -2
  55. package/dist/svelte/index.d.ts.map +1 -1
  56. package/dist/svelte/index.js +8 -1
  57. package/dist/tool-allow-list.d.ts +8 -0
  58. package/dist/tool-allow-list.d.ts.map +1 -0
  59. package/dist/tool-loop.d.ts +191 -3
  60. package/dist/tool-loop.d.ts.map +1 -1
  61. package/package.json +19 -15
  62. package/dist/chunks/ChatService-D48KBDZy.js.map +0 -1
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Choices: the assistant offers 1–4 options, the person picks one.
3
+ *
4
+ * The proposal counterpart of `assistant_propose_action` for work that has
5
+ * several good answers — "crop this tighter", "find me a picture of the
6
+ * arena". The page registers a {@link AssistantChoiceSource} while it can
7
+ * serve one; the dock offers each source to the model as a browser tool
8
+ * (`assistant_offer_<source id>`, effect `read`). When the model calls it the
9
+ * dock asks the SOURCE for the options (the model never supplies them), shows
10
+ * them as cards in the chat, and returns only their ids and labels to the
11
+ * model. Nothing changes until the person clicks a card: only then does the
12
+ * dock call the source's `apply`, in the page, as the person. The model has
13
+ * no way to apply an option.
14
+ *
15
+ * Images on the cards are restricted to same-origin paths (`/…`), so a
16
+ * source cannot leak a signed provider URL and an injected prompt cannot make
17
+ * the dock load a remote address.
18
+ *
19
+ * Options that take a while (generated pictures) arrive later: the offer
20
+ * carries `pending`, the cards show "Making…" placeholders and the source's
21
+ * `fill` adds options as they finish. The person can pick any option that
22
+ * has arrived. Such an offer is not replaced by the person's next message
23
+ * (it cost real work); "None of these" stops it.
24
+ *
25
+ * Previewing: a source that implements `preview` shows a pick in place on
26
+ * the page WITHOUT applying it. A click on a card only previews (another
27
+ * click swaps the preview; the offer's `original` card shows the page as it
28
+ * was); nothing is committed until the person presses the offer's commit
29
+ * button (`commit`, which applies the previewed option and resolves the
30
+ * offer). Cancel (`cancel`), dismissing, clearing the conversation and
31
+ * disposing all restore the original. The model still only offers.
32
+ */
33
+ import type { AssistantClientToolCall, AssistantClientToolResult } from '../../../assistant-turn-events.js';
34
+ import type { AssistantClientTool } from './client-tools.js';
35
+ /** Tool-name prefix for choice sources (add `assistant_offer_*` to a server allow-list). */
36
+ export declare const ASSISTANT_CHOICE_TOOL_PREFIX = "assistant_offer_";
37
+ /** At most this many options are shown for one offer. */
38
+ export declare const ASSISTANT_CHOICE_MAX_OPTIONS = 4;
39
+ /** One option the person can pick. */
40
+ export interface AssistantChoiceOption {
41
+ /** Stable within the offer; what `apply` receives back. */
42
+ id: string;
43
+ /** Short plain label ("Square", "Arena at night"). */
44
+ label: string;
45
+ /** One optional plain sentence under the label. */
46
+ description?: string;
47
+ /** Same-origin preview path (`/…`); anything else is dropped. */
48
+ imageUrl?: string;
49
+ /** Alt text for the preview; defaults to the label. */
50
+ imageAlt?: string;
51
+ /** Source-owned data carried to `apply` (never shown, never sent to the model). */
52
+ value?: unknown;
53
+ }
54
+ /** How a pending offer reports progress (see {@link AssistantChoicePending}). */
55
+ export interface AssistantChoicePendingUpdate {
56
+ /** Add finished options (normalized; at most 4 in the whole offer). */
57
+ add(options: AssistantChoiceOption[]): void;
58
+ /** Replace the plain progress line. */
59
+ status(message: string): void;
60
+ }
61
+ /** Options still being made, added to the cards as they finish. */
62
+ export interface AssistantChoicePending {
63
+ /** A plain line while they are made ("Making versions… about a minute"). */
64
+ message: string;
65
+ /** How many options are coming, for placeholders (1–4; default 4 less the ready ones). */
66
+ expected?: number;
67
+ /**
68
+ * Called once, after the cards show. Call `update.add` as options finish,
69
+ * and resolve when there are no more. Throw an `Error` with a plain
70
+ * message when making them failed; it is shown on the cards. `signal`
71
+ * aborts when the person dismisses the offer (or picks an option, or the
72
+ * conversation is cleared): stop polling then.
73
+ */
74
+ fill(update: AssistantChoicePendingUpdate, signal: AbortSignal): Promise<void>;
75
+ }
76
+ /** What a source offers for one request. */
77
+ export interface AssistantChoiceOffer {
78
+ /** A plain heading for the cards ("Pick a crop"). */
79
+ title: string;
80
+ /** The ready options (may be empty when `pending` is set). */
81
+ options: AssistantChoiceOption[];
82
+ /** More options are being made; they are added as they finish. */
83
+ pending?: AssistantChoicePending;
84
+ /**
85
+ * The page as it is now, shown as the first card ("Original") when the
86
+ * source can `preview`: previewing it restores the page. Needs an image.
87
+ */
88
+ original?: AssistantChoiceOption;
89
+ /** The commit button's label when previewing (default "Use this"). */
90
+ commitLabel?: string;
91
+ /** The cancel button's label when previewing (default "Cancel"). */
92
+ cancelLabel?: string;
93
+ }
94
+ /** A page feature that can offer choices while it is on screen. */
95
+ export interface AssistantChoiceSource {
96
+ /** Lowercase id, `[a-z][a-z0-9_]*`, at most 40 characters. */
97
+ id: string;
98
+ /** What the options are and when to offer them, for the model. */
99
+ description: string;
100
+ /** JSON schema of the model's arguments (default: none). */
101
+ inputSchema?: Record<string, unknown>;
102
+ /**
103
+ * Build the options for the model's arguments. Throw an `Error` with a
104
+ * plain message when there is nothing to offer; the model sees it.
105
+ */
106
+ offer(args: Record<string, unknown>, options: {
107
+ signal?: AbortSignal;
108
+ }): Promise<AssistantChoiceOffer> | AssistantChoiceOffer;
109
+ /**
110
+ * Apply the option the person clicked. Runs in the page on their click.
111
+ * May return a short plain line saying what changed.
112
+ */
113
+ apply(option: AssistantChoiceOption): Promise<string | undefined | void> | string | undefined | void;
114
+ /**
115
+ * Show `option` in place on the page WITHOUT saving or applying it, so the
116
+ * person can see it before committing. `option` is the offer's `original`
117
+ * to put the page back (or null when the offer had none). Runs in the page
118
+ * on the person's click; must never persist anything. A source that
119
+ * implements this gets preview-then-commit cards; one that does not keeps
120
+ * "click applies".
121
+ */
122
+ preview?(option: AssistantChoiceOption | null): Promise<void> | void;
123
+ }
124
+ /** Where the dock finds the choice sources the page has registered. */
125
+ export interface AssistantChoiceSourceRegistry {
126
+ /** Register a source; returns the function that removes it. */
127
+ register(source: AssistantChoiceSource): () => void;
128
+ list(): AssistantChoiceSource[];
129
+ }
130
+ /** A simple in-memory registry; the latest registration of an id wins. */
131
+ export declare function createAssistantChoiceSourceRegistry(): AssistantChoiceSourceRegistry;
132
+ /** The browser tool name for a source. */
133
+ export declare function choiceToolName(sourceId: string): string;
134
+ /** A same-origin path, or null. Rejects `//host`, `\\`, schemes, and controls. */
135
+ export declare function safeChoiceImageUrl(value: unknown): string | null;
136
+ /** Normalize a source's options: unique ids, plain labels, safe images, at most 4. */
137
+ export declare function normalizeChoiceOptions(options: readonly AssistantChoiceOption[]): AssistantChoiceOption[];
138
+ /** One offer shown in the chat. */
139
+ export interface AssistantChoiceSet {
140
+ /** The model's call id. */
141
+ id: string;
142
+ sourceId: string;
143
+ title: string;
144
+ options: AssistantChoiceOption[];
145
+ /**
146
+ * `waiting` for the person (options may still be arriving, see `pending`);
147
+ * `applying` after a click; `applied` once the source applied it;
148
+ * `dismissed` when the person said none (or a newer request replaced it);
149
+ * `failed` when applying failed (they may pick again); `unavailable` when
150
+ * the pending options could not be made and none arrived.
151
+ */
152
+ status: 'waiting' | 'applying' | 'applied' | 'dismissed' | 'failed' | 'unavailable';
153
+ chosenOptionId?: string;
154
+ /** The source's line about what changed. */
155
+ outcome?: string;
156
+ error?: string;
157
+ /** Options still being made: the progress line and how many are coming. */
158
+ pending?: {
159
+ message: string;
160
+ expected: number;
161
+ };
162
+ /** A plain line when some pending options could not be made. */
163
+ note?: string;
164
+ /** Kept when the person sends another message (it had pending work). */
165
+ lasting?: boolean;
166
+ /** The source can preview: a click previews, the commit button applies. */
167
+ previewable?: boolean;
168
+ /** The page as it is now (previewable offers): the "Original" card. */
169
+ original?: AssistantChoiceOption;
170
+ /** The option (or the original) now previewed; nothing is applied yet. */
171
+ previewOptionId?: string;
172
+ /**
173
+ * The option whose preview is being shown right now (the source has not
174
+ * finished). Cards and the commit button wait for it, so what is committed
175
+ * is always what the page shows.
176
+ */
177
+ previewPendingId?: string;
178
+ commitLabel?: string;
179
+ cancelLabel?: string;
180
+ }
181
+ /** The dock's choice state: offers from tool calls, and the person's picks. */
182
+ export declare class AssistantChoices {
183
+ private readonly getRegistry;
184
+ private readonly hold?;
185
+ sets: AssistantChoiceSet[];
186
+ /** Release functions of the holds for offers still open. */
187
+ private readonly releases;
188
+ /**
189
+ * Per-offer preview queue and request counter: previews run one at a time
190
+ * in click order, so the page ends on the last click, and only the latest
191
+ * request updates the offer.
192
+ */
193
+ private readonly previewQueues;
194
+ private readonly previewRequests;
195
+ /** Abort controllers of pending offers still being filled. */
196
+ private readonly fills;
197
+ /**
198
+ * @param hold Called for each offer while it waits for the person (and
199
+ * after a failed apply); returns the release, called once they picked,
200
+ * dismissed, or the offer was replaced. The dock uses its run holds.
201
+ */
202
+ constructor(getRegistry: () => AssistantChoiceSourceRegistry | undefined, hold?: ((set: AssistantChoiceSet) => () => void) | undefined);
203
+ /** Keep one hold per open offer (`waiting` or `failed`). */
204
+ private syncHolds;
205
+ private sources;
206
+ private source;
207
+ /** The browser tools for the registered sources. */
208
+ tools(): AssistantClientTool[];
209
+ isChoiceTool(name: string): boolean;
210
+ /** Number of offers waiting for the person. */
211
+ get waitingCount(): number;
212
+ /** The progress line of an offer still being made with nothing to pick yet. */
213
+ get pendingMessage(): string | null;
214
+ private update;
215
+ /** Run a model call to a choice tool: ask the source, show the cards. */
216
+ offerFromCall(call: AssistantClientToolCall, signal?: AbortSignal): Promise<AssistantClientToolResult>;
217
+ /** Run a pending offer's `fill`, adding its options as they finish. */
218
+ private fill;
219
+ /** Stop filling an offer (it was picked, dismissed or cleared). */
220
+ private stopFill;
221
+ /** The person picked `optionId`: apply it through its source. */
222
+ choose(setId: string, optionId: string): Promise<void>;
223
+ /** The person wants none of these. */
224
+ dismiss(setId: string): void;
225
+ /**
226
+ * Put the page back if this offer is previewing something (or is about
227
+ * to). Queued behind any preview still running, and it cancels queued
228
+ * ones, so a slow preview never lands after the page was restored.
229
+ */
230
+ private restorePreview;
231
+ /**
232
+ * The person clicked a card of a previewable offer (or its `original`):
233
+ * show it in place. Nothing is applied.
234
+ */
235
+ preview(setId: string, optionId: string): Promise<void>;
236
+ /**
237
+ * The person pressed the commit button: apply the previewed option (the
238
+ * one thing that changes the page). The original, or nothing, previewed
239
+ * means there is nothing to apply: that is a cancel.
240
+ */
241
+ commit(setId: string): Promise<void>;
242
+ /** The person wants to keep the original: restore it and close the offer. */
243
+ cancel(setId: string): void;
244
+ /**
245
+ * A new request replaces offers still waiting, except ones that had
246
+ * options made for them (`lasting`): only the person dismisses those.
247
+ */
248
+ supersedeWaiting(): void;
249
+ clear(): void;
250
+ }
251
+ //# sourceMappingURL=assistant-choices.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-choices.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/assistant/assistant-choices.svelte.ts"],"names":[],"mappings":"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"}