cluttry 1.0.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +203 -300
  3. package/dist/commands/completions.d.ts +16 -0
  4. package/dist/commands/completions.d.ts.map +1 -0
  5. package/dist/commands/completions.js +46 -0
  6. package/dist/commands/completions.js.map +1 -0
  7. package/dist/commands/explain-copy.d.ts +11 -0
  8. package/dist/commands/explain-copy.d.ts.map +1 -0
  9. package/dist/commands/explain-copy.js +34 -0
  10. package/dist/commands/explain-copy.js.map +1 -0
  11. package/dist/commands/finish.d.ts +20 -0
  12. package/dist/commands/finish.d.ts.map +1 -0
  13. package/dist/commands/finish.js +817 -0
  14. package/dist/commands/finish.js.map +1 -0
  15. package/dist/commands/gc.d.ts +22 -0
  16. package/dist/commands/gc.d.ts.map +1 -0
  17. package/dist/commands/gc.js +163 -0
  18. package/dist/commands/gc.js.map +1 -0
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +1 -0
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/open.d.ts +15 -1
  23. package/dist/commands/open.d.ts.map +1 -1
  24. package/dist/commands/open.js +96 -17
  25. package/dist/commands/open.js.map +1 -1
  26. package/dist/commands/resume.d.ts +21 -0
  27. package/dist/commands/resume.d.ts.map +1 -0
  28. package/dist/commands/resume.js +106 -0
  29. package/dist/commands/resume.js.map +1 -0
  30. package/dist/commands/rm.d.ts.map +1 -1
  31. package/dist/commands/rm.js +6 -14
  32. package/dist/commands/rm.js.map +1 -1
  33. package/dist/commands/spawn.d.ts +3 -0
  34. package/dist/commands/spawn.d.ts.map +1 -1
  35. package/dist/commands/spawn.js +182 -19
  36. package/dist/commands/spawn.js.map +1 -1
  37. package/dist/index.d.ts +4 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +198 -9
  40. package/dist/index.js.map +1 -1
  41. package/dist/lib/completions.d.ts +35 -0
  42. package/dist/lib/completions.d.ts.map +1 -0
  43. package/dist/lib/completions.js +368 -0
  44. package/dist/lib/completions.js.map +1 -0
  45. package/dist/lib/config.d.ts.map +1 -1
  46. package/dist/lib/config.js +2 -0
  47. package/dist/lib/config.js.map +1 -1
  48. package/dist/lib/errors.d.ts +43 -0
  49. package/dist/lib/errors.d.ts.map +1 -0
  50. package/dist/lib/errors.js +251 -0
  51. package/dist/lib/errors.js.map +1 -0
  52. package/dist/lib/git.d.ts +17 -0
  53. package/dist/lib/git.d.ts.map +1 -1
  54. package/dist/lib/git.js +78 -10
  55. package/dist/lib/git.js.map +1 -1
  56. package/dist/lib/safety.d.ts +79 -0
  57. package/dist/lib/safety.d.ts.map +1 -0
  58. package/dist/lib/safety.js +133 -0
  59. package/dist/lib/safety.js.map +1 -0
  60. package/dist/lib/secrets.d.ts +29 -0
  61. package/dist/lib/secrets.d.ts.map +1 -1
  62. package/dist/lib/secrets.js +115 -0
  63. package/dist/lib/secrets.js.map +1 -1
  64. package/dist/lib/session.d.ts +93 -0
  65. package/dist/lib/session.d.ts.map +1 -0
  66. package/dist/lib/session.js +254 -0
  67. package/dist/lib/session.js.map +1 -0
  68. package/dist/lib/types.d.ts +6 -1
  69. package/dist/lib/types.d.ts.map +1 -1
  70. package/package.json +1 -1
  71. package/.claude/settings.local.json +0 -7
  72. package/src/commands/doctor.ts +0 -222
  73. package/src/commands/init.ts +0 -120
  74. package/src/commands/list.ts +0 -133
  75. package/src/commands/open.ts +0 -78
  76. package/src/commands/prune.ts +0 -36
  77. package/src/commands/rm.ts +0 -125
  78. package/src/commands/shell.ts +0 -99
  79. package/src/commands/spawn.ts +0 -169
  80. package/src/index.ts +0 -123
  81. package/src/lib/config.ts +0 -120
  82. package/src/lib/git.ts +0 -243
  83. package/src/lib/output.ts +0 -102
  84. package/src/lib/paths.ts +0 -108
  85. package/src/lib/secrets.ts +0 -193
  86. package/src/lib/types.ts +0 -69
  87. package/tests/config.test.ts +0 -102
  88. package/tests/paths.test.ts +0 -155
  89. package/tests/secrets.test.ts +0 -150
  90. package/tsconfig.json +0 -20
  91. package/vitest.config.ts +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/lib/safety.ts"],"names":[],"mappings":"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"}
