@tangle-network/agent-app 0.44.28 → 0.44.30

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 (50) hide show
  1. package/dist/assistant/index.d.ts +8 -6
  2. package/dist/assistant/index.js +6 -3
  3. package/dist/assistant/index.js.map +1 -1
  4. package/dist/{attachment-validation-Dvc_Livy.d.ts → attachment-validation-CNkH91Gs.d.ts} +1 -1
  5. package/dist/chat-react/index.d.ts +192 -0
  6. package/dist/chat-react/index.js +179 -0
  7. package/dist/chat-react/index.js.map +1 -0
  8. package/dist/chat-routes/index.d.ts +7 -6
  9. package/dist/chat-routes/index.js +13 -9
  10. package/dist/chat-routes/index.js.map +1 -1
  11. package/dist/chat-store/index.d.ts +6 -5
  12. package/dist/chat-store/index.js +2 -1
  13. package/dist/chat-store/index.js.map +1 -1
  14. package/dist/chunk-4OO7P3ZF.js +292 -0
  15. package/dist/chunk-4OO7P3ZF.js.map +1 -0
  16. package/dist/chunk-4PUMUTLU.js +158 -0
  17. package/dist/chunk-4PUMUTLU.js.map +1 -0
  18. package/dist/{chunk-7775L5NN.js → chunk-BAC2B2KI.js} +170 -7
  19. package/dist/chunk-BAC2B2KI.js.map +1 -0
  20. package/dist/{chunk-PRKSYTMQ.js → chunk-GCH3BUAZ.js} +31 -317
  21. package/dist/chunk-GCH3BUAZ.js.map +1 -0
  22. package/dist/{chunk-BI6NKSO4.js → chunk-IYLJS6VW.js} +3 -84
  23. package/dist/chunk-IYLJS6VW.js.map +1 -0
  24. package/dist/chunk-QY4BRKRJ.js +84 -0
  25. package/dist/chunk-QY4BRKRJ.js.map +1 -0
  26. package/dist/{chunk-C3SRFZGL.js → chunk-QYAQGCHF.js} +2 -154
  27. package/dist/chunk-QYAQGCHF.js.map +1 -0
  28. package/dist/{contract-CEewO6DI.d.ts → contract-CQNvv5th.d.ts} +1 -1
  29. package/dist/interactions/index.d.ts +2 -2
  30. package/dist/{parts-fyPPdDdK.d.ts → parts-7fbe2rj8.d.ts} +4 -274
  31. package/dist/{queue-vRI0Qx3X.d.ts → queue-VTBA5ONX.d.ts} +1 -1
  32. package/dist/sandbox/index.d.ts +253 -1
  33. package/dist/sandbox/index.js +9 -1
  34. package/dist/stream/index.d.ts +3 -3
  35. package/dist/{stream-normalizer-DnuqkZvw.d.ts → stream-normalizer-CnPnMaTp.d.ts} +1 -1
  36. package/dist/teams/index.js +5 -5
  37. package/dist/teams/invitations-api.js +4 -4
  38. package/dist/teams-react/index.js +3 -3
  39. package/dist/{types-DB82fktc.d.ts → types-CCeYywdS.d.ts} +1 -1
  40. package/dist/use-file-mentions-E6a7_cbH.d.ts +98 -0
  41. package/dist/web-react/index.d.ts +13 -104
  42. package/dist/web-react/index.js +17 -12
  43. package/dist/wire-DSp4LzEE.d.ts +272 -0
  44. package/dist/work-product/index.d.ts +3 -3
  45. package/dist/work-product-react/index.d.ts +1 -1
  46. package/package.json +6 -1
  47. package/dist/chunk-7775L5NN.js.map +0 -1
  48. package/dist/chunk-BI6NKSO4.js.map +0 -1
  49. package/dist/chunk-C3SRFZGL.js.map +0 -1
  50. package/dist/chunk-PRKSYTMQ.js.map +0 -1
