@tokenfactory/acc-runner 0.8.1 → 0.12.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 (53) hide show
  1. package/README.md +175 -69
  2. package/dist/cli.js +42 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +22 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +89 -3
  7. package/dist/config.js.map +1 -1
  8. package/dist/doctor.d.ts.map +1 -1
  9. package/dist/doctor.js +64 -5
  10. package/dist/doctor.js.map +1 -1
  11. package/dist/failure-classifier.d.ts +33 -0
  12. package/dist/failure-classifier.d.ts.map +1 -0
  13. package/dist/failure-classifier.js +128 -0
  14. package/dist/failure-classifier.js.map +1 -0
  15. package/dist/login.d.ts +3 -0
  16. package/dist/login.d.ts.map +1 -1
  17. package/dist/login.js +5 -2
  18. package/dist/login.js.map +1 -1
  19. package/dist/runtime/conflict-resolver.d.ts +65 -0
  20. package/dist/runtime/conflict-resolver.d.ts.map +1 -0
  21. package/dist/runtime/conflict-resolver.js +477 -0
  22. package/dist/runtime/conflict-resolver.js.map +1 -0
  23. package/dist/runtime/quarantine.d.ts +16 -0
  24. package/dist/runtime/quarantine.d.ts.map +1 -0
  25. package/dist/runtime/quarantine.js +50 -0
  26. package/dist/runtime/quarantine.js.map +1 -0
  27. package/dist/runtime/reviewer.d.ts +4 -0
  28. package/dist/runtime/reviewer.d.ts.map +1 -1
  29. package/dist/runtime/reviewer.js +102 -30
  30. package/dist/runtime/reviewer.js.map +1 -1
  31. package/dist/runtime/rework.d.ts +48 -0
  32. package/dist/runtime/rework.d.ts.map +1 -0
  33. package/dist/runtime/rework.js +136 -0
  34. package/dist/runtime/rework.js.map +1 -0
  35. package/dist/runtime/worktree.d.ts +11 -0
  36. package/dist/runtime/worktree.d.ts.map +1 -1
  37. package/dist/runtime/worktree.js +11 -5
  38. package/dist/runtime/worktree.js.map +1 -1
  39. package/dist/task-runner.d.ts +21 -0
  40. package/dist/task-runner.d.ts.map +1 -1
  41. package/dist/task-runner.js +347 -19
  42. package/dist/task-runner.js.map +1 -1
  43. package/dist/token-provider.d.ts +50 -0
  44. package/dist/token-provider.d.ts.map +1 -0
  45. package/dist/token-provider.js +177 -0
  46. package/dist/token-provider.js.map +1 -0
  47. package/dist/types.d.ts +11 -0
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/watch.d.ts +30 -0
  50. package/dist/watch.d.ts.map +1 -1
  51. package/dist/watch.js +358 -45
  52. package/dist/watch.js.map +1 -1
  53. package/package.json +1 -1
package/README.md CHANGED
@@ -1,67 +1,168 @@
1
- # `@tokenfactory/acc-runner`
1
+ # @tokenfactory/acc-runner
2
2
 
