codedeck 0.7.0 → 0.7.2

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 (127) hide show
  1. package/README.md +49 -34
  2. package/dist/cli/commands/claims.js +3 -2
  3. package/dist/cli/commands/claims.js.map +1 -1
  4. package/dist/cli/commands/doctor.js +8 -40
  5. package/dist/cli/commands/doctor.js.map +1 -1
  6. package/dist/cli/commands/logs.js +2 -2
  7. package/dist/cli/commands/logs.js.map +1 -1
  8. package/dist/cli/commands/open.js +8 -9
  9. package/dist/cli/commands/open.js.map +1 -1
  10. package/dist/cli/commands/ps.js +6 -6
  11. package/dist/cli/commands/ps.js.map +1 -1
  12. package/dist/cli/commands/review.js +36 -58
  13. package/dist/cli/commands/review.js.map +1 -1
  14. package/dist/cli/commands/run.js +27 -27
  15. package/dist/cli/commands/run.js.map +1 -1
  16. package/dist/cli/commands/setup.js +96 -314
  17. package/dist/cli/commands/setup.js.map +1 -1
  18. package/dist/cli/commands/show.js +2 -1
  19. package/dist/cli/commands/show.js.map +1 -1
  20. package/dist/cli/commands/ui.js +61 -0
  21. package/dist/cli/commands/ui.js.map +1 -0
  22. package/dist/cli/commands/usage.js +65 -42
  23. package/dist/cli/commands/usage.js.map +1 -1
  24. package/dist/cli/commands/wait.js +3 -2
  25. package/dist/cli/commands/wait.js.map +1 -1
  26. package/dist/cli/index.js +55 -39
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/web-launch.js +126 -0
  29. package/dist/cli/web-launch.js.map +1 -0
  30. package/dist/config/config.js +0 -70
  31. package/dist/config/config.js.map +1 -1
  32. package/dist/config/paths.js +1 -0
  33. package/dist/config/paths.js.map +1 -1
  34. package/dist/config/setup.js +248 -0
  35. package/dist/config/setup.js.map +1 -0
  36. package/dist/config/web-host.js +31 -0
  37. package/dist/config/web-host.js.map +1 -0
  38. package/dist/config/web-port.js +24 -0
  39. package/dist/config/web-port.js.map +1 -0
  40. package/dist/core/claude-transcript.js +87 -0
  41. package/dist/core/claude-transcript.js.map +1 -1
  42. package/dist/core/errors.js +19 -39
  43. package/dist/core/errors.js.map +1 -1
  44. package/dist/core/models.js +4 -1
  45. package/dist/core/models.js.map +1 -1
  46. package/dist/core/pricing.js +73 -50
  47. package/dist/core/pricing.js.map +1 -1
  48. package/dist/core/roles.js +6 -5
  49. package/dist/core/roles.js.map +1 -1
  50. package/dist/core/run-skills.js +114 -0
  51. package/dist/core/run-skills.js.map +1 -0
  52. package/dist/core/run-usage.js +4 -1
  53. package/dist/core/run-usage.js.map +1 -1
  54. package/dist/core/session.js +6 -16
  55. package/dist/core/session.js.map +1 -1
  56. package/dist/core/usage-query.js +41 -0
  57. package/dist/core/usage-query.js.map +1 -0
  58. package/dist/daemon/build-id.js +30 -0
  59. package/dist/daemon/build-id.js.map +1 -0
  60. package/dist/daemon/daemon.js +1113 -799
  61. package/dist/daemon/daemon.js.map +1 -1
  62. package/dist/daemon/instance-lock.js +48 -0
  63. package/dist/daemon/instance-lock.js.map +1 -0
  64. package/dist/daemon/web-supervisor.js +251 -0
  65. package/dist/daemon/web-supervisor.js.map +1 -0
  66. package/dist/drivers/antigravity/parser.js +7 -10
  67. package/dist/drivers/antigravity/parser.js.map +1 -1
  68. package/dist/drivers/claude/driver.js +1 -0
  69. package/dist/drivers/claude/driver.js.map +1 -1
  70. package/dist/drivers/codex/driver.js +14 -3
  71. package/dist/drivers/codex/driver.js.map +1 -1
  72. package/dist/drivers/codex/host-skills.js +57 -0
  73. package/dist/drivers/codex/host-skills.js.map +1 -0
  74. package/dist/drivers/opencode/driver.js +6 -2
  75. package/dist/drivers/opencode/driver.js.map +1 -1
  76. package/dist/drivers/session-runtime.js +2 -0
  77. package/dist/drivers/session-runtime.js.map +1 -1
  78. package/dist/drivers/terminal.js +15 -0
  79. package/dist/drivers/terminal.js.map +1 -1
  80. package/dist/git/diff.js +29 -4
  81. package/dist/git/diff.js.map +1 -1
  82. package/dist/git/repository.js +0 -20
  83. package/dist/git/repository.js.map +1 -1
  84. package/dist/git/worktree.js +0 -14
  85. package/dist/git/worktree.js.map +1 -1
  86. package/dist/open/contract.js.map +1 -1
  87. package/dist/open/pty.js +330 -5
  88. package/dist/open/pty.js.map +1 -1
  89. package/dist/plugin/agents/general.md +33 -6
  90. package/dist/plugin/hooks/pane-ticker.ts +102 -0
  91. package/dist/plugin/hooks/register.tsx +33 -8
  92. package/dist/plugin/mods/agents/pane.ts +259 -136
  93. package/dist/plugin/mods/agents/types.ts +19 -3
  94. package/dist/plugin/statusline.sh +22 -34
  95. package/dist/store/database.js +5 -7
  96. package/dist/store/database.js.map +1 -1
  97. package/dist/store/sessions.js +114 -81
  98. package/dist/store/sessions.js.map +1 -1
  99. package/dist/utils/process.js +2 -49
  100. package/dist/utils/process.js.map +1 -1
  101. package/dist/web/brand.js +59 -0
  102. package/dist/web/brand.js.map +1 -0
  103. package/dist/web/child.js +67 -0
  104. package/dist/web/child.js.map +1 -0
  105. package/dist/web/home-page.js +48 -0
  106. package/dist/web/home-page.js.map +1 -0
  107. package/dist/web/review-page.js +12 -5
  108. package/dist/web/review-page.js.map +1 -1
  109. package/dist/web/security.js +170 -0
  110. package/dist/web/security.js.map +1 -0
  111. package/dist/web/server.js +198 -0
  112. package/dist/web/server.js.map +1 -0
  113. package/dist/web/setup-icons.js +37 -0
  114. package/dist/web/setup-icons.js.map +1 -0
  115. package/dist/web/setup-page.js +1795 -0
  116. package/dist/web/setup-page.js.map +1 -0
  117. package/dist/web/setup-routes.js +475 -0
  118. package/dist/web/setup-routes.js.map +1 -0
  119. package/dist/web/usage-page.js +609 -0
  120. package/dist/web/usage-page.js.map +1 -0
  121. package/dist/web/usage-routes.js +88 -0
  122. package/dist/web/usage-routes.js.map +1 -0
  123. package/dist/web/web-token.js +56 -0
  124. package/dist/web/web-token.js.map +1 -0
  125. package/package.json +1 -1
  126. package/dist/plugin/prompts/_partials/commit.md +0 -145
  127. package/dist/plugin/prompts/_partials/pr-writer.md +0 -186
