@clipboard-health/groundcrew 1.7.3 → 1.8.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 (110) hide show
  1. package/README.md +8 -7
  2. package/bin/runCli.js +8 -11
  3. package/{src → dist}/cli.d.ts +1 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/{src → dist}/cli.js +0 -1
  6. package/{src → dist}/commands/cleaner.d.ts +1 -0
  7. package/dist/commands/cleaner.d.ts.map +1 -0
  8. package/{src → dist}/commands/cleaner.js +0 -1
  9. package/{src → dist}/commands/cleanupWorkspace.d.ts +1 -0
  10. package/dist/commands/cleanupWorkspace.d.ts.map +1 -0
  11. package/{src → dist}/commands/cleanupWorkspace.js +0 -1
  12. package/{src → dist}/commands/dispatcher.d.ts +1 -0
  13. package/dist/commands/dispatcher.d.ts.map +1 -0
  14. package/{src → dist}/commands/dispatcher.js +0 -1
  15. package/{src → dist}/commands/doctor.d.ts +1 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/{src → dist}/commands/doctor.js +0 -1
  18. package/{src → dist}/commands/eligibility.d.ts +1 -0
  19. package/dist/commands/eligibility.d.ts.map +1 -0
  20. package/{src → dist}/commands/eligibility.js +0 -1
  21. package/{src → dist}/commands/orchestrator.d.ts +1 -0
  22. package/dist/commands/orchestrator.d.ts.map +1 -0
  23. package/{src → dist}/commands/orchestrator.js +0 -1
  24. package/{src → dist}/commands/remoteSetup.d.ts +1 -0
  25. package/dist/commands/remoteSetup.d.ts.map +1 -0
  26. package/{src → dist}/commands/remoteSetup.js +0 -1
  27. package/{src → dist}/commands/setupWorkspace.d.ts +1 -0
  28. package/dist/commands/setupWorkspace.d.ts.map +1 -0
  29. package/{src → dist}/commands/setupWorkspace.js +17 -19
  30. package/{src → dist}/commands/teardownReporter.d.ts +1 -0
  31. package/dist/commands/teardownReporter.d.ts.map +1 -0
  32. package/{src → dist}/commands/teardownReporter.js +0 -1
  33. package/{src → dist}/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/{src → dist}/index.js +0 -1
  36. package/{src → dist}/lib/boardSource.d.ts +1 -0
  37. package/dist/lib/boardSource.d.ts.map +1 -0
  38. package/{src → dist}/lib/boardSource.js +0 -1
  39. package/{src → dist}/lib/buildSecrets.d.ts +1 -0
  40. package/dist/lib/buildSecrets.d.ts.map +1 -0
  41. package/{src → dist}/lib/buildSecrets.js +0 -1
  42. package/{src → dist}/lib/commandRunner.d.ts +1 -0
  43. package/dist/lib/commandRunner.d.ts.map +1 -0
  44. package/{src → dist}/lib/commandRunner.js +0 -1
  45. package/{src → dist}/lib/config.d.ts +1 -0
  46. package/dist/lib/config.d.ts.map +1 -0
  47. package/{src → dist}/lib/config.js +0 -1
  48. package/{src → dist}/lib/host.d.ts +1 -0
  49. package/dist/lib/host.d.ts.map +1 -0
  50. package/{src → dist}/lib/host.js +0 -1
  51. package/{src → dist}/lib/launchCommand.d.ts +1 -0
  52. package/dist/lib/launchCommand.d.ts.map +1 -0
  53. package/{src → dist}/lib/launchCommand.js +0 -1
  54. package/{src → dist}/lib/localRunner.d.ts +1 -0
  55. package/dist/lib/localRunner.d.ts.map +1 -0
  56. package/{src → dist}/lib/localRunner.js +0 -1
  57. package/{src → dist}/lib/remoteSetupCommand.d.ts +1 -0
  58. package/dist/lib/remoteSetupCommand.d.ts.map +1 -0
  59. package/{src → dist}/lib/remoteSetupCommand.js +0 -1
  60. package/{src → dist}/lib/shell.d.ts +1 -0
  61. package/dist/lib/shell.d.ts.map +1 -0
  62. package/{src → dist}/lib/shell.js +0 -1
  63. package/{src → dist}/lib/spriteRemoteRunnerProvider.d.ts +1 -0
  64. package/dist/lib/spriteRemoteRunnerProvider.d.ts.map +1 -0
  65. package/{src → dist}/lib/spriteRemoteRunnerProvider.js +3 -14
  66. package/{src → dist}/lib/usage.d.ts +1 -0
  67. package/dist/lib/usage.d.ts.map +1 -0
  68. package/{src → dist}/lib/usage.js +0 -1
  69. package/{src → dist}/lib/util.d.ts +1 -0
  70. package/dist/lib/util.d.ts.map +1 -0
  71. package/{src → dist}/lib/util.js +0 -1
  72. package/{src → dist}/lib/workspaces.d.ts +1 -0
  73. package/dist/lib/workspaces.d.ts.map +1 -0
  74. package/{src → dist}/lib/workspaces.js +6 -5
  75. package/{src → dist}/lib/worktrees.d.ts +1 -0
  76. package/dist/lib/worktrees.d.ts.map +1 -0
  77. package/{src → dist}/lib/worktrees.js +7 -2
  78. package/dist/main.d.ts +2 -0
  79. package/dist/main.d.ts.map +1 -0
  80. package/{src → dist}/main.js +0 -1
  81. package/package.json +72 -13
  82. package/static/groundcrew.svg +9 -0
  83. package/CONTEXT.md +0 -64
  84. package/src/cli.js.map +0 -1
  85. package/src/commands/cleaner.js.map +0 -1
  86. package/src/commands/cleanupWorkspace.js.map +0 -1
  87. package/src/commands/dispatcher.js.map +0 -1
  88. package/src/commands/doctor.js.map +0 -1
  89. package/src/commands/eligibility.js.map +0 -1
  90. package/src/commands/orchestrator.js.map +0 -1
  91. package/src/commands/remoteSetup.js.map +0 -1
  92. package/src/commands/setupWorkspace.js.map +0 -1
  93. package/src/commands/teardownReporter.js.map +0 -1
  94. package/src/index.js.map +0 -1
  95. package/src/lib/boardSource.js.map +0 -1
  96. package/src/lib/buildSecrets.js.map +0 -1
  97. package/src/lib/commandRunner.js.map +0 -1
  98. package/src/lib/config.js.map +0 -1
  99. package/src/lib/host.js.map +0 -1
  100. package/src/lib/launchCommand.js.map +0 -1
  101. package/src/lib/localRunner.js.map +0 -1
  102. package/src/lib/remoteSetupCommand.js.map +0 -1
  103. package/src/lib/shell.js.map +0 -1
  104. package/src/lib/spriteRemoteRunnerProvider.js.map +0 -1
  105. package/src/lib/usage.js.map +0 -1
  106. package/src/lib/util.js.map +0 -1
  107. package/src/lib/workspaces.js.map +0 -1
  108. package/src/lib/worktrees.js.map +0 -1
  109. package/src/main.d.ts +0 -1
  110. package/src/main.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <h1 align="center">groundcrew</h1>
