gsd-pi 2.30.0-dev.92a3417 → 2.30.0-dev.ab42fba

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 (71) hide show
  1. package/dist/cli.js +51 -0
  2. package/dist/help-text.js +35 -0
  3. package/dist/resources/extensions/aws-auth/index.ts +144 -0
  4. package/dist/resources/extensions/gsd/auto-dashboard.ts +65 -186
  5. package/dist/resources/extensions/gsd/auto-prompts.ts +2 -10
  6. package/dist/resources/extensions/gsd/auto-start.ts +3 -10
  7. package/dist/resources/extensions/gsd/auto-worktree.ts +12 -8
  8. package/dist/resources/extensions/gsd/auto.ts +2 -2
  9. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +2 -12
  10. package/dist/resources/extensions/gsd/docs/preferences-reference.md +2 -4
  11. package/dist/resources/extensions/gsd/git-service.ts +4 -22
  12. package/dist/resources/extensions/gsd/gitignore.ts +6 -7
  13. package/dist/resources/extensions/gsd/guided-flow-queue.ts +3 -7
  14. package/dist/resources/extensions/gsd/guided-flow.ts +8 -11
  15. package/dist/resources/extensions/gsd/index.ts +13 -0
  16. package/dist/resources/extensions/gsd/init-wizard.ts +2 -30
  17. package/dist/resources/extensions/gsd/preferences-types.ts +0 -2
  18. package/dist/resources/extensions/gsd/preferences-validation.ts +1 -2
  19. package/dist/resources/extensions/gsd/roadmap-slices.ts +22 -7
  20. package/dist/resources/extensions/gsd/session-lock.ts +53 -4
  21. package/dist/resources/extensions/gsd/templates/preferences.md +0 -1
  22. package/dist/resources/extensions/gsd/tests/git-service.test.ts +14 -42
  23. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +3 -9
  24. package/dist/resources/extensions/gsd/tests/preferences.test.ts +1 -9
  25. package/dist/resources/extensions/gsd/tests/worktree.test.ts +1 -4
  26. package/dist/resources/extensions/gsd/worktree.ts +2 -2
  27. package/dist/worktree-cli.d.ts +34 -0
  28. package/dist/worktree-cli.js +294 -0
  29. package/dist/worktree-name-gen.d.ts +7 -0
  30. package/dist/worktree-name-gen.js +44 -0
  31. package/package.json +1 -1
  32. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  33. package/packages/pi-coding-agent/dist/core/agent-session.js +14 -0
  34. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  35. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  36. package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -0
  37. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  38. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  39. package/packages/pi-coding-agent/dist/core/extensions/runner.js +1 -0
  40. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  41. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +7 -0
  42. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  43. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  44. package/packages/pi-coding-agent/src/core/agent-session.ts +14 -0
  45. package/packages/pi-coding-agent/src/core/extensions/loader.ts +5 -0
  46. package/packages/pi-coding-agent/src/core/extensions/runner.ts +1 -0
  47. package/packages/pi-coding-agent/src/core/extensions/types.ts +8 -0
  48. package/src/resources/extensions/aws-auth/index.ts +144 -0
  49. package/src/resources/extensions/gsd/auto-dashboard.ts +65 -186
  50. package/src/resources/extensions/gsd/auto-prompts.ts +2 -10
  51. package/src/resources/extensions/gsd/auto-start.ts +3 -10
  52. package/src/resources/extensions/gsd/auto-worktree.ts +12 -8
  53. package/src/resources/extensions/gsd/auto.ts +2 -2
  54. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +2 -12
  55. package/src/resources/extensions/gsd/docs/preferences-reference.md +2 -4
  56. package/src/resources/extensions/gsd/git-service.ts +4 -22
  57. package/src/resources/extensions/gsd/gitignore.ts +6 -7
  58. package/src/resources/extensions/gsd/guided-flow-queue.ts +3 -7
  59. package/src/resources/extensions/gsd/guided-flow.ts +8 -11
  60. package/src/resources/extensions/gsd/index.ts +13 -0
  61. package/src/resources/extensions/gsd/init-wizard.ts +2 -30
  62. package/src/resources/extensions/gsd/preferences-types.ts +0 -2
  63. package/src/resources/extensions/gsd/preferences-validation.ts +1 -2
  64. package/src/resources/extensions/gsd/roadmap-slices.ts +22 -7
  65. package/src/resources/extensions/gsd/session-lock.ts +53 -4
  66. package/src/resources/extensions/gsd/templates/preferences.md +0 -1
  67. package/src/resources/extensions/gsd/tests/git-service.test.ts +14 -42
  68. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +3 -9
  69. package/src/resources/extensions/gsd/tests/preferences.test.ts +1 -9
  70. package/src/resources/extensions/gsd/tests/worktree.test.ts +1 -4
  71. package/src/resources/extensions/gsd/worktree.ts +2 -2