3
- Local runner for [Agent Control Center](https://github.com/tokenfactory-pvt-ltd/agent-control-center).
4
- Subscribes to ACC over Supabase Realtime; on a task assignment, spawns
5
- your local `claude` CLI with the rendered prompt, streams logs back, and
6
- opens a PR via `gh` when done.
7
-
8
- > Status: internal beta. Ships with ACC v0.2.0-internal.
3
+ CLI runner that polls Agent Control Center for queued tasks and executes
4
+ them via Claude Code.
9
5
 
10
6
  ## Install
11
7
 
12
8
  ```sh
13
- pnpm add -g @tokenfactory/acc-runner
14
- # or
15
9
  npm i -g @tokenfactory/acc-runner
10
+ # or
11
+ pnpm add -g @tokenfactory/acc-runner
16
12
  ```
17
13
 
18
- Requires:
14
+ Requires Node.js ≥ 20.6, plus these binaries on `PATH`:
19
15
 
20
- - Node.js 20.6+
21
- - `claude` (Claude Code CLI) in `$PATH`
22
- - `gh` (GitHub CLI) in `$PATH`, authenticated (`gh auth login`)
23
- - `git`, configured with `user.email`
24
- - A local clone of the target repo (default `~/work/TechArch`)
16
+ - `claude` — Claude Code CLI, signed in
17
+ - `gh` — GitHub CLI, signed in (`gh auth login`)
18
+ - `git` — with `user.email` configured
19
+ - A local clone of the target repo (the `repoPath`, see below)
25
20
 
26
- Run `acc-runner doctor` after install to verify all the above.
21
+ Run `acc-runner doctor` after install to verify everything resolves.
27
22
 
28
23
  ## Configuration
29
24
 
30
- The CLI reads from environment variables — set these in your shell
31
- profile so `acc-runner watch` finds them.
25
+ The runner resolves its settings from three layers, highest precedence
26
+ first:
27
+
28
+ 1. **Environment variables** (`ACC_*`)
29
+ 2. **`~/.config/acc-runner/config.json`** (or `$XDG_CONFIG_HOME/acc-runner/config.json`)
30
+ 3. **Built-in defaults** — production endpoints baked into the CLI so a
31
+ fresh `npm i -g` works out of the box
32
+
33
+ Production defaults are baked in; you only need to set anything if you
34
+ want to point the runner at a preview deploy, change the repo clone
35
+ location, or declare capabilities.
36
+
37
+ ### Environment variables
38
+
39
+ | Variable | Default | Notes |
40
+ | ------------------------- | ---------------------------------------- | --------------------------------------------------------------------- |
41
+ | `ACC_PUBLIC_URL` | production Vercel URL | Used for cost-pricing fetches and OAuth callback links. |
42
+ | `ACC_SUPABASE_URL` | production project URL | Supabase project the runner talks to. |
43
+ | `ACC_SUPABASE_ANON_KEY` | production anon key | Public; RLS does the gating. |
44
+ | `ACC_REPO_PATH` | `~/work/TechArch` | Local clone of the target repo. See "Repo path resolution" below. |
45
+ | `ACC_TARGET_REPO` | `tokenfactory-pvt-ltd/TechArch` | Slug fallback. A task's own `repo` wins when present. |
46
+ | `ACC_INTEGRATION_BRANCH` | `acc/integration` | Base branch for new PRs. A task's `integration_branch` wins. |
47
+ | `ACC_RUNNER_CAPABILITIES` | _(unset)_ | Comma-separated tags, e.g. `code,docs`. See "Capabilities" below. |
48
+ | `ACC_RUNNER_PROFILE` | _(unset)_ | Profile slug (`developer`, `designer`, `tester`, `manager`). |
49
+
50
+ ### `~/.config/acc-runner/config.json`
51
+
52
+ For settings you don't want to repeat in your shell profile (especially
53
+ when `acc-runner watch` runs under `launchd` and inherits a stripped
54
+ environment), drop a JSON file at
55
+ `~/.config/acc-runner/config.json`. All fields are optional.
56
+
57
+ ```json
58
+ {
59
+ "repo-path": "/Users/you/code/TechArch",
60
+ "capabilities": ["code", "migration"],
61
+ "runner-profile": "developer"
62
+ }
63
+ ```
64
+
65
+ | Field | Notes |
66
+ | ---------------- | -------------------------------------------------------------------------------------- |
67
+ | `repo-path` | Local clone path. Overrides the `~/work/TechArch` default; `ACC_REPO_PATH` overrides this. |
68
+ | `capabilities` | Array of capability tags. Overridden by `ACC_RUNNER_CAPABILITIES` when set. |
69
+ | `runner-profile` | Profile slug; overridden by `ACC_RUNNER_PROFILE` when set. |
32
70
 
