@cellarnode/ui 0.201.1 → 0.203.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 (159) hide show
  1. package/dist/agent/composer.d.ts +6 -1
  2. package/dist/agent/composer.d.ts.map +1 -1
  3. package/dist/agent/composer.js +43 -9
  4. package/dist/agent/composer.js.map +1 -1
  5. package/dist/agent/conversation.d.ts +20 -2
  6. package/dist/agent/conversation.d.ts.map +1 -1
  7. package/dist/agent/conversation.js +39 -5
  8. package/dist/agent/conversation.js.map +1 -1
  9. package/dist/agent/copy.d.ts +7 -0
  10. package/dist/agent/copy.d.ts.map +1 -1
  11. package/dist/agent/copy.js +9 -0
  12. package/dist/agent/copy.js.map +1 -1
  13. package/dist/agent/fixtures.d.ts +34 -0
  14. package/dist/agent/fixtures.d.ts.map +1 -1
  15. package/dist/agent/fixtures.js +83 -0
  16. package/dist/agent/fixtures.js.map +1 -1
  17. package/dist/agent/index.d.ts +18 -1
  18. package/dist/agent/index.d.ts.map +1 -1
  19. package/dist/agent/index.js +18 -1
  20. package/dist/agent/index.js.map +1 -1
  21. package/dist/agent/markdown.d.ts +64 -0
  22. package/dist/agent/markdown.d.ts.map +1 -0
  23. package/dist/agent/markdown.js +338 -0
  24. package/dist/agent/markdown.js.map +1 -0
  25. package/dist/agent/masked-value.d.ts +1 -0
  26. package/dist/agent/masked-value.d.ts.map +1 -1
  27. package/dist/agent/masked-value.js +4 -1
  28. package/dist/agent/masked-value.js.map +1 -1
  29. package/dist/agent/message.d.ts +26 -6
  30. package/dist/agent/message.d.ts.map +1 -1
  31. package/dist/agent/message.js +47 -11
  32. package/dist/agent/message.js.map +1 -1
  33. package/dist/agent/panel-frame.js +1 -1
  34. package/dist/agent/panel-frame.js.map +1 -1
  35. package/dist/agent/role-cards/card-kit.d.ts +111 -0
  36. package/dist/agent/role-cards/card-kit.d.ts.map +1 -0
  37. package/dist/agent/role-cards/card-kit.js +68 -0
  38. package/dist/agent/role-cards/card-kit.js.map +1 -0
  39. package/dist/agent/role-cards/data-table-card.d.ts +80 -0
  40. package/dist/agent/role-cards/data-table-card.d.ts.map +1 -0
  41. package/dist/agent/role-cards/data-table-card.js +214 -0
  42. package/dist/agent/role-cards/data-table-card.js.map +1 -0
  43. package/dist/agent/role-cards/fixtures.d.ts +124 -0
  44. package/dist/agent/role-cards/fixtures.d.ts.map +1 -0
  45. package/dist/agent/role-cards/fixtures.js +401 -0
  46. package/dist/agent/role-cards/fixtures.js.map +1 -0
  47. package/dist/agent/role-cards/host-contract.d.ts +214 -0
  48. package/dist/agent/role-cards/host-contract.d.ts.map +1 -0
  49. package/dist/agent/role-cards/host-contract.js +348 -0
  50. package/dist/agent/role-cards/host-contract.js.map +1 -0
  51. package/dist/agent/role-cards/inspector-drawer.d.ts +42 -0
  52. package/dist/agent/role-cards/inspector-drawer.d.ts.map +1 -0
  53. package/dist/agent/role-cards/inspector-drawer.js +68 -0
  54. package/dist/agent/role-cards/inspector-drawer.js.map +1 -0
  55. package/dist/agent/role-cards/inspector-fixtures.d.ts +84 -0
  56. package/dist/agent/role-cards/inspector-fixtures.d.ts.map +1 -0
  57. package/dist/agent/role-cards/inspector-fixtures.js +162 -0
  58. package/dist/agent/role-cards/inspector-fixtures.js.map +1 -0
  59. package/dist/agent/role-cards/inspector-record.d.ts +109 -0
  60. package/dist/agent/role-cards/inspector-record.d.ts.map +1 -0
  61. package/dist/agent/role-cards/inspector-record.js +346 -0
  62. package/dist/agent/role-cards/inspector-record.js.map +1 -0
  63. package/dist/agent/role-cards/inspector-view.d.ts +137 -0
  64. package/dist/agent/role-cards/inspector-view.d.ts.map +1 -0
  65. package/dist/agent/role-cards/inspector-view.js +261 -0
  66. package/dist/agent/role-cards/inspector-view.js.map +1 -0
  67. package/dist/agent/role-cards/match-card.d.ts +21 -0
  68. package/dist/agent/role-cards/match-card.d.ts.map +1 -0
  69. package/dist/agent/role-cards/match-card.js +30 -0
  70. package/dist/agent/role-cards/match-card.js.map +1 -0
  71. package/dist/agent/role-cards/offer-card.d.ts +27 -0
  72. package/dist/agent/role-cards/offer-card.d.ts.map +1 -0
  73. package/dist/agent/role-cards/offer-card.js +68 -0
  74. package/dist/agent/role-cards/offer-card.js.map +1 -0
  75. package/dist/agent/role-cards/opportunity-card.d.ts +26 -0
  76. package/dist/agent/role-cards/opportunity-card.d.ts.map +1 -0
  77. package/dist/agent/role-cards/opportunity-card.js +50 -0
  78. package/dist/agent/role-cards/opportunity-card.js.map +1 -0
  79. package/dist/agent/role-cards/product-card.d.ts +32 -0
  80. package/dist/agent/role-cards/product-card.d.ts.map +1 -0
  81. package/dist/agent/role-cards/product-card.js +50 -0
  82. package/dist/agent/role-cards/product-card.js.map +1 -0
  83. package/dist/agent/role-cards/proposal-diff.d.ts +38 -0
  84. package/dist/agent/role-cards/proposal-diff.d.ts.map +1 -0
  85. package/dist/agent/role-cards/proposal-diff.js +74 -0
  86. package/dist/agent/role-cards/proposal-diff.js.map +1 -0
  87. package/dist/agent/role-cards/registry.d.ts +43 -0
  88. package/dist/agent/role-cards/registry.d.ts.map +1 -0
  89. package/dist/agent/role-cards/registry.js +46 -0
  90. package/dist/agent/role-cards/registry.js.map +1 -0
  91. package/dist/agent/role-cards/score-meter.d.ts +12 -0
  92. package/dist/agent/role-cards/score-meter.d.ts.map +1 -0
  93. package/dist/agent/role-cards/score-meter.js +17 -0
  94. package/dist/agent/role-cards/score-meter.js.map +1 -0
  95. package/dist/agent/role-cards/surface-links.d.ts +54 -0
  96. package/dist/agent/role-cards/surface-links.d.ts.map +1 -0
  97. package/dist/agent/role-cards/surface-links.js +149 -0
  98. package/dist/agent/role-cards/surface-links.js.map +1 -0
  99. package/dist/agent/role-cards/text-safety.d.ts +27 -0
  100. package/dist/agent/role-cards/text-safety.d.ts.map +1 -0
  101. package/dist/agent/role-cards/text-safety.js +77 -0
  102. package/dist/agent/role-cards/text-safety.js.map +1 -0
  103. package/dist/agent/schema.d.ts +10 -0
  104. package/dist/agent/schema.d.ts.map +1 -1
  105. package/dist/agent/schema.js +31 -3
  106. package/dist/agent/schema.js.map +1 -1
  107. package/dist/agent/states.d.ts +1 -0
  108. package/dist/agent/states.d.ts.map +1 -1
  109. package/dist/agent/states.js +1 -1
  110. package/dist/agent/states.js.map +1 -1
  111. package/dist/agent/thinking.d.ts +13 -4
  112. package/dist/agent/thinking.d.ts.map +1 -1
  113. package/dist/agent/thinking.js +15 -6
  114. package/dist/agent/thinking.js.map +1 -1
  115. package/dist/agent/thread-list.d.ts +45 -2
  116. package/dist/agent/thread-list.d.ts.map +1 -1
  117. package/dist/agent/thread-list.js +175 -8
  118. package/dist/agent/thread-list.js.map +1 -1
  119. package/dist/agent/thread-title.d.ts +46 -0
  120. package/dist/agent/thread-title.d.ts.map +1 -0
  121. package/dist/agent/thread-title.js +99 -0
  122. package/dist/agent/thread-title.js.map +1 -0
  123. package/dist/agent/tool-activity-model.d.ts +136 -0
  124. package/dist/agent/tool-activity-model.d.ts.map +1 -0
  125. package/dist/agent/tool-activity-model.js +288 -0
  126. package/dist/agent/tool-activity-model.js.map +1 -0
  127. package/dist/agent/tool-activity.d.ts +61 -0
  128. package/dist/agent/tool-activity.d.ts.map +1 -0
  129. package/dist/agent/tool-activity.js +199 -0
  130. package/dist/agent/tool-activity.js.map +1 -0
  131. package/dist/agent/tool-call-card.d.ts +11 -1
  132. package/dist/agent/tool-call-card.d.ts.map +1 -1
  133. package/dist/agent/tool-call-card.js +19 -4
  134. package/dist/agent/tool-call-card.js.map +1 -1
  135. package/dist/agent/ui.js +1 -1
  136. package/dist/agent/ui.js.map +1 -1
  137. package/dist/agent/use-motion.d.ts +15 -0
  138. package/dist/agent/use-motion.d.ts.map +1 -0
  139. package/dist/agent/use-motion.js +52 -0
  140. package/dist/agent/use-motion.js.map +1 -0
  141. package/dist/chat/use-stick-to-bottom.d.ts +5 -0
  142. package/dist/chat/use-stick-to-bottom.d.ts.map +1 -1
  143. package/dist/chat/use-stick-to-bottom.js +11 -1
  144. package/dist/chat/use-stick-to-bottom.js.map +1 -1
  145. package/dist/components/sheet.d.ts +3 -1
  146. package/dist/components/sheet.d.ts.map +1 -1
  147. package/dist/components/sheet.js +2 -2
  148. package/dist/components/sheet.js.map +1 -1
  149. package/dist/portfolio-import/import-job-panels.d.ts +6 -0
  150. package/dist/portfolio-import/import-job-panels.d.ts.map +1 -1
  151. package/dist/portfolio-import/import-job-panels.js +11 -4
  152. package/dist/portfolio-import/import-job-panels.js.map +1 -1
  153. package/dist/portfolio-import/job-error-copy.d.ts +62 -0
  154. package/dist/portfolio-import/job-error-copy.d.ts.map +1 -0
  155. package/dist/portfolio-import/job-error-copy.js +78 -0
  156. package/dist/portfolio-import/job-error-copy.js.map +1 -0
  157. package/dist/realtime/organisation-events/schemas.d.ts +2 -2
  158. package/package.json +4 -1
  159. package/src/theme/tokens.css +66 -0
