@corenel/web-ui 0.1.0 → 0.3.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 (79) hide show
  1. package/dist/AskUser.d.ts.map +1 -1
  2. package/dist/AskUser.js +49 -13
  3. package/dist/AskUser.js.map +1 -1
  4. package/dist/CommandTray.d.ts +21 -0
  5. package/dist/CommandTray.d.ts.map +1 -0
  6. package/dist/CommandTray.js +102 -0
  7. package/dist/CommandTray.js.map +1 -0
  8. package/dist/Composer.d.ts +17 -1
  9. package/dist/Composer.d.ts.map +1 -1
  10. package/dist/Composer.js +93 -6
  11. package/dist/Composer.js.map +1 -1
  12. package/dist/ContextBar.d.ts +9 -1
  13. package/dist/ContextBar.d.ts.map +1 -1
  14. package/dist/ContextBar.js +9 -3
  15. package/dist/ContextBar.js.map +1 -1
  16. package/dist/ContextManager.d.ts +78 -2
  17. package/dist/ContextManager.d.ts.map +1 -1
  18. package/dist/ContextManager.js +175 -51
  19. package/dist/ContextManager.js.map +1 -1
  20. package/dist/Lightbox.d.ts.map +1 -1
  21. package/dist/Lightbox.js +2 -10
  22. package/dist/Lightbox.js.map +1 -1
  23. package/dist/ProcessDock.d.ts +45 -0
  24. package/dist/ProcessDock.d.ts.map +1 -0
  25. package/dist/ProcessDock.js +150 -0
  26. package/dist/ProcessDock.js.map +1 -0
  27. package/dist/RichContent.d.ts +4 -2
  28. package/dist/RichContent.d.ts.map +1 -1
  29. package/dist/RichContent.js +12 -7
  30. package/dist/RichContent.js.map +1 -1
  31. package/dist/TodoBar.d.ts +3 -0
  32. package/dist/TodoBar.d.ts.map +1 -0
  33. package/dist/TodoBar.js +163 -0
  34. package/dist/TodoBar.js.map +1 -0
  35. package/dist/Transcript.d.ts +2 -1
  36. package/dist/Transcript.d.ts.map +1 -1
  37. package/dist/Transcript.js +7 -7
  38. package/dist/Transcript.js.map +1 -1
  39. package/dist/agentChat/AgentChat.d.ts +132 -0
  40. package/dist/agentChat/AgentChat.d.ts.map +1 -0
  41. package/dist/agentChat/AgentChat.js +588 -0
  42. package/dist/agentChat/AgentChat.js.map +1 -0
  43. package/dist/agentChat/OptionsDrawer.d.ts +81 -0
  44. package/dist/agentChat/OptionsDrawer.d.ts.map +1 -0
  45. package/dist/agentChat/OptionsDrawer.js +321 -0
  46. package/dist/agentChat/OptionsDrawer.js.map +1 -0
  47. package/dist/agentChat/SkillsSection.d.ts +3 -0
  48. package/dist/agentChat/SkillsSection.d.ts.map +1 -0
  49. package/dist/agentChat/SkillsSection.js +86 -0
  50. package/dist/agentChat/SkillsSection.js.map +1 -0
  51. package/dist/agentChat/controller.d.ts +116 -0
  52. package/dist/agentChat/controller.d.ts.map +1 -0
  53. package/dist/agentChat/controller.js +25 -0
  54. package/dist/agentChat/controller.js.map +1 -0
  55. package/dist/agentChat/skillRunner.d.ts +14 -0
  56. package/dist/agentChat/skillRunner.d.ts.map +1 -0
  57. package/dist/agentChat/skillRunner.js +4 -0
  58. package/dist/agentChat/skillRunner.js.map +1 -0
  59. package/dist/commandTurn.d.ts +47 -0
  60. package/dist/commandTurn.d.ts.map +1 -0
  61. package/dist/commandTurn.js +64 -0
  62. package/dist/commandTurn.js.map +1 -0
  63. package/dist/composerHistory.d.ts +10 -0
  64. package/dist/composerHistory.d.ts.map +1 -0
  65. package/dist/composerHistory.js +44 -0
  66. package/dist/composerHistory.js.map +1 -0
  67. package/dist/sendLater/SendLater.d.ts +31 -0
  68. package/dist/sendLater/SendLater.d.ts.map +1 -0
  69. package/dist/sendLater/SendLater.js +145 -0
  70. package/dist/sendLater/SendLater.js.map +1 -0
  71. package/dist/sendLater/queue.d.ts +69 -0
  72. package/dist/sendLater/queue.d.ts.map +1 -0
  73. package/dist/sendLater/queue.js +216 -0
  74. package/dist/sendLater/queue.js.map +1 -0
  75. package/dist/toolRender.d.ts +8 -0
  76. package/dist/toolRender.d.ts.map +1 -1
  77. package/dist/toolRender.js +7 -1
  78. package/dist/toolRender.js.map +1 -1
  79. package/package.json +16 -21