@@ -0,0 +1,248 @@
1
+ export class SetupUsageError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "SetupUsageError";
5
+ }
6
+ }
7
+ function jsonObject(value) {
8
+ return typeof value === "object" && value !== null && !Array.isArray(value);
9
+ }
10
+ function jsonValue(value) {
11
+ if (value === undefined)
12
+ return null;
13
+ if (Array.isArray(value))
14
+ return value.map(jsonValue);
15
+ if (jsonObject(value)) {
16
+ return Object.fromEntries(Object.keys(value)
17
+ .sort((left, right) => left.localeCompare(right))
18
+ .map((key) => [key, jsonValue(value[key])]));
19
+ }
20
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value === null) {
21
+ return value;
22
+ }
23
+ return null;
24
+ }
25
+ function jsonEqual(left, right) {
26
+ return JSON.stringify(jsonValue(left)) === JSON.stringify(jsonValue(right));
27
+ }
28
+ function pointerPart(value) {
29
+ return value.replaceAll("~", "~0").replaceAll("/", "~1");
30
+ }
31
+ function diffAt(output, pathValue, beforePresent, before, afterPresent, after, expandObjectChildren = false) {
32
+ const beforeObject = beforePresent && jsonObject(before) ? before : undefined;
33
+ const afterObject = afterPresent && jsonObject(after) ? after : undefined;
34
+ if (beforeObject !== undefined && afterObject !== undefined) {
35
+ const keys = [...new Set([...Object.keys(beforeObject), ...Object.keys(afterObject)])]
36
+ .sort((left, right) => left.localeCompare(right));
37
+ if (keys.length === 0)
38
+ return;
39
+ for (const key of keys) {
40
+ diffAt(output, pathValue + "/" + pointerPart(key), Object.hasOwn(beforeObject, key), beforeObject[key], Object.hasOwn(afterObject, key), afterObject[key]);
41
+ }
42
+ return;
43
+ }
44
+ if (!beforePresent && afterObject !== undefined) {
45
+ if (expandObjectChildren) {
46
+ const keys = Object.keys(afterObject).sort((left, right) => left.localeCompare(right));
47
+ if (keys.length === 0) {
48
+ output.push({
49
+ path: pathValue,
50
+ beforePresent: false,
51
+ before: null,
52
+ afterPresent: true,
53
+ after: jsonValue(afterObject),
54
+ });
55
+ return;
56
+ }
57
+ for (const key of keys) {
58
+ const value = afterObject[key];
59
+ const childPath = pathValue + "/" + pointerPart(key);
60
+ if (jsonObject(value)) {
61
+ output.push({
62
+ path: childPath,
63
+ beforePresent: false,
64
+ before: null,
65
+ afterPresent: true,
66
+ after: jsonValue(value),
67
+ });
68
+ }
69
+ else {
70
+ diffAt(output, childPath, false, undefined, true, value);
71
+ }
72
+ }
73
+ return;
74
+ }
75
+ output.push({
76
+ path: pathValue,
77
+ beforePresent: false,
78
+ before: null,
79
+ afterPresent: true,
80
+ after: jsonValue(afterObject),
81
+ });
82
+ return;
83
+ }
84
+ if (beforeObject !== undefined && !afterPresent) {
85
+ if (expandObjectChildren) {
86
+ const keys = Object.keys(beforeObject).sort((left, right) => left.localeCompare(right));
87
+ if (keys.length === 0) {
88
+ output.push({
89
+ path: pathValue,
90
+ beforePresent: true,
91
+ before: jsonValue(beforeObject),
92
+ afterPresent: false,
93
+ after: null,
94
+ });
95
+ return;
96
+ }
97
+ for (const key of keys) {
98
+ const value = beforeObject[key];
99
+ const childPath = pathValue + "/" + pointerPart(key);
100
+ if (jsonObject(value)) {
101
+ output.push({
102
+ path: childPath,
103
+ beforePresent: true,
104
+ before: jsonValue(value),
105
+ afterPresent: false,
106
+ after: null,
107
+ });
108
+ }
109
+ else {
110
+ diffAt(output, childPath, true, value, false, undefined);
111
+ }
112
+ }
113
+ return;
114
+ }
115
+ output.push({
116
+ path: pathValue,
117
+ beforePresent: true,
118
+ before: jsonValue(beforeObject),
119
+ afterPresent: false,
120
+ after: null,
121
+ });
122
+ return;
123
+ }
124
+ if (beforePresent === afterPresent && (!beforePresent || jsonEqual(before, after)))
125
+ return;
126
+ output.push({
127
+ path: pathValue,
128
+ beforePresent,
129
+ before: jsonValue(before),
130
+ afterPresent,
131
+ after: jsonValue(after),
132
+ });
133
+ }
134
+ export function diffConfig(before, after) {
135
+ const output = [];
136
+ const beforeObject = jsonObject(before) ? before : {};
137
+ const afterObject = jsonObject(after) ? after : {};
138
+ const keys = [...new Set([...Object.keys(beforeObject), ...Object.keys(afterObject)])]
139
+ .sort((left, right) => left.localeCompare(right));
140
+ for (const key of keys) {
141
+ diffAt(output, "/" + pointerPart(key), Object.hasOwn(beforeObject, key), beforeObject[key], Object.hasOwn(afterObject, key), afterObject[key], true);
142
+ }
143
+ return output.sort((left, right) => left.path.localeCompare(right.path));
144
+ }
145
+ export function catalogContains(catalog, model) {
146
+ return catalog.providers.some((provider) => provider.models.some((candidate) => candidate.id === model || (candidate.aliases !== undefined && candidate.aliases.some((alias) => alias === model))));
147
+ }
148
+ export function validateBindings(bindings, catalog) {
149
+ const byAgent = new Map(catalog.models.map((item) => [item.agent, item]));
150
+ const entries = bindings.map(({ role, binding }) => {
151
+ const found = byAgent.get(binding.harness);
152
+ if (found?.available === false) {
153
+ return {
154
+ role,
155
+ harness: binding.harness,
156
+ model: binding.model,
157
+ status: "harness-unavailable",
158
+ message: 'Cannot apply binding for role "' + role + '": harness "' + binding.harness + '" is unavailable.',
159
+ };
160
+ }
161
+ if (catalog.status === "unavailable" || found === undefined) {
162
+ return {
163
+ role,
164
+ harness: binding.harness,
165
+ model: binding.model,
166
+ status: "unverified",
167
+ message: 'Cannot validate model "' +
168
+ binding.model +
169
+ '" for harness "' +
170
+ binding.harness +
171
+ '": catalog unavailable.',
172
+ };
173
+ }
174
+ if (catalog.status === "offline" && !catalogContains(found, binding.model)) {
175
+ return {
176
+ role,
177
+ harness: binding.harness,
178
+ model: binding.model,
179
+ status: "unverified",
180
+ message: 'Cannot validate model "' +
181
+ binding.model +
182
+ '" for harness "' +
183
+ binding.harness +
184
+ '": the catalog is stale. Re-run with --refresh.',
185
+ };
186
+ }
187
+ if (!catalogContains(found, binding.model)) {
188
+ return {
189
+ role,
190
+ harness: binding.harness,
191
+ model: binding.model,
192
+ status: "unknown-model",
193
+ message: 'Model "' +
194
+ binding.model +
195
+ '" is not in the ' +
196
+ binding.harness +
197
+ ' catalog for role "' +
198
+ role +
199
+ '".',
200
+ };
201
+ }
202
+ return { role, harness: binding.harness, model: binding.model, status: "accepted", message: "" };
203
+ });
204
+ const failed = entries.find((entry) => entry.status !== "accepted");
205
+ const code = failed === undefined
206
+ ? undefined
207
+ : failed.status === "harness-unavailable"
208
+ ? 11
209
+ : failed.status === "unknown-model"
210
+ ? 12
211
+ : 13;
212
+ let message = null;
213
+ if (catalog.status === "offline") {
214
+ message = failed?.status === "unverified" ? failed.message : "Catalog is stale; using offline cache.";
215
+ }
216
+ else if (catalog.status === "unavailable") {
217
+ message = failed?.message ?? "Catalog unavailable.";
218
+ }
219
+ return { entries, code, message };
220
+ }
221
+ export function buildSetupPlan(currentConfig, selections) {
222
+ const currentAgents = jsonObject(currentConfig.agents)
223
+ ? currentConfig.agents
224
+ : {};
225
+ const updatedTarget = {
226
+ ...currentConfig,
227
+ agents: { ...currentAgents, ...selections.agents },
228
+ };
229
+ if (selections.orchestrator !== undefined) {
230
+ updatedTarget.orchestrator = {
231
+ investigate: selections.orchestrator.investigate,
232
+ selfWork: selections.orchestrator.selfWork,
233
+ tools: selections.orchestrator.tools,
234
+ ...(selections.orchestrator.parallelism === undefined
235
+ ? {}
236
+ : { parallelism: selections.orchestrator.parallelism }),
237
+ };
238
+ }
239
+ if (selections.sandbox !== undefined)
240
+ updatedTarget.defaultSandbox = selections.sandbox;
241
+ if (selections.autocompact !== undefined) {
242
+ if (selections.autocompact.enabled !== false || currentConfig.autocompact !== undefined) {
243
+ updatedTarget.autocompact = { ...currentConfig.autocompact, ...selections.autocompact };
244
+ }
245
+ }
246
+ return { proposedConfig: updatedTarget, diff: diffConfig(currentConfig, updatedTarget) };
247
+ }
248
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/config/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { isIP } from "node:net";
2
+ /** Bind address of the web console when `web.host` is not set. */
3
+ export const DEFAULT_WEB_HOST = "127.0.0.1";
4
+ /**
5
+ * Resolve `web.host` to an IP address, or use loopback when it is absent or
6
+ * invalid. The daemon and CLI share this resolver so they make the same choice.
7
+ */
8
+ export function resolveWebHost(config) {
9
+ const web = config.web;
10
+ if (web === undefined)
11
+ return { host: DEFAULT_WEB_HOST };
12
+ if (typeof web !== "object" || web === null || Array.isArray(web)) {
13
+ return { host: DEFAULT_WEB_HOST, invalid: web };
14
+ }
15
+ const raw = web.host;
16
+ if (raw === undefined)
17
+ return { host: DEFAULT_WEB_HOST };
18
+ if (typeof raw === "string" && isIP(raw) !== 0)
19
+ return { host: raw };
20
+ return { host: DEFAULT_WEB_HOST, invalid: raw };
21
+ }
22
+ export function invalidWebHostMessage(value) {
23
+ return `Ignoring invalid web.host in config: ${JSON.stringify(value)}`;
24
+ }
25
+ export function webBaseUrl(host, port) {
26
+ const urlHost = host === DEFAULT_WEB_HOST || host === "0.0.0.0" || host === "::"
27
+ ? DEFAULT_WEB_HOST
28
+ : isIP(host) === 6 ? `[${host}]` : host;
29
+ return `http://${urlHost}:${port}`;
30
+ }
31
+ //# sourceMappingURL=web-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-host.js","sourceRoot":"","sources":["../../src/config/web-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAQ5C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAI,GAA0B,CAAC,IAAI,CAAC;IAC7C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY;IACnD,MAAM,OAAO,GAAG,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAC9E,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,OAAO,UAAU,OAAO,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** Port of the web console when `web.port` does not name another. */
2
+ export const DEFAULT_WEB_PORT = 7777;
3
+ /**
4
+ * The preferred console port: `web.port` when it is an integer in 1-65535,
5
+ * else 7777. The daemon and the CLI both resolve it here; the web child only
6
+ * receives the result as an argument.
7
+ */
8
+ export function resolveWebPort(config) {
9
+ const web = config.web;
10
+ if (web === undefined)
11
+ return { port: DEFAULT_WEB_PORT };
12
+ if (typeof web !== "object" || web === null || Array.isArray(web))
13
+ return { port: DEFAULT_WEB_PORT, invalid: web };
14
+ const raw = web.port;
15
+ if (raw === undefined)
16
+ return { port: DEFAULT_WEB_PORT };
17
+ if (typeof raw === "number" && Number.isInteger(raw) && raw >= 1 && raw <= 65535)
18
+ return { port: raw };
19
+ return { port: DEFAULT_WEB_PORT, invalid: raw };
20
+ }
21
+ export function invalidWebPortMessage(value) {
22
+ return `Ignoring invalid web.port in config: ${JSON.stringify(value)}`;
23
+ }
24
+ //# sourceMappingURL=web-port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-port.js","sourceRoot":"","sources":["../../src/config/web-port.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAQrC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACnH,MAAM,GAAG,GAAI,GAA0B,CAAC,IAAI,CAAC;IAC7C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvG,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,CAAC"}
@@ -3,6 +3,8 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { createInterface } from "node:readline";
5
5
  import { computeSessionCost } from "./pricing.js";
