@clipboard-health/groundcrew 1.2.0 → 1.4.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
@@ -78,7 +78,35 @@ This installs the `crew` binary. `@clipboard-health/clearance` is pulled in tran
78
78
 
79
79
  Watch `${XDG_CACHE_HOME:-$HOME/.cache}/clearance/clearance.log` for `DENY` lines and add only the domains your agents actually need.
80
80
 
81
- 7. **Run.** Doctor first, then a dry run, then the real thing:
81
+ 7. **Optional: prepare a remote Sprite runner.** A Sprite is a remote Linux runner, so setup is intentionally explicit: choose which agent CLIs and MCP servers to authenticate. `--mcp` only adds the servers you name; it does not attempt to authenticate every MCP server visible in your Claude account.
82
+
83
+ ```bash
84
+ crew sprite setup crew-claude-1 \
85
+ --claude \
86
+ --codex \
87
+ --copy-local-codex-auth \
88
+ --github \
89
+ --git-name "Rocky Warren" \
90
+ --git-email "1085683+therockstorm@users.noreply.github.com" \
91
+ --mcp linear \
92
+ --mcp slack \
93
+ --checkpoint
94
+ ```
95
+
96
+ Known MCP aliases are `linear`, `slack`, and `notion`. For another HTTP MCP server, pass `--mcp name=https://example.com/mcp`. The command creates the Sprite if needed, prepares `~/dev`, configures Git, runs selected auth flows, adds selected MCP servers to Claude Code, and then opens Claude so you can run `/mcp` and authenticate only those selected servers. `--copy-local-codex-auth` copies `${CODEX_HOME:-$HOME/.codex}/auth.json` into `/home/sprite/.codex/auth.json` and then verifies `codex login status`; it never prints the file contents. Use `--skip-mcp-auth` when you only want to add MCP definitions, and run the `/mcp` step later.
97
+
98
+ Repo setup is separate from runner setup and should run after the ticket branch exists, immediately before launching an agent. It clones/fetches the repo in the Sprite, checks out the requested branch (creating it from the base branch when it does not exist on origin), forwards only build-time secrets for the dependency install, removes the temporary secret file, clears those env vars, and then exits. It reuses the same Node/npm bootstrap command as groundcrew's Docker Sandboxes path.
99
+
100
+ ```bash
101
+ op run --env-file "${XDG_CONFIG_HOME:-$HOME/.config}/groundcrew/op.env" -- \
102
+ crew sprite bootstrap crew-claude-1 core-utils --branch rocky-team-123
103
+ ```
104
+
105
+ By default bootstrap forwards any locally set `NPM_TOKEN` and `BUF_TOKEN`. Use repeated `--secret <ENV_NAME>` to require a specific set, or `--no-secrets` for public installs. Do not checkpoint after repo bootstrap; dependency state is branch-specific and should be refreshed per ticket.
106
+
107
+ To run a ticket remotely through the orchestrator or `crew run --ticket`, label it with `agent-remote` plus the agent label you want, for example `agent-claude` or `agent-codex`. `agent-remote` alone uses `models.default`. Groundcrew keeps cmux/tmux local, creates a per-ticket git worktree in the Sprite under `/home/sprite/groundcrew/worktrees`, and runs the agent with `sprite exec --tty`.
108
+
109
+ 8. **Run.** Doctor first, then a dry run, then the real thing:
82
110
 
