kumo-cli 1.2.4 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +4 -5
  2. package/dist/auth/credentialsStore.js +8 -6
  3. package/dist/auth/credentialsStore.js.map +1 -1
  4. package/dist/claude/conversation.js +26 -2
  5. package/dist/claude/conversation.js.map +1 -1
  6. package/dist/claude/goal.js +100 -0
  7. package/dist/claude/goal.js.map +1 -0
  8. package/dist/claude/sessionTasks.js +112 -0
  9. package/dist/claude/sessionTasks.js.map +1 -0
  10. package/dist/claude/transcriptParser.js +11 -0
  11. package/dist/claude/transcriptParser.js.map +1 -1
  12. package/dist/core/config.js +3 -2
  13. package/dist/core/config.js.map +1 -1
  14. package/dist/engine/claudeArgs.js +5 -0
  15. package/dist/engine/claudeArgs.js.map +1 -1
  16. package/dist/engine/claudeBinary.js +79 -27
  17. package/dist/engine/claudeBinary.js.map +1 -1
  18. package/dist/engine/claudeConfig.js +23 -9
  19. package/dist/engine/claudeConfig.js.map +1 -1
  20. package/dist/engine/designLogin.js +112 -0
  21. package/dist/engine/designLogin.js.map +1 -0
  22. package/dist/engine/liveTranscript.js +27 -4
  23. package/dist/engine/liveTranscript.js.map +1 -1
  24. package/dist/engine/notices.js +53 -0
  25. package/dist/engine/notices.js.map +1 -0
  26. package/dist/engine/sessionManager.js +50 -1
  27. package/dist/engine/sessionManager.js.map +1 -1
  28. package/dist/engine/settingsCommands.js +24 -0
  29. package/dist/engine/settingsCommands.js.map +1 -1
  30. package/dist/engine/streamSession.js +99 -6
  31. package/dist/engine/streamSession.js.map +1 -1
  32. package/dist/engine/taskTracker.js +87 -13
  33. package/dist/engine/taskTracker.js.map +1 -1
  34. package/dist/engine/toolLabels.js +5 -0
  35. package/dist/engine/toolLabels.js.map +1 -1
  36. package/dist/handlers/runtimeHandlers.js +23 -1
  37. package/dist/handlers/runtimeHandlers.js.map +1 -1
  38. package/dist/handlers/sessionHandlers.js +7 -1
  39. package/dist/handlers/sessionHandlers.js.map +1 -1
  40. package/dist/index.js +3 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/services/bootstrapService.js +1 -1
  43. package/dist/services/bootstrapService.js.map +1 -1
  44. package/dist/services/cliRuntime.js +14 -0
  45. package/dist/services/cliRuntime.js.map +1 -1
  46. package/dist/services/sessionService.js +27 -4
  47. package/dist/services/sessionService.js.map +1 -1
  48. package/package.json +1 -1
@@ -1,9 +1,21 @@
1
- import { execSync } from 'node:child_process';
1
+ import { execFileSync, execSync } from 'node:child_process';
2
2
  import fs from 'node:fs';
3
+ import os from 'node:os';
3
4
  import path from 'node:path';
4
5
  import { log } from '../core/logger.js';
5
6
  const CLAUDE_PACKAGE = '@anthropic-ai/claude-code';
7
+ // oldest claude with every flag and subcommand kumo relies on
8
+ const MIN_CLAUDE_VERSION = '2.1.268';
6
9
  const NATIVE_EXE = ['node_modules', '@anthropic-ai', 'claude-code', 'bin', 'claude.exe'];
10
+ // launcher of the official native installer; right after an install the running process's PATH lacks it
11
+ const NATIVE_LAUNCHER = path.join(os.homedir(), '.local', 'bin', process.platform === 'win32' ? 'claude.exe' : 'claude');
12
+ // the official native installer first, npm when it fails (no curl/bash, claude.ai blocked...)
13
+ const INSTALLERS = [
14
+ process.platform === 'win32'
15
+ ? 'powershell -NoProfile -Command "irm https://claude.ai/install.ps1 | iex"'
16
+ : 'curl -fsSL https://claude.ai/install.sh | bash',
17
+ `npm install -g --allow-scripts=${CLAUDE_PACKAGE} ${CLAUDE_PACKAGE}`,
18
+ ];
7
19
  let cached = null;