@@ -0,0 +1,149 @@
1
+ import { LINK_MAX_LENGTH, LINK_PATTERN } from "@cellarnode/agent-cards/zod4";
2
+ /**
3
+ * Per surface, the routes the agents emit.
4
+ * - producer: an offer and what hangs off it, the organisation profile (where a registration or compliance document opens), the
5
+ * portfolio list and a product's pages;
6
+ * - importer: a producer's page, an offer, and the organisation profile (where the importer's own registration or compliance
7
+ * document opens: `get_org_document_link` emits it for an importer too);
8
+ * - e-label: everything under `/app` (its producer area), the app's own root included.
9
+ */
10
+ const SURFACE_RULES = {
11
+ producer: [
12
+ { prefix: "/offers", below: true },
13
+ { prefix: "/organisation/profile", self: true },
14
+ { prefix: "/portfolio", self: true, below: true },
15
+ ],
16
+ importer: [
17
+ { prefix: "/producers", below: true },
18
+ { prefix: "/offers", below: true },
19
+ { prefix: "/organisation/profile", self: true },
20
+ ],
21
+ elabel: [{ prefix: "/app", self: true, below: true }],
22
+ };
23
+ /** Printable ASCII only (U+0021 to U+007E): no control character, no space, nothing beyond ASCII. */
24
+ function isPrintableAscii(text) {
25
+ for (let i = 0; i < text.length; i++) {
26
+ const code = text.charCodeAt(i);
27
+ if (code < 0x21 || code > 0x7e)
28
+ return false;
29
+ }
30
+ return true;
31
+ }
32
+ /** One path segment: not a dot segment, and nothing an encoding could use to climb out or to smuggle a separator. */
33
+ function safeSegment(segment) {
34
+ if (segment === "")
35
+ return false;
36
+ let decoded;
37
+ try {
38
+ decoded = decodeURIComponent(segment);
39
+ }
40
+ catch {
41
+ return false; // a malformed escape
42
+ }
43
+ // A dot segment, raw or percent-encoded (`%2e%2e` decodes to `..`).
44
+ if (decoded === "." || decoded === "..")
45
+ return false;
46
+ if (/[/\\#?]/.test(decoded) || !isPrintableAscii(decoded))
47
+ return false;
48
+ // Still encoded after one round: a double encoding is never a plain id.
49
+ return !decoded.includes("%");
50
+ }
51
+ /** The segments of a clean internal path, or `null` when the path is not one (see the rules at the top of the file). */
52
+ function cleanSegments(path) {
53
+ if (typeof path !== "string" || path.length > LINK_MAX_LENGTH)
54
+ return null;
55
+ if (!LINK_PATTERN.test(path) || path.includes("?"))
56
+ return null;
57
+ const segments = path.slice(1).split("/");
58
+ return segments.every(safeSegment) ? segments : null;
59
+ }
60
+ const splitPrefix = (prefix) => prefix.slice(1).split("/");
61
+ function matches(segments, rule) {
62
+ const base = splitPrefix(rule.prefix);
63
+ if (segments.length < base.length || !base.every((seg, i) => segments[i] === seg))
64
+ return false;
65
+ return segments.length === base.length ? rule.self === true : rule.below === true;
66
+ }
67
+ /**
68
+ * `allowLink` for a host surface: true only for a clean internal path that is one of the routes the agents emit for that app, or
69
+ * sits at or below one of `extraPrefixes` (the host's own routes, e.g. `["/opportunities", "/matches"]`). A prefix matches on a
70
+ * whole segment: `/app` accepts `/app/portfolio` and not `/application`.
71
+ *
72
+ * Throws on an extra prefix that is not a clean path with at least one segment: that is a host bug, and a prefix like `/` would
73
+ * quietly allow every link.
74
+ */
75
+ export function createSurfaceAllowLink(surface, extraPrefixes = []) {
76
+ const own = Object.hasOwn(SURFACE_RULES, surface) ? SURFACE_RULES[surface] : undefined;
77
+ const extra = extraPrefixes.map((prefix) => {
78
+ if (cleanSegments(prefix) === null)
79
+ throw new Error(`Not a clean route prefix: ${prefix}`);
80
+ return { prefix, self: true, below: true };
81
+ });
82
+ // An unknown surface (a cast, a surface added later) has no routes of its own: it links to nothing but what the host adds.
83
+ const rules = [...(own ?? []), ...extra];
84
+ return (path) => {
85
+ const segments = cleanSegments(path);
86
+ return segments !== null && rules.some((rule) => matches(segments, rule));
87
+ };
88
+ }
89
+ /** The portfolio routes (`portfolio`, `portfolio/<id>`, `portfolio/<id>/products/<id>[/gallery]`), the same in the producer and the e-label app. */
90
+ function portfolioKind(segments) {
91
+ if (segments[2] !== "products" || segments.length < 4)
92
+ return "portfolio";
93
+ return segments[4] === "gallery" ? "productGallery" : "product";
94
+ }
95
+ /**
96
+ * The kind of page a clean internal path opens, or `undefined` for a path that is not clean or not one of the routes the agents
97
+ * emit (a route the host added through `extraPrefixes`). Reads only the path, so it names a link the same way on every surface.
98
+ * Under `/app` (the e-label app) the page is named by the segment after it: `/app/portfolio/...` is a portfolio page, `/app/labels/...`
99
+ * a label, `/app/imports/...` an import, `/app` itself the app's home, and anything else just "a page of the e-label app".
100
+ */
101
+ export function agentLinkKind(path) {
102
+ const segments = cleanSegments(path);
103
+ if (segments === null)
104
+ return undefined;
105
+ switch (segments[0]) {
106
+ case "app": {
107
+ const inner = segments.slice(1);
108
+ switch (inner[0]) {
109
+ case undefined:
110
+ return "elabelHome";
111
+ case "portfolio":
112
+ return portfolioKind(inner);
113
+ case "labels":
114
+ return "labels";
115
+ case "imports":
116
+ return "imports";
117
+ default:
118
+ return "elabel";
119
+ }
120
+ }
121
+ case "offers":
122
+ return "offer";
123
+ case "producers":
124
+ return "producer";
125
+ case "portfolio":
126
+ return portfolioKind(segments);
127
+ case "organisation":
128
+ return segments.length === 2 && segments[1] === "profile" ? "organisation" : undefined;
129
+ default:
130
+ return undefined;
131
+ }
132
+ }
133
+ const SURFACE_THIRD_PARTY_COLUMNS = {
134
+ producer: ["counterpartyFile"],
135
+ importer: ["counterpartyFile", "producerFile", "producerBeverage"],
136
+ elabel: [],
137
+ };
138
+ /**
139
+ * Per surface, the `DataTable` column keys whose text someone else wrote, as the cellarnode-mcp agents name them: the key says who
140
+ * wrote the column. `counterpartyFile` is the other side's offer file, `producerFile` and `producerBeverage` are a producer's public
141
+ * documents and beverages as an importer sees them; `file` is the caller's own document or attachment and is not listed. Pass the
142
+ * result as `thirdPartyColumns` (`DEFAULT_THIRD_PARTY_COLUMNS` already quotes these keys on every surface). An unknown surface gets none.
143
+ */
144
+ export function surfaceThirdPartyColumns(surface) {
145
+ return Object.hasOwn(SURFACE_THIRD_PARTY_COLUMNS, surface)
146
+ ? SURFACE_THIRD_PARTY_COLUMNS[surface]
147
+ : [];
148
+ }
149
+ //# sourceMappingURL=surface-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface-links.js","sourceRoot":"","sources":["../../../src/agent/role-cards/surface-links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @internal Text from a record or a card is untrusted: it may carry bidi overrides, zero-width characters or control characters
3
+ * that reorder, hide or split what a person reads, and it may be arbitrarily long. These are the one place that cleans and
4
+ * bounds it (CEL-2445 host contract, CEL-2487).
5
+ */
6
+ /**
7
+ * Code points that may reorder, hide or split what a person reads: C0/DEL controls, line/paragraph separators, the Arabic letter
8
+ * mark (U+061C), zero-width and direction marks (U+200B-200F), bidi embeddings and overrides (U+202A-202E), word joiner,
9
+ * invisible operators, bidi isolates and the deprecated format characters (U+2060-206F), interlinear annotation marks
10
+ * (U+FFF9-FFFB), the BOM, and the invisible "tag" characters (U+E0000-E007F) that can carry a hidden message through a copy and paste.
11
+ */
12
+ export declare const isUnsafeChar: (code: number) => boolean;
13
+ /** `text` without its bidirectional controls (see above). Nothing else is touched: a joiner inside an emoji or a Persian word stays. */
14
+ export declare const stripBidi: (text: string) => string;
15
+ export declare const stripBidiRuns: (text: string) => string;
16
+ /** Every unsafe character becomes a space (so nothing is silently joined into a different word). Walks by code point. */
17
+ export declare function replaceUnsafe(raw: string): string;
18
+ /** The first `max` code points of `text`, never splitting a surrogate pair; `ellipsis` marks a cut. Linear in `max`, not in the text. */
19
+ export declare function clipCodePoints(text: string, max: number, ellipsis?: boolean): string;
20
+ /**
21
+ * Short, single-line text (a label, a title): unsafe characters out, whitespace collapsed, clipped to `max` code points.
22
+ * `undefined` when nothing readable is left.
23
+ */
24
+ export declare function cleanInline(raw: unknown, max: number, ellipsis?: boolean): string | undefined;
25
+ /** A value shown as body text: unsafe characters out, clipped to `max` code points with an ellipsis. */
26
+ export declare function cleanValue(raw: string, max: number): string;
27
+ //# sourceMappingURL=text-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-safety.d.ts","sourceRoot":"","sources":["../../../src/agent/role-cards/text-safety.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAWN,CAAC;AAUvC,wIAAwI;AACxI,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAyC,CAAC;AAQnF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAA6C,CAAC;AAE3F,yHAAyH;AACzH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,yIAAyI;AACzI,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAWlF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,GAAG,SAAS,CAO3F;AAED,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3D"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @internal Text from a record or a card is untrusted: it may carry bidi overrides, zero-width characters or control characters
3
+ * that reorder, hide or split what a person reads, and it may be arbitrarily long. These are the one place that cleans and
4
+ * bounds it (CEL-2445 host contract, CEL-2487).
5
+ */
6
+ /**
7
+ * Code points that may reorder, hide or split what a person reads: C0/DEL controls, line/paragraph separators, the Arabic letter
8
+ * mark (U+061C), zero-width and direction marks (U+200B-200F), bidi embeddings and overrides (U+202A-202E), word joiner,
9
+ * invisible operators, bidi isolates and the deprecated format characters (U+2060-206F), interlinear annotation marks
10
+ * (U+FFF9-FFFB), the BOM, and the invisible "tag" characters (U+E0000-E007F) that can carry a hidden message through a copy and paste.
11
+ */
12
+ export const isUnsafeChar = (code) => code < 32 ||
13
+ code === 127 ||
14
+ code === 0x061c ||
15
+ (code >= 0x200b && code <= 0x200f) ||
16
+ code === 0x2028 ||
17
+ code === 0x2029 ||
18
+ (code >= 0x202a && code <= 0x202e) ||
19
+ (code >= 0x2060 && code <= 0x206f) ||
20
+ code === 0xfeff ||
21
+ (code >= 0xfff9 && code <= 0xfffb) ||
22
+ (code >= 0xe0000 && code <= 0xe007f);
23
+ /**
24
+ * Bidirectional controls: the Arabic letter mark (U+061C), the left-to-right and right-to-left marks (U+200E, U+200F), the
25
+ * embeddings and overrides (U+202A-202E) and the isolates (U+2066-2069). One of these in a label can reverse or reorder it, and
26
+ * an override left open (U+202E) carries on into whatever is drawn after it, so a label shown beside text of the lib's own
27
+ * (a link's host) is stripped of them.
28
+ */
29
+ const BIDI_CONTROLS = /[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g;
30
+ /** `text` without its bidirectional controls (see above). Nothing else is touched: a joiner inside an emoji or a Persian word stays. */
31
+ export const stripBidi = (text) => text.replace(BIDI_CONTROLS, "");
32
+ /**
33
+ * The embeddings, overrides and isolates only (U+202A to U+202E, U+2066 to U+2069): the controls that open a run whose direction
34
+ * outlasts the character, so one in plain text can reorder everything drawn after it. The marks (U+200E, U+200F, U+061C) are
35
+ * weak: they cannot reorder a run, and right-to-left prose needs them, so a paragraph keeps them.
36
+ */
37
+ const BIDI_RUN_CONTROLS = /[\u202A-\u202E\u2066-\u2069]/g;
38
+ export const stripBidiRuns = (text) => text.replace(BIDI_RUN_CONTROLS, "");
39
+ /** Every unsafe character becomes a space (so nothing is silently joined into a different word). Walks by code point. */
40
+ export function replaceUnsafe(raw) {
41
+ return Array.from(raw, (ch) => (isUnsafeChar(ch.codePointAt(0) ?? 0) ? " " : ch)).join("");
42
+ }
43
+ /** The first `max` code points of `text`, never splitting a surrogate pair; `ellipsis` marks a cut. Linear in `max`, not in the text. */
44
+ export function clipCodePoints(text, max, ellipsis = false) {
45
+ if (text.length <= max)
46
+ return text;
47
+ let units = 0;
48
+ let count = 0;
49
+ for (const ch of text) {
50
+ if (count === max)
51
+ break;
52
+ units += ch.length;
53
+ count += 1;
54
+ }
55
+ if (units >= text.length)
56
+ return text;
57
+ return ellipsis ? `${text.slice(0, units)}…` : text.slice(0, units);
58
+ }
59
+ /**
60
+ * Short, single-line text (a label, a title): unsafe characters out, whitespace collapsed, clipped to `max` code points.
61
+ * `undefined` when nothing readable is left.
62
+ */
63
+ export function cleanInline(raw, max, ellipsis = false) {
64
+ if (typeof raw !== "string")
65
+ return undefined;
66
+ // Bound the work first: a megabyte of text must not cost a megabyte of cleaning to show 80 characters of it.
67
+ const clean = replaceUnsafe(clipCodePoints(raw, max * 4))
68
+ .replace(/\s+/g, " ")
69
+ .trim();
70
+ return clean === "" ? undefined : clipCodePoints(clean, max, ellipsis);
71
+ }
72
+ /** A value shown as body text: unsafe characters out, clipped to `max` code points with an ellipsis. */
73
+ export function cleanValue(raw, max) {
74
+ const clipped = clipCodePoints(raw, max, true);
75
+ return replaceUnsafe(clipped);
76
+ }
77
+ //# sourceMappingURL=text-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-safety.js","sourceRoot":"","sources":["../../../src/agent/role-cards/text-safety.ts"],"names":[],"mappings":"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"}
@@ -127,6 +127,7 @@ export declare const ToolCallSchema: z.ZodObject<{
127
127
  failed: "failed";
128
128
  succeeded: "succeeded";
129
129
  retrying: "retrying";
130
+ cancelled: "cancelled";
130
131
  }>;
131
132
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
132
133
  masked: z.ZodLiteral<true>;
@@ -134,6 +135,7 @@ export declare const ToolCallSchema: z.ZodObject<{
134
135
  }, z.core.$strip>]>>>;
135
136
  durationMs: z.ZodOptional<z.ZodNumber>;
136
137
  resultSummary: z.ZodOptional<z.ZodString>;
138
+ result: z.ZodOptional<z.ZodUnknown>;
137
139
  error: z.ZodOptional<z.ZodString>;
138
140
  }, z.core.$strip>;
139
141
  export type AgentToolCall = z.infer<typeof ToolCallSchema>;
@@ -154,6 +156,7 @@ export declare const MessagePartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
154
156
  failed: "failed";
155
157
  succeeded: "succeeded";
156
158
  retrying: "retrying";
159
+ cancelled: "cancelled";
157
160
  }>;