2
2
  <p align="center">
3
- <img alt="Groundcrew logo." height="250px" src="../../static/groundcrew.svg">
3
+ <img alt="Groundcrew logo." height="250px" src="./static/groundcrew.svg">
4
4
  </p>
5
5
 
6
6
  Watch a Linear project and farm out ready tickets to coding-agent CLIs running in workspaces backed by git worktrees. Workspaces are [`cmux`](https://github.com/clayton-cole/cmux) panes on macOS or `tmux` windows on Linux/macOS.
@@ -58,7 +58,7 @@ This installs the `crew` binary. `@clipboard-health/clearance` is pulled in tran
58
58
 
59
59
  Local setup fails before creating a worktree when the host is not macOS or `safehouse` is missing. `models.isolation`, per-model `isolation`, and per-model `sandbox` are legacy keys and now fail config validation.
60
60
 
61
- 6. **Set the clearance allowlist for local macOS runs.** Groundcrew starts `clearance` from `@clipboard-health/clearance` on `http://127.0.0.1:19999` (skipping the launch if something is already listening) and runs the agent through the bundled `safehouse-clearance` wrapper. Clearance refuses to start without an allowlist — see [its README](../clearance/README.md) for the proxy's env vars, log paths, and DNS rules. The shortest path is to set the env before `crew run`:
61
+ 6. **Set the clearance allowlist for local macOS runs.** Groundcrew starts `clearance` from `@clipboard-health/clearance` on `http://127.0.0.1:19999` (skipping the launch if something is already listening) and runs the agent through the bundled `safehouse-clearance` wrapper. Clearance refuses to start without an allowlist — see [its README](https://github.com/ClipboardHealth/core-utils/tree/main/packages/clearance) for the proxy's env vars, log paths, and DNS rules. The shortest path is to set the env before `crew run`:
62
62
 
63
63
  ```bash
64
64
  CLEARANCE_ALLOW_HOSTS="api.openai.com,auth.openai.com,api.anthropic.com,mcp.linear.app,api.linear.app" \
@@ -82,8 +82,8 @@ This installs the `crew` binary. `@clipboard-health/clearance` is pulled in tran
82
82
  --codex \
83
83
  --copy-local-codex-auth \
84
84
  --github \
85
- --git-name "Rocky Warren" \
86
- --git-email "1085683+therockstorm@users.noreply.github.com" \
85
+ --git-name "Your Name" \
86
+ --git-email "you@users.noreply.github.com" \
87
87
  --mcp linear \
88
88
  --mcp slack \
89
89
  --checkpoint
@@ -167,6 +167,7 @@ crew cleanup <TICKET>
167
167
  - **Safehouse-already-wrapped commands are not re-wrapped.** If a `models.definitions.<name>.cmd` already starts with `safehouse`, groundcrew assumes that command owns its Safehouse flags and does not add the `safehouse-clearance` wrapper a second time. Changing the proxy's allowlist after it's running requires killing the PID in `${XDG_CACHE_HOME:-$HOME/.cache}/clearance/clearance.pid` so the next launch picks up the new env.
168
168
  - **Legacy Docker Sandboxes state is unmanaged.** Groundcrew no longer discovers or cleans `.sbx` worktrees or persistent Docker Sandboxes containers. If you have old state, inspect and remove it manually with `sbx`.
169
169
  - **Remote cleanup is also conservative.** `crew cleanup` removes tracked remote worktrees and branches, but it does not kill active remote sessions. Use `crew remote sessions [<runner-name>]` to inspect sessions and, with the Sprite provider, `sprite sessions kill -s <runner-name> <session-id>` when Git reports a worktree is busy.
170
+ - **Dead tmux windows vanish by default.** When a wrapped agent command fails (e.g. `safehouse-clearance` not found, `npm install` crash), the tmux window closes immediately and the error scrolls into the void. Set `GROUNDCREW_KEEP_DEAD_WINDOWS=1` (any non-empty value works) in the env you launch `crew` from to flip the per-window `remain-on-exit` to `on`; the window stays open with the error visible. Close it manually with `tmux kill-window -t groundcrew:<ticket>` after diagnosis. tmux backend only.
170
171
  - **Long-running remote shell tools block agent input.** Claude Code and similar TUI agents cannot accept a new prompt while one of their shell tools is still running. Use `crew remote ps <runner-name>` to inspect the remote process tree; interrupt the tool's child `PGID`, not the agent session `PGID`, with `crew remote interrupt <PGID> --runner <runner-name>`.
171
172
  - **Codex auth in remote runners may need auth-file copy.** If `crew remote setup <runner-name> --codex` finishes interactive login but `codex login status` still fails inside the remote runner, rerun with `--copy-local-codex-auth` after confirming local Codex auth works.
172
173
  - **Usage source defaults are OS-aware.** `codexbar` usage uses `--source auto` on macOS so CodexBar can prefer account/web sources and fall back as it supports. On Linux/WSL it uses `--source cli`, so install the CodexBar Linux CLI and authenticate the provider CLIs inside that environment.
@@ -182,10 +183,10 @@ crew cleanup <TICKET>
182
183
 
183
184
  ## Hacking on groundcrew
184
185
 
185
- For developers working on the package itself, the source lives in [`ClipboardHealth/core-utils`](https://github.com/ClipboardHealth/core-utils). Clone it, run `npm install`, and the repo's `crew` / `crew:op` scripts execute groundcrew straight from TypeScript source — no build step. The bin's `runCli` helper re-execs node with `--conditions @clipboard-health/source` so `@clipboard-health/clearance` also resolves to source.
186
+ For developers working on the package itself, clone this repo, run `npm install`, and the repo's `crew` / `crew:op` scripts execute groundcrew straight from TypeScript source — no build step. Package dependencies, including `@clipboard-health/clearance`, resolve through normal npm package exports.
186
187
 
187
188
  ```bash
188
- cd ~/dev/c/core-utils
189
+ cd ~/dev/c/groundcrew
189
190
  node --run crew -- doctor
190
191
 
191
192
  # With 1Password for LINEAR_API_KEY:
@@ -196,4 +197,4 @@ Both forms read `${XDG_CONFIG_HOME:-$HOME/.config}/groundcrew/config.ts` by defa
196
197
 
197
198
  Logs land in `${XDG_STATE_HOME:-$HOME/.local/state}/groundcrew/groundcrew.log` by default (override via `logging.file` in your config). The "Loaded config from …" line at startup tells you which config won.
198
199
 
199
- Source edits in `packages/{clearance,groundcrew}/src/**` are picked up on the next invocation. Requires Node ≥ 24.3 (the version with native `.ts` type stripping enabled by default).
200
+ Source edits in `src/**` are picked up on the next invocation. Requires Node ≥ 24.3 (the version with native `.ts` type stripping enabled by default).
package/bin/runCli.js CHANGED
@@ -5,28 +5,25 @@ import { join } from "node:path";
5
5
  import { pathToFileURL } from "node:url";
6
6
 
7
7
  /**
8
- * Load a side-effecting entrypoint by basename. In published/built mode, dynamically
9
- * imports the compiled `${name}.js` in-process. In source/dev mode (no compiled output
10
- * present), spawns a child node that loads the `.ts` source with
11
- * `--conditions @clipboard-health/source` so cross-package bare imports of
12
- * `@clipboard-health/*` workspace deps also resolve to source.
8
+ * Load a side-effecting entrypoint by basename. In published/built mode,
9
+ * dynamically imports the compiled `dist/${name}.js` in-process. In source/dev
10
+ * mode (no compiled output present), spawns a child node that loads the `.ts`
11
+ * source while dependencies resolve through normal package exports.
13
12
  *
14
13
  * @param {string} packageRoot
15
14
  * @param {string} name
16
15
  */
17
16
  export async function runCli(packageRoot, name) {
18
- const compiledPath = join(packageRoot, "src", `${name}.js`);
17
+ const compiledPath = join(packageRoot, "dist", `${name}.js`);
19
18
  if (existsSync(compiledPath)) {
20
19
  await import(pathToFileURL(compiledPath).href);
21
20
  return;
22
21
  }
23
22
 
24
23
  const sourcePath = join(packageRoot, "src", `${name}.ts`);
25
- const result = spawnSync(
26
- process.execPath,
27
- ["--conditions", "@clipboard-health/source", sourcePath, ...process.argv.slice(2)],
28
- { stdio: "inherit" },
29
- );
24
+ const result = spawnSync(process.execPath, [sourcePath, ...process.argv.slice(2)], {
25
+ stdio: "inherit",
26
+ });
30
27
 
31
28
  if (result.error !== undefined) {
32
29
  throw result.error;
@@ -1 +1,2 @@
1
1
  export declare function run(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiGA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvD"}
@@ -105,4 +105,3 @@ export async function run(argv) {
105
105
  process.exitCode = 1;
106
106
  }
107
107
  }
108
- //# sourceMappingURL=cli.js.map
@@ -19,3 +19,4 @@ export interface Cleaner {
19
19
  }
20
20
  export declare function createCleaner(deps: CleanerDeps): Cleaner;
21
21
  export {};
22
+ //# sourceMappingURL=cleaner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleaner.d.ts","sourceRoot":"","sources":["../../src/commands/cleaner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,KAAK,aAAa,EAAa,MAAM,qBAAqB,CAAC;AAGpE,UAAU,WAAW;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;QAC1C,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAqDxD"}
@@ -46,4 +46,3 @@ export function createCleaner(deps) {
46
46
  }
47
47
  return { runOnce };
48
48
  }
49
- //# sourceMappingURL=cleaner.js.map
@@ -6,3 +6,4 @@ export interface CleanupWorkspaceOptions {
6
6
  }
7
7
  export declare function cleanupWorkspace(config: ResolvedConfig, options: CleanupWorkspaceOptions): Promise<void>;
8
8
  export declare function cleanupWorkspaceCli(argv: string[]): Promise<void>;
9
+ //# sourceMappingURL=cleanupWorkspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanupWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/cleanupWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKnE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAwBD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
@@ -39,4 +39,3 @@ export async function cleanupWorkspaceCli(argv) {
39
39
  const options = parseArguments(argv);
40
40
  await cleanupWorkspace(config, options);
41
41
  }
42
- //# sourceMappingURL=cleanupWorkspace.js.map
@@ -27,3 +27,4 @@ export interface Dispatcher {
27
27
  }
28
28
  export declare function createDispatcher(deps: DispatcherDeps): Dispatcher;
29
29
  export {};
30
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/commands/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;QAC1C,+FAA+F;QAC/F,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAoQjE"}
@@ -234,4 +234,3 @@ function weeklyPacedBudgetPercentage(weekEndDuration) {
234
234
  const budgetDayCount = Math.min(DAYS_PER_WEEK, Math.max(1, elapsedDayCount));
235
235
  return (budgetDayCount / DAYS_PER_WEEK) * PERCENT_FRACTION_DIVISOR;
236
236
  }
237
- //# sourceMappingURL=dispatcher.js.map
@@ -3,3 +3,4 @@
3
3
  * Returns true if every required check passes; false otherwise.
4
4
  */
5
5
  export declare function doctor(): Promise<boolean>;
6
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmIH,wBAAsB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAmE/C"}
@@ -225,4 +225,3 @@ async function workspaceChecks(outcome) {
225
225
  const { resolved } = outcome.resolution;
226
226
  return [await checkCmd(resolved, true, `install ${resolved} first`)];
227
227
  }
228
- //# sourceMappingURL=doctor.js.map
@@ -83,3 +83,4 @@ export declare function classifyBlockers(config: ResolvedConfig, todo: readonly
83
83
  */
84
84
  export declare function classifyEligibility(arguments_: ClassifyArguments): Verdict[];
85
85
  export {};
86
+ //# sourceMappingURL=eligibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eligibility.d.ts","sourceRoot":"","sources":["../../src/commands/eligibility.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgB,KAAK,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,KAAK,UAAU,GACX,SAAS,GACT,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,4BAA4B,GAC5B,mBAAmB,CAAC;AAExB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,EAAE,UAAU,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,OAAO,GAAG,YAAY,GAAG,WAAW,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;OAKG;IACH,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,oDAAoD;IACpD,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAqCD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,MAAM,GAAG,SAAS,CAepB;AA4CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,SAAS,eAAe,EAAE,GAC/B,qBAAqB,CAYvB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,EAAE,CAgE5E"}
@@ -171,4 +171,3 @@ export function classifyEligibility(arguments_) {
171
171
  }
172
172
  return verdicts;
173
173
  }
174
- //# sourceMappingURL=eligibility.js.map
@@ -7,3 +7,4 @@ export interface OrchestratorOptions {
7
7
  dryRun: boolean;
8
8
  }
9
9
  export declare function orchestrate(options: OrchestratorOptions): Promise<void>;
10
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4LH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAiBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC7E"}
@@ -262,4 +262,3 @@ async function runWatchLoop(tick, config) {
262
262
  process.off("SIGTERM", handleSigterm);
263
263
  }
264
264
  }
265
- //# sourceMappingURL=orchestrator.js.map
@@ -47,3 +47,4 @@ export declare function listRemoteProcesses(options: RemoteProcessOptions): Prom
47
47
  export declare function interruptRemoteProcessGroup(options: RemoteInterruptOptions): Promise<void>;
48
48
  export declare function setupRemoteRunner(options: RemoteSetupOptions): Promise<void>;
49
49
  export declare function remoteCli(argv: string[]): Promise<void>;
50
+ //# sourceMappingURL=remoteSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteSetup.d.ts","sourceRoot":"","sources":["../../src/commands/remoteSetup.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,wBAAwB,EAAE,OAAO,CAAC;IAClC,uBAAuB,EAAE,OAAO,CAAC;IACjC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4rBD,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B9F;AAUD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAItF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAItF;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhG;AAYD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BlF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7D"}
@@ -697,4 +697,3 @@ export async function remoteCli(argv) {
697
697
  }
698
698
  throw new Error(usage());
699
699
  }
700
- //# sourceMappingURL=remoteSetup.js.map
@@ -19,3 +19,4 @@ export declare function setupWorkspaceCli(ticket: string, options?: {
19
19
  dryRun?: boolean;
20
20
  }): Promise<void>;
21
21
  export {};
22
+ //# sourceMappingURL=setupWorkspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupWorkspace.d.ts","sourceRoot":"","sources":["../../src/commands/setupWorkspace.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAa1B,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,wEAAwE;IACxE,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAkED,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,EAC9B,UAAU,GAAE,wBAA6B,GACxC,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAuHD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -54,6 +54,17 @@ function stageLaunchScript(promptDir, command) {
54
54
  writeFileSync(launcherFile, `#!/usr/bin/env bash\n${command}\n`, { mode: 0o700 });
55
55
  return launcherFile;
56
56
  }