33
- | Variable | Required | Notes |
34
- | ------------------------- | :------: | ----------------------------------------------------- |
35
- | `ACC_PUBLIC_URL` | ✓ | e.g. `https://acc.techarch.dev` |
36
- | `ACC_SUPABASE_URL` | ✓ | Mirror of the SPA's `VITE_SUPABASE_URL` |
37
- | `ACC_SUPABASE_ANON_KEY` | ✓ | Same anon key the SPA uses |
38
- | `ACC_REPO_PATH` | | Defaults to `~/work/TechArch` |
39
- | `ACC_TARGET_REPO` | | Defaults to `tokenfactory-pvt-ltd/TechArch` |
40
- | `ACC_INTEGRATION_BRANCH` | | Defaults to `acc/integration` |
71
+ The file is read at process startup. Missing file or malformed JSON
72
+ falls back to the next layer silently — the runner never crashes on a
73
+ config-file read error.
74
+
75
+ ### Repo path resolution
76
+
77
+ `acc-runner` picks the local repo clone in this order — the first
78
+ non-empty value wins:
79
+
80
+ 1. The task row's `repo_path_hint` (set by the operator when assigning
81
+ the task) — lets a single runner span repos.
82
+ 2. `ACC_REPO_PATH` environment variable.
83
+ 3. `repo-path` field in `~/.config/acc-runner/config.json`.
84
+ 4. `~/work/TechArch` — the built-in default.
85
+
86
+ Until v0.8.1, only steps 1, 2, and 4 were consulted: a `repo-path` in
87
+ config.json was silently ignored, and a runner launched by `launchd`
88
+ (which strips most environment variables) would default to
89
+ `~/work/TechArch` and fail every task pickup with `spawn git ENOENT`.
90
+ Set either `ACC_REPO_PATH` or `repo-path` in config.json and verify
91
+ with `acc-runner doctor`.
92
+
93
+ ### Capabilities
94
+
95
+ Tags declare what kinds of tasks this runner is willing to pick up. The
96
+ server's task-router only dispatches a task to a runner whose
97
+ capability set covers the task's `required_capabilities`. The canonical
98
+ vocabulary is:
99
+
100
+ ```
101
+ code, design, test, docs, migration, review, orchestration
102
+ ```
103
+
104
+ An empty list (the default) matches any task with an empty
105
+ `required_capabilities` — that's backward-compatible with pre-v0.6.4
106
+ behavior. Resolution order, highest first:
107
+
108
+ 1. `ACC_RUNNER_CAPABILITIES` (comma-separated)
109
+ 2. `capabilities` field in config.json
110
+ 3. The active runner profile's `capabilities`
111
+ 4. `[]`
112
+
113
+ ### Runner profiles
114
+
115
+ A runner profile bundles capabilities and model defaults under a single
116
+ name. Profiles ship inside the package at
117
+ `packages/acc-runner/runner-profiles/<name>.json`. Available profiles:
118
+
119
+ - `developer` — code + migration work (default fleet member)
120
+ - `designer` — design work
121
+ - `tester` — test authoring + review
122
+ - `manager` — orchestration
123
+
124
+ Select a profile via `ACC_RUNNER_PROFILE=designer` or
125
+ `"runner-profile": "designer"` in config.json. Unknown profile names
126
+ abort CLI startup with a clear error rather than failing at task
127
+ pickup. Env vars and config.json `capabilities` still override the
128
+ profile's defaults when both are set.
129
+
130
+ ### `PATH` under launchd
131
+
132
+ `launchd` resets `PATH` to `/usr/bin:/bin:/usr/sbin:/sbin`, which omits
133
+ the Homebrew bin dirs where `git` and `gh` typically live. The runner
134
+ prepends `/opt/homebrew/{bin,sbin}` and `/usr/local/{bin,sbin}` to its
135
+ own `PATH` before spawning these binaries — no `launchd` plist edits
136
+ required. If `acc-runner doctor` reports `git` or `gh` as missing under
137
+ launchd, install them via Homebrew and re-run.
41
138
 
42
139
  ## Quickstart
43
140
 
44
141
  ```sh
45
142
  acc-runner login # device-code OAuth in your browser
46
- acc-runner doctor # verify env (all green)
143
+ acc-runner doctor # verify config + binaries are all green
47
144
  acc-runner watch # long-running; receives + executes tasks
48
145
  ```
49
146
 
50
- Then, in ACC, assign a task to this machine and click **Start**. The CLI
51
- will:
147
+ Then, in ACC, assign a task to this machine and click **Start**. The
148
+ runner will:
52
149
 
53
- 1. Transition the task to `running`
54
- 2. `git fetch && git checkout -B acc/T-XX-<slug>`
55
- 3. Pipe the rendered prompt into `claude --print`
56
- 4. Stream stdout/stderr to `acc.task_events` (visible in the History tab)
57
- 5. `git push` and open a PR titled `[T-XX] <task title>`
150
+ 1. Transition the task to `running`.
151
+ 2. `git fetch && git checkout -B acc/T-XX-<slug>` in the resolved
152
+ `repoPath`.
153
+ 3. Pipe the rendered prompt into `claude --print
154
+ --dangerously-skip-permissions`.
155
+ 4. Stream stdout/stderr to `acc.task_events` (visible in the History
156
+ tab in ACC).
157
+ 5. `git push` and open a PR titled `[T-XX] <task title>` via `gh`.
58
158
 