@@ -0,0 +1,272 @@
1
+ /**
2
+ * Wire contract between the chat client (composer + `streamChatTurn`) and the
3
+ * assembled server vertical (`createChatTurnRoutes`). Import-free on purpose:
4
+ * `/web-react` re-exports these types into browser bundles, so nothing here may
5
+ * reach a Node builtin or an engine package.
6
+ *
7
+ * The client part shape permits an absolute file path until the server converts
8
+ * it to the URL required by the sandbox SDK. It is derived here, not imported,
9
+ * so the client bundle never touches the SDK.
10
+ */
11
+ interface ChatTurnTextPartInput {
12
+ type: 'text';
13
+ text: string;
14
+ }
15
+ /** A non-text prompt part the upload route hands back and the client echoes
16
+ * on send. `url` carries an inline `data:` URI for small files; `path` is a
17
+ * sandbox workspace reference for large ones (the >1 MiB gateway body cap
18
+ * makes the two-step upload mandatory). */
19
+ interface ChatTurnFilePartInput {
20
+ type: 'image' | 'file';
21
+ filename?: string;
22
+ mediaType?: string;
23
+ url?: string;
24
+ path?: string;
25
+ }
26
+ /** Resolve input as either a text part or a file part of a chat turn */
27
+ type ChatTurnPartInput = ChatTurnTextPartInput | ChatTurnFilePartInput;
28
+ /** Represent a text event produced by a source with a fixed type and associated text content */
29
+ interface ProducerTextEvent {
30
+ type: 'text';
31
+ text: string;
32
+ }
33
+ /** Define an event representing reasoning output with a fixed type and associated text */
34
+ interface ProducerReasoningEvent {
35
+ type: 'reasoning';
36
+ text: string;
37
+ }
38
+ /** Represent an event triggered by a producer tool call with its identifier, name, and arguments */
39
+ interface ProducerToolCallEvent {
40
+ type: 'tool_call';
41
+ call: {
42
+ toolCallId: string;
43
+ toolName: string;
44
+ args: Record<string, unknown>;
45
+ };
46
+ }
47
+ /** Describe the structure of an event representing the result of a producer tool call */
48
+ interface ProducerToolResultEvent {
49
+ type: 'tool_result';
50
+ toolCallId: string;
51
+ toolName: string;
52
+ outcome: {
53
+ ok: boolean;
54
+ result?: unknown;
55
+ message?: string;
56
+ };
57
+ }
58
+ /** Describe usage event with prompt and completion token counts for a producer */
59
+ interface ProducerUsageEvent {
60
+ type: 'usage';
61
+ usage: {
62
+ promptTokens: number;
63
+ completionTokens: number;
64
+ };
65
+ }
66
+ /** Define the structure for a producer notice event with type, id, kind, and text fields */
67
+ interface ProducerNoticeEvent {
68
+ type: 'notice';
69
+ id: string;
70
+ /** Kept inline with `/interactions`' `NoticeKind` so this file stays import-free. */
71
+ noticeKind: 'warning' | 'auto-declined';
72
+ text: string;
73
+ }
74
+ /** Represent an error event emitted by a producer containing message, code, and optional details */
75
+ interface ProducerErrorEvent {
76
+ type: 'error';
77
+ data: {
78
+ message: string;
79
+ code?: string;
80
+ details?: Record<string, unknown>;
81
+ };
82
+ }
83
+ /** Stable raw lifecycle/interaction/plan/route events forwarded unchanged. */
84
+ type ProducerPassthroughEventType = 'turn' | 'metadata' | 'interaction' | 'interaction.cancel' | 'plan.submitted' | 'done' | 'warning' | 'session.run.started' | 'session.run.completed' | 'session.run.failed' | 'turn_status';
85
+ /** Define an event carrying passthrough data with flexible properties for producer communication */
86
+ interface ProducerPassthroughEvent {
87
+ type: ProducerPassthroughEventType;
88
+ data?: Record<string, unknown>;
89
+ /** Route markers and raw passthroughs may carry `turnId`, `status`, `seq`, etc. */
90
+ [key: string]: unknown;
91
+ }
92
+ /** Represent events emitted by a producer during its operation for processing and handling */
93
+ type ProducerWireEvent = ProducerTextEvent | ProducerReasoningEvent | ProducerToolCallEvent | ProducerToolResultEvent | ProducerUsageEvent | ProducerNoticeEvent | ProducerErrorEvent | ProducerPassthroughEvent;
94
+ /** The image/file split an attachment is rendered and persisted under — the
95
+ * same discriminant as {@link ChatMentionKind}, but a distinct name because an
96
+ * attachment carries content the product uploaded (`ChatAttachmentInput`)
97
+ * while a mention points at a file the box already has. Defined HERE (the
98
+ * import-free layer) so `ChatAttachmentInput` can reference it and the client
99
+ * composer imports it without pulling the persisted-part vocabulary;
100
+ * `/chat-store`'s parts module re-exports it alongside the attachment helpers. */
101
+ type ChatAttachmentKind = 'image' | 'file';
102
+ /** `POST` turn-body entry describing a file already uploaded to the product's
103
+ * store (vault/object-store) — distinct from an inline {@link
104
+ * ChatTurnFilePartInput} (which carries bytes) and from a {@link FileMention}
105
+ * (a sandbox path the box already holds). The route resolves this field with
106
+ * {@link resolveChatAttachments}: every path is re-validated and every size is
107
+ * re-derived from the stored body, so nothing here is trusted as sent. */
108
+ interface ChatAttachmentInput {
109
+ path: string;
110
+ name: string;
111
+ size: number;
112
+ mediaType: string;
113
+ kind: ChatAttachmentKind;
114
+ }
115
+ /** POST body for the turn route. `content` may be empty when `parts` carry the
116
+ * message (an image-only send). Product routing fields (workspaceId etc.) ride
117
+ * alongside and are read by the product's `authorize` seam. */
118
+ interface ChatTurnRequestPayload {
119
+ threadId: string;
120
+ content?: string;
121
+ /** Non-text parts from the upload route, echoed back verbatim. */
122
+ parts?: ChatTurnFilePartInput[];
123
+ /** `@`-picked file mentions for this turn — path references into the
124
+ * workspace sandbox, NOT uploads, so they travel in their own field rather
125
+ * than as `parts` entries. A product whose `parts` field is already spoken
126
+ * for (an attachment sentinel) can still send mentions, and mentions
127
+ * persist as their own `ChatMentionPart`s so a retry rebuilds them. The
128
+ * route validates this field with {@link parseFileMentions} and replaces it
129
+ * on the payload with the validated, deduped list. */
130
+ mentions?: FileMention[];
131
+ /** Files uploaded to the product's store ahead of the turn — path
132
+ * references, NOT inline bytes (those ride `parts`). Validated and
133
+ * size-re-derived by {@link resolveChatAttachments} into persistable
134
+ * attachment parts; a product whose `parts` field is spoken for by inline
135
+ * uploads still sends store-backed files here. */
136
+ attachments?: ChatAttachmentInput[];
137
+ model?: string;
138
+ effort?: 'auto' | 'low' | 'medium' | 'high';
139
+ harness?: string;
140
+ /** Client-generated idempotency key for the logical turn (retry-safe). */
141
+ turnId?: string;
142
+ [key: string]: unknown;
143
+ }
144
+ /** `fetch` init for the turn route — the one place the client wire shape is
145
+ * serialized, so composer glue and products never drift from the server's
146
+ * parser. */
147
+ declare function chatTurnRequestInit(payload: ChatTurnRequestPayload): RequestInit;
148
+ /** Define the maximum byte size allowed for inline parts in data processing */
149
+ declare const INLINE_PARTS_MAX_BYTES = 950000;
150
+ /** Hard cap on the whole `/prompt` request body as it crosses the sandbox
151
+ * proxy — smaller in practice than a raw-file write cap because a dispatch
152
+ * carries several inline parts plus the flattened history in one request. */
153
+ declare const DISPATCH_REQUEST_MAX_BYTES: number;
154
+ /** Bytes reserved off the top of {@link DISPATCH_REQUEST_MAX_BYTES} for the
155
+ * JSON structure around the parts array (keys, delimiters, per-part
156
+ * `type`/`filename`/`mediaType` fields) that {@link base64WireLen} does not
157
+ * account for — keeps the inline budget off the exact proxy cap where one
158
+ * stray byte trips the 413. */
159
+ declare const DISPATCH_STRUCTURAL_RESERVE_BYTES: number;
160
+ /** Sidecar's hard cap on the `parts` array of one prompt request — a dispatch
161
+ * must never assemble more parts than this or the whole turn 400s. */
162
+ declare const DISPATCH_MAX_PARTS = 64;
163
+ /** Product-side cap on media parts per dispatch (current turn + carried
164
+ * history), well under {@link DISPATCH_MAX_PARTS}. History trimming that keeps
165
+ * a transcript's native media under this is a PRODUCT concern (the pointer
166
+ * block keeps trimmed media reachable); `buildDispatchParts` enforces only the
167
+ * total {@link DISPATCH_MAX_PARTS} cap. */
168
+ declare const DISPATCH_MAX_MEDIA_PARTS = 24;
169
+ /** Size a base64-encoded string occupies on the wire given the raw
170
+ * (pre-encoding) byte length: base64 packs 3 raw bytes into 4 output
171
+ * characters, rounded up to the next multiple of 4. */
172
+ declare function base64WireLen(byteLen: number): number;
173
+ /**
174
+ * Render a raw byte count as a human-readable size (`512B`, `3KB`, `12MB
175
+ * 500KB`). Ported EXACTLY from gtm-agent's `attachment-limits.ts` — byte-
176
+ * identical implementation, not a reinterpretation — so `resolve-attachments`'s
177
+ * and `promote-file-part`'s error strings match gtm's wording verbatim. Lives
178
+ * in the import-free wire layer (not `resolve-attachments.ts` alone) because
179
+ * BOTH the aggregate-cap message here and the per-file oversize message in
180
+ * `promote-file-part.ts` need it; a browser composer wanting the same
181
+ * formatting for a client-side pre-check can also import it with no engine
182
+ * pulled in.
183
+ */
184
+ declare function formatBytes(bytes: number): string;
185
+ /** Represent errors for invalid chat turn inputs with status and code properties */
186
+ declare class ChatTurnInputError extends Error {
187
+ readonly status: number;
188
+ readonly code: string;
189
+ constructor(message: string, status?: number, code?: string);
190
+ }
191
+ /** Calculate the total byte size of an array of chat turn parts */
192
+ declare function promptPartsByteSize(parts: ChatTurnPartInput[]): number;
193
+ /** Throws `ChatTurnInputError` (413) when the parts' inline payload would blow
194
+ * the gateway cap. Path-ref parts are tiny by construction and always pass. */
195
+ declare function assertPromptPartsWithinCap(parts: ChatTurnPartInput[], maxBytes?: number): void;
196
+ /** A file mention resolved from the composer's `@`-picker: the
197
+ * workspace-relative path plus enough metadata to build a prompt part and
198
+ * pointer text. `path` is the canonical identity — the mention pill's
199
+ * `MentionItem.id` for the file kind (`/web-react`'s `useFileMentions`). */
200
+ interface FileMention {
201
+ path: string;
202
+ name: string;
203
+ size?: number;
204
+ }
205
+ /** The `image/*` mime for a mention path by extension, or `undefined` for
206
+ * anything not in the known image set (dispatched as `type: 'file'`). */
207
+ declare function mediaTypeForMentionPath(path: string): string | undefined;
208
+ /** The image/file split a mention is rendered and persisted under — the
209
+ * composer pill's icon, the dispatched part's `type`, and
210
+ * `ChatMentionPart.mentionKind` are all this one value. */
211
+ type ChatMentionKind = 'image' | 'file';
212
+ /** `image` when the path's extension is in the known image set (the same table
213
+ * {@link mediaTypeForMentionPath} reads), `file` otherwise. Exported so a
214
+ * client that needs only the discriminant — a pill icon, a persisted part's
215
+ * `mentionKind` — never re-declares the extension table; two frozen copies of
216
+ * one mime table is how one gains a format and the other doesn't. */
217
+ declare function mentionKindForPath(path: string): ChatMentionKind;
218
+ /** Define options to resolve mention paths when converting file mentions to parts */
219
+ interface FileMentionsToPartsOptions {
220
+ /** Resolve a mention's workspace-relative path to the absolute path the
221
+ * dispatched part should carry (e.g. a host prefixing the in-box vault
222
+ * root). Default: identity — the path travels unchanged. */
223
+ resolvePath?: (path: string) => string;
224
+ }
225
+ /** Maps resolved file mentions to path-only `ChatTurnFilePartInput`s —
226
+ * `image` vs `file` by extension, and always a `path`, never a `url` (the
227
+ * url/path XOR invariant: a mention is a sandbox path reference, never
228
+ * inline bytes). */
229
+ declare function fileMentionsToParts(mentions: readonly FileMention[], opts?: FileMentionsToPartsOptions): ChatTurnFilePartInput[];
230
+ /** The agent-facing pointer block appended to the dispatched prompt — never
231
+ * persisted in message `content`. Empty array → `''` so callers can append
232
+ * unconditionally. This is the sole producer of that text: the current
233
+ * turn's dispatch and any history projection built from the same mention
234
+ * list both route through here, so the two can't drift apart. */
235
+ declare function buildMentionPromptBlock(mentions: readonly Pick<FileMention, 'name' | 'path'>[]): string;
236
+ /** Hard cap on mentions per turn. Bounds the prompt pointer block, the
237
+ * persisted parts, and whatever media budget a dispatch draws from them. */
238
+ declare const MENTION_MAX_COUNT = 16;
239
+ /** Represent the result of a sandbox mention path check indicating success or failure with an error message */
240
+ type SandboxMentionPathCheck = {
241
+ succeeded: true;
242
+ } | {
243
+ succeeded: false;
244
+ error: string;
245
+ };
246
+ /**
247
+ * Validate a workspace-relative sandbox mention path. Rejects traversal (a
248
+ * `..` path segment), absolute paths (leading `/`), backslashes, and null
249
+ * bytes — the four ways a path picked in a client can escape the root the
250
+ * index route scanned.
251
+ *
252
+ * Spaces and unicode are deliberately ALLOWED: in-box filenames are arbitrary,
253
+ * and an ASCII-only charset would silently drop real files from a feature
254
+ * whose whole job is naming them.
255
+ */
256
+ declare function validateSandboxMentionPath(path: unknown): SandboxMentionPathCheck;
257
+ /**
258
+ * Validates the untyped `mentions` array off the wire, mirroring
259
+ * {@link parseChatTurnParts}: the typed list, or `ChatTurnInputError` (400)
260
+ * naming the offending entry. Never sanitizes-and-continues — a traversal path
261
+ * is a rejected request, not a trimmed one.
262
+ *
263
+ * A path repeated within one turn is deduped to its first occurrence rather
264
+ * than rejected: mentioning the same file twice is plausible user input, not
265
+ * an attack.
266
+ */
267
+ declare function parseFileMentions(raw: unknown): FileMention[];
268
+ /** Validates the untyped `parts` array off the wire. Returns the typed parts
269
+ * or throws `ChatTurnInputError` (400) naming the offending entry. */
270
+ declare function parseChatTurnParts(raw: unknown): ChatTurnFilePartInput[];
271
+
272
+ export { mediaTypeForMentionPath as A, mentionKindForPath as B, type ChatMentionKind as C, DISPATCH_MAX_MEDIA_PARTS as D, parseChatTurnParts as E, type FileMention as F, parseFileMentions as G, promptPartsByteSize as H, INLINE_PARTS_MAX_BYTES as I, validateSandboxMentionPath as J, MENTION_MAX_COUNT as M, type ProducerErrorEvent as P, type SandboxMentionPathCheck as S, type ChatAttachmentKind as a, type ChatAttachmentInput as b, type ChatTurnRequestPayload as c, type ChatTurnPartInput as d, type ChatTurnFilePartInput as e, ChatTurnInputError as f, type ChatTurnTextPartInput as g, DISPATCH_MAX_PARTS as h, DISPATCH_REQUEST_MAX_BYTES as i, DISPATCH_STRUCTURAL_RESERVE_BYTES as j, type FileMentionsToPartsOptions as k, type ProducerNoticeEvent as l, type ProducerPassthroughEvent as m, type ProducerPassthroughEventType as n, type ProducerReasoningEvent as o, type ProducerTextEvent as p, type ProducerToolCallEvent as q, type ProducerToolResultEvent as r, type ProducerUsageEvent as s, type ProducerWireEvent as t, assertPromptPartsWithinCap as u, base64WireLen as v, buildMentionPromptBlock as w, chatTurnRequestInit as x, fileMentionsToParts as y, formatBytes as z };
@@ -1,9 +1,9 @@
1
- import { a as WorkProductProvenance, d as WorkProductStorePort, e as WorkProductAuditEvent, b as WorkProductRecord, f as WorkProductArtifact, Q as QualityCheck, E as EvidenceEntry, g as ExceptionEntry, h as WorkProductStatus, c as WorkProductPersistedPart } from '../types-DB82fktc.js';
2
- export { A as AgentCheckInput, i as EvidenceLocator, j as EvidenceSpan, k as ExceptionSeverity, P as ProfileBacktestSummary, l as QuoteBasis, m as WorkProductParseResult, n as WorkProductPatch, W as WorkProductRef, o as WorkProductUpdateGuard, p as WorkProductVersionEntry, q as isWorkProductStatus, r as parseAgentCheckInput, s as parseArtifactInput, t as parseEvidenceInput, u as parseExceptionInput, v as persistedPartToWorkProduct, w as unresolvedBlockingExceptions, x as workProductToPersistedPart } from '../types-DB82fktc.js';
1
+ import { b as WorkProductProvenance, d as WorkProductStorePort, e as WorkProductAuditEvent, c as WorkProductRecord, f as WorkProductArtifact, Q as QualityCheck, E as EvidenceEntry, g as ExceptionEntry, h as WorkProductStatus, W as WorkProductPersistedPart } from '../types-CCeYywdS.js';
2
+ export { A as AgentCheckInput, i as EvidenceLocator, j as EvidenceSpan, k as ExceptionSeverity, P as ProfileBacktestSummary, l as QuoteBasis, m as WorkProductParseResult, n as WorkProductPatch, a as WorkProductRef, o as WorkProductUpdateGuard, p as WorkProductVersionEntry, q as isWorkProductStatus, r as parseAgentCheckInput, s as parseArtifactInput, t as parseEvidenceInput, u as parseExceptionInput, v as persistedPartToWorkProduct, w as unresolvedBlockingExceptions, x as workProductToPersistedPart } from '../types-CCeYywdS.js';
3
3
  import { A as AppToolContext, b as AppToolDefinition } from '../types-DbU-oO5h.js';
