@sylix/coworker 1.5.3 → 2.0.1

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 (93) hide show
  1. package/README.md +57 -164
  2. package/dist/agents/SubagentLoader.d.ts +59 -0
  3. package/dist/agents/SubagentLoader.d.ts.map +1 -0
  4. package/dist/agents/SubagentLoader.js +140 -0
  5. package/dist/agents/SubagentLoader.js.map +1 -0
  6. package/dist/agents/SubagentRunner.d.ts +15 -0
  7. package/dist/agents/SubagentRunner.d.ts.map +1 -0
  8. package/dist/agents/SubagentRunner.js +116 -0
  9. package/dist/agents/SubagentRunner.js.map +1 -0
  10. package/dist/cli/index.d.ts.map +1 -1
  11. package/dist/cli/index.js +24 -51
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/commands/slash/config.d.ts.map +1 -1
  14. package/dist/commands/slash/config.js +15 -0
  15. package/dist/commands/slash/config.js.map +1 -1
  16. package/dist/commands/slash/context.d.ts.map +1 -1
  17. package/dist/commands/slash/context.js +31 -0
  18. package/dist/commands/slash/context.js.map +1 -1
  19. package/dist/commands/slash/core.d.ts.map +1 -1
  20. package/dist/commands/slash/core.js +33 -4
  21. package/dist/commands/slash/core.js.map +1 -1
  22. package/dist/commands/slash/registry.d.ts.map +1 -1
  23. package/dist/commands/slash/registry.js +2 -0
  24. package/dist/commands/slash/registry.js.map +1 -1
  25. package/dist/commands/slash/session.d.ts.map +1 -1
  26. package/dist/commands/slash/session.js +97 -44
  27. package/dist/commands/slash/session.js.map +1 -1
  28. package/dist/commands/slash/snapshot.d.ts +3 -0
  29. package/dist/commands/slash/snapshot.d.ts.map +1 -0
  30. package/dist/commands/slash/snapshot.js +144 -0
  31. package/dist/commands/slash/snapshot.js.map +1 -0
  32. package/dist/config/SettingsManager.d.ts +2 -0
  33. package/dist/config/SettingsManager.d.ts.map +1 -1
  34. package/dist/config/SettingsManager.js +7 -0
  35. package/dist/config/SettingsManager.js.map +1 -1
  36. package/dist/core/CoWorkerAgent.d.ts +32 -0
  37. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  38. package/dist/core/CoWorkerAgent.js +414 -71
  39. package/dist/core/CoWorkerAgent.js.map +1 -1
  40. package/dist/hooks/HookEngine.d.ts +115 -0
  41. package/dist/hooks/HookEngine.d.ts.map +1 -0
  42. package/dist/hooks/HookEngine.js +220 -0
  43. package/dist/hooks/HookEngine.js.map +1 -0
  44. package/dist/memory/AutoMemory.d.ts +55 -0
  45. package/dist/memory/AutoMemory.d.ts.map +1 -0
  46. package/dist/memory/AutoMemory.js +185 -0
  47. package/dist/memory/AutoMemory.js.map +1 -0
  48. package/dist/permissions/PermissionInterceptor.d.ts +55 -7
  49. package/dist/permissions/PermissionInterceptor.d.ts.map +1 -1
  50. package/dist/permissions/PermissionInterceptor.js +170 -22
  51. package/dist/permissions/PermissionInterceptor.js.map +1 -1
  52. package/dist/session/SessionManager.d.ts +53 -10
  53. package/dist/session/SessionManager.d.ts.map +1 -1
  54. package/dist/session/SessionManager.js +127 -55
  55. package/dist/session/SessionManager.js.map +1 -1
  56. package/dist/session/db.d.ts +81 -0
  57. package/dist/session/db.d.ts.map +1 -0
  58. package/dist/session/db.js +268 -0
  59. package/dist/session/db.js.map +1 -0
  60. package/dist/skills/HookAndSkillManager.d.ts +7 -5
  61. package/dist/skills/HookAndSkillManager.d.ts.map +1 -1
  62. package/dist/skills/HookAndSkillManager.js +30 -56
  63. package/dist/skills/HookAndSkillManager.js.map +1 -1
  64. package/dist/snapshot/SnapshotManager.d.ts +94 -0
  65. package/dist/snapshot/SnapshotManager.d.ts.map +1 -0
  66. package/dist/snapshot/SnapshotManager.js +260 -0
  67. package/dist/snapshot/SnapshotManager.js.map +1 -0
  68. package/dist/tools/LSPTool.d.ts +18 -0
  69. package/dist/tools/LSPTool.d.ts.map +1 -0
  70. package/dist/tools/LSPTool.js +137 -0
  71. package/dist/tools/LSPTool.js.map +1 -0
  72. package/dist/tools/NativeTools.d.ts +4 -3
  73. package/dist/tools/NativeTools.d.ts.map +1 -1
  74. package/dist/tools/NativeTools.js +66 -19
  75. package/dist/tools/NativeTools.js.map +1 -1
  76. package/dist/tools/Schemas.d.ts +69 -0
  77. package/dist/tools/Schemas.d.ts.map +1 -1
  78. package/dist/tools/Schemas.js +32 -0
  79. package/dist/tools/Schemas.js.map +1 -1
  80. package/dist/utils/contextManager.d.ts +1 -1
  81. package/dist/utils/contextManager.d.ts.map +1 -1
  82. package/dist/utils/output.d.ts +3 -6
  83. package/dist/utils/output.d.ts.map +1 -1
  84. package/dist/utils/output.js +44 -39
  85. package/dist/utils/output.js.map +1 -1
  86. package/dist/utils/systemPrompt.d.ts.map +1 -1
  87. package/dist/utils/systemPrompt.js +1 -0
  88. package/dist/utils/systemPrompt.js.map +1 -1
  89. package/dist/utils/update.d.ts +9 -0
  90. package/dist/utils/update.d.ts.map +1 -0
  91. package/dist/utils/update.js +108 -0
  92. package/dist/utils/update.js.map +1 -0
  93. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HookAndSkillManager.d.ts","sourceRoot":"","sources":["../../src/skills/HookAndSkillManager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAsB;IAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAa;IAC7C,YAAY,EAAE,gBAAgB,EAAE,CAAM;IACtC,aAAa,EAAE,gBAAgB,EAAE,CAAM;IAEvC,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAMzC,OAAO,CAAC,qBAAqB;IAsD7B;;;OAGG;YACW,cAAc;IA+G5B;;;OAGG;IACU,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;OAEG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF;;;OAGG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9G;;;OAGG;IACU,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;YAavC,aAAa;IAkCpB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKhD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMjC,eAAe,IAAI,IAAI;IAIvB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,gBAAgB,IAAI,MAAM;CAQlC"}