57
+ function stagePrompt(input) {
58
+ const promptDir = mkdtempSync(join(tmpdir(), `groundcrew-${input.ticket}-`));
59
+ const promptFile = join(promptDir, "prompt.txt");
60
+ writeFileSync(promptFile, renderPrompt(input.config.prompts.initial, {
61
+ ticket: input.ticket,
62
+ worktree: input.worktreeName,
63
+ title: input.ticketDetails.title,
64
+ description: input.ticketDetails.description,
65
+ }));
66
+ return { directory: promptDir, file: promptFile };
67
+ }
57
68
  export async function setupWorkspace(config, options, runOptions = {}) {
58
69
  const { ticket, repository, model } = options;
59
70
  const runner = options.runner ?? "local";
@@ -95,18 +106,12 @@ export async function setupWorkspace(config, options, runOptions = {}) {
95
106
  else {
96
107
  ticketDetails = options.details;
97
108
  }
98
- promptDir = mkdtempSync(join(tmpdir(), `groundcrew-${ticket}-`));
99
- const promptFile = join(promptDir, "prompt.txt");
100
- writeFileSync(promptFile, renderPrompt(config.prompts.initial, {
101
- ticket,
102
- worktree: worktreeName,
103
- title: ticketDetails.title,
104
- description: ticketDetails.description,
105
- }));
109
+ const stagedPrompt = stagePrompt({ config, ticket, ticketDetails, worktreeName });
110
+ promptDir = stagedPrompt.directory;
106
111
  const secretsFile = stageBuildSecrets(promptDir);
107
112
  const launchCmd = buildLaunchCommand({
108
113
  definition,
109
- promptFile,
114
+ promptFile: stagedPrompt.file,
110
115
  worktreeDir: launchDir,
111
116
  secretsFile,
112
117
  });
@@ -151,14 +156,8 @@ async function setupRemoteWorkspace(arguments_) {
151
156
  let promptDir;
152
157
  try {
153
158
  const ticketDetails = await resolveTicketDetails(options);
154
- promptDir = mkdtempSync(join(tmpdir(), `groundcrew-${ticket}-`));
155
- const promptFile = join(promptDir, "prompt.txt");
156
- writeFileSync(promptFile, renderPrompt(config.prompts.initial, {
157
- ticket,
158
- worktree: worktreeName,
159
- title: ticketDetails.title,
160
- description: ticketDetails.description,
161
- }));
159
+ const stagedPrompt = stagePrompt({ config, ticket, ticketDetails, worktreeName });
160
+ promptDir = stagedPrompt.directory;
162
161
  const secretsFile = stageBuildSecrets(promptDir, config.remote.secretNames);
163
162
  const remotePromptFile = `/tmp/groundcrew-${ticket}-prompt.txt`;
164
163
  const remoteSecretsFile = secretsFile === undefined ? undefined : `/tmp/groundcrew-${ticket}-secrets.env`;
@@ -166,7 +165,7 @@ async function setupRemoteWorkspace(arguments_) {
166
165
  definition,
167
166
  provider: getRemoteRunnerProvider(config.remote.provider),
168
167
  remoteConfig: config.remote,
169
- promptFile,
168
+ promptFile: stagedPrompt.file,
170
169
  remotePromptFile,
171
170
  worktreeDir: remoteWorktreeDir,
172
171
  secretNames: config.remote.secretNames,
@@ -243,4 +242,3 @@ export async function setupWorkspaceCli(ticket, options = {}) {
243
242
  details: { title: resolved.title, description: resolved.description },
244
243
  });
245
244
  }
246
- //# sourceMappingURL=setupWorkspace.js.map
@@ -1,3 +1,4 @@
1
1
  import type { TeardownResult } from "../lib/worktrees.ts";
2
2
  export declare function logTeardown(result: TeardownResult): void;
3
3
  export declare function recordTeardownEvents(result: TeardownResult): void;
4
+ //# sourceMappingURL=teardownReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teardownReporter.d.ts","sourceRoot":"","sources":["../../src/commands/teardownReporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAmBxD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAwCjE"}
@@ -62,4 +62,3 @@ export function recordTeardownEvents(result) {
62
62
  }
63
63
  }
64
64
  }
65
- //# sourceMappingURL=teardownReporter.js.map
@@ -7,3 +7,4 @@ export { setupWorkspace, type SetupWorkspaceOptions } from "./commands/setupWork
7
7
  export type { Config, ModelDefinition, RemoteRunnerConfig, RemoteRunnerProviderName, ResolvedConfig, WorkspaceRunner, } from "./lib/config.ts";
8
8
  export { loadConfig } from "./lib/config.ts";
9
9
  export { getUsageByModel, type UsageByModel } from "./lib/usage.ts";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,YAAY,EACV,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -6,4 +6,3 @@ export { bootstrapRemoteRepository, setupRemoteRunner, } from "./commands/remote
6
6
  export { setupWorkspace } from "./commands/setupWorkspace.js";
7
7
  export { loadConfig } from "./lib/config.js";
8
8
  export { getUsageByModel } from "./lib/usage.js";
9
- //# sourceMappingURL=index.js.map
@@ -82,3 +82,4 @@ export declare function fetchResolvedIssue(arguments_: {
82
82
  ticket: string;
83
83
  }): Promise<ResolvedIssue>;
84
84
  export {};
85
+ //# sourceMappingURL=boardSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boardSource.d.ts","sourceRoot":"","sources":["../../src/lib/boardSource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAMzF,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0FAA0F;IAC1F,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,0FAA0F;IAC1F,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,eAAe,CAExE;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAmB,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAMjF;CACF;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,8DAA8D;IAC9D,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;CAC9B;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAUpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAEhF;AA+LD,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;CACzB;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE;IACnD,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwCzB"}
@@ -255,4 +255,3 @@ function blockersFromRelations(relations) {
255
255
  status: relation.issue?.state?.name,
256
256
  }));
