@tangle-network/agent-app 0.45.38 → 0.45.40

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.
@@ -231,6 +231,39 @@ interface EffortLevel {
231
231
  label: string;
232
232
  }
233
233
  declare const DEFAULT_EFFORT_LEVELS: readonly EffortLevel[];
234
+ /**
235
+ * The user-facing label for an engine level id: the canonical vocabulary when
236
+ * the id is one this package names, otherwise the id itself made readable
237
+ * (`auto` -> "Auto", `ultra-code` -> "Ultra code"). Never invents a depth word,
238
+ * so an id nobody declared a label for still reads as ITSELF and never as some
239
+ * other level.
240
+ */
241
+ declare function effortLevelLabel(id: string): string;
242
+ /**
243
+ * Build a levels list from the engine ids a backend applies — the shape the
244
+ * removed `ComposerAgentControls` took as `reasoning.available`, so a product
245
+ * migrating that list has one call to make instead of a hand-written label map
246
+ * per product (which is how "Quick" and "Low" drift apart across surfaces).
247
+ */
248
+ declare function effortLevelsFromIds(ids: readonly string[]): readonly EffortLevel[];
249
+ /**
250
+ * The list {@link EffortPicker} RENDERS for `value` — the declared levels, plus
251
+ * `value` itself when the declaration omits it.
252
+ *
253
+ * A picker cannot honestly resolve a selected value it was not given, and the
254
+ * failure it used to take instead — fall back to the middle entry — renders the
255
+ * session's real depth as a DIFFERENT level's name. That is exactly the defect
256
+ * `levels` was added to prevent: the legacy adapter's `available` list excluded
257
+ * the `auto` sentinel because the old picker injected it, so a product mapping
258
+ * that list straight across ships a session running on `auto` labelled
259
+ * "Extended". Admitting the value is not offering a new choice — it is
260
+ * reporting the state the session is already in, and it disappears from the
261
+ * list as soon as the user picks a declared level.
262
+ *
263
+ * A blank value is not admitted (there is no honest label for it); the picker
264
+ * renders no selection instead.
265
+ */
266
+ declare function reconcileEffortLevels(value: string, levels?: readonly EffortLevel[]): readonly EffortLevel[];
234
267
  /** Segments the meter draws — fixed geometry so the ladder stays tabular
235
268
  * across levels (and across the trigger and its menu rows). */
236
269
  declare const EFFORT_METER_SEGMENTS = 4;