59
159
  ## Commands
60
160
 
61
161
  ### `acc-runner login`
62
162
 
63
- Device-code OAuth flow. Stores a JWT in your OS keychain (`acc-runner`
64
- service) and registers this machine in `acc.runners`.
163
+ Device-code OAuth flow. Stores a Supabase JWT in your OS keychain
164
+ (`acc-runner` service) and registers this machine in `acc.runners` with
165
+ its capability tags.
65
166
 
66
167
  ### `acc-runner logout`
67
168
 
@@ -69,23 +170,30 @@ Clears the keychain entry and marks this runner offline.
69
170
 
70
171
  ### `acc-runner watch`
71
172
 
72
- Subscribes to a Realtime broadcast channel scoped to your runner. Sends a
73
- heartbeat every 4s. Cancellation is honored via `task_cancelled`
74
- broadcasts (sends SIGTERM to the in-flight `claude` child).
173
+ Subscribes to a Realtime broadcast channel scoped to your runner. Sends
174
+ a heartbeat every 4s. Cancellation is honored via `task_cancelled`
175
+ broadcasts (sends `SIGTERM` to the in-flight `claude` child).
75
176
 
76
177
  ### `acc-runner doctor`
77
178
 
78
- Runs every environment check and prints a green/red list. Exits 0 if all
79
- pass, 1 otherwise. Suitable for CI.
179
+ Runs every environment check (binaries, keychain access, Supabase
180
+ reachability, repo path, orphan worktrees) and prints a green/red list.
181
+ Exits 0 if all pass, 1 otherwise. Suitable for CI and for diagnosing a
182
+ silent failure mode after install.
80
183
 
81
184
  ### `acc-runner version`
82
185
 
83
186
  Prints the CLI version and the protocol version it speaks. The server
84
- exposes a minimum-protocol-version pin at `/api/runner/min-version`; the
85
- CLI refuses to start if behind.
187
+ exposes a minimum-protocol-version pin at `/api/runner/min-version`;
188
+ the CLI refuses to start if it's behind.
86
189
 
87
190
  ## Troubleshooting
88
191
 
192
+ **`spawn git ENOENT` on every task pickup** — `repoPath` resolves to a
193
+ directory that doesn't exist. Set `ACC_REPO_PATH` or `repo-path` in
194
+ config.json to the absolute path of your local clone, then re-run
195
+ `acc-runner doctor`.
196
+
89
197
  **`✗ Not signed in. Run \`acc-runner login\` first.`** — keychain entry
90
198
  was cleared or never created. Run `acc-runner login`.
91
199
 
@@ -93,45 +201,43 @@ was cleared or never created. Run `acc-runner login`.
93
201
  macOS, ensure your login keychain is unlocked. On Windows, run from a
94
202
  session with credential manager access.
95
203
 
96
- **`✗ register_runner failed`** — the migration that ships the
97
- `acc.register_runner` RPC may not be applied to your environment yet.
98
- Coordinate with the operator who ran `supabase db push`.
204
+ **`✗ register_runner failed`** — the migration shipping
205
+ `acc.register_runner` may not be applied to the deploy you're pointed
206
+ at. Coordinate with the operator who applies migrations.
207
+
208
+ **Task transitions to `failed` immediately** — open the History tab in
209
+ ACC. Common causes: `git fetch` permission denied, `claude --print`
210
+ returned non-zero, or the rendered prompt lacked acceptance criteria.
99
211
 
100
- **Task transitions to `failed` immediately** — check the History tab for
101
- the underlying error. Common causes: `git fetch` permission denied (push
102
- auth), `claude --print` returned non-zero, or the rendered prompt lacked
103
- acceptance criteria.
212
+ **Runner version rejected (`426 Upgrade Required`)** — the server's
213
+ `MIN_VERSION` was bumped past your installed CLI. Run
214
+ `npm i -g @tokenfactory/acc-runner@latest`.
104
215
 
105
216
  ## Security notes
106
217
 