158
161
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
159
162
  masked: z.ZodLiteral<true>;
@@ -161,6 +164,7 @@ export declare const MessagePartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
161
164
  }, z.core.$strip>]>>>;
162
165
  durationMs: z.ZodOptional<z.ZodNumber>;
163
166
  resultSummary: z.ZodOptional<z.ZodString>;
167
+ result: z.ZodOptional<z.ZodUnknown>;
164
168
  error: z.ZodOptional<z.ZodString>;
165
169
  }, z.core.$strip>;
166
170
  }, z.core.$strip>, z.ZodObject<{
@@ -222,6 +226,7 @@ export declare const MessagePartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
222
226
  type: z.ZodLiteral<"card">;
223
227
  cardType: z.ZodString;
224
228
  data: z.ZodUnknown;
229
+ forCallId: z.ZodOptional<z.ZodString>;
225
230
  }, z.core.$strip>], "type">;
226
231
  export type AgentMessagePart = z.infer<typeof MessagePartSchema>;
227
232
  export declare const MessageSchema: z.ZodObject<{
@@ -247,6 +252,7 @@ export declare const MessageSchema: z.ZodObject<{
247
252
  failed: "failed";
248
253
  succeeded: "succeeded";
249
254
  retrying: "retrying";
255
+ cancelled: "cancelled";
250
256
  }>;
251
257
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
252
258
  masked: z.ZodLiteral<true>;
@@ -254,6 +260,7 @@ export declare const MessageSchema: z.ZodObject<{
254
260
  }, z.core.$strip>]>>>;
