negotium 0.22.6 → 0.22.7

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 (70) hide show
  1. package/dist/agent-helpers.js +1349 -410
  2. package/dist/agent-helpers.js.map +7 -7
  3. package/dist/background-bash.js +12 -12
  4. package/dist/background-bash.js.map +2 -2
  5. package/dist/browser-runtime.js +81 -52
  6. package/dist/browser-runtime.js.map +4 -4
  7. package/dist/canonical-mcp-bridge.js +9 -8
  8. package/dist/canonical-mcp-bridge.js.map +1 -1
  9. package/dist/{chunk-e59kzyvy.js → chunk-1gznvrth.js} +5 -4
  10. package/dist/{chunk-e59kzyvy.js.map → chunk-1gznvrth.js.map} +2 -2
  11. package/dist/chunk-2mx7fq49.js +6 -0
  12. package/dist/{chunk-bnyvxss3.js.map → chunk-2mx7fq49.js.map} +1 -1
  13. package/dist/{chunk-1mba9m1j.js → chunk-9zn0bkc9.js} +116 -77
  14. package/dist/{chunk-1mba9m1j.js.map → chunk-9zn0bkc9.js.map} +2 -2
  15. package/dist/{chunk-ww8a4ej4.js → chunk-f7p0h1gs.js} +5 -5
  16. package/dist/{chunk-ww8a4ej4.js.map → chunk-f7p0h1gs.js.map} +2 -2
  17. package/dist/{chunk-9a50csg6.js → chunk-pr8p6pap.js} +125 -116
  18. package/dist/{chunk-9a50csg6.js.map → chunk-pr8p6pap.js.map} +7 -7
  19. package/dist/chunk-q5djsg78.js +200 -0
  20. package/dist/chunk-q5djsg78.js.map +9 -0
  21. package/dist/{chunk-1e0nxy7p.js → chunk-z4r7tt2p.js} +12 -12
  22. package/dist/{chunk-1e0nxy7p.js.map → chunk-z4r7tt2p.js.map} +2 -2
  23. package/dist/hosted-agent.js +128 -120
  24. package/dist/hosted-agent.js.map +4 -4
  25. package/dist/main.js +5174 -3278
  26. package/dist/main.js.map +9 -9
  27. package/dist/mcp-catalog.js +4 -4
  28. package/dist/mcp-catalog.js.map +1 -1
  29. package/dist/mcp-factories.js +1563 -632
  30. package/dist/mcp-factories.js.map +7 -7
  31. package/dist/mcp-servers.js +5 -5
  32. package/dist/mcp-servers.js.map +1 -1
  33. package/dist/media.js +3 -3
  34. package/dist/media.js.map +1 -1
  35. package/dist/outbox.js +15 -15
  36. package/dist/outbox.js.map +2 -2
  37. package/dist/platform-runtime.js +7 -7
  38. package/dist/platform-runtime.js.map +1 -1
  39. package/dist/prompts.js +6 -6
  40. package/dist/prompts.js.map +2 -2
  41. package/dist/query-runtime.js +18 -16
  42. package/dist/query-runtime.js.map +2 -2
  43. package/dist/registry.js +20 -19
  44. package/dist/registry.js.map +2 -2
  45. package/dist/rollout.js +41 -41
  46. package/dist/rollout.js.map +2 -2
  47. package/dist/runtime/src/platform/playwright/manager.ts +77 -15
  48. package/dist/runtime/src/storage/api-topics.ts +6 -0
  49. package/dist/runtime/src/storage/browser-profiles.ts +18 -0
  50. package/dist/runtime/src/topics/lifecycle.ts +2 -5
  51. package/dist/runtime/src/topics/update.ts +17 -0
  52. package/dist/runtime/src/types/api.ts +6 -0
  53. package/dist/runtime/src/version.ts +1 -1
  54. package/dist/runtime-gateway.js +12 -12
  55. package/dist/runtime-gateway.js.map +2 -2
  56. package/dist/runtime-helpers.js +54 -52
  57. package/dist/runtime-helpers.js.map +2 -2
  58. package/dist/sqlite.js +5 -3
  59. package/dist/sqlite.js.map +2 -2
  60. package/dist/storage.js +640 -664
  61. package/dist/storage.js.map +3 -3
  62. package/dist/types/packages/core/src/platform/playwright/manager.d.ts +8 -0
  63. package/dist/types/packages/core/src/storage/api-topics.d.ts +1 -0
  64. package/dist/types/packages/core/src/storage/browser-profiles.d.ts +4 -0
  65. package/dist/types/packages/core/src/types/api.d.ts +6 -0
  66. package/dist/types/packages/core/src/version.d.ts +1 -1
  67. package/dist/vault.js +22 -20
  68. package/dist/vault.js.map +2 -2
  69. package/package.json +1 -1
  70. package/dist/chunk-bnyvxss3.js +0 -77