4
4
  import { JudgeVerdict } from '@tangle-network/agent-eval';
5
5
  import { T as TrustItem } from '../trust-gate-Dcm5xSva.js';
6
- export { R as ReviewQueueInputs, a as ReviewQueueItem, b as ReviewQueuePendingAsk, c as ReviewQueueState, d as ReviewQueueThread, p as parseReviewQueueItem, e as projectReviewQueue } from '../queue-vRI0Qx3X.js';
6
+ export { R as ReviewQueueInputs, a as ReviewQueueItem, b as ReviewQueuePendingAsk, c as ReviewQueueState, d as ReviewQueueThread, p as parseReviewQueueItem, e as projectReviewQueue } from '../queue-VTBA5ONX.js';
7
7
 
8
8
  /**
9
9
  * The guarded work-product status machine — the `/missions` service PATTERN
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { b as WorkProductRecord, E as EvidenceEntry, P as ProfileBacktestSummary } from '../types-DB82fktc.js';
2
+ import { c as WorkProductRecord, E as EvidenceEntry, P as ProfileBacktestSummary } from '../types-CCeYywdS.js';
3
3
 
4
4
  type WorkProductPaneTab = 'artifact' | 'diff' | 'lineage' | 'exceptions' | 'checks' | 'history';
5
5
  /** Properties for the tabbed work-product review pane */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-app",
3
- "version": "0.44.28",
3
+ "version": "0.44.30",
4
4
  "packageManager": "pnpm@10.33.4",
5
5
  "description": "Application-shell framework for Tangle agent products: a bounded tool loop, the structured agent→app tool side channel, integration-hub client, per-workspace billing, and crypto — composed over the Tangle agent substrate through typed seams.",
6
6
  "keywords": [
@@ -232,6 +232,11 @@
232
232
  "import": "./dist/work-product-react/index.js",
233
233
  "default": "./dist/work-product-react/index.js"
234
234
  },
235
+ "./chat-react": {
236
+ "types": "./dist/chat-react/index.d.ts",
237
+ "import": "./dist/chat-react/index.js",
238
+ "default": "./dist/chat-react/index.js"
239
+ },
235
240
  "./assistant": {
236
241
  "types": "./dist/assistant/index.d.ts",
237
242
  "import": "./dist/assistant/index.js",