8
20
  function lookup(command) {
9
21
  try {
@@ -43,39 +55,79 @@ function findOnPosix() {
43
55
  return found ? { cmd: found, shell: false } : null;
44
56
  }
45
57
  function find() {
46
- return process.platform === 'win32' ? findOnWindows() : findOnPosix();
58
+ return (process.platform === 'win32' ? findOnWindows() : findOnPosix())
59
+ ?? (fs.existsSync(NATIVE_LAUNCHER) ? { cmd: NATIVE_LAUNCHER, shell: false } : null);
47
60
  }
48
- // install the claude cli globally when it is missing from the host machine
49
- function installClaudeCli() {
50
- console.log(`[kumo-cli] claude cli not found, installing ${CLAUDE_PACKAGE}...`);
51
- execSync(`npm install -g --allow-scripts=${CLAUDE_PACKAGE} ${CLAUDE_PACKAGE}`, { stdio: 'inherit' });
61
+ // install claude code when it is missing from the host machine, trying each installer in turn
62
+ function install() {
63
+ for (const command of INSTALLERS) {
64
+ console.log(`[kumo-cli] claude cli not found, installing it: ${command}`);
65
+ try {
66
+ execSync(command, { stdio: 'inherit' });
67
+ }
68
+ catch (error) {
69
+ log(`[claude-bin] install failed: ${error}`);
70
+ }
71
+ const found = find();
72
+ if (found)
73
+ return found;
74
+ }
75
+ return null;
52
76
  }
53
- // resolve the claude executable on first use (never at import); KUMO_CLAUDE_BIN overrides discovery
54
- export function resolveClaudeCommand() {
77
+ function remember(command) {
78
+ log(`[claude-bin] using ${command.cmd} (shell=${command.shell})`);
79
+ return cached = command;
80
+ }
81
+ // the claude already on this machine, never installing one; KUMO_CLAUDE_BIN overrides discovery
82
+ function locate() {
55
83
  if (cached)
56
84
  return cached;
57
85
  const override = process.env['KUMO_CLAUDE_BIN'];
58
- if (override) {
59
- cached = { cmd: override, shell: process.platform === 'win32' && /\.(cmd|bat)$/i.test(override) };
86
+ const found = override ? { cmd: override, shell: process.platform === 'win32' && /\.(cmd|bat)$/i.test(override) } : find();
87
+ return found && remember(found);
88
+ }
89
+ // resolve the claude executable on first use (never at import), installing it when missing
90
+ export function resolveClaudeCommand() {
91
+ const found = locate();
92
+ if (found)
93
+ return found;
94
+ const installed = install();
95
+ // a bare `claude` through cmd.exe would also run one from the current folder
96
+ if (!installed)
97
+ throw new Error('claude cli not found: install claude code (https://code.claude.com/docs/en/setup) or set KUMO_CLAUDE_BIN');
98
+ return remember(installed);
99
+ }
100
+ // compare dotted version numbers part by part, so 2.1.99 is older than 2.1.268
101
+ export function isOlderVersion(version, than) {
102
+ const a = version.split('.').map(Number);
103
+ const b = than.split('.').map(Number);
104
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
105
+ if ((a[i] ?? 0) !== (b[i] ?? 0))
106
+ return (a[i] ?? 0) < (b[i] ?? 0);
60
107
  }
61
- else {
62
- let found = find();
63
- if (!found) {
64
- try {
65
- installClaudeCli();
66
- }
67
- catch (error) {
68
- log(`[claude-bin] install failed: ${error}`);
69
- }
70
- found = find();
71
- }
72
- // a bare `claude` through cmd.exe would also run one from the current folder
73
- if (!found)
74
- throw new Error(`claude cli not found: install ${CLAUDE_PACKAGE} or set KUMO_CLAUDE_BIN`);
75
- cached = found;
108
+ return false;
109
+ }
110
+ // warn when the claude already on this machine predates what kumo relies on; a missing one is skipped,
111
+ // since it gets installed at its latest version
112
+ export function warnIfClaudeOutdated() {
113
+ const command = locate();
114
+ if (!command)
115
+ return;
116
+ const options = { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 10_000, windowsHide: true };
117
+ let output;
118
+ try {
119
+ output = command.shell
120
+ ? execSync(buildShellCommandLine(command.cmd, ['--version']), options)
121
+ : execFileSync(command.cmd, ['--version'], options);
122
+ }
123
+ catch (error) {
124
+ log(`[claude-bin] version check failed: ${error}`);
125
+ return;
126
+ }
127
+ const version = /\d+\.\d+\.\d+/.exec(output)?.[0];
128
+ if (version && isOlderVersion(version, MIN_CLAUDE_VERSION)) {
129
+ console.warn(`\x1b[33m[kumo-cli] claude ${version} is too old (kumo needs ${MIN_CLAUDE_VERSION} or later), some features may not work correctly. run \`claude update\` to upgrade\x1b[0m`);
76
130
  }
77
- log(`[claude-bin] using ${cached.cmd} (shell=${cached.shell})`);
78
- return cached;
79
131
  }
80
132
  // quote one argument for a cmd.exe command line. inside quotes cmd.exe still ends the quote at `"`,
81
133
  // expands %VAR% (and !VAR!) and splits at line breaks, and no escaping is reliable for a .cmd
@@ -1 +1 @@
1
- {"version":3,"file":"claudeBinary.js","sourceRoot":"","sources":["../../src/engine/claudeBinary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeBinary.js","sourceRoot":"","sources":["../../src/engine/claudeBinary.ts"],"names":[],"mappings":"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"}
@@ -25,23 +25,24 @@ export function withoutProviderConfig(patch) {
25
25
  // control requests the app may run through claude_control
26
26
  export const CONTROL_WHITELIST = new Set([
27
27
  'get_status', 'get_usage', 'get_context_usage', 'get_settings', 'export_conversation', 'side_question',
28
- 'mcp_status', 'mcp_toggle', 'mcp_reconnect', 'list_permission_rules', 'update_settings', 'rewind_files',
28
+ 'mcp_status', 'mcp_toggle', 'mcp_reconnect', 'mcp_authenticate', 'mcp_oauth_callback_url', 'list_permission_rules', 'update_settings', 'rewind_files',
29
29
  'stop_task', 'cancel_async_message',
30
30
  'get_hooks_listing', 'get_sandbox_dialog', 'get_skills_dialog', 'get_memory_dialog', 'reload_plugins', 'reload_skills',
31
+ 'get_chrome_dialog', 'get_chrome_browsers', 'select_chrome_browser',
31
32
  ]);
32
33
  const NOT_RUNNING = 'This session is no longer running.';
33
- // requests about the running process itself, with the reason a stopped session can't answer;
34
- // file checkpoints live in the process that ran the turns, a resumed one has none
34
+ // requests about the running process itself, with the reason a stopped session can't answer
35
35
  export const LIVE_ONLY_CONTROLS = new Map([
36
- ['rewind_files', "Code checkpoints only last while this session's Claude process runs, and it has stopped. You can still fork the conversation."],
37
36
  ['stop_task', NOT_RUNNING],
38
37
  ['cancel_async_message', NOT_RUNNING],
39
38
  ]);
40
- // requests answered from the target session's own context
41
- export const SESSION_SCOPED_CONTROLS = new Set(['get_context_usage', 'export_conversation', 'side_question']);
42
- // mcp servers live in the chat's own process: shown, switched and reconnected there, which is
43
- // started when it is not running; a throwaway probe would only ever see them connecting
44
- export const OWN_PROCESS_CONTROLS = new Set(['mcp_status', 'mcp_toggle', 'mcp_reconnect']);
39
+ // requests answered from the target session's own context; file checkpoints stay on disk, so a
40
+ // resumed process rewinds the turns of an earlier one too
41
+ export const SESSION_SCOPED_CONTROLS = new Set(['get_context_usage', 'export_conversation', 'side_question', 'rewind_files']);
42
+ // mcp servers and the chrome connection live in the chat's own process: shown, switched,
43
+ // reconnected and signed in to there (the sign-in waits in that process for its redirect), which is started when it is not running; a throwaway probe would only ever
44
+ // see them connecting
45
+ export const OWN_PROCESS_CONTROLS = new Set(['mcp_status', 'mcp_toggle', 'mcp_reconnect', 'mcp_authenticate', 'mcp_oauth_callback_url', 'get_chrome_dialog', 'get_chrome_browsers', 'select_chrome_browser']);
45
46
  // side questions run a model call (5 min like the extension), the rest are quick reads
46
47
  export const controlTimeoutMs = (subtype) => (subtype === 'side_question' ? 300_000 : undefined);
47
48
  const text = (source, key, max = 4000) => {
@@ -57,7 +58,10 @@ export function controlPayload(subtype, payload) {
57
58
  case 'side_question':
58
59
  return { question: text(source, 'question') };
59
60
  case 'mcp_reconnect':
61
+ case 'mcp_authenticate':
60
62
  return { serverName: text(source, 'serverName', 200) };
63
+ case 'mcp_oauth_callback_url':
64
+ return { serverName: text(source, 'serverName', 200), callbackUrl: text(source, 'callbackUrl') };
61
65
  case 'mcp_toggle':
62
66
  if (typeof source['enabled'] !== 'boolean')
63
67
  throw new Error('enabled is required');
@@ -68,6 +72,8 @@ export function controlPayload(subtype, payload) {
68
72
  return { message_uuid: text(source, 'uuid', 100) };
69
73
  case 'rewind_files':
70
74
  return { user_message_id: text(source, 'userMessageId', 100), dry_run: source['dryRun'] === true };
75
+ case 'select_chrome_browser':
76
+ return { device_id: text(source, 'deviceId', 200) };
71
77
  case 'update_settings':
72
78
  // only the output style may be changed from the app, and only for this project
73
79
  return { source: 'localSettings', settings: { outputStyle: text(source, 'outputStyle', 200) } };
@@ -98,6 +104,9 @@ export function sanitizeControlResponse(subtype, response) {
98
104
  }),
99
105
  })),
100
106
  };
107
+ case 'mcp_authenticate':
108
+ // the page to sign in on, and whether claude then waits for the redirect pasted back
109
+ return pick(response, ['authUrl', 'requiresUserAction', 'callbackExpected']);
101
110
  case 'list_permission_rules':
102
111
  return { rules: list(obj(response['state'])['rules']).map((rule) => pick(rule, ['rule', 'behavior', 'source'])) };
103
112
  case 'get_context_usage': {
@@ -112,6 +121,11 @@ export function sanitizeControlResponse(subtype, response) {
112
121
  };
113
122
  case 'reload_skills':
114
123
  return { count: list(response['skills']).length };
124
+ case 'get_chrome_dialog':
125
+ // the extension pages it links open the desktop's chrome, nothing the phone can use
126
+ return pick(response, ['allowed', 'subscriber', 'wsl', 'installed', 'connected', 'enabled_by_default', 'paired_browser']);
127
+ case 'get_chrome_browsers':
128
+ return { browsers: (Array.isArray(response) ? list(response) : list(response['browsers'])).map((b) => pick(b, ['device_id', 'name', 'os_platform', 'current'])) };
115
129
  case 'get_usage': {
116
130
  const limits = obj(response['rate_limits']);
117
131
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"claudeConfig.js","sourceRoot":"","sources":["../../src/engine/claudeConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeConfig.js","sourceRoot":"","sources":["../../src/engine/claudeConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ import { buildClaudeEnv } from './claudeArgs.js';
4
+ import { buildShellCommandLine, resolveClaudeCommand } from './claudeBinary.js';
5
+ import { killTree } from './processTree.js';
6
+ import { stripAnsi } from './permissions.js';
7
+ // claude gives up on a sign-in after five minutes; this only catches one that never reports back
8
+ const SIGN_IN_TIMEOUT_MS = 6 * 60_000;
9
+ const START_TIMEOUT_MS = 30_000;
10
+ const parse = (line) => {
11
+ try {
12
+ const value = JSON.parse(line);
13
+ return value && typeof value === 'object' ? value : null;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ };
19
+ // Claude Design's own sign-in (design-system access), run like the extension does with
20
+ // `claude design-login --json`: its pages come back to open on the phone, the code the manual
21
+ // page shows goes to its stdin, and it says when it is done. closing its stdin cancels it
22
+ export class DesignLogin {
23
+ options;
24
+ child = null;
25
+ finished = false;
26
+ constructor(options) {
27
+ this.options = options;
28
+ }
29
+ // start a sign-in, replacing one in progress; resolves with the page that ends on a code
30
+ async start(cwd) {
31
+ this.cancel();
32
+ const { cmd, args, shell } = this.options.command ?? { ...resolveClaudeCommand(), args: ['design-login', '--json'] };
33
+ const spawnOptions = { cwd, env: buildClaudeEnv(process.env), stdio: 'pipe', windowsHide: true };
34
+ const child = shell ? spawn(buildShellCommandLine(cmd, args), { ...spawnOptions, shell: true }) : spawn(cmd, args, spawnOptions);
35
+ this.child = child;
36
+ this.finished = false;
37
+ child.stdin?.on('error', () => { });
38
+ let stderr = '';
39
+ child.stderr?.setEncoding('utf8');
40
+ child.stderr?.on('data', (chunk) => { stderr = (stderr + chunk).slice(-2000); });
41
+ const timer = setTimeout(() => this.finish(child, false, 'The sign-in timed out.'), SIGN_IN_TIMEOUT_MS);
42
+ timer.unref();
43
+ return new Promise((resolve, reject) => {
44
+ const startTimer = setTimeout(() => reject(new Error('Claude Design sign-in did not start')), START_TIMEOUT_MS);
45
+ startTimer.unref();
46
+ createInterface({ input: child.stdout }).on('line', (line) => {
47
+ const event = parse(line);
48
+ if (event?.['event'] === 'pages') {
49
+ clearTimeout(startTimer);
50
+ const manual = typeof event['manual_url'] === 'string' ? event['manual_url'] : '';
51
+ const url = typeof event['url'] === 'string' ? event['url'] : '';
52
+ // the automatic page returns to a port on this machine; the phone needs the code page
53
+ if (manual || url)
54
+ resolve(manual || url);
55
+ else
56
+ reject(new Error('Claude Design did not return a sign-in page'));
57
+ }
58
+ else if (event?.['event'] === 'done') {
59
+ clearTimeout(timer);
60
+ clearTimeout(startTimer);
61
+ const message = typeof event['message'] === 'string' ? event['message'] : undefined;
62
+ reject(new Error(message ?? 'The sign-in ended'));
63
+ this.finish(child, event['ok'] === true, message);
64
+ }
65
+ });
66
+ child.on('error', (error) => {
67
+ clearTimeout(startTimer);
68
+ reject(error);
69
+ this.finish(child, false, error.message);
70
+ });
71
+ child.on('close', (code) => {
72
+ clearTimeout(timer);
73
+ clearTimeout(startTimer);
74
+ const reason = stripAnsi(stderr).trim() || `The sign-in ended before it finished (exit code ${code}).`;
75
+ reject(new Error(reason));
76
+ this.finish(child, false, reason);
77
+ });
78
+ });
79
+ }
80
+ // the code the manual page shows, `code#state`
81
+ submitCode(code) {
82
+ const child = this.child;
83
+ if (!child || this.finished)
84
+ throw new Error('No Claude Design sign-in is in progress, start it again');
85
+ child.stdin?.write(`${JSON.stringify({ code: code.trim() })}\n`);
86
+ }
87
+ cancel() {
88
+ const child = this.child;
89
+ if (!child || this.finished)
90
+ return;
91
+ this.finished = true;
92
+ this.child = null;
93
+ try {
94
+ child.stdin?.end();
95
+ }
96
+ catch { }
97
+ setTimeout(() => killTree(child), 2000).unref();
98
+ }
99
+ // the first word on how it ended counts; a sign-in replaced meanwhile says nothing
100
+ finish(child, ok, message) {
101
+ if (this.child !== child || this.finished)
102
+ return;
103
+ this.finished = true;
104
+ this.child = null;
105
+ try {
106
+ child.stdin?.end();
107
+ }
108
+ catch { }
109
+ this.options.onFinish(ok, message);
110
+ }
111
+ }
112
+ //# sourceMappingURL=designLogin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designLogin.js","sourceRoot":"","sources":["../../src/engine/designLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,iGAAiG;AACjG,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC;AACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAShC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAkC,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC1C,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,uFAAuF;AACvF,8FAA8F;AAC9F,0FAA0F;AAC1F,MAAM,OAAO,WAAW;IAIO;IAHrB,KAAK,GAAwB,IAAI,CAAC;IAClC,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE5D,yFAAyF;IACzF,KAAK,CAAC,KAAK,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrH,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC1G,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACjI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,wBAAwB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACxG,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAChH,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAO,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;oBACjC,YAAY,CAAC,UAAU,CAAC,CAAC;oBACzB,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,sFAAsF;oBACtF,IAAI,MAAM,IAAI,GAAG;wBAAE,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;;wBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;oBACvC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,YAAY,CAAC,UAAU,CAAC,CAAC;oBACzB,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpF,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1B,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,mDAAmD,IAAI,IAAI,CAAC;gBACvG,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,mFAAmF;IAC3E,MAAM,CAAC,KAAmB,EAAE,EAAW,EAAE,OAAgB;QAC/D,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -26,6 +26,8 @@ export class LiveTranscript {
26
26
  // the last frame of each thread (the main one, each subagent): a thinking block took the time
27
27
  // since then
28
28
  lastFrameAt = new Map();
29
+ // when each prompt was sent: its echo comes once claude reads it, seconds later on a fresh start
30
+ sentAt = new Map();
29
31
  constructor(emit, now = Date.now) {
30
32
  this.emit = emit;
31
33
  this.now = now;
@@ -41,6 +43,15 @@ export class LiveTranscript {
41
43
  }
42
44
  this.lastFrameAt.set(str(frame['parent_tool_use_id']), this.now());
43
45
  }
46
+ // a muted line between the messages for something that happened during the turn
47
+ notice(kind, content, id) {
48
+ this.flush();
49
+ this.emit({ role: 'notice', kind, content, id, timestamp: new Date(this.now()).toISOString() });
50
+ }
51
+ // a prompt went to claude: its echo is stamped with this time, as the turn's start
52
+ promptSent(uuid) {
53
+ this.sentAt.set(uuid, this.now());
54
+ }
44
55
  // emit the messages updated since the last flush; the session calls it before any other event
45
56
  // so the app sees the transcript and the turn state in order
46
57
  flush() {
@@ -67,8 +78,11 @@ export class LiveTranscript {
67
78
  const since = this.lastFrameAt.get(str(frame['parent_tool_use_id']));
68
79
  if (isThinkingBlock(block) && since !== undefined)
69
80
  entry.thinkingMs = (entry.thinkingMs ?? 0) + this.now() - since;
70
- if (isVisible(block))
81
+ // stamped with its newest visible block, as the jsonl stamps each block's line
82
+ if (isVisible(block)) {
71
83
  entry.version++;
84
+ entry.timestamp = new Date(this.now()).toISOString();
85
+ }
72
86
  if (block['type'] === 'tool_use' && typeof block['id'] === 'string')
73
87
  this.owners.set(block['id'], id);
74
88
  }
@@ -77,8 +91,10 @@ export class LiveTranscript {
77
91
  this.publish(id);
78
92
  }
79
93
  user(frame) {
80
- // claude's own messages, such as the summary a compaction starts from, are no prompts
81
- if (frame['isSynthetic'] === true)
94
+ const origin = frame['origin'];
95
+ // claude's own messages, such as the summary a compaction starts from, are no prompts; one
96
+ // another session sent shows
97
+ if (frame['isSynthetic'] === true && origin?.kind !== 'peer')
82
98
  return;
83
99
  const parentToolUseId = str(frame['parent_tool_use_id']) || undefined;
84
100
  const message = frame['message'];
@@ -88,6 +104,7 @@ export class LiveTranscript {
88
104
  message,
89
105
  toolUseResult: frame['tool_use_result'],
90
106
  isSidechain: parentToolUseId !== undefined,
107
+ origin,
91
108
  };
92
109
  const toolResults = blocksOf(message?.content).filter((b) => b['type'] === 'tool_result');
93
110
  if (toolResults.length > 0) {
@@ -102,7 +119,13 @@ export class LiveTranscript {
102
119
  }
103
120
  return;
104
121
  }
105
- const parsed = parseTranscriptMessage(jsonl, { timestamp: new Date().toISOString() });
122
+ // a prompt from here counts from when it was sent, anything else (a message another session
123
+ // sent) from when claude took it in, which its echo comes well after
124
+ const sent = jsonl.uuid ? this.sentAt.get(jsonl.uuid) : undefined;
125
+ if (jsonl.uuid)
126
+ this.sentAt.delete(jsonl.uuid);
127
+ const at = sent ?? (Date.parse(str(frame['timestamp'])) || this.now());
128
+ const parsed = parseTranscriptMessage(jsonl, { timestamp: new Date(at).toISOString() });
106
129
  if (!parsed)
107
130
  return;
108
131
  this.flush();
@@ -1 +1 @@
1
- {"version":3,"file":"liveTranscript.js","sourceRoot":"","sources":["../../src/engine/liveTranscript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liveTranscript.js","sourceRoot":"","sources":["../../src/engine/liveTranscript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { obj, str } from '../utils/json.js';
2
+ const oneLine = (value, max = 300) => {
3
+ const line = value.replace(/\s+/g, ' ').trim();
4
+ return line.length > max ? `${line.slice(0, max - 1)}…` : line;
5
+ };
6
+ // the turn label while claude waits to retry a failed api request (system/api_retry)
7
+ export function retryLabel(msg) {
8
+ const error = str(msg['error']).replace(/_/g, ' ') || 'error';
9
+ const attempt = typeof msg['attempt'] === 'number' ? msg['attempt'] : 1;
10
+ const max = typeof msg['max_retries'] === 'number' ? `/${msg['max_retries']}` : '';
11
+ return `API ${error}, retrying ${attempt}${max}`;
12
+ }
13
+ // a tool call refused without a prompt: auto mode's classifier or a deny rule (system/permission_denied)
14
+ export function deniedText(msg) {
15
+ const tool = str(msg['tool_name']) || 'A tool';
16
+ const reason = oneLine(str(msg['decision_reason']) || str(msg['message']));
17
+ return reason ? `Blocked ${tool}: ${reason}` : `Blocked ${tool}`;
18
+ }
19
+ const LIMIT_NAMES = {
20
+ five_hour: '5-hour',
21
+ seven_day: 'weekly',
22
+ seven_day_opus: 'weekly Opus',
23
+ seven_day_sonnet: 'weekly Sonnet',
24
+ overage: 'extra usage',
25
+ };
26
+ // "2h 10m" until a unix time in seconds
27
+ function untilText(resetsAt, now) {
28
+ if (typeof resetsAt !== 'number')
29
+ return '';
30
+ const minutes = Math.max(1, Math.round((resetsAt * 1000 - now) / 60_000));
31
+ const hours = Math.floor(minutes / 60);
32
+ if (hours >= 24)
33
+ return ` · resets in ${Math.floor(hours / 24)}d ${hours % 24}h`;
34
+ return ` · resets in ${hours > 0 ? `${hours}h ${minutes % 60}m` : `${minutes}m`}`;
35
+ }
36
+ // a usage limit getting close or reached (rate_limit_event); null while it is fine
37
+ export function rateLimitText(info, now = Date.now()) {
38
+ const status = str(info['status']);
39
+ if (status !== 'allowed_warning' && status !== 'rejected')
40
+ return null;
41
+ const type = str(info['rateLimitType']);
42
+ const name = LIMIT_NAMES[type] ?? 'usage';
43
+ const window = obj(obj(info['unifiedWindows'])[type]);
44
+ const utilization = typeof window['utilization'] === 'number' ? window['utilization'] : info['utilization'];
45
+ const resets = untilText(window['resetsAt'] ?? info['resetsAt'], now);
46
+ if (status === 'rejected')
47
+ return `${name[0].toUpperCase()}${name.slice(1)} limit reached${resets}`;
48
+ const used = typeof utilization === 'number' ? `${Math.round(utilization * 100)}% of ` : 'most of ';
49
+ return `You've used ${used}your ${name} limit${resets}`;
50
+ }
51
+ // claude's own notices (system/notification) by its color: error, else warning
52
+ export const notificationLevel = (msg) => (str(msg['color']) === 'error' ? 'error' : 'warning');
53
+ //# sourceMappingURL=notices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notices.js","sourceRoot":"","sources":["../../src/engine/notices.ts"],"names":[],"mappings":"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"}