1
+ {"version":3,"file":"HookAndSkillManager.d.ts","sourceRoot":"","sources":["../../src/skills/HookAndSkillManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAa;IAC7C,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAIzC;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,UAAU;IAgCvC;;;OAGG;YACW,cAAc;IAkH5B;;;OAGG;IACU,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxF;;;OAGG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9G;;;OAGG;IACU,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;YAavC,aAAa;IAkCpB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKhD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMjC,eAAe,IAAI,IAAI;IAIvB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,gBAAgB,IAAI,MAAM;CAQlC"}
@@ -34,10 +34,10 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.HookAndSkillManager = void 0;
37
- const events_1 = require("events");
38
37
  const fs = __importStar(require("fs/promises"));
39
38
  const path = __importStar(require("path"));
40
39
  const child_process_1 = require("child_process");
40
+ const output_1 = require("../utils/output");
41
41
  /**
42
42
  * Phase 3+: Hooks, Skills, and Inline Error Detection.
43
43
  *
@@ -50,63 +50,40 @@ const child_process_1 = require("child_process");
50
50
  */
51
51
  class HookAndSkillManager {
52
52
  constructor() {
53
- this.events = new events_1.EventEmitter();
54
53
  this.loadedSkills = new Map();
55
- this.preToolHooks = [];
56
- this.postToolHooks = [];
57
54
  this.lastDiagnostic = null;
58
55
  this.activeSkill = null;
59
- this.registerInternalHooks();
60
56
  }
61
- registerInternalHooks() {
62
- this.events.on('PreToolUse', async (toolName, args, resolve, reject) => {
63
- const toolSignature = `${toolName}(${JSON.stringify(args)})`;
64
- for (const hook of this.preToolHooks) {
65
- if (hook.matcher.test(toolSignature)) {
66
- console.log(`[Hooks] Triggered PreTool hook for ${toolName}. Executing automation: ${hook.command}`);
67
- try {
68
- const output = (0, child_process_1.execSync)(hook.command, { encoding: 'utf8', timeout: 15000 }).trim();
69
- console.log(`[Hooks] PreTool output: ${output.substring(0, 200)}`);
70
- }
71
- catch (err) {
72
- return reject(`Hook automation failed blocking tool execution: ${err.message}`);
73
- }
74
- }
75
- }
76
- resolve();
77
- });
78
- this.events.on('PostToolUse', async (toolName, result, args, resolve) => {
79
- // ═══════════════════════════════════════════════════════════════
80
- // INLINE ERROR DETECTION — Auto-validation after file mutations
81
- // ═══════════════════════════════════════════════════════════════
82
- const fileMutationTools = ['executeWrite', 'executeEdit', 'executeMultiEdit'];
83
- if (fileMutationTools.includes(toolName)) {
84
- const filePath = args.filePath || '';
57
+ /**
58
+ * Register internal CoWorker hooks (like Diagnostics) into the HookEngine.
59
+ */
60
+ registerHooks(engine) {
61
+ // ═══════════════════════════════════════════════════════════════
62
+ // INLINE ERROR DETECTION Auto-validation after file mutations
63
+ // ═══════════════════════════════════════════════════════════════
64
+ engine.on('PostToolUse', async (ctx) => {
65
+ const fileMutationTools = ['Write', 'Edit', 'MultiEdit', 'executeWrite', 'executeEdit', 'executeMultiEdit'];
66
+ if (ctx.toolName && fileMutationTools.includes(ctx.toolName)) {
67
+ const filePath = ctx.args?.file_path || ctx.args?.filePath || '';
68
+ if (!filePath)
69
+ return;
85
70
  const ext = path.extname(filePath).toLowerCase();
86
71
  const diagnostic = await this.runDiagnostics(filePath, ext);
87
72
  this.lastDiagnostic = diagnostic;
88
73
  if (diagnostic.hasErrors) {
89
- console.log(`\x1b[33m[Diagnostics] ⚠ Found errors after ${toolName} on ${path.basename(filePath)}:\x1b[0m`);
90
- console.log(`\x1b[31m${diagnostic.errors.substring(0, 500)}\x1b[0m`);
74
+ console.log(`\n ${output_1.theme.warning('')} Found errors in ${output_1.theme.white(path.basename(filePath))}:`);
75
+ console.log(` ${output_1.theme.dim(diagnostic.errors.substring(0, 500))}`);
91
76
  }
92
77
  else {
93
- console.log(`\x1b[32m[Diagnostics] ✓ No errors detected after ${toolName} on ${path.basename(filePath)}\x1b[0m`);
94
- }
95
- }
96
- else {
97
- this.lastDiagnostic = null;
98
- }
99
- // Fire user-defined PostTool hooks
100
- for (const hook of this.postToolHooks) {
101
- if (hook.matcher.test(toolName)) {
102
- console.log(`[Hooks] Triggered PostTool hook for ${toolName}. Running: ${hook.command}`);
103
- try {
104
- (0, child_process_1.execSync)(hook.command, { encoding: 'utf8', timeout: 15000 });
78
+ if (process.env.CW_VERBOSE) {
79
+ console.log(` ${output_1.theme.success('✓')} No errors detected in ${path.basename(filePath)}`);
105
80
  }
106
- catch { /* non-fatal */ }
81
+ }
82
+ // Inject diagnostics into the context result for the LLM
83
+ if (ctx.result && typeof ctx.result === 'string') {
84
+ ctx.result += `\n\n[DIAGNOSTICS] ${diagnostic.hasErrors ? 'ERRORS FOUND' : 'CLEAN'}\n${diagnostic.errors}`;
107
85
  }
108
86
  }
109
- resolve();
110
87
  });
111
88
  }
112
89
  /**
@@ -131,7 +108,7 @@ class HookAndSkillManager {
131
108
  try {
132
109
  // First check if tsconfig.json exists
133
110
  await fs.access(path.join(process.cwd(), 'tsconfig.json'));
134
- const output = (0, child_process_1.execSync)(`npx tsc --noEmit --pretty false 2>&1 | findstr /i "${path.basename(filePath)}"`, { encoding: 'utf8', timeout: 30000, cwd: process.cwd() }).trim();
111
+ const output = (0, child_process_1.execSync)(`npx tsc --noEmit --pretty false 2>&1 | findstr /i "${path.basename(filePath)}"`, { encoding: 'utf8', timeout: 30000, cwd: process.cwd(), stdio: ['pipe', 'pipe', 'pipe'] }).trim();
135
112
  if (output) {
136
113
  result.errors = output.substring(0, 2000);
137
114
  result.hasErrors = true;
@@ -157,7 +134,7 @@ class HookAndSkillManager {
157
134
  // JavaScript: try node --check for syntax validation
158
135
  result.tool = 'node --check';
159
136
  try {
160
- (0, child_process_1.execSync)(`node --check "${absPath}"`, { encoding: 'utf8', timeout: 10000 });
137
+ (0, child_process_1.execSync)(`node --check "${absPath}"`, { encoding: 'utf8', timeout: 10000, stdio: ['pipe', 'pipe', 'pipe'] });
161
138
  }
162
139
  catch (e) {
163
140
  const stderr = e.stderr?.toString() || e.message;
@@ -170,7 +147,7 @@ class HookAndSkillManager {
170
147
  // Python: syntax check
171
148
  result.tool = 'py_compile';
172
149
  try {
173
- (0, child_process_1.execSync)(`python -m py_compile "${absPath}"`, { encoding: 'utf8', timeout: 10000 });
150
+ (0, child_process_1.execSync)(`python -m py_compile "${absPath}"`, { encoding: 'utf8', timeout: 10000, stdio: ['pipe', 'pipe', 'pipe'] });
174
151
  }
175
152
  catch (e) {
176
153
  const stderr = e.stderr?.toString() || e.message;
@@ -197,7 +174,7 @@ class HookAndSkillManager {
197
174
  // CSS: basic syntax check via stylelint if available
198
175
  result.tool = 'stylelint';
199
176
  try {
200
- const output = (0, child_process_1.execSync)(`npx stylelint "${absPath}" 2>&1`, { encoding: 'utf8', timeout: 15000 });
177
+ const output = (0, child_process_1.execSync)(`npx stylelint "${absPath}" 2>&1`, { encoding: 'utf8', timeout: 15000, stdio: ['pipe', 'pipe', 'pipe'] });
201
178
  if (output.trim()) {
202
179
  result.errors = output.substring(0, 2000);
203
180
  result.hasErrors = true;
@@ -233,20 +210,17 @@ class HookAndSkillManager {
233
210
  }
234
211
  /**
235
212
  * Fired before the main CoWorker agent loop executes an LLM-requested tool.
213
+ * @deprecated Use hookEngine.fireBlocking('PreToolUse', ...)
236
214
  */
237
215
  async firePreToolHook(toolName, args) {
238
- return new Promise((resolve, reject) => {
239
- this.events.emit('PreToolUse', toolName, args, resolve, reject);
240
- });
216
+ // No-op: handled by HookEngine
241
217
  }
242
218
  /**
243
219
  * Fired after the tool completes execution.
244
- * NOW: also runs inline error detection for file-mutation tools.
220
+ * @deprecated Use hookEngine.fire('PostToolUse', ...)
245
221
  */
246
222
  async firePostToolHook(toolName, result, args = {}) {
247
- return new Promise((resolve) => {
248
- this.events.emit('PostToolUse', toolName, result, args, resolve);
249
- });
223
+ // No-op: handled by HookEngine
250
224
  }
251
225
  /**
252
226
  * Reads .coworker/skills/*.md mapping frontmatter to /commands.
@@ -1 +1 @@
1
- {"version":3,"file":"HookAndSkillManager.js","sourceRoot":"","sources":["../../src/skills/HookAndSkillManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HookAndSkillManager.js","sourceRoot":"","sources":["../../src/skills/HookAndSkillManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Per-step git snapshot system inspired by OpenCode's snapshot/index.ts.
3
+ *
4
+ * How it works:
5
+ * 1. Before each LLM step, we call SnapshotManager.track() which does:
6
+ * git add . && git write-tree
7
+ * This captures the current working tree state as a git tree hash.
8
+ *
9
+ * 2. Each tracked step gets an entry with:
10
+ * - stepId: sequential counter
11
+ * - treeHash: the git write-tree hash
12
+ * - timestamp: when the snapshot was taken
13
+ * - message: optional description
14
+ *
15
+ * 3. Users can revert to any step by calling SnapshotManager.restore(stepId).
16
+ * This does:
17
+ * git read-tree <treeHash>
18
+ * git checkout-index -a -f
19
+ *
20
+ * 4. Snapshots are stored in:
21
+ * ~/.coworker/snapshots/{projectId}/
22
+ *
23
+ * Design decisions:
24
+ * - Uses a SHADOW git repo (not the project's .git) so it never pollutes the project
25
+ * - Only tracks file changes per step, not database writes or deployments
26
+ * - Auto-cleanup: keeps last 50 snapshots, deletes older ones
27
+ */
28
+ export interface SnapshotEntry {
29
+ stepId: number;
30
+ treeHash: string;
31
+ timestamp: string;
32
+ changedFiles: string[];
33
+ message?: string;
34
+ }
35
+ export interface SnapshotManagerOptions {
36
+ /** Override snapshot directory (defaults to ~/.coworker/snapshots/{projectId}) */
37
+ snapshotDir?: string;
38
+ /** Maximum snapshots to keep (oldest are pruned, default 50) */
39
+ maxSnapshots?: number;
40
+ }
41
+ export declare class SnapshotManager {
42
+ private readonly snapshotDir;
43
+ private readonly gitDir;
44
+ private readonly maxSnapshots;
45
+ private stepCounter;
46
+ private snapshots;
47
+ private indexPath;
48
+ private projectId;
49
+ constructor(cwd?: string, options?: SnapshotManagerOptions);
50
+ /** Compute a stable project ID from the working directory. */
51
+ private computeProjectId;
52
+ /** Initialize the shadow git repo if not already initialized. */
53
+ init(): Promise<void>;
54
+ private loadIndex;
55
+ private saveIndex;
56
+ /**
57
+ * Take a snapshot of the current working tree state.
58
+ * Called BEFORE each LLM step executes its tools.
59
+ *
60
+ * Returns the new stepId.
61
+ */
62
+ track(cwd: string, message?: string): Promise<number>;
63
+ /**
64
+ * Capture the working tree state as a git tree hash.
65
+ * Uses git write-tree after staging changes.
66
+ */
67
+ private captureTree;
68
+ /**
69
+ * Get the list of files that changed between two steps.
70
+ */
71
+ private diffStep;
72
+ /**
73
+ * Restore the working tree to the state at a specific step.
74
+ * This does NOT affect git history — it only restores files.
75
+ */
76
+ restore(stepId: number, cwd: string): Promise<{
77
+ success: boolean;
78
+ restoredFiles: string[];
79
+ error?: string;
80
+ }>;
81
+ /**
82
+ * Get a list of all snapshots (for display in a rewind menu).
83
+ */
84
+ listSnapshots(): SnapshotEntry[];
85
+ /**
86
+ * Get the latest snapshot stepId.
87
+ */
88
+ latestStepId(): number;
89
+ /** Delete old snapshot data beyond maxSnapshots. */
90
+ private pruneSnapshots;
91
+ /** Clear all snapshots (e.g. on session end if requested). */
92
+ clear(): Promise<void>;
93
+ }
94
+ //# sourceMappingURL=SnapshotManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotManager.d.ts","sourceRoot":"","sources":["../../src/snapshot/SnapshotManager.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,GAAG,GAAE,MAAsB,EAAE,OAAO,GAAE,sBAA2B;IAS7E,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAmBxB,iEAAiE;IAC3D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAcb,SAAS;YAaT,SAAS;IASvB;;;;;OAKG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0C3D;;;OAGG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BlH;;OAEG;IACH,aAAa,IAAI,aAAa,EAAE;IAIhC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB,oDAAoD;YACtC,cAAc;IAS5B,8DAA8D;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SnapshotManager = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const fsSync = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const os = __importStar(require("os"));
41
+ const child_process_1 = require("child_process");
42
+ class SnapshotManager {
43
+ constructor(cwd = process.cwd(), options = {}) {
44
+ this.stepCounter = 0;
45
+ this.snapshots = [];
46
+ this.maxSnapshots = options.maxSnapshots ?? 50;
47
+ this.projectId = this.computeProjectId(cwd);
48
+ this.snapshotDir = options.snapshotDir
49
+ ?? path.join(os.homedir(), '.coworker', 'snapshots', this.projectId);
50
+ this.gitDir = path.join(this.snapshotDir, '.git');
51
+ this.indexPath = path.join(this.snapshotDir, 'index');
52
+ }
53
+ /** Compute a stable project ID from the working directory. */
54
+ computeProjectId(cwd) {
55
+ try {
56
+ // Use git rev-parse to get a stable hash of the project root
57
+ const hash = (0, child_process_1.execSync)('git rev-parse --show-toplevel', {
58
+ cwd,
59
+ encoding: 'utf8',
60
+ stdio: ['pipe', 'pipe', 'pipe'],
61
+ }).trim();
62
+ // Simple hash: use the last 8 chars of the git root path hash
63
+ let h = 0;
64
+ for (const c of hash)
65
+ h = (h * 31 + c.charCodeAt(0)) & 0xffffffff;
66
+ return Math.abs(h).toString(16).padStart(8, '0');
67
+ }
68
+ catch {
69
+ // Fallback: use the directory path itself
70
+ return Math.abs([...cwd].reduce((h, c) => h * 31 + c.charCodeAt(0), 0))
71
+ .toString(16).padStart(8, '0');
72
+ }
73
+ }
74
+ /** Initialize the shadow git repo if not already initialized. */
75
+ async init() {
76
+ await fs.mkdir(this.snapshotDir, { recursive: true });
77
+ try {
78
+ (0, child_process_1.execSync)('git rev-parse --git-dir', { cwd: this.snapshotDir, encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] });
79
+ }
80
+ catch {
81
+ // Not initialized — create it
82
+ (0, child_process_1.execSync)('git init', { cwd: this.snapshotDir, encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] });
83
+ }
84
+ // Load existing snapshot index
85
+ await this.loadIndex();
86
+ }
87
+ async loadIndex() {
88
+ const indexFile = path.join(this.snapshotDir, 'snapshots.json');
89
+ try {
90
+ const data = await fs.readFile(indexFile, 'utf8');
91
+ const parsed = JSON.parse(data);
92
+ this.snapshots = parsed.snapshots ?? [];
93
+ this.stepCounter = parsed.stepCounter ?? 0;
94
+ }
95
+ catch {
96
+ this.snapshots = [];
97
+ this.stepCounter = 0;
98
+ }
99
+ }
100
+ async saveIndex() {
101
+ const indexFile = path.join(this.snapshotDir, 'snapshots.json');
102
+ await fs.writeFile(indexFile, JSON.stringify({ snapshots: this.snapshots, stepCounter: this.stepCounter }, null, 2), 'utf8');
103
+ }
104
+ /**
105
+ * Take a snapshot of the current working tree state.
106
+ * Called BEFORE each LLM step executes its tools.
107
+ *
108
+ * Returns the new stepId.
109
+ */
110
+ async track(cwd, message) {
111
+ await this.init();
112
+ this.stepCounter++;
113
+ const stepId = this.stepCounter;
114
+ try {
115
+ // Stage all changes in the project working dir
116
+ (0, child_process_1.execSync)('git add .', { cwd, encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] });
117
+ // Capture as a tree object in our shadow repo
118
+ // We copy the index to our shadow git and create a tree from it
119
+ const treeHash = this.captureTree(cwd, stepId);
120
+ // Find what files changed vs the previous snapshot
121
+ const changedFiles = this.diffStep(stepId - 1, stepId, cwd);
122
+ const entry = {
123
+ stepId,
124
+ treeHash,
125
+ timestamp: new Date().toISOString(),
126
+ changedFiles,
127
+ message,
128
+ };
129
+ this.snapshots.push(entry);
130
+ // Prune old snapshots beyond maxSnapshots
131
+ if (this.snapshots.length > this.maxSnapshots) {
132
+ const pruned = this.snapshots.splice(0, this.snapshots.length - this.maxSnapshots);
133
+ await this.pruneSnapshots(pruned);
134
+ }
135
+ await this.saveIndex();
136
+ return stepId;
137
+ }
138
+ catch (e) {
139
+ // If git fails (e.g. not a git repo), just return -1 as a sentinel
140
+ console.warn(`[Snapshot] Failed to track snapshot: ${e.message}`);
141
+ return -1;
142
+ }
143
+ }
144
+ /**
145
+ * Capture the working tree state as a git tree hash.
146
+ * Uses git write-tree after staging changes.
147
+ */
148
+ captureTree(cwd, stepId) {
149
+ // Create a temp gitdir for this snapshot
150
+ const stepGitDir = path.join(this.snapshotDir, 'steps', String(stepId));
151
+ fsSync.mkdirSync(stepGitDir, { recursive: true });
152
+ // Stage files into the shadow repo's index
153
+ // We use git add on the project files but redirect the index
154
+ const indexEnv = { GIT_INDEX_FILE: this.indexPath };
155
+ // Add all tracked files to the index
156
+ try {
157
+ (0, child_process_1.execSync)('git add -A', {
158
+ cwd,
159
+ encoding: 'utf8',
160
+ env: { ...process.env, ...indexEnv },
161
+ stdio: ['pipe', 'pipe', 'pipe'],
162
+ });
163
+ }
164
+ catch {
165
+ // No tracked files yet
166
+ }
167
+ // Write the tree
168
+ let treeHash = '';
169
+ try {
170
+ treeHash = (0, child_process_1.execSync)('git write-tree', {
171
+ cwd,
172
+ encoding: 'utf8',
173
+ stdio: ['pipe', 'pipe', 'pipe'],
174
+ }).trim();
175
+ }
176
+ catch (e) {
177
+ treeHash = `error-${e.message}`;
178
+ }
179
+ return treeHash;
180
+ }
181
+ /**
182
+ * Get the list of files that changed between two steps.
183
+ */
184
+ diffStep(fromStep, toStep, cwd) {
185
+ if (fromStep < 0)
186
+ return [];
187
+ const fromEntry = this.snapshots.find(s => s.stepId === fromStep);
188
+ const toEntry = this.snapshots.find(s => s.stepId === toStep);
189
+ if (!fromEntry || !toEntry || !fromEntry.treeHash || !toEntry.treeHash)
190
+ return [];
191
+ try {
192
+ const diff = (0, child_process_1.execSync)(`git diff-tree --no-commit-id --name-only -r ${fromEntry.treeHash} ${toEntry.treeHash}`, { cwd, encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
193
+ return diff ? diff.split('\n').filter(Boolean) : [];
194
+ }
195
+ catch {
196
+ return [];
197
+ }
198
+ }
199
+ /**
200
+ * Restore the working tree to the state at a specific step.
201
+ * This does NOT affect git history — it only restores files.
202
+ */
203
+ async restore(stepId, cwd) {
204
+ const entry = this.snapshots.find(s => s.stepId === stepId);
205
+ if (!entry) {
206
+ return { success: false, restoredFiles: [], error: `No snapshot found for step ${stepId}` };
207
+ }
208
+ if (!entry.treeHash || entry.treeHash.startsWith('error-')) {
209
+ return { success: false, restoredFiles: [], error: `Snapshot ${stepId} has no valid tree hash` };
210
+ }
211
+ try {
212
+ // Read the tree into the index — target the PROJECT directory
213
+ (0, child_process_1.execSync)(`git read-tree ${entry.treeHash}`, {
214
+ cwd,
215
+ encoding: 'utf8',
216
+ stdio: ['pipe', 'pipe', 'pipe'],
217
+ });
218
+ // Check out the files to the PROJECT working directory (not snapshot dir)
219
+ (0, child_process_1.execSync)('git checkout-index -a -f', {
220
+ cwd,
221
+ encoding: 'utf8',
222
+ stdio: ['pipe', 'pipe', 'pipe'],
223
+ });
224
+ return { success: true, restoredFiles: entry.changedFiles };
225
+ }
226
+ catch (e) {
227
+ return { success: false, restoredFiles: [], error: e.message };
228
+ }
229
+ }
230
+ /**
231
+ * Get a list of all snapshots (for display in a rewind menu).
232
+ */
233
+ listSnapshots() {
234
+ return [...this.snapshots];
235
+ }
236
+ /**
237
+ * Get the latest snapshot stepId.
238
+ */
239
+ latestStepId() {
240
+ return this.snapshots.length > 0 ? this.snapshots[this.snapshots.length - 1].stepId : -1;
241
+ }
242
+ /** Delete old snapshot data beyond maxSnapshots. */
243
+ async pruneSnapshots(prunedEntries) {
244
+ for (const entry of prunedEntries) {
245
+ const stepDir = path.join(this.snapshotDir, 'steps', String(entry.stepId));
246
+ try {
247
+ await fs.rm(stepDir, { recursive: true, force: true });
248
+ }
249
+ catch { /* ignore */ }
250
+ }
251
+ }
252
+ /** Clear all snapshots (e.g. on session end if requested). */
253
+ async clear() {
254
+ this.snapshots = [];
255
+ this.stepCounter = 0;
256
+ await this.saveIndex();
257
+ }
258
+ }
259
+ exports.SnapshotManager = SnapshotManager;
260
+ //# sourceMappingURL=SnapshotManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotManager.js","sourceRoot":"","sources":["../../src/snapshot/SnapshotManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * LSP Client for CoWorker v1.5.3.
3
+ * Connects to typescript-language-server (or similar) via stdio JSON-RPC.
4
+ */
5
+ export declare class LSPClient {
6
+ private process;
7
+ private idCounter;
8
+ private cwd;
9
+ constructor(cwd: string);
10
+ start(): Promise<boolean>;
11
+ private initialize;
12
+ gotoDefinition(filePath: string, line: number, character: number): Promise<any>;
13
+ findReferences(filePath: string, line: number, character: number): Promise<any>;
14
+ private request;
15
+ private notification;
16
+ stop(): void;
17
+ }
18
+ //# sourceMappingURL=LSPTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LSPTool.d.ts","sourceRoot":"","sources":["../../src/tools/LSPTool.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM;IAIjB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;YA0BjB,UAAU;IAUlB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ/E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YASvE,OAAO;YA0BP,YAAY;IAO1B,IAAI;CAIL"}