255
261
  durationMs: z.ZodOptional<z.ZodNumber>;
256
262
  resultSummary: z.ZodOptional<z.ZodString>;
263
+ result: z.ZodOptional<z.ZodUnknown>;
257
264
  error: z.ZodOptional<z.ZodString>;
258
265
  }, z.core.$strip>;
259
266
  }, z.core.$strip>, z.ZodObject<{
@@ -315,6 +322,7 @@ export declare const MessageSchema: z.ZodObject<{
315
322
  type: z.ZodLiteral<"card">;
316
323
  cardType: z.ZodString;
317
324
  data: z.ZodUnknown;
325
+ forCallId: z.ZodOptional<z.ZodString>;
318
326
  }, z.core.$strip>], "type">>;
319
327
  streaming: z.ZodOptional<z.ZodBoolean>;
320
328
  stopped: z.ZodOptional<z.ZodBoolean>;
@@ -337,6 +345,8 @@ export declare const ThreadSchema: z.ZodObject<{
337
345
  title: z.ZodString;
338
346
  updatedAt: z.ZodString;
339
347
  preview: z.ZodOptional<z.ZodString>;
348
+ firstMessage: z.ZodOptional<z.ZodString>;
349
+ titlePending: z.ZodOptional<z.ZodBoolean>;
340
350
  }, z.core.$strip>;