@@ -1086,12 +1086,12 @@ async function main(): Promise<void> {
1086
1086
  rmSync(repo, { recursive: true, force: true });
1087
1087
  }
1088
1088
 
1089
- // ─── commit_docs: false — smartStage excludes .gsd/ ──────────────────
1089
+ // ─── smartStage always excludes .gsd/ ──────────────────────────────
1090
1090
 
1091
- console.log("\n=== commit_docs: false — smartStage excludes .gsd/ ===");
1091
+ console.log("\n=== smartStage always excludes .gsd/ ===");
1092
1092
 
1093
1093
  {
1094
- const repo = mkdtempSync(join(tmpdir(), "gsd-commit-docs-"));
1094
+ const repo = mkdtempSync(join(tmpdir(), "gsd-smart-stage-excludes-"));
1095
1095
  run("git init -b main", repo);
1096
1096
  run("git config user.email test@test.com", repo);
1097
1097
  run("git config user.name Test", repo);
@@ -1104,65 +1104,37 @@ async function main(): Promise<void> {
1104
1104
  writeFileSync(join(repo, ".gsd", "preferences.md"), "---\nversion: 1\n---");
1105
1105
  writeFileSync(join(repo, "src.ts"), "const x = 1;");
1106
1106
 
1107
- // With commit_docs: false, smartStage should exclude .gsd/
1108
- const svc = new GitServiceImpl(repo, { commit_docs: false });
1109
- const msg = svc.commit({ message: "test commit" });
1110
- assertTrue(msg !== null, "commit_docs=false: commit succeeds with non-.gsd files");
1111
-
1112
- // .gsd/ files should NOT be in the commit
1113
- const committed = run("git show --name-only HEAD", repo);
1114
- assertTrue(!committed.includes(".gsd/"), "commit_docs=false: .gsd/ files not in commit");
1115
- assertTrue(committed.includes("src.ts"), "commit_docs=false: source files ARE in commit");
1116
-
1117
- rmSync(repo, { recursive: true, force: true });
1118
- }
1119
-
1120
- // ─── commit_docs: true (default) — smartStage includes .gsd/ ────────
1121
-
1122
- console.log("\n=== commit_docs: true — smartStage includes .gsd/ ===");
1123
-
1124
- {
1125
- const repo = mkdtempSync(join(tmpdir(), "gsd-commit-docs-default-"));
1126
- run("git init -b main", repo);
1127
- run("git config user.email test@test.com", repo);
1128
- run("git config user.name Test", repo);
1129
- writeFileSync(join(repo, "README.md"), "init");
1130
- run("git add -A && git commit -m init", repo);
1131
-
1132
- mkdirSync(join(repo, ".gsd", "milestones", "M001"), { recursive: true });
1133
- writeFileSync(join(repo, ".gsd", "milestones", "M001", "ROADMAP.md"), "# Roadmap");
1134
- writeFileSync(join(repo, "src.ts"), "const x = 1;");
1135
-
1136
- // Default behavior (commit_docs not set) — .gsd/ files ARE committed
1107
+ // smartStage always excludes .gsd/ — state is managed externally
1137
1108
  const svc = new GitServiceImpl(repo);
1138
1109
  const msg = svc.commit({ message: "test commit" });
1139
- assertTrue(msg !== null, "commit_docs=default: commit succeeds");
1110
+ assertTrue(msg !== null, "smartStage: commit succeeds with non-.gsd files");
1140
1111
 
1112
+ // .gsd/ files should NOT be in the commit
1141
1113
  const committed = run("git show --name-only HEAD", repo);
1142
- assertTrue(committed.includes(".gsd/"), "commit_docs=default: .gsd/ files ARE in commit");
1143
- assertTrue(committed.includes("src.ts"), "commit_docs=default: source files in commit");
1114
+ assertTrue(!committed.includes(".gsd/"), "smartStage: .gsd/ files not in commit");
1115
+ assertTrue(committed.includes("src.ts"), "smartStage: source files ARE in commit");
1144
1116
 
1145
1117
  rmSync(repo, { recursive: true, force: true });
1146
1118
  }
1147
1119
 
1148
- // ─── writeIntegrationBranch: commitDocs false skips commit ──────────
1120
+ // ─── writeIntegrationBranch: no commit (metadata in external storage) ──
1149
1121
 
1150
- console.log("\n=== writeIntegrationBranch: commitDocs false skips commit ===");
1122
+ console.log("\n=== writeIntegrationBranch: no commit ===");
1151
1123
 
1152
1124
  {
1153
1125
  const repo = initBranchTestRepo();
1154
1126
  const commitsBefore = run("git rev-list --count HEAD", repo);
1155
1127
 
1156
- writeIntegrationBranch(repo, "M001", "f-123-new-thing", { commitDocs: false });
1128
+ writeIntegrationBranch(repo, "M001", "f-123-new-thing");
1157
1129
 
1158
1130
  // File should still be written to disk
1159
1131
  assertEq(readIntegrationBranch(repo, "M001"), "f-123-new-thing",
1160
- "commitDocs=false: metadata file exists on disk");
1132
+ "writeIntegrationBranch: metadata file exists on disk");
1161
1133
 
1162
- // But no new commit should have been created
1134
+ // No commit .gsd/ is managed externally
1163
1135
  const commitsAfter = run("git rev-list --count HEAD", repo);
1164
1136
  assertEq(commitsBefore, commitsAfter,
1165
- "commitDocs=false: no git commit created for integration branch");
1137
+ "writeIntegrationBranch: no git commit created for integration branch");
1166
1138
 
