@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.
- package/dist/AskUser.d.ts.map +1 -1
- package/dist/AskUser.js +49 -13
- package/dist/AskUser.js.map +1 -1
- package/dist/CommandTray.d.ts +21 -0
- package/dist/CommandTray.d.ts.map +1 -0
- package/dist/CommandTray.js +102 -0
- package/dist/CommandTray.js.map +1 -0
- package/dist/Composer.d.ts +17 -1
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +93 -6
- package/dist/Composer.js.map +1 -1
- package/dist/ContextBar.d.ts +9 -1
- package/dist/ContextBar.d.ts.map +1 -1
- package/dist/ContextBar.js +9 -3
- package/dist/ContextBar.js.map +1 -1
- package/dist/ContextManager.d.ts +78 -2
- package/dist/ContextManager.d.ts.map +1 -1
- package/dist/ContextManager.js +175 -51
- package/dist/ContextManager.js.map +1 -1
- package/dist/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox.js +2 -10
- package/dist/Lightbox.js.map +1 -1
- package/dist/ProcessDock.d.ts +45 -0
- package/dist/ProcessDock.d.ts.map +1 -0
- package/dist/ProcessDock.js +150 -0
- package/dist/ProcessDock.js.map +1 -0
- package/dist/RichContent.d.ts +4 -2
- package/dist/RichContent.d.ts.map +1 -1
- package/dist/RichContent.js +12 -7
- package/dist/RichContent.js.map +1 -1
- package/dist/TodoBar.d.ts +3 -0
- package/dist/TodoBar.d.ts.map +1 -0
- package/dist/TodoBar.js +163 -0
- package/dist/TodoBar.js.map +1 -0
- package/dist/Transcript.d.ts +2 -1
- package/dist/Transcript.d.ts.map +1 -1
- package/dist/Transcript.js +7 -7
- package/dist/Transcript.js.map +1 -1
- package/dist/agentChat/AgentChat.d.ts +132 -0
- package/dist/agentChat/AgentChat.d.ts.map +1 -0
- package/dist/agentChat/AgentChat.js +588 -0
- package/dist/agentChat/AgentChat.js.map +1 -0
- package/dist/agentChat/OptionsDrawer.d.ts +81 -0
- package/dist/agentChat/OptionsDrawer.d.ts.map +1 -0
- package/dist/agentChat/OptionsDrawer.js +321 -0
- package/dist/agentChat/OptionsDrawer.js.map +1 -0
- package/dist/agentChat/SkillsSection.d.ts +3 -0
- package/dist/agentChat/SkillsSection.d.ts.map +1 -0
- package/dist/agentChat/SkillsSection.js +86 -0
- package/dist/agentChat/SkillsSection.js.map +1 -0
- package/dist/agentChat/controller.d.ts +116 -0
- package/dist/agentChat/controller.d.ts.map +1 -0
- package/dist/agentChat/controller.js +25 -0
- package/dist/agentChat/controller.js.map +1 -0
- package/dist/agentChat/skillRunner.d.ts +14 -0
- package/dist/agentChat/skillRunner.d.ts.map +1 -0
- package/dist/agentChat/skillRunner.js +4 -0
- package/dist/agentChat/skillRunner.js.map +1 -0
- package/dist/commandTurn.d.ts +47 -0
- package/dist/commandTurn.d.ts.map +1 -0
- package/dist/commandTurn.js +64 -0
- package/dist/commandTurn.js.map +1 -0
- package/dist/composerHistory.d.ts +10 -0
- package/dist/composerHistory.d.ts.map +1 -0
- package/dist/composerHistory.js +44 -0
- package/dist/composerHistory.js.map +1 -0
- package/dist/sendLater/SendLater.d.ts +31 -0
- package/dist/sendLater/SendLater.d.ts.map +1 -0
- package/dist/sendLater/SendLater.js +145 -0
- package/dist/sendLater/SendLater.js.map +1 -0
- package/dist/sendLater/queue.d.ts +69 -0
- package/dist/sendLater/queue.d.ts.map +1 -0
- package/dist/sendLater/queue.js +216 -0
- package/dist/sendLater/queue.js.map +1 -0
- package/dist/toolRender.d.ts +8 -0
- package/dist/toolRender.d.ts.map +1 -1
- package/dist/toolRender.js +7 -1
- package/dist/toolRender.js.map +1 -1
- 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":"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"}
|
package/dist/toolRender.d.ts
CHANGED
|
@@ -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
|
package/dist/toolRender.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/toolRender.js
CHANGED
|
@@ -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 &&
|
|
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 = {
|
package/dist/toolRender.js.map
CHANGED
|
@@ -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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"}
|