341
351
  export type AgentThread = z.infer<typeof ThreadSchema>;
342
352
  export declare const ReadinessGapSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,yGAAyG;AACzG,eAAO,MAAM,YAAY;;;iBAA6D,CAAC;AACvF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,eAAe;;;mBAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,MAA2C,CAAC;AAEvF,eAAO,MAAM,UAAU;;;;;EAA0D,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,eAAe;;;;;;;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,eAAO,MAAM,oBAAoB;;;;;;;;;;EAU/B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;iBAMrB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBASzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAO5B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE7D,eAAO,MAAM,wBAAwB;;;;;;;;;EASnC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB7B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,yGAAyG;AACzG,eAAO,MAAM,YAAY;;;iBAA6D,CAAC;AACvF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,eAAe;;;mBAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,MAA2C,CAAC;AAEvF,eAAO,MAAM,UAAU;;;;;EAA0D,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,eAAe;;;;;;;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,eAAO,MAAM,oBAAoB;;;;;;;;;;EAU/B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;iBAMrB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBAuBzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAgB5B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE7D,eAAO,MAAM,wBAAwB;;;;;;;;;EASnC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,YAAY;;;;;;;iBAUvB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB7B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -77,11 +77,25 @@ export const StepSchema = z.object({
77
77
  export const ToolCallSchema = z.object({
78
78
  id: z.string(),
79
79
  name: z.string(),
80
- status: z.enum(["pending", "running", "succeeded", "failed", "retrying"]),
80
+ /**
81
+ * `cancelled` is ONLY a call the user stopped (they pressed Stop). Anything else that left a call unfinished (a broken stream, a run error,
82
+ * a timeout) stays `failed`, because the detail line for `cancelled` is fixed copy and would call a real failure a calm Stop. It is the opposite of `failed`, a call that
83
+ * errored: it is shown as stopped in a neutral tone, never as an error, and has no Retry.
84
+ */
85
+ status: z.enum(["pending", "running", "succeeded", "failed", "retrying", "cancelled"]),
81
86
  /** Already redacted by the BFF. Masked entries are marked. */
82
87
  args: z.record(z.string(), CellValueSchema).optional(),
83
88
  durationMs: z.number().optional(),
84
89
  resultSummary: z.string().optional(),
90
+ /**
91
+ * The call's result for the activity row's preview: parsed JSON, or text. Shown as given (at most 20,000 characters), so the
92
+ * host REDACTS it exactly as it redacts `args`: a masked cell is `{ masked: true, display }`, never the raw value. The
93
+ * model-facing envelope (`{"untrusted":true,"source":"...","data":...}`) is unwrapped before display (only when it says
94
+ * `untrusted: true`), so the host can pass the tool output as it received it, once redacted. Bounded by the host: the row shows
95
+ * 20 lines and a "show all". When absent the preview falls back to `resultSummary`, which hosts usually truncate, so a long
96
+ * result is only readable with `result`.
97
+ */
98
+ result: z.unknown().optional(),
85
99
  error: z.string().optional(),
86
100
  });
87
101
  export const MessagePartSchema = z.discriminatedUnion("type", [
@@ -89,8 +103,17 @@ export const MessagePartSchema = z.discriminatedUnion("type", [
89
103
  z.object({ type: z.literal("thinking"), summary: z.string() }),
90
104
  z.object({ type: z.literal("toolCall"), call: ToolCallSchema }),
91
105
  z.object({ type: z.literal("approval"), approval: ApprovalSchema }),
92
- /** A host-rendered domain card (admin OrgCard etc.). The host owns `cardType`. */
93
- z.object({ type: z.literal("card"), cardType: z.string(), data: z.unknown() }),
106
+ /**
107
+ * A host-rendered domain card (admin OrgCard etc.). The host owns `cardType`. `forCallId` names the tool call whose
108
+ * data the card shows; the activity row then marks that step "shown below" and collapses its preview. Without it the
109
+ * row assumes a card shows the successful calls before it in the same message (`cardCoversCall` overrides).
110
+ */
111
+ z.object({
112
+ type: z.literal("card"),
113
+ cardType: z.string(),
114
+ data: z.unknown(),
115
+ forCallId: z.string().optional(),
116
+ }),
94
117
  ]);
95
118
  export const MessageSchema = z.object({
96
119
  id: z.string(),
@@ -112,9 +135,14 @@ export const ConversationStatusSchema = z.enum([
112
135
  ]);
113
136
  export const ThreadSchema = z.object({
114
137
  id: z.string(),
138
+ /** May be empty: a conversation is named by the service after its first reply, or by the user. */
115
139
  title: z.string(),
116
140
  updatedAt: z.string(),
117
141
  preview: z.string().optional(),
142
+ /** The first thing the user asked. With no `title` the list shows its first words as the conversation's name. */
143
+ firstMessage: z.string().optional(),
144
+ /** The first run just finished and the service is still choosing a title: the row shows a "Naming…" placeholder. */
145
+ titlePending: z.boolean().optional(),
118
146
  });
119
147
  export const ReadinessGapSchema = z.object({
120
148
  path: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export interface AgentErrorCopy {
32
32
  refetch: string;
33
33
  signIn: string;
34
34
  }
35
+ export declare const ERROR_COPY: AgentErrorCopy;
35
36
  export interface AgentErrorProps {
36
37
  kind: AgentErrorKind;
37
38
  /** Action for the kind: retry (generic/unavailable), refetch (interrupted), sign in (authExpired). */
@@ -1 +1 @@
1
- {"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAC9B,OAAqB,EACrB,WAAgB,EAChB,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,2CAmCtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAsCD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,2CAqC9E"}
1
+ {"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAC9B,OAAqB,EACrB,WAAgB,EAChB,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,2CAmCtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,eAAO,MAAM,UAAU,EAAE,cAiBxB,CAAC;AAoBF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,2CAqC9E"}
@@ -17,7 +17,7 @@ export function AgentEmptyState({ variant = "first-run", suggestions = [], onSug
17
17
  const noThreads = variant === "no-threads";
18
18
  return (_jsx(EmptyState, { tone: "brand", icon: _jsx(MessageSquareText, { "aria-hidden": true, className: "size-5" }), headline: noThreads ? c.noThreadsHeadline : c.headline, description: noThreads ? c.noThreadsDescription : c.description, entranceMotion: false, actions: !noThreads && suggestions.length > 0 ? (_jsx("div", { role: "group", "aria-label": c.suggestionsLabel, className: "flex flex-wrap justify-center gap-2", children: suggestions.map((s) => (_jsx("button", { type: "button", onClick: () => onSuggestion?.(s), className: cn("rounded-full bg-muted px-3 py-1.5 text-sm/5 text-foreground transition-colors duration-[var(--duration-micro)] hover:bg-muted/70", focusRing), children: s }, s))) })) : undefined }));
19
19
  }
20
- const ERROR_COPY = {
20
+ export const ERROR_COPY = {
21
21
  genericTitle: "Something went wrong",
22
22
  genericBody: "The request did not complete. Nothing was changed.",
23
23
  interruptedTitle: "Run interrupted",
@@ -1 +1 @@
1
- {"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"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"}
@@ -1,14 +1,23 @@
1
+ import { type AgentToolNaming } from "./tool-activity-model.js";
1
2
  export interface AgentThinkingCopy {
2
3
  working: string;
4
+ /** The seconds so far, with its separator: `{seconds}` ("· 3s"). Hidden from assistive tech. */
3
5
  elapsed: string;
4
6
  }
5
- export interface AgentThinkingProps {
6
- /** One-line summary of what the agent is doing. Raw model reasoning is never shown. */
7
+ export interface AgentThinkingProps extends AgentToolNaming {
8
+ /**
9
+ * One-line summary of what the agent is doing. Raw model reasoning is never shown. A tool name
10
+ * (`admin_get_mcp_overview`) is shown in words ("Checking MCP overview").
11
+ */
7
12
  label?: string;
13
+ /** Host clock. Without it the indicator counts the seconds itself, from when it appeared. */
8
14
  elapsedMs?: number;
9
15
  copy?: Partial<AgentThinkingCopy>;
10
16
  className?: string;
11
17
  }
12
- /** @internal Status line: the orb as the single ambient mark plus a one-line summary. */
13
- export declare function AgentThinking({ label, elapsedMs, copy, className }: AgentThinkingProps): import("react/jsx-runtime").JSX.Element;
18
+ /**
19
+ * @internal Status line: the orb as the single ambient mark, a one-line summary and the seconds so far ("Thinking · 3s"). The
20
+ * count is hidden from assistive tech, so the live region says the label once rather than every second.
21
+ */
22
+ export declare function AgentThinking({ label, elapsedMs, toolLabels, formatToolLabel, cardLabels, toolWording, copy, className, }: AgentThinkingProps): import("react/jsx-runtime").JSX.Element;
14
23
  //# sourceMappingURL=thinking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking.d.ts","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CAiBtF"}
1
+ {"version":3,"file":"thinking.d.ts","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,IAAI,EACJ,SAAS,GACV,EAAE,kBAAkB,2CAuBpB"}
@@ -1,12 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
2
3
  import { AgenticOrb } from "../agentic-orb/index.js";
3
4
  import { cn } from "../lib/utils.js";
4
- import { useCopy } from "./copy.js";
5
- const DEFAULT_COPY = { working: "Working", elapsed: "{seconds}s" };
6
- /** @internal Status line: the orb as the single ambient mark plus a one-line summary. */
7
- export function AgentThinking({ label, elapsedMs, copy, className }) {
5
+ import { fmt, useCopy } from "./copy.js";
6
+ import { createToolNamer } from "./tool-activity-model.js";
7
+ import { useElapsedSeconds } from "./use-motion.js";
8
+ const DEFAULT_COPY = { working: "Thinking", elapsed: "· {seconds}s" };
9
+ /**
10
+ * @internal Status line: the orb as the single ambient mark, a one-line summary and the seconds so far ("Thinking · 3s"). The
11
+ * count is hidden from assistive tech, so the live region says the label once rather than every second.
12
+ */
13
+ export function AgentThinking({ label, elapsedMs, toolLabels, formatToolLabel, cardLabels, toolWording, copy, className, }) {
8
14
  const c = useCopy(DEFAULT_COPY, copy);
9
- const text = label ?? c.working;
10
- return (_jsxs("div", { role: "status", className: cn("flex items-center gap-2 text-sm/5 text-muted-foreground", className), children: [_jsx(AgenticOrb, { state: "thinking", size: 28, label: "" }), _jsx("span", { children: text }), elapsedMs !== undefined && (_jsx("span", { className: "tabular-nums text-xs/4", children: c.elapsed.replace("{seconds}", String(Math.floor(elapsedMs / 1000))) }))] }));
15
+ const namer = useMemo(() => createToolNamer({ toolLabels, formatToolLabel, cardLabels, toolWording }), [toolLabels, formatToolLabel, cardLabels, toolWording]);
16
+ const ticked = useElapsedSeconds(elapsedMs === undefined);
17
+ const seconds = elapsedMs === undefined ? ticked : Math.floor(elapsedMs / 1000);
18
+ const text = label ? namer.tool(label, "active") : c.working;
19
+ return (_jsxs("div", { role: "status", className: cn("flex items-center gap-2 text-sm/5 text-muted-foreground", className), children: [_jsx(AgenticOrb, { state: "thinking", size: 28, label: "" }), _jsx("span", { children: text }), seconds > 0 && (_jsx("span", { "aria-hidden": true, className: "text-xs/4 tabular-nums", children: fmt(c.elapsed, { seconds }) }))] }));
11
20
  }
12
21
  //# sourceMappingURL=thinking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMjC,MAAM,YAAY,GAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAUtF,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAsB;IACrF,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,yDAAyD,EAAE,SAAS,CAAC,aAEnF,KAAC,UAAU,IAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,EAAE,GAAG,EAClD,yBAAO,IAAI,GAAQ,EAClB,SAAS,KAAK,SAAS,IAAI,CAC1B,eAAM,SAAS,EAAC,wBAAwB,YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAChE,CACR,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOjD,MAAM,YAAY,GAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAczF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,IAAI,EACJ,SAAS,GACU;IACnB,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAC/E,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CACvD,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,yDAAyD,EAAE,SAAS,CAAC,aAEnF,KAAC,UAAU,IAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,EAAE,GAAG,EAClD,yBAAO,IAAI,GAAQ,EAClB,OAAO,GAAG,CAAC,IAAI,CACd,oCAAkB,SAAS,EAAC,wBAAwB,YACjD,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,GACvB,CACR,IACG,CACP,CAAC;AACJ,CAAC"}