@gonzih/cc-agent 0.2.5 → 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.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # cc-agent
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@gonzih/cc-agent?label=@gonzih/cc-agent)](https://www.npmjs.com/package/@gonzih/cc-agent)
4
+
3
5
  MCP server for spawning Claude Code agents in GitHub repos. Give Claude Code the ability to **branch itself** — clone a repo and kick off a sub-agent to work on it autonomously, with persistent state across MCP restarts.
4
6
 
5
7
  Built by [@Gonzih](https://github.com/Gonzih).
@@ -16,33 +18,81 @@ CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-... # OAuth token (recommended)
16
18
  ANTHROPIC_API_KEY=sk-ant-api03-... # API key
17
19
  ```
18
20
 
19
- Restart Claude Code. You now have 7 new MCP tools.
21
+ Restart Claude Code. You now have 13 new MCP tools.
20
22
 
21
23
  ## MCP Tools
22
24
 
23
25
  | Tool | Description |
24
26
  |------|-------------|
25
27
  | `spawn_agent` | Clone a repo, optionally create a branch, run Claude Code on a task |
26
- | `list_jobs` | List all jobs with status, recent tool calls, and exit info |
27
28
  | `get_job_status` | Check status of a specific job |
28
29
  | `get_job_output` | Stream output lines from a job (supports offset for tailing) |
30
+ | `list_jobs` | List all jobs with status, recent tool calls, and exit info |
29
31
  | `cancel_job` | Kill a running job |
30
32
  | `send_message` | Write a message to a running agent's stdin mid-task |
33
+ | `cost_summary` | Total USD cost across all jobs, broken down by repo |
31
34
  | `get_version` | Return the running cc-agent version |
35
+ | `create_plan` | Spawn a dependency graph of agent jobs in one call |
36
+ | `create_profile` | Save a named spawn config for repeated use with `{{variable}}` templates |
37
+ | `list_profiles` | List all saved profiles |
38
+ | `delete_profile` | Delete a named profile |
39
+ | `spawn_from_profile` | Spawn a job from a saved profile with variable interpolation |
32
40
 
33
41
  ## spawn_agent parameters
34
42
 
35
43
  | Parameter | Type | Required | Description |
36
44
  |-----------|------|----------|-------------|
37
- | `repo_url` | string | yes | Git repo to clone (HTTPS) |
45
+ | `repo_url` | string | yes | Git repo to clone (HTTPS or SSH) |
38
46
  | `task` | string | yes | Task prompt for Claude Code |
39
47
  | `branch` | string | no | Existing branch to check out after clone |
40
48
  | `create_branch` | string | no | New branch to create (e.g. `feat/my-feature`) |
41
49
  | `claude_token` | string | no | Per-job token override |
42
50
  | `continue_session` | boolean | no | Pass `--continue` to resume last Claude session in workdir |
43
- | `max_budget_usd` | number | no | Spend cap in USD (default: 20). Prevents runaway costs |
51
+ | `max_budget_usd` | number | no | Spend cap in USD (default: 20) |
52
+ | `session_id` | string | no | Session ID from a prior job's `sessionIdAfter` — resumes that session |
53
+ | `depends_on` | string[] | no | Job IDs that must be `done` before this job starts (queued as `pending`) |
54
+
55
+ ## create_plan parameters
56
+
57
+ | Parameter | Type | Required | Description |
58
+ |-----------|------|----------|-------------|
59
+ | `goal` | string | yes | High-level description of what this plan achieves |
60
+ | `steps` | array | yes | Ordered list of steps to execute |
44
61
 
45
- ## Usage example
62
+ Each step in `steps`:
63
+
64
+ | Field | Type | Required | Description |
65
+ |-------|------|----------|-------------|
66
+ | `id` | string | yes | Logical step ID (used for `depends_on` references within the plan) |
67
+ | `repo_url` | string | yes | Git repo to clone |
68
+ | `task` | string | yes | Task prompt for Claude Code |
69
+ | `create_branch` | string | no | New branch to create before running |
70
+ | `depends_on` | string[] | no | Step IDs from this plan that must complete first |
71
+
72
+ ## create_profile parameters
73
+
74
+ | Parameter | Type | Required | Description |
75
+ |-----------|------|----------|-------------|
76
+ | `name` | string | yes | Profile name (alphanumeric, dashes, underscores) |
77
+ | `repo_url` | string | yes | Git repo to clone |
78
+ | `task_template` | string | yes | Task template — use `{{varName}}` for substitution |
79
+ | `default_budget_usd` | number | no | Default USD budget for jobs from this profile |
80
+ | `branch` | string | no | Branch to check out after cloning |
81
+ | `description` | string | no | Human-readable profile description |
82
+
83
+ ## spawn_from_profile parameters
84
+
85
+ | Parameter | Type | Required | Description |
86
+ |-----------|------|----------|-------------|
87
+ | `profile_name` | string | yes | Name of the saved profile to use |
88
+ | `vars` | object | no | Variables to interpolate into the task template |
89
+ | `task_override` | string | no | Use this task instead of the profile template |
90
+ | `branch_override` | string | no | Override the profile's branch |
91
+ | `budget_override` | number | no | Override the profile's default budget |
92
+
93
+ ## Usage examples
94
+
95
+ ### Basic agent
46
96
 
47
97
  ```
48
98
  spawn_agent({
@@ -60,19 +110,114 @@ get_job_output({ job_id: "abc-123", offset: 0 })
60
110
  // → { lines: ["[cc-agent] Cloning...", "Reading src/api.ts...", ...], done: false }
61
111
 
62
112
  send_message({ job_id: "abc-123", message: "Also update the tests." })
63
- // → { ok: true }
113
+ // → { sent: true }
114
+
115
+ cost_summary()
116
+ // → { totalJobs: 1, totalCostUsd: 1.23, byRepo: { "https://github.com/...": 1.23 } }
64
117
  ```
65
118
 
66
- ## Persistent job storage
119
+ ### Multi-step plan with dependencies
120
+
121
+ ```
122
+ create_plan({
123
+ goal: "Refactor auth and update docs",
124
+ steps: [
125
+ {
126
+ id: "refactor",
127
+ repo_url: "https://github.com/yourorg/app",
128
+ task: "Refactor auth middleware to use JWT. Open a PR.",
129
+ create_branch: "feat/jwt-auth"
130
+ },
131
+ {
132
+ id: "docs",
133
+ repo_url: "https://github.com/yourorg/app",
134
+ task: "Update README to document the new JWT auth flow.",
135
+ create_branch: "docs/jwt-auth",
136
+ depends_on: ["refactor"]
137
+ }
138
+ ]
139
+ })
140
+ // → { goal: "...", totalSteps: 2, steps: [{ stepId: "refactor", jobId: "abc-1", status: "cloning" }, { stepId: "docs", jobId: "abc-2", status: "pending" }] }
141
+ ```
67
142
 
68
- Job state is persisted to `<cwd>/.cc-agent/` across MCP server restarts:
143
+ ### Profiles for repeated tasks
69
144
 
70
- - `.cc-agent/jobs.json` — full job metadata (status, exit code, PID, params)
145
+ ```
146
+ // Save once:
147
+ create_profile({
148
+ name: "fix-issue",
149
+ repo_url: "https://github.com/yourorg/app",
150
+ task_template: "Fix issue #{{issue}}: {{title}}. Open a PR when done.",
151
+ default_budget_usd: 5
152
+ })
153
+
154
+ // Use many times:
155
+ spawn_from_profile({
156
+ profile_name: "fix-issue",
157
+ vars: { issue: "42", title: "Login broken on mobile" }
158
+ })
159
+ ```
160
+
161
+ ### Resume a prior session
162
+
163
+ ```
164
+ // Get session ID from a completed job:
165
+ get_job_status({ job_id: "abc-123" })
166
+ // → { ..., session_id_after: "ses_xyz" }
167
+
168
+ // Resume it:
169
+ spawn_agent({
170
+ repo_url: "https://github.com/yourorg/app",
171
+ task: "Continue where you left off — finish the tests.",
172
+ session_id: "ses_xyz"
173
+ })
174
+ ```
175
+
176
+ ## Persistence
177
+
178
+ cc-agent v0.3.0+ stores all job state in **Redis**, which is auto-provisioned on startup — zero configuration needed.
179
+
180
+ ### Auto-provisioning
181
+
182
+ On startup, cc-agent tries to connect to Redis at `localhost:6379`. If unavailable:
183
+
184
+ 1. **Docker** — runs `docker run -d --name cc-agent-redis -p 6379:6379 --restart=unless-stopped redis:alpine`
185
+ 2. **redis-server** — if `redis-server` is on PATH, spawns it as a daemon
186
+ 3. **In-memory fallback** — logs a warning and continues; jobs are not persisted across restarts
187
+
188
+ Once Redis is available, all job state, output, profiles, and plans survive MCP server restarts and are **shared across all Claude Code sessions** pointing at the same Redis instance.
189
+
190
+ ### Key schema
191
+
192
+ | Key | Type | TTL | Contents |
193
+ |-----|------|-----|----------|
194
+ | `cca:job:<id>` | String (JSON) | 7 days | Full job record |
195
+ | `cca:jobs:index` | List | — | Job IDs, newest first (capped at 500) |
196
+ | `cca:job:<id>:output` | List | 7 days | Output lines (one entry per line) |
197
+ | `cca:plan:<id>` | String (JSON) | 30 days | Plan record with step→job mapping |
198
+ | `cca:profile:<name>` | String (JSON) | permanent | Profile config |
199
+ | `cca:profiles:index` | Set | permanent | All profile names |
200
+
201
+ ### Disk fallback
202
+
203
+ When Redis is unavailable, cc-agent falls back to the original disk-based storage:
204
+
205
+ - `.cc-agent/jobs.json` — job metadata
71
206
  - `.cc-agent/jobs/<id>.log` — per-job output log
207
+ - `~/.cc-agent/profiles.json` — profiles
208
+
209
+ Existing disk profiles are automatically migrated to Redis on first startup with Redis available.
72
210
 
73
- On restart, jobs whose processes are still alive are recovered as `running`. Dead PIDs are marked `failed` automatically. This means **you don't lose job history if the MCP server restarts**.
211
+ ## Job statuses
74
212
 
75
- `.cc-agent/` is gitignored automatically.
213
+ | Status | Meaning |
214
+ |--------|---------|
215
+ | `pending` | Waiting for `depends_on` jobs to complete |
216
+ | `cloning` | Cloning the repo |
217
+ | `running` | Claude Code is running |
218
+ | `done` | Completed successfully |
219
+ | `failed` | Exited with an error (check `error` field) |
220
+ | `cancelled` | Cancelled by `cancel_job` |
76
221
 
77
222
  ## Tool call visibility
78
223
 
@@ -127,12 +272,14 @@ npm version patch && npm publish # if it's a library
127
272
  6. Tool calls are captured from the stream-JSON and stored in `tool_calls[]`
128
273
  7. On exit: job marked done/failed, workdir cleaned up after 10 minutes
129
274
  8. Jobs expire from memory after 1 hour (log file remains on disk)
275
+ 9. Pending jobs are promoted automatically every 3 seconds when their dependencies complete
130
276
 
131
277
  ## Environment variables
132
278
 
133
279
  | Variable | Description |
134
280
  |----------|-------------|
135
- | `CLAUDE_CODE_OAUTH_TOKEN` | Claude OAuth token (recommended) |
281
+ | `CLAUDE_CODE_TOKEN` | Claude OAuth token or Anthropic API key |
282
+ | `CLAUDE_CODE_OAUTH_TOKEN` | Claude OAuth token (alternative) |
136
283
  | `ANTHROPIC_API_KEY` | Anthropic API key (alternative) |
137
284
 
138
285
  ## Requirements
package/dist/agent.d.ts CHANGED
@@ -3,10 +3,12 @@ export declare class JobManager {
3
3
  private jobs;
4
4
  private kills;
5
5
  private defaultToken?;
6
- private diskLoadedJobs;
6
+ /** Jobs restored from storage — their output lives in store, not in job.output[]. */
7
+ private restoredJobs;
7
8
  constructor(token?: string);
8
- private loadFromDisk;
9
- private checkDiskLoadedRunning;
9
+ /** Must be called after initRedis() at startup. */
10
+ init(): Promise<void>;
11
+ private checkRestoredRunning;
10
12
  private persistJob;
11
13
  private addOutput;
12
14
  spawn(opts: SpawnOptions): Promise<string>;
@@ -14,11 +16,11 @@ export declare class JobManager {
14
16
  private tick;
15
17
  private promote;
16
18
  getJob(id: string): Job | undefined;
17
- getOutput(id: string, offset?: number): {
19
+ getOutput(id: string, offset?: number): Promise<{
18
20
  lines: string[];
19
21
  done: boolean;
20
22
  toolCalls: string[];
21
- };
23
+ }>;
22
24
  list(): JobSummary[];
23
25
  sendMessage(id: string, message: string): {
24
26
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+BhE,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAqB;gBAE/B,KAAK,CAAC,EAAE,MAAM;IAY1B,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,SAAS;IAKX,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAuClC,GAAG;IA+GjB,OAAO,CAAC,IAAI;IAuBZ,OAAO,CAAC,OAAO;IASf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAInC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAe1F,IAAI,IAAI,UAAU,EAAE;IAuBpB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAkB3B,OAAO,CAAC,OAAO;CAahB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4EhE,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAAqB;gBAE7B,KAAK,CAAC,EAAE,MAAM;IAW1B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAKX,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAsClC,GAAG;IAwGjB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,OAAO;IASf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAI7B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAazG,IAAI,IAAI,UAAU,EAAE;IAuBpB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAkB3B,OAAO,CAAC,OAAO;CAahB"}
package/dist/agent.js CHANGED
@@ -5,9 +5,10 @@ import { join } from "path";
5
5
  import { promisify } from "util";
6
6
  import { v4 as uuidv4 } from "uuid";
7
7
  import { runClaude } from "./claude.js";
8
- import { ensureStateDirs, loadPersistedJobs, savePersistedJobs, appendLog, readLogSync, isPidAlive, } from "./state.js";
8
+ import { ensureStateDirs, isPidAlive } from "./state.js";
9
+ import { jobStore } from "./store.js";
9
10
  const execFileAsync = promisify(execFile);
10
- const JOB_TTL_MS = 60 * 60 * 1000; // 1 hour — clean up old done jobs
11
+ const JOB_TTL_MS = 60 * 60 * 1000; // 1 hour — clean up old done jobs from memory
11
12
  // Claude Sonnet 4.6 pricing (USD per 1M tokens)
12
13
  const PRICE_INPUT = 3.00;
13
14
  const PRICE_OUTPUT = 15.00;
@@ -21,32 +22,83 @@ function calculateCost(job) {
21
22
  1_000_000;
22
23
  return Math.round(cost * 10000) / 10000;
23
24
  }
25
+ function toRecord(job) {
26
+ return {
27
+ id: job.id,
28
+ status: job.status,
29
+ repoUrl: job.repoUrl,
30
+ task: job.task,
31
+ branch: job.branch,
32
+ createBranch: job.createBranch,
33
+ dependsOn: job.dependsOn,
34
+ startedAt: job.startedAt.toISOString(),
35
+ finishedAt: job.finishedAt?.toISOString(),
36
+ exitCode: job.exitCode,
37
+ error: job.error,
38
+ pid: job.pid,
39
+ sessionIdAfter: job.sessionIdAfter,
40
+ usage: job.usage,
41
+ totalInputTokens: job.totalInputTokens,
42
+ totalOutputTokens: job.totalOutputTokens,
43
+ totalCacheReadTokens: job.totalCacheReadTokens,
44
+ totalCacheWriteTokens: job.totalCacheWriteTokens,
45
+ costUsd: job.costUsd,
46
+ recentTools: job.toolCalls.slice(-10),
47
+ outputLineCount: job.output.length,
48
+ };
49
+ }
50
+ function fromRecord(r) {
51
+ return {
52
+ id: r.id,
53
+ repoUrl: r.repoUrl,
54
+ task: r.task,
55
+ branch: r.branch,
56
+ createBranch: r.createBranch,
57
+ status: r.status,
58
+ output: [],
59
+ toolCalls: r.recentTools ?? [],
60
+ exitCode: r.exitCode,
61
+ error: r.error,
62
+ startedAt: new Date(r.startedAt ?? Date.now()),
63
+ finishedAt: r.finishedAt ? new Date(r.finishedAt) : undefined,
64
+ pid: r.pid,
65
+ sessionIdAfter: r.sessionIdAfter,
66
+ usage: r.usage,
67
+ totalInputTokens: r.totalInputTokens,
68
+ totalOutputTokens: r.totalOutputTokens,
69
+ totalCacheReadTokens: r.totalCacheReadTokens,
70
+ totalCacheWriteTokens: r.totalCacheWriteTokens,
71
+ costUsd: r.costUsd,
72
+ dependsOn: r.dependsOn,
73
+ };
74
+ }
24
75
  export class JobManager {
25
76
  jobs = new Map();
26
77
  kills = new Map();
27
78
  defaultToken;
28
- diskLoadedJobs = new Set();
79
+ /** Jobs restored from storage — their output lives in store, not in job.output[]. */
80
+ restoredJobs = new Set();
29
81
  constructor(token) {
30
82
  this.defaultToken = token;
31
83
  ensureStateDirs();
32
- this.loadFromDisk();
33
84
  // Periodic cleanup of old finished jobs
34
85
  setInterval(() => this.cleanup(), 5 * 60 * 1000).unref();
35
- // Periodic check for disk-loaded running jobs whose PID may have died
36
- setInterval(() => this.checkDiskLoadedRunning(), 30 * 1000).unref();
86
+ // Periodic check for restored running jobs whose PID may have died
87
+ setInterval(() => this.checkRestoredRunning(), 30 * 1000).unref();
37
88
  // Dependency scheduler — promote pending jobs when deps are done
38
89
  setInterval(() => this.tick(), 3000).unref();
39
90
  }
40
- loadFromDisk() {
41
- const persisted = loadPersistedJobs();
42
- const updated = [];
43
- for (const p of persisted) {
44
- let status = p.status;
45
- let error = p.error;
46
- let finishedAt = p.finishedAt;
91
+ /** Must be called after initRedis() at startup. */
92
+ async init() {
93
+ const records = await jobStore.loadAll();
94
+ const updates = [];
95
+ for (const r of records) {
96
+ let status = r.status;
97
+ let error = r.error;
98
+ let finishedAt = r.finishedAt;
47
99
  if (status === "running" || status === "cloning") {
48
- if (p.pid && isPidAlive(p.pid)) {
49
- // Still alive — keep as running, output reads from disk log
100
+ if (r.pid && isPidAlive(r.pid)) {
101
+ // Process still alive — keep as running
50
102
  }
51
103
  else {
52
104
  status = "failed";
@@ -54,39 +106,20 @@ export class JobManager {
54
106
  finishedAt = finishedAt ?? new Date().toISOString();
55
107
  }
56
108
  }
57
- const job = {
58
- id: p.id,
59
- repoUrl: p.repoUrl,
60
- task: p.task,
61
- branch: p.branch,
62
- createBranch: p.createBranch,
63
- status,
64
- output: [],
65
- toolCalls: [],
66
- exitCode: p.exitCode,
67
- error,
68
- startedAt: new Date(p.startedAt),
69
- finishedAt: finishedAt ? new Date(finishedAt) : undefined,
70
- pid: p.pid,
71
- sessionIdAfter: p.sessionIdAfter,
72
- usage: p.usage,
73
- totalInputTokens: p.totalInputTokens,
74
- totalOutputTokens: p.totalOutputTokens,
75
- totalCacheReadTokens: p.totalCacheReadTokens,
76
- totalCacheWriteTokens: p.totalCacheWriteTokens,
77
- costUsd: p.costUsd,
78
- dependsOn: p.dependsOn,
79
- };
109
+ const job = fromRecord({ ...r, status, error, finishedAt });
80
110
  this.jobs.set(job.id, job);
81
- this.diskLoadedJobs.add(job.id);
82
- updated.push({ ...p, status, error, finishedAt });
111
+ this.restoredJobs.add(job.id);
112
+ if (status !== r.status) {
113
+ updates.push({ ...r, status, error, finishedAt });
114
+ }
83
115
  }
84
- if (updated.length > 0) {
85
- savePersistedJobs(updated);
116
+ // Persist any status corrections back to store
117
+ for (const updated of updates) {
118
+ jobStore.saveJob(updated).catch(() => { });
86
119
  }
87
120
  }
88
- checkDiskLoadedRunning() {
89
- for (const id of this.diskLoadedJobs) {
121
+ checkRestoredRunning() {
122
+ for (const id of this.restoredJobs) {
90
123
  const job = this.jobs.get(id);
91
124
  if (!job)
92
125
  continue;
@@ -96,46 +129,17 @@ export class JobManager {
96
129
  job.finishedAt = new Date();
97
130
  job.error = (job.error ? job.error + "; " : "") + "Process exited after MCP restart";
98
131
  this.persistJob(job);
99
- appendLog(job.id, "[cc-agent] Process no longer alive after MCP restart");
132
+ this.addOutput(job, "[cc-agent] Process no longer alive after MCP restart");
100
133
  }
101
134
  }
102
135
  }
103
136
  }
104
137
  persistJob(job) {
105
- const persisted = loadPersistedJobs();
106
- const entry = {
107
- id: job.id,
108
- status: job.status,
109
- repoUrl: job.repoUrl,
110
- task: job.task,
111
- branch: job.branch,
112
- createBranch: job.createBranch,
113
- startedAt: job.startedAt.toISOString(),
114
- finishedAt: job.finishedAt?.toISOString(),
115
- exitCode: job.exitCode,
116
- error: job.error,
117
- pid: job.pid,
118
- sessionIdAfter: job.sessionIdAfter,
119
- usage: job.usage,
120
- totalInputTokens: job.totalInputTokens,
121
- totalOutputTokens: job.totalOutputTokens,
122
- totalCacheReadTokens: job.totalCacheReadTokens,
123
- totalCacheWriteTokens: job.totalCacheWriteTokens,
124
- costUsd: job.costUsd,
125
- dependsOn: job.dependsOn,
126
- };
127
- const idx = persisted.findIndex((p) => p.id === job.id);
128
- if (idx >= 0) {
129
- persisted[idx] = entry;
130
- }
131
- else {
132
- persisted.push(entry);
133
- }
134
- savePersistedJobs(persisted);
138
+ jobStore.saveJob(toRecord(job)).catch(() => { });
135
139
  }
136
140
  addOutput(job, line) {
137
141
  job.output.push(line);
138
- appendLog(job.id, line);
142
+ jobStore.appendOutput(job.id, line).catch(() => { });
139
143
  }
140
144
  async spawn(opts) {
141
145
  const id = uuidv4();
@@ -163,7 +167,6 @@ export class JobManager {
163
167
  this.jobs.set(id, job);
164
168
  this.persistJob(job);
165
169
  if (!isPending) {
166
- // Run async — don't await
167
170
  this.run(job, opts.claudeToken ?? this.defaultToken).catch((err) => {
168
171
  job.status = "failed";
169
172
  job.error = String(err);
@@ -195,7 +198,6 @@ export class JobManager {
195
198
  this.addOutput(job, `[cc-agent] Created branch: ${branchName}`);
196
199
  }
197
200
  else if (job.createBranch === "true") {
198
- // createBranch=true but no name — generate one from job id
199
201
  const auto = `agent/${job.id.slice(0, 8)}`;
200
202
  await execFileAsync("git", ["checkout", "-b", auto], { cwd: workDir });
201
203
  this.addOutput(job, `[cc-agent] Created branch: ${auto}`);
@@ -210,7 +212,6 @@ export class JobManager {
210
212
  maxBudgetUsd: job.maxBudgetUsd,
211
213
  sessionId: job.sessionId,
212
214
  });
213
- // Save PID for cross-restart tracking
214
215
  if (proc.pid != null) {
215
216
  job.pid = proc.pid;
216
217
  this.persistJob(job);
@@ -228,7 +229,6 @@ export class JobManager {
228
229
  job.totalOutputTokens = (job.totalOutputTokens ?? 0) + u.outputTokens;
229
230
  job.totalCacheReadTokens = (job.totalCacheReadTokens ?? 0) + (u.cacheReadTokens ?? 0);
230
231
  job.totalCacheWriteTokens = (job.totalCacheWriteTokens ?? 0) + (u.cacheWriteTokens ?? 0);
231
- // Prefer authoritative cost_usd from CLI result; fall back to calculated
232
232
  job.costUsd = u.costUsd != null ? u.costUsd : calculateCost(job);
233
233
  this.persistJob(job);
234
234
  });
@@ -238,23 +238,18 @@ export class JobManager {
238
238
  });
239
239
  proc.on("tool", (name) => {
240
240
  job.toolCalls.push(name);
241
- // Keep last 50 tool calls to avoid unbounded growth
242
241
  if (job.toolCalls.length > 50)
243
242
  job.toolCalls = job.toolCalls.slice(-50);
244
243
  });
245
- proc.on("error", (err) => {
246
- reject(err);
247
- });
244
+ proc.on("error", (err) => { reject(err); });
248
245
  proc.on("exit", (code) => {
249
246
  job.exitCode = code ?? undefined;
250
247
  job.stdinStream = null;
251
248
  this.kills.delete(job.id);
252
- if (code === 0 || code === null) {
249
+ if (code === 0 || code === null)
253
250
  resolve();
254
- }
255
- else {
251
+ else
256
252
  reject(new Error(`Claude exited with code ${code}`));
257
- }
258
253
  });
259
254
  });
260
255
  job.status = "done";
@@ -270,7 +265,6 @@ export class JobManager {
270
265
  finally {
271
266
  job.finishedAt = new Date();
272
267
  this.persistJob(job);
273
- // Clean up work dir after 10 minutes to allow output inspection
274
268
  if (workDir) {
275
269
  setTimeout(() => rm(workDir, { recursive: true, force: true }).catch(() => { }), 10 * 60 * 1000).unref();
276
270
  }
@@ -284,13 +278,10 @@ export class JobManager {
284
278
  this.promote(job);
285
279
  continue;
286
280
  }
287
- const allDone = job.dependsOn.every((depId) => {
288
- const dep = this.jobs.get(depId);
289
- return dep?.status === "done";
290
- });
281
+ const allDone = job.dependsOn.every((depId) => this.jobs.get(depId)?.status === "done");
291
282
  const anyFailed = job.dependsOn.some((depId) => {
292
- const dep = this.jobs.get(depId);
293
- return dep?.status === "failed" || dep?.status === "cancelled";
283
+ const s = this.jobs.get(depId)?.status;
284
+ return s === "failed" || s === "cancelled";
294
285
  });
295
286
  if (anyFailed) {
296
287
  job.status = "failed";
@@ -314,17 +305,15 @@ export class JobManager {
314
305
  getJob(id) {
315
306
  return this.jobs.get(id);
316
307
  }
317
- getOutput(id, offset = 0) {
308
+ async getOutput(id, offset = 0) {
318
309
  const job = this.jobs.get(id);
319
310
  if (!job) {
320
- // Job not in memory (expired or unknown) — try disk log
321
- const lines = readLogSync(id, offset);
311
+ const lines = await jobStore.getOutput(id, offset);
322
312
  return { lines, done: true, toolCalls: [] };
323
313
  }
324
314
  const done = job.status === "done" || job.status === "failed" || job.status === "cancelled";
325
- if (this.diskLoadedJobs.has(id)) {
326
- // Output lives on disk for jobs recovered after restart
327
- return { lines: readLogSync(id, offset), done, toolCalls: job.toolCalls };
315
+ if (this.restoredJobs.has(id)) {
316
+ return { lines: await jobStore.getOutput(id, offset), done, toolCalls: job.toolCalls };
328
317
  }
329
318
  return { lines: job.output.slice(offset), done, toolCalls: job.toolCalls };
330
319
  }
@@ -386,7 +375,7 @@ export class JobManager {
386
375
  job.finishedAt &&
387
376
  now - job.finishedAt.getTime() > JOB_TTL_MS) {
388
377
  this.jobs.delete(id);
389
- this.diskLoadedJobs.delete(id);
378
+ this.restoredJobs.delete(id);
390
379
  }
391
380
  }
392
381
  }
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}