83
111
  ```bash
84
112
  crew doctor
@@ -91,43 +119,50 @@ This installs the `crew` binary. `@clipboard-health/clearance` is pulled in tran
91
119
 
92
120
  Required fields are marked **required**; everything else has a default and can be omitted from `config.ts`.
93
121
 
94
- | Key | Default | What it does |
95
- | --------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
96
- | `linear.projectSlug` | **required** | Linear project URL slug (e.g. `ai-strategy-5152195762f3`). The trailing 12-char hex `slugId` is what's matched against Linear's API; the leading name keeps `config.ts` self-documenting and the lookup survives project renames. |
97
- | `linear.statuses.todo` | `"Todo"` | Status name picked up for new work. |
98
- | `linear.statuses.inProgress` | `"In Progress"` | Status set after a workspace is provisioned; counts toward `maximumInProgress`. |
99
- | `linear.statuses.done` | `"Done"` | Status that triggers worktree cleanup. |
100
- | `linear.statuses.terminal` | `["Done"]` | Additional status names treated as terminal for cleanup, board remaining counts, and blocker checks. The `done` status is always included. |
101
- | `git.remote` | `"origin"` | Remote used for `fetch` and as the worktree base ref. |
102
- | `git.defaultBranch` | `"main"` | Branch fetched from `git.remote` and used as the worktree base. |
103
- | `workspace.projectDir` | **required** | Parent dir for cloned repos. Sandbox-backed ticket worktrees live under each repo's `.sbx/` directory. |
104
- | `workspace.knownRepositories` | **required** | Repos searched for in ticket descriptions to infer where work belongs. A ticket labeled for groundcrew (`agent-*`) fails fast when no known repo appears; unlabeled tickets are ignored. |
105
- | `orchestrator.maximumInProgress` | `4` | Cap on tickets in `linear.statuses.inProgress` at once. |
106
- | `orchestrator.pollIntervalMilliseconds` | `120_000` | Poll interval in `--watch` mode. |
107
- | `orchestrator.sessionLimitPercentage` | `85` | Number in `(0, 100]`. A model whose codexbar session window exceeds this percentage is skipped that tick. |
108
- | `models.default` | `"claude"` | Tiebreak for `agent-any` resolution and fallback for explicit but unknown `agent-*` labels. Also used by `crew setup <TICKET>` for unlabeled tickets. `crew run` ignores unlabeled tickets and does not apply this default. Must exist in `models.definitions`. |
109
- | `models.isolation` | `"auto"` | Isolation strategy. `"auto"` picks Safehouse on macOS, else Docker Sandboxes when the model has a sandbox config. Safehouse or a model sandbox config is required; if neither is available, setup fails. Set `"none"` explicitly to run directly. |
110
- | `models.definitions` | `{ claude, codex }` | Agent definitions. Additive merge with shipped defaults. |
111
- | `models.definitions.<name>.cmd` | — | Shell command launched for the model. For sandbox-backed models this runs inside the persistent sandbox; otherwise it runs in the workspace. `{{worktree}}` and `{{sandbox}}` are replaced before launch. |
112
- | `models.definitions.<name>.color` | — | Color for the workspace status pill (cmux only; tmux silently drops it). |
113
- | `models.definitions.<name>.sandbox` | `{ agent }` | Optional Docker Sandboxes backing. Defaults set `claude` → `agent: "claude"` and `codex` → `agent: "codex"`. Set `sandbox: false` on an override to run the command outside Docker Sandboxes. |
114
- | `models.definitions.<name>.usage` | optional | If set, codexbar usage is fetched for this model and gated by `sessionLimitPercentage`. Omit to never gate. When `usage.codexbar.source` is omitted, groundcrew uses `auto` on macOS and `cli` elsewhere. |
115
- | `prompts.initial` | (template) | First message sent to the agent. Placeholders: `{{ticket}}`, `{{worktree}}`, `{{title}}`, `{{description}}`. |
116
- | `workspaceKind` | `"auto"` | Terminal session manager. `"auto"` picks `cmux` when on PATH, else `tmux`. Set to `"cmux"` or `"tmux"` to fail loudly when the chosen backend is missing. tmux windows live in a dedicated `groundcrew` session. |
117
- | `logging.file` | XDG state path | Append-mode log file destination. `log()` / `logEvent()` tee here in addition to stdout, so a vanished workspace doesn't take the evidence with it. Defaults to `${XDG_STATE_HOME:-$HOME/.local/state}/groundcrew/groundcrew.log`. |
118
-
119
- The branch prefix (`<prefix>-<TICKET>`) is derived from your OS username (`os.userInfo().username`), not configured. Agent selection looks for a top-level Linear label named `agent-<model>` (e.g. `agent-claude`, `agent-codex`). **`crew run` only fetches tickets with an `agent-*` label** — the GraphQL query filters them server-side, so unlabeled tickets are never returned by Linear's API and do not appear in the rendered board. Use `crew setup <TICKET>` to provision an unlabeled ticket on demand (manual setup falls back to `models.default`). The reserved label `agent-any` routes the ticket to the configured model with the most available session capacity (lowest codexbar session-used percent), skipping any model already over `sessionLimitPercentage`. With no usage data, `agent-any` resolves to `models.default`. The name `any` cannot be used in `models.definitions`. Todo tickets blocked by Linear issues that are not in `linear.statuses.terminal` are skipped until their blockers reach a terminal status.
122
+ | Key | Default | What it does |
123
+ | --------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124
+ | `linear.projectSlug` | **required** | Linear project URL slug (e.g. `ai-strategy-5152195762f3`). The trailing 12-char hex `slugId` is what's matched against Linear's API; the leading name keeps `config.ts` self-documenting and the lookup survives project renames. |
125
+ | `linear.statuses.todo` | `"Todo"` | Status name picked up for new work. |
126
+ | `linear.statuses.inProgress` | `"In Progress"` | Status set after a workspace is provisioned; counts toward `maximumInProgress`. |
127
+ | `linear.statuses.done` | `"Done"` | Status that triggers worktree cleanup. |
128
+ | `linear.statuses.terminal` | `["Done"]` | Additional status names treated as terminal for cleanup, board remaining counts, and blocker checks. The `done` status is always included. |
129
+ | `git.remote` | `"origin"` | Remote used for `fetch` and as the worktree base ref. |
130
+ | `git.defaultBranch` | `"main"` | Branch fetched from `git.remote` and used as the worktree base. |
131
+ | `workspace.projectDir` | **required** | Parent dir for cloned repos. Sandbox-backed ticket worktrees live under each repo's `.sbx/` directory. |
132
+ | `workspace.knownRepositories` | **required** | Repos searched for in ticket descriptions to infer where work belongs. A ticket labeled for groundcrew (`agent-*`) fails fast when no known repo appears; unlabeled tickets are ignored. |
133
+ | `orchestrator.maximumInProgress` | `4` | Cap on tickets in `linear.statuses.inProgress` at once. |
134
+ | `orchestrator.pollIntervalMilliseconds` | `120_000` | Poll interval in `--watch` mode. |
135
+ | `orchestrator.sessionLimitPercentage` | `85` | Number in `(0, 100]`. A model whose codexbar session window exceeds this percentage is skipped that tick. |
136
+ | `models.default` | `"claude"` | Tiebreak for `agent-any` resolution and fallback for explicit but unknown `agent-*` labels. Also used by `crew setup <TICKET>` for unlabeled tickets. `crew run` ignores unlabeled tickets and does not apply this default. Must exist in `models.definitions`. |
137
+ | `models.isolation` | `"auto"` | Isolation strategy. `"auto"` picks Safehouse on macOS, else Docker Sandboxes when the model has a sandbox config. Safehouse or a model sandbox config is required; if neither is available, setup fails. Set `"none"` explicitly to run directly. |
138
+ | `models.definitions` | `{ claude, codex }` | Agent definitions. Additive merge with shipped defaults. |
139
+ | `models.definitions.<name>.cmd` | — | Shell command launched for the model. For sandbox-backed models this runs inside the persistent sandbox; otherwise it runs in the workspace. `{{worktree}}` and `{{sandbox}}` are replaced before launch. |
140
+ | `models.definitions.<name>.color` | — | Color for the workspace status pill (cmux only; tmux silently drops it). |
141
+ | `models.definitions.<name>.sandbox` | `{ agent }` | Optional Docker Sandboxes backing. Defaults set `claude` → `agent: "claude"` and `codex` → `agent: "codex"`. Set `sandbox: false` on an override to run the command outside Docker Sandboxes. |
142
+ | `models.definitions.<name>.usage` | optional | If set, codexbar usage is fetched for this model and gated by `sessionLimitPercentage`. Omit to never gate. When `usage.codexbar.source` is omitted, groundcrew uses `auto` on macOS and `cli` elsewhere. |
143
+ | `prompts.initial` | (template) | First message sent to the agent. Placeholders: `{{ticket}}`, `{{worktree}}`, `{{title}}`, `{{description}}`. |
144
+ | `workspaceKind` | `"auto"` | Terminal session manager. `"auto"` picks `cmux` when on PATH, else `tmux`. Set to `"cmux"` or `"tmux"` to fail loudly when the chosen backend is missing. tmux windows live in a dedicated `groundcrew` session. |
145
+ | `remote.sprite.spriteName` | `"crew-claude-1"` | Sprite used for tickets labeled `agent-remote`. |
146
+ | `remote.sprite.owner` | `"ClipboardHealth"` | GitHub owner used when cloning bare repository names inside the Sprite. |
147
+ | `remote.sprite.repoRoot` | `"/home/sprite/dev"` | Shared clone root inside the Sprite. |
148
+ | `remote.sprite.worktreeRoot` | `"/home/sprite/groundcrew/worktrees"` | Per-ticket remote worktree root inside the Sprite. |
149
+ | `remote.sprite.secretNames` | `["NPM_TOKEN", "BUF_TOKEN"]` | Build-only env vars that may be uploaded for remote dependency setup, then unset before the agent process starts. |
150
+ | `logging.file` | XDG state path | Append-mode log file destination. `log()` / `logEvent()` tee here in addition to stdout, so a vanished workspace doesn't take the evidence with it. Defaults to `${XDG_STATE_HOME:-$HOME/.local/state}/groundcrew/groundcrew.log`. |
151
+
152
+ The branch prefix (`<prefix>-<TICKET>`) is derived from your OS username (`os.userInfo().username`), not configured. Agent selection looks for a top-level Linear label named `agent-<model>` (e.g. `agent-claude`, `agent-codex`). Add `agent-remote` to run that ticket in the configured Sprite runner instead of locally; `agent-remote` is a modifier label, not a model. **`crew run` only fetches tickets with an `agent-*` label** — the GraphQL query filters them server-side, so unlabeled tickets are never returned by Linear's API and do not appear in the rendered board. Use `crew setup <TICKET>` to provision an unlabeled ticket on demand (manual setup falls back to `models.default`). The reserved label `agent-any` routes the ticket to the configured model with the most available session capacity (lowest codexbar session-used percent), skipping any model already over `sessionLimitPercentage`. With no usage data, `agent-any` resolves to `models.default`. The name `any` cannot be used in `models.definitions`. Todo tickets blocked by Linear issues that are not in `linear.statuses.terminal` are skipped until their blockers reach a terminal status.
120
153
 
121
154
  ## Manual commands
122
155
 
123
156
  ```bash
