@visuno/angular 0.0.0-stage → 0.1.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 (175) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +56 -2
  3. package/account-table/account-table.component.d.ts +72 -0
  4. package/action-log/action-log.component.d.ts +41 -0
  5. package/activity-heatmap/activity-heatmap.component.d.ts +67 -0
  6. package/agent-inbox/agent-inbox.component.d.ts +75 -0
  7. package/agent-lanes/agent-lanes.component.d.ts +152 -0
  8. package/agent-phases/agent-phases.component.d.ts +62 -0
  9. package/agent-run-timeline/agent-run-timeline.component.d.ts +113 -0
  10. package/agent-tree/agent-tree.component.d.ts +80 -0
  11. package/answer-action-bar/answer-action-bar.component.d.ts +110 -0
  12. package/artifact-card/artifact-card.component.d.ts +145 -0
  13. package/attachment-tray/attachment-tray.component.d.ts +84 -0
  14. package/badge/badge.component.d.ts +25 -0
  15. package/bar-chart/bar-chart.component.d.ts +87 -0
  16. package/browser-session/browser-session.component.d.ts +70 -0
  17. package/buttons/buttons.component.d.ts +63 -0
  18. package/card/card.component.d.ts +21 -0
  19. package/change-review/change-review.component.d.ts +97 -0
  20. package/citation-hover-card/citation-hover-card.component.d.ts +95 -0
  21. package/code-viewer/code-viewer.component.d.ts +86 -0
  22. package/composer/composer.component.d.ts +114 -0
  23. package/context-meter/context-meter.component.d.ts +60 -0
  24. package/core/icon.component.d.ts +10 -0
  25. package/core/reduced-motion.service.d.ts +15 -0
  26. package/decision-prompt/decision-prompt.component.d.ts +56 -0
  27. package/design-review/design-review.component.d.ts +108 -0
  28. package/design-tuner/design-tuner.component.d.ts +75 -0
  29. package/details-panel/details-panel.component.d.ts +150 -0
  30. package/donut-chart/donut-chart.component.d.ts +63 -0
  31. package/draft-review/draft-review.component.d.ts +128 -0
  32. package/error-recovery/error-recovery.component.d.ts +59 -0
  33. package/esm2022/account-table/account-table.component.mjs +399 -0
  34. package/esm2022/action-log/action-log.component.mjs +177 -0
  35. package/esm2022/activity-heatmap/activity-heatmap.component.mjs +285 -0
  36. package/esm2022/agent-inbox/agent-inbox.component.mjs +284 -0
  37. package/esm2022/agent-lanes/agent-lanes.component.mjs +600 -0
  38. package/esm2022/agent-phases/agent-phases.component.mjs +300 -0
  39. package/esm2022/agent-run-timeline/agent-run-timeline.component.mjs +412 -0
  40. package/esm2022/agent-tree/agent-tree.component.mjs +393 -0
  41. package/esm2022/answer-action-bar/answer-action-bar.component.mjs +636 -0
  42. package/esm2022/artifact-card/artifact-card.component.mjs +916 -0
  43. package/esm2022/attachment-tray/attachment-tray.component.mjs +402 -0
  44. package/esm2022/badge/badge.component.mjs +97 -0
  45. package/esm2022/bar-chart/bar-chart.component.mjs +300 -0
  46. package/esm2022/browser-session/browser-session.component.mjs +352 -0
  47. package/esm2022/buttons/buttons.component.mjs +215 -0
  48. package/esm2022/card/card.component.mjs +107 -0
  49. package/esm2022/change-review/change-review.component.mjs +398 -0
  50. package/esm2022/citation-hover-card/citation-hover-card.component.mjs +360 -0
  51. package/esm2022/code-viewer/code-viewer.component.mjs +291 -0
  52. package/esm2022/composer/composer.component.mjs +743 -0
  53. package/esm2022/context-meter/context-meter.component.mjs +275 -0
  54. package/esm2022/core/icon.component.mjs +111 -0
  55. package/esm2022/core/reduced-motion.service.mjs +34 -0
  56. package/esm2022/decision-prompt/decision-prompt.component.mjs +259 -0
  57. package/esm2022/design-review/design-review.component.mjs +428 -0
  58. package/esm2022/design-tuner/design-tuner.component.mjs +341 -0
  59. package/esm2022/details-panel/details-panel.component.mjs +537 -0
  60. package/esm2022/donut-chart/donut-chart.component.mjs +240 -0
  61. package/esm2022/draft-review/draft-review.component.mjs +549 -0
  62. package/esm2022/error-recovery/error-recovery.component.mjs +231 -0
  63. package/esm2022/eval-results/eval-results.component.mjs +368 -0
  64. package/esm2022/feedback-sheet/feedback-sheet.component.mjs +411 -0
  65. package/esm2022/field-extraction/field-extraction.component.mjs +368 -0
  66. package/esm2022/funnel-chart/funnel-chart.component.mjs +258 -0
  67. package/esm2022/grid/grid.component.mjs +66 -0
  68. package/esm2022/health-score/health-score.component.mjs +420 -0
  69. package/esm2022/human-handoff/human-handoff.component.mjs +676 -0
  70. package/esm2022/image-generation/image-generation.component.mjs +1028 -0
  71. package/esm2022/inline-text-diff/inline-text-diff.component.mjs +390 -0
  72. package/esm2022/launch-checklist/launch-checklist.component.mjs +229 -0
  73. package/esm2022/line-chart/line-chart.component.mjs +417 -0
  74. package/esm2022/live-answer/live-answer.component.mjs +411 -0
  75. package/esm2022/metric-insight/metric-insight.component.mjs +511 -0
  76. package/esm2022/modal/modal.component.mjs +202 -0
  77. package/esm2022/model-picker/model-picker.component.mjs +491 -0
  78. package/esm2022/permission-gate/permission-gate.component.mjs +498 -0
  79. package/esm2022/plan-review/plan-review.component.mjs +432 -0
  80. package/esm2022/progress/progress.component.mjs +503 -0
  81. package/esm2022/prompt-library/prompt-library.component.mjs +453 -0
  82. package/esm2022/prompt-starters/prompt-starters.component.mjs +272 -0
  83. package/esm2022/proposal-card/proposal-card.component.mjs +402 -0
  84. package/esm2022/public-api.mjs +88 -0
  85. package/esm2022/radar-chart/radar-chart.component.mjs +500 -0
  86. package/esm2022/radial-goals/radial-goals.component.mjs +418 -0
  87. package/esm2022/reasoning-trail/reasoning-trail.component.mjs +284 -0
  88. package/esm2022/response-versions/response-versions.component.mjs +288 -0
  89. package/esm2022/rewrite-toolbar/rewrite-toolbar.component.mjs +397 -0
  90. package/esm2022/rich-text-editor/rich-text-editor.component.mjs +1755 -0
  91. package/esm2022/run-cost/run-cost.component.mjs +215 -0
  92. package/esm2022/run-queue/run-queue.component.mjs +481 -0
  93. package/esm2022/run-summary/run-summary.component.mjs +331 -0
  94. package/esm2022/scatter-chart/scatter-chart.component.mjs +705 -0
  95. package/esm2022/score-breakdown/score-breakdown.component.mjs +460 -0
  96. package/esm2022/segmented-control/segmented-control.component.mjs +180 -0
  97. package/esm2022/source-stack/source-stack.component.mjs +245 -0
  98. package/esm2022/stat-cards/stat-cards.component.mjs +258 -0
  99. package/esm2022/status-pill/status-pill.component.mjs +305 -0
  100. package/esm2022/steering/steering.component.mjs +343 -0
  101. package/esm2022/step-loader/step-loader.component.mjs +209 -0
  102. package/esm2022/task-table/task-table.component.mjs +534 -0
  103. package/esm2022/terminal-stream/terminal-stream.component.mjs +583 -0
  104. package/esm2022/thinking/thinking.component.mjs +276 -0
  105. package/esm2022/thinking-states/thinking-states.component.mjs +333 -0
  106. package/esm2022/thread-panel/thread-panel.component.mjs +271 -0
  107. package/esm2022/toast/toast.component.mjs +195 -0
  108. package/esm2022/toast-stack/toast-stack.component.mjs +301 -0
  109. package/esm2022/tool-call/tool-call.component.mjs +273 -0
  110. package/esm2022/tooltip/tooltip.component.mjs +417 -0
  111. package/esm2022/top-pages/top-pages.component.mjs +240 -0
  112. package/esm2022/trace-view/trace-view.component.mjs +440 -0
  113. package/esm2022/visuno-angular.mjs +5 -0
  114. package/esm2022/voice-capture/voice-capture.component.mjs +650 -0
  115. package/esm2022/voice-orb/voice-orb.component.mjs +538 -0
  116. package/esm2022/web-search/web-search.component.mjs +374 -0
  117. package/eval-results/eval-results.component.d.ts +67 -0
  118. package/feedback-sheet/feedback-sheet.component.d.ts +74 -0
  119. package/fesm2022/visuno-angular.mjs +31992 -0
  120. package/fesm2022/visuno-angular.mjs.map +1 -0
  121. package/field-extraction/field-extraction.component.d.ts +82 -0
  122. package/funnel-chart/funnel-chart.component.d.ts +70 -0
  123. package/grid/grid.component.d.ts +22 -0
  124. package/health-score/health-score.component.d.ts +87 -0
  125. package/human-handoff/human-handoff.component.d.ts +125 -0
  126. package/image-generation/image-generation.component.d.ts +253 -0
  127. package/index.d.ts +5 -0
  128. package/inline-text-diff/inline-text-diff.component.d.ts +76 -0
  129. package/launch-checklist/launch-checklist.component.d.ts +46 -0
  130. package/line-chart/line-chart.component.d.ts +89 -0
  131. package/live-answer/live-answer.component.d.ts +110 -0
  132. package/metric-insight/metric-insight.component.d.ts +110 -0
  133. package/modal/modal.component.d.ts +37 -0
  134. package/model-picker/model-picker.component.d.ts +97 -0
  135. package/package.json +51 -4
  136. package/permission-gate/permission-gate.component.d.ts +100 -0
  137. package/plan-review/plan-review.component.d.ts +86 -0
  138. package/progress/progress.component.d.ts +91 -0
  139. package/prompt-library/prompt-library.component.d.ts +121 -0
  140. package/prompt-starters/prompt-starters.component.d.ts +65 -0
  141. package/proposal-card/proposal-card.component.d.ts +101 -0
  142. package/public-api.d.ts +82 -0
  143. package/radar-chart/radar-chart.component.d.ts +110 -0
  144. package/radial-goals/radial-goals.component.d.ts +90 -0
  145. package/reasoning-trail/reasoning-trail.component.d.ts +73 -0
  146. package/response-versions/response-versions.component.d.ts +54 -0
  147. package/rewrite-toolbar/rewrite-toolbar.component.d.ts +92 -0
  148. package/rich-text-editor/rich-text-editor.component.d.ts +180 -0
  149. package/run-cost/run-cost.component.d.ts +43 -0
  150. package/run-queue/run-queue.component.d.ts +93 -0
  151. package/run-summary/run-summary.component.d.ts +81 -0
  152. package/scatter-chart/scatter-chart.component.d.ts +139 -0
  153. package/score-breakdown/score-breakdown.component.d.ts +107 -0
  154. package/segmented-control/segmented-control.component.d.ts +44 -0
  155. package/source-stack/source-stack.component.d.ts +60 -0
  156. package/stat-cards/stat-cards.component.d.ts +86 -0
  157. package/status-pill/status-pill.component.d.ts +64 -0
  158. package/steering/steering.component.d.ts +75 -0
  159. package/step-loader/step-loader.component.d.ts +40 -0
  160. package/styles.css +424 -0
  161. package/task-table/task-table.component.d.ts +114 -0
  162. package/terminal-stream/terminal-stream.component.d.ts +110 -0
  163. package/thinking/thinking.component.d.ts +63 -0
  164. package/thinking-states/thinking-states.component.d.ts +51 -0
  165. package/thread-panel/thread-panel.component.d.ts +75 -0
  166. package/toast/toast.component.d.ts +56 -0
  167. package/toast-stack/toast-stack.component.d.ts +72 -0
  168. package/tokens.css +424 -0
  169. package/tool-call/tool-call.component.d.ts +61 -0
  170. package/tooltip/tooltip.component.d.ts +89 -0
  171. package/top-pages/top-pages.component.d.ts +75 -0
  172. package/trace-view/trace-view.component.d.ts +95 -0
  173. package/voice-capture/voice-capture.component.d.ts +103 -0
  174. package/voice-orb/voice-orb.component.d.ts +78 -0
  175. package/web-search/web-search.component.d.ts +77 -0