1167
1139
  rmSync(repo, { recursive: true, force: true });
1168
1140
  }
@@ -28,18 +28,12 @@ const BASE_VARS = {
28
28
  sourceFilePaths: "- **Requirements**: `.gsd/REQUIREMENTS.md`",
29
29
  };
30
30
 
31
- test("plan-slice prompt: commit step present when commit_docs=true", () => {
32
- const result = loadPrompt("plan-slice", { ...BASE_VARS, commitInstruction: "Commit: `docs(S01): add slice plan`" });
33
- assert.ok(result.includes("docs(S01): add slice plan"));
31
+ test("plan-slice prompt: commit instruction says do not commit (external state)", () => {
32
+ const result = loadPrompt("plan-slice", { ...BASE_VARS, commitInstruction: "Do not commit planning artifacts — .gsd/ is managed externally." });
33
+ assert.ok(result.includes("Do not commit planning artifacts"));
34
34
  assert.ok(!result.includes("{{commitInstruction}}"));
35
35
  });
36
36
 
37
- test("plan-slice prompt: no commit step when commit_docs=false", () => {
38
- const result = loadPrompt("plan-slice", { ...BASE_VARS, commitInstruction: "Do not commit — planning docs are not tracked in git for this project." });
39
- assert.ok(!result.includes("docs(S01): add slice plan"));
40
- assert.ok(result.includes("Do not commit"));
41
- });
42
-
43
37
  test("plan-slice prompt: all variables substituted", () => {
44
38
  const result = loadPrompt("plan-slice", { ...BASE_VARS, commitInstruction: "Commit: `docs(S01): add slice plan`" });
45
39
  assert.ok(!result.includes("{{"));
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Preferences tests — consolidated from:
3
- * - preferences-git.test.ts (git.isolation, git.merge_to_main, git.commit_docs)
3
+ * - preferences-git.test.ts (git.isolation, git.merge_to_main)
4
4
  * - preferences-hooks.test.ts (post-unit + pre-dispatch hook config)
5
5
  * - preferences-mode.test.ts (solo/team mode defaults, overrides)
6
6
  * - preferences-models.test.ts (model config parsing, OpenRouter, CRLF)
@@ -39,14 +39,6 @@ test("git.merge_to_main produces deprecation warning", () => {
39
39
  }
40
40
  });
41
41
 
42
- test("git.commit_docs accepts boolean, rejects string", () => {
43
- const { errors: e1, preferences: p1 } = validatePreferences({ git: { commit_docs: false } });
44
- assert.equal(e1.length, 0);
45
- assert.equal(p1.git?.commit_docs, false);
46
-
47
- const { errors: e2 } = validatePreferences({ git: { commit_docs: "no" as any } });
48
- assert.ok(e2.length > 0);
49
- });
50
42
 
51
43
  test("getIsolationMode defaults to worktree when no prefs file", { skip: "requires no global ~/.gsd/preferences.md" }, () => {
52
44
  assert.equal(getIsolationMode(), "worktree");
@@ -108,10 +108,7 @@ async function main(): Promise<void> {
108
108
  assertEq(readIntegrationBranch(repo, "M001"), "f-123-thing",
109
109
  "captureIntegrationBranch records the current branch");
110
110
 
111
- // Verify it was committed (not just written to disk)
112
- const logOut = run("git log --oneline -1", repo);
113
- assertTrue(logOut.includes("integration branch"), "metadata committed to git");
114
-
111
+ // .gsd/ metadata is written to disk only (not committed) since commit_docs removal
115
112
  rmSync(repo, { recursive: true, force: true });
116
113
  }
117
114
 
@@ -56,13 +56,13 @@ export function setActiveMilestoneId(basePath: string, milestoneId: string | nul
56
56
  * record when the user starts from a different branch (#300). Always a no-op
57
57
  * if on a GSD slice branch.
58
58
  */
59
- export function captureIntegrationBranch(basePath: string, milestoneId: string, options?: { commitDocs?: boolean }): void {
59
+ export function captureIntegrationBranch(basePath: string, milestoneId: string): void {
60
60
  // In a worktree, the base branch is implicit (worktree/<name>).
61
61
  // Writing it to META.json would leave stale metadata after merge back to main.
62
62
  if (detectWorktreeName(basePath)) return;
63
63
  const svc = getService(basePath);
64
64
  const current = svc.getCurrentBranch();
65
- writeIntegrationBranch(basePath, milestoneId, current, options);
65
+ writeIntegrationBranch(basePath, milestoneId, current);
66
66
  }
67
67
 
68
68
  // ─── Pure Utility Functions (unchanged) ────────────────────────────────────
@@ -0,0 +1,34 @@
1
+ /**
2
+ * GSD Worktree CLI — standalone subcommand and -w flag handling.
3
+ *
4
+ * Manages the full worktree lifecycle from the command line:
5
+ * gsd -w Create auto-named worktree, start interactive session
6
+ * gsd -w my-feature Create/resume named worktree
7
+ * gsd worktree list List worktrees with status
8
+ * gsd worktree merge [name] Squash-merge a worktree into main
9
+ * gsd worktree clean Remove all merged/empty worktrees
10
+ * gsd worktree remove <n> Remove a specific worktree
11
+ *
12
+ * On session exit (via session_shutdown event), auto-commits dirty work
13
+ * so nothing is lost. The GSD extension reads GSD_CLI_WORKTREE to know
14
+ * when a session was launched via -w.
15
+ */
16
+ interface WorktreeStatus {
17
+ name: string;
18
+ path: string;
19
+ branch: string;
20
+ exists: boolean;
21
+ filesChanged: number;
22
+ linesAdded: number;
23
+ linesRemoved: number;
24
+ uncommitted: boolean;
25
+ commits: number;
26
+ }
27
+ declare function getWorktreeStatus(basePath: string, name: string, wtPath: string): WorktreeStatus;
28
+ declare function handleList(basePath: string): void;
29
+ declare function handleMerge(basePath: string, args: string[]): Promise<void>;
30
+ declare function handleClean(basePath: string): void;
31
+ declare function handleRemove(basePath: string, args: string[]): void;
32
+ declare function handleStatusBanner(basePath: string): void;
33
+ declare function handleWorktreeFlag(worktreeFlag: boolean | string): void;
34
+ export { handleList, handleMerge, handleClean, handleRemove, handleStatusBanner, handleWorktreeFlag, getWorktreeStatus, };
@@ -0,0 +1,294 @@
1
+ /**
2
+ * GSD Worktree CLI — standalone subcommand and -w flag handling.
3
+ *
4
+ * Manages the full worktree lifecycle from the command line:
5
+ * gsd -w Create auto-named worktree, start interactive session
6
+ * gsd -w my-feature Create/resume named worktree
7
+ * gsd worktree list List worktrees with status
8
+ * gsd worktree merge [name] Squash-merge a worktree into main
9
+ * gsd worktree clean Remove all merged/empty worktrees
10
+ * gsd worktree remove <n> Remove a specific worktree
11
+ *
12
+ * On session exit (via session_shutdown event), auto-commits dirty work
13
+ * so nothing is lost. The GSD extension reads GSD_CLI_WORKTREE to know
14
+ * when a session was launched via -w.
15
+ */
16
+ import chalk from 'chalk';
17
+ import { createWorktree, listWorktrees, removeWorktree, mergeWorktreeToMain, diffWorktreeAll, diffWorktreeNumstat, worktreeBranchName, } from './resources/extensions/gsd/worktree-manager.js';
18
+ import { runWorktreePostCreateHook } from './resources/extensions/gsd/auto-worktree.js';
19
+ import { generateWorktreeName } from './worktree-name-gen.js';
20
+ import { nativeHasChanges, nativeDetectMainBranch, nativeCommitCountBetween, } from './resources/extensions/gsd/native-git-bridge.js';
21
+ import { inferCommitType } from './resources/extensions/gsd/git-service.js';
22
+ import { existsSync } from 'node:fs';
23
+ // ─── Status Helpers ─────────────────────────────────────────────────────────
24
+ function getWorktreeStatus(basePath, name, wtPath) {
25
+ const diff = diffWorktreeAll(basePath, name);
26
+ const numstat = diffWorktreeNumstat(basePath, name);
27
+ const filesChanged = diff.added.length + diff.modified.length + diff.removed.length;
28
+ let linesAdded = 0;
29
+ let linesRemoved = 0;
30
+ for (const s of numstat) {
31
+ linesAdded += s.added;
32
+ linesRemoved += s.removed;
33
+ }
34
+ let uncommitted = false;
35
+ try {
36
+ uncommitted = existsSync(wtPath) && nativeHasChanges(wtPath);
37
+ }
38
+ catch { /* */ }
39
+ let commits = 0;
40
+ try {
41
+ const mainBranch = nativeDetectMainBranch(basePath);
42
+ commits = nativeCommitCountBetween(basePath, mainBranch, worktreeBranchName(name));
43
+ }
44
+ catch { /* */ }
45
+ return {
46
+ name,
47
+ path: wtPath,
48
+ branch: worktreeBranchName(name),
49
+ exists: existsSync(wtPath),
50
+ filesChanged,
51
+ linesAdded,
52
+ linesRemoved,
53
+ uncommitted,
54
+ commits,
55
+ };
56
+ }
57
+ // ─── Formatters ─────────────────────────────────────────────────────────────
58
+ function formatStatus(s) {
59
+ const lines = [];
60
+ const badge = s.uncommitted
61
+ ? chalk.yellow(' (uncommitted)')
62
+ : s.filesChanged > 0
63
+ ? chalk.cyan(' (unmerged)')
64
+ : chalk.green(' (clean)');
65
+ lines.push(` ${chalk.bold.cyan(s.name)}${badge}`);
66
+ lines.push(` ${chalk.dim('branch')} ${chalk.magenta(s.branch)}`);
67
+ lines.push(` ${chalk.dim('path')} ${chalk.dim(s.path)}`);
68
+ if (s.filesChanged > 0) {
69
+ lines.push(` ${chalk.dim('diff')} ${s.filesChanged} files, ${chalk.green(`+${s.linesAdded}`)} ${chalk.red(`-${s.linesRemoved}`)}, ${s.commits} commit${s.commits === 1 ? '' : 's'}`);
70
+ }
71
+ return lines.join('\n');
72
+ }
73
+ // ─── Subcommand: list ───────────────────────────────────────────────────────
74
+ function handleList(basePath) {
75
+ const worktrees = listWorktrees(basePath);
76
+ if (worktrees.length === 0) {
77
+ process.stderr.write(chalk.dim('No worktrees. Create one with: gsd -w <name>\n'));
78
+ return;
79
+ }
80
+ process.stderr.write(chalk.bold('\nWorktrees\n\n'));
81
+ for (const wt of worktrees) {
82
+ const status = getWorktreeStatus(basePath, wt.name, wt.path);
83
+ process.stderr.write(formatStatus(status) + '\n\n');
84
+ }
85
+ }
86
+ // ─── Subcommand: merge ──────────────────────────────────────────────────────
87
+ async function handleMerge(basePath, args) {
88
+ const name = args[0];
89
+ if (!name) {
90
+ // If only one worktree exists, merge it
91
+ const worktrees = listWorktrees(basePath);
92
+ if (worktrees.length === 1) {
93
+ await doMerge(basePath, worktrees[0].name);
94
+ return;
95
+ }
96
+ process.stderr.write(chalk.red('Usage: gsd worktree merge <name>\n'));
97
+ process.stderr.write(chalk.dim('Run gsd worktree list to see worktrees.\n'));
98
+ process.exit(1);
99
+ }
100
+ await doMerge(basePath, name);
101
+ }
102
+ async function doMerge(basePath, name) {
103
+ const worktrees = listWorktrees(basePath);
104
+ const wt = worktrees.find(w => w.name === name);
105
+ if (!wt) {
106
+ process.stderr.write(chalk.red(`Worktree "${name}" not found.\n`));
107
+ process.exit(1);
108
+ }
109
+ const status = getWorktreeStatus(basePath, name, wt.path);
110
+ if (status.filesChanged === 0 && !status.uncommitted) {
111
+ process.stderr.write(chalk.dim(`Worktree "${name}" has no changes to merge.\n`));
112
+ // Clean up empty worktree
113
+ removeWorktree(basePath, name, { deleteBranch: true });
114
+ process.stderr.write(chalk.green(`Removed empty worktree ${chalk.bold(name)}.\n`));
115
+ return;
116
+ }
117
+ // Auto-commit dirty work before merge
118
+ if (status.uncommitted) {
119
+ try {
120
+ const { autoCommitCurrentBranch } = await import('./resources/extensions/gsd/worktree.js');
121
+ autoCommitCurrentBranch(wt.path, 'worktree-merge', name);
122
+ process.stderr.write(chalk.dim(' Auto-committed dirty work before merge.\n'));
123
+ }
124
+ catch { /* best-effort */ }
125
+ }
126
+ const commitType = inferCommitType(name);
127
+ const commitMessage = `${commitType}(${name}): merge worktree ${name}`;
128
+ process.stderr.write(`\nMerging ${chalk.bold.cyan(name)} → ${chalk.magenta(nativeDetectMainBranch(basePath))}\n`);
129
+ process.stderr.write(chalk.dim(` ${status.filesChanged} files, ${chalk.green(`+${status.linesAdded}`)} ${chalk.red(`-${status.linesRemoved}`)}\n\n`));
130
+ try {
131
+ mergeWorktreeToMain(basePath, name, commitMessage);
132
+ removeWorktree(basePath, name, { deleteBranch: true });
133
+ process.stderr.write(chalk.green(`✓ Merged and cleaned up ${chalk.bold(name)}\n`));
134
+ process.stderr.write(chalk.dim(` commit: ${commitMessage}\n`));
135
+ }
136
+ catch (err) {
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ process.stderr.write(chalk.red(`✗ Merge failed: ${msg}\n`));
139
+ process.stderr.write(chalk.dim(' Resolve conflicts manually, then run gsd worktree merge again.\n'));
140
+ process.exit(1);
141
+ }
142
+ }
143
+ // ─── Subcommand: clean ──────────────────────────────────────────────────────
144
+ function handleClean(basePath) {
145
+ const worktrees = listWorktrees(basePath);
146
+ if (worktrees.length === 0) {
147
+ process.stderr.write(chalk.dim('No worktrees to clean.\n'));
148
+ return;
149
+ }
150
+ let cleaned = 0;
151
+ for (const wt of worktrees) {
152
+ const status = getWorktreeStatus(basePath, wt.name, wt.path);
153
+ if (status.filesChanged === 0 && !status.uncommitted) {
154
+ try {
155
+ removeWorktree(basePath, wt.name, { deleteBranch: true });
156
+ process.stderr.write(chalk.green(` ✓ Removed ${chalk.bold(wt.name)} (clean)\n`));
157
+ cleaned++;
158
+ }
159
+ catch {
160
+ process.stderr.write(chalk.yellow(` ✗ Failed to remove ${wt.name}\n`));
161
+ }
162
+ }
163
+ else {
164
+ process.stderr.write(chalk.dim(` ─ Kept ${chalk.bold(wt.name)} (${status.filesChanged} changed files)\n`));
165
+ }
166
+ }
167
+ process.stderr.write(chalk.dim(`\nCleaned ${cleaned} worktree${cleaned === 1 ? '' : 's'}.\n`));
168
+ }
169
+ // ─── Subcommand: remove ─────────────────────────────────────────────────────
170
+ function handleRemove(basePath, args) {
171
+ const name = args[0];
172
+ if (!name) {
173
+ process.stderr.write(chalk.red('Usage: gsd worktree remove <name>\n'));
174
+ process.exit(1);
175
+ }
176
+ const worktrees = listWorktrees(basePath);
177
+ const wt = worktrees.find(w => w.name === name);
178
+ if (!wt) {
179
+ process.stderr.write(chalk.red(`Worktree "${name}" not found.\n`));
180
+ process.exit(1);
181
+ }
182
+ const status = getWorktreeStatus(basePath, name, wt.path);
183
+ if (status.filesChanged > 0 || status.uncommitted) {
184
+ process.stderr.write(chalk.yellow(`⚠ Worktree "${name}" has unmerged changes (${status.filesChanged} files).\n`));
185
+ process.stderr.write(chalk.yellow(' Use --force to remove anyway, or merge first: gsd worktree merge ' + name + '\n'));
186
+ if (!process.argv.includes('--force')) {
187
+ process.exit(1);
188
+ }
189
+ }
190
+ removeWorktree(basePath, name, { deleteBranch: true });
191
+ process.stderr.write(chalk.green(`✓ Removed worktree ${chalk.bold(name)}\n`));
192
+ }
193
+ // ─── Subcommand: status (default when no args) ─────────────────────────────
194
+ function handleStatusBanner(basePath) {
195
+ const worktrees = listWorktrees(basePath);
196
+ if (worktrees.length === 0)
197
+ return;
198
+ const withChanges = worktrees.filter(wt => {
199
+ try {
200
+ const diff = diffWorktreeAll(basePath, wt.name);
201
+ return diff.added.length + diff.modified.length + diff.removed.length > 0;
202
+ }
203
+ catch {
204
+ return false;
205
+ }
206
+ });
207
+ if (withChanges.length === 0)
208
+ return;
209
+ const names = withChanges.map(w => chalk.cyan(w.name)).join(', ');
210
+ process.stderr.write(chalk.dim('[gsd] ') +
211
+ chalk.yellow(`${withChanges.length} worktree${withChanges.length === 1 ? '' : 's'} with unmerged changes: `) +
212
+ names + '\n' +
213
+ chalk.dim('[gsd] ') +
214
+ chalk.dim('Resume: gsd -w <name> | Merge: gsd worktree merge <name> | List: gsd worktree list\n\n'));
215
+ }
216
+ // ─── -w flag: create/resume worktree for interactive session ────────────────
217
+ function handleWorktreeFlag(worktreeFlag) {
218
+ const basePath = process.cwd();
219
+ // gsd -w (no name) — resume most recent worktree with changes, or create new
220
+ if (worktreeFlag === true) {
221
+ const existing = listWorktrees(basePath);
222
+ const withChanges = existing.filter(wt => {
223
+ try {
224
+ const diff = diffWorktreeAll(basePath, wt.name);
225
+ return diff.added.length + diff.modified.length + diff.removed.length > 0;
226
+ }
227
+ catch {
228
+ return false;
229
+ }
230
+ });
231
+ if (withChanges.length === 1) {
232
+ // Single active worktree — resume it
233
+ const wt = withChanges[0];
234
+ process.chdir(wt.path);
235
+ process.env.GSD_CLI_WORKTREE = wt.name;
236
+ process.env.GSD_CLI_WORKTREE_BASE = basePath;
237
+ process.stderr.write(chalk.green(`✓ Resumed worktree ${chalk.bold(wt.name)}\n`));
238
+ process.stderr.write(chalk.dim(` path ${wt.path}\n`));
239
+ process.stderr.write(chalk.dim(` branch ${wt.branch}\n\n`));
240
+ return;
241
+ }
242
+ if (withChanges.length > 1) {
243
+ // Multiple active worktrees — show them and ask user to pick
244
+ process.stderr.write(chalk.yellow(`${withChanges.length} worktrees have unmerged changes:\n\n`));
245
+ for (const wt of withChanges) {
246
+ const status = getWorktreeStatus(basePath, wt.name, wt.path);
247
+ process.stderr.write(formatStatus(status) + '\n\n');
248
+ }
249
+ process.stderr.write(chalk.dim('Specify which one: gsd -w <name>\n'));
250
+ process.exit(0);
251
+ }
252
+ // No active worktrees — create a new one
253
+ const name = generateWorktreeName();
254
+ createAndEnter(basePath, name);
255
+ return;
256
+ }
257
+ // gsd -w <name> — create or resume named worktree
258
+ const name = worktreeFlag;
259
+ const existing = listWorktrees(basePath);
260
+ const found = existing.find(wt => wt.name === name);
261
+ if (found) {
262
+ process.chdir(found.path);
263
+ process.env.GSD_CLI_WORKTREE = name;
264
+ process.env.GSD_CLI_WORKTREE_BASE = basePath;
265
+ process.stderr.write(chalk.green(`✓ Resumed worktree ${chalk.bold(name)}\n`));
266
+ process.stderr.write(chalk.dim(` path ${found.path}\n`));
267
+ process.stderr.write(chalk.dim(` branch ${found.branch}\n\n`));
268
+ }
269
+ else {
270
+ createAndEnter(basePath, name);
271
+ }
272
+ }
273
+ function createAndEnter(basePath, name) {
274
+ try {
275
+ const info = createWorktree(basePath, name);
276
+ const hookError = runWorktreePostCreateHook(basePath, info.path);
277
+ if (hookError) {
278
+ process.stderr.write(chalk.yellow(`[gsd] ${hookError}\n`));
279
+ }
280
+ process.chdir(info.path);
281
+ process.env.GSD_CLI_WORKTREE = name;
282
+ process.env.GSD_CLI_WORKTREE_BASE = basePath;
283
+ process.stderr.write(chalk.green(`✓ Created worktree ${chalk.bold(name)}\n`));
284
+ process.stderr.write(chalk.dim(` path ${info.path}\n`));
285
+ process.stderr.write(chalk.dim(` branch ${info.branch}\n\n`));
286
+ }
287
+ catch (err) {
288
+ const msg = err instanceof Error ? err.message : String(err);
289
+ process.stderr.write(chalk.red(`[gsd] Failed to create worktree: ${msg}\n`));
290
+ process.exit(1);
291
+ }
292
+ }
293
+ // ─── Exports ────────────────────────────────────────────────────────────────
294
+ export { handleList, handleMerge, handleClean, handleRemove, handleStatusBanner, handleWorktreeFlag, getWorktreeStatus, };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Random worktree name generator.
3
+ *
4
+ * Produces names in the pattern: adjective-verbing-noun
5
+ * e.g. "noble-roaming-karp", "swift-whistling-matsumoto"
6
+ */
7
+ export declare function generateWorktreeName(): string;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Random worktree name generator.
3
+ *
4
+ * Produces names in the pattern: adjective-verbing-noun
5
+ * e.g. "noble-roaming-karp", "swift-whistling-matsumoto"
6
+ */
7
+ const ADJECTIVES = [
8
+ 'agile', 'bold', 'brave', 'bright', 'calm', 'clear', 'cool', 'crisp',
9
+ 'dapper', 'eager', 'fair', 'fast', 'fierce', 'fine', 'fleet', 'fond',
10
+ 'gentle', 'glad', 'grand', 'happy', 'keen', 'kind', 'lively', 'lucid',
11
+ 'mellow', 'merry', 'mighty', 'neat', 'nimble', 'noble', 'plucky', 'polite',
12
+ 'proud', 'quiet', 'rapid', 'ready', 'serene', 'sharp', 'sleek', 'sleepy',
13
+ 'smooth', 'snappy', 'steady', 'sturdy', 'sunny', 'sure', 'swift', 'tidy',
14
+ 'tough', 'tranquil', 'vivid', 'warm', 'wise', 'witty', 'zesty',
15
+ ];
16
+ const VERBS = [
17
+ 'baking', 'bouncing', 'building', 'carving', 'chasing', 'climbing',
18
+ 'coding', 'crafting', 'dancing', 'dashing', 'diving', 'drawing',
19
+ 'dreaming', 'drifting', 'drumming', 'exploring', 'fishing', 'floating',
20
+ 'flying', 'forging', 'gliding', 'growing', 'hiking', 'humming',
21
+ 'jumping', 'juggling', 'knitting', 'laughing', 'leaping', 'mapping',
22
+ 'mixing', 'painting', 'planting', 'playing', 'racing', 'reading',
23
+ 'riding', 'roaming', 'rowing', 'running', 'sailing', 'singing',
24
+ 'skating', 'sketching', 'spinning', 'squishing', 'surfing', 'swimming',
25
+ 'thinking', 'threading', 'tracing', 'walking', 'weaving', 'whistling',
26
+ 'writing',
27
+ ];
28
+ const NOUNS = [
29
+ 'atlas', 'aurora', 'balloon', 'beacon', 'bolt', 'brook', 'canyon',
30
+ 'cedar', 'comet', 'cook', 'coral', 'cosmos', 'crest', 'dawn', 'delta',
31
+ 'echo', 'ember', 'falcon', 'fern', 'flare', 'frost', 'gale', 'glacier',
32
+ 'grove', 'harbor', 'hawk', 'horizon', 'iris', 'jade', 'karp', 'lantern',
33
+ 'lark', 'luna', 'maple', 'marsh', 'matsumoto', 'mesa', 'nebula', 'oasis',
34
+ 'orbit', 'otter', 'pebble', 'phoenix', 'pine', 'prism', 'puppy', 'quartz',
35
+ 'raven', 'reef', 'ridge', 'river', 'sage', 'shore', 'sierra', 'spark',
36
+ 'sprout', 'stone', 'summit', 'thorn', 'tide', 'topaz', 'trail', 'vale',
37
+ 'violet', 'wave', 'willow', 'zenith',
38
+ ];
39
+ function pick(arr) {
40
+ return arr[Math.floor(Math.random() * arr.length)];
41
+ }
42
+ export function generateWorktreeName() {
43
+ return `${pick(ADJECTIVES)}-${pick(VERBS)}-${pick(NOUNS)}`;
44
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-pi",
3
- "version": "2.30.0-dev.92a3417",
3
+ "version": "2.30.0-dev.ab42fba",
4
4
  "description": "GSD — Get Shit Done coding agent",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
@@ -1757,6 +1757,20 @@ export class AgentSession {
1757
1757
  });
1758
1758
  });
1759
1759
  },
1760
+ retryLastTurn: () => {
1761
+ const messages = this.agent.state.messages;
1762
+ const last = messages[messages.length - 1];
1763
+ if (last?.role === "assistant" && last.stopReason === "error") {
1764
+ this.agent.replaceMessages(messages.slice(0, -1));
1765
+ this.agent.continue().catch((err) => {
1766
+ runner.emitError({
1767
+ extensionPath: "<runtime>",
1768
+ event: "retry_last_turn",
1769
+ error: err instanceof Error ? err.message : String(err),
1770
+ });
1771
+ });
1772
+ }
1773
+ },
1760
1774
  appendEntry: (customType, data) => {
1761
1775
  this.sessionManager.appendCustomEntry(customType, data);
1762
1776
  },