subagent-extension-for-codex 0.1.1 → 0.3.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.
Files changed (48) hide show
  1. package/README.md +16 -13
  2. package/assets/icons/archive-view.svg +16 -0
  3. package/assets/icons/arrow-up-circle.svg +14 -0
  4. package/assets/icons/check-circle.svg +14 -0
  5. package/assets/icons/file-code.svg +17 -0
  6. package/assets/icons/file-diff.svg +17 -0
  7. package/assets/icons/file-text.svg +17 -0
  8. package/assets/icons/git-commit-off.svg +15 -0
  9. package/assets/icons/git-off.svg +17 -0
  10. package/assets/icons/note.svg +16 -0
  11. package/dist/THIRD_PARTY_LICENSES.txt +21 -1
  12. package/dist/app.html +811 -191
  13. package/dist/bundle/chunks/{chunk-KFBRPWLR.js → chunk-36LESPFG.js} +8467 -7970
  14. package/dist/bundle/chunks/chunk-36LESPFG.js.map +6 -0
  15. package/dist/bundle/chunks/{chunk-5TX3SEV2.js → chunk-FT2Y2DFZ.js} +137 -1
  16. package/dist/bundle/chunks/chunk-FT2Y2DFZ.js.map +6 -0
  17. package/dist/bundle/chunks/{chunk-LZFYKJ4Y.js → chunk-L5ILPS3O.js} +1796 -845
  18. package/dist/bundle/chunks/chunk-L5ILPS3O.js.map +6 -0
  19. package/dist/bundle/chunks/chunk-TPCNCQM7.js +970 -0
  20. package/dist/bundle/chunks/chunk-TPCNCQM7.js.map +6 -0
  21. package/dist/bundle/chunks/{v4-LDJUK5DU.js → v4-NCRHZ3K4.js} +2 -2
  22. package/dist/bundle/main.js +21868 -17076
  23. package/dist/bundle/main.js.map +3 -3
  24. package/dist/bundle/projects-cli.js +11 -8
  25. package/dist/bundle/projects-cli.js.map +1 -1
  26. package/dist/bundle/stdio.js +106 -8
  27. package/dist/bundle/stdio.js.map +2 -2
  28. package/migrations/20261107064009_claude-sdk-settings/migration.sql +39 -0
  29. package/migrations/20261107064009_claude-sdk-settings/snapshot.json +615 -0
  30. package/migrations/20261107203218_task-read-indexes/migration.sql +9 -0
  31. package/migrations/20261107203218_task-read-indexes/snapshot.json +762 -0
  32. package/migrations/20261107210532_chat-events-backfill/migration.sql +23 -0
  33. package/migrations/20261107210532_chat-events-backfill/snapshot.json +762 -0
  34. package/migrations/20261108005345_task-messages/migration.sql +9 -0
  35. package/migrations/20261108005345_task-messages/snapshot.json +841 -0
  36. package/migrations/20261108005348_task-messages-backfill/migration.sql +14 -0
  37. package/migrations/20261108005348_task-messages-backfill/snapshot.json +841 -0
  38. package/migrations/20261110025216_task-attachments/migration.sql +21 -0
  39. package/migrations/20261110025216_task-attachments/snapshot.json +1040 -0
  40. package/package.json +13 -1
  41. package/plugin.json +1 -1
  42. package/skills/delegation/SKILL.md +14 -7
  43. package/dist/bundle/chunks/chunk-5TX3SEV2.js.map +0 -6
  44. package/dist/bundle/chunks/chunk-KFBRPWLR.js.map +0 -6
  45. package/dist/bundle/chunks/chunk-L3PORPD3.js +0 -450
  46. package/dist/bundle/chunks/chunk-L3PORPD3.js.map +0 -6
  47. package/dist/bundle/chunks/chunk-LZFYKJ4Y.js.map +0 -6
  48. /package/dist/bundle/chunks/{v4-LDJUK5DU.js.map → v4-NCRHZ3K4.js.map} +0 -0
