@tangle-network/agent-app 0.45.32 → 0.45.34
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.
- package/dist/{DesignCanvas-RSWQCXM3.js → DesignCanvas-EODMDQMT.js} +2 -2
- package/dist/{DesignCanvasEditor-XZMGIST7.js → DesignCanvasEditor-DRRZ6ZD3.js} +4 -4
- package/dist/{InvitationsPanel-CJ7DR4F7.js → InvitationsPanel-BATXZHY4.js} +2 -2
- package/dist/{MembersPanel-BB4OD2KB.js → MembersPanel-XNLF3SA4.js} +2 -2
- package/dist/agent-session-controls-1q1XR3j8.d.ts +257 -0
- package/dist/assistant/index.d.ts +1 -1
- package/dist/assistant/index.js +11 -10
- package/dist/assistant/index.js.map +1 -1
- package/dist/chat-react/index.d.ts +1 -1
- package/dist/chat-react/index.js +1 -1
- package/dist/{chunk-YIQHOAHN.js → chunk-3UBAO3N5.js} +3 -3
- package/dist/{chunk-YIQHOAHN.js.map → chunk-3UBAO3N5.js.map} +1 -1
- package/dist/{chunk-PURHUAOR.js → chunk-556RB3XI.js} +5 -5
- package/dist/chunk-556RB3XI.js.map +1 -0
- package/dist/{chunk-HZ4WCA37.js → chunk-5MZXWPFN.js} +9 -9
- package/dist/chunk-5MZXWPFN.js.map +1 -0
- package/dist/{chunk-FNM7JYME.js → chunk-5N434BGF.js} +17 -17
- package/dist/chunk-5N434BGF.js.map +1 -0
- package/dist/{chunk-5SXS3YAB.js → chunk-7MV23XBW.js} +2 -2
- package/dist/chunk-7MV23XBW.js.map +1 -0
- package/dist/{chunk-IFYJDX3J.js → chunk-AIHKKLKY.js} +47 -46
- package/dist/chunk-AIHKKLKY.js.map +1 -0
- package/dist/{chunk-S564OFTL.js → chunk-F4XLTVQ3.js} +3 -3
- package/dist/{chunk-S564OFTL.js.map → chunk-F4XLTVQ3.js.map} +1 -1
- package/dist/{chunk-LSQR6HM6.js → chunk-IN6LNZ7O.js} +35 -34
- package/dist/chunk-IN6LNZ7O.js.map +1 -0
- package/dist/chunk-MIZMWCKW.js +904 -0
- package/dist/chunk-MIZMWCKW.js.map +1 -0
- package/dist/{chunk-QGOU3VXH.js → chunk-UXRJAUJL.js} +3 -3
- package/dist/design-canvas-react/index.js +8 -8
- package/dist/design-canvas-react/index.js.map +1 -1
- package/dist/design-canvas-react/lazy.js +1 -1
- package/dist/studio-react/index.js +27 -27
- package/dist/studio-react/index.js.map +1 -1
- package/dist/teams-react/index.js +2 -2
- package/dist/teams-react/lazy.js +2 -2
- package/dist/theme/index.js +1 -1
- package/dist/theme/tailwind-preset.d.ts +5 -1
- package/dist/theme/tailwind-preset.js +11 -2
- package/dist/theme/tailwind-preset.js.map +1 -1
- package/dist/theme/tokens.css +126 -79
- package/dist/web-react/async/index.js +1 -1
- package/dist/web-react/index.d.ts +31 -91
- package/dist/web-react/index.js +13 -3
- package/dist/work-product-react/index.js +3 -3
- package/dist/work-product-react/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/agent-session-controls-BwImzYKC.d.ts +0 -129
- package/dist/chunk-5SXS3YAB.js.map +0 -1
- package/dist/chunk-FNM7JYME.js.map +0 -1
- package/dist/chunk-HZ4WCA37.js.map +0 -1
- package/dist/chunk-IFYJDX3J.js.map +0 -1
- package/dist/chunk-L7FHRORY.js +0 -763
- package/dist/chunk-L7FHRORY.js.map +0 -1
- package/dist/chunk-LSQR6HM6.js.map +0 -1
- package/dist/chunk-PURHUAOR.js.map +0 -1
- /package/dist/{DesignCanvas-RSWQCXM3.js.map → DesignCanvas-EODMDQMT.js.map} +0 -0
- /package/dist/{DesignCanvasEditor-XZMGIST7.js.map → DesignCanvasEditor-DRRZ6ZD3.js.map} +0 -0
- /package/dist/{InvitationsPanel-CJ7DR4F7.js.map → InvitationsPanel-BATXZHY4.js.map} +0 -0
- /package/dist/{MembersPanel-BB4OD2KB.js.map → MembersPanel-XNLF3SA4.js.map} +0 -0
- /package/dist/{chunk-QGOU3VXH.js.map → chunk-UXRJAUJL.js.map} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DesignCanvas
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5N434BGF.js";
|
|
4
4
|
import "./chunk-X5DQ5QOP.js";
|
|
5
5
|
import "./chunk-DRB77FYL.js";
|
|
6
6
|
import "./chunk-F7VH4G5C.js";
|
|
7
7
|
export {
|
|
8
8
|
DesignCanvas
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=DesignCanvas-
|
|
10
|
+
//# sourceMappingURL=DesignCanvas-EODMDQMT.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DesignCanvasEditor
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-556RB3XI.js";
|
|
4
|
+
import "./chunk-5N434BGF.js";
|
|
5
|
+
import "./chunk-IN6LNZ7O.js";
|
|
6
6
|
import "./chunk-OYTMILRK.js";
|
|
7
7
|
import "./chunk-X5DQ5QOP.js";
|
|
8
8
|
import "./chunk-DRB77FYL.js";
|
|
@@ -10,4 +10,4 @@ import "./chunk-F7VH4G5C.js";
|
|
|
10
10
|
export {
|
|
11
11
|
DesignCanvasEditor
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=DesignCanvasEditor-
|
|
13
|
+
//# sourceMappingURL=DesignCanvasEditor-DRRZ6ZD3.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
InvitationsPanel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MV23XBW.js";
|
|
4
4
|
import "./chunk-6XIAPIW6.js";
|
|
5
5
|
export {
|
|
6
6
|
InvitationsPanel
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=InvitationsPanel-
|
|
8
|
+
//# sourceMappingURL=InvitationsPanel-BATXZHY4.js.map
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { F as FileMention } from './wire-DOZ-O6hD.js';
|
|
4
|
+
import { Harness } from './harness/index.js';
|
|
5
|
+
import { CatalogModel } from './catalog/index.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* `useFileMentions` — the glue a host passes straight into `AgentComposer`'s
|
|
9
|
+
* `mention` prop (`@tangle-network/sandbox-ui#184`) to wire up `@`-file
|
|
10
|
+
* mentions against `createSandboxFileIndexRoute` (`/chat-routes`).
|
|
11
|
+
*
|
|
12
|
+
* Fetches the index once per session from `indexUrl`, refreshes it in the
|
|
13
|
+
* background whenever the popover opens (a `fetchItems` call) if the cached
|
|
14
|
+
* copy has aged past `refreshAfterMs`, and answers every keystroke from an
|
|
15
|
+
* in-memory fuzzy filter — no per-keystroke network round trip. The returned
|
|
16
|
+
* `refresh()` lets a caller force a re-fetch immediately instead of waiting
|
|
17
|
+
* on `refreshAfterMs` — e.g. right after the agent creates a file mid-session.
|
|
18
|
+
*
|
|
19
|
+
* `MentionItem`/the `mention` prop shape mirror the FROZEN contract from
|
|
20
|
+
* sandbox-ui#184 structurally (no import: `/web-react` stays dependency-free
|
|
21
|
+
* beyond React, and `@tangle-network/sandbox-ui` is an optional peer).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/** Mirrors sandbox-ui#184's `MentionItem` — the atomic pill's payload. For a
|
|
25
|
+
* file mention, `id` is the workspace-relative path (the pill's stable
|
|
26
|
+
* identity and the `@<id>` serialization sandbox-ui uses to round-trip
|
|
27
|
+
* `value`), `label` is the display name, and `detail` carries the full path
|
|
28
|
+
* for the popover row's secondary line. */
|
|
29
|
+
interface MentionItem {
|
|
30
|
+
id: string;
|
|
31
|
+
label: string;
|
|
32
|
+
detail?: string;
|
|
33
|
+
kind?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Mirrors sandbox-ui#184's `AgentComposerProps['mention']` shape — plug the
|
|
36
|
+
* hook's `mention` return value straight into that prop. */
|
|
37
|
+
interface ComposerMentionProp {
|
|
38
|
+
trigger?: string;
|
|
39
|
+
fetchItems(query: string): Promise<MentionItem[]>;
|
|
40
|
+
onMentionsChange?(mentions: MentionItem[]): void;
|
|
41
|
+
renderItem?(item: MentionItem): ReactNode;
|
|
42
|
+
emptyText?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Ranks `files` against `query` (case-insensitive), capped to `limit`:
|
|
46
|
+
* name-prefix matches first, then name-substring, then path-substring.
|
|
47
|
+
* Within a tier, shorter names sort first (the more specific match), then
|
|
48
|
+
* alphabetically by path for a stable order. An empty query returns the
|
|
49
|
+
* first `limit` entries unranked — the popover's default list before typing.
|
|
50
|
+
* Pure and dependency-free (no fuzzy-match library) so it's cheap enough to
|
|
51
|
+
* re-run on every keystroke against a 10k-entry index.
|
|
52
|
+
*/
|
|
53
|
+
declare function rankFileMentions(files: readonly FileMention[], query: string, limit: number): FileMention[];
|
|
54
|
+
/** Max popover results per query — enough to show a useful spread of matches
|
|
55
|
+
* without pushing the fuzzy-filtered list past what a popover can usefully
|
|
56
|
+
* render in one screen. */
|
|
57
|
+
declare const DEFAULT_MENTION_LIMIT = 20;
|
|
58
|
+
/** How long a `ready` index is served before a background refetch — long
|
|
59
|
+
* enough that a full session's worth of popover opens don't repeatedly hit
|
|
60
|
+
* the index endpoint, short enough that a stale listing doesn't linger too
|
|
61
|
+
* far past workspace file changes. Callers who need the index current right
|
|
62
|
+
* now (e.g. just after the agent creates a file) call `refresh()` instead of
|
|
63
|
+
* waiting on this window. */
|
|
64
|
+
declare const INDEX_REFRESH_AFTER_MS: number;
|
|
65
|
+
/** Popover empty-state copy for a `ready` index whose query matched nothing.
|
|
66
|
+
* Loading/warming/error states have their own copy — see `emptyTextFor`. */
|
|
67
|
+
declare const DEFAULT_MENTION_EMPTY_TEXT = "No matching files";
|
|
68
|
+
/** Define options for configuring file mention fetching, caching, and display behavior */
|
|
69
|
+
interface UseFileMentionsOptions {
|
|
70
|
+
/** GET endpoint returning `FileIndexResponse` (a `createSandboxFileIndexRoute`). */
|
|
71
|
+
indexUrl: string;
|
|
72
|
+
/** Max popover results per query. Default {@link DEFAULT_MENTION_LIMIT}. */
|
|
73
|
+
limit?: number;
|
|
74
|
+
/** How long a `ready` index is served without a background refetch.
|
|
75
|
+
* Default {@link INDEX_REFRESH_AFTER_MS}. */
|
|
76
|
+
refreshAfterMs?: number;
|
|
77
|
+
/** `fetch` override for tests / non-global-fetch hosts. Default `fetch`. */
|
|
78
|
+
fetchImpl?: typeof fetch;
|
|
79
|
+
/** Text shown in the popover's empty state once the index is loaded and
|
|
80
|
+
* the query matched nothing. Default {@link DEFAULT_MENTION_EMPTY_TEXT}. */
|
|
81
|
+
emptyText?: string;
|
|
82
|
+
}
|
|
83
|
+
/** Provide properties and methods to manage and refresh file mentions in a composer interface */
|
|
84
|
+
interface UseFileMentionsResult {
|
|
85
|
+
/** Spread straight into `AgentComposer`'s `mention` prop. */
|
|
86
|
+
mention: ComposerMentionProp;
|
|
87
|
+
/** The files currently referenced by mentions in the composer's value —
|
|
88
|
+
* the send-body list (map through `fileMentionsToParts`). */
|
|
89
|
+
mentions: FileMention[];
|
|
90
|
+
/** Drop all currently-referenced mentions (e.g. after a successful send). */
|
|
91
|
+
clearMentions: () => void;
|
|
92
|
+
/** Force a re-fetch of the index right now, ignoring `refreshAfterMs` — for
|
|
93
|
+
* example right after the agent creates a file mid-session, so the next
|
|
94
|
+
* popover open sees it. Dedupes against an already-in-flight load rather
|
|
95
|
+
* than firing a second request. */
|
|
96
|
+
refresh: () => Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
/** Resolve and manage file mention data with configurable fetching and state handling */
|
|
99
|
+
declare function useFileMentions(options: UseFileMentionsOptions): UseFileMentionsResult;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Keyboard + pointer model for a trigger-and-popover pair, dependency-free.
|
|
103
|
+
* Outside-mousedown and Escape both close; Escape also returns focus to the
|
|
104
|
+
* trigger so keyboard users aren't dropped at the top of the document. The
|
|
105
|
+
* returned `triggerProps` carry the ARIA contract (`aria-haspopup`/
|
|
106
|
+
* `aria-expanded`); spread them onto the trigger button.
|
|
107
|
+
*/
|
|
108
|
+
declare function usePopover(open: boolean, setOpen: (open: boolean) => void): {
|
|
109
|
+
containerRef: react.RefObject<HTMLDivElement | null>;
|
|
110
|
+
triggerRef: react.RefObject<HTMLButtonElement | null>;
|
|
111
|
+
triggerProps: {
|
|
112
|
+
ref: react.RefObject<HTMLButtonElement | null>;
|
|
113
|
+
'aria-haspopup': true;
|
|
114
|
+
'aria-expanded': boolean;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* The one overlay elevation for floating surfaces — picker menus, popovers,
|
|
119
|
+
* drawers, modals. The theme's `shadow-overlay` utility is landing with the
|
|
120
|
+
* token work; until it does, this is the composer's raised-card literal kept
|
|
121
|
+
* in a single place so every overlay paints the same shadow and the later
|
|
122
|
+
* token swap is a one-line edit (`shadow-overlay` here, `shadow-raised` on
|
|
123
|
+
* the composer card).
|
|
124
|
+
* TODO(theme): swap to `shadow-overlay` once the preset ships it.
|
|
125
|
+
*/
|
|
126
|
+
declare const OVERLAY_SHADOW = "shadow-[0_1px_2px_hsl(var(--foreground)/0.05),0_12px_28px_hsl(var(--foreground)/0.07)] dark:shadow-[0_1px_2px_hsl(var(--foreground)/0.14),0_12px_28px_hsl(var(--foreground)/0.22)]";
|
|
127
|
+
/**
|
|
128
|
+
* Guard an async action against double-submit. `run` ignores re-entrant calls
|
|
129
|
+
* while a promise is in flight and flips `pending` so the caller can disable
|
|
130
|
+
* the control — the fix for double-charge / double-approve on a slow network.
|
|
131
|
+
* Settles (success or throw) before clearing, and no-ops state updates after
|
|
132
|
+
* unmount.
|
|
133
|
+
*/
|
|
134
|
+
declare function usePending(): {
|
|
135
|
+
pending: boolean;
|
|
136
|
+
run: (action: () => void | Promise<void>) => void;
|
|
137
|
+
};
|
|
138
|
+
interface ModelPickerProps {
|
|
139
|
+
value: string;
|
|
140
|
+
onChange: (id: string) => void;
|
|
141
|
+
/** Catalogue models — from `GET`ing the app's catalogue route (see
|
|
142
|
+
* `runtime/model-catalog`), plus any product-specific entries appended. */
|
|
143
|
+
models: CatalogModel[];
|
|
144
|
+
loading?: boolean;
|
|
145
|
+
/** Render a provider logo/badge; default is a generic sparkle. */
|
|
146
|
+
renderProviderBadge?: (provider: string) => ReactNode;
|
|
147
|
+
/** Section label for `featured` models. */
|
|
148
|
+
recommendedLabel?: string;
|
|
149
|
+
/** Pin a labeled section to the TOP of the list (above Recommended) for the
|
|
150
|
+
* models a product wants surfaced first — e.g. a tuner app's own fine-tuned
|
|
151
|
+
* models (`{ label: 'Your Fine-Tuned Models', match: (m) => m.provider === 'tuner' }`).
|
|
152
|
+
* Matching models are shown only in this section, not duplicated below. */
|
|
153
|
+
priorityGroup?: {
|
|
154
|
+
label: string;
|
|
155
|
+
match: (model: CatalogModel) => boolean;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Searchable model picker pill + popover: a featured/recommended section
|
|
160
|
+
* first, then per-provider groups in catalogue order (the server already
|
|
161
|
+
* sorts providers by tier).
|
|
162
|
+
*
|
|
163
|
+
* This is the CANONICAL ecosystem model picker (see "UI chrome ownership
|
|
164
|
+
* (picker canon)" in AGENTS.md). sandbox-ui's `dashboard/ModelPicker` is
|
|
165
|
+
* legacy — deprecated, frozen, removed at sandbox-ui's next major; new code
|
|
166
|
+
* belongs here.
|
|
167
|
+
*/
|
|
168
|
+
declare function ModelPicker({ value, onChange, models, loading, renderProviderBadge, recommendedLabel, priorityGroup }: ModelPickerProps): react.JSX.Element;
|
|
169
|
+
/** One reasoning-budget level: the engine `id` is unchanged (the value the
|
|
170
|
+
* product sends to the loop); only the user-facing `label` is renamed to the
|
|
171
|
+
* plainer "how hard should it think" vocabulary from docs/product-surfaces.md.
|
|
172
|
+
* `low`→Quick, `medium`→Standard, `high`→Extended. The mapping is overridable
|
|
173
|
+
* via `EffortPickerProps.levels`, so a product can relabel without losing the
|
|
174
|
+
* ids the runtime expects. */
|
|
175
|
+
interface EffortLevel {
|
|
176
|
+
id: string;
|
|
177
|
+
label: string;
|
|
178
|
+
}
|
|
179
|
+
declare const DEFAULT_EFFORT_LEVELS: readonly EffortLevel[];
|
|
180
|
+
/** Segments the meter draws — fixed geometry so the ladder stays tabular
|
|
181
|
+
* across levels (and across the trigger and its menu rows). */
|
|
182
|
+
declare const EFFORT_METER_SEGMENTS = 4;
|
|
183
|
+
/**
|
|
184
|
+
* Filled-segment count for a level: 0 for off/none (or an id the levels list
|
|
185
|
+
* does not carry); otherwise the level's position among the non-off choices
|
|
186
|
+
* scaled onto the meter, so the ladder reads low < medium < high and the top
|
|
187
|
+
* level fills the whole scale. The canonical four levels land 0 / 1 / 2 / 4.
|
|
188
|
+
*/
|
|
189
|
+
declare function effortMeterFill(levelId: string, levels?: readonly EffortLevel[]): number;
|
|
190
|
+
/**
|
|
191
|
+
* The thinking-strength meter: four 12px bars, filled count = level, filled
|
|
192
|
+
* opacity ramping 25→100% left to right (unfilled at a faint ghost). Purely
|
|
193
|
+
* decorative — the level name is always rendered as text beside it, so the
|
|
194
|
+
* meter is `aria-hidden` and adds no second accessible name.
|
|
195
|
+
*/
|
|
196
|
+
declare function EffortMeter({ fill, className }: {
|
|
197
|
+
fill: number;
|
|
198
|
+
className?: string;
|
|
199
|
+
}): react.JSX.Element;
|
|
200
|
+
interface EffortPickerProps {
|
|
201
|
+
value: string;
|
|
202
|
+
onChange: (id: string) => void;
|
|
203
|
+
/** Selectable levels (engine id + user-facing label). Defaults to the plain
|
|
204
|
+
* "Thinking" vocabulary; override to relabel without changing the ids the
|
|
205
|
+
* runtime receives. */
|
|
206
|
+
levels?: readonly EffortLevel[];
|
|
207
|
+
/** Prefix shown before the active level on the pill — the "what is this"
|
|
208
|
+
* context the bare value lacked. Default "Thinking". Pass '' to hide it. */
|
|
209
|
+
label?: string;
|
|
210
|
+
}
|
|
211
|
+
/** Thinking-budget selector pill, styled to match {@link ModelPicker}. Show
|
|
212
|
+
* it only when the selected model `supportsReasoning`. "Thinking" is the
|
|
213
|
+
* plain-English name for what was internally called "effort".
|
|
214
|
+
*
|
|
215
|
+
* The CANONICAL ecosystem effort picker — sandbox-ui's reasoning menu (inside
|
|
216
|
+
* its `chat/AgentSessionControls`) is legacy and frozen. */
|
|
217
|
+
declare function EffortPicker({ value, onChange, levels, label }: EffortPickerProps): react.JSX.Element;
|
|
218
|
+
|
|
219
|
+
interface AgentSessionControlsProps {
|
|
220
|
+
/** Catalog models — canonical provider-prefixed ids. */
|
|
221
|
+
models: CatalogModel[];
|
|
222
|
+
modelsLoading?: boolean;
|
|
223
|
+
/** Selected canonical model id. */
|
|
224
|
+
model: string;
|
|
225
|
+
onModelChange(modelId: string): void;
|
|
226
|
+
/** Current harness; harness↔model coherence is enforced on every change. */
|
|
227
|
+
harness: Harness;
|
|
228
|
+
onHarnessChange(harness: Harness): void;
|
|
229
|
+
/** Harnesses to offer; defaults to the labeled set. */
|
|
230
|
+
availableHarnesses?: ReadonlyArray<Harness>;
|
|
231
|
+
/** Reasoning-effort value + setter. Shown only when the selected model
|
|
232
|
+
* `supportsReasoning`, matching `EffortPicker`'s guidance. */
|
|
233
|
+
effort: string;
|
|
234
|
+
onEffortChange(effort: string): void;
|
|
235
|
+
/**
|
|
236
|
+
* Levels to offer, forwarded verbatim to {@link EffortPicker}. Omit for the
|
|
237
|
+
* default vocabulary.
|
|
238
|
+
*
|
|
239
|
+
* A product whose backend applies only a SUBSET of the levels for the
|
|
240
|
+
* selected harness/model passes that subset here. Without it the strip
|
|
241
|
+
* offers every level and the backend silently ignores the ones it does not
|
|
242
|
+
* apply — a control that reports a choice the system never made.
|
|
243
|
+
*/
|
|
244
|
+
effortLevels?: readonly EffortLevel[];
|
|
245
|
+
/**
|
|
246
|
+
* `inline` (default): model, harness, effort side by side — the prior
|
|
247
|
+
* behavior. `compact`: model inline, harness + effort behind a gear popover.
|
|
248
|
+
*/
|
|
249
|
+
layout?: 'inline' | 'compact';
|
|
250
|
+
/** Hide the harness control entirely (single-harness products). */
|
|
251
|
+
showHarness?: boolean;
|
|
252
|
+
renderProviderBadge?: (provider: string) => ReactNode;
|
|
253
|
+
className?: string;
|
|
254
|
+
}
|
|
255
|
+
declare function AgentSessionControls(props: AgentSessionControlsProps): react.JSX.Element;
|
|
256
|
+
|
|
257
|
+
export { type AgentSessionControlsProps as A, type ComposerMentionProp as C, DEFAULT_EFFORT_LEVELS as D, EFFORT_METER_SEGMENTS as E, INDEX_REFRESH_AFTER_MS as I, type MentionItem as M, OVERLAY_SHADOW as O, type UseFileMentionsResult as U, AgentSessionControls as a, DEFAULT_MENTION_EMPTY_TEXT as b, DEFAULT_MENTION_LIMIT as c, type EffortLevel as d, EffortMeter as e, EffortPicker as f, type EffortPickerProps as g, ModelPicker as h, type ModelPickerProps as i, type UseFileMentionsOptions as j, effortMeterFill as k, usePending as l, usePopover as m, rankFileMentions as r, useFileMentions as u };
|
|
@@ -7,7 +7,7 @@ import '../plans/index.js';
|
|
|
7
7
|
import '../parts-BqIHMdyu.js';
|
|
8
8
|
import '../types-CCeYywdS.js';
|
|
9
9
|
import '../wire-DOZ-O6hD.js';
|
|
10
|
-
import '../agent-session-controls-
|
|
10
|
+
import '../agent-session-controls-1q1XR3j8.js';
|
|
11
11
|
import '../harness/index.js';
|
|
12
12
|
import '../catalog/index.js';
|
|
13
13
|
import '../agent-activity-C8ZG0F0M.js';
|
package/dist/assistant/index.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChatComposer,
|
|
3
3
|
ChatMessages
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-AIHKKLKY.js";
|
|
5
5
|
import "../chunk-FBVLEGEG.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-5MZXWPFN.js";
|
|
7
7
|
import "../chunk-GEYACSFW.js";
|
|
8
8
|
import {
|
|
9
9
|
ModelPicker,
|
|
10
|
+
OVERLAY_SHADOW,
|
|
10
11
|
ProviderLogo
|
|
11
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-MIZMWCKW.js";
|
|
12
13
|
import "../chunk-BATKJP3P.js";
|
|
13
14
|
import {
|
|
14
15
|
AsyncView
|
|
15
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-3UBAO3N5.js";
|
|
16
17
|
import "../chunk-PC2WYTK7.js";
|
|
17
18
|
import "../chunk-QY4BRKRJ.js";
|
|
18
19
|
import "../chunk-CCVG2TL6.js";
|
|
@@ -1781,7 +1782,7 @@ function AssistantHistory({
|
|
|
1781
1782
|
return /* @__PURE__ */ jsxs(
|
|
1782
1783
|
"li",
|
|
1783
1784
|
{
|
|
1784
|
-
className: `group flex items-center transition-colors hover:bg-
|
|
1785
|
+
className: `group flex items-center transition-colors hover:bg-accent ${active ? "bg-primary/10" : ""}`,
|
|
1785
1786
|
children: [
|
|
1786
1787
|
/* @__PURE__ */ jsxs(
|
|
1787
1788
|
"button",
|
|
@@ -1898,7 +1899,7 @@ function ProposalCard({
|
|
|
1898
1899
|
)
|
|
1899
1900
|
] })
|
|
1900
1901
|
] }),
|
|
1901
|
-
showGraph && tab === "graph" ? /* @__PURE__ */ jsx3("div", { className: "mt-1 h-64 overflow-hidden rounded border border-border", children: renderGraph?.(view.preview.content) }) : /* @__PURE__ */ jsx3("pre", { className: "mt-1 max-h-48 overflow-auto rounded border border-border bg-
|
|
1902
|
+
showGraph && tab === "graph" ? /* @__PURE__ */ jsx3("div", { className: "mt-1 h-64 overflow-hidden rounded border border-border", children: renderGraph?.(view.preview.content) }) : /* @__PURE__ */ jsx3("pre", { className: "mt-1 max-h-48 overflow-auto rounded border border-border bg-secondary p-2 text-xs", children: /* @__PURE__ */ jsx3("code", { children: view.preview.content }) })
|
|
1902
1903
|
] }),
|
|
1903
1904
|
proposal.requirements && proposal.requirements.length > 0 && /* @__PURE__ */ jsxs2("div", { className: "mt-3 rounded border border-border p-2", children: [
|
|
1904
1905
|
/* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-xs", children: "Integrations" }),
|
|
@@ -2670,7 +2671,7 @@ function AssistantPanel({
|
|
|
2670
2671
|
"div",
|
|
2671
2672
|
{
|
|
2672
2673
|
role: "status",
|
|
2673
|
-
className: "mx-4 mb-2 rounded-lg border border-border bg-
|
|
2674
|
+
className: "mx-4 mb-2 rounded-lg border border-border bg-secondary px-3 py-2 text-sm",
|
|
2674
2675
|
children: [
|
|
2675
2676
|
/* @__PURE__ */ jsx5("p", { className: "text-foreground", children: "Your credit balance is running low." }),
|
|
2676
2677
|
/* @__PURE__ */ jsx5(
|
|
@@ -2689,7 +2690,7 @@ function AssistantPanel({
|
|
|
2689
2690
|
"div",
|
|
2690
2691
|
{
|
|
2691
2692
|
role: "status",
|
|
2692
|
-
className: "mx-4 mb-2 flex items-center gap-3 rounded-lg border border-border bg-
|
|
2693
|
+
className: "mx-4 mb-2 flex items-center gap-3 rounded-lg border border-border bg-secondary px-3 py-2 text-sm",
|
|
2693
2694
|
children: [
|
|
2694
2695
|
/* @__PURE__ */ jsx5("p", { className: "min-w-0 flex-1 text-foreground", children: "Paused after a lot of steps." }),
|
|
2695
2696
|
/* @__PURE__ */ jsx5(
|
|
@@ -2967,7 +2968,7 @@ function AssistantDock({
|
|
|
2967
2968
|
"div",
|
|
2968
2969
|
{
|
|
2969
2970
|
"aria-hidden": "true",
|
|
2970
|
-
className: "fixed inset-0 z-40 bg-black/
|
|
2971
|
+
className: "fixed inset-0 z-40 bg-black/50",
|
|
2971
2972
|
onClick: () => closeAssistant()
|
|
2972
2973
|
}
|
|
2973
2974
|
),
|
|
@@ -2981,7 +2982,7 @@ function AssistantDock({
|
|
|
2981
2982
|
tabIndex: -1,
|
|
2982
2983
|
onKeyDown: trapTab,
|
|
2983
2984
|
style: isDesktop ? { width: `${width}px` } : void 0,
|
|
2984
|
-
className:
|
|
2985
|
+
className: `fixed inset-y-0 right-0 z-50 flex w-full flex-col border-border border-l ${OVERLAY_SHADOW} focus:outline-none`,
|
|
2985
2986
|
children: [
|
|
2986
2987
|
/* @__PURE__ */ jsx8(
|
|
2987
2988
|
AssistantPanel,
|