257
257
  }
258
- //# sourceMappingURL=boardSource.js.map
@@ -3,3 +3,4 @@
3
3
  * process must not inherit these values.
4
4
  */
5
5
  export declare const BUILD_SECRET_NAMES: readonly ["NPM_TOKEN", "BUF_TOKEN"];
6
+ //# sourceMappingURL=buildSecrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSecrets.d.ts","sourceRoot":"","sources":["../../src/lib/buildSecrets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,YAAI,WAAW,EAAE,WAAW,CAAU,CAAC"}
@@ -3,4 +3,3 @@
3
3
  * process must not inherit these values.
4
4
  */
5
5
  export const BUILD_SECRET_NAMES = ["NPM_TOKEN", "BUF_TOKEN"];
6
- //# sourceMappingURL=buildSecrets.js.map
@@ -17,3 +17,4 @@ export declare function runCommandAsync(command: string, arguments_: readonly st
17
17
  export declare function runCommandAsync(command: string, arguments_: readonly string[], options?: RunCommandOptions & {
18
18
  stdio?: "captured";
19
19
  }): Promise<string>;
20
+ //# sourceMappingURL=commandRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRunner.d.ts","sourceRoot":"","sources":["../../src/lib/commandRunner.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAChD,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,GACnD,MAAM,CAAC;AA8BV,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAChD,OAAO,CAAC,SAAS,CAAC,CAAC;AACtB,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,GACnD,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -250,4 +250,3 @@ function truncateErrorOutput(text) {
250
250
  function formatCommand(command, arguments_) {
251
251
  return [command, ...arguments_].join(" ");
252
252
  }
253
- //# sourceMappingURL=commandRunner.js.map
@@ -170,3 +170,4 @@ export interface ResolvedConfig {
170
170
  };
171
171
  }
