coolhand-cli 0.11.1 → 0.13.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/README.md +13 -1
- package/dist/api/client-file-client.d.ts +19 -0
- package/dist/api/client-file-client.d.ts.map +1 -0
- package/dist/api/client-file-client.js +47 -0
- package/dist/api/client-file-client.js.map +1 -0
- package/dist/api/help-center-client.d.ts +26 -0
- package/dist/api/help-center-client.d.ts.map +1 -0
- package/dist/api/help-center-client.js +90 -0
- package/dist/api/help-center-client.js.map +1 -0
- package/dist/api/last-sync.d.ts.map +1 -1
- package/dist/api/last-sync.js +2 -1
- package/dist/api/last-sync.js.map +1 -1
- package/dist/api/workload-client.d.ts +16 -0
- package/dist/api/workload-client.d.ts.map +1 -0
- package/dist/api/workload-client.js +28 -0
- package/dist/api/workload-client.js.map +1 -0
- package/dist/auth/callback-server.d.ts.map +1 -1
- package/dist/auth/callback-server.js +13 -1
- package/dist/auth/callback-server.js.map +1 -1
- package/dist/auto-update/index.d.ts +61 -0
- package/dist/auto-update/index.d.ts.map +1 -0
- package/dist/auto-update/index.js +355 -0
- package/dist/auto-update/index.js.map +1 -0
- package/dist/auto-update/select.d.ts +28 -0
- package/dist/auto-update/select.d.ts.map +1 -0
- package/dist/auto-update/select.js +45 -0
- package/dist/auto-update/select.js.map +1 -0
- package/dist/auto-update/state.d.ts +25 -0
- package/dist/auto-update/state.d.ts.map +1 -0
- package/dist/auto-update/state.js +81 -0
- package/dist/auto-update/state.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +525 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/capture-turn.d.ts +18 -0
- package/dist/commands/capture-turn.d.ts.map +1 -0
- package/dist/commands/capture-turn.js +152 -0
- package/dist/commands/capture-turn.js.map +1 -0
- package/dist/commands/download-client-file.d.ts +9 -0
- package/dist/commands/download-client-file.d.ts.map +1 -0
- package/dist/commands/download-client-file.js +71 -0
- package/dist/commands/download-client-file.js.map +1 -0
- package/dist/commands/fetch-log.d.ts.map +1 -1
- package/dist/commands/fetch-log.js +9 -0
- package/dist/commands/fetch-log.js.map +1 -1
- package/dist/commands/flush-pending.d.ts.map +1 -1
- package/dist/commands/flush-pending.js +1 -30
- package/dist/commands/flush-pending.js.map +1 -1
- package/dist/commands/get-help-article.d.ts +3 -0
- package/dist/commands/get-help-article.d.ts.map +1 -0
- package/dist/commands/get-help-article.js +49 -0
- package/dist/commands/get-help-article.js.map +1 -0
- package/dist/commands/get-template.d.ts.map +1 -1
- package/dist/commands/get-template.js +18 -1
- package/dist/commands/get-template.js.map +1 -1
- package/dist/commands/link-feedback.d.ts +5 -0
- package/dist/commands/link-feedback.d.ts.map +1 -0
- package/dist/commands/link-feedback.js +89 -0
- package/dist/commands/link-feedback.js.map +1 -0
- package/dist/commands/list-client-files.d.ts +3 -0
- package/dist/commands/list-client-files.d.ts.map +1 -0
- package/dist/commands/list-client-files.js +55 -0
- package/dist/commands/list-client-files.js.map +1 -0
- package/dist/commands/list-help-categories.d.ts +3 -0
- package/dist/commands/list-help-categories.d.ts.map +1 -0
- package/dist/commands/list-help-categories.js +47 -0
- package/dist/commands/list-help-categories.js.map +1 -0
- package/dist/commands/search-help-articles.d.ts +3 -0
- package/dist/commands/search-help-articles.d.ts.map +1 -0
- package/dist/commands/search-help-articles.js +73 -0
- package/dist/commands/search-help-articles.js.map +1 -0
- package/dist/commands/search-logs.d.ts.map +1 -1
- package/dist/commands/search-logs.js +26 -0
- package/dist/commands/search-logs.js.map +1 -1
- package/dist/commands/search-templates.d.ts.map +1 -1
- package/dist/commands/search-templates.js +12 -0
- package/dist/commands/search-templates.js.map +1 -1
- package/dist/commands/search-workloads.d.ts +3 -0
- package/dist/commands/search-workloads.d.ts.map +1 -0
- package/dist/commands/search-workloads.js +79 -0
- package/dist/commands/search-workloads.js.map +1 -0
- package/dist/commands/update-client-file.d.ts +3 -0
- package/dist/commands/update-client-file.d.ts.map +1 -0
- package/dist/commands/update-client-file.js +39 -0
- package/dist/commands/update-client-file.js.map +1 -0
- package/dist/commands/update.d.ts +9 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +63 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +25 -7
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/format-cost.d.ts +9 -0
- package/dist/format-cost.d.ts.map +1 -0
- package/dist/format-cost.js +22 -0
- package/dist/format-cost.js.map +1 -0
- package/dist/hooks/adapters/claude.d.ts +12 -0
- package/dist/hooks/adapters/claude.d.ts.map +1 -0
- package/dist/hooks/adapters/claude.js +98 -0
- package/dist/hooks/adapters/claude.js.map +1 -0
- package/dist/hooks/adapters/copilot.d.ts +15 -0
- package/dist/hooks/adapters/copilot.d.ts.map +1 -0
- package/dist/hooks/adapters/copilot.js +96 -0
- package/dist/hooks/adapters/copilot.js.map +1 -0
- package/dist/hooks/adapters/index.d.ts +5 -0
- package/dist/hooks/adapters/index.d.ts.map +1 -0
- package/dist/hooks/adapters/index.js +8 -0
- package/dist/hooks/adapters/index.js.map +1 -0
- package/dist/hooks/adapters/shared.d.ts +25 -0
- package/dist/hooks/adapters/shared.d.ts.map +1 -0
- package/dist/hooks/adapters/shared.js +37 -0
- package/dist/hooks/adapters/shared.js.map +1 -0
- package/dist/hooks/disabled.d.ts +3 -0
- package/dist/hooks/disabled.d.ts.map +1 -0
- package/dist/hooks/disabled.js +5 -0
- package/dist/hooks/disabled.js.map +1 -0
- package/dist/hooks/hook-log.d.ts +7 -0
- package/dist/hooks/hook-log.d.ts.map +1 -0
- package/dist/hooks/hook-log.js +34 -0
- package/dist/hooks/hook-log.js.map +1 -0
- package/dist/hooks/identity.d.ts +21 -0
- package/dist/hooks/identity.d.ts.map +1 -0
- package/dist/hooks/identity.js +121 -0
- package/dist/hooks/identity.js.map +1 -0
- package/dist/hooks/log-turn.d.ts +23 -0
- package/dist/hooks/log-turn.d.ts.map +1 -0
- package/dist/hooks/log-turn.js +48 -0
- package/dist/hooks/log-turn.js.map +1 -0
- package/dist/hooks/send-turn.d.ts +32 -0
- package/dist/hooks/send-turn.d.ts.map +1 -0
- package/dist/hooks/send-turn.js +305 -0
- package/dist/hooks/send-turn.js.map +1 -0
- package/dist/hooks/silence.d.ts +7 -0
- package/dist/hooks/silence.d.ts.map +1 -0
- package/dist/hooks/silence.js +22 -0
- package/dist/hooks/silence.js.map +1 -0
- package/dist/hooks/stdin.d.ts +11 -0
- package/dist/hooks/stdin.d.ts.map +1 -0
- package/dist/hooks/stdin.js +51 -0
- package/dist/hooks/stdin.js.map +1 -0
- package/dist/hooks/turn-state.d.ts +40 -0
- package/dist/hooks/turn-state.d.ts.map +1 -0
- package/dist/hooks/turn-state.js +97 -0
- package/dist/hooks/turn-state.js.map +1 -0
- package/dist/hooks/types.d.ts +74 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +3 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +12 -1
- package/dist/logger.js.map +1 -1
- package/dist/pending-store.d.ts +22 -2
- package/dist/pending-store.d.ts.map +1 -1
- package/dist/pending-store.js +25 -3
- package/dist/pending-store.js.map +1 -1
- package/dist/pending-upload.d.ts +12 -0
- package/dist/pending-upload.d.ts.map +1 -0
- package/dist/pending-upload.js +51 -0
- package/dist/pending-upload.js.map +1 -0
- package/dist/sessions/blocks.d.ts +51 -0
- package/dist/sessions/blocks.d.ts.map +1 -0
- package/dist/sessions/blocks.js +193 -0
- package/dist/sessions/blocks.js.map +1 -0
- package/dist/sessions/claude-scanner.d.ts +60 -1
- package/dist/sessions/claude-scanner.d.ts.map +1 -1
- package/dist/sessions/claude-scanner.js +277 -1
- package/dist/sessions/claude-scanner.js.map +1 -1
- package/dist/sessions/copilot-scanner.d.ts +27 -0
- package/dist/sessions/copilot-scanner.d.ts.map +1 -0
- package/dist/sessions/copilot-scanner.js +171 -0
- package/dist/sessions/copilot-scanner.js.map +1 -0
- package/dist/sessions/redact-secrets.d.ts.map +1 -1
- package/dist/sessions/redact-secrets.js +49 -10
- package/dist/sessions/redact-secrets.js.map +1 -1
- package/dist/sessions/turn-envelope.d.ts +62 -0
- package/dist/sessions/turn-envelope.d.ts.map +1 -0
- package/dist/sessions/turn-envelope.js +182 -0
- package/dist/sessions/turn-envelope.js.map +1 -0
- package/dist/sessions/usage.d.ts +23 -0
- package/dist/sessions/usage.d.ts.map +1 -0
- package/dist/sessions/usage.js +56 -0
- package/dist/sessions/usage.js.map +1 -0
- package/dist/skills/skill-scanner.d.ts.map +1 -1
- package/dist/skills/skill-scanner.js +3 -1
- package/dist/skills/skill-scanner.js.map +1 -1
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/package.json +7 -4
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { type ContentBlock, type RawMessage } from './blocks.js';
|
|
2
|
+
import { type SubagentUsage, type Usage } from './usage.js';
|
|
1
3
|
import type { SessionFileMeta } from './session-filter.js';
|
|
2
4
|
/** One message in the reconstructed conversation. */
|
|
3
5
|
export interface ConversationMessage {
|
|
4
6
|
role: string;
|
|
5
|
-
content
|
|
7
|
+
/** A plain string, or content blocks (thinking, tool calls and results) for hook-captured turns. */
|
|
8
|
+
content: string | ContentBlock[];
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
8
11
|
* An Anthropic-shaped envelope for ONE whole Claude Code session (a conversation). The server's
|
|
@@ -18,6 +21,8 @@ export interface CaptureEnvelope {
|
|
|
18
21
|
status_code: number;
|
|
19
22
|
request_body: {
|
|
20
23
|
model?: string;
|
|
24
|
+
/** The skill's text, for hook-captured turns. */
|
|
25
|
+
system?: string;
|
|
21
26
|
messages: ConversationMessage[];
|
|
22
27
|
};
|
|
23
28
|
response_body: {
|
|
@@ -57,6 +62,60 @@ export declare function defaultProjectsDir(): string;
|
|
|
57
62
|
* exactly once, matching benchmark/lib/transcript.mjs.
|
|
58
63
|
*/
|
|
59
64
|
export declare function parseTranscript(content: string, sessionId: string): CaptureEnvelope | null;
|
|
65
|
+
/** The most recent user prompt and the assistant's final reply to it, as plain text. */
|
|
66
|
+
export interface LastTurn {
|
|
67
|
+
userText?: string;
|
|
68
|
+
assistantText?: string;
|
|
69
|
+
model?: string;
|
|
70
|
+
/** The final assistant message's request id: unique per model call, so it tells a repeated
|
|
71
|
+
* identical turn from a hook that fired twice for one turn. */
|
|
72
|
+
assistantKey?: string;
|
|
73
|
+
}
|
|
74
|
+
/** One user prompt and the assistant's final text reply to it, as plain text. */
|
|
75
|
+
export interface Exchange {
|
|
76
|
+
/** Undefined for a prompt with no text of its own (e.g. an image), or an assistant reply with no prompt in view. */
|
|
77
|
+
userText?: string;
|
|
78
|
+
/** When the user line was written (ISO 8601), straight from the transcript. */
|
|
79
|
+
timestamp?: string;
|
|
80
|
+
assistantText?: string;
|
|
81
|
+
/** Request id of the message `assistantText` came from. */
|
|
82
|
+
assistantKey?: string;
|
|
83
|
+
/** Tokens the main-thread assistant messages of this exchange spent (each message counted once). */
|
|
84
|
+
usage?: Usage;
|
|
85
|
+
/** What subagents (Agent tool calls) made during this exchange spent, per model. */
|
|
86
|
+
subagents?: SubagentUsage;
|
|
87
|
+
/**
|
|
88
|
+
* Everything after the user's prompt, in order, as the transcript has it: each model call's blocks
|
|
89
|
+
* (thinking, text, tool calls) merged into one assistant message, and each batch of tool results as a
|
|
90
|
+
* user message. Raw: redacted and capped only when sent (see `sanitizeMessage`).
|
|
91
|
+
*/
|
|
92
|
+
messages?: RawMessage[];
|
|
93
|
+
/** The skill body Claude Code injected after a slash command (`/skill`), if this exchange invoked one. */
|
|
94
|
+
skill?: {
|
|
95
|
+
dir: string;
|
|
96
|
+
text: string;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export interface ParsedExchanges {
|
|
100
|
+
exchanges: Exchange[];
|
|
101
|
+
/** The latest real model name seen on an assistant line. */
|
|
102
|
+
model?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Walk a transcript (or a window of one — a leading partial line is skipped like any other
|
|
106
|
+
* unparseable line) and return its user→assistant exchanges in order. Each exchange carries its prompt and reply text and
|
|
107
|
+
* its `messages` (raw blocks: thinking, tool calls and results included). Synthetic `isMeta` user lines (injected skill bodies,
|
|
108
|
+
* caveats), compaction summaries, interrupt markers and subagent (sidechain) traffic are not prompts.
|
|
109
|
+
* A typed slash command is recovered as typed. Pure function, never throws.
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseExchanges(content: string): ParsedExchanges;
|
|
112
|
+
/** The latest exchange of already-parsed exchanges, in the shape the Stop-hook adapter wants. */
|
|
113
|
+
export declare function lastTurnFrom(parsed: ParsedExchanges): LastTurn;
|
|
114
|
+
/**
|
|
115
|
+
* Pull the latest user prompt and the final assistant message out of a transcript (or a window of
|
|
116
|
+
* one). Text only, the final reply's blocks aside. Pure function, never throws.
|
|
117
|
+
*/
|
|
118
|
+
export declare function extractLastTurn(content: string): LastTurn;
|
|
60
119
|
/**
|
|
61
120
|
* Find every Claude Code transcript under `projectsDir` (default `~/.claude/projects`) and build one
|
|
62
121
|
* conversation envelope per session. A missing directory simply yields zero sessions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-scanner.d.ts","sourceRoot":"","sources":["../../src/sessions/claude-scanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-scanner.d.ts","sourceRoot":"","sources":["../../src/sessions/claude-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import * as os from 'os';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { redactSecrets } from './redact-secrets.js';
|
|
5
|
+
import { sanitizeInput } from './blocks.js';
|
|
6
|
+
import { addSubagent, addUsage, emptySubagentUsage, emptyUsage } from './usage.js';
|
|
5
7
|
/** Cap on a single serialised tool input/output. Edit/Write inputs carry whole file bodies. */
|
|
6
8
|
const MAX_BLOCK_CHARS = 2000;
|
|
7
9
|
export function defaultProjectsDir() {
|
|
@@ -113,7 +115,10 @@ function sanitizeResponseBlocks(blocks) {
|
|
|
113
115
|
if (type === 'thinking' || type === 'redacted_thinking') {
|
|
114
116
|
continue;
|
|
115
117
|
}
|
|
116
|
-
|
|
118
|
+
const redacted = redactDeep(block);
|
|
119
|
+
// A tool call's input needs the key-aware scrub: `redactDeep` only sees each string alone, so
|
|
120
|
+
// `{ password: 'x' }` would pass.
|
|
121
|
+
out.push(type === 'tool_use' && 'input' in redacted ? { ...redacted, input: sanitizeInput(block.input) } : redacted);
|
|
117
122
|
}
|
|
118
123
|
return out;
|
|
119
124
|
}
|
|
@@ -255,6 +260,277 @@ export function parseTranscript(content, sessionId) {
|
|
|
255
260
|
projectPath,
|
|
256
261
|
};
|
|
257
262
|
}
|
|
263
|
+
function isToolResultBlock(block) {
|
|
264
|
+
return !!block && typeof block === 'object' && block.type === 'tool_result';
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Claude Code stores a typed slash command as markup, e.g.
|
|
268
|
+
* <command-message>loop-review</command-message>
|
|
269
|
+
* <command-name>/loop-review</command-name>
|
|
270
|
+
* <command-args>high --max-rounds 3</command-args>
|
|
271
|
+
* (tags in either order, `<command-args>` present but empty when nothing was typed). The prompt the
|
|
272
|
+
* user actually typed is `/loop-review high --max-rounds 3`, so that is what is recorded.
|
|
273
|
+
*/
|
|
274
|
+
function slashCommandPrompt(text) {
|
|
275
|
+
// Claude Code's own line starts with the markup; a prompt that merely quotes it is left alone.
|
|
276
|
+
const head = text.trimStart();
|
|
277
|
+
if (!head.startsWith('<command-name>') && !head.startsWith('<command-message>')) {
|
|
278
|
+
return text;
|
|
279
|
+
}
|
|
280
|
+
const tag = (name) => new RegExp(`<${name}>([\\s\\S]*?)</${name}>`).exec(text)?.[1]?.trim();
|
|
281
|
+
const command = tag('command-name') ?? (tag('command-message') ? `/${tag('command-message')}` : undefined);
|
|
282
|
+
if (!command) {
|
|
283
|
+
return text;
|
|
284
|
+
}
|
|
285
|
+
const args = tag('command-args');
|
|
286
|
+
return args ? `${command} ${args}` : command;
|
|
287
|
+
}
|
|
288
|
+
/** Lines Claude Code writes as user messages that the user didn't type. */
|
|
289
|
+
function isInterruptMarker(text) {
|
|
290
|
+
return text.startsWith('[Request interrupted by user');
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* The OUTPUT of a local command (`/compact`, `/context`, `/status`, `/cost`, …) or of bash mode
|
|
294
|
+
* (`!cmd`) is stored as a non-meta user line. It is not something the user typed and can hold account
|
|
295
|
+
* details, paths and tool config, so it is never a prompt and is never uploaded.
|
|
296
|
+
*/
|
|
297
|
+
const COMMAND_OUTPUT_TAGS = ['<local-command-stdout>', '<local-command-stderr>', '<bash-input>', '<bash-stdout>', '<bash-stderr>'];
|
|
298
|
+
function isCommandOutput(text) {
|
|
299
|
+
const head = text.trimStart();
|
|
300
|
+
return COMMAND_OUTPUT_TAGS.some((tag) => head.startsWith(tag));
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Host- and harness-injected context that rides in user lines but was never typed: Conductor's
|
|
304
|
+
* `<system_instruction>`, background-task `<task-notification>`s, `<system-reminder>`s and the IDE
|
|
305
|
+
* extension's `<ide_opened_file>` / `<ide_selection>` blocks. They carry file paths, selected code
|
|
306
|
+
* and workspace details, and a hook that re-uploads the conversation every turn would send them again
|
|
307
|
+
* and again. Removed before anything is recorded.
|
|
308
|
+
*/
|
|
309
|
+
const INJECTED_TAGS = '(?:system_instruction|system-reminder|task-notification|local-command-caveat|user-prompt-submit-hook|ide_[a-z_]+)';
|
|
310
|
+
/**
|
|
311
|
+
* Remove `<tag>…</tag>` elements of the injected kinds above. A single left-to-right pass: for each
|
|
312
|
+
* opening tag it looks once, forwards, for that tag's closer; an opening tag with no closer takes the
|
|
313
|
+
* rest of the text with it (fail closed). Linear in the length of the text — a regex with a lazy
|
|
314
|
+
* `[\s\S]*?` per opener is quadratic on a pasted log full of unclosed tags, and this runs over up to
|
|
315
|
+
* 8 MB of transcript inside a hook with a timeout. It also means a prompt that merely discusses one of
|
|
316
|
+
* these tags loses the rest of that text: the cost of failing closed.
|
|
317
|
+
*/
|
|
318
|
+
function stripInjectedContext(text) {
|
|
319
|
+
const opener = new RegExp(`<(${INJECTED_TAGS})>`, 'g');
|
|
320
|
+
let out = '';
|
|
321
|
+
let from = 0;
|
|
322
|
+
for (;;) {
|
|
323
|
+
opener.lastIndex = from;
|
|
324
|
+
const match = opener.exec(text);
|
|
325
|
+
if (!match) {
|
|
326
|
+
out += text.slice(from);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
out += text.slice(from, match.index);
|
|
330
|
+
const closer = `</${match[1]}>`;
|
|
331
|
+
const end = text.indexOf(closer, match.index + match[0].length);
|
|
332
|
+
if (end < 0) {
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
from = end + closer.length;
|
|
336
|
+
}
|
|
337
|
+
return out.trim();
|
|
338
|
+
}
|
|
339
|
+
/** All the text of a message's content, untouched: a string, or the `text` blocks of an array. */
|
|
340
|
+
function rawText(content) {
|
|
341
|
+
if (typeof content === 'string') {
|
|
342
|
+
return content;
|
|
343
|
+
}
|
|
344
|
+
if (Array.isArray(content)) {
|
|
345
|
+
return content
|
|
346
|
+
.map((b) => (b && typeof b === 'object' && b.type === 'text' ? String(b.text ?? '') : ''))
|
|
347
|
+
.join('\n');
|
|
348
|
+
}
|
|
349
|
+
return '';
|
|
350
|
+
}
|
|
351
|
+
const SKILL_BODY_PREFIX = 'Base directory for this skill:';
|
|
352
|
+
/**
|
|
353
|
+
* Claude Code injects an invoked skill as a meta user line: `Base directory for this skill: <dir>`,
|
|
354
|
+
* a blank line, then the skill's text. The directory (a local path) is kept apart from the text.
|
|
355
|
+
*/
|
|
356
|
+
function parseSkillBody(text) {
|
|
357
|
+
const trimmed = text.trimStart();
|
|
358
|
+
if (!trimmed.startsWith(SKILL_BODY_PREFIX)) {
|
|
359
|
+
return undefined;
|
|
360
|
+
}
|
|
361
|
+
const newline = trimmed.indexOf('\n');
|
|
362
|
+
const dir = (newline < 0 ? trimmed : trimmed.slice(0, newline)).slice(SKILL_BODY_PREFIX.length).trim();
|
|
363
|
+
const body = newline < 0 ? '' : trimmed.slice(newline + 1).trim();
|
|
364
|
+
return dir && body ? { dir, text: body } : undefined;
|
|
365
|
+
}
|
|
366
|
+
/** Plain text of a REAL user prompt: a string, or the `text` blocks of an array. Tool results are not prompts. */
|
|
367
|
+
function promptText(content) {
|
|
368
|
+
if (typeof content === 'string') {
|
|
369
|
+
return stripInjectedContext(content);
|
|
370
|
+
}
|
|
371
|
+
if (Array.isArray(content)) {
|
|
372
|
+
return content
|
|
373
|
+
.map((block) => block && typeof block === 'object' && block.type === 'text'
|
|
374
|
+
? stripInjectedContext(String(block.text ?? ''))
|
|
375
|
+
: '')
|
|
376
|
+
.filter((part) => part.length > 0)
|
|
377
|
+
.join('\n');
|
|
378
|
+
}
|
|
379
|
+
return '';
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Walk a transcript (or a window of one — a leading partial line is skipped like any other
|
|
383
|
+
* unparseable line) and return its user→assistant exchanges in order. Each exchange carries its prompt and reply text and
|
|
384
|
+
* its `messages` (raw blocks: thinking, tool calls and results included). Synthetic `isMeta` user lines (injected skill bodies,
|
|
385
|
+
* caveats), compaction summaries, interrupt markers and subagent (sidechain) traffic are not prompts.
|
|
386
|
+
* A typed slash command is recovered as typed. Pure function, never throws.
|
|
387
|
+
*/
|
|
388
|
+
export function parseExchanges(content) {
|
|
389
|
+
const exchanges = [];
|
|
390
|
+
let model;
|
|
391
|
+
let current;
|
|
392
|
+
let groupKey;
|
|
393
|
+
let parts = [];
|
|
394
|
+
// Claude Code repeats a message's usage on every content-block line of it: count each message, and each subagent run, once.
|
|
395
|
+
const countedMessages = new Set();
|
|
396
|
+
const countedAgents = new Set();
|
|
397
|
+
const begin = (userText) => {
|
|
398
|
+
current = { userText };
|
|
399
|
+
exchanges.push(current);
|
|
400
|
+
groupKey = undefined;
|
|
401
|
+
parts = [];
|
|
402
|
+
};
|
|
403
|
+
for (const line of content.split('\n')) {
|
|
404
|
+
const trimmed = line.trim();
|
|
405
|
+
if (!trimmed) {
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
let event;
|
|
409
|
+
try {
|
|
410
|
+
event = JSON.parse(trimmed);
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
const message = event?.message;
|
|
416
|
+
if (!message || typeof message !== 'object') {
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
// Subagent (sidechain) traffic is not the conversation the user is having.
|
|
420
|
+
if (event.isSidechain === true) {
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
if (event.type === 'user') {
|
|
424
|
+
// An Agent tool call's result reports what the subagent spent, and on which model.
|
|
425
|
+
const result = event.toolUseResult;
|
|
426
|
+
if (current && result && typeof result === 'object' && !Array.isArray(result)) {
|
|
427
|
+
const run = result;
|
|
428
|
+
const agentId = typeof run.agentId === 'string' ? run.agentId : '';
|
|
429
|
+
if (agentId && run.usage && typeof run.usage === 'object' && !countedAgents.has(agentId)) {
|
|
430
|
+
countedAgents.add(agentId);
|
|
431
|
+
const model = typeof run.resolvedModel === 'string' && run.resolvedModel ? run.resolvedModel : 'unknown';
|
|
432
|
+
addSubagent((current.subagents ?? (current.subagents = emptySubagentUsage())), model, run.usage);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Tool results come back as user lines; they are part of the exchange's conversation.
|
|
436
|
+
if (current && Array.isArray(message.content)) {
|
|
437
|
+
const results = message.content.filter(isToolResultBlock);
|
|
438
|
+
if (results.length > 0) {
|
|
439
|
+
(current.messages ?? (current.messages = [])).push({ role: 'user', blocks: results });
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
// The expanded skill body, injected right after the slash command that invoked it.
|
|
443
|
+
if (event.isMeta === true && current && !current.skill) {
|
|
444
|
+
current.skill = parseSkillBody(rawText(message.content));
|
|
445
|
+
}
|
|
446
|
+
// Meta lines are injected context and compaction summaries are generated, not typed. A line
|
|
447
|
+
// carrying any tool_result is the tool loop talking, whatever else rides along with it.
|
|
448
|
+
if (event.isMeta === true ||
|
|
449
|
+
event.isCompactSummary === true ||
|
|
450
|
+
(Array.isArray(message.content) && message.content.some(isToolResultBlock))) {
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
const text = slashCommandPrompt(promptText(message.content).trim());
|
|
454
|
+
if (isCommandOutput(text)) {
|
|
455
|
+
continue;
|
|
456
|
+
}
|
|
457
|
+
// A prompt with no text of its own (e.g. an image) still starts a new turn: the reply that
|
|
458
|
+
// follows must not be paired with the previous prompt.
|
|
459
|
+
// (A line whose every text block was injected context and has nothing else in it is not a prompt.)
|
|
460
|
+
const textlessPrompt = !text &&
|
|
461
|
+
Array.isArray(message.content) &&
|
|
462
|
+
message.content.some((b) => !!b && typeof b === 'object' && b.type !== 'text');
|
|
463
|
+
if ((text && !isInterruptMarker(text)) || textlessPrompt) {
|
|
464
|
+
// A new prompt starts a new exchange; whatever assistant text we had belonged to the old one.
|
|
465
|
+
begin(text || undefined);
|
|
466
|
+
if (typeof event.timestamp === 'string' && event.timestamp) {
|
|
467
|
+
current.timestamp = event.timestamp;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
if (event.type === 'assistant' && message.role === 'assistant') {
|
|
473
|
+
if (!current) {
|
|
474
|
+
begin(undefined);
|
|
475
|
+
}
|
|
476
|
+
const exchange = current;
|
|
477
|
+
const key = turnKey(event, message, '');
|
|
478
|
+
if (key && !countedMessages.has(key) && message.usage && typeof message.usage === 'object') {
|
|
479
|
+
countedMessages.add(key);
|
|
480
|
+
addUsage((exchange.usage ?? (exchange.usage = emptyUsage())), message.usage);
|
|
481
|
+
}
|
|
482
|
+
if (key !== groupKey) {
|
|
483
|
+
groupKey = key;
|
|
484
|
+
parts = [];
|
|
485
|
+
}
|
|
486
|
+
const blocks = Array.isArray(message.content) ? message.content : [];
|
|
487
|
+
// One assistant message per model call: its content-block lines share a request id.
|
|
488
|
+
const sequence = (exchange.messages ?? (exchange.messages = []));
|
|
489
|
+
const lastMessage = sequence[sequence.length - 1];
|
|
490
|
+
if (lastMessage && lastMessage.role === 'assistant' && lastMessage.key === key && key) {
|
|
491
|
+
lastMessage.blocks.push(...blocks);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
sequence.push({ role: 'assistant', key: key || undefined, blocks: [...blocks] });
|
|
495
|
+
}
|
|
496
|
+
for (const block of blocks) {
|
|
497
|
+
if (block && typeof block === 'object' && block.type === 'text') {
|
|
498
|
+
const text = block.text;
|
|
499
|
+
if (typeof text === 'string' && text.trim()) {
|
|
500
|
+
parts.push(text);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
if (parts.length > 0) {
|
|
505
|
+
exchange.assistantText = parts.join('\n').trim();
|
|
506
|
+
// The key of the message the text came from, not of a later tool-only message.
|
|
507
|
+
exchange.assistantKey = key || undefined;
|
|
508
|
+
}
|
|
509
|
+
// Claude Code's own placeholder messages (interrupts, API errors) carry a pseudo-model.
|
|
510
|
+
if (typeof message.model === 'string' && message.model && message.model !== '<synthetic>') {
|
|
511
|
+
model = message.model;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
return { exchanges, model };
|
|
516
|
+
}
|
|
517
|
+
/** The latest exchange of already-parsed exchanges, in the shape the Stop-hook adapter wants. */
|
|
518
|
+
export function lastTurnFrom(parsed) {
|
|
519
|
+
const last = parsed.exchanges[parsed.exchanges.length - 1];
|
|
520
|
+
return {
|
|
521
|
+
userText: last?.userText,
|
|
522
|
+
assistantText: last?.assistantText,
|
|
523
|
+
model: parsed.model,
|
|
524
|
+
assistantKey: last?.assistantText ? last.assistantKey : undefined,
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Pull the latest user prompt and the final assistant message out of a transcript (or a window of
|
|
529
|
+
* one). Text only, the final reply's blocks aside. Pure function, never throws.
|
|
530
|
+
*/
|
|
531
|
+
export function extractLastTurn(content) {
|
|
532
|
+
return lastTurnFrom(parseExchanges(content));
|
|
533
|
+
}
|
|
258
534
|
/**
|
|
259
535
|
* Find every Claude Code transcript under `projectsDir` (default `~/.claude/projects`) and build one
|
|
260
536
|
* conversation envelope per session. A missing directory simply yields zero sessions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-scanner.js","sourceRoot":"","sources":["../../src/sessions/claude-scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-scanner.js","sourceRoot":"","sources":["../../src/sessions/claude-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Exchange } from './claude-scanner.js';
|
|
2
|
+
/** An exchange from a Copilot `events.jsonl`, plus the skills invoked for it, if any. */
|
|
3
|
+
export interface CopilotExchange extends Exchange {
|
|
4
|
+
/** Every skill invoked for this exchange: the one typed before the prompt and any the model loaded during the turn. */
|
|
5
|
+
skills?: Array<{
|
|
6
|
+
name: string;
|
|
7
|
+
dir: string;
|
|
8
|
+
text: string;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
export interface ParsedCopilotExchanges {
|
|
12
|
+
exchanges: CopilotExchange[];
|
|
13
|
+
/** The model of the latest assistant message. */
|
|
14
|
+
model?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Whether a transcript line is one `parseCopilotExchanges` needs. Cheap: reads only the line's type, without parsing it. */
|
|
17
|
+
export declare function isWantedLine(line: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Walk a Copilot `events.jsonl` (VS Code agent mode) and return its user→assistant exchanges in order.
|
|
20
|
+
* An exchange starts at a `user.message` and holds what followed as raw messages: each model call's
|
|
21
|
+
* thinking, text and tool calls as one assistant message, and each batch of tool results as one user
|
|
22
|
+
* message. A `skill.invoked` event the user typed (`trigger: user-invoked`) is attached to the exchange of the
|
|
23
|
+
* prompt that comes next; one the model loaded during a turn is attached to the exchange already open. Unreadable
|
|
24
|
+
* lines are skipped. Pure function, never throws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseCopilotExchanges(content: string): ParsedCopilotExchanges;
|
|
27
|
+
//# sourceMappingURL=copilot-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-scanner.d.ts","sourceRoot":"","sources":["../../src/sessions/copilot-scanner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,yFAAyF;AACzF,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,uHAAuH;IACvH,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,6HAA6H;AAC7H,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlD;AA2CD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAmH7E"}
|