@@ -0,0 +1,75 @@
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { ReducedMotionService } from '../core/reduced-motion.service';
3
+ import * as i0 from "@angular/core";
4
+ /** One page row. */
5
+ export interface TopPagesPage {
6
+ /** The page's path, like "/pricing". */
7
+ path: string;
8
+ /** Its name, like "Pricing". */
9
+ title: string;
10
+ /** Views over the period. */
11
+ views: number;
12
+ /** Change against the period before, in percent, like 24 or -8. */
13
+ change: number;
14
+ /** Shown when you hover the row. Defaults to the site and the path, like "visuno.dev/pricing". */
15
+ tip?: string;
16
+ }
17
+ /** How the rows are ordered. */
18
+ export type TopPagesSort = 'views' | 'change';
19
+ /** Internal per-row render state. */
20
+ interface RowView {
21
+ page: TopPagesPage;
22
+ index: number;
23
+ at: number;
24
+ rank: number;
25
+ width: number;
26
+ tip: string;
27
+ changeText: string;
28
+ changeClass: string;
29
+ enterDelay: number;
30
+ }
31
+ export declare class TopPagesComponent implements AfterViewInit, OnDestroy {
32
+ private readonly reduced;
33
+ private readonly cdr;
34
+ private readonly host;
35
+ /** The page rows. */
36
+ pages: TopPagesPage[];
37
+ /** Header text. */
38
+ title: string;
39
+ /** After the total, like "last 30 days". */
40
+ period: string;
41
+ /** Put in front of each path in the row tips, like "visuno.dev". */
42
+ site?: string;
43
+ /** How the rows are ordered. Leave it out to let the switch change it. */
44
+ set sort(value: TopPagesSort | undefined);
45
+ defaultSort: TopPagesSort;
46
+ sortChange: EventEmitter<TopPagesSort>;
47
+ readonly ROW = 50;
48
+ readonly fmt: (n: number) => string;
49
+ readonly options: {
50
+ value: TopPagesSort;
51
+ label: string;
52
+ }[];
53
+ by: TopPagesSort;
54
+ rows: RowView[];
55
+ shownTotal: number;
56
+ knobLeft: number;
57
+ knobWidth: number;
58
+ animate: boolean;
59
+ private controlled;
60
+ private ready;
61
+ private max;
62
+ private timers;
63
+ private frames;
64
+ constructor(reduced: ReducedMotionService, cdr: ChangeDetectorRef, host: ElementRef<HTMLElement>);
65
+ ngAfterViewInit(): void;
66
+ select(value: TopPagesSort): void;
67
+ private reorder;
68
+ private roll;
69
+ private placeKnob;
70
+ private later;
71
+ ngOnDestroy(): void;
72
+ static ɵfac: i0.ɵɵFactoryDeclaration<TopPagesComponent, never>;
73
+ static ɵcmp: i0.ɵɵComponentDeclaration<TopPagesComponent, "vo-top-pages", never, { "pages": { "alias": "pages"; "required": true; }; "title": { "alias": "title"; "required": false; }; "period": { "alias": "period"; "required": false; }; "site": { "alias": "site"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "defaultSort": { "alias": "defaultSort"; "required": false; }; }, { "sortChange": "sortChange"; }, never, never, true, never>;
74
+ }
75
+ export {};
@@ -0,0 +1,95 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { type VoIconName } from '../core/icon.component';
3
+ import * as i0 from "@angular/core";
4
+ export type SpanKind = 'agent' | 'llm' | 'tool' | 'retrieval';
5
+ export interface TraceSpan {
6
+ id: string;
7
+ /** Like "Plan the steps" or the tool's name, "fetch_page". */
8
+ name: string;
9
+ kind: SpanKind;
10
+ /** When it started, in seconds from the start of the run. */
11
+ start: number;
12
+ /** How long it took, in seconds. Leave it out while it runs: its bar grows to time. */
13
+ duration?: number;
14
+ /** Tokens it used. An agent span without its own count adds up every span under it. */
15
+ tokens?: number;
16
+ /** What went in and what came out, shown when the span is opened. */
17
+ input?: string;
18
+ output?: string;
19
+ children?: TraceSpan[];
20
+ }
21
+ /** A flattened row with its nesting level and parent, for the tree guides. */
22
+ interface Row {
23
+ s: TraceSpan;
24
+ lv: number;
25
+ up?: Row;
26
+ }
27
+ /** One guide line in the tree gutter. */
28
+ interface Guide {
29
+ x: number;
30
+ cls: string;
31
+ }
32
+ /** A legend entry. */
33
+ interface LegendItem {
34
+ kind: SpanKind;
35
+ label: string;
36
+ color: string;
37
+ count: number;
38
+ }
39
+ /** One agent run as an observability waterfall. */
40
+ export declare class TraceViewComponent {
41
+ /** The run's name, like "Pricing research". */
42
+ title: string;
43
+ /** The run's top spans, usually one root with everything nested under it. */
44
+ spans: TraceSpan[];
45
+ /** Seconds into the run while it streams in. Leave it out once the run is over. */
46
+ time?: number;
47
+ /** Seconds the time axis covers. Defaults to the run's length, rounded up. */
48
+ axis?: number;
49
+ /** A tool call longer than this many seconds turns amber and is tagged slow. */
50
+ slowAfter: number;
51
+ /** The line under the title. */
52
+ status?: string;
53
+ /** The id of the open span. null closes the details. */
54
+ set selected(value: string | null | undefined);
55
+ defaultSelected: string | null;
56
+ selectedChange: EventEmitter<string | null>;
57
+ readonly KIND: Record<SpanKind, [string, VoIconName, string]>;
58
+ readonly sec: (v: number) => string;
59
+ readonly short: (v: number) => string;
60
+ readonly tokensOf: (s: TraceSpan) => number;
61
+ open: string | null;
62
+ private controlled;
63
+ private lastSel?;
64
+ private inited;
65
+ private ensureInit;
66
+ /** Every span flattened, with its level and parent row. */
67
+ get all(): Row[];
68
+ get end(): number;
69
+ get span(): number;
70
+ get now(): number;
71
+ get shown(): Row[];
72
+ get nowFrac(): number;
73
+ get isLive(): boolean;
74
+ get totalText(): string;
75
+ get line(): string;
76
+ get legend(): LegendItem[];
77
+ get tick(): number;
78
+ get labels(): number[];
79
+ get gridSize(): string;
80
+ get sel(): TraceSpan | undefined;
81
+ get cur(): TraceSpan | undefined;
82
+ took(s: TraceSpan): number;
83
+ isRunning(s: TraceSpan): boolean;
84
+ isSlow(s: TraceSpan): boolean;
85
+ tokenText(s: TraceSpan): string;
86
+ rowLabel(s: TraceSpan): string;
87
+ /** The tree's guides for a row: lines down from ancestors with later siblings,
88
+ an elbow into this row, and a line down to its own children. */
89
+ guides(x: Row): Guide[];
90
+ select(id: string | null): void;
91
+ onKey(e: KeyboardEvent): void;
92
+ static ɵfac: i0.ɵɵFactoryDeclaration<TraceViewComponent, never>;
93
+ static ɵcmp: i0.ɵɵComponentDeclaration<TraceViewComponent, "vo-trace-view", never, { "title": { "alias": "title"; "required": false; }; "spans": { "alias": "spans"; "required": false; }; "time": { "alias": "time"; "required": false; }; "axis": { "alias": "axis"; "required": false; }; "slowAfter": { "alias": "slowAfter"; "required": false; }; "status": { "alias": "status"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "defaultSelected": { "alias": "defaultSelected"; "required": false; }; }, { "selectedChange": "selectedChange"; }, never, never, true, never>;
94
+ }
95
+ export {};
@@ -0,0 +1,103 @@
1
+ import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** listening and paused record, review asks the person to check the words, sent and cancelled are the end. */
4
+ export type VoiceCaptureState = 'listening' | 'paused' | 'review' | 'sent' | 'cancelled';
5
+ /** A word the speech model was not sure about. */
6
+ export interface HeardWord {
7
+ text: string;
8
+ /** What it might have been instead. Highlights the word and lets the person pick one. */
9
+ alternatives?: string[];
10
+ }
11
+ /** One word as it is rendered: its text, whether it is unsure, and whether a fix has been picked. */
12
+ interface RenderWord {
13
+ index: number;
14
+ text: string;
15
+ alternatives: string[];
16
+ fixed: boolean;
17
+ }
18
+ export declare class VoiceCaptureComponent implements AfterViewInit, OnChanges, OnDestroy {
19
+ /** The words heard so far, in order. Add to the end as they arrive and each one fades in. */
20
+ words: Array<string | HeardWord>;
21
+ /** The state, or leave it out to let the buttons move it along. */
22
+ state?: VoiceCaptureState;
23
+ defaultState: VoiceCaptureState;
24
+ /** Seconds recorded. Leave it out to let it count while listening. */
25
+ seconds?: number;
26
+ /** The input level from 0 to 1, drawn into the wave about 20 times a second.
27
+ Pass a function to read the microphone on every sample without re-rendering. */
28
+ level: number | (() => number);
29
+ /** The status line. Defaults to Listening, Paused, Check what I heard, Sent or Cancelled. */
30
+ status?: string;
31
+ stateChange: EventEmitter<VoiceCaptureState>;
32
+ /** Emitted with the checked transcript when the person presses Done in review. */
33
+ send: EventEmitter<string>;
34
+ /** Emitted when the person picks one of a word's alternatives. */
35
+ fixWord: EventEmitter<{
36
+ index: number;
37
+ text: string;
38
+ }>;
39
+ /** Emitted by Record again, once the capture is sent or cancelled. */
40
+ recordAgain: EventEmitter<void>;
41
+ root: ElementRef<HTMLDivElement>;
42
+ waveRef: ElementRef<HTMLCanvasElement>;
43
+ popRef: ElementRef<HTMLDivElement>;
44
+ private readonly motion;
45
+ readonly STATUS: Record<VoiceCaptureState, string>;
46
+ private inner;
47
+ get now(): VoiceCaptureState;
48
+ get live(): boolean;
49
+ get ended(): boolean;
50
+ held?: number;
51
+ private liveHeight?;
52
+ private count;
53
+ get clockText(): string;
54
+ private tick?;
55
+ private fixes;
56
+ rendered: RenderWord[];
57
+ menuOpen: boolean;
58
+ menu: {
59
+ index: number;
60
+ alts: string[];
61
+ left: number;
62
+ top: number;
63
+ };
64
+ private keyOpen;
65
+ private inMenu;
66
+ private samples;
67
+ private raf;
68
+ private lastSample;
69
+ private cols;
70
+ private colsAt;
71
+ private drawn;
72
+ private ro?;
73
+ private onDocClick;
74
+ constructor();
75
+ ngOnChanges(changes: SimpleChanges): void;
76
+ ngAfterViewInit(): void;
77
+ ngOnDestroy(): void;
78
+ private buildWords;
79
+ private syncClock;
80
+ private measure;
81
+ private onStateFlip;
82
+ togglePause(): void;
83
+ private setState;
84
+ private transcript;
85
+ done(): void;
86
+ cancel(): void;
87
+ again(): void;
88
+ wordKey(index: number, e: KeyboardEvent): void;
89
+ show(index: number, e: Event, key: boolean): void;
90
+ private closeMenu;
91
+ private wordEl;
92
+ menuKey(e: KeyboardEvent): void;
93
+ fix(index: number, text: string): void;
94
+ private docClick;
95
+ private colours;
96
+ private bars;
97
+ private paint;
98
+ private still;
99
+ private startWave;
100
+ static ɵfac: i0.ɵɵFactoryDeclaration<VoiceCaptureComponent, never>;
101
+ static ɵcmp: i0.ɵɵComponentDeclaration<VoiceCaptureComponent, "vo-voice-capture", never, { "words": { "alias": "words"; "required": false; }; "state": { "alias": "state"; "required": false; }; "defaultState": { "alias": "defaultState"; "required": false; }; "seconds": { "alias": "seconds"; "required": false; }; "level": { "alias": "level"; "required": false; }; "status": { "alias": "status"; "required": false; }; }, { "stateChange": "stateChange"; "send": "send"; "fixWord": "fixWord"; "recordAgain": "recordAgain"; }, never, never, true, never>;
102
+ }
103
+ export {};
@@ -0,0 +1,78 @@
1
+ import { AfterViewInit, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** idle (not started), listening, thinking, speaking (the agent) or ended. */
4
+ export type VoiceState = 'idle' | 'listening' | 'thinking' | 'speaking' | 'ended';
5
+ /** What was said last and who said it. A new id (or speaker) starts a new line. */
6
+ export interface VoiceCaption {
7
+ speaker: string;
8
+ text: string;
9
+ id?: string;
10
+ }
11
+ /** Labels, so every bit of text can be localised. */
12
+ export interface VoiceOrbLabels {
13
+ ready?: string;
14
+ listening?: string;
15
+ thinking?: string;
16
+ speaking?: string;
17
+ muted?: string;
18
+ ended?: string;
19
+ start?: string;
20
+ end?: string;
21
+ mute?: string;
22
+ unmute?: string;
23
+ mutedNotice?: string;
24
+ endedTitle?: string;
25
+ restart?: string;
26
+ }
27
+ export declare class VoiceOrbComponent implements OnChanges, AfterViewInit, OnDestroy {
28
+ /** idle, listening, thinking, speaking or ended. */
29
+ state: VoiceState;
30
+ /** How loud whoever is talking is, 0 to 1. The orb swells with it. */
31
+ level: number;
32
+ /** Your microphone is off. Listening shows as Muted, the mute button is pressed. */
33
+ muted: boolean;
34
+ /** Shows "You're muted" with an Unmute button, for when someone talks while muted. */
35
+ mutedNotice: boolean;
36
+ /** What was said last and who said it; each word fades in as it arrives. */
37
+ caption: VoiceCaption | null;
38
+ /** Shown before anything is said, like "Talk to the agent about Pricing v4". */
39
+ hint: string;
40
+ /** Seconds since the chat started, shown top right. */
41
+ elapsed: number;
42
+ /** The quiet line under "Voice chat ended". Defaults to the length and "Transcript saved". */
43
+ endedDetail?: string;
44
+ labels: VoiceOrbLabels;
45
+ className: string;
46
+ mutedChange: EventEmitter<boolean>;
47
+ start: EventEmitter<void>;
48
+ end: EventEmitter<void>;
49
+ /** Start again, from the row that shows once the chat has ended. */
50
+ restart: EventEmitter<void>;
51
+ private glRef?;
52
+ private readonly motion;
53
+ L: Required<VoiceOrbLabels>;
54
+ get mode(): string;
55
+ get status(): string;
56
+ get on(): boolean;
57
+ get noticeOpen(): boolean;
58
+ get lv(): string;
59
+ get defaultDetail(): string;
60
+ readonly fmt: (s: number) => string;
61
+ words(text: string): string[];
62
+ emitMuted(next: boolean): void;
63
+ private shader;
64
+ private raf;
65
+ private flow;
66
+ private last;
67
+ private cols;
68
+ private colsAt;
69
+ private io?;
70
+ private seen;
71
+ private started;
72
+ ngOnChanges(changes: SimpleChanges): void;
73
+ ngAfterViewInit(): void;
74
+ private draw;
75
+ ngOnDestroy(): void;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<VoiceOrbComponent, never>;
77
+ static ɵcmp: i0.ɵɵComponentDeclaration<VoiceOrbComponent, "vo-voice-orb", never, { "state": { "alias": "state"; "required": false; }; "level": { "alias": "level"; "required": false; }; "muted": { "alias": "muted"; "required": false; }; "mutedNotice": { "alias": "mutedNotice"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "elapsed": { "alias": "elapsed"; "required": false; }; "endedDetail": { "alias": "endedDetail"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "className": { "alias": "className"; "required": false; }; }, { "mutedChange": "mutedChange"; "start": "start"; "end": "end"; "restart": "restart"; }, never, never, true, never>;
78
+ }
@@ -0,0 +1,77 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** One page the agent opened for a query. */
4
+ export interface WebPage {
5
+ title: string;
6
+ /** Like "stripe.com". */
7
+ domain: string;
8
+ /** Like "Oct 2026". */
9
+ date?: string;
10
+ /** reading while the agent opens it; the skipped ones say why. */
11
+ status: 'reading' | 'read' | 'skimmed' | 'paywall' | 'blocked' | 'timeout';
12
+ /** The number the answer cites it by, as [1]. */
13
+ cite?: number;
14
+ }
15
+ /** One search the agent made. */
16
+ export interface WebQuery {
17
+ key: string;
18
+ query: string;
19
+ /** searching shimmers; done shows the count and the time. */
20
+ status: 'searching' | 'done';
21
+ /** How many results came back; 0 says No results. */
22
+ results?: number;
23
+ /** Like "0.9s". */
24
+ time?: string;
25
+ /** This query asks the one before it again in other words. */
26
+ rewritten?: boolean;
27
+ pages?: WebPage[];
28
+ }
29
+ /** One flattened page with its query key, for citations and marks. */
30
+ interface FlatPage extends WebPage {
31
+ q: string;
32
+ }
33
+ /** One piece of the answer: plain text or a citation button. */
34
+ interface AnswerPart {
35
+ text?: string;
36
+ cite?: number;
37
+ }
38
+ /** The agent's web searches as a trail, with an answer whose citations light their pages. */
39
+ export declare class WebSearchComponent implements OnChanges {
40
+ queries: WebQuery[];
41
+ /** True once searching and reading are over: the trail folds to its summary. */
42
+ done: boolean;
43
+ /** The answer, with sources cited as [1], [2]. Each number points at the page with that cite. */
44
+ answer?: string;
45
+ /** Whether the trail is open. Left out, it folds once done turns true. */
46
+ set open(value: boolean | undefined);
47
+ /** Without the panel, for a chat stream. */
48
+ bare: boolean;
49
+ openChange: EventEmitter<boolean>;
50
+ readonly STATUS: Record<"reading" | "read" | "skimmed" | "paywall" | "blocked" | "timeout", [string, string]>;
51
+ hot: number | null;
52
+ said: string;
53
+ private controlled;
54
+ private inner;
55
+ private qOpen;
56
+ private lastSaid;
57
+ get isOpen(): boolean;
58
+ get flatPages(): FlatPage[];
59
+ get sites(): string[];
60
+ get marks(): string[];
61
+ get line(): string;
62
+ get hotPage(): FlatPage | undefined;
63
+ get answerParts(): AnswerPart[];
64
+ hasPages(q: WebQuery): boolean;
65
+ isQOpen(q: WebQuery): boolean;
66
+ isSkip(p: WebPage): boolean;
67
+ qLabel(q: WebQuery): string | null;
68
+ pageLabel(p: WebPage): string;
69
+ citeLabel(n: number | undefined): string;
70
+ toggle(): void;
71
+ toggleQ(q: WebQuery): void;
72
+ private setOpen;
73
+ ngOnChanges(changes: SimpleChanges): void;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebSearchComponent, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<WebSearchComponent, "vo-web-search", never, { "queries": { "alias": "queries"; "required": false; }; "done": { "alias": "done"; "required": false; }; "answer": { "alias": "answer"; "required": false; }; "open": { "alias": "open"; "required": false; }; "bare": { "alias": "bare"; "required": false; }; }, { "openChange": "openChange"; }, never, never, true, never>;
76
+ }
77
+ export {};