@@ -42,9 +42,38 @@ export declare function copyFile(relativePath: string, sourceRoot: string, targe
42
42
  export declare function createSymlink(relativePath: string, sourceRoot: string, targetRoot: string): void;
43
43
  /**
44
44
  * Process files according to mode (copy or symlink)
45
+ * SAFETY: Only processes files that pass safety checks (not tracked, is ignored)
45
46
  */
46
47
  export declare function processSecrets(mode: SecretMode, patterns: string[], sourceRoot: string, targetRoot: string): Promise<{
47
48
  processed: string[];
48
49
  skipped: FileCheckResult[];
49
50
  }>;
51
+ /**
52
+ * Copy plan for explain-copy and spawn --dry-run
53
+ */
54
+ export interface CopyPlan {
55
+ /** Files that will be copied/symlinked */
56
+ willCopy: Array<{
57
+ path: string;
58
+ reason: string;
59
+ }>;
60
+ /** Files that are blocked from copying */
61
+ blocked: Array<{
62
+ path: string;
63
+ reason: string;
64
+ type: 'tracked' | 'not_ignored' | 'not_found';
65
+ }>;
66
+ /** Warnings about include patterns */
67
+ warnings: string[];
68
+ /** Patterns from config */
69
+ patterns: string[];
70
+ }
71
+ /**
72
+ * Generate a copy plan explaining what will/won't be copied
73
+ */
74
+ export declare function generateCopyPlan(patterns: string[], repoRoot: string): Promise<CopyPlan>;
75
+ /**
76
+ * Format a copy plan for human-readable output
77
+ */
78
+ export declare function formatCopyPlan(plan: CopyPlan, mode: SecretMode): string;
50
79
  //# sourceMappingURL=secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CA+BnF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAgBjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAYN;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CA2B9D"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CA+BnF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAgBjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAYN;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAuC9D;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,0CAA0C;IAC1C,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;KAC/C,CAAC,CAAC;IACH,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,CAAC,CAmDnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAgDvE"}
@@ -8,6 +8,8 @@ import { existsSync, copyFileSync, symlinkSync, mkdirSync } from 'node:fs';
8
8
  import path from 'node:path';
9
9
  import { glob } from 'glob';
10
10
  import { isTracked, isIgnored } from './git.js';
11
+ import { validateFileCopy } from './safety.js';
12
+ import * as out from './output.js';
11
13
  /**
12
14
  * Check if a file is safe to copy/symlink
13
15
  * A file is safe if:
@@ -115,6 +117,7 @@ export function createSymlink(relativePath, sourceRoot, targetRoot) {
115
117
  }
116
118
  /**
117
119
  * Process files according to mode (copy or symlink)
120
+ * SAFETY: Only processes files that pass safety checks (not tracked, is ignored)
118
121
  */
119
122
  export async function processSecrets(mode, patterns, sourceRoot, targetRoot) {
120
123
  if (mode === 'none') {
@@ -123,6 +126,16 @@ export async function processSecrets(mode, patterns, sourceRoot, targetRoot) {
123
126
  const { safe, unsafe } = await getSafeFiles(patterns, sourceRoot);
124
127
  const processed = [];
125
128
  for (const file of safe) {
129
+ // SAFETY: Validate file copy decision before proceeding
130
+ const decision = {
131
+ path: file.path,
132
+ allowed: file.safe,
133
+ reason: file.reason ?? 'File is gitignored and not tracked',
134
+ isTracked: file.isTracked,
135
+ isIgnored: file.isIgnored,
136
+ };
137
+ // This will throw if safety constraints are violated
138
+ validateFileCopy(decision);
126
139
  try {
127
140
  if (mode === 'copy') {
128
141
  copyFile(file.path, sourceRoot, targetRoot);
@@ -143,4 +156,106 @@ export async function processSecrets(mode, patterns, sourceRoot, targetRoot) {
143
156
  }
144
157
  return { processed, skipped: unsafe };
145
158
  }
159
+ /**
160
+ * Generate a copy plan explaining what will/won't be copied
161
+ */
162
+ export async function generateCopyPlan(patterns, repoRoot) {
163
+ const plan = {
164
+ willCopy: [],
165
+ blocked: [],
166
+ warnings: [],
167
+ patterns,
168
+ };
169
+ if (patterns.length === 0) {
170
+ return plan;
171
+ }
172
+ // Expand patterns and check each file
173
+ const files = await expandIncludePatterns(patterns, repoRoot);
174
+ for (const file of files) {
175
+ const result = checkFileSafety(file, repoRoot);
176
+ if (result.safe) {
177
+ plan.willCopy.push({
178
+ path: result.path,
179
+ reason: 'gitignored and exists',
180
+ });
181
+ }
182
+ else if (!result.exists) {
183
+ // Don't report non-existent files as blocked (pattern just didn't match anything real)
184
+ continue;
185
+ }
186
+ else if (result.isTracked) {
187
+ plan.blocked.push({
188
+ path: result.path,
189
+ reason: result.reason || 'File is tracked by git',
190
+ type: 'tracked',
191
+ });
192
+ plan.warnings.push(`Pattern matches tracked file: ${result.path} — tracked files are NEVER copied`);
193
+ }
194
+ else if (!result.isIgnored) {
195
+ plan.blocked.push({
196
+ path: result.path,
197
+ reason: result.reason || 'File is not in .gitignore',
198
+ type: 'not_ignored',
199
+ });
200
+ }
201
+ else {
202
+ plan.blocked.push({
203
+ path: result.path,
204
+ reason: result.reason || 'Unknown safety issue',
205
+ type: 'not_found',
206
+ });
207
+ }
208
+ }
209
+ return plan;
210
+ }
211
+ /**
212
+ * Format a copy plan for human-readable output
213
+ */
214
+ export function formatCopyPlan(plan, mode) {
215
+ const lines = [];
216
+ // Patterns
217
+ lines.push(out.fmt.bold('Include patterns:'));
218
+ if (plan.patterns.length === 0) {
219
+ lines.push(' (none configured)');
220
+ }
221
+ else {
222
+ for (const pattern of plan.patterns) {
223
+ lines.push(` ${out.fmt.dim('•')} ${pattern}`);
224
+ }
225
+ }
226
+ lines.push('');
227
+ // Warnings (if any)
228
+ if (plan.warnings.length > 0) {
229
+ lines.push(out.fmt.yellow(out.fmt.bold('⚠ Warnings:')));
230
+ for (const warning of plan.warnings) {
231
+ lines.push(` ${out.fmt.yellow('•')} ${warning}`);
232
+ }
233
+ lines.push('');
234
+ }
235
+ // Files that will be copied
236
+ lines.push(out.fmt.green(out.fmt.bold(`✓ Will ${mode === 'symlink' ? 'symlink' : 'copy'} (${plan.willCopy.length} file${plan.willCopy.length !== 1 ? 's' : ''}):`)));
237
+ if (plan.willCopy.length === 0) {
238
+ lines.push(` ${out.fmt.dim('(no files matched)')}`);
239
+ }
240
+ else {
241
+ for (const file of plan.willCopy) {
242
+ lines.push(` ${out.fmt.green('•')} ${file.path}`);
243
+ lines.push(` ${out.fmt.dim(file.reason)}`);
244
+ }
245
+ }
246
+ lines.push('');
247
+ // Files that are blocked
248
+ lines.push(out.fmt.red(out.fmt.bold(`✗ Blocked (${plan.blocked.length} file${plan.blocked.length !== 1 ? 's' : ''}):`)));
249
+ if (plan.blocked.length === 0) {
250
+ lines.push(` ${out.fmt.dim('(none)')}`);
251
+ }
252
+ else {
253
+ for (const file of plan.blocked) {
254
+ const icon = file.type === 'tracked' ? '🔒' : file.type === 'not_ignored' ? '⚠' : '?';
255
+ lines.push(` ${out.fmt.red('•')} ${icon} ${file.path}`);
256
+ lines.push(` ${out.fmt.dim(file.reason)}`);
257
+ }
258
+ }
259
+ return lines.join('\n');
260
+ }
146
261
  //# sourceMappingURL=secrets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAyB,MAAM,SAAS,CAAC;AAClG,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAYhD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC;QAChC,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,GAAG,qBAAqB,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,GAAG,6CAA6C,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,8DAA8D,CAAC;QAC/E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAkB,EAClB,QAAgB;IAEhB,MAAM,QAAQ,GAAgB,IAAI,GAAG,EAAE,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;gBAClC,GAAG,EAAE,QAAQ;gBACb,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;YACvC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAkB,EAClB,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,6CAA6C;YAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,YAAoB,EACpB,UAAkB,EAClB,UAAkB;IAElB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAoB,EACpB,UAAkB,EAClB,UAAkB;IAElB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,uDAAuD;IACvD,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAgB,EAChB,QAAkB,EAClB,UAAkB,EAClB,UAAkB;IAElB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACnD,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mCAAmC;YACnC,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,IAAI;gBACP,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,aAAa,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Session manifest management for cry
3
+ *
4
+ * Sessions track the lifecycle of a worktree from spawn to finish.
5
+ * Manifests are stored in .cry/sessions/<id>.json in the repo root.
6
+ */
7
+ export declare const SESSIONS_DIR = ".cry/sessions";
8
+ export interface SessionManifest {
9
+ /** Unique session identifier */
10
+ id: string;
11
+ /** Absolute path to the repository root (main worktree) */
12
+ repoRoot: string;
13
+ /** ISO timestamp when session was created */
14
+ createdAt: string;
15
+ /** Branch name for this worktree */
16
+ branch: string;
17
+ /** Branch we spawned from (base for PRs) */
18
+ baseBranch: string;
19
+ /** Absolute path to the worktree directory */
20
+ worktreePath: string;
21
+ /** Agent used for this session (optional) */
22
+ agent?: string;
23
+ /** Human-readable task name (optional) */
24
+ taskName?: string;
25
+ }
26
+ export interface CreateSessionOptions {
27
+ repoRoot: string;
28
+ branch: string;
29
+ baseBranch: string;
30
+ worktreePath: string;
31
+ agent?: string;
32
+ taskName?: string;
33
+ }
34
+ /**
35
+ * Get the sessions directory path for a repo
36
+ */
37
+ export declare function getSessionsDir(repoRoot: string): string;
38
+ /**
39
+ * Get the manifest file path for a session
40
+ */
41
+ export declare function getManifestPath(repoRoot: string, sessionId: string): string;
42
+ /**
43
+ * Ensure the sessions directory exists
44
+ */
45
+ export declare function ensureSessionsDir(repoRoot: string): void;
46
+ /**
47
+ * Create a new session manifest
48
+ */
49
+ export declare function createSessionManifest(options: CreateSessionOptions): SessionManifest;
50
+ /**
51
+ * Read a session manifest by ID
52
+ */
53
+ export declare function readSessionManifest(repoRoot: string, sessionId: string): SessionManifest | null;
54
+ /**
55
+ * List all sessions for a repository
56
+ */
57
+ export declare function listSessions(repoRoot: string): SessionManifest[];
58
+ /**
59
+ * Find session for the current working directory
60
+ *
61
+ * Strategy:
62
+ * 1. Check if CWD matches any session's worktreePath exactly
63
+ * 2. Check if CWD is inside any session's worktreePath
64
+ * 3. Fallback: use git worktree list to find current worktree, then match by branch
65
+ */
66
+ export declare function findSessionForCwd(cwd: string): SessionManifest | null;
67
+ /**
68
+ * Find the main repository root (where .cry/ lives)
69
+ *
70
+ * For worktrees, we need to trace back to the main repo.
71
+ */
72
+ export declare function findMainRepoRoot(cwd: string): string | null;
73
+ /**
74
+ * Delete a session by ID
75
+ */
76
+ export declare function deleteSession(repoRoot: string, sessionId: string): boolean;
77
+ /**
78
+ * Find session by branch name
79
+ */
80
+ export declare function findSessionByBranch(repoRoot: string, branch: string): SessionManifest | null;
81
+ /**
82
+ * Find session by worktree path
83
+ */
84
+ export declare function findSessionByWorktreePath(repoRoot: string, worktreePath: string): SessionManifest | null;
85
+ /**
86
+ * Update an existing session manifest
87
+ */
88
+ export declare function updateSessionManifest(repoRoot: string, sessionId: string, updates: Partial<Omit<SessionManifest, 'id' | 'createdAt'>>): SessionManifest | null;
89
+ /**
90
+ * Check if a worktree path has an associated session
91
+ */
92
+ export declare function hasSession(repoRoot: string, worktreePath: string): boolean;
93
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CAmBpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAY/F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAyBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA8DrE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAY1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAG5F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAIxG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAC1D,eAAe,GAAG,IAAI,CAiBxB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Session manifest management for cry
3
+ *
4
+ * Sessions track the lifecycle of a worktree from spawn to finish.
5
+ * Manifests are stored in .cry/sessions/<id>.json in the repo root.
6
+ */
7
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, readdirSync, unlinkSync, } from 'node:fs';
8
+ import path from 'node:path';
9
+ import { randomBytes } from 'node:crypto';
10
+ import { listWorktrees, getRepoRoot, isGitRepo } from './git.js';
11
+ export const SESSIONS_DIR = '.cry/sessions';
12
+ /**
13
+ * Generate a unique session ID
14
+ */
15
+ function generateSessionId() {
16
+ const timestamp = Date.now().toString(36);
17
+ const random = randomBytes(4).toString('hex');
18
+ return `${timestamp}-${random}`;
19
+ }
20
+ /**
21
+ * Get the sessions directory path for a repo
22
+ */
23
+ export function getSessionsDir(repoRoot) {
24
+ return path.join(repoRoot, SESSIONS_DIR);
25
+ }
26
+ /**
27
+ * Get the manifest file path for a session
28
+ */
29
+ export function getManifestPath(repoRoot, sessionId) {
30
+ return path.join(getSessionsDir(repoRoot), `${sessionId}.json`);
31
+ }
32
+ /**
33
+ * Ensure the sessions directory exists
34
+ */
35
+ export function ensureSessionsDir(repoRoot) {
36
+ const sessionsDir = getSessionsDir(repoRoot);
37
+ if (!existsSync(sessionsDir)) {
38
+ mkdirSync(sessionsDir, { recursive: true });
39
+ }
40
+ }
41
+ /**
42
+ * Create a new session manifest
43
+ */
44
+ export function createSessionManifest(options) {
45
+ const id = generateSessionId();
46
+ const manifest = {
47
+ id,
48
+ repoRoot: options.repoRoot,
49
+ createdAt: new Date().toISOString(),
50
+ branch: options.branch,
51
+ baseBranch: options.baseBranch,
52
+ worktreePath: options.worktreePath,
53
+ agent: options.agent,
54
+ taskName: options.taskName,
55
+ };
56
+ // Ensure directory exists and write manifest
57
+ ensureSessionsDir(options.repoRoot);
58
+ const manifestPath = getManifestPath(options.repoRoot, id);
59
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
60
+ return manifest;
61
+ }
62
+ /**
63
+ * Read a session manifest by ID
64
+ */
65
+ export function readSessionManifest(repoRoot, sessionId) {
66
+ const manifestPath = getManifestPath(repoRoot, sessionId);
67
+ if (!existsSync(manifestPath)) {
68
+ return null;
69
+ }
70
+ try {
71
+ const content = readFileSync(manifestPath, 'utf-8');
72
+ return JSON.parse(content);
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ /**
79
+ * List all sessions for a repository
80
+ */
81
+ export function listSessions(repoRoot) {
82
+ const sessionsDir = getSessionsDir(repoRoot);
83
+ if (!existsSync(sessionsDir)) {
84
+ return [];
85
+ }
86
+ const sessions = [];
87
+ const files = readdirSync(sessionsDir);
88
+ for (const file of files) {
89
+ if (!file.endsWith('.json'))
90
+ continue;
91
+ const sessionId = file.replace('.json', '');
92
+ const manifest = readSessionManifest(repoRoot, sessionId);
93
+ if (manifest) {
94
+ sessions.push(manifest);
95
+ }
96
+ }
97
+ // Sort by creation time, newest first
98
+ sessions.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
99
+ return sessions;
100
+ }
101
+ /**
102
+ * Find session for the current working directory
103
+ *
104
+ * Strategy:
105
+ * 1. Check if CWD matches any session's worktreePath exactly
106
+ * 2. Check if CWD is inside any session's worktreePath
107
+ * 3. Fallback: use git worktree list to find current worktree, then match by branch
108
+ */
109
+ export function findSessionForCwd(cwd) {
110
+ // First, find the repo root for this CWD
111
+ let repoRoot;
112
+ try {
113
+ if (!isGitRepo(cwd)) {
114
+ return null;
115
+ }
116
+ repoRoot = getRepoRoot(cwd);
117
+ }
118
+ catch {
119
+ return null;
120
+ }
121
+ // For worktrees, the "repo root" is the worktree itself
122
+ // We need to find the main repo root where sessions are stored
123
+ const mainRepoRoot = findMainRepoRoot(cwd);
124
+ if (!mainRepoRoot) {
125
+ return null;
126
+ }
127
+ const sessions = listSessions(mainRepoRoot);
128
+ if (sessions.length === 0) {
129
+ return null;
130
+ }
131
+ const normalizedCwd = path.normalize(cwd);
132
+ // Strategy 1: Exact match on worktreePath
133
+ for (const session of sessions) {
134
+ if (path.normalize(session.worktreePath) === normalizedCwd) {
135
+ return session;
136
+ }
137
+ }
138
+ // Strategy 2: CWD is inside a session's worktreePath
139
+ for (const session of sessions) {
140
+ const normalizedWt = path.normalize(session.worktreePath);
141
+ if (normalizedCwd.startsWith(normalizedWt + path.sep) || normalizedCwd === normalizedWt) {
142
+ return session;
143
+ }
144
+ }
145
+ // Strategy 3: Fallback to git worktree matching by branch
146
+ try {
147
+ const worktrees = listWorktrees(cwd);
148
+ const currentWt = worktrees.find(wt => {
149
+ const normalizedWtPath = path.normalize(wt.worktree);
150
+ return normalizedCwd.startsWith(normalizedWtPath + path.sep) || normalizedCwd === normalizedWtPath;
151
+ });
152
+ if (currentWt && currentWt.branch) {
153
+ // Find session by branch name
154
+ for (const session of sessions) {
155
+ if (session.branch === currentWt.branch) {
156
+ return session;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ catch {
162
+ // Git command failed, give up
163
+ }
164
+ return null;
165
+ }
166
+ /**
167
+ * Find the main repository root (where .cry/ lives)
168
+ *
169
+ * For worktrees, we need to trace back to the main repo.
170
+ */
171
+ export function findMainRepoRoot(cwd) {
172
+ try {
173
+ if (!isGitRepo(cwd)) {
174
+ return null;
175
+ }
176
+ // Get the git dir for this worktree
177
+ const repoRoot = getRepoRoot(cwd);
178
+ // Check if this is the main repo (has .cry/ directory or is the commondir)
179
+ if (existsSync(path.join(repoRoot, '.cry'))) {
180
+ return repoRoot;
181
+ }
182
+ // For worktrees, we need to find the main worktree
183
+ // The main repo can be found by checking the worktree list
184
+ const worktrees = listWorktrees(cwd);
185
+ if (worktrees.length > 0) {
186
+ // The first worktree is typically the main one
187
+ const mainWorktree = worktrees[0];
188
+ if (mainWorktree && existsSync(mainWorktree.worktree)) {
189
+ return mainWorktree.worktree;
190
+ }
191
+ }
192
+ // Fallback: just use the repo root we found
193
+ return repoRoot;
194
+ }
195
+ catch {
196
+ return null;
197
+ }
198
+ }
199
+ /**
200
+ * Delete a session by ID
201
+ */
202
+ export function deleteSession(repoRoot, sessionId) {
203
+ const manifestPath = getManifestPath(repoRoot, sessionId);
204
+ if (!existsSync(manifestPath)) {
205
+ return false;
206
+ }
207
+ try {
208
+ unlinkSync(manifestPath);
209
+ return true;
210
+ }
211
+ catch {
212
+ return false;
213
+ }
214
+ }
215
+ /**
216
+ * Find session by branch name
217
+ */
218
+ export function findSessionByBranch(repoRoot, branch) {
219
+ const sessions = listSessions(repoRoot);
220
+ return sessions.find(s => s.branch === branch) ?? null;
221
+ }
222
+ /**
223
+ * Find session by worktree path
224
+ */
225
+ export function findSessionByWorktreePath(repoRoot, worktreePath) {
226
+ const sessions = listSessions(repoRoot);
227
+ const normalizedPath = path.normalize(worktreePath);
228
+ return sessions.find(s => path.normalize(s.worktreePath) === normalizedPath) ?? null;
229
+ }
230
+ /**
231
+ * Update an existing session manifest
232
+ */
233
+ export function updateSessionManifest(repoRoot, sessionId, updates) {
234
+ const manifest = readSessionManifest(repoRoot, sessionId);
235
+ if (!manifest) {
236
+ return null;
237
+ }
238
+ const updated = {
239
+ ...manifest,
240
+ ...updates,
241
+ id: manifest.id,
242
+ createdAt: manifest.createdAt,
243
+ };
244
+ const manifestPath = getManifestPath(repoRoot, sessionId);
245
+ writeFileSync(manifestPath, JSON.stringify(updated, null, 2) + '\n');
246
+ return updated;
247
+ }
248
+ /**
249
+ * Check if a worktree path has an associated session
250
+ */
251
+ export function hasSession(repoRoot, worktreePath) {
252
+ return findSessionByWorktreePath(repoRoot, worktreePath) !== null;
253
+ }
254
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,10 @@ export interface CryConfig {
12
12
  hooks?: {
13
13
  postCreate?: string[];
14
14
  };
15
- /** Default agent command */
15
+ /** Default agent command (e.g. 'claude') */
16
16
  agentCommand?: string;
17
+ /** Default editor command (e.g. 'code' for VS Code) */
18
+ editorCommand?: string;
17
19
  }
18
20
  export interface CryLocalConfig {
19
21
  /** Machine-specific base directory override */
@@ -26,6 +28,8 @@ export interface CryLocalConfig {
26
28
  };
27
29
  /** Override agent command */
28
30
  agentCommand?: string;
31
+ /** Override editor command */
32
+ editorCommand?: string;
29
33
  }
30
34
  export interface MergedConfig {
31
35
  worktreeBaseDir?: string;
@@ -35,6 +39,7 @@ export interface MergedConfig {
35
39
  postCreate: string[];
36
40
  };
37
41
  agentCommand: string;
42
+ editorCommand: string;
38
43
  }
39
44
  export interface WorktreeInfo {
40
45
  worktree: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wCAAwC;IACxC,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wCAAwC;IACxC,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cluttry",
3
- "version": "1.0.3",
3
+ "version": "1.5.0",
4
4
  "description": "Cluttry - Git worktree management for parallel AI-agent sessions",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,7 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "mcp__tavily__tavily-search"
5
- ]
6
- }
7
- }