172
172
  export declare function loadConfig(): Promise<Readonly<ResolvedConfig>>;
173
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -444,4 +444,3 @@ export async function loadConfig() {
444
444
  cached = Object.freeze(resolved);
445
445
  return cached;
446
446
  }
447
- //# sourceMappingURL=config.js.map
@@ -26,3 +26,4 @@ export interface HostCapabilities {
26
26
  */
27
27
  export declare function which(cmd: string, signal?: AbortSignal): Promise<string | undefined>;
28
28
  export declare function detectHostCapabilities(signal?: AbortSignal): Promise<HostCapabilities>;
29
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/lib/host.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc1F;AAED,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc5F"}
@@ -40,4 +40,3 @@ export async function detectHostCapabilities(signal) {
40
40
  isSafehouseSupported: isMacOS,
41
41
  };
42
42
  }
43
- //# sourceMappingURL=host.js.map
@@ -45,3 +45,4 @@ interface RemoteLaunchCommandArguments {
45
45
  */
46
46
  export declare function buildLaunchCommand(arguments_: LaunchCommandArguments): string;
47
47
  export declare function buildRemoteLaunchCommand(arguments_: RemoteLaunchCommandArguments): string;
48
+ //# sourceMappingURL=launchCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchCommand.d.ts","sourceRoot":"","sources":["../../src/lib/launchCommand.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,MAAwB,GAAG,MAAM,CAcvF;AA+BD,UAAU,sBAAsB;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,UAAU,4BAA4B;IACpC,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,kBAAkB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,GAAG,MAAM,CA2B7E;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,4BAA4B,GAAG,MAAM,CAiDzF"}
@@ -122,4 +122,3 @@ export function buildRemoteLaunchCommand(arguments_) {
122
122
  }),