@@ -0,0 +1,145 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* The "send later" control, beside Send.
3
+ *
4
+ * A clock button that parks whatever is in the composer and a list of what is
5
+ * already parked, each editable and cancellable. See queue.ts for why this is
6
+ * explicitly not a scheduled task.
7
+ *
8
+ * The firing loop lives here too, in useSendLater, because a timer needs a
9
+ * component's lifetime to be cleaned up and this is the component that is
10
+ * mounted for exactly as long as the chat is.
11
+ */
12
+ import { useCallback, useEffect, useRef, useState } from 'react';
13
+ import { IcClock, IcX, IcCheck } from '@corenel/ui-kit/icons';
14
+ import { PRESETS, HOUR_OPTIONS, queued, queueSend, editQueued, cancelQueued, takeDue, takeOne, requeue, missDuringGap, onQueueChange, formatRemaining, remainingMs, } from './queue';
15
+ /** How often the queue is checked. A minute-resolution feature does not need a
16
+ * tighter loop, and the countdown only renders whole minutes. */
17
+ const TICK_MS = 5000;
18
+ /** A gap longer than this between ticks means the page was not really running --
19
+ * a slept machine, a throttled background tab. Anything that came due inside
20
+ * such a gap is MISSED, not sent, the same as if the tab had been closed:
21
+ * nobody was watching, so nothing sends itself. Generous next to TICK_MS so
22
+ * ordinary scheduler jitter never trips it. */
23
+ const UNWATCHED_GAP_MS = 90000;
24
+ /**
25
+ * Runs the queue: ticks, fires what is due, and re-renders on every change.
26
+ *
27
+ * `send` is called with the parked text and must send it exactly as a typed
28
+ * message would be sent. It is held in a ref so a fresh closure each render
29
+ * never restarts the interval.
30
+ *
31
+ * `busy` suppresses firing while a turn is running -- the message stays queued
32
+ * and goes on the next tick instead. Dropping it would lose what the user
33
+ * parked; sending into a running turn is not possible.
34
+ */
35
+ export function useSendLater(send, busy) {
36
+ const [items, setItems] = useState(() => queued());
37
+ const [now, setNow] = useState(() => Date.now());
38
+ const sendRef = useRef(send);
39
+ sendRef.current = send;
40
+ const busyRef = useRef(busy);
41
+ busyRef.current = busy;
42
+ useEffect(() => onQueueChange(() => setItems(queued())), []);
43
+ const lastTick = useRef(Date.now());
44
+ useEffect(() => {
45
+ const tick = () => {
46
+ const t = Date.now();
47
+ const gap = t - lastTick.current;
48
+ lastTick.current = t;
49
+ setNow(t);
50
+ // Nothing was watching across that gap, so nothing sends itself.
51
+ if (gap > UNWATCHED_GAP_MS) {
52
+ missDuringGap(t);
53
+ return;
54
+ }
55
+ if (busyRef.current)
56
+ return;
57
+ for (const due of takeDue(t))
58
+ sendRef.current(due.text);
59
+ };
60
+ tick();
61
+ const id = setInterval(tick, TICK_MS);
62
+ return () => clearInterval(id);
63
+ }, []);
64
+ return { items, now };
65
+ }
66
+ export function SendLater({ text, onQueued, onSendNow, items, now }) {
67
+ const [open, setOpen] = useState(false);
68
+ const [editing, setEditing] = useState(null);
69
+ const [draft, setDraft] = useState('');
70
+ const [hours, setHours] = useState(HOUR_OPTIONS[0]);
71
+ const wrapRef = useRef(null);
72
+ const canQueue = text.trim().length > 0;
73
+ useEffect(() => {
74
+ if (!open)
75
+ return;
76
+ const onDown = (e) => {
77
+ if (!wrapRef.current?.contains(e.target)) {
78
+ setOpen(false);
79
+ setEditing(null);
80
+ }
81
+ };
82
+ document.addEventListener('mousedown', onDown, true);
83
+ return () => document.removeEventListener('mousedown', onDown, true);
84
+ }, [open]);
85
+ const park = useCallback((minutes) => {
86
+ if (queueSend(text, minutes, Date.now())) {
87
+ onQueued();
88
+ setOpen(false);
89
+ }
90
+ }, [text, onQueued]);
91
+ const commitEdit = (id) => { editQueued(id, { text: draft }); setEditing(null); };
92
+ /* A missed message goes only when the user says so. takeOne removes before
93
+ * sending, like the timer path, so a double click cannot double send. */
94
+ const sendNow = (id) => { const e = takeOne(id); if (e)
95
+ onSendNow(e.text); };
96
+ const missedCount = items.filter((i) => i.missed).length;
97
+ const label = items.length ? String(items.length) : '';
98
+ return (_jsxs("div", { ref: wrapRef, style: S.wrap, children: [_jsxs("button", { style: { ...S.btn, ...(missedCount ? S.btnMissed : items.length ? S.btnActive : null) }, onClick: () => setOpen((o) => !o), title: missedCount
99
+ ? `${missedCount} missed message${missedCount === 1 ? '' : 's'} waiting for you`
100
+ : items.length
101
+ ? `${items.length} message${items.length === 1 ? '' : 's'} queued to send later`
102
+ : 'Send later', "aria-label": "Send later", children: [_jsx(IcClock, { size: 12 }), label && _jsx("span", { style: S.count, children: label })] }), open && (_jsxs("div", { style: S.menu, "data-dock-keepalive": true, children: [_jsx("div", { style: S.head, children: "Send later" }), canQueue ? (_jsxs(_Fragment, { children: [_jsx("div", { style: S.presets, children: PRESETS.map((p) => (_jsx("button", { style: S.preset, onClick: () => park(p.minutes), children: p.label }, p.label))) }), _jsxs("div", { style: S.hourRow, children: [_jsx("select", { style: S.select, value: hours, onChange: (e) => setHours(Number(e.target.value)), "aria-label": "Hours to wait", children: HOUR_OPTIONS.map((h) => _jsxs("option", { value: h, children: [h, " hours"] }, h)) }), _jsx("button", { style: S.hourGo, onClick: () => park(hours * 60), children: "Queue" })] })] })) : (_jsx("div", { style: S.empty, children: "Type a message first \u2014 this parks what is in the composer." })), items.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { style: S.divider }), _jsx("div", { style: S.listHead, children: "Queued" }), _jsx("div", { style: S.list, children: items.map((it) => (_jsx("div", { style: S.item, children: editing === it.id ? (_jsxs(_Fragment, { children: [_jsx("textarea", { style: S.editBox, value: draft, autoFocus: true, onChange: (e) => setDraft(e.target.value), onKeyDown: (e) => {
103
+ if (e.key === 'Enter' && !e.shiftKey) {
104
+ e.preventDefault();
105
+ commitEdit(it.id);
106
+ }
107
+ if (e.key === 'Escape') {
108
+ e.preventDefault();
109
+ setEditing(null);
110
+ }
111
+ }, "aria-label": "Edit queued message" }), _jsx("button", { style: S.iconBtn, onClick: () => commitEdit(it.id), title: "Save", "aria-label": "Save", children: _jsx(IcCheck, { size: 12 }) })] })) : (_jsxs(_Fragment, { children: [_jsx("button", { style: S.itemText, title: it.text, onClick: () => { setEditing(it.id); setDraft(it.text); }, children: it.text }), it.missed ? (_jsxs(_Fragment, { children: [_jsx("span", { style: S.missedTag, children: "missed" }), _jsx("button", { style: S.sendNow, onClick: () => sendNow(it.id), title: "Send this now", "aria-label": "Send missed message now", children: "Send" }), _jsx("button", { style: S.iconBtn, onClick: () => requeue(it.id, 30, Date.now()), title: "Wait another 30m", "aria-label": "Re-queue for 30 minutes", children: _jsx(IcClock, { size: 12 }) })] })) : (_jsx("span", { style: S.due, children: formatRemaining(remainingMs(it, now)) })), _jsx("button", { style: S.iconBtn, onClick: () => cancelQueued(it.id), title: "Cancel", "aria-label": "Cancel queued message", children: _jsx(IcX, { size: 12 }) })] })) }, it.id))) }), _jsx("div", { style: S.note, children: missedCount > 0
112
+ ? 'A missed message came due while this tab was closed or asleep. It waits for you rather than sending on its own.'
113
+ : 'Sends from this browser tab while it is open.' })] }))] }))] }));
114
+ }
115
+ const S = {
116
+ wrap: { position: 'relative', display: 'inline-flex' },
117
+ // 34px, matching the stance+Send control beside it -- the two controls sit on
118
+ // the same row and a shorter button reads as an afterthought.
119
+ btn: { display: 'inline-flex', alignItems: 'center', gap: 6, height: 34, padding: '0 12px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontSize: 12.5, fontWeight: 600, fontFamily: 'inherit', boxShadow: 'var(--shadow-1)', cursor: 'pointer' },
120
+ // Full `border`, not `borderColor`: React warns (correctly) that removing a
121
+ // longhand on rerender while a shorthand is set leads to real styling bugs.
122
+ btnActive: { color: 'var(--accent)', border: '1px solid var(--accent)' },
123
+ btnMissed: { color: 'var(--warn, var(--accent))', border: '1px solid var(--warn, var(--accent))' },
124
+ missedTag: { flex: '0 0 auto', fontSize: 'var(--fs-caption, 11px)', fontWeight: 700, letterSpacing: '0.02em', color: 'var(--warn, var(--accent))' },
125
+ sendNow: { flex: '0 0 auto', height: 22, padding: '0 8px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontSize: 'var(--fs-caption, 11px)', fontWeight: 700, cursor: 'pointer' },
126
+ count: { fontSize: 12.5, fontWeight: 700, fontVariantNumeric: 'tabular-nums' },
127
+ menu: { position: 'absolute', bottom: 'calc(100% + 6px)', left: 0, zIndex: 'var(--z-dropdown)', width: 300, padding: 8, background: 'var(--surface-1)', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-md)', boxShadow: 'var(--shadow-4, 0 12px 32px rgba(0,0,0,0.4))' },
128
+ head: { fontSize: 'var(--fs-caption, 11px)', fontWeight: 700, letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--text-tertiary)', padding: '2px 4px 6px' },
129
+ presets: { display: 'flex', gap: 4 },
130
+ preset: { flex: 1, height: 30, border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontWeight: 600, cursor: 'pointer' },
131
+ hourRow: { display: 'flex', gap: 4, marginTop: 6 },
132
+ select: { flex: 1, height: 30, border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', padding: '0 6px' },
133
+ hourGo: { height: 30, padding: '0 10px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontWeight: 600, cursor: 'pointer' },
134
+ empty: { padding: '4px 4px 2px', color: 'var(--text-tertiary)', fontSize: 'var(--fs-body-sm)' },
135
+ divider: { height: 1, margin: '8px 0', background: 'var(--border-default)' },
136
+ listHead: { fontSize: 'var(--fs-caption, 11px)', fontWeight: 700, letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--text-tertiary)', padding: '0 4px 4px' },
137
+ list: { display: 'flex', flexDirection: 'column', gap: 2, maxHeight: 180, overflow: 'auto' },
138
+ item: { display: 'flex', alignItems: 'center', gap: 4, padding: '2px 2px 2px 4px', borderRadius: 'var(--radius-sm)' },
139
+ itemText: { flex: 1, minWidth: 0, border: 'none', background: 'none', padding: 0, color: 'var(--text-secondary)', font: 'inherit', fontSize: 'var(--fs-body-sm)', textAlign: 'left', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', cursor: 'text' },
140
+ editBox: { flex: 1, minWidth: 0, minHeight: 52, resize: 'vertical', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-primary)', font: 'inherit', fontSize: 'var(--fs-body-sm)', padding: 4 },
141
+ due: { flex: '0 0 auto', fontSize: 'var(--fs-caption, 11px)', color: 'var(--text-tertiary)', fontVariantNumeric: 'tabular-nums' },
142
+ iconBtn: { flex: '0 0 auto', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 22, height: 22, border: 'none', background: 'none', color: 'var(--text-tertiary)', cursor: 'pointer' },
143
+ note: { padding: '6px 4px 0', color: 'var(--text-tertiary)', fontSize: 'var(--fs-caption, 11px)', lineHeight: 1.4 },
144
+ };
145
+ //# sourceMappingURL=SendLater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendLater.js","sourceRoot":"","sources":["../../sendLater/SendLater.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /** One parked message. */
2
+ export interface QueuedSend {
3
+ id: string;
4
+ /** Exactly what will be sent -- the composer's text at queue time, editable after. */
5
+ text: string;
6
+ /** Epoch ms when it should go. */
7
+ dueAt: number;
8
+ /** Epoch ms when it was queued, for "in 20m" vs "queued 20m ago" in the UI. */
9
+ createdAt: number;
10
+ /** Its moment passed while nothing was watching (tab closed, machine asleep).
11
+ * Held rather than sent; the user decides. */
12
+ missed?: boolean;
13
+ }
14
+ /** Presets, in minutes. The dropdown adds longer waits in whole hours. */
15
+ export declare const PRESETS: {
16
+ label: string;
17
+ minutes: number;
18
+ }[];
19
+ /** Longer waits offered in the dropdown, in hours. */
20
+ export declare const HOUR_OPTIONS: number[];
21
+ type Listener = () => void;
22
+ /** Subscribe to queue changes. Returns an unsubscribe. */
23
+ export declare function onQueueChange(l: Listener): () => void;
24
+ /** Everything parked, soonest first. */
25
+ export declare function queued(): QueuedSend[];
26
+ /** Park `text` to be sent in `minutes`. Returns the new entry. */
27
+ export declare function queueSend(text: string, minutes: number, now: number): QueuedSend | null;
28
+ /** Change a parked message's text and/or when it goes. */
29
+ export declare function editQueued(id: string, patch: {
30
+ text?: string;
31
+ dueAt?: number;
32
+ }): void;
33
+ /** Drop a parked message. */
34
+ export declare function cancelQueued(id: string): void;
35
+ /** Drop everything (used by tests and a "clear all" affordance). */
36
+ export declare function clearQueue(): void;
37
+ /**
38
+ * Take everything due at `now` off the queue and return it, soonest first.
39
+ *
40
+ * Removing before sending is deliberate: a message that fires must not be able
41
+ * to fire twice if the send throws, because the user asked for it to be sent
42
+ * once. A failed send surfaces in the transcript like any other failed send.
43
+ */
44
+ export declare function takeDue(now: number): QueuedSend[];
45
+ /**
46
+ * Mark everything that became due during a gap as missed, and return how many.
47
+ *
48
+ * The tab being closed is not the only way a moment passes unwatched -- a
49
+ * sleeping laptop leaves the interval un-run for hours with the page still
50
+ * mounted. Both are the same thing to the person who parked the message, so
51
+ * both get the same answer.
52
+ */
53
+ export declare function missDuringGap(now: number): number;
54
+ /** Take one entry off the queue by id and return it -- the "send it now" path
55
+ * for a missed message. Removed before sending, like takeDue, so one click
56
+ * cannot become two sends. */
57
+ export declare function takeOne(id: string): QueuedSend | null;
58
+ /** Re-arm a missed message for `minutes` from now. */
59
+ export declare function requeue(id: string, minutes: number, now: number): void;
60
+ /** ms until this entry is due; <= 0 means overdue. */
61
+ export declare function remainingMs(entry: QueuedSend, now: number): number;
62
+ /** "5m", "1h 20m", "now" — the countdown shown on a parked message. */
63
+ export declare function formatRemaining(ms: number): string;
64
+ /** Test hook: reset module state so each test starts empty. */
65
+ export declare function resetQueueForTest(): void;
66
+ /** Test hook: reload from storage (proves persistence across a "reload"). */
67
+ export declare function reloadQueueForTest(): void;
68
+ export {};
69
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../sendLater/queue.ts"],"names":[],"mappings":"AAmBA,0BAA0B;AAC1B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB;kDAC8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,0EAA0E;AAC1E,eAAO,MAAM,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAMvD,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,YAAY,UAA6B,CAAC;AAEvD,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAmC3B,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,CAGrD;AAED,wCAAwC;AACxC,wBAAgB,MAAM,IAAI,UAAU,EAAE,CAErC;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAcvF;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAerF;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG7C;AAED,oEAAoE;AACpE,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAOjD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASjD;AAED;;+BAE+B;AAC/B,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAIrD;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAStE;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,216 @@
1
+ /* Send this message later.
2
+ *
3
+ * NOT a scheduled task. There is no cron, no trigger, no run record and no
4
+ * daemon -- the crew scheduler already exists for that and this is deliberately
5
+ * not it. This is one message, typed now, delivered to the chat later exactly as
6
+ * if it had been typed at that moment. The motivating case is hitting a
7
+ * provider's usage limit: park the prompt, let the window pass, have it go on
8
+ * its own.
9
+ *
10
+ * BROWSER-ONLY, and honest about it. The timer is a setInterval in this tab.
11
+ *
12
+ * A message only ever sends ITSELF while you are here to see it. If its moment
13
+ * passed while the tab was closed -- or while the machine was asleep -- it is
14
+ * marked MISSED and waits for you: an hours-old prompt firing the instant a tab
15
+ * reopens is a surprise, and surprising sends are the one thing a feature like
16
+ * this must not do. A missed message keeps its text, can be edited, sent with
17
+ * one click, re-queued for a new time, or dropped.
18
+ */
19
+ const KEY = 'corenel.sendLater.v1';
20
+ /** Presets, in minutes. The dropdown adds longer waits in whole hours. */
21
+ export const PRESETS = [
22
+ { label: '5m', minutes: 5 },
23
+ { label: '10m', minutes: 10 },
24
+ { label: '20m', minutes: 20 },
25
+ { label: '30m', minutes: 30 },
26
+ { label: '1h', minutes: 60 },
27
+ ];
28
+ /** Longer waits offered in the dropdown, in hours. */
29
+ export const HOUR_OPTIONS = [2, 3, 4, 5, 6, 8, 12, 24];
30
+ let items = load();
31
+ const listeners = new Set();
32
+ function load() {
33
+ try {
34
+ const raw = localStorage.getItem(KEY);
35
+ if (!raw)
36
+ return [];
37
+ const parsed = JSON.parse(raw);
38
+ if (!Array.isArray(parsed))
39
+ return [];
40
+ /* Validated rather than trusted: this is user-editable storage, and a
41
+ * malformed entry would otherwise fire as `undefined` into the chat. */
42
+ const valid = parsed.filter((v) => !!v && typeof v === 'object'
43
+ && typeof v.id === 'string'
44
+ && typeof v.text === 'string'
45
+ && typeof v.dueAt === 'number'
46
+ && Number.isFinite(v.dueAt));
47
+ /* Anything already due at load came due while this tab was not running.
48
+ * Marked, not sent. */
49
+ const now = Date.now();
50
+ return valid.map((v) => (v.dueAt <= now ? { ...v, missed: true } : v));
51
+ }
52
+ catch {
53
+ return [];
54
+ }
55
+ }
56
+ function persist() {
57
+ try {
58
+ localStorage.setItem(KEY, JSON.stringify(items));
59
+ }
60
+ catch { /* quota: the queue still works in memory */ }
61
+ }
62
+ function emit() {
63
+ persist();
64
+ for (const l of listeners)
65
+ l();
66
+ }
67
+ /** Subscribe to queue changes. Returns an unsubscribe. */
68
+ export function onQueueChange(l) {
69
+ listeners.add(l);
70
+ return () => { listeners.delete(l); };
71
+ }
72
+ /** Everything parked, soonest first. */
73
+ export function queued() {
74
+ return [...items].sort((a, b) => a.dueAt - b.dueAt);
75
+ }
76
+ /** Park `text` to be sent in `minutes`. Returns the new entry. */
77
+ export function queueSend(text, minutes, now) {
78
+ const body = text.trim();
79
+ if (!body)
80
+ return null;
81
+ const entry = {
82
+ // Not Math.random: two queues added in the same millisecond still differ,
83
+ // and the id never has to survive a reload as anything but a key.
84
+ id: `sl-${now.toString(36)}-${(items.length + 1).toString(36)}-${body.length.toString(36)}`,
85
+ text: body,
86
+ dueAt: now + minutes * 60000,
87
+ createdAt: now,
88
+ };
89
+ items = [...items, entry];
90
+ emit();
91
+ return entry;
92
+ }
93
+ /** Change a parked message's text and/or when it goes. */
94
+ export function editQueued(id, patch) {
95
+ let changed = false;
96
+ items = items.map((it) => {
97
+ if (it.id !== id)
98
+ return it;
99
+ const text = patch.text !== undefined ? patch.text.trim() : it.text;
100
+ // An empty edit would fire a blank message; treat it as "leave it alone" and
101
+ // let the caller cancel explicitly if that is what they meant.
102
+ if (patch.text !== undefined && !text)
103
+ return it;
104
+ changed = true;
105
+ // Giving it a new future moment un-misses it: the user has re-armed it.
106
+ const dueAt = patch.dueAt ?? it.dueAt;
107
+ const missed = patch.dueAt !== undefined ? dueAt <= Date.now() : it.missed;
108
+ return { ...it, text, dueAt, ...(missed ? { missed: true } : {}) };
109
+ });
110
+ if (changed)
111
+ emit();
112
+ }
113
+ /** Drop a parked message. */
114
+ export function cancelQueued(id) {
115
+ const next = items.filter((it) => it.id !== id);
116
+ if (next.length !== items.length) {
117
+ items = next;
118
+ emit();
119
+ }
120
+ }
121
+ /** Drop everything (used by tests and a "clear all" affordance). */
122
+ export function clearQueue() {
123
+ if (items.length) {
124
+ items = [];
125
+ emit();
126
+ }
127
+ }
128
+ /**
129
+ * Take everything due at `now` off the queue and return it, soonest first.
130
+ *
131
+ * Removing before sending is deliberate: a message that fires must not be able
132
+ * to fire twice if the send throws, because the user asked for it to be sent
133
+ * once. A failed send surfaces in the transcript like any other failed send.
134
+ */
135
+ export function takeDue(now) {
136
+ const due = items.filter((it) => !it.missed && it.dueAt <= now).sort((a, b) => a.dueAt - b.dueAt);
137
+ if (!due.length)
138
+ return [];
139
+ const ids = new Set(due.map((d) => d.id));
140
+ items = items.filter((it) => !ids.has(it.id));
141
+ emit();
142
+ return due;
143
+ }
144
+ /**
145
+ * Mark everything that became due during a gap as missed, and return how many.
146
+ *
147
+ * The tab being closed is not the only way a moment passes unwatched -- a
148
+ * sleeping laptop leaves the interval un-run for hours with the page still
149
+ * mounted. Both are the same thing to the person who parked the message, so
150
+ * both get the same answer.
151
+ */
152
+ export function missDuringGap(now) {
153
+ let n = 0;
154
+ items = items.map((it) => {
155
+ if (it.missed || it.dueAt > now)
156
+ return it;
157
+ n += 1;
158
+ return { ...it, missed: true };
159
+ });
160
+ if (n)
161
+ emit();
162
+ return n;
163
+ }
164
+ /** Take one entry off the queue by id and return it -- the "send it now" path
165
+ * for a missed message. Removed before sending, like takeDue, so one click
166
+ * cannot become two sends. */
167
+ export function takeOne(id) {
168
+ const found = items.find((it) => it.id === id) ?? null;
169
+ if (found) {
170
+ items = items.filter((it) => it.id !== id);
171
+ emit();
172
+ }
173
+ return found;
174
+ }
175
+ /** Re-arm a missed message for `minutes` from now. */
176
+ export function requeue(id, minutes, now) {
177
+ let changed = false;
178
+ items = items.map((it) => {
179
+ if (it.id !== id)
180
+ return it;
181
+ changed = true;
182
+ const { missed: _drop, ...rest } = it;
183
+ return { ...rest, dueAt: now + minutes * 60000 };
184
+ });
185
+ if (changed)
186
+ emit();
187
+ }
188
+ /** ms until this entry is due; <= 0 means overdue. */
189
+ export function remainingMs(entry, now) {
190
+ return entry.dueAt - now;
191
+ }
192
+ /** "5m", "1h 20m", "now" — the countdown shown on a parked message. */
193
+ export function formatRemaining(ms) {
194
+ if (ms <= 0)
195
+ return 'now';
196
+ const totalMin = Math.ceil(ms / 60000);
197
+ if (totalMin < 60)
198
+ return `${totalMin}m`;
199
+ const h = Math.floor(totalMin / 60);
200
+ const m = totalMin % 60;
201
+ return m ? `${h}h ${m}m` : `${h}h`;
202
+ }
203
+ /** Test hook: reset module state so each test starts empty. */
204
+ export function resetQueueForTest() {
205
+ items = [];
206
+ listeners.clear();
207
+ try {
208
+ localStorage.removeItem(KEY);
209
+ }
210
+ catch { /* ignore */ }
211
+ }
212
+ /** Test hook: reload from storage (proves persistence across a "reload"). */
213
+ export function reloadQueueForTest() {
214
+ items = load();
215
+ }
216
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../sendLater/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAgBH,MAAM,GAAG,GAAG,sBAAsB,CAAC;AAEnC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAyC;IAC3D,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;IAC3B,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7B,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7B,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;CAC7B,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAIvD,IAAI,KAAK,GAAiB,IAAI,EAAE,CAAC;AACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;AAEtC,SAAS,IAAI;IACX,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC;gFACwE;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CACjD,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;eACzB,OAAQ,CAAgB,CAAC,EAAE,KAAK,QAAQ;eACxC,OAAQ,CAAgB,CAAC,IAAI,KAAK,QAAQ;eAC1C,OAAQ,CAAgB,CAAC,KAAK,KAAK,QAAQ;eAC3C,MAAM,CAAC,QAAQ,CAAE,CAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C;+BACuB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,SAAS,OAAO;IACd,IAAI,CAAC;QAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;AAClH,CAAC;AAED,SAAS,IAAI;IACX,OAAO,EAAE,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,MAAM;IACpB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAe;QACxB,0EAA0E;QAC1E,kEAAkE;QAClE,EAAE,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAC3F,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,KAAM;QAC7B,SAAS,EAAE,GAAG;KACf,CAAC;IACF,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC;IACP,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,KAAwC;IAC7E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACvB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;QACpE,6EAA6E;QAC7E,+DAA+D;QAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACjD,OAAO,GAAG,IAAI,CAAC;QACf,wEAAwE;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;QAC3E,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC;IAAC,CAAC;AAC7D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,UAAU;IACxB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAAC,KAAK,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,CAAC;IAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClG,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC;IACP,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACvB,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,GAAG,GAAG;YAAE,OAAO,EAAE,CAAC;QAC3C,CAAC,IAAI,CAAC,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QAAE,IAAI,EAAE,CAAC;IACd,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;+BAE+B;AAC/B,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;IACvD,IAAI,KAAK,EAAE,CAAC;QAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,OAAe,EAAE,GAAW;IAC9D,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACvB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,KAAM,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,GAAW;IACxD,OAAO,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC3B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAM,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,GAAG,QAAQ,GAAG,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB;IAC/B,KAAK,GAAG,EAAE,CAAC;IACX,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC;QAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB;IAChC,KAAK,GAAG,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -27,5 +27,13 @@ export declare function ToolResultCard({ inv, defaultOpen }: {
27
27
  inv: ToolInvocation;
28
28
  defaultOpen?: boolean;
29
29
  }): React.JSX.Element;
30
+ /** The expandable body of a tool invocation — arguments (JSON) + the rich result
31
+ * renderer. Shared by ToolResultCard and any other surface that wants the SAME
32
+ * details view (e.g. the /agent live timeline), so they don't drift. */
33
+ export declare function ToolDetails({ name, args, result }: {
34
+ name: string;
35
+ args: Record<string, unknown>;
36
+ result?: string;
37
+ }): React.JSX.Element;
30
38
  export {};
31
39
  //# sourceMappingURL=toolRender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolRender.d.ts","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAkDtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAIvF;AAuBD;mFACmF;AACnF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;IACrE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACjH,qBAuBA;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,WAAmB,EAAE,EAAE;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,qBAwB1G"}
1
+ {"version":3,"file":"toolRender.d.ts","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAkDtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAIvF;AAuBD;mFACmF;AACnF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;IACrE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACjH,qBAuBA;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,WAAmB,EAAE,EAAE;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,qBAc1G;AAED;;wEAEwE;AACxE,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,qBAYnH"}
@@ -131,7 +131,13 @@ export function ToolResultCard({ inv, defaultOpen = false }) {
131
131
  const [open, setOpen] = useState(defaultOpen);
132
132
  // Switching the transcript view re-syncs every card's open state.
133
133
  useEffect(() => setOpen(defaultOpen), [defaultOpen]);
134
- return (_jsxs("div", { style: S.tool(status), children: [_jsxs("button", { style: S.toolHead, onClick: () => setOpen((o) => !o), "aria-expanded": open, children: [_jsx(ToolLine, { name: inv.name, args: inv.args, result: inv.result, isError: inv.isError, running: inv.running, ms: inv.ms }), _jsx("span", { style: { ...S.chev, marginLeft: 8, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), open && (_jsxs("div", { style: S.toolBody, children: [_jsx("div", { style: S.toolLabel, children: "arguments" }), _jsx(CodeBlock, { lang: "json", code: JSON.stringify(inv.args, null, 2) }), _jsxs("div", { style: S.resultHead, children: [_jsx("span", { style: S.toolLabel, children: "result" }), _jsx(CopyBtn, { text: inv.result || '', title: "Copy result" })] }), _jsx(RichResult, { name: inv.name, args: inv.args, result: inv.result })] }))] }));
134
+ return (_jsxs("div", { style: S.tool(status), children: [_jsxs("button", { style: S.toolHead, onClick: () => setOpen((o) => !o), "aria-expanded": open, children: [_jsx(ToolLine, { name: inv.name, args: inv.args, result: inv.result, isError: inv.isError, running: inv.running, ms: inv.ms }), _jsx("span", { style: { ...S.chev, marginLeft: 8, transform: open ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevronRight, { size: 12 }) })] }), open && _jsx(ToolDetails, { name: inv.name, args: inv.args, result: inv.result })] }));
135
+ }
136
+ /** The expandable body of a tool invocation — arguments (JSON) + the rich result
137
+ * renderer. Shared by ToolResultCard and any other surface that wants the SAME
138
+ * details view (e.g. the /agent live timeline), so they don't drift. */
139
+ export function ToolDetails({ name, args, result }) {
140
+ return (_jsxs("div", { style: S.toolBody, children: [_jsx("div", { style: S.toolLabel, children: "arguments" }), _jsx(CodeBlock, { lang: "json", code: JSON.stringify(args, null, 2) }), _jsxs("div", { style: S.resultHead, children: [_jsx("span", { style: S.toolLabel, children: "result" }), _jsx(CopyBtn, { text: result || '', title: "Copy result" })] }), _jsx(RichResult, { name: name, args: args, result: result ?? '' })] }));
135
141
  }
136
142
  const mono = 'var(--font-mono)';
137
143
  const S = {
@@ -1 +1 @@
1
- {"version":3,"file":"toolRender.js","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolRender.js","sourceRoot":"","sources":["../toolRender.tsx"],"names":[],"mappings":"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"}