107
- - The CLI never reads or writes your git credentials, gh credentials, or
108
- Anthropic API keys. It calls binaries you already have authenticated.
109
- - The Supabase JWT is short-lived; the CLI stores it in your OS keychain
110
- via `keytar`, never in plaintext on disk.
111
- - Heartbeat interval is 4s — do not tighten this. The server expects to
112
- see it; tighter intervals consume the Realtime budget.
218
+ - The CLI never reads or writes your git, gh, or Anthropic credentials.
219
+ It calls binaries that are already authenticated on your machine.
220
+ - The Supabase JWT is short-lived and stored in your OS keychain via
221
+ `keytar`, never on disk in plaintext.
222
+ - Heartbeat interval is 4s — do not tighten this. Tighter intervals
223
+ consume the Realtime budget.
113
224
 
114
225
  ## Runner sandbox
115
226
 
116
- acc-runner spawns `claude --print --dangerously-skip-permissions` so
227
+ `acc-runner` spawns `claude --print --dangerously-skip-permissions` so
117
228
  non-interactive task execution doesn't hang on per-edit approval
118
- prompts. The permission boundary is enforced by acc-runner's
119
- surrounding context, not by claude itself:
229
+ prompts. The permission boundary is enforced by the surrounding
230
+ context, not by claude itself:
120
231
 
121
- - **cwd boundary**: the spawn is bounded to `$ACC_REPO_PATH` (default
122
- `~/work/TechArch`). Claude cannot read or edit files outside this
123
- repo.
232
+ - **cwd boundary**: the spawn is bounded to the resolved `repoPath`.
233
+ Claude cannot read or edit files outside this repo.
124
234
  - **allowed/forbidden globs**: the task's `acc.tasks.allowed` and
125
- `acc.tasks.forbidden` arrays are rendered into the prompt;
126
- claude is instructed which paths it may or may not touch.
127
- - **operator-controlled install**: the operator deliberately runs
235
+ `acc.tasks.forbidden` arrays are rendered into the prompt; claude is
236
+ instructed which paths it may or may not touch.
237
+ - **operator-controlled install**: an operator deliberately runs
128
238
  `acc-runner watch` on their own laptop. The runner is not a daemon
129
239
  and exits when the operator stops it.
130
240
 
131
- For tasks that need stricter control over which tools claude may use,
132
- the runner additionally supports the `--allowed-tools` flag via the
133
- future `task.tool_allow_list` field (v0.3 follow-up).
134
-
135
241
  ## License
136
242
 
137
243
  Proprietary. Not for redistribution.
package/dist/cli.js CHANGED
@@ -11,6 +11,7 @@ import { loginCommand } from "./login.js";
11
11
  import { logoutCommand } from "./logout.js";
12
12
  import { watchCommand } from "./watch.js";
13
13
  import { doctorCommand } from "./doctor.js";
14
+ import { clearQuarantine, getQuarantine } from "./runtime/quarantine.js";
14
15
  import { PROTOCOL_VERSION } from "./types.js";
15
16
  import { PACKAGE_VERSION } from "./pkg-version.js";
16
17
  const program = new Command();
@@ -67,6 +68,47 @@ program
67
68
  const code = await doctorCommand();
68
69
  process.exitCode = code;
69
70
  });
71
+ // v0.48: quarantine management. The runner enters quarantine automatically
72
+ // when the failure classifier detects a machine-level failure. An operator
73
+ // resolves the underlying issue then clears the quarantine to resume work.
74
+ const quarantineCmd = program
75
+ .command("quarantine")
76
+ .description("Inspect or clear the runner quarantine state.");
77
+ quarantineCmd
78
+ .command("status")
79
+ .description("Show quarantine state.")
80
+ .action(async () => {
81
+ try {
82
+ const q = await getQuarantine();
83
+ if (!q) {
84
+ console.log("Runner is not quarantined.");
85
+ return;
86
+ }
87
+ console.log(chalk.red.bold(`QUARANTINED (${q.cause})`));
88
+ console.log(` Detail: ${q.detail}`);
89
+ console.log(` Task: ${q.taskId}`);
90
+ console.log(` Since: ${q.classifiedAt}`);
91
+ console.log(chalk.gray(`\nResolve the underlying ${q.cause} issue, then run \`acc-runner quarantine clear\`.`));
92
+ process.exitCode = 1;
93
+ }
94
+ catch (err) {
95
+ console.error(chalk.red(`✗ ${err.message}`));
96
+ process.exitCode = 1;
97
+ }
98
+ });
99
+ quarantineCmd
100
+ .command("clear")
101
+ .description("Clear quarantine and allow the runner to resume claiming tasks.")
102
+ .action(async () => {
103
+ try {
104
+ await clearQuarantine();
105
+ console.log(chalk.green("✓ Quarantine cleared. Runner will resume on next task assignment."));
106
+ }
107
+ catch (err) {
108
+ console.error(chalk.red(`✗ ${err.message}`));
109
+ process.exitCode = 1;
110
+ }
111
+ });
70
112
  program
