@indianic/dialout 1.9.0 → 1.11.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/ai-adapters/claude.d.ts.map +1 -1
- package/dist/ai-adapters/claude.js +18 -1
- package/dist/ai-adapters/claude.js.map +1 -1
- package/dist/ai-attachments.d.ts +18 -0
- package/dist/ai-attachments.d.ts.map +1 -0
- package/dist/ai-attachments.js +110 -0
- package/dist/ai-attachments.js.map +1 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +14 -0
- package/dist/websocket.js.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.js +38 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.d.ts +33 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.js +84 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.js +31 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.d.ts +1 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.js +1 -1
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.js +67 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.js +63 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.js +27 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.js +42 -0
- package/node_modules/@indianic/dialout-shared/dist/events.d.ts +1 -0
- package/node_modules/@indianic/dialout-shared/dist/events.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/index.d.ts +4 -1
- package/node_modules/@indianic/dialout-shared/dist/index.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/index.js +15 -1
- package/node_modules/@indianic/dialout-shared/dist/notify.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/notify.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/notify.test.js +51 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.d.ts +17 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.js +27 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.js +184 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.js +21 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.d.ts +9 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.js +38 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.js +30 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.js +95 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.js +38 -0
- package/node_modules/@indianic/dialout-shared/package.json +2 -2
- package/node_modules/@indianic/dialout-shared/src/attachments.test.ts +33 -0
- package/node_modules/@indianic/dialout-shared/src/attachments.ts +82 -0
- package/node_modules/@indianic/dialout-shared/src/chat-blocks.ts +2 -2
- package/node_modules/@indianic/dialout-shared/src/events.ts +5 -1
- package/node_modules/@indianic/dialout-shared/src/index.ts +8 -1
- package/node_modules/@indianic/dialout-shared/src/pane-prompt.test.ts +23 -1
- package/node_modules/@indianic/dialout-shared/src/pane-prompt.ts +27 -0
- package/node_modules/@indianic/dialout-shared/src/thinking.test.ts +32 -0
- package/node_modules/@indianic/dialout-shared/src/thinking.ts +32 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/ai-adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,SAAS,CAAC;AA6BtD,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/ai-adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,SAAS,CAAC;AA6BtD,eAAO,MAAM,aAAa,EAAE,SA0E3B,CAAC"}
|
|
@@ -69,9 +69,26 @@ exports.claudeAdapter = {
|
|
|
69
69
|
ok: !block.is_error, preview: (0, types_1.preview)(textOf(block.content)), at,
|
|
70
70
|
});
|
|
71
71
|
break;
|
|
72
|
+
// Claude Code runs adaptive thinking with a `clear_thinking_20251015`
|
|
73
|
+
// context edit, so the words are stripped from the persisted history
|
|
74
|
+
// and a signed, empty block is left behind — 515 of 615 blocks in one
|
|
75
|
+
// measured session. `redacted_thinking` carries `data` rather than
|
|
76
|
+
// text and is never readable. Either way the record itself still says
|
|
77
|
+
// how long the turn spent thinking, so the row reports the duration
|
|
78
|
+
// instead of rendering as an empty disclosure.
|
|
72
79
|
case 'thinking':
|
|
73
|
-
|
|
80
|
+
case 'redacted_thinking': {
|
|
81
|
+
const text = block.type === 'thinking' ? String(block.thinking || '').trim() : '';
|
|
82
|
+
const ms = typeof rec.thinkingDurationMs === 'number' && rec.thinkingDurationMs > 0
|
|
83
|
+
? rec.thinkingDurationMs
|
|
84
|
+
: 0;
|
|
85
|
+
if (!text && !ms)
|
|
86
|
+
break;
|
|
87
|
+
// `ms` is left off entirely rather than sent as undefined: these
|
|
88
|
+
// cross a socket, and most records carry no duration.
|
|
89
|
+
events.push(ms ? { kind: 'thinking', text, ms, id, at } : { kind: 'thinking', text, id, at });
|
|
74
90
|
break;
|
|
91
|
+
}
|
|
75
92
|
default: {
|
|
76
93
|
// Includes 'text' and any block type a future release introduces.
|
|
77
94
|
// Rendering it as text keeps a new vendor format readable instead of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/ai-adapters/claude.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/ai-adapters/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface AttachmentInput {
|
|
2
|
+
name: string;
|
|
3
|
+
data: string;
|
|
4
|
+
}
|
|
5
|
+
export type AttachmentResult = {
|
|
6
|
+
path: string;
|
|
7
|
+
bytes: number;
|
|
8
|
+
} | {
|
|
9
|
+
error: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function attachmentRoot(home?: string): string;
|
|
12
|
+
/** Delete day-folders older than KEEP_DAYS. Best effort. */
|
|
13
|
+
export declare function pruneAttachments(root: string, now?: Date): string[];
|
|
14
|
+
export declare function saveAttachment(input: AttachmentInput, opts?: {
|
|
15
|
+
home?: string;
|
|
16
|
+
now?: Date;
|
|
17
|
+
}): AttachmentResult;
|
|
18
|
+
//# sourceMappingURL=ai-attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-attachments.d.ts","sourceRoot":"","sources":["../src/ai-attachments.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/D,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,wBAAgB,cAAc,CAAC,IAAI,SAAe,GAAG,MAAM,CAE1D;AAMD,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,MAAM,EAAE,CAazE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAO,GAAG,gBAAgB,CAkBjH"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.attachmentRoot = attachmentRoot;
|
|
37
|
+
exports.pruneAttachments = pruneAttachments;
|
|
38
|
+
exports.saveAttachment = saveAttachment;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const os = __importStar(require("os"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const crypto_1 = require("crypto");
|
|
43
|
+
const dialout_shared_1 = require("@indianic/dialout-shared");
|
|
44
|
+
// Files attached to an AI chat message. The CLI cannot receive a file through
|
|
45
|
+
// its TUI, so the file is written here and the message carries its path (see
|
|
46
|
+
// composeWithAttachments in the shared package).
|
|
47
|
+
//
|
|
48
|
+
// Written under ~/.dialout/attachments/<day>/ and nowhere else: the name is
|
|
49
|
+
// sanitised to [\w.-] with a random prefix, so a client cannot choose the
|
|
50
|
+
// path, overwrite a file, or escape the folder. Owner-only permissions,
|
|
51
|
+
// because screenshots and documents are often private. Old days are removed
|
|
52
|
+
// on the next save, so the folder never grows without bound.
|
|
53
|
+
const KEEP_DAYS = 14;
|
|
54
|
+
function attachmentRoot(home = os.homedir()) {
|
|
55
|
+
return path.join(home, dialout_shared_1.ATTACHMENT_DIR);
|
|
56
|
+
}
|
|
57
|
+
function today(now) {
|
|
58
|
+
return now.toISOString().slice(0, 10);
|
|
59
|
+
}
|
|
60
|
+
/** Delete day-folders older than KEEP_DAYS. Best effort. */
|
|
61
|
+
function pruneAttachments(root, now = new Date()) {
|
|
62
|
+
const removed = [];
|
|
63
|
+
let days = [];
|
|
64
|
+
try {
|
|
65
|
+
days = fs.readdirSync(root);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return removed;
|
|
69
|
+
}
|
|
70
|
+
const cutoff = now.getTime() - KEEP_DAYS * 86_400_000;
|
|
71
|
+
for (const d of days) {
|
|
72
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(d))
|
|
73
|
+
continue;
|
|
74
|
+
const t = Date.parse(`${d}T00:00:00Z`);
|
|
75
|
+
if (Number.isFinite(t) && t < cutoff) {
|
|
76
|
+
try {
|
|
77
|
+
fs.rmSync(path.join(root, d), { recursive: true, force: true });
|
|
78
|
+
removed.push(d);
|
|
79
|
+
}
|
|
80
|
+
catch { /* next time */ }
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return removed;
|
|
84
|
+
}
|
|
85
|
+
function saveAttachment(input, opts = {}) {
|
|
86
|
+
if (!input || typeof input.data !== 'string' || typeof input.name !== 'string')
|
|
87
|
+
return { error: 'name and data are required' };
|
|
88
|
+
// base64 is 4/3 of the bytes: reject oversize before decoding anything.
|
|
89
|
+
if (input.data.length > Math.ceil(dialout_shared_1.ATTACHMENT_MAX_BYTES / 3) * 4 + 4)
|
|
90
|
+
return { error: 'File is too large' };
|
|
91
|
+
const bytes = Buffer.from(input.data, 'base64');
|
|
92
|
+
if (!bytes.length)
|
|
93
|
+
return { error: 'File is empty' };
|
|
94
|
+
if (bytes.length > dialout_shared_1.ATTACHMENT_MAX_BYTES)
|
|
95
|
+
return { error: 'File is too large' };
|
|
96
|
+
const now = opts.now || new Date();
|
|
97
|
+
const root = attachmentRoot(opts.home);
|
|
98
|
+
const dir = path.join(root, today(now));
|
|
99
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
100
|
+
try {
|
|
101
|
+
fs.chmodSync(root, 0o700);
|
|
102
|
+
}
|
|
103
|
+
catch { /* best effort */ }
|
|
104
|
+
const file = path.join(dir, `${(0, crypto_1.randomBytes)(4).toString('hex')}-${(0, dialout_shared_1.safeAttachmentName)(input.name)}`);
|
|
105
|
+
// 'wx': never overwrite, even on the astronomically unlikely prefix clash.
|
|
106
|
+
fs.writeFileSync(file, bytes, { mode: 0o600, flag: 'wx' });
|
|
107
|
+
pruneAttachments(root, now);
|
|
108
|
+
return { path: file, bytes: bytes.length };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=ai-attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-attachments.js","sourceRoot":"","sources":["../src/ai-attachments.ts"],"names":[],"mappings":"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"}
|
package/dist/websocket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA4C,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA4C,MAAM,UAAU,CAAC;AAiCjF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAKvC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,MAAoB,GAAG,MAAM,CAGxF;AAyGD,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAqD3E;AAED,wBAAgB,UAAU,IAAI,IAAI,CAcjC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC"}
|
package/dist/websocket.js
CHANGED
|
@@ -17,6 +17,7 @@ const project_scanner_1 = require("./project-scanner");
|
|
|
17
17
|
const command_runner_1 = require("./command-runner");
|
|
18
18
|
const pty_manager_1 = require("./pty-manager");
|
|
19
19
|
const tmux_manager_1 = require("./tmux-manager");
|
|
20
|
+
const ai_attachments_1 = require("./ai-attachments");
|
|
20
21
|
const ai_sessions_1 = require("./ai-sessions");
|
|
21
22
|
const ai_capabilities_1 = require("./ai-capabilities");
|
|
22
23
|
let ws = null;
|
|
@@ -373,6 +374,19 @@ async function handleMessage(msg, config) {
|
|
|
373
374
|
(0, ai_sessions_1.closeAiSession)(String(msg.tmuxName || ''));
|
|
374
375
|
break;
|
|
375
376
|
}
|
|
377
|
+
case 'ai_attachment_put': {
|
|
378
|
+
// A file attached to a chat message: saved under ~/.dialout/attachments,
|
|
379
|
+
// answered with its path for the client to put in the message.
|
|
380
|
+
let result;
|
|
381
|
+
try {
|
|
382
|
+
result = (0, ai_attachments_1.saveAttachment)({ name: String(msg.name || ''), data: String(msg.data || '') });
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
result = { error: err?.message || 'Could not save the file' };
|
|
386
|
+
}
|
|
387
|
+
ws.send(JSON.stringify({ type: 'ai_attachment_saved', requestId: msg.requestId, ...result }));
|
|
388
|
+
break;
|
|
389
|
+
}
|
|
376
390
|
case 'ai_session_keys': {
|
|
377
391
|
// Answering a prompt: named keys only (validated in sendAiKeys).
|
|
378
392
|
if (msg.tmuxName)
|
package/dist/websocket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-chat-prefs.test.d.ts","sourceRoot":"","sources":["../src/ai-chat-prefs.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const ai_chat_prefs_1 = require("./ai-chat-prefs");
|
|
5
|
+
(0, vitest_1.beforeEach)(() => {
|
|
6
|
+
const store = {};
|
|
7
|
+
vitest_1.vi.stubGlobal('window', {
|
|
8
|
+
localStorage: {
|
|
9
|
+
getItem: (k) => (k in store ? store[k] : null),
|
|
10
|
+
setItem: (k, v) => { store[k] = v; },
|
|
11
|
+
removeItem: (k) => { delete store[k]; },
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.describe)('ai-chat-prefs', () => {
|
|
16
|
+
(0, vitest_1.it)('defaults to hidden and round-trips', () => {
|
|
17
|
+
(0, vitest_1.expect)((0, ai_chat_prefs_1.getFunctionKeysVisible)()).toBe(false);
|
|
18
|
+
(0, ai_chat_prefs_1.setFunctionKeysVisible)(true);
|
|
19
|
+
(0, vitest_1.expect)((0, ai_chat_prefs_1.getFunctionKeysVisible)()).toBe(true);
|
|
20
|
+
(0, ai_chat_prefs_1.setFunctionKeysVisible)(false);
|
|
21
|
+
(0, vitest_1.expect)((0, ai_chat_prefs_1.getFunctionKeysVisible)()).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
// Server render has no window at all; reading must not throw.
|
|
24
|
+
(0, vitest_1.it)('returns the default when there is no window', () => {
|
|
25
|
+
vitest_1.vi.stubGlobal('window', undefined);
|
|
26
|
+
(0, vitest_1.expect)((0, ai_chat_prefs_1.getFunctionKeysVisible)()).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('survives a localStorage that throws (private mode, blocked storage)', () => {
|
|
29
|
+
vitest_1.vi.stubGlobal('window', {
|
|
30
|
+
localStorage: {
|
|
31
|
+
getItem: () => { throw new Error('blocked'); },
|
|
32
|
+
setItem: () => { throw new Error('blocked'); },
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)((0, ai_chat_prefs_1.getFunctionKeysVisible)()).toBe(false);
|
|
36
|
+
(0, vitest_1.expect)(() => (0, ai_chat_prefs_1.setFunctionKeysVisible)(true)).not.toThrow();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Per file. Images from a phone camera fit comfortably; videos do not belong here. */
|
|
2
|
+
export declare const ATTACHMENT_MAX_BYTES: number;
|
|
3
|
+
export declare const ATTACHMENT_MAX_FILES = 8;
|
|
4
|
+
/** Where the agent keeps them, relative to the user's home. */
|
|
5
|
+
export declare const ATTACHMENT_DIR = ".dialout/attachments";
|
|
6
|
+
export declare function isImageName(name: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* A name safe to put on disk and inside a message: letters, digits, dot,
|
|
9
|
+
* dash and underscore only, no leading dots, at most 80 characters with the
|
|
10
|
+
* extension kept. No spaces, so a path never has to be quoted for a CLI.
|
|
11
|
+
*/
|
|
12
|
+
export declare function safeAttachmentName(name: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* The message with its attachments referenced the way each CLI reads them.
|
|
15
|
+
* One line on purpose: a newline typed into a TUI can submit the message
|
|
16
|
+
* half-written.
|
|
17
|
+
*/
|
|
18
|
+
export declare function composeWithAttachments(kind: string, text: string, paths: string[]): string;
|
|
19
|
+
export type AttachmentRef = {
|
|
20
|
+
path: string;
|
|
21
|
+
name: string;
|
|
22
|
+
image: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Pull attachment paths back out of a sent message, so a chat bubble can show
|
|
26
|
+
* them as chips instead of long paths. Only paths inside the attachments
|
|
27
|
+
* folder count; any other path the user typed stays text.
|
|
28
|
+
*/
|
|
29
|
+
export declare function splitAttachments(message: string): {
|
|
30
|
+
text: string;
|
|
31
|
+
files: AttachmentRef[];
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AASA,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AACrD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,+DAA+D;AAC/D,eAAO,MAAM,cAAc,yBAAyB,CAAC;AAIrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAO1F;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAI3E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAsB1F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Files and images attached to an AI chat message.
|
|
3
|
+
//
|
|
4
|
+
// A coding CLI cannot receive a file over its TUI, but every one of them can
|
|
5
|
+
// read a file by path: Claude Code natively (`@/path` mentions, images
|
|
6
|
+
// included), Codex and Grok through their read/view tools. So an attachment
|
|
7
|
+
// is uploaded to the machine the agent runs on, saved under
|
|
8
|
+
// ~/.dialout/attachments, and the message carries its path. The same rules
|
|
9
|
+
// are used by the web app, the phone app and the agent.
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ATTACHMENT_DIR = exports.ATTACHMENT_MAX_FILES = exports.ATTACHMENT_MAX_BYTES = void 0;
|
|
12
|
+
exports.isImageName = isImageName;
|
|
13
|
+
exports.safeAttachmentName = safeAttachmentName;
|
|
14
|
+
exports.composeWithAttachments = composeWithAttachments;
|
|
15
|
+
exports.splitAttachments = splitAttachments;
|
|
16
|
+
/** Per file. Images from a phone camera fit comfortably; videos do not belong here. */
|
|
17
|
+
exports.ATTACHMENT_MAX_BYTES = 15 * 1024 * 1024;
|
|
18
|
+
exports.ATTACHMENT_MAX_FILES = 8;
|
|
19
|
+
/** Where the agent keeps them, relative to the user's home. */
|
|
20
|
+
exports.ATTACHMENT_DIR = '.dialout/attachments';
|
|
21
|
+
const IMAGE_EXT = /\.(png|jpe?g|gif|webp|heic|heif|bmp|svg)$/i;
|
|
22
|
+
function isImageName(name) {
|
|
23
|
+
return IMAGE_EXT.test(name);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A name safe to put on disk and inside a message: letters, digits, dot,
|
|
27
|
+
* dash and underscore only, no leading dots, at most 80 characters with the
|
|
28
|
+
* extension kept. No spaces, so a path never has to be quoted for a CLI.
|
|
29
|
+
*/
|
|
30
|
+
function safeAttachmentName(name) {
|
|
31
|
+
const base = String(name || '').split(/[\\/]/).pop() || '';
|
|
32
|
+
const dot = base.lastIndexOf('.');
|
|
33
|
+
const ext = dot > 0 ? base.slice(dot).toLowerCase().replace(/[^a-z0-9.]/g, '').slice(0, 10) : '';
|
|
34
|
+
const stem = (dot > 0 ? base.slice(0, dot) : base)
|
|
35
|
+
.normalize('NFKD').replace(/[\u0300-\u036f]/g, '').replace(/[^\w.-]+/g, '-').replace(/^[.-]+|[.-]+$/g, '').replace(/-{2,}/g, '-')
|
|
36
|
+
.slice(0, 80 - ext.length);
|
|
37
|
+
return `${stem || 'file'}${ext}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The message with its attachments referenced the way each CLI reads them.
|
|
41
|
+
* One line on purpose: a newline typed into a TUI can submit the message
|
|
42
|
+
* half-written.
|
|
43
|
+
*/
|
|
44
|
+
function composeWithAttachments(kind, text, paths) {
|
|
45
|
+
const body = text.replace(/\s*\n+\s*/g, ' ').trim();
|
|
46
|
+
if (!paths.length)
|
|
47
|
+
return body;
|
|
48
|
+
const refs = kind === 'claude'
|
|
49
|
+
? paths.map((p) => `@${p}`).join(' ')
|
|
50
|
+
: `(attached: ${paths.join(', ')})`;
|
|
51
|
+
return body ? `${body} ${refs}` : refs;
|
|
52
|
+
}
|
|
53
|
+
const IN_DIR = /^(?:~|\/[^\s,()]*?)\/\.dialout\/attachments\/[^\s,()]+$/;
|
|
54
|
+
/**
|
|
55
|
+
* Pull attachment paths back out of a sent message, so a chat bubble can show
|
|
56
|
+
* them as chips instead of long paths. Only paths inside the attachments
|
|
57
|
+
* folder count; any other path the user typed stays text.
|
|
58
|
+
*/
|
|
59
|
+
function splitAttachments(message) {
|
|
60
|
+
const files = [];
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
const text = message
|
|
63
|
+
.replace(/\(attached:\s*([^)]*)\)/g, (whole, list) => {
|
|
64
|
+
const paths = list.split(',').map((s) => s.trim()).filter((s) => IN_DIR.test(s));
|
|
65
|
+
if (!paths.length)
|
|
66
|
+
return whole;
|
|
67
|
+
for (const p of paths)
|
|
68
|
+
add(p);
|
|
69
|
+
return '';
|
|
70
|
+
})
|
|
71
|
+
.replace(/@?((?:~|\/[^\s,()]*?)\/\.dialout\/attachments\/[^\s,()]+)/g, (_w, p) => { add(p); return ''; })
|
|
72
|
+
.replace(/\s{2,}/g, ' ')
|
|
73
|
+
.trim();
|
|
74
|
+
function add(p) {
|
|
75
|
+
if (seen.has(p))
|
|
76
|
+
return;
|
|
77
|
+
seen.add(p);
|
|
78
|
+
const file = p.split('/').pop() || p;
|
|
79
|
+
// Saved names carry an 8-character id prefix ("a1b2c3d4-shot.png").
|
|
80
|
+
const name = file.replace(/^[0-9a-f]{8}-/, '');
|
|
81
|
+
files.push({ path: p, name, image: isImageName(name) });
|
|
82
|
+
}
|
|
83
|
+
return { text, files };
|
|
84
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.test.d.ts","sourceRoot":"","sources":["../src/attachments.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const attachments_1 = require("./attachments");
|
|
5
|
+
const P1 = '/Users/me/.dialout/attachments/2026-10-21/a1b2c3d4-shot.png';
|
|
6
|
+
const P2 = '/Users/me/.dialout/attachments/2026-10-21/0f0f0f0f-spec.pdf';
|
|
7
|
+
(0, vitest_1.describe)('attachments', () => {
|
|
8
|
+
(0, vitest_1.it)('makes names safe for disk and for a CLI line', () => {
|
|
9
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('Screen Shot 2026-10-21 at 3.04 PM.PNG')).toBe('Screen-Shot-2026-10-21-at-3.04-PM.png');
|
|
10
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('../../etc/passwd')).toBe('passwd');
|
|
11
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('.env')).toBe('env');
|
|
12
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('')).toBe('file');
|
|
13
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('a'.repeat(200) + '.jpeg').length).toBeLessThanOrEqual(80);
|
|
14
|
+
(0, vitest_1.expect)((0, attachments_1.safeAttachmentName)('résumé (final).pdf')).toBe('resume-final.pdf');
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('references files the way each CLI reads them, on one line', () => {
|
|
17
|
+
(0, vitest_1.expect)((0, attachments_1.composeWithAttachments)('claude', 'Fix this\nlayout', [P1])).toBe(`Fix this layout @${P1}`);
|
|
18
|
+
(0, vitest_1.expect)((0, attachments_1.composeWithAttachments)('codex', 'Look', [P1, P2])).toBe(`Look (attached: ${P1}, ${P2})`);
|
|
19
|
+
(0, vitest_1.expect)((0, attachments_1.composeWithAttachments)('claude', '', [P1])).toBe(`@${P1}`);
|
|
20
|
+
(0, vitest_1.expect)((0, attachments_1.composeWithAttachments)('grok', 'hi', [])).toBe('hi');
|
|
21
|
+
});
|
|
22
|
+
(0, vitest_1.it)('turns references back into chips, leaving other paths alone', () => {
|
|
23
|
+
const a = (0, attachments_1.splitAttachments)((0, attachments_1.composeWithAttachments)('claude', 'Fix /src/app.ts please', [P1, P2]));
|
|
24
|
+
(0, vitest_1.expect)(a.text).toBe('Fix /src/app.ts please');
|
|
25
|
+
(0, vitest_1.expect)(a.files.map((f) => [f.name, f.image])).toEqual([['shot.png', true], ['spec.pdf', false]]);
|
|
26
|
+
const b = (0, attachments_1.splitAttachments)((0, attachments_1.composeWithAttachments)('codex', 'Look', [P1]));
|
|
27
|
+
(0, vitest_1.expect)(b.text).toBe('Look');
|
|
28
|
+
(0, vitest_1.expect)(b.files[0].path).toBe(P1);
|
|
29
|
+
(0, vitest_1.expect)((0, attachments_1.splitAttachments)('nothing here (attached: soon)').text).toBe('nothing here (attached: soon)');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-blocks.d.ts","sourceRoot":"","sources":["../src/chat-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAM,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAK,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"chat-blocks.d.ts","sourceRoot":"","sources":["../src/chat-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAM,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAK,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAI,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CA0D1D;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAE9D"}
|
|
@@ -47,7 +47,7 @@ function groupEvents(events) {
|
|
|
47
47
|
return; // orphan result: drop it rather than invent a row
|
|
48
48
|
}
|
|
49
49
|
if (e.kind === 'thinking') {
|
|
50
|
-
blocks.push({ kind: 'thinking', key, text: e.text || '' });
|
|
50
|
+
blocks.push({ kind: 'thinking', key, text: e.text || '', ms: e.ms });
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
if (e.kind === 'state') {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-blocks.test.d.ts","sourceRoot":"","sources":["../src/chat-blocks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const chat_blocks_1 = require("./chat-blocks");
|
|
5
|
+
const call = (id, name) => ({ kind: 'tool_call', id, name, summary: `${name} thing` });
|
|
6
|
+
const result = (forId, ok = true) => ({ kind: 'tool_result', forId, ok, preview: 'line1\nline2' });
|
|
7
|
+
const msg = (role, text, id = text) => ({ kind: 'message', role, text, id });
|
|
8
|
+
(0, vitest_1.describe)('groupEvents', () => {
|
|
9
|
+
(0, vitest_1.it)('merges consecutive tool calls into one block', () => {
|
|
10
|
+
const blocks = (0, chat_blocks_1.groupEvents)([call('a', 'Read'), call('b', 'Bash')]);
|
|
11
|
+
(0, vitest_1.expect)(blocks).toHaveLength(1);
|
|
12
|
+
(0, vitest_1.expect)(blocks[0].kind).toBe('tools');
|
|
13
|
+
if (blocks[0].kind === 'tools')
|
|
14
|
+
(0, vitest_1.expect)(blocks[0].items).toHaveLength(2);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('splits tool blocks when a message comes between them', () => {
|
|
17
|
+
const blocks = (0, chat_blocks_1.groupEvents)([
|
|
18
|
+
call('a', 'Read'), msg('assistant', 'hello'), call('b', 'Bash'),
|
|
19
|
+
]);
|
|
20
|
+
(0, vitest_1.expect)(blocks.map((b) => b.kind)).toEqual(['tools', 'assistant', 'tools']);
|
|
21
|
+
});
|
|
22
|
+
(0, vitest_1.it)('attaches a result to its call by forId', () => {
|
|
23
|
+
const blocks = (0, chat_blocks_1.groupEvents)([call('a', 'Read'), call('b', 'Bash'), result('a', false)]);
|
|
24
|
+
if (blocks[0].kind !== 'tools')
|
|
25
|
+
throw new Error('expected tools');
|
|
26
|
+
(0, vitest_1.expect)(blocks[0].items[0].ok).toBe(false);
|
|
27
|
+
(0, vitest_1.expect)(blocks[0].items[0].resultLines).toBe(2);
|
|
28
|
+
(0, vitest_1.expect)(blocks[0].items[1].ok).toBe(null); // no result yet
|
|
29
|
+
});
|
|
30
|
+
// A result whose call was never seen must not crash or invent a row.
|
|
31
|
+
(0, vitest_1.it)('ignores an orphan result', () => {
|
|
32
|
+
(0, vitest_1.expect)((0, chat_blocks_1.groupEvents)([result('nope')])).toHaveLength(0);
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)('keeps a lone tool call', () => {
|
|
35
|
+
const blocks = (0, chat_blocks_1.groupEvents)([call('a', 'Read')]);
|
|
36
|
+
(0, vitest_1.expect)(blocks).toHaveLength(1);
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('collapses repeated identical statuses to one divider', () => {
|
|
39
|
+
const blocks = (0, chat_blocks_1.groupEvents)([
|
|
40
|
+
{ kind: 'state', status: 'working' },
|
|
41
|
+
{ kind: 'state', status: 'working' },
|
|
42
|
+
{ kind: 'state', status: 'waiting_approval' },
|
|
43
|
+
]);
|
|
44
|
+
(0, vitest_1.expect)(blocks.map((b) => b.kind)).toEqual(['status', 'status']);
|
|
45
|
+
if (blocks[1].kind === 'status')
|
|
46
|
+
(0, vitest_1.expect)(blocks[1].status).toBe('waiting_approval');
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('separates user and assistant messages into their own blocks', () => {
|
|
49
|
+
const blocks = (0, chat_blocks_1.groupEvents)([msg('user', 'hi'), msg('assistant', 'hello')]);
|
|
50
|
+
(0, vitest_1.expect)(blocks.map((b) => b.kind)).toEqual(['user', 'assistant']);
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('gives every block a stable unique key', () => {
|
|
53
|
+
const blocks = (0, chat_blocks_1.groupEvents)([msg('user', 'hi'), call('a', 'Read'), call('b', 'Bash')]);
|
|
54
|
+
const keys = blocks.map((b) => b.key);
|
|
55
|
+
(0, vitest_1.expect)(new Set(keys).size).toBe(keys.length);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.describe)('toolGroupStartsOpen', () => {
|
|
59
|
+
const item = (ok) => ({ id: 'x', name: 'Bash', summary: '', ok, resultPreview: null, resultLines: null });
|
|
60
|
+
(0, vitest_1.it)('is closed for successes and calls still running', () => {
|
|
61
|
+
(0, vitest_1.expect)((0, chat_blocks_1.toolGroupStartsOpen)([item(true), item(null)])).toBe(false);
|
|
62
|
+
(0, vitest_1.expect)((0, chat_blocks_1.toolGroupStartsOpen)([])).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('is open as soon as one item failed', () => {
|
|
65
|
+
(0, vitest_1.expect)((0, chat_blocks_1.toolGroupStartsOpen)([item(true), item(false)])).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
});
|