123
123
  ].join("; ");
124
124
  }
125
- //# sourceMappingURL=launchCommand.js.map
@@ -1,2 +1,3 @@
1
1
  import type { HostCapabilities } from "./host.ts";
2
2
  export declare function assertLocalRunnerRequirements(host: HostCapabilities): void;
3
+ //# sourceMappingURL=localRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localRunner.d.ts","sourceRoot":"","sources":["../../src/lib/localRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAW1E"}
@@ -6,4 +6,3 @@ export function assertLocalRunnerRequirements(host) {
6
6
  throw new Error("Local groundcrew runs require `safehouse` on PATH. Install Safehouse from https://agent-safehouse.dev/ and retry.");
7
7
  }
8
8
  }
9
- //# sourceMappingURL=localRunner.js.map
@@ -1 +1,2 @@
1
1
  export declare const DEFAULT_REMOTE_SETUP_COMMAND: string;
2
+ //# sourceMappingURL=remoteSetupCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteSetupCommand.d.ts","sourceRoot":"","sources":["../../src/lib/remoteSetupCommand.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,QA8B3B,CAAC"}
@@ -29,4 +29,3 @@ export const DEFAULT_REMOTE_SETUP_COMMAND = [
29
29
  'if [ -n "$required_npm" ]; then npm install --global "npm@$required_npm" --no-audit --no-fund && hash -r; fi',
30
30
  "if [ -x .claude/setup.sh ]; then ./.claude/setup.sh --deps-only; elif [ -f .claude/setup.sh ] && command -v bash >/dev/null 2>&1; then bash .claude/setup.sh --deps-only; else npm clean-install; fi",
31
31
  ].join(" && ");