@@ -0,0 +1,200 @@
1
+ // @bun
2
+ import {
3
+ ACTIVE_QUERY_STALE_MS,
4
+ AGENTS_PROMPTS_DIR,
5
+ AGENT_HEALTH_SERVER,
6
+ BASHRS_SPILL_ROOT,
7
+ BASH_RS_BIN,
8
+ BASH_RS_VERSION,
9
+ BG_BASH_BASE_PORT,
10
+ BG_BASH_MAX_PORT,
11
+ BINARIES_DIR,
12
+ BINARY_EXTENSION,
13
+ BROWSER_DIR,
14
+ BROWSER_PROFILES_DIR,
15
+ BROWSER_RS_BIN,
16
+ BROWSER_RS_MIN_SECURE_VERSION,
17
+ BROWSER_RS_VERSION,
18
+ CANONICAL_MCP_PROXY_SERVER,
19
+ CLAUDE_EXECUTABLE,
20
+ COMPACTION_LOG_SERVER,
21
+ CRON_WORKSPACE_DIR,
22
+ DATA_DIR,
23
+ DEBUG_FILE,
24
+ DECISION_SERVER,
25
+ DEFAULT_OUTPUT_LANGUAGE,
26
+ DEFAULT_TOPIC_EFFORT,
27
+ DM_CMD_DIR,
28
+ DM_RESP_DIR,
29
+ DM_WORKSPACE_DIR,
30
+ FALLBACK_AGENT,
31
+ FALLBACK_MODEL,
32
+ FASTER_WHISPER_WRAPPER,
33
+ FFMPEG_BIN,
34
+ FFPROBE_BIN,
35
+ FILE_EXTENSIONS_REGEX,
36
+ FILE_TAG_REGEX,
37
+ LOG_DIR,
38
+ MAX_TELL_DEPTH,
39
+ MLX_WHISPER_BIN,
40
+ MODEL_DEEPSEEK_V4_FLASH,
41
+ MODEL_DEEPSEEK_V4_PRO,
42
+ MODEL_FABLE,
43
+ MODEL_HAIKU,
44
+ MODEL_OPUS,
45
+ MODEL_SONNET,
46
+ NEGOTIUM_PORT,
47
+ NODE_CONTROL_TOKEN,
48
+ NODE_ID,
49
+ PDFTOTEXT_BIN,
50
+ PLAYWRIGHT_BASE_PORT,
51
+ PLAYWRIGHT_MAX_PORT,
52
+ PLAYWRIGHT_MCP_BIN,
53
+ PLAYWRIGHT_PORTS_DIR,
54
+ PROGRESS_DIR,
55
+ PROJECT_ROOT,
56
+ PYTHON_BIN,
57
+ RESOURCES_DIR,
58
+ RUNTIME_DIR,
59
+ RUNTIME_MCP_SECRET,
60
+ RUN_DIR,
61
+ SECRETS_DIR,
62
+ SESSIONS_DB,
63
+ SESSION_ASKS_DIR,
64
+ SESSION_COMM_SERVER,
65
+ SESSION_INBOX_DIR,
66
+ SESSION_WORKSPACE_DIR,
67
+ SHARED_WIKI_DIR,
68
+ SNIPPETS_API_URL,
69
+ STATE_DIR,
70
+ SYSTEM_HEALTH_SERVER,
71
+ TASK_SERVER,
72
+ TESSERACT_BIN,
73
+ TOKEN_STATS_SERVER,
74
+ TOPIC_WORKSPACE_DIR,
75
+ TSCONFIG_PATH,
76
+ TSX_BIN,
77
+ TSX_LOADER,
78
+ UPLOADS_DIR,
79
+ USERS_LOG_DIR,
80
+ VAULT_DIR,
81
+ VAULT_MASTER_KEY,
82
+ VAULT_SERVER,
83
+ WHISPER_BACKEND,
84
+ WHISPER_MODEL,
85
+ WHISPER_MODEL_MLX,
86
+ WIKI_SERVER,
87
+ WORKSPACE_DIR,
88
+ codexAuthFilePath,
89
+ envText,
90
+ getCleanEnv,
91
+ hostname,
92
+ isProductionEnv,
93
+ resolveBashRsBin,
94
+ resolveBrowserMcpBin,
95
+ resolveBrowserProxy,
96
+ resolveBrowserRsBin,
97
+ resolveOutputLanguage,
98
+ resolveTopicWorkspaceDir
99
+ } from "./chunk-9zn0bkc9.js";
100
+ import"./chunk-2mx7fq49.js";
101
+ export {
102
+ resolveTopicWorkspaceDir,
103
+ resolveOutputLanguage,
104
+ resolveBrowserRsBin,
105
+ resolveBrowserProxy,
106
+ resolveBrowserMcpBin,
107
+ resolveBashRsBin,
108
+ isProductionEnv,
109
+ hostname,
110
+ getCleanEnv,
111
+ envText,
112
+ codexAuthFilePath,
113
+ WORKSPACE_DIR,
114
+ WIKI_SERVER,
115
+ WHISPER_MODEL_MLX,
116
+ WHISPER_MODEL,
117
+ WHISPER_BACKEND,
118
+ VAULT_SERVER,
119
+ VAULT_MASTER_KEY,
120
+ VAULT_DIR,
121
+ USERS_LOG_DIR,
122
+ UPLOADS_DIR,
123
+ TSX_LOADER,
124
+ TSX_BIN,
125
+ TSCONFIG_PATH,
126
+ TOPIC_WORKSPACE_DIR,
127
+ TOKEN_STATS_SERVER,
128
+ TESSERACT_BIN,
129
+ TASK_SERVER,
130
+ SYSTEM_HEALTH_SERVER,
131
+ STATE_DIR,
132
+ SNIPPETS_API_URL,
133
+ SHARED_WIKI_DIR,
134
+ SESSION_WORKSPACE_DIR,
135
+ SESSION_INBOX_DIR,
136
+ SESSION_COMM_SERVER,
137
+ SESSION_ASKS_DIR,
138
+ SESSIONS_DB,
139
+ SECRETS_DIR,
140
+ RUN_DIR,
141
+ RUNTIME_MCP_SECRET,
142
+ RUNTIME_DIR,
143
+ RESOURCES_DIR,
144
+ PYTHON_BIN,
145
+ PROJECT_ROOT,
146
+ PROGRESS_DIR,
147
+ PLAYWRIGHT_PORTS_DIR,
148
+ PLAYWRIGHT_MCP_BIN,
149
+ PLAYWRIGHT_MAX_PORT,
150
+ PLAYWRIGHT_BASE_PORT,
151
+ PDFTOTEXT_BIN,
152
+ NODE_ID,
153
+ NODE_CONTROL_TOKEN,
154
+ NEGOTIUM_PORT,
155
+ MODEL_SONNET,
156
+ MODEL_OPUS,
157
+ MODEL_HAIKU,
158
+ MODEL_FABLE,
159
+ MODEL_DEEPSEEK_V4_PRO,
160
+ MODEL_DEEPSEEK_V4_FLASH,
161
+ MLX_WHISPER_BIN,
162
+ MAX_TELL_DEPTH,
163
+ LOG_DIR,
164
+ FILE_TAG_REGEX,
165
+ FILE_EXTENSIONS_REGEX,
166
+ FFPROBE_BIN,
167
+ FFMPEG_BIN,
168
+ FASTER_WHISPER_WRAPPER,
169
+ FALLBACK_MODEL,
170
+ FALLBACK_AGENT,
171
+ DM_WORKSPACE_DIR,
172
+ DM_RESP_DIR,
173
+ DM_CMD_DIR,
174
+ DEFAULT_TOPIC_EFFORT,
175
+ DEFAULT_OUTPUT_LANGUAGE,
176
+ DECISION_SERVER,
177
+ DEBUG_FILE,
178
+ DATA_DIR,
179
+ CRON_WORKSPACE_DIR,
180
+ COMPACTION_LOG_SERVER,
181
+ CLAUDE_EXECUTABLE,
182
+ CANONICAL_MCP_PROXY_SERVER,
183
+ BROWSER_RS_VERSION,
184
+ BROWSER_RS_MIN_SECURE_VERSION,
185
+ BROWSER_RS_BIN,
186
+ BROWSER_PROFILES_DIR,
187
+ BROWSER_DIR,
188
+ BINARY_EXTENSION,
189
+ BINARIES_DIR,
190
+ BG_BASH_MAX_PORT,
191
+ BG_BASH_BASE_PORT,
192
+ BASH_RS_VERSION,
193
+ BASH_RS_BIN,
194
+ BASHRS_SPILL_ROOT,
195
+ AGENT_HEALTH_SERVER,
196
+ AGENTS_PROMPTS_DIR,
197
+ ACTIVE_QUERY_STALE_MS
198
+ };
199
+
200
+ //# debugId=5CB107C13A2F117D64756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "5CB107C13A2F117D64756E2164756E21",
8
+ "names": []
9
+ }
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
- logger,
4
3
  FIXTURES_DIR,