@@ -1,450 +0,0 @@
1
- import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url);
2
- import {
3
- external_exports
4
- } from "./chunk-5TX3SEV2.js";
5
-
6
- // src/service/platform/logging/logger.ts
7
- import { AsyncLocalStorage } from "node:async_hooks";
8
- import { randomUUID } from "node:crypto";
9
- import { homedir } from "node:os";
10
-
11
- // src/service/platform/logging/error-metadata.ts
12
- function errorCategory(error) {
13
- if (!(error instanceof Error)) return "unknown";
14
- const message = error.message.toLowerCase();
15
- const status = "status" in error ? error.status : void 0;
16
- if (status === 401 || status === 403 || /unauthorized|authentication|invalid.*(?:token|api.?key)|missing.*(?:token|api.?key)|not logged in/.test(
17
- message
18
- )) {
19
- return "authentication";
20
- }
21
- if (status === 429 || /rate.?limit|too many requests/.test(message)) {
22
- return "rate_limit";
23
- }
24
- if (error.name === "AbortError") return "aborted";
25
- if (error.name === "TimeoutError" || /timed? ?out|timeout/.test(message)) {
26
- return "timeout";
27
- }
28
- if (/econnrefused|econnreset|enotfound|fetch failed|network/.test(message)) {
29
- return "connection";
30
- }
31
- if (/budget.*exhausted|maximum.*budget/.test(message)) return "budget";
32
- return "unknown";
33
- }
34
-
35
- // src/service/platform/logging/jsonl-writer.ts
36
- import { appendFile, chmod, rename, stat } from "node:fs/promises";
37
- var JsonlWriter = class {
38
- constructor(path, options = {}) {
39
- this.path = path;
40
- for (const value of [
41
- options.maxBytes,
42
- options.backups,
43
- options.maxPendingBytes
44
- ]) {
45
- if (value !== void 0 && (!Number.isSafeInteger(value) || value < 1)) {
46
- throw new Error("Log writer limits must be positive integers");
47
- }
48
- }
49
- this.maxBytes = options.maxBytes ?? 5e6;
50
- this.backups = options.backups ?? 3;
51
- this.maxPendingBytes = options.maxPendingBytes ?? 1e6;
52
- }
53
- path;
54
- writes = Promise.resolve();
55
- size;
56
- pendingBytes = 0;
57
- dropped = 0;
58
- failureReported = false;
59
- maxBytes;
60
- backups;
61
- maxPendingBytes;
62
- write(record) {
63
- let line;
64
- try {
65
- line = `${JSON.stringify(record)}
66
- `;
67
- } catch {
68
- this.dropped++;
69
- return;
70
- }
71
- const bytes = Buffer.byteLength(line);
72
- if (bytes > this.maxBytes || this.pendingBytes + bytes > this.maxPendingBytes) {
73
- this.dropped++;
74
- return;
75
- }
76
- this.pendingBytes += bytes;
77
- this.writes = this.writes.then(async () => {
78
- try {
79
- if (this.dropped) {
80
- const dropped = this.dropped;
81
- this.dropped = 0;
82
- await this.append(
83
- `${JSON.stringify({ timestamp: (/* @__PURE__ */ new Date()).toISOString(), event: "logging.dropped", count: dropped })}
84
- `
85
- );
86
- }
87
- await this.append(line);
88
- this.failureReported = false;
89
- } catch {
90
- this.size = void 0;
91
- if (!this.failureReported) {
92
- this.failureReported = true;
93
- process.stderr.write(
94
- "Structured log write failed; records may be lost.\n"
95
- );
96
- }
97
- } finally {
98
- this.pendingBytes -= bytes;
99
- }
100
- });
101
- }
102
- flush() {
103
- return this.writes;
104
- }
105
- async append(line) {
106
- const bytes = Buffer.byteLength(line);
107
- if (this.size === void 0) {
108
- try {
109
- this.size = (await stat(this.path)).size;
110
- await chmod(this.path, 384);
111
- } catch (error) {
112
- if (error.code !== "ENOENT") throw error;
113
- this.size = 0;
114
- }
115
- }
116
- if (this.size > 0 && this.size + bytes > this.maxBytes) {
117
- await chmod(this.path, 384);
118
- for (let index = this.backups - 1; index >= 1; index--) {
119
- await chmod(`${this.path}.${index}`, 384).then(
120
- () => rename(`${this.path}.${index}`, `${this.path}.${index + 1}`)
121
- ).catch((error) => {
122
- if (error.code !== "ENOENT") throw error;
123
- });
124
- }
125
- await rename(this.path, `${this.path}.1`);
126
- this.size = 0;
127
- }
128
- await appendFile(this.path, line, { mode: 384 });
129
- this.size += bytes;
130
- }
131
- };
132
-
133
- // src/service/platform/logging/logger.ts
134
- var levels = {
135
- debug: 10,
136
- info: 20,
137
- warn: 30,
138
- error: 40
139
- };
140
- var context = new AsyncLocalStorage();
141
- var writer;
142
- var threshold = "info";
143
- var instanceId = randomUUID();
144
- var secrets = [];
145
- function configureLogging(path, level = "info") {
146
- if (!Object.hasOwn(levels, level)) {
147
- throw new Error("Log level must be debug, info, warn or error");
148
- }
149
- writer = path ? new JsonlWriter(path) : void 0;
150
- threshold = level;
151
- instanceId = randomUUID();
152
- secrets = [];
153
- }
154
- function setLogSecrets(values) {
155
- secrets = values.filter((value) => !!value);
156
- }
157
- function safeText(value) {
158
- let result = value;
159
- for (const secret of secrets) {
160
- result = result.replaceAll(secret, "[redacted]");
161
- }
162
- return result.replace(/Bearer\s+[^\s]+/gi, "Bearer [redacted]").slice(0, 512);
163
- }
164
- function withLogContext(fields, run, options = {}) {
165
- return context.run(
166
- {
167
- ...options.inherit === false ? void 0 : context.getStore(),
168
- ...fields
169
- },
170
- run
171
- );
172
- }
173
- function logCorrelation() {
174
- const requestId = context.getStore()?.request_id;
175
- return {
176
- instance_id: instanceId,
177
- ...typeof requestId === "string" ? { request_id: requestId } : {}
178
- };
179
- }
180
- function logEvent(level, event, fields = {}) {
181
- if (levels[level] < levels[threshold]) return;
182
- if (!writer) {
183
- if (level === "error") {
184
- process.stderr.write(`${JSON.stringify({ event, level })}
185
- `);
186
- }
187
- return;
188
- }
189
- const safe = Object.fromEntries(
190
- Object.entries({ ...context.getStore(), ...fields }).map(([key, value]) => {
191
- if (/token|secret|password|authorization|cookie|prompt|body/i.test(key) && !(typeof value === "number" && [
192
- "input_tokens",
193
- "output_tokens",
194
- "cache_read_tokens",
195
- "cache_creation_tokens"
196
- ].includes(key))) {
197
- return [key, "[redacted]"];
198
- }
199
- return [key, typeof value === "string" ? safeText(value) : value];
200
- })
201
- );
202
- writer.write({
203
- ...safe,
204
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
205
- level,
206
- event,
207
- pid: process.pid,
208
- instance_id: instanceId
209
- });
210
- }
211
- function logError(event, error, fields = {}) {
212
- const cause = error instanceof Error ? error : void 0;
213
- const code = cause && "code" in cause ? cause.code : void 0;
214
- logEvent("error", event, {
215
- ...fields,
216
- error_type: cause?.name ?? "NonError",
217
- error_category: errorCategory(error),
218
- error_code: typeof code === "string" && /^[A-Z_0-9]+$/.test(code) ? code : void 0,
219
- stack: cause?.stack?.replaceAll(homedir(), "~").split("\n").filter((line) => /^\s+at /.test(line)).slice(0, 8).join("\n"),
220
- cause_type: cause?.cause instanceof Error ? cause.cause.name : void 0
221
- });
222
- }
223
- function flushLogs() {
224
- return writer?.flush() ?? Promise.resolve();
225
- }
226
-
227
- // src/service/platform/service/runtime.ts
228
- import { readFileSync } from "node:fs";
229
- import { homedir as homedir2 } from "node:os";
230
- import { dirname, join, resolve } from "node:path";
231
- import { fileURLToPath } from "node:url";
232
- var packageName = "subagent-extension-for-codex";
233
- var defaultPort = 17317;
234
- function isPackageManifest(path) {
235
- try {
236
- return JSON.parse(readFileSync(path, "utf8")).name === packageName;
237
- } catch {
238
- return false;
239
- }
240
- }
241
- function findPackageRoot(moduleUrl) {
242
- const start = dirname(fileURLToPath(moduleUrl));
243
- for (let directory = start; ; directory = dirname(directory)) {
244
- if (isPackageManifest(join(directory, "package.json"))) return directory;
245
- if (dirname(directory) === directory) {
246
- throw new Error(
247
- `No ${packageName} package.json found above ${start}; the installation is incomplete`
248
- );
249
- }
250
- }
251
- }
252
- var installRoot = findPackageRoot(import.meta.url);
253
- function packagePath(...segments) {
254
- return join(installRoot, ...segments);
255
- }
256
- function readPackageFile(...segments) {
257
- try {
258
- return readFileSync(packagePath(...segments), "utf8");
259
- } catch (error) {
260
- if (error.code !== "ENOENT") throw error;
261
- throw new Error(
262
- `Missing package file ${segments.join("/")} in ${installRoot}`,
263
- { cause: error }
264
- );
265
- }
266
- }
267
- var packageVersion = JSON.parse(
268
- readPackageFile("package.json")
269
- ).version;
270
- function dataDirectory(env = process.env) {
271
- if (env.SUBAGENT_EXTENSION_FOR_CODEX_DATA) {
272
- return resolve(env.SUBAGENT_EXTENSION_FOR_CODEX_DATA);
273
- }
274
- return join(homedir2(), ".local", "share", "subagent-extension-for-codex");
275
- }
276
- function databasePath(data) {
277
- return join(data, "service.sqlite");
278
- }
279
-
280
- // src/service/features/workspaces/git.ts
281
- import { execFile } from "node:child_process";
282
- import { realpath } from "node:fs/promises";
283
- import { promisify } from "node:util";
284
- var exec = promisify(execFile);
285
- async function git(cwd, args, env, input, timeoutMs) {
286
- const run = exec("git", ["-C", cwd, ...args], {
287
- // Diffs are returned whole, however large.
288
- maxBuffer: 1024 * 1024 * 1024,
289
- ...timeoutMs ? { timeout: timeoutMs, killSignal: "SIGKILL" } : {},
290
- ...env ? { env: { ...process.env, ...env } } : {}
291
- });
292
- let stdinError;
293
- run.child.stdin?.on("error", (error) => {
294
- if (error.code !== "EPIPE") stdinError = error;
295
- });
296
- run.child.stdin?.end(input ?? "");
297
- const { stdout } = await run;
298
- if (stdinError) throw stdinError;
299
- return stdout;
300
- }
301
- var ROOT_PROBE_TIMEOUT_MS = 5e3;
302
- async function gitRepositoryRoot(cwd) {
303
- try {
304
- return await realpath(
305
- (await git(
306
- cwd,
307
- ["rev-parse", "--show-toplevel"],
308
- void 0,
309
- void 0,
310
- ROOT_PROBE_TIMEOUT_MS
311
- )).trim()
312
- );
313
- } catch (error) {
314
- if (error instanceof Error && "killed" in error && error.killed) {
315
- throw new Error(
316
- `Git repository validation did not finish within ${ROOT_PROBE_TIMEOUT_MS / 1e3} seconds. Please retry.`,
317
- { cause: error }
318
- );
319
- }
320
- throw error;
321
- }
322
- }
323
-
324
- // src/shared/tasks/reasoning.ts
325
- var reasoningLevels = [
326
- "none",
327
- "minimal",
328
- "low",
329
- "medium",
330
- "high",
331
- "xhigh",
332
- "max"
333
- ];
334
-
335
- // src/shared/tasks/model.ts
336
- var roles = [
337
- "general",
338
- "researcher",
339
- "reviewer",
340
- "implementer",
341
- "debugger",
342
- "test_engineer",
343
- "refactorer",
344
- "security_reviewer"
345
- ];
346
- var modelNameSchema = external_exports.string().trim().max(200);
347
- var reasoningSchema = external_exports.enum(["default", ...reasoningLevels]);
348
- var approvalModes = [
349
- "ask_user",
350
- "parent_agent",
351
- "auto_approve",
352
- "deny"
353
- ];
354
- var approvalModeSchema = external_exports.enum(approvalModes);
355
- var approvalDeciderSchema = external_exports.enum(["user", "parent_agent"]);
356
- var providerOptionsSchema = external_exports.record(
357
- external_exports.string(),
358
- external_exports.record(external_exports.string(), external_exports.unknown())
359
- );
360
- var startSchema = external_exports.object({
361
- provider_options: providerOptionsSchema.optional().describe(
362
- "Provider-owned options, isolated under the selected provider ID and validated by that provider."
363
- ),
364
- approval_mode: approvalModeSchema.optional().describe(
365
- "Whole-execution approval policy for providers that support it. Model calls cannot increase approval authority."
366
- ),
367
- provider: external_exports.string().regex(/^[a-z][a-z0-9_-]{0,39}$/).default("claude").describe(
368
- "Worker provider id from list_workers; only enabled providers can run."
369
- ),
370
- worker_profile: external_exports.enum(roles).default("reviewer").describe(
371
- "reviewer, researcher and security_reviewer are read-only in either workspace. Other profiles can edit their workspace."
372
- ),
373
- model: modelNameSchema.optional().describe(
374
- "Model ID or provider alias. Blank inherits configured defaults."
375
- ),
376
- reasoning_effort: reasoningSchema.optional().describe("Reasoning effort; default inherits configured defaults."),
377
- description: external_exports.string().min(1).max(2e4).describe("The full task instructions and details for the worker."),
378
- repository: external_exports.string().min(1).describe(
379
- "Explicit absolute Git root from list_projects or get_current_project. Starting a task for the chat's unregistered project registers it when the user allows."
380
- ),
381
- revision: external_exports.string().default("HEAD"),
382
- conversation_id: external_exports.string().optional(),
383
- depends_on: external_exports.array(external_exports.string()).max(50).default([]).describe("Task IDs that must finish before this task starts."),
384
- context: external_exports.array(external_exports.string().max(2e4)).max(20).default([]).describe(
385
- "Bounded excerpts the worker needs, such as a diff or file sections. Conversation history is not copied."
386
- ),
387
- workspace_strategy: external_exports.enum(["worktree", "current_repo"]).default("current_repo").describe(
388
- "current_repo uses the registered checkout directly, including uncommitted files, and requires revision HEAD. worktree creates an isolated checkout at revision without uncommitted files. Use it for isolated or parallel edits."
389
- ),
390
- budget: external_exports.object({
391
- max_runtime_minutes: external_exports.number().positive().nullable().default(null).describe(
392
- "Runtime budget in minutes. Null disables the limit; new tasks have no runtime limit by default."
393
- ),
394
- max_cost_usd: external_exports.number().positive().nullable().default(null).describe(
395
- "Provider-native cost budget in USD. New tasks have no cost limit by default. Claude stops after a response reaches the budget, so a response can exceed it and interrupted usage may be missing. Null disables the budget; unsupported providers reject numeric limits."
396
- ),
397
- max_tokens: external_exports.number().int().positive().optional()
398
- }).default({ max_runtime_minutes: null, max_cost_usd: null })
399
- });
400
- var statuses = [
401
- "queued",
402
- "starting",
403
- "running",
404
- "waiting",
405
- "interrupted",
406
- "completed",
407
- "failed"
408
- ];
409
- var deliveries = ["steer", "queue", "interrupt"];
410
- var budgetRaiseSchema = external_exports.object({
411
- max_runtime_minutes: startSchema.shape.budget.unwrap().shape.max_runtime_minutes.unwrap().optional(),
412
- max_cost_usd: startSchema.shape.budget.unwrap().shape.max_cost_usd.unwrap().optional()
413
- }).strict();
414
- function pendingInputKind(input) {
415
- return input.kind;
416
- }
417
-
418
- export {
419
- errorCategory,
420
- JsonlWriter,
421
- configureLogging,
422
- setLogSecrets,
423
- withLogContext,
424
- logCorrelation,
425
- logEvent,
426
- logError,
427
- flushLogs,
428
- git,
429
- gitRepositoryRoot,
430
- reasoningLevels,
431
- roles,
432
- modelNameSchema,
433
- reasoningSchema,
434
- approvalModeSchema,
435
- approvalDeciderSchema,
436
- providerOptionsSchema,
437
- startSchema,
438
- statuses,
439
- deliveries,
440
- budgetRaiseSchema,
441
- pendingInputKind,
442
- defaultPort,
443
- installRoot,
444
- packagePath,
445
- readPackageFile,
446
- packageVersion,
447
- dataDirectory,
448
- databasePath
449
- };
450
- //# sourceMappingURL=chunk-L3PORPD3.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/service/platform/logging/logger.ts", "../../../src/service/platform/logging/error-metadata.ts", "../../../src/service/platform/logging/jsonl-writer.ts", "../../../src/service/platform/service/runtime.ts", "../../../src/service/features/workspaces/git.ts", "../../../src/shared/tasks/reasoning.ts", "../../../src/shared/tasks/model.ts"],
4
- "mappings": "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",
5
- "names": ["homedir"]
6
- }