@cluesmith/codev 3.0.0-rc.0 → 3.0.0-rc.10
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/LICENSE +201 -0
- package/bin/af.js +2 -2
- package/bin/afx.js +8 -0
- package/bin/consult.js +2 -1
- package/bin/team.js +8 -0
- package/{dashboard/dist/assets/index-nr0cXxtf.css → dashboard-dist/assets/index-Bs8I7N2s.css} +1 -1
- package/dashboard-dist/assets/index-CkNo2z6t.js +195 -0
- package/dashboard-dist/assets/index-CkNo2z6t.js.map +1 -0
- package/dashboard-dist/dist/assets/index-Bs8I7N2s.css +32 -0
- package/dashboard-dist/dist/assets/index-CkNo2z6t.js +195 -0
- package/dashboard-dist/dist/assets/index-CkNo2z6t.js.map +1 -0
- package/{dashboard → dashboard-dist}/dist/index.html +2 -2
- package/dashboard-dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +21 -13
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +4 -4
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +23 -12
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +8 -8
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/bench.d.ts +1 -1
- package/dist/agent-farm/commands/bench.js +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +10 -5
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/cron.js +1 -1
- package/dist/agent-farm/commands/cron.js.map +1 -1
- package/dist/agent-farm/commands/db.d.ts +3 -3
- package/dist/agent-farm/commands/db.js +4 -4
- package/dist/agent-farm/commands/db.js.map +1 -1
- package/dist/agent-farm/commands/open.js +2 -2
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/rename.js +1 -1
- package/dist/agent-farm/commands/rename.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +4 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +8 -5
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.js +3 -3
- package/dist/agent-farm/commands/shell.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +2 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +1 -1
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +49 -10
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +357 -49
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +6 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +182 -74
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +48 -3
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/team-update.d.ts +1 -1
- package/dist/agent-farm/commands/team-update.d.ts.map +1 -1
- package/dist/agent-farm/commands/team-update.js +8 -5
- package/dist/agent-farm/commands/team-update.js.map +1 -1
- package/dist/agent-farm/commands/team.d.ts +7 -1
- package/dist/agent-farm/commands/team.d.ts.map +1 -1
- package/dist/agent-farm/commands/team.js +36 -4
- package/dist/agent-farm/commands/team.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
- package/dist/agent-farm/commands/tower-cloud.js +3 -3
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts +1 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +54 -3
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.js +2 -2
- package/dist/agent-farm/lib/cloud-config.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +6 -230
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +6 -293
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +1 -1
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +24 -0
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
- package/dist/agent-farm/servers/message-write.js +63 -0
- package/dist/agent-farm/servers/message-write.js.map +1 -0
- package/dist/agent-farm/servers/overview.d.ts +10 -8
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +78 -38
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
- package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
- package/dist/agent-farm/servers/send-buffer.js +7 -4
- package/dist/agent-farm/servers/send-buffer.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +4 -5
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +24 -15
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +9 -16
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +15 -1
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +64 -36
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +2 -2
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +13 -7
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/types.d.ts +13 -0
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +11 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +39 -17
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +85 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -0
- package/dist/agent-farm/utils/harness.js +212 -0
- package/dist/agent-farm/utils/harness.js.map +1 -0
- package/dist/agent-farm/utils/roles.d.ts +11 -4
- package/dist/agent-farm/utils/roles.d.ts.map +1 -1
- package/dist/agent-farm/utils/roles.js +21 -6
- package/dist/agent-farm/utils/roles.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +118 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +16 -45
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +6 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +231 -183
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +121 -31
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +13 -43
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/artifacts.d.ts +69 -0
- package/dist/commands/porch/artifacts.d.ts.map +1 -0
- package/dist/commands/porch/artifacts.js +368 -0
- package/dist/commands/porch/artifacts.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +14 -3
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +150 -4
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/config.d.ts +6 -9
- package/dist/commands/porch/config.d.ts.map +1 -1
- package/dist/commands/porch/config.js +12 -37
- package/dist/commands/porch/config.js.map +1 -1
- package/dist/commands/porch/index.d.ts +12 -7
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +273 -82
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +142 -75
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/notify.d.ts +2 -2
- package/dist/commands/porch/notify.js +5 -5
- package/dist/commands/porch/notify.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +2 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +34 -38
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +4 -3
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +21 -21
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/state.d.ts +27 -2
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +100 -9
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +10 -2
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/sync.d.ts +26 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +207 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +15 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +159 -202
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +96 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +165 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +100 -0
- package/dist/lib/forge-contracts.d.ts.map +1 -0
- package/dist/lib/forge-contracts.js +35 -0
- package/dist/lib/forge-contracts.js.map +1 -0
- package/dist/lib/forge.d.ts +102 -0
- package/dist/lib/forge.d.ts.map +1 -0
- package/dist/lib/forge.js +376 -0
- package/dist/lib/forge.js.map +1 -0
- package/dist/lib/github.d.ts +68 -60
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +160 -169
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/skeleton.d.ts +15 -5
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +82 -7
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/team-github.d.ts +7 -3
- package/dist/lib/team-github.d.ts.map +1 -1
- package/dist/lib/team-github.js +29 -19
- package/dist/lib/team-github.js.map +1 -1
- package/dist/lib/team.d.ts.map +1 -1
- package/dist/lib/team.js +4 -1
- package/dist/lib/team.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +2 -0
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/ws-protocol.d.ts +10 -8
- package/dist/terminal/ws-protocol.d.ts.map +1 -1
- package/dist/terminal/ws-protocol.js +3 -0
- package/dist/terminal/ws-protocol.js.map +1 -1
- package/package.json +28 -24
- package/scripts/forge/gitea/auth-status.sh +3 -0
- package/scripts/forge/gitea/issue-comment.sh +3 -0
- package/scripts/forge/gitea/issue-list.sh +3 -0
- package/scripts/forge/gitea/issue-view.sh +3 -0
- package/scripts/forge/gitea/pr-exists.sh +6 -0
- package/scripts/forge/gitea/pr-list.sh +3 -0
- package/scripts/forge/gitea/pr-merge.sh +3 -0
- package/scripts/forge/gitea/pr-view.sh +3 -0
- package/scripts/forge/gitea/recently-closed.sh +3 -0
- package/scripts/forge/gitea/recently-merged.sh +3 -0
- package/scripts/forge/gitea/repo-archive.sh +11 -0
- package/scripts/forge/gitea/user-identity.sh +3 -0
- package/scripts/forge/github/auth-status.sh +4 -0
- package/scripts/forge/github/issue-comment.sh +5 -0
- package/scripts/forge/github/issue-list.sh +4 -0
- package/scripts/forge/github/issue-view.sh +5 -0
- package/scripts/forge/github/on-it-timestamps.sh +8 -0
- package/scripts/forge/github/pr-diff.sh +10 -0
- package/scripts/forge/github/pr-exists.sh +7 -0
- package/scripts/forge/github/pr-list.sh +4 -0
- package/scripts/forge/github/pr-merge.sh +5 -0
- package/scripts/forge/github/pr-search.sh +5 -0
- package/scripts/forge/github/pr-view.sh +11 -0
- package/scripts/forge/github/recently-closed.sh +15 -0
- package/scripts/forge/github/recently-merged.sh +15 -0
- package/scripts/forge/github/repo-archive.sh +10 -0
- package/scripts/forge/github/team-activity.sh +5 -0
- package/scripts/forge/github/user-identity.sh +4 -0
- package/scripts/forge/gitlab/auth-status.sh +3 -0
- package/scripts/forge/gitlab/issue-comment.sh +3 -0
- package/scripts/forge/gitlab/issue-list.sh +3 -0
- package/scripts/forge/gitlab/issue-view.sh +3 -0
- package/scripts/forge/gitlab/pr-diff.sh +3 -0
- package/scripts/forge/gitlab/pr-exists.sh +5 -0
- package/scripts/forge/gitlab/pr-list.sh +3 -0
- package/scripts/forge/gitlab/pr-merge.sh +3 -0
- package/scripts/forge/gitlab/pr-search.sh +3 -0
- package/scripts/forge/gitlab/pr-view.sh +3 -0
- package/scripts/forge/gitlab/recently-closed.sh +3 -0
- package/scripts/forge/gitlab/recently-merged.sh +3 -0
- package/scripts/forge/gitlab/repo-archive.sh +12 -0
- package/scripts/forge/gitlab/user-identity.sh +3 -0
- package/skeleton/.claude/skills/afx/SKILL.md +144 -0
- package/skeleton/.claude/skills/codev/SKILL.md +3 -3
- package/skeleton/.claude/skills/consult/SKILL.md +1 -1
- package/skeleton/.claude/skills/porch/SKILL.md +2 -2
- package/skeleton/DEPENDENCIES.md +1 -1
- package/skeleton/builders.md +4 -4
- package/skeleton/protocol-schema.json +2 -2
- package/skeleton/protocols/air/builder-prompt.md +6 -6
- package/skeleton/protocols/air/prompts/pr.md +2 -2
- package/skeleton/protocols/air/protocol.md +1 -2
- package/skeleton/protocols/aspir/builder-prompt.md +28 -6
- package/skeleton/protocols/aspir/protocol.json +9 -1
- package/skeleton/protocols/aspir/protocol.md +1 -1
- package/skeleton/protocols/aspir/templates/plan.md +0 -20
- package/skeleton/protocols/aspir/templates/spec.md +0 -28
- package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
- package/skeleton/protocols/bugfix/prompts/pr.md +1 -1
- package/skeleton/protocols/experiment/protocol.md +1 -6
- package/skeleton/protocols/maintain/builder-prompt.md +12 -11
- package/skeleton/protocols/maintain/prompts/maintain.md +88 -0
- package/skeleton/protocols/maintain/prompts/review.md +72 -0
- package/skeleton/protocols/maintain/protocol.json +14 -68
- package/skeleton/protocols/maintain/protocol.md +111 -409
- package/skeleton/protocols/maintain/templates/maintenance-run.md +18 -49
- package/skeleton/protocols/protocol-schema.json +1 -1
- package/skeleton/protocols/spike/builder-prompt.md +1 -1
- package/skeleton/protocols/spike/protocol.md +4 -4
- package/skeleton/protocols/spir/builder-prompt.md +28 -5
- package/skeleton/protocols/spir/protocol.json +9 -1
- package/skeleton/protocols/spir/protocol.md +2 -2
- package/skeleton/protocols/spir/templates/plan.md +0 -20
- package/skeleton/protocols/spir/templates/spec.md +0 -28
- package/skeleton/resources/commands/agent-farm.md +84 -84
- package/skeleton/resources/commands/codev.md +1 -1
- package/skeleton/resources/commands/consult.md +16 -7
- package/skeleton/resources/commands/overview.md +14 -15
- package/skeleton/resources/risk-triage.md +1 -1
- package/skeleton/resources/workflow-reference.md +14 -14
- package/skeleton/roles/architect.md +55 -43
- package/skeleton/roles/builder.md +22 -14
- package/skeleton/templates/AGENTS.md +4 -3
- package/skeleton/templates/CLAUDE.md +4 -3
- package/skeleton/templates/cheatsheet.md +11 -12
- package/templates/3d-viewer.html +16 -18
- package/templates/tower.html +1 -1
- package/dashboard/dist/assets/index-CiIBsixF.js +0 -194
- package/dashboard/dist/assets/index-CiIBsixF.js.map +0 -1
- package/skeleton/.claude/skills/af/SKILL.md +0 -146
- package/skeleton/porch/prompts/understand.md +0 -61
- package/skeleton/porch/prompts/verify.md +0 -58
- package/skeleton/protocols/maintain/prompts/audit.md +0 -111
- package/skeleton/protocols/maintain/prompts/clean.md +0 -91
- package/skeleton/protocols/maintain/prompts/sync.md +0 -113
- package/skeleton/protocols/maintain/prompts/verify.md +0 -110
- package/skeleton/protocols/tick/builder-prompt.md +0 -65
- package/skeleton/protocols/tick/consult-types/impl-review.md +0 -72
- package/skeleton/protocols/tick/consult-types/plan-review.md +0 -59
- package/skeleton/protocols/tick/consult-types/pr-review.md +0 -72
- package/skeleton/protocols/tick/consult-types/spec-review.md +0 -55
- package/skeleton/protocols/tick/protocol.json +0 -151
- package/skeleton/protocols/tick/protocol.md +0 -277
- package/skeleton/protocols/tick/templates/plan.md +0 -67
- package/skeleton/protocols/tick/templates/review.md +0 -89
- package/skeleton/protocols/tick/templates/spec.md +0 -61
|
@@ -7,11 +7,15 @@
|
|
|
7
7
|
* and terminal session creation via the Tower REST API.
|
|
8
8
|
*/
|
|
9
9
|
import { resolve } from 'node:path';
|
|
10
|
-
import {
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync, chmodSync, symlinkSync, readdirSync, mkdirSync } from 'node:fs';
|
|
11
12
|
import { logger, fatal } from '../utils/logger.js';
|
|
13
|
+
import { getBuilderHarness } from '../utils/config.js';
|
|
14
|
+
import { shellEscapeSingleQuote } from '../utils/harness.js';
|
|
12
15
|
import { defaultSessionOptions } from '../../terminal/index.js';
|
|
13
16
|
import { run, commandExists } from '../utils/shell.js';
|
|
14
|
-
import {
|
|
17
|
+
import { fetchIssueOrThrow } from '../../lib/github.js';
|
|
18
|
+
import { executeForgeCommand } from '../../lib/forge.js';
|
|
15
19
|
import { getTowerClient, DEFAULT_TOWER_PORT } from '../lib/tower-client.js';
|
|
16
20
|
// =============================================================================
|
|
17
21
|
// Dependency Checks
|
|
@@ -27,6 +31,42 @@ export async function checkDependencies() {
|
|
|
27
31
|
// =============================================================================
|
|
28
32
|
// Git Worktree Management
|
|
29
33
|
// =============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Symlink config files from workspace root into a worktree (if they exist).
|
|
36
|
+
* Shared by createWorktree() and createWorktreeFromBranch().
|
|
37
|
+
*/
|
|
38
|
+
export function symlinkConfigFiles(config, worktreePath) {
|
|
39
|
+
// Symlink .env at root level
|
|
40
|
+
const envRoot = resolve(config.workspaceRoot, '.env');
|
|
41
|
+
const envWorktree = resolve(worktreePath, '.env');
|
|
42
|
+
if (existsSync(envRoot) && !existsSync(envWorktree)) {
|
|
43
|
+
try {
|
|
44
|
+
symlinkSync(envRoot, envWorktree);
|
|
45
|
+
logger.info(`Linked .env from workspace root`);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
logger.debug(`Failed to symlink .env: ${error}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Symlink .codev/config.json
|
|
52
|
+
const configRoot = resolve(config.workspaceRoot, '.codev', 'config.json');
|
|
53
|
+
if (existsSync(configRoot)) {
|
|
54
|
+
const codevDir = resolve(worktreePath, '.codev');
|
|
55
|
+
if (!existsSync(codevDir)) {
|
|
56
|
+
mkdirSync(codevDir, { recursive: true });
|
|
57
|
+
}
|
|
58
|
+
const configWorktree = resolve(codevDir, 'config.json');
|
|
59
|
+
if (!existsSync(configWorktree)) {
|
|
60
|
+
try {
|
|
61
|
+
symlinkSync(configRoot, configWorktree);
|
|
62
|
+
logger.info(`Linked .codev/config.json from workspace root`);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
logger.debug(`Failed to symlink .codev/config.json: ${error}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
30
70
|
/**
|
|
31
71
|
* Create git branch and worktree
|
|
32
72
|
*/
|
|
@@ -46,18 +86,209 @@ export async function createWorktree(config, branchName, worktreePath) {
|
|
|
46
86
|
catch (error) {
|
|
47
87
|
fatal(`Failed to create worktree: ${error}`);
|
|
48
88
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
89
|
+
symlinkConfigFiles(config, worktreePath);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate a branch name for safe use in shell commands.
|
|
93
|
+
* Only allows valid git branch name characters: alphanumeric, dots, hyphens, underscores, slashes.
|
|
94
|
+
* Rejects anything that could be used for shell injection.
|
|
95
|
+
*/
|
|
96
|
+
const SAFE_BRANCH_REGEX = /^[a-zA-Z0-9._\/-]+$/;
|
|
97
|
+
export function validateBranchName(name) {
|
|
98
|
+
if (!name || name.length === 0) {
|
|
99
|
+
fatal('--branch requires a branch name');
|
|
100
|
+
}
|
|
101
|
+
if (!SAFE_BRANCH_REGEX.test(name)) {
|
|
102
|
+
fatal(`Invalid branch name: "${name}". Branch names may only contain alphanumeric characters, dots, hyphens, underscores, and slashes.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validate a remote name for safe use in shell commands.
|
|
107
|
+
* Same character restrictions as branch names.
|
|
108
|
+
*/
|
|
109
|
+
export function validateRemoteName(name) {
|
|
110
|
+
if (!name || name.length === 0) {
|
|
111
|
+
fatal('--remote requires a remote name');
|
|
112
|
+
}
|
|
113
|
+
if (!SAFE_BRANCH_REGEX.test(name)) {
|
|
114
|
+
fatal(`Invalid remote name: "${name}". Remote names may only contain alphanumeric characters, dots, hyphens, underscores, and slashes.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Detect if a branch belongs to a fork PR by querying GitHub.
|
|
119
|
+
* Uses `gh pr list --head <branch>` to find open PRs with this branch name.
|
|
120
|
+
* If a cross-repository (fork) PR is found, returns the fork owner and repo URL.
|
|
121
|
+
* Returns null if no fork PR is found or `gh` is unavailable.
|
|
122
|
+
*/
|
|
123
|
+
export async function detectForkRemote(config, branch) {
|
|
124
|
+
// Fetch PR data — network/parse errors return null (graceful degradation)
|
|
125
|
+
let prs;
|
|
126
|
+
try {
|
|
127
|
+
const { stdout } = await run(`gh pr list --head "${branch}" --json number,headRepositoryOwner,headRepository,isCrossRepository --state open`, { cwd: config.workspaceRoot });
|
|
128
|
+
const trimmed = stdout.trim();
|
|
129
|
+
if (!trimmed)
|
|
130
|
+
return null;
|
|
131
|
+
prs = JSON.parse(trimmed);
|
|
132
|
+
if (!Array.isArray(prs) || prs.length === 0)
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
// Validation is outside try/catch so fatal() propagates
|
|
139
|
+
const forkPrs = prs.filter((pr) => pr.isCrossRepository);
|
|
140
|
+
if (forkPrs.length === 0)
|
|
141
|
+
return null;
|
|
142
|
+
// Ambiguity check: if multiple forks have the same branch name, require --remote
|
|
143
|
+
if (forkPrs.length > 1) {
|
|
144
|
+
const owners = forkPrs.map((pr) => pr.headRepositoryOwner?.login).filter(Boolean);
|
|
145
|
+
fatal(`Multiple fork PRs found for branch '${branch}' from: ${owners.join(', ')}.\n` +
|
|
146
|
+
`Use --remote <name> to specify which fork to use.`);
|
|
147
|
+
}
|
|
148
|
+
const forkPr = forkPrs[0];
|
|
149
|
+
const owner = forkPr.headRepositoryOwner?.login;
|
|
150
|
+
const repo = forkPr.headRepository?.name;
|
|
151
|
+
if (!owner || !repo)
|
|
152
|
+
return null;
|
|
153
|
+
return {
|
|
154
|
+
owner,
|
|
155
|
+
url: `https://github.com/${owner}/${repo}.git`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Ensure a git remote exists with the given name and URL.
|
|
160
|
+
* Adds the remote if it doesn't exist. If it exists but points to a
|
|
161
|
+
* different URL, fatals with a clear message to avoid silent misrouting.
|
|
162
|
+
*/
|
|
163
|
+
async function ensureRemote(config, name, url) {
|
|
164
|
+
let existingUrl = null;
|
|
165
|
+
try {
|
|
166
|
+
const { stdout } = await run(`git remote get-url "${name}"`, { cwd: config.workspaceRoot });
|
|
167
|
+
existingUrl = stdout.trim();
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// Remote doesn't exist — add it
|
|
171
|
+
logger.info(`Adding remote '${name}' → ${url}`);
|
|
172
|
+
await run(`git remote add "${name}" "${url}"`, { cwd: config.workspaceRoot });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// Remote exists — verify URL matches (outside try/catch so fatal propagates)
|
|
176
|
+
if (existingUrl !== url) {
|
|
177
|
+
fatal(`Remote '${name}' already exists but points to '${existingUrl}' (expected '${url}').\n` +
|
|
178
|
+
`Remove or update the remote, or use --remote with the correct remote name.`);
|
|
179
|
+
}
|
|
180
|
+
logger.debug(`Remote '${name}' already configured`);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Create a worktree from an existing remote branch (Spec 609).
|
|
184
|
+
* Fetches the branch from the specified remote (or origin by default),
|
|
185
|
+
* checks it's not already checked out, and creates a worktree on it.
|
|
186
|
+
*
|
|
187
|
+
* When the branch doesn't exist on origin and no explicit remote is given,
|
|
188
|
+
* auto-detects fork PRs via `gh pr list` and fetches from the fork remote.
|
|
189
|
+
*/
|
|
190
|
+
export async function createWorktreeFromBranch(config, branch, worktreePath, options) {
|
|
191
|
+
validateBranchName(branch);
|
|
192
|
+
if (options?.remote)
|
|
193
|
+
validateRemoteName(options.remote);
|
|
194
|
+
const explicitRemote = options?.remote;
|
|
195
|
+
let remote = explicitRemote || 'origin';
|
|
196
|
+
// Fetch latest from remote
|
|
197
|
+
logger.info(`Fetching from remote '${remote}'...`);
|
|
198
|
+
try {
|
|
199
|
+
await run(`git fetch "${remote}"`, { cwd: config.workspaceRoot });
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
fatal(`Failed to fetch from remote '${remote}': ${error}`);
|
|
203
|
+
}
|
|
204
|
+
// Verify branch exists on the remote
|
|
205
|
+
let branchExists = false;
|
|
206
|
+
try {
|
|
207
|
+
const { stdout } = await run(`git ls-remote --heads "${remote}" "${branch}"`, { cwd: config.workspaceRoot });
|
|
208
|
+
branchExists = !!stdout.trim();
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
fatal(`Failed to check remote branch: ${error}`);
|
|
212
|
+
}
|
|
213
|
+
// If branch not found and no explicit remote was given, try fork detection
|
|
214
|
+
if (!branchExists && !explicitRemote) {
|
|
215
|
+
logger.info(`Branch '${branch}' not found on origin. Checking for fork PRs...`);
|
|
216
|
+
const fork = await detectForkRemote(config, branch);
|
|
217
|
+
if (fork) {
|
|
218
|
+
validateRemoteName(fork.owner);
|
|
219
|
+
logger.info(`Found fork PR from '${fork.owner}'. Fetching from fork...`);
|
|
220
|
+
await ensureRemote(config, fork.owner, fork.url);
|
|
221
|
+
remote = fork.owner;
|
|
222
|
+
try {
|
|
223
|
+
await run(`git fetch "${remote}" "${branch}"`, { cwd: config.workspaceRoot });
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
fatal(`Failed to fetch branch '${branch}' from fork remote '${remote}': ${error}`);
|
|
227
|
+
}
|
|
228
|
+
// Re-verify after fetching from fork
|
|
229
|
+
try {
|
|
230
|
+
const { stdout } = await run(`git ls-remote --heads "${remote}" "${branch}"`, { cwd: config.workspaceRoot });
|
|
231
|
+
branchExists = !!stdout.trim();
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// Fall through to error below
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (!branchExists) {
|
|
239
|
+
if (explicitRemote) {
|
|
240
|
+
fatal(`Branch '${branch}' does not exist on remote '${explicitRemote}'. Check the branch name and try again.`);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
fatal(`Branch '${branch}' does not exist on the remote. Check the branch name and try again.\n` +
|
|
244
|
+
`If this branch is from a fork, use --remote <name> to specify the fork remote.`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Pre-check: is the branch already checked out in another worktree?
|
|
248
|
+
let alreadyCheckedOutAt = null;
|
|
249
|
+
try {
|
|
250
|
+
const { stdout } = await run('git worktree list --porcelain', { cwd: config.workspaceRoot });
|
|
251
|
+
const lines = stdout.split('\n');
|
|
252
|
+
for (const line of lines) {
|
|
253
|
+
if (line.startsWith('branch refs/heads/') && line === `branch refs/heads/${branch}`) {
|
|
254
|
+
// Find the worktree path for this branch (it's the preceding 'worktree' line)
|
|
255
|
+
const idx = lines.indexOf(line);
|
|
256
|
+
let wtPath = '(unknown)';
|
|
257
|
+
for (let i = idx - 1; i >= 0; i--) {
|
|
258
|
+
if (lines[i].startsWith('worktree ')) {
|
|
259
|
+
wtPath = lines[i].replace('worktree ', '');
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
alreadyCheckedOutAt = wtPath;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
// Non-fatal — git worktree list failing shouldn't block spawn
|
|
270
|
+
logger.debug(`Worktree list check: ${error}`);
|
|
271
|
+
}
|
|
272
|
+
if (alreadyCheckedOutAt) {
|
|
273
|
+
fatal(`Branch '${branch}' is already checked out at '${alreadyCheckedOutAt}'.\n` +
|
|
274
|
+
`Switch that checkout to a different branch first, or use 'afx cleanup' to remove the worktree.`);
|
|
275
|
+
}
|
|
276
|
+
// Create worktree with the existing branch.
|
|
277
|
+
// Try creating a local tracking branch first; if it already exists, use it directly.
|
|
278
|
+
logger.info(`Creating worktree on branch '${branch}'...`);
|
|
279
|
+
try {
|
|
280
|
+
await run(`git worktree add "${worktreePath}" -b "${branch}" "${remote}/${branch}"`, { cwd: config.workspaceRoot });
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Local branch may already exist — try using it directly
|
|
53
284
|
try {
|
|
54
|
-
|
|
55
|
-
logger.info('Linked .env from workspace root');
|
|
285
|
+
await run(`git worktree add "${worktreePath}" "${branch}"`, { cwd: config.workspaceRoot });
|
|
56
286
|
}
|
|
57
287
|
catch (error) {
|
|
58
|
-
|
|
288
|
+
fatal(`Failed to create worktree on branch '${branch}': ${error}`);
|
|
59
289
|
}
|
|
60
290
|
}
|
|
291
|
+
symlinkConfigFiles(config, worktreePath);
|
|
61
292
|
}
|
|
62
293
|
/**
|
|
63
294
|
* Pre-initialize porch in a worktree so the builder doesn't need to self-correct.
|
|
@@ -106,15 +337,18 @@ export function findExistingBugfixWorktree(buildersDir, issueNumber) {
|
|
|
106
337
|
}
|
|
107
338
|
}
|
|
108
339
|
/**
|
|
109
|
-
* Fetch a GitHub issue via
|
|
340
|
+
* Fetch a GitHub issue via the `issue-view` concept command (fatal on failure).
|
|
110
341
|
* Delegates to shared github utility but wraps with fatal() for spawn context.
|
|
111
342
|
*/
|
|
112
|
-
export async function fetchGitHubIssue(issueNumber) {
|
|
343
|
+
export async function fetchGitHubIssue(issueNumber, options) {
|
|
113
344
|
try {
|
|
114
|
-
return await
|
|
345
|
+
return await fetchIssueOrThrow(issueNumber, options);
|
|
115
346
|
}
|
|
116
347
|
catch (error) {
|
|
117
|
-
fatal(`Failed to fetch issue #${issueNumber}.
|
|
348
|
+
fatal(`Failed to fetch issue #${issueNumber}. ` +
|
|
349
|
+
`Ensure the 'issue-view' forge concept command is configured ` +
|
|
350
|
+
`(default: 'gh' CLI must be installed and authenticated). ` +
|
|
351
|
+
`Configure forge commands in .codev/config.json if using a non-GitHub forge.`);
|
|
118
352
|
throw error; // TypeScript doesn't know fatal() never returns
|
|
119
353
|
}
|
|
120
354
|
}
|
|
@@ -122,43 +356,49 @@ export async function fetchGitHubIssue(issueNumber) {
|
|
|
122
356
|
// Bugfix Collision Detection
|
|
123
357
|
// =============================================================================
|
|
124
358
|
/**
|
|
125
|
-
* Check for collision conditions before spawning bugfix
|
|
359
|
+
* Check for collision conditions before spawning bugfix.
|
|
360
|
+
* Uses forge concept commands for PR search (graceful degradation if unavailable).
|
|
126
361
|
*/
|
|
127
|
-
export async function checkBugfixCollisions(issueNumber, worktreePath, issue, force) {
|
|
362
|
+
export async function checkBugfixCollisions(issueNumber, worktreePath, issue, force, forgeConfig) {
|
|
128
363
|
// 1. Check if worktree already exists
|
|
129
364
|
if (existsSync(worktreePath)) {
|
|
130
|
-
fatal(`Worktree already exists at ${worktreePath}\nRun:
|
|
365
|
+
fatal(`Worktree already exists at ${worktreePath}\nRun: afx cleanup --issue ${issueNumber}`);
|
|
131
366
|
}
|
|
132
367
|
// 2. Check for recent "On it" comments (< 24h old)
|
|
133
|
-
|
|
134
|
-
if (
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
368
|
+
// Depends on issue-view returning comments array; if missing, skip gracefully
|
|
369
|
+
if (issue.comments) {
|
|
370
|
+
const onItComments = issue.comments.filter((c) => c.body.toLowerCase().includes('on it'));
|
|
371
|
+
if (onItComments.length > 0) {
|
|
372
|
+
const lastComment = onItComments[onItComments.length - 1];
|
|
373
|
+
const age = Date.now() - new Date(lastComment.createdAt).getTime();
|
|
374
|
+
const hoursAgo = Math.round(age / (1000 * 60 * 60));
|
|
375
|
+
if (hoursAgo < 24) {
|
|
376
|
+
if (!force) {
|
|
377
|
+
fatal(`Issue #${issueNumber} has "On it" comment from ${hoursAgo}h ago (by @${lastComment.author.login}).\nSomeone may already be working on this. Use --force to override.`);
|
|
378
|
+
}
|
|
379
|
+
logger.warn(`Warning: "On it" comment from ${hoursAgo}h ago - proceeding with --force`);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
logger.warn(`Warning: Stale "On it" comment (${hoursAgo}h ago). Proceeding.`);
|
|
141
383
|
}
|
|
142
|
-
logger.warn(`Warning: "On it" comment from ${hoursAgo}h ago - proceeding with --force`);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
logger.warn(`Warning: Stale "On it" comment (${hoursAgo}h ago). Proceeding.`);
|
|
146
384
|
}
|
|
147
385
|
}
|
|
148
|
-
// 3. Check for open PRs referencing this issue
|
|
386
|
+
// 3. Check for open PRs referencing this issue via pr-search concept
|
|
149
387
|
try {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
388
|
+
const result = await executeForgeCommand('pr-search', {
|
|
389
|
+
CODEV_SEARCH_QUERY: `in:body #${issueNumber}`,
|
|
390
|
+
}, { forgeConfig });
|
|
391
|
+
if (result && Array.isArray(result) && result.length > 0) {
|
|
392
|
+
const openPRs = result;
|
|
153
393
|
if (!force) {
|
|
154
|
-
const prList = openPRs.map((pr) => ` - PR #${pr.number}
|
|
394
|
+
const prList = openPRs.slice(0, 5).map((pr) => ` - PR #${pr.number}${pr.title ? `: ${pr.title}` : ''}`).join('\n');
|
|
155
395
|
fatal(`Found ${openPRs.length} open PR(s) referencing issue #${issueNumber}:\n${prList}\nUse --force to proceed anyway.`);
|
|
156
396
|
}
|
|
157
397
|
logger.warn(`Warning: Found ${openPRs.length} open PR(s) referencing issue - proceeding with --force`);
|
|
158
398
|
}
|
|
159
399
|
}
|
|
160
400
|
catch {
|
|
161
|
-
// Non-fatal: continue if PR
|
|
401
|
+
// Non-fatal: continue if PR search concept unavailable
|
|
162
402
|
}
|
|
163
403
|
// 4. Warn if issue is already closed
|
|
164
404
|
if (issue.state === 'CLOSED') {
|
|
@@ -169,8 +409,9 @@ export async function checkBugfixCollisions(issueNumber, worktreePath, issue, fo
|
|
|
169
409
|
// Pre-Spawn Hooks
|
|
170
410
|
// =============================================================================
|
|
171
411
|
/**
|
|
172
|
-
* Execute pre-spawn hooks defined in protocol.json
|
|
173
|
-
* Hooks are data-driven but reuse existing implementation logic
|
|
412
|
+
* Execute pre-spawn hooks defined in protocol.json.
|
|
413
|
+
* Hooks are data-driven but reuse existing implementation logic.
|
|
414
|
+
* Uses forge concept commands for collision detection and issue commenting.
|
|
174
415
|
*/
|
|
175
416
|
export async function executePreSpawnHooks(protocol, context) {
|
|
176
417
|
if (!protocol?.hooks?.['pre-spawn'])
|
|
@@ -178,14 +419,17 @@ export async function executePreSpawnHooks(protocol, context) {
|
|
|
178
419
|
const hooks = protocol.hooks['pre-spawn'];
|
|
179
420
|
// collision-check: reuses existing checkBugfixCollisions() logic
|
|
180
421
|
if (hooks['collision-check'] && context.issueNumber && context.issue && context.worktreePath) {
|
|
181
|
-
await checkBugfixCollisions(context.issueNumber, context.worktreePath, context.issue, !!context.force);
|
|
422
|
+
await checkBugfixCollisions(context.issueNumber, context.worktreePath, context.issue, !!context.force, context.forgeConfig);
|
|
182
423
|
}
|
|
183
|
-
// comment-on-issue: posts comment
|
|
424
|
+
// comment-on-issue: posts comment via issue-comment concept command
|
|
184
425
|
if (hooks['comment-on-issue'] && context.issueNumber && !context.noComment) {
|
|
185
426
|
const message = hooks['comment-on-issue'];
|
|
186
427
|
logger.info('Commenting on issue...');
|
|
187
428
|
try {
|
|
188
|
-
await
|
|
429
|
+
await executeForgeCommand('issue-comment', {
|
|
430
|
+
CODEV_ISSUE_ID: String(context.issueNumber),
|
|
431
|
+
CODEV_COMMENT_BODY: message,
|
|
432
|
+
}, { forgeConfig: context.forgeConfig, raw: true });
|
|
189
433
|
}
|
|
190
434
|
catch {
|
|
191
435
|
logger.warn('Warning: Failed to comment on issue (continuing anyway)');
|
|
@@ -229,6 +473,48 @@ export async function createPtySession(config, command, args, cwd, registration)
|
|
|
229
473
|
}
|
|
230
474
|
return { terminalId: terminal.id };
|
|
231
475
|
}
|
|
476
|
+
/**
|
|
477
|
+
* Write harness-provided files to the worktree, merging with existing JSON files.
|
|
478
|
+
* For JSON files: reads existing file, shallow-merges properties, and deduplicates
|
|
479
|
+
* the 'instructions' array. If existing JSON can't be parsed (e.g., JSONC with
|
|
480
|
+
* comments), warns and skips to avoid destroying user config.
|
|
481
|
+
* After writing, marks files with git skip-worktree to prevent accidental commits.
|
|
482
|
+
*/
|
|
483
|
+
function writeWorktreeFiles(files, worktreePath) {
|
|
484
|
+
for (const file of files) {
|
|
485
|
+
const targetPath = resolve(worktreePath, file.relativePath);
|
|
486
|
+
if (file.relativePath.endsWith('.json') && existsSync(targetPath)) {
|
|
487
|
+
try {
|
|
488
|
+
const existing = JSON.parse(readFileSync(targetPath, 'utf-8'));
|
|
489
|
+
const incoming = JSON.parse(file.content);
|
|
490
|
+
const merged = { ...existing, ...incoming };
|
|
491
|
+
if (Array.isArray(existing.instructions) && Array.isArray(incoming.instructions)) {
|
|
492
|
+
merged.instructions = [...new Set([...existing.instructions, ...incoming.instructions])];
|
|
493
|
+
}
|
|
494
|
+
writeFileSync(targetPath, JSON.stringify(merged, null, 2) + '\n');
|
|
495
|
+
}
|
|
496
|
+
catch {
|
|
497
|
+
// Existing file is not valid JSON (likely JSONC with comments/trailing commas).
|
|
498
|
+
// Do NOT overwrite — that would destroy user config. Warn and skip.
|
|
499
|
+
logger.warn(`Cannot merge ${file.relativePath}: existing file is not valid JSON. Skipping to preserve user config.`);
|
|
500
|
+
continue;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
writeFileSync(targetPath, file.content);
|
|
505
|
+
}
|
|
506
|
+
// Prevent generated files from being accidentally committed back to the repo
|
|
507
|
+
try {
|
|
508
|
+
execSync(`git update-index --skip-worktree "${file.relativePath}"`, {
|
|
509
|
+
cwd: worktreePath,
|
|
510
|
+
stdio: 'pipe',
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
catch {
|
|
514
|
+
// Non-fatal: file may not be tracked by git yet (new file in worktree)
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
232
518
|
/**
|
|
233
519
|
* Start a terminal session for a builder
|
|
234
520
|
*/
|
|
@@ -241,18 +527,29 @@ export async function startBuilderSession(config, builderId, worktreePath, baseC
|
|
|
241
527
|
const scriptPath = resolve(worktreePath, '.builder-start.sh');
|
|
242
528
|
let scriptContent;
|
|
243
529
|
if (roleContent) {
|
|
244
|
-
// Write role to a file
|
|
530
|
+
// Write role to a file for harness-based injection
|
|
245
531
|
const roleFile = resolve(worktreePath, '.builder-role.md');
|
|
246
532
|
// Inject the actual dashboard port into the role prompt
|
|
247
533
|
const roleWithPort = roleContent.replace(/\{PORT\}/g, String(DEFAULT_TOWER_PORT));
|
|
248
534
|
writeFileSync(roleFile, roleWithPort);
|
|
249
535
|
logger.info(`Loaded role (${roleSource})`);
|
|
536
|
+
// Resolve harness provider for role injection
|
|
537
|
+
const harness = getBuilderHarness(config.workspaceRoot);
|
|
538
|
+
const { fragment, env } = harness.buildScriptRoleInjection(roleWithPort, roleFile);
|
|
539
|
+
const envExports = Object.entries(env)
|
|
540
|
+
.map(([k, v]) => `export ${k}='${shellEscapeSingleQuote(v)}'`)
|
|
541
|
+
.join('\n');
|
|
542
|
+
const envBlock = envExports ? `${envExports}\n` : '';
|
|
543
|
+
// Write any harness-specific worktree files (e.g., opencode.json for OpenCode)
|
|
544
|
+
if (harness.getWorktreeFiles) {
|
|
545
|
+
writeWorktreeFiles(harness.getWorktreeFiles(roleWithPort, roleFile), worktreePath);
|
|
546
|
+
}
|
|
250
547
|
scriptContent = `#!/bin/bash
|
|
251
548
|
cd "${worktreePath}"
|
|
252
|
-
while true; do
|
|
253
|
-
${baseCmd}
|
|
549
|
+
${envBlock}while true; do
|
|
550
|
+
${baseCmd} ${fragment} "$(cat '${promptFile}')"
|
|
254
551
|
echo ""
|
|
255
|
-
echo "
|
|
552
|
+
echo "Agent exited. Restarting in 2 seconds... (Ctrl+C to quit)"
|
|
256
553
|
sleep 2
|
|
257
554
|
done
|
|
258
555
|
`;
|
|
@@ -263,7 +560,7 @@ cd "${worktreePath}"
|
|
|
263
560
|
while true; do
|
|
264
561
|
${baseCmd} "$(cat '${promptFile}')"
|
|
265
562
|
echo ""
|
|
266
|
-
echo "
|
|
563
|
+
echo "Agent exited. Restarting in 2 seconds... (Ctrl+C to quit)"
|
|
267
564
|
sleep 2
|
|
268
565
|
done
|
|
269
566
|
`;
|
|
@@ -289,18 +586,29 @@ export async function startShellSession(config, shellId, baseCmd) {
|
|
|
289
586
|
/**
|
|
290
587
|
* Build a launch script for worktree mode (no initial prompt)
|
|
291
588
|
*/
|
|
292
|
-
export function buildWorktreeLaunchScript(worktreePath, baseCmd, role) {
|
|
589
|
+
export function buildWorktreeLaunchScript(worktreePath, baseCmd, role, workspaceRoot) {
|
|
293
590
|
if (role) {
|
|
294
591
|
const roleFile = resolve(worktreePath, '.builder-role.md');
|
|
295
592
|
const roleWithPort = role.content.replace(/\{PORT\}/g, String(DEFAULT_TOWER_PORT));
|
|
296
593
|
writeFileSync(roleFile, roleWithPort);
|
|
297
594
|
logger.info(`Loaded role (${role.source})`);
|
|
595
|
+
// Resolve harness provider for role injection
|
|
596
|
+
const harness = getBuilderHarness(workspaceRoot);
|
|
597
|
+
const { fragment, env } = harness.buildScriptRoleInjection(roleWithPort, roleFile);
|
|
598
|
+
const envExports = Object.entries(env)
|
|
599
|
+
.map(([k, v]) => `export ${k}='${shellEscapeSingleQuote(v)}'`)
|
|
600
|
+
.join('\n');
|
|
601
|
+
const envBlock = envExports ? `${envExports}\n` : '';
|
|
602
|
+
// Write any harness-specific worktree files (e.g., opencode.json for OpenCode)
|
|
603
|
+
if (harness.getWorktreeFiles) {
|
|
604
|
+
writeWorktreeFiles(harness.getWorktreeFiles(roleWithPort, roleFile), worktreePath);
|
|
605
|
+
}
|
|
298
606
|
return `#!/bin/bash
|
|
299
607
|
cd "${worktreePath}"
|
|
300
|
-
while true; do
|
|
301
|
-
${baseCmd}
|
|
608
|
+
${envBlock}while true; do
|
|
609
|
+
${baseCmd} ${fragment}
|
|
302
610
|
echo ""
|
|
303
|
-
echo "
|
|
611
|
+
echo "Agent exited. Restarting in 2 seconds... (Ctrl+C to quit)"
|
|
304
612
|
sleep 2
|
|
305
613
|
done
|
|
306
614
|
`;
|
|
@@ -310,7 +618,7 @@ cd "${worktreePath}"
|
|
|
310
618
|
while true; do
|
|
311
619
|
${baseCmd}
|
|
312
620
|
echo ""
|
|
313
|
-
echo "
|
|
621
|
+
echo "Agent exited. Restarting in 2 seconds... (Ctrl+C to quit)"
|
|
314
622
|
sleep 2
|
|
315
623
|
done
|
|
316
624
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-worktree.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn-worktree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spawn-worktree.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn-worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Spec 0126: Project Management Rework — Phase 2 (Spawn CLI Rework)
|
|
4
4
|
*
|
|
5
5
|
* Modes (protocol-driven for issue-based spawns):
|
|
6
|
-
* - spec:
|
|
7
|
-
* - bugfix:
|
|
8
|
-
* - task:
|
|
9
|
-
* - protocol:
|
|
10
|
-
* - shell:
|
|
11
|
-
* - worktree:
|
|
6
|
+
* - spec: afx spawn 315 --protocol spir (feature)
|
|
7
|
+
* - bugfix: afx spawn 315 --protocol bugfix (bug fix)
|
|
8
|
+
* - task: afx spawn --task "..." (ad-hoc task)
|
|
9
|
+
* - protocol: afx spawn --protocol maintain (protocol-only run)
|
|
10
|
+
* - shell: afx spawn --shell (bare session)
|
|
11
|
+
* - worktree: afx spawn --worktree (worktree, no prompt)
|
|
12
12
|
*
|
|
13
13
|
* Role/prompt logic extracted to spawn-roles.ts.
|
|
14
14
|
* Worktree/git logic extracted to spawn-worktree.ts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AAywBrE;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChE"}
|