71
113
  .command("version")
72
114
  .description("Print CLI + protocol versions.")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,mHAAmH,CACpH;KACA,OAAO,CAAC,GAAG,eAAe,eAAe,gBAAgB,GAAG,CAAC,CAAC;AAEjE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,8DAA8D;QAC9D,kEAAkE;QAClE,kCAAkC;QAClC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,YAAY,EAAE,CAAC;QACrB,8DAA8D;QAC9D,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;IACnC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,gBAAgB,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -16,8 +16,18 @@ export interface RunnerConfig {
16
16
  * sites coalesce to [] via the loader.
17
17
  */
18
18
  capabilities?: string[];
19
+ /**
20
+ * v0.41-B: optional path to a mirror clone used exclusively for
21
+ * git worktree operations. When set, worktree add/remove/prune run
22
+ * against this path instead of repoPath, eliminating virtiofs lock
23
+ * conflicts on machines where repoPath is mounted by another process.
24
+ * Operator initialises once via: git clone --mirror <remote> <path>
25
+ * Resolution: ACC_WORKTREE_REPO_PATH env > config.json
26
+ * "worktree-repo-path" field > undefined (falls back to repoPath).
27
+ */
28
+ worktreeRepoPath?: string;
19
29
  }
20
- export type ConfigSource = "env" | "default";
30
+ export type ConfigSource = "env" | "file" | "default";
21
31
  /**
22
32
  * Canonical capability vocabulary, mirrored from
23
33
  * `api/_lib/capabilities.ts` and the CHECK constraint enforced by
@@ -39,6 +49,17 @@ export type RunnerCapability = (typeof RUNNER_CAPABILITY_VOCABULARY)[number];
39
49
  * CLI startup, not after a task assignment fires.
40
50
  */
41
51
  export declare function assertRunnerCapabilityArray(arr: readonly string[], context: string): asserts arr is RunnerCapability[];