@@ -256,7 +289,12 @@ interface EffortPickerProps {
256
289
  onChange: (id: string) => void;
257
290
  /** Selectable levels (engine id + user-facing label). Defaults to the plain
258
291
  * "Thinking" vocabulary; override to relabel without changing the ids the
259
- * runtime receives. */
292
+ * runtime receives.
293
+ *
294
+ * A list that omits the current `value` is not a rendering error the picker
295
+ * papers over: `value` is reconciled INTO the rendered list under its own
296
+ * name (see {@link reconcileEffortLevels}), because a control must report
297
+ * the depth the session is running at and never some other list entry. */
260
298
  levels?: readonly EffortLevel[];
261
299
  /** Prefix shown before the active level on the pill — the "what is this"
262
300
  * context the bare value lacked. Default "Thinking". Pass '' to hide it. */
@@ -294,6 +332,15 @@ interface AgentSessionControlsProps {
294
332
  * selected harness/model passes that subset here. Without it the strip
295
333
  * offers every level and the backend silently ignores the ones it does not
296
334
  * apply — a control that reports a choice the system never made.
335
+ *
336
+ * This is the COMPLETE renderable set, not an allow-list layered over a
337
+ * default one — the removed `ComposerAgentControls`' `available` list was the
338
+ * latter, and its picker injected the `auto` sentinel itself. A list that
339
+ * omits the current {@link effort} is still safe: `EffortPicker` reconciles
340
+ * the selected value into the rendered list under its own name rather than
341
+ * resolving it to a different entry (`reconcileEffortLevels`). Build the list
342
+ * from engine ids with `effortLevelsFromIds`; the migration is in
343
+ * `docs/ui-picker-canon.md`.
297
344
  */
298
345
  effortLevels?: readonly EffortLevel[];
299
346
  /**
@@ -308,4 +355,4 @@ interface AgentSessionControlsProps {
308
355
  }
309
356
  declare function AgentSessionControls(props: AgentSessionControlsProps): react.JSX.Element;
310
357
 
311
- 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, POPOVER_SURFACE_ATTR as P, 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, PopoverSurface as j, type PopoverSurfaceProps as k, type UseFileMentionsOptions as l, effortMeterFill as m, usePending as n, usePopover as o, rankFileMentions as r, useFileMentions as u };
358
+ 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, POPOVER_SURFACE_ATTR as P, 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, PopoverSurface as j, type PopoverSurfaceProps as k, type UseFileMentionsOptions as l, effortLevelLabel as m, effortLevelsFromIds as n, effortMeterFill as o, reconcileEffortLevels as p, usePending as q, rankFileMentions as r, usePopover as s, useFileMentions as u };
@@ -8,7 +8,7 @@ import '../plans/index.js';
8
8
  import '../parts-BqIHMdyu.js';
9
9
  import '../types-CCeYywdS.js';
10
10
  import '../wire-DOZ-O6hD.js';
11
- import '../agent-session-controls-CCeu5QLS.js';
11
+ import '../agent-session-controls-BGNNTeJ5.js';
12
12
  import '../harness/index.js';
13
13
  import '../catalog/index.js';
14
14
  import '../agent-activity-C8ZG0F0M.js';
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ChatComposer,
3
3
  ChatMessages
4
- } from "../chunk-HNVAASAO.js";
4
+ } from "../chunk-35SI5SUX.js";
5
5
  import "../chunk-FBVLEGEG.js";
6
6
  import "../chunk-5MZXWPFN.js";
7
7
  import "../chunk-GEYACSFW.js";
@@ -9,7 +9,7 @@ import {
9
9
  ModelPicker,
10
10
  OVERLAY_SHADOW,
11
11
  ProviderLogo
12
- } from "../chunk-3AXSERRK.js";
12
+ } from "../chunk-MJOZ7K5U.js";
13
13
  import "../chunk-BATKJP3P.js";
14
14
  import {
15
15
  AsyncView
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { AgentComposer } from '@tangle-network/sandbox-ui/chat';
4
- import { A as AgentSessionControlsProps, U as UseFileMentionsResult } from '../agent-session-controls-CCeu5QLS.js';
4
+ import { A as AgentSessionControlsProps, U as UseFileMentionsResult } from '../agent-session-controls-BGNNTeJ5.js';
5
5
  import { b as ChatAttachmentInput, F as FileMention } from '../wire-DOZ-O6hD.js';
6
6
  import '../harness/index.js';
7
7
  import '@tangle-network/agent-interface';
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AgentSessionControls,
3
3
  useComposerAttachments
4
- } from "../chunk-3AXSERRK.js";
4
+ } from "../chunk-MJOZ7K5U.js";
5
5
  import {
6
6
  ATTACHMENT_ACCEPT
7
7
  } from "../chunk-CCVG2TL6.js";
@@ -12,7 +12,7 @@ import {
12
12
  PopoverSurface,
13
13
  usePending,
14
14
  usePopover
15
- } from "./chunk-3AXSERRK.js";
15
+ } from "./chunk-MJOZ7K5U.js";
16
16
  import {
17
17
  UNTITLED_SESSION_LABEL,
18
18
  mergeSessionPages,
@@ -5990,4 +5990,4 @@ export {
5990
5990
  useThinkingSeconds,
5991
5991
  ChatMessages
5992
5992
  };
5993
- //# sourceMappingURL=chunk-HNVAASAO.js.map
5993
+ //# sourceMappingURL=chunk-35SI5SUX.js.map