5
- clone,
6
4
  assertUuidLike,
5
+ clone,
7
6
  ensureCwdExists,
8
- extractChatPairs2,
7
+ extractChatPairs,
8
+ logger,
9
9
  parseJsonlText,
10
10
  writeJsonlFile
11
- } from "./chunk-9a50csg6.js";
11
+ } from "./chunk-pr8p6pap.js";
12
12
 
13
13
  // ../../packages/core/src/agents/rollout/claude.ts
14
14
  import { randomUUID } from "crypto";
@@ -33,15 +33,15 @@ function loadClaudeAttachments() {
33
33
  var CLAUDE_SDK_VERSION = "2.1.126";
34
34
  var CLAUDE_DEFAULT_MODEL = "claude-sonnet-5";
35
35
  var CLAUDE_DEFAULT_GIT_BRANCH = "HEAD";
36
- function encodeClaudeCwd2(cwd) {
36
+ function encodeClaudeCwd(cwd) {
37
37
  const realCwd = cwd.startsWith("/tmp/") ? cwd.replace(/^\/tmp\//, "/private/tmp/") : cwd;
38
38
  return realCwd.replaceAll(/[^a-zA-Z0-9]/g, "-");
39
39
  }
40
- function writeClaudeRollout2(opts) {
40
+ function writeClaudeRollout(opts) {
41
41
  const sessionId = opts.sessionId ?? randomUUID();
42
42
  assertUuidLike("sessionId", sessionId);
43
43
  ensureCwdExists(opts.cwd);
44
- const pairs = opts.pairs ?? extractChatPairs2(opts.entries ?? []);
44
+ const pairs = opts.pairs ?? extractChatPairs(opts.entries ?? []);
45
45
  const cwdReal = opts.cwd.startsWith("/tmp/") ? opts.cwd.replace(/^\/tmp\//, "/private/tmp/") : opts.cwd;
46
46
  const lines = [];
47
47
  const ts = () => new Date().toISOString();
@@ -123,15 +123,15 @@ function writeClaudeRollout2(opts) {
123
123
  });
124
124
  lastUuid = assistantUuid;
125
125
  }
126
- const projectsDir = join(homedir(), ".claude", "projects", encodeClaudeCwd2(opts.cwd));
126
+ const projectsDir = join(homedir(), ".claude", "projects", encodeClaudeCwd(opts.cwd));
127
127
  const path = join(projectsDir, `${sessionId}.jsonl`);
128
128
  writeJsonlFile(path, lines);
129
129
  logger.info({ sessionId, path, pairs: pairs.length }, "writeClaudeRollout: synthetic rollout placed");
130
130
  return { sessionId, rolloutPath: path };
131
131
  }
132
- function repairPoisonedRollout2(sessionId, cwd) {
132
+ function repairPoisonedRollout(sessionId, cwd) {
133
133
  try {
134
- const path = join(homedir(), ".claude", "projects", encodeClaudeCwd2(cwd), `${sessionId}.jsonl`);
134
+ const path = join(homedir(), ".claude", "projects", encodeClaudeCwd(cwd), `${sessionId}.jsonl`);
135
135
  if (!existsSync(path))
136
136
  return false;
137
137
  const lines = readFileSync(path, "utf8").split(`
@@ -201,6 +201,6 @@ function isPoisonedAssistantEntry(entry) {
201
201
  });
202
202
  }
203
203
 
204
- export { encodeClaudeCwd2, writeClaudeRollout2, repairPoisonedRollout2 };
204
+ export { encodeClaudeCwd, writeClaudeRollout, repairPoisonedRollout };
205
205
 
206
- //# debugId=5ADF29935DF359FE64756E2164756E21
206
+ //# debugId=A0AAEA5E07FB05AB64756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * Claude rollout encoder.\n *\n * Materializes a synthetic JSONL at `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`\n * so a subsequent `claude.query({ resume: sessionId })` continues the\n * cross-agent conversation as if it had always been native. Verified by\n * sandbox PoCs (test-7c/test-7d): the SDK accepts these without checksum\n * gating, requiring only `user`/`assistant` messages and a small per-turn\n * attachment chain captured into `agents/fixtures/claude-attachments.jsonl`.\n *\n * Tool history is folded into assistant text as `[Tool: ...]` annotations\n * (see shared.ts:extractChatPairs) — synthetic tool_use IDs across SDKs are\n * too fragile to reconstruct structurally.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport {\n assertUuidLike,\n type ChatPair,\n clone,\n ensureCwdExists,\n extractChatPairs,\n FIXTURES_DIR,\n} from \"#agents/rollout/shared\";\nimport { parseJsonlText, writeJsonlFile } from \"#platform/jsonl\";\nimport { logger } from \"#platform/logger\";\nimport type { ConversationEntry } from \"#storage/conversations\";\n\ninterface ClaudeAttachments {\n deferredToolsDelta: Record<string, unknown>;\n skillListing: Record<string, unknown>;\n}\n\nlet _attachmentsCache: ClaudeAttachments | null = null;\nfunction loadClaudeAttachments(): ClaudeAttachments {\n if (_attachmentsCache) return _attachmentsCache;\n const raw = readFileSync(join(FIXTURES_DIR, \"claude-attachments.jsonl\"), \"utf8\");\n const lines = parseJsonlText<Record<string, unknown>>(raw);\n if (lines.length < 2) {\n throw new Error(\n `loadClaudeAttachments: expected >=2 entries in claude-attachments.jsonl, got ${lines.length}`,\n );\n }\n _attachmentsCache = {\n deferredToolsDelta: lines[0],\n skillListing: lines[1],\n };\n return _attachmentsCache;\n}\n\n/**\n * Version strings stamped onto synthetic rollouts so they look indistinguishable\n * from a live SDK session. These do not affect resume behavior — the SDKs do\n * not gate on them — but keeping them current avoids confusion in observability\n * tooling that scans rollout files.\n */\nconst CLAUDE_SDK_VERSION = \"2.1.126\";\nconst CLAUDE_DEFAULT_MODEL = \"claude-sonnet-5\";\nconst CLAUDE_DEFAULT_GIT_BRANCH = \"HEAD\";\n\n/**\n * Encode a directory path the way Claude SDK expects in\n * `~/.claude/projects/<encoded-cwd>/`. macOS resolves `/tmp` to\n * `/private/tmp`, mirroring what the SDK records.\n *\n * The SDK normalizes ANY non-alphanumeric character to `-` (verified\n * empirically on disk: `/Users/maestrobot/.../user_6407801418` →\n * `-Users-...-user-6407801418`, i.e. both `/` AND `_` collapse to `-`).\n * A previous implementation only replaced `/` and left `_` intact, so\n * synthetic rollouts landed at `…-user_6407801418/` while the SDK looked\n * at `…-user-6407801418/` — every `set_agent` switch surfaced as \"No\n * conversation found with session ID\" on the next message.\n *\n * Nothing is prepended: a POSIX path starts with `/`, which already becomes\n * the leading `-`. A Windows path does not, and the SDK writes\n * `C:\\Users\\x` as `C--Users-x`; forcing a `-` in front sent Windows rollouts\n * to `-C--Users-x/`, where the SDK never looks.\n */\nexport function encodeClaudeCwd(cwd: string): string {\n const realCwd = cwd.startsWith(\"/tmp/\") ? cwd.replace(/^\\/tmp\\//, \"/private/tmp/\") : cwd;\n return realCwd.replaceAll(/[^a-zA-Z0-9]/g, \"-\");\n}\n\nexport interface ClaudeRolloutOptions {\n /** Working directory the resumed Claude session will report. */\n cwd: string;\n /** Optional override; default = freshly generated UUIDv4. */\n sessionId?: string;\n /**\n * Pairs to encode. If omitted, derived from `entries` via extractChatPairs.\n * Pass explicit pairs when the caller has already shaped the dialogue.\n */\n pairs?: ChatPair[];\n /** When `pairs` is omitted, the source UnifiedEvent log to digest. */\n entries?: ConversationEntry[];\n /** Full provider model id stamped on synthesized assistant history. */\n model?: string;\n}\n\nexport interface ClaudeRolloutResult {\n sessionId: string;\n rolloutPath: string;\n}\n\n/**\n * Materialize a Claude rollout JSONL with the provided dialogue and place it\n * at `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl` so a subsequent\n * `claude.query({ resume: sessionId })` will continue the conversation.\n */\nexport function writeClaudeRollout(opts: ClaudeRolloutOptions): ClaudeRolloutResult {\n const sessionId = opts.sessionId ?? randomUUID();\n assertUuidLike(\"sessionId\", sessionId);\n ensureCwdExists(opts.cwd);\n const pairs = opts.pairs ?? extractChatPairs(opts.entries ?? []);\n const cwdReal = opts.cwd.startsWith(\"/tmp/\")\n ? opts.cwd.replace(/^\\/tmp\\//, \"/private/tmp/\")\n : opts.cwd;\n\n const lines: unknown[] = [];\n const ts = () => new Date().toISOString();\n let lastUuid: string | null = null;\n\n // Queue-operation noise that the live SDK records around each turn. Not\n // strictly required for resume but mirrors what the SDK itself writes,\n // keeping the synthetic file indistinguishable.\n lines.push({ type: \"queue-operation\", operation: \"enqueue\", timestamp: ts(), sessionId });\n lines.push({ type: \"queue-operation\", operation: \"dequeue\", timestamp: ts(), sessionId });\n\n // Per-turn attachment chain captured from a real Claude rollout. claude SDK\n // emits `deferred_tools_delta` followed by `skill_listing` immediately after\n // every user message, building a parentUuid chain user → att1 → att2 →\n // assistant. PoC-7d preserved this shape; replaying it keeps the resumed\n // session indistinguishable from a native one.\n const attachments = loadClaudeAttachments();\n\n for (const pair of pairs) {\n const userUuid = randomUUID();\n lines.push({\n parentUuid: lastUuid,\n isSidechain: false,\n promptId: randomUUID(),\n type: \"user\",\n message: { role: \"user\", content: [{ type: \"text\", text: pair.userText }] },\n uuid: userUuid,\n timestamp: ts(),\n permissionMode: \"bypassPermissions\",\n userType: \"external\",\n entrypoint: \"sdk-ts\",\n cwd: cwdReal,\n sessionId,\n version: CLAUDE_SDK_VERSION,\n gitBranch: CLAUDE_DEFAULT_GIT_BRANCH,\n });\n\n // Attachment 1: deferred_tools_delta — chain from user.\n const att1Uuid = randomUUID();\n const att1 = clone(attachments.deferredToolsDelta);\n (att1 as Record<string, unknown>).parentUuid = userUuid;\n (att1 as Record<string, unknown>).uuid = att1Uuid;\n (att1 as Record<string, unknown>).timestamp = ts();\n (att1 as Record<string, unknown>).sessionId = sessionId;\n (att1 as Record<string, unknown>).cwd = cwdReal;\n lines.push(att1);\n\n // Attachment 2: skill_listing — chain from att1.\n const att2Uuid = randomUUID();\n const att2 = clone(attachments.skillListing);\n (att2 as Record<string, unknown>).parentUuid = att1Uuid;\n (att2 as Record<string, unknown>).uuid = att2Uuid;\n (att2 as Record<string, unknown>).timestamp = ts();\n (att2 as Record<string, unknown>).sessionId = sessionId;\n (att2 as Record<string, unknown>).cwd = cwdReal;\n lines.push(att2);\n\n const assistantUuid = randomUUID();\n lines.push({\n parentUuid: att2Uuid,\n isSidechain: false,\n message: {\n model: opts.model ?? CLAUDE_DEFAULT_MODEL,\n id: `msg_${randomUUID().replace(/-/g, \"\").slice(0, 24)}`,\n type: \"message\",\n role: \"assistant\",\n content: [{ type: \"text\", text: pair.assistantText }],\n stop_reason: \"end_turn\",\n stop_sequence: null,\n stop_details: null,\n usage: {\n input_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n output_tokens: 0,\n server_tool_use: { web_search_requests: 0, web_fetch_requests: 0 },\n service_tier: \"standard\",\n cache_creation: { ephemeral_1h_input_tokens: 0, ephemeral_5m_input_tokens: 0 },\n inference_geo: \"\",\n iterations: [],\n speed: \"standard\",\n },\n diagnostics: null,\n },\n requestId: `req_${randomUUID().replace(/-/g, \"\").slice(0, 22)}`,\n type: \"assistant\",\n uuid: assistantUuid,\n timestamp: ts(),\n userType: \"external\",\n entrypoint: \"sdk-ts\",\n cwd: cwdReal,\n sessionId,\n version: CLAUDE_SDK_VERSION,\n gitBranch: CLAUDE_DEFAULT_GIT_BRANCH,\n });\n lastUuid = assistantUuid;\n }\n\n const projectsDir = join(homedir(), \".claude\", \"projects\", encodeClaudeCwd(opts.cwd));\n const path = join(projectsDir, `${sessionId}.jsonl`);\n writeJsonlFile(path, lines);\n logger.info(\n { sessionId, path, pairs: pairs.length },\n \"writeClaudeRollout: synthetic rollout placed\",\n );\n return { sessionId, rolloutPath: path };\n}\n\n/**\n * Remove the latest poisoned thinking turn and everything after it from the\n * session JSONL.\n *\n * When a turn ends with stop_reason=\"max_tokens\" while extended thinking is\n * active, the Claude CLI writes the truncated thinking block verbatim to the\n * rollout file. The Anthropic API rejects any subsequent resume that replays\n * this incomplete block with 400 \"thinking/redacted_thinking blocks cannot be\n * modified\". Dropping the entire poisoned turn (user entry + attachments +\n * truncated assistant) leaves the JSONL in a clean state so the next\n * claude.query({ resume }) can proceed without a 400.\n *\n * Returns true when the JSONL was found and repaired, false otherwise\n * (file missing, no poisoned assistant turn found, I/O error). Error-path\n * callers fall back to clearing the session ID when false is returned.\n */\nexport function repairPoisonedRollout(sessionId: string, cwd: string): boolean {\n try {\n const path = join(homedir(), \".claude\", \"projects\", encodeClaudeCwd(cwd), `${sessionId}.jsonl`);\n if (!existsSync(path)) return false;\n\n const lines = readFileSync(path, \"utf8\")\n .split(\"\\n\")\n .filter((l) => l.trim());\n\n // Walk backwards to find the latest assistant turn that actually contains\n // the poisoned shape: max_tokens plus a thinking/redacted_thinking block.\n // A resume failure can append a fresh user entry after the poisoned turn;\n // trimming the last user would remove only the retry and leave the bad\n // assistant in place.\n let poisonedAssistantIdx = -1;\n for (let i = lines.length - 1; i >= 0; i--) {\n const entry = parseClaudeRolloutLine(lines[i]);\n if (entry && isPoisonedAssistantEntry(entry)) {\n poisonedAssistantIdx = i;\n break;\n }\n }\n\n if (poisonedAssistantIdx < 0) {\n logger.warn({ sessionId, path }, \"repairPoisonedRollout: no poisoned assistant entry found\");\n return false;\n }\n\n let turnStartIdx = -1;\n for (let i = poisonedAssistantIdx - 1; i >= 0; i--) {\n const entry = parseClaudeRolloutLine(lines[i]);\n if (entry?.type === \"user\") {\n turnStartIdx = i;\n break;\n }\n }\n\n if (turnStartIdx < 0) {\n logger.warn(\n { sessionId, path, poisonedAssistantIdx },\n \"repairPoisonedRollout: poisoned assistant has no preceding user entry\",\n );\n return false;\n }\n\n const kept = lines.slice(0, turnStartIdx);\n writeFileSync(path, kept.length ? `${kept.join(\"\\n\")}\\n` : \"\");\n logger.warn(\n {\n sessionId,\n path,\n poisonedAssistantIdx,\n turnStartIdx,\n droppedEntries: lines.length - turnStartIdx,\n keptEntries: kept.length,\n },\n \"repairPoisonedRollout: truncated turn removed from rollout JSONL\",\n );\n return true;\n } catch (err) {\n logger.warn({ err, sessionId, cwd }, \"repairPoisonedRollout: I/O error\");\n return false;\n }\n}\n\ntype ClaudeRolloutEntry = {\n type?: string;\n message?: {\n stop_reason?: string | null;\n content?: unknown;\n };\n};\n\nfunction parseClaudeRolloutLine(line: string): ClaudeRolloutEntry | null {\n try {\n return JSON.parse(line) as ClaudeRolloutEntry;\n } catch {\n return null;\n }\n}\n\nfunction isPoisonedAssistantEntry(entry: ClaudeRolloutEntry): boolean {\n if (entry.type !== \"assistant\") return false;\n if (entry.message?.stop_reason !== \"max_tokens\") return false;\n const content = entry.message.content;\n if (!Array.isArray(content)) return false;\n return content.some((block) => {\n if (!block || typeof block !== \"object\") return false;\n const type = (block as { type?: unknown }).type;\n return type === \"thinking\" || type === \"redacted_thinking\";\n });\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "5ADF29935DF359FE64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "A0AAEA5E07FB05AB64756E2164756E21",
9
9
  "names": []
10
10
  }