52
+ /**
53
+ * v0.8.2: Scan a list of absolute candidate paths and return the first
54
+ * that exists on disk. Returns null when none exist so loadConfig() can
55
+ * fall through to the ~/work/TechArch last-resort default.
56
+ *
57
+ * Used when neither ACC_REPO_PATH nor config.json supply a path so a
58
+ * freshly-installed runner finds the repo automatically when the operator
59
+ * cloned it to ~/code/ instead of ~/work/. Candidates are checked in
60
+ * order; the first hit wins.
61
+ */
62
+ export declare function detectRepoPath(candidates: string[]): string | null;
42
63
  /**
43
64
  * Read ~/.config/acc-runner/config.json (or $XDG_CONFIG_HOME/acc-runner/
44
65
  * config.json) and pull out the capabilities field. Missing file or
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;AAM7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,qFAQ/B,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAM7E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAQnC;AAuCD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAOzD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;;sCAEkC;IAClC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC;;;4CAGwC;IACxC,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;;;yEAKqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA+ED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAkBlD;AA6BD,wBAAgB,UAAU,IAAI,YAAY,CAwBzC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,YAAY,EAAE,YAAY,CAAC,CAYxE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAMtD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgEA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAMtD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,qFAQ/B,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAM7E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAQnC;AAsED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CASlE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAOzD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;;sCAEkC;IAClC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC;;;4CAGwC;IACxC,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;;;yEAKqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA+ED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,aAAa,GAAG,IAAI,CAkBlD;AA6BD,wBAAgB,UAAU,IAAI,YAAY,CA4CzC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,YAAY,EAAE,YAAY,CAAC,CAuBxE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAMtD"}
package/dist/config.js CHANGED
@@ -15,7 +15,12 @@
15
15
  * v0.6.0+ this is the LAST resort: task.
16
16
  * repo_path_hint on the fetched task row
17
17
  * takes precedence so a single runner can
18
- * span repos. REG-295.
18
+ * span repos. REG-295. v0.38-B: falls back
19
+ * to the `repo-path` field in
20
+ * ~/.config/acc-runner/config.json before
21
+ * defaulting to ~/work/TechArch, so an
22
+ * operator can pin a clone location without
23
+ * a launchd env override.
19
24
  * ACC_TARGET_REPO — slug fallback, tokenfactory-pvt-ltd/TechArch.
20
25
  * v0.6.0+ task.repo wins when present.
21
26
  * REG-295.
@@ -49,7 +54,7 @@ import fs from "node:fs";
49
54
  import os from "node:os";
50
55
  import path from "node:path";
51
56
  import { fileURLToPath } from "node:url";
52
- // Update DEFAULT_ACC_PUBLIC_URL after DNS cutover to acc.techarch.dev.
57
+ // DEFAULT_ACC_PUBLIC_URL points to the working Vercel deployment (custom domain DNS is unresolved as of v0.42).
53
58
  const DEFAULT_ACC_PUBLIC_URL = "https://agent-control-center-sepia.vercel.app";
54
59
  const DEFAULT_ACC_SUPABASE_URL = "https://qfevnwuybyygexkcbdfy.supabase.co";
55
60
  const DEFAULT_ACC_SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InFmZXZud3V5Ynl5Z2V4a2NiZGZ5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzY0OTU1NjQsImV4cCI6MjA5MjA3MTU2NH0.zRQ4K5H4cfcribPdxyahgarhX-7TCgH38bhdZanYlGA";
@@ -116,6 +121,35 @@ function normalizeCapabilities(raw) {
116
121
  }
117
122
  return out;
118
123
  }
124
+ /**
125
+ * Read the `repo-path` field from ~/.config/acc-runner/config.json (or
126
+ * $XDG_CONFIG_HOME/acc-runner/config.json). Returns null when the file
127
+ * is missing, malformed, or the field is absent / not a non-empty
128
+ * string. Used as the middle layer of repoPath resolution between
129
+ * ACC_REPO_PATH and the ~/work/TechArch default.
130
+ */
131
+ function loadRepoPathFromConfigFile() {
132
+ const parsed = readUserConfigFile();
133
+ const value = parsed?.["repo-path"];
134
+ if (typeof value === "string" && value.trim())
135
+ return value.trim();
136
+ return null;
137
+ }
138
+ /**
139
+ * v0.41-B: read the `worktree-repo-path` field from
140
+ * ~/.config/acc-runner/config.json. Returns null when the file is
141
+ * missing, malformed, or the field is absent / not a non-empty string.
142
+ * Used as the middle layer of worktreeRepoPath resolution between
143
+ * ACC_WORKTREE_REPO_PATH and the undefined fallback (which delegates
144
+ * to repoPath inside prepareTaskWorktree).
145
+ */
146
+ function loadWorktreeRepoPathFromConfigFile() {
147
+ const parsed = readUserConfigFile();
148
+ const value = parsed?.["worktree-repo-path"];
149
+ if (typeof value === "string" && value.trim())
150
+ return value.trim();
151
+ return null;
152
+ }
119
153
  function readUserConfigFile() {
120
154
  const base = process.env.XDG_CONFIG_HOME?.trim() ||
121
155
  path.resolve(os.homedir(), ".config");
@@ -128,6 +162,28 @@ function readUserConfigFile() {
128
162
  return null;
129
163
  }
130
164
  }