124
157
  crew sandbox auth <repo> --model claude
125
158
  crew sandbox auth <repo> --model codex
159
+ crew sprite setup crew-claude-1 --claude --codex --copy-local-codex-auth --github --mcp linear --checkpoint
160
+ crew sprite bootstrap crew-claude-1 core-utils --branch rocky-team-123
126
161
  crew run --ticket <TICKET>
127
162
  crew cleanup <TICKET>
128
163
  ```
129
164
 
130
- `crew run --ticket <TICKET>` provisions a single ticket the same way the orchestrator would: the repo is parsed from the ticket's Linear description and the model comes from the ticket's `agent-*` label. If the description does not mention a repo from `workspace.knownRepositories`, setup fails before provisioning. `--watch` and `--ticket` are mutually exclusive — `--watch` drives the orchestrator loop; `--ticket` provisions one ticket and exits. `crew cleanup <TICKET>` resolves to every worktree carrying that ticket id (host and sandbox kinds, across repos) and tears them all down. To inspect codexbar session windows directly, run `codexbar usage`; the orchestrator already gates on this internally via `orchestrator.sessionLimitPercentage`.
165
+ `crew run --ticket <TICKET>` provisions a single ticket the same way the orchestrator would: the repo is parsed from the ticket's Linear description, the model comes from the ticket's `agent-*` label, and `agent-remote` is honored. If the description does not mention a repo from `workspace.knownRepositories`, setup fails before provisioning. `--watch` and `--ticket` are mutually exclusive — `--watch` drives the orchestrator loop; `--ticket` provisions one ticket and exits. `crew cleanup <TICKET>` resolves to every worktree carrying that ticket id (host, sandbox, and Sprite kinds, across repos) and tears them all down. To inspect remote sessions directly, run `sprite sessions list -s crew-claude-1`; if cleanup cannot remove a remote worktree because the agent is still running, stop that session with `sprite sessions kill -s crew-claude-1 <session-id>` and retry cleanup. To inspect codexbar session windows directly, run `codexbar usage`; the orchestrator already gates on this internally via `orchestrator.sessionLimitPercentage`.
131
166
 
132
167
  ## Gotchas
133
168
 
@@ -135,6 +170,8 @@ crew cleanup <TICKET>
135
170
  - **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.
136
171
  - **Authenticate before first ticket setup.** Run `crew sandbox auth <repo> --model <name>` before `crew run` for a repo/model. That first run carries no ticket prompt, so a required OAuth `/login` cannot consume task context.
137
172
  - **Sandbox cleanup is intentionally conservative.** `crew cleanup` removes the per-ticket worktree and branch, but keeps the persistent sandbox so OAuth sessions, installed packages, and agent config survive later tickets. Use `sbx ls` and `sbx rm --force <name>` when you intentionally want to delete that persisted sandbox state.
173
+ - **Sprite cleanup is also conservative.** `crew cleanup` removes tracked remote worktrees and branches, but it does not kill active Sprite sessions. Use `sprite sessions list -s <sprite>` and `sprite sessions kill -s <sprite> <session-id>` when Git reports a worktree is busy.
174
+ - **Codex auth in Sprites may need auth-file copy.** If `crew sprite setup <sprite> --codex` finishes interactive login but `codex login status` still fails inside the Sprite, rerun with `--copy-local-codex-auth` after confirming local Codex auth works.
138
175
  - **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.
139
176
  - **Status names matter.** If your team uses `Started` instead of `In Progress`, set `linear.statuses.inProgress = "Started"`.
140
177
  - **Leaf-only.** Parent issues with children are ignored — sub-issues are the work items.
@@ -11,7 +11,6 @@
11
11
  ab.chatgpt.com
12
12
  api.anthropic.com
13
13
  api.openai.com
14
- auth.openai.com
15
14
  chatgpt.com
16
15
  platform.claude.com
17
16
 
@@ -19,20 +18,19 @@ platform.claude.com
19
18
  api.linear.app
20
19
  api.notion.com
21
20
  api.slack.com
21
+ developers.notion.com
22
22
  linear.app
23
23
  mcp.linear.app
24
24
  mcp.notion.com
25
25
  mcp.slack.com
26
26
  slack.com
27
27
 
28
- # Datadog (logs/metrics queries)
29
- *.datadoghq.com
28
+ # Datadog (logs/metrics queries). No wildcard — blocks http-intake.logs.*.
30
29
  api.datadoghq.com
31
30
  app.datadoghq.com
32
31
  datadoghq.com
33
32
 
34
33
  # GitHub + GHA artifact storage (Azure blobs)
35
- *.githubusercontent.com
36
34
  api.github.com
37
35
  cafe.github.com
38
36
  github.com
@@ -56,6 +54,8 @@ productionresultssa16.blob.core.windows.net
56
54
  productionresultssa17.blob.core.windows.net
57
55
  productionresultssa18.blob.core.windows.net
58
56
  productionresultssa19.blob.core.windows.net
57
+ raw.githubusercontent.com
58
+ results-receiver.actions.githubusercontent.com
59
59
 
60
60
  # npm registry
61
61
  api.npmjs.org
@@ -68,5 +68,7 @@ formulae.brew.sh
68
68
  hub.docker.com
69
69
  index.docker.io
70
70
  nx.dev
71
+ sourcegraph.clipboardhealth.com
72
+ sourcegraph.clipboardhealth.io
71
73
  sourcegraph.com
72
74
  vitest.dev
package/configExample.ts CHANGED
@@ -77,6 +77,22 @@ export const config: Config = {
77
77
  // // session and lose status-pill painting (cmux-only feature).
78
78
  // workspaceKind: "auto",
79
79
  //
80
+ // remote: {
81
+ // sprite: {
82
+ // // Tickets labeled `agent-remote` run through this shared Sprite.
83
+ // spriteName: "crew-claude-1",
84
+ // // Bare repository names are cloned as `${owner}/${repo}` inside the Sprite.
85
+ // owner: "ClipboardHealth",
86
+ // // Absolute paths inside the Sprite. Groundcrew creates one shared clone
87
+ // // per repo and one remote git worktree per ticket.
88
+ // repoRoot: "/home/sprite/dev",
89
+ // worktreeRoot: "/home/sprite/groundcrew/worktrees",
90
+ // // Build-only env vars forwarded for remote dependency setup, then
91
+ // // unset before the agent process starts.
92
+ // secretNames: ["NPM_TOKEN", "BUF_TOKEN"],
93
+ // },
94
+ // },
95
+ //
80
96
  // logging: {
81
97
  // // Append-mode log file destination. `log()` / `logEvent()` tee here
82
98
  // // in addition to stdout, so a vanished workspace doesn't take the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipboard-health/groundcrew",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Linear-driven orchestrator that launches AI coding agents in isolated git worktrees, with workspace lifecycle, sandbox auth, and usage tracking.",
5
5
  "keywords": [
6
6
  "agent",
package/src/cli.js CHANGED
@@ -3,6 +3,7 @@ import { doctor } from "./commands/doctor.js";
3
3
  import { orchestrate } from "./commands/orchestrator.js";
4
4
  import { sandboxAuthCli } from "./commands/sandboxAuth.js";
5
5
  import { setupWorkspaceCli } from "./commands/setupWorkspace.js";
6
+ import { spriteCli } from "./commands/spriteSetup.js";
6
7
  import { errorMessage, writeError, writeOutput } from "./lib/util.js";
7
8
  async function runCli(argv) {
8
9
  let watch = false;
@@ -63,6 +64,12 @@ const SUBCOMMANDS = {
63
64
  usage: "auth <repo> [--model <name>]",
64
65
  invoke: sandboxAuthCli,
65
66
  },
67
+ sprite: {
68
+ summary: "Create, authenticate, and bootstrap a remote Sprite runner",
69
+ usage: "setup <sprite-name> [--claude] [--github] [--mcp <alias|name=url>] [--checkpoint]\n" +
70
+ " → crew sprite bootstrap <sprite-name> <repo> [--branch <branch>]",
71
+ invoke: spriteCli,
72
+ },
66
73
  };
67
74
  function printHelp() {
68
75
  const width = Math.max(...Object.keys(SUBCOMMANDS).map((key) => key.length));
package/src/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../packages/groundcrew/src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../packages/groundcrew/src/cli.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,7 @@ export function createDispatcher(deps) {
93
93
  ticket: verdict.issue.id,
94
94
  blockers: verdict.blockers,
95
95
  model: verdict.model,
96
+ runner: verdict.issue.runner,
96
97
  });
97
98
  }
98
99
  async function startEligibleIssue(start, dryRun, signal) {
@@ -103,13 +104,14 @@ export function createDispatcher(deps) {
103
104
  if (dryRun) {
104
105
  log(
105
106
  /* v8 ignore next @preserve -- classifyTodo forces recovery=false in dry-run, so the resume branch can't fire here */
106
- `[dry-run] Would ${recovery ? "resume" : "start"} ${issue.id} in ${issue.repository} (${issue.model})`);
107
+ `[dry-run] Would ${recovery ? "resume" : "start"} ${issue.id} in ${issue.repository} (${issue.model}, ${issue.runner})`);
107
108
  logEvent("dispatch", {
108
109
  outcome: "skipped",
109
110
  reason: "dry_run",
110
111
  ticket: issue.id,
111
112
  model: issue.model,
112
113
  repository: issue.repository,
114
+ runner: issue.runner,
113
115
  });
114
116
  return;
115
117
  }
@@ -122,6 +124,7 @@ export function createDispatcher(deps) {
122
124
  repository: issue.repository,
123
125
  ticket: issue.id,
124
126
  model: issue.model,
127
+ runner: issue.runner,
125
128
  };
126
129
  await (signal === undefined
127
130
  ? setupWorkspace(config, setupOptions)
@@ -133,6 +136,7 @@ export function createDispatcher(deps) {
133
136
  ticket: issue.id,
134
137
  model: issue.model,
135
138
  repository: issue.repository,
139
+ runner: issue.runner,
136
140
  });
137
141
  }
138
142
  catch (error) {
@@ -142,6 +146,7 @@ export function createDispatcher(deps) {
142
146
  ticket: issue.id,
143
147
  model: issue.model,
144
148
  repository: issue.repository,
149
+ runner: issue.runner,
145
150
  error: errorMessage(error),
146
151
  });
147
152
  }
@@ -214,7 +219,7 @@ export function createDispatcher(deps) {
214
219
  log(`${slots} slot(s) available, starting ${starts.length} ticket(s): ${starts.map(({ issue }) => `${issue.id}(${issue.model})`).join(", ")}`);
215
220
  logEvent("dispatch", {
216
221
  outcome: "starting",
217
- tickets: starts.map(({ issue }) => `${issue.id}:${issue.model}`),
222
+ tickets: starts.map(({ issue }) => `${issue.id}:${issue.model}:${issue.runner}`),
218
223
  });
219
224
  for (const start of starts) {
220
225
  // oxlint-disable-next-line no-await-in-loop -- one workspace at a time avoids racing on git
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../packages/groundcrew/src/commands/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../packages/groundcrew/src/commands/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ResolvedConfig } from "../lib/config.ts";
1
+ import { type ResolvedConfig, type WorkspaceRunner } from "../lib/config.ts";
2
2
  interface TicketDetails {
3
3
  title: string;
4
4
  description: string;
@@ -7,6 +7,7 @@ export interface SetupWorkspaceOptions {
7
7
  ticket: string;
8
8
  repository: string;
9
9
  model: string;
10
+ runner?: WorkspaceRunner;
10
11
  /** When provided, skip the Linear lookup for prompt-template fields. */
11
12
  details?: TicketDetails;
12
13
  }
@@ -3,13 +3,13 @@ import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { ensureClearance } from "@clipboard-health/clearance";
5
5
  import { fetchResolvedIssue } from "../lib/boardSource.js";
6
- import { loadConfig } from "../lib/config.js";
6
+ import { BUILD_SECRET_NAMES, loadConfig, } from "../lib/config.js";
7
7
  import { detectHostCapabilities } from "../lib/host.js";
8
8
  import { resolveIsolationStrategy } from "../lib/isolation.js";
9
- import { BUILD_SECRET_NAMES, buildLaunchCommand, shellSingleQuote } from "../lib/launchCommand.js";
9
+ import { buildLaunchCommand, buildSpriteLaunchCommand, shellSingleQuote, } from "../lib/launchCommand.js";
10
10
  import { errorMessage, getLinearClient, log, readEnvironmentVariable } from "../lib/util.js";
11
11
  import { workspaces } from "../lib/workspaces.js";
12
- import { worktrees } from "../lib/worktrees.js";
12
+ import { repoDirFor, worktrees } from "../lib/worktrees.js";
13
13
  async function fetchTicket(ticket) {
14
14
  const client = getLinearClient();
15
15
  const issue = await client.issue(ticket.toUpperCase());
@@ -32,9 +32,9 @@ function renderPrompt(template, variables) {
32
32
  * dir is `rm -rf`'d by the launch command (and rollback path), so cleanup
33
33
  * is already handled.
34
34
  */
35
- function stageBuildSecrets(promptDir) {
35
+ function stageBuildSecrets(promptDir, secretNames = BUILD_SECRET_NAMES) {
36
36
  const lines = [];
37
- for (const name of BUILD_SECRET_NAMES) {
37
+ for (const name of secretNames) {
38
38
  const value = readEnvironmentVariable(name);
39
39
  if (value === undefined || value.length === 0) {
40
40
  continue;
@@ -50,11 +50,20 @@ function stageBuildSecrets(promptDir) {
50
50
  }
51
51
  export async function setupWorkspace(config, options, runOptions = {}) {
52
52
  const { ticket, repository, model } = options;
53
+ const runner = options.runner ?? "local";
53
54
  const { signal } = runOptions;
54
55
  const definition = config.models.definitions[model];
55
56
  if (!definition) {
56
57
  throw new Error(`Unknown model: ${model}`);
57
58
  }
59
+ if (runner === "sprite") {
60
+ await setupSpriteWorkspace({
61
+ config,
62
+ options: { ...options, runner },
63
+ ...(signal === undefined ? {} : { signal }),
64
+ });
65
+ return;
66
+ }
58
67
  const { resolved: strategy, reason } = resolveIsolationStrategy({
59
68
  config,
60
69
  model,
@@ -64,7 +73,7 @@ export async function setupWorkspace(config, options, runOptions = {}) {
64
73
  if (strategy === "safehouse") {
65
74
  await ensureClearance({ logger: log });
66
75
  }
67
- const spec = { repository, ticket, model, strategy };
76
+ const spec = { repository, ticket, model, strategy, runner };
68
77
  const created = signal === undefined
69
78
  ? await worktrees.create(config, spec)
70
79
  : await worktrees.create(config, spec, signal);
@@ -123,6 +132,68 @@ export async function setupWorkspace(config, options, runOptions = {}) {
123
132
  throw error;
124
133
  }
125
134
  }
135
+ async function resolveTicketDetails(options) {
136
+ if (options.details !== undefined) {
137
+ return options.details;
138
+ }
139
+ log(`Fetching ${options.ticket} from Linear...`);
140
+ return await fetchTicket(options.ticket);
141
+ }
142
+ async function setupSpriteWorkspace(arguments_) {
143
+ const { config, options, signal } = arguments_;
144
+ const { ticket, repository, model } = options;
145
+ const definition = config.models.definitions[model];
146
+ /* v8 ignore next 3 @preserve -- setupWorkspace validates the model before routing here */
147
+ if (definition === undefined) {
148
+ throw new Error(`Unknown model: ${model}`);
149
+ }
150
+ log(`Workspace runner: sprite (${config.remote.sprite.spriteName})`);
151
+ const spec = { repository, ticket, model, strategy: "none", runner: "sprite" };
152
+ const created = signal === undefined
153
+ ? await worktrees.create(config, spec)
154
+ : await worktrees.create(config, spec, signal);
155
+ const { branchName, dir: remoteWorktreeDir } = created;
156
+ const worktreeName = `${repository}-${ticket}`;
157
+ let promptDir;
158
+ try {
159
+ const ticketDetails = await resolveTicketDetails(options);
160
+ promptDir = mkdtempSync(join(tmpdir(), `groundcrew-${ticket}-`));
161
+ const promptFile = join(promptDir, "prompt.txt");
162
+ writeFileSync(promptFile, renderPrompt(config.prompts.initial, {
163
+ ticket,
164
+ worktree: worktreeName,
165
+ title: ticketDetails.title,
166
+ description: ticketDetails.description,
167
+ }));
168
+ const secretsFile = stageBuildSecrets(promptDir, config.remote.sprite.secretNames);
169
+ const remotePromptFile = `/tmp/groundcrew-${ticket}-prompt.txt`;
170
+ const remoteSecretsFile = secretsFile === undefined ? undefined : `/tmp/groundcrew-${ticket}-secrets.env`;
171
+ const launchCmd = buildSpriteLaunchCommand({
172
+ definition,
173
+ spriteName: config.remote.sprite.spriteName,
174
+ promptFile,
175
+ remotePromptFile,
176
+ worktreeDir: remoteWorktreeDir,
177
+ secretNames: config.remote.sprite.secretNames,
178
+ ...(secretsFile === undefined ? {} : { secretsFile, remoteSecretsFile }),
179
+ });
180
+ log("Opening workspace...");
181
+ await workspaces.open(config, {
182
+ name: ticket,
183
+ cwd: repoDirFor(config, repository),
184
+ command: launchCmd,
185
+ status: { text: `${model}:remote`, color: definition.color, icon: "sparkle" },
186
+ }, signal);
187
+ log(`Workspace "${ticket}" launched (${model}, sprite)`);
188
+ log(` Worktree: ${remoteWorktreeDir}`);
189
+ log(` Branch: ${branchName}`);
190
+ log(` Sprite: ${config.remote.sprite.spriteName}`);
191
+ }
192
+ catch (error) {
193
+ await rollbackWorktree({ config, entry: created, promptDir });
194
+ throw error;
195
+ }
196
+ }
126
197
  async function rollbackWorktree(arguments_) {
127
198
  log(`Setup failed; rolling back worktree ${arguments_.entry.repository}-${arguments_.entry.ticket}...`);
128
199
  let result;
@@ -163,15 +234,16 @@ export async function setupWorkspaceCli(ticket, options = {}) {
163
234
  const config = await loadConfig();
164
235
  const client = getLinearClient();
165
236
  const resolved = await fetchResolvedIssue({ client, config, ticket });
166
- log(`Resolved ${ticket}: repository=${resolved.repository}, model=${resolved.model}`);
237
+ log(`Resolved ${ticket}: repository=${resolved.repository}, model=${resolved.model}, runner=${resolved.runner}`);
167
238
  if (options.dryRun === true) {
168
- log(`[dry-run] Would launch ${ticket} in ${resolved.repository} (${resolved.model})`);
239
+ log(`[dry-run] Would launch ${ticket} in ${resolved.repository} (${resolved.model}, ${resolved.runner})`);
169
240
  return;
170
241
  }
171
242
  await setupWorkspace(config, {
172
243
  ticket: ticket.toLowerCase(),
173
244
  repository: resolved.repository,
174
245
  model: resolved.model,
246
+ runner: resolved.runner,
175
247
  details: { title: resolved.title, description: resolved.description },
176
248
  });
177
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setupWorkspace.js","sourceRoot":"","sources":["../../../../../packages/groundcrew/src/commands/setupWorkspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setupWorkspace.js","sourceRoot":"","sources":["../../../../../packages/groundcrew/src/commands/setupWorkspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface McpServer {
2
+ name: string;
3
+ url: string;
4
+ }
5
+ export interface SpriteSetupOptions {
6
+ spriteName: string;
7
+ shouldCreate: boolean;
8
+ shouldAuthenticateClaude: boolean;
9
+ shouldAuthenticateCodex: boolean;
10
+ shouldCopyLocalCodexAuth?: boolean;
11
+ shouldAuthenticateGithub: boolean;
12
+ shouldAuthenticateMcp: boolean;
13
+ shouldCheckpoint: boolean;
14
+ checkpointComment: string;
15
+ gitName?: string;
16
+ gitEmail?: string;
17
+ mcpServers: McpServer[];
18
+ }
19
+ export interface SpriteBootstrapOptions {
20
+ spriteName: string;
21
+ repository: string;
22
+ owner: string;
23
+ baseBranch: string;
24
+ secretNames: string[];
25
+ shouldRequireSelectedSecrets: boolean;
26
+ shouldUseSecrets: boolean;
27
+ branchName?: string;
28
+ }
29
+ export declare function bootstrapSpriteRepository(options: SpriteBootstrapOptions): Promise<void>;
30
+ export declare function setupSprite(options: SpriteSetupOptions): Promise<void>;
31
+ export declare function spriteCli(argv: string[]): Promise<void>;