32
- //# sourceMappingURL=remoteSetupCommand.js.map
@@ -4,3 +4,4 @@
4
4
  * shell.
5
5
  */
6
6
  export declare function shellSingleQuote(value: string): string;
7
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -6,4 +6,3 @@
6
6
  export function shellSingleQuote(value) {
7
7
  return `'${value.replaceAll("'", String.raw `'\''`)}'`;
8
8
  }
9
- //# sourceMappingURL=shell.js.map
@@ -66,3 +66,4 @@ export declare const spriteRemoteRunnerProvider: RemoteRunnerProvider;
66
66
  export declare function remoteConfigWithRunnerName(runnerName: string): RemoteRunnerConfig;
67
67
  export declare function getRemoteRunnerProvider(provider: RemoteRunnerProviderName): RemoteRunnerProvider;
68
68
  export {};
69
+ //# sourceMappingURL=spriteRemoteRunnerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spriteRemoteRunnerProvider.d.ts","sourceRoot":"","sources":["../../src/lib/spriteRemoteRunnerProvider.ts"],"names":[],"mappings":"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"}
@@ -19,9 +19,10 @@ function escapeRegExp(value) {
19
19
  function spriteFileArguments(files = []) {
20
20
  return files.flatMap((file) => ["--file", `${file.localPath}:${file.remotePath}`]);
21
21
  }
22
- function spriteExecArguments(arguments_) {
22
+ function spriteExecArguments(arguments_, options = {}) {
23
23
  const args = [
24
24
  "exec",
25
+ ...(options.isTty === true ? ["--tty"] : []),
25
26
  "-s",
26
27
  arguments_.config.runnerName,
27
28
  ...spriteFileArguments(arguments_.files),
@@ -33,18 +34,7 @@ function spriteExecArguments(arguments_) {
33
34
  return args;
34
35
  }
35
36
  function spriteTtyExecArguments(arguments_) {
36
- const args = [
37
- "exec",
38
- "--tty",
39
- "-s",
40
- arguments_.config.runnerName,
41
- ...spriteFileArguments(arguments_.files),
42
- ];
43
- if (arguments_.workingDirectory !== undefined) {
44
- args.push("--dir", arguments_.workingDirectory);
45
- }
46
- args.push("--", ...arguments_.remoteArguments);
47
- return args;
37
+ return spriteExecArguments(arguments_, { isTty: true });
48
38
  }
49
39
  async function runSprite(args, options) {
50
40
  if (options?.stdio === "inherit") {
@@ -270,4 +260,3 @@ export function getRemoteRunnerProvider(provider) {
270
260
  }
271
261
  throw new Error(`Unknown remote provider: ${JSON.stringify(provider)}`);
272
262
  }
273
- //# sourceMappingURL=spriteRemoteRunnerProvider.js.map
@@ -24,3 +24,4 @@ export type UsageByModel = Record<string, NormalizedUsage>;
24
24
  export declare const EXHAUSTED_USAGE: NormalizedUsage;
25
25
  export declare function getUsageByModel(config: ResolvedConfig, signal?: AbortSignal): Promise<UsageByModel>;
26
26
  export {};
27
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/lib/usage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAC;AA+BnE,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,eAK7B,CAAC;AAyGF,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA6BvB"}
@@ -139,4 +139,3 @@ export async function getUsageByModel(config, signal) {
139
139
  }
140
140
  return out;
141
141
  }
142
- //# sourceMappingURL=usage.js.map
@@ -11,3 +11,4 @@ export declare function readEnvironmentVariable(name: string): string | undefine
11
11
  export declare function getLinearClient(): LinearClient;
12
12
  export declare function errorMessage(error: unknown): string;
13
13
  export {};
14
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAOD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEzD;AAkBD,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKzC;AAED,KAAK,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;AAUpF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAWxF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxE;AAED,wBAAgB,eAAe,IAAI,YAAY,CAM9C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcnD"}
@@ -110,4 +110,3 @@ export function errorMessage(error) {
110
110
  return Object.prototype.toString.call(error);
111
111
  }
112
112
  }
113
- //# sourceMappingURL=util.js.map
@@ -55,3 +55,4 @@ export declare const workspaces: {
55
55
  close(config: ResolvedConfig, name: string, signal?: AbortSignal): Promise<void>;
56
56
  };
57
57
  export {};
58
+ //# sourceMappingURL=workspaces.d.ts.map