165
+ /**
166
+ * v0.8.2: Scan a list of absolute candidate paths and return the first
167
+ * that exists on disk. Returns null when none exist so loadConfig() can
168
+ * fall through to the ~/work/TechArch last-resort default.
169
+ *
170
+ * Used when neither ACC_REPO_PATH nor config.json supply a path so a
171
+ * freshly-installed runner finds the repo automatically when the operator
172
+ * cloned it to ~/code/ instead of ~/work/. Candidates are checked in
173
+ * order; the first hit wins.
174
+ */
175
+ export function detectRepoPath(candidates) {
176
+ for (const candidate of candidates) {
177
+ try {
178
+ if (fs.existsSync(candidate))
179
+ return candidate;
180
+ }
181
+ catch {
182
+ // EPERM or similar — skip this candidate
183
+ }
184
+ }
185
+ return null;
186
+ }
131
187
  /**
132
188
  * Read ~/.config/acc-runner/config.json (or $XDG_CONFIG_HOME/acc-runner/
133
189
  * config.json) and pull out the capabilities field. Missing file or
@@ -261,8 +317,26 @@ function loadCapabilities(profile) {
261
317
  return [];
262
318
  }
263
319
  export function loadConfig() {
320
+ // v0.8.2: resolution order (highest → lowest precedence):
321
+ // 1. ACC_REPO_PATH env var
322
+ // 2. ~/.config/acc-runner/config.json "repo-path" field
323
+ // 3. First existing path in the common-clone-locations scan
324
+ // 4. ~/work/TechArch (original hardcoded default, kept as last resort)
264
325
  const repoPath = process.env.ACC_REPO_PATH?.trim() ||
326
+ loadRepoPathFromConfigFile() ||
327
+ detectRepoPath([
328
+ path.resolve(os.homedir(), "code", "ACC-Tech"),
329
+ path.resolve(os.homedir(), "code", "TechArch"),
330
+ path.resolve(os.homedir(), "src", "TechArch"),
331
+ ]) ||
265
332
  path.resolve(os.homedir(), "work", "TechArch");
333
+ // v0.41-B: separate mirror clone for `git worktree` operations.
334
+ // Undefined when neither env nor config.json supplies one, in
335
+ // which case prepareTaskWorktree transparently falls back to
336
+ // repoPath — preserving v0.40-and-earlier behaviour byte-for-byte.
337
+ const worktreeRepoPath = process.env.ACC_WORKTREE_REPO_PATH?.trim() ||
338
+ loadWorktreeRepoPathFromConfigFile() ||
339
+ undefined;
266
340
  // Profile loads first because capabilities() consults it as the
267
341
  // lowest-precedence default. Loader throws on malformed profile
268
342
  // JSON or unknown capability tags, surfacing operator typos at
@@ -276,6 +350,7 @@ export function loadConfig() {
276
350
  targetRepo: envOrDefault("ACC_TARGET_REPO", DEFAULT_ACC_TARGET_REPO),
277
351
  integrationBranch: envOrDefault("ACC_INTEGRATION_BRANCH", DEFAULT_ACC_INTEGRATION_BRANCH),
278
352
  capabilities: loadCapabilities(profile),
353
+ worktreeRepoPath,
279
354
  };
280
355
  }
281
356
  /**
@@ -284,14 +359,25 @@ export function loadConfig() {
284
359
  */
285
360
  export function configSources() {
286
361
  const src = (name) => process.env[name]?.trim() ? "env" : "default";
362
+ const repoPathSrc = process.env.ACC_REPO_PATH?.trim()
363
+ ? "env"
364
+ : loadRepoPathFromConfigFile()
365
+ ? "file"
366
+ : "default";
367
+ const worktreeRepoPathSrc = process.env.ACC_WORKTREE_REPO_PATH?.trim()
368
+ ? "env"
369
+ : loadWorktreeRepoPathFromConfigFile()
370
+ ? "file"
371
+ : "default";
287
372
  return {
288
373
  publicUrl: src("ACC_PUBLIC_URL"),
289
374
  supabaseUrl: src("ACC_SUPABASE_URL"),
290
375
  supabaseAnonKey: src("ACC_SUPABASE_ANON_KEY"),
291
- repoPath: src("ACC_REPO_PATH"),
376
+ repoPath: repoPathSrc,
292
377
  targetRepo: src("ACC_TARGET_REPO"),
293
378
  integrationBranch: src("ACC_INTEGRATION_BRANCH"),
294
379
  capabilities: src("ACC_RUNNER_CAPABILITIES"),
380
+ worktreeRepoPath: worktreeRepoPathSrc,
295
381
  };
296
382
  }
297
383
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAQjF,eAAO,MAAM,aAAa,gCAAgC,CAAC;AAC3D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE,MAAM,CAQxD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE,MAAM,CAQ5D,CAAC;AAsBF,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkXD,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgChF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AASjF,eAAO,MAAM,aAAa,gCAAgC,CAAC;AAC3D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE,MAAM,CASxD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE,MAAM,CAS5D,CAAC;AA+BF,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkaD,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiChF"}