6
+ export const TRANSCRIPT_CHUNK_LIMIT_BYTES = 1_048_576;
7
+ export const TRANSCRIPT_PENDING_LINE_LIMIT_BYTES = 4_194_304;
6
8
  function isRecord(value) {
7
9
  return typeof value === "object" && value !== null && !Array.isArray(value);
8
10
  }
@@ -15,6 +17,91 @@ function finiteNumber(value) {
15
17
  function emptyUsage() {
16
18
  return { inputTokens: 0, outputTokens: 0, cachedTokens: 0 };
17
19
  }
20
+ function appendBytes(left, right) {
21
+ const result = new Uint8Array(left.byteLength + right.byteLength);
22
+ result.set(left);
23
+ result.set(right, left.byteLength);
24
+ return result;
25
+ }
26
+ function consumeAssistantLine(line, state) {
27
+ let parsed;
28
+ try {
29
+ parsed = JSON.parse(new TextDecoder().decode(line));
30
+ }
31
+ catch {
32
+ return;
33
+ }
34
+ if (!isRecord(parsed) || parsed.type !== "assistant" || !isRecord(parsed.message) || !isRecord(parsed.message.usage)) {
35
+ return;
36
+ }
37
+ const usage = parsed.message.usage;
38
+ const inputTokens = tokenCount(usage.input_tokens);
39
+ const outputTokens = tokenCount(usage.output_tokens);
40
+ const cacheReadTokens = tokenCount(usage.cache_read_input_tokens);
41
+ const cacheCreationTokens = tokenCount(usage.cache_creation_input_tokens);
42
+ if (inputTokens === 0 && outputTokens === 0 && cacheReadTokens === 0 && cacheCreationTokens === 0)
43
+ return;
44
+ const messageId = parsed.message.id;
45
+ const requestId = parsed.requestId;
46
+ if (messageId != null && requestId != null) {
47
+ const key = JSON.stringify([messageId, requestId]);
48
+ if (state.seenMessageKeys.has(key))
49
+ return;
50
+ state.seenMessageKeys.add(key);
51
+ }
52
+ state.inputTokens += inputTokens;
53
+ state.outputTokens += outputTokens;
54
+ state.cachedTokens += cacheReadTokens + cacheCreationTokens;
55
+ }
56
+ export function consumeTranscriptChunk(state, bytes) {
57
+ if (bytes.byteLength > TRANSCRIPT_CHUNK_LIMIT_BYTES) {
58
+ throw new RangeError(`Transcript chunk exceeds ${TRANSCRIPT_CHUNK_LIMIT_BYTES} bytes`);
59
+ }
60
+ const nextState = {
61
+ ...state,
62
+ pendingLine: state.pendingLine.slice(),
63
+ seenMessageKeys: new Set(state.seenMessageKeys),
64
+ };
65
+ let offset = 0;
66
+ while (offset < bytes.byteLength) {
67
+ if (nextState.discardUntilNewline) {
68
+ let newline = offset;
69
+ while (newline < bytes.byteLength && bytes[newline] !== 0x0a)
70
+ newline += 1;
71
+ if (newline === bytes.byteLength)
72
+ break;
73
+ nextState.discardUntilNewline = false;
74
+ offset = newline + 1;
75
+ continue;
76
+ }
77
+ let newline = offset;
78
+ while (newline < bytes.byteLength && bytes[newline] !== 0x0a)
79
+ newline += 1;
80
+ const complete = newline < bytes.byteLength;
81
+ const end = complete ? newline : bytes.byteLength;
82
+ const fragment = bytes.subarray(offset, end);
83
+ const lineLength = nextState.pendingLine.byteLength + fragment.byteLength;
84
+ if (lineLength > TRANSCRIPT_PENDING_LINE_LIMIT_BYTES) {
85
+ nextState.pendingLine = new Uint8Array();
86
+ if (!complete)
87
+ nextState.discardUntilNewline = true;
88
+ }
89
+ else if (complete) {
90
+ const line = nextState.pendingLine.byteLength === 0
91
+ ? fragment
92
+ : appendBytes(nextState.pendingLine, fragment);
93
+ consumeAssistantLine(line, nextState);
94
+ nextState.pendingLine = new Uint8Array();
95
+ }
96
+ else {
97
+ nextState.pendingLine = appendBytes(nextState.pendingLine, fragment);
98
+ }
99
+ if (!complete)
100
+ break;
101
+ offset = newline + 1;
102
+ }
103
+ return nextState;
104
+ }
18
105
  function usageFromCostState(value) {
19
106
  const totals = emptyUsage();
20
107
  const modelUsage = isRecord(value.modelUsage) ? value.modelUsage : {};
@@ -1 +1 @@
1
- {"version":3,"file":"claude-transcript.js","sourceRoot":"","sources":["../../src/core/claude-transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-transcript.js","sourceRoot":"","sources":["../../src/core/claude-transcript.ts"],"names":[],"mappings":"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"}
@@ -8,55 +8,18 @@ export class RunAgentError extends Error {
8
8
  this.name = this.constructor.name;
9
9
  }
10
10
  }
11
- export class AgentNotInstalledError extends RunAgentError {
12
- constructor(agent) {
13
- super(`Agent "${agent}" is not installed`, "AGENT_NOT_INSTALLED", { agent });
14
- }
15
- }
16
- export class AgentAuthenticationRequiredError extends RunAgentError {
17
- constructor(agent) {
18
- super(`Agent "${agent}" requires authentication`, "AGENT_AUTH_REQUIRED", { agent });
19
- }
20
- }
21
- export class AgentStartFailedError extends RunAgentError {
22
- constructor(agent, cause) {
23
- super(`Failed to start agent "${agent}"`, "AGENT_START_FAILED", { agent, cause });
24
- }
25
- }
26
11
  export class SessionNotFoundError extends RunAgentError {
27
12
  constructor(id) {
28
13
  super(`Session "${id}" not found`, "SESSION_NOT_FOUND", { id });
29
14
  }
30
15
  }
31
- export class SessionNotRunningError extends RunAgentError {
32
- constructor(id) {
33
- super(`Session "${id}" is not running`, "SESSION_NOT_RUNNING", { id });
34
- }
35
- }
36
- export class CapabilityNotSupportedError extends RunAgentError {
37
- constructor(agent, capability) {
38
- super(`Agent "${agent}" does not support "${capability}"`, "CAPABILITY_NOT_SUPPORTED", { agent, capability });
39
- }
40
- }
41
- export class RepositoryNotFoundError extends RunAgentError {
42
- constructor(cwd) {
43
- super(`No git repository found at "${cwd}"`, "REPOSITORY_NOT_FOUND", { cwd });
44
- }
45
- }
46
16
  export class WorktreeCreationFailedError extends RunAgentError {
47
17
  constructor(cause) {
48
18
  super("Failed to create git worktree", "WORKTREE_CREATION_FAILED", { cause });
49
19
  }
50
20
  }
51
- export class DaemonUnavailableError extends RunAgentError {
52
- constructor(cause) {
53
- super("CodeDeck daemon is unavailable", "DAEMON_UNAVAILABLE", { cause });
54
- }
55
- }
56
- export class ProtocolError extends RunAgentError {
57
- constructor(message, cause) {
58
- super(message, "PROTOCOL_ERROR", { cause });
59
- }
21
+ export function errorMessage(e) {
22
+ return e instanceof Error ? e.message : String(e);
60
23
  }
61
24
  // Order matters: the most specific signatures first. "EPIPE" alone is LAST —
62
25
  // it is a substring task output can legitimately contain (e.g. a test grepping
@@ -77,9 +40,26 @@ const SIGNAL_EXIT_CODES = {
77
40
  137: "SIGKILL",
78
41
  139: "SIGSEGV",
79
42
  };
43
+ // SQLITE_BUSY (5) and its extended codes, e.g. SQLITE_BUSY_SNAPSHOT (517),
44
+ // which a WAL read snapshot gets when another writer commits before it
45
+ // upgrades to write. busy_timeout never retries that one.
46
+ const SQLITE_BUSY = 5;
47
+ const STORE_BUSY_PATTERN = /database is locked|SQLITE_BUSY|database is busy/i;
48
+ export function isStoreBusy(error) {
49
+ const errcode = error?.errcode;
50
+ if (typeof errcode === "number")
51
+ return (errcode & 0xff) === SQLITE_BUSY;
52
+ const message = error instanceof Error ? error.message : String(error);
53
+ return STORE_BUSY_PATTERN.test(message);
54
+ }
80
55
  export function classifyFailure(text, exitCode, signal) {
81
56
  const clean = (text || "").trim();
82
57
  const detail = clean.slice(0, 300) || undefined;
58
+ // The daemon's own store, not the harness or the task: checked first so
59
+ // no harness signature claims it.
60
+ if (STORE_BUSY_PATTERN.test(clean)) {
61
+ return { code: "STORE_BUSY", blame: "infra", retryable: true, detail };
62
+ }
83
63
  for (const [pattern, reason] of HARNESS_CRASH_PATTERNS) {
84
64
  if (pattern.test(clean)) {
85
65
  return { code: "HARNESS_CRASH", blame: "harness", retryable: true, reason, detail };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -151,6 +151,9 @@ function maxAge(entries) {
151
151
  return null;
152
152
  return Math.max(...entries.map((entry) => entry.age.ageMs));
153
153
  }
154
+ // Covers the slowest driver budget: omp spends up to 10 s on `models refresh`
155
+ // and 12 s on `models --json`. Discovery returns as soon as every harness answers.
156
+ export const CATALOG_DISCOVERY_TIMEOUT_MS = 25_000;
154
157
  async function discoverWithTimeout(registry, request, discover) {
155
158
  const discovery = Promise.resolve().then(() => discover(registry, request));
156
159
  let timer;
@@ -211,7 +214,7 @@ export async function getBatchModels(registry, options = {}) {
211
214
  };
212
215
  }
213
216
  const controller = new AbortController();
214
- const timeoutMs = options.timeoutMs ?? 12_000;
217
+ const timeoutMs = options.timeoutMs ?? CATALOG_DISCOVERY_TIMEOUT_MS;
215
218
  const discover = options.discover ?? ((selected, request) => discoverAllModels(selected, {
216
219
  agents: request.agents,
217
220
  refresh: request.refresh,