statecli-mcp-server 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -19
- package/dist/auto-tracker.d.ts +18 -0
- package/dist/auto-tracker.d.ts.map +1 -0
- package/dist/auto-tracker.js +88 -0
- package/dist/auto-tracker.js.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +65 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/quick-undo.d.ts +3 -0
- package/dist/commands/quick-undo.d.ts.map +1 -0
- package/dist/commands/quick-undo.js +102 -0
- package/dist/commands/quick-undo.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +120 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/file-watcher.d.ts +25 -0
- package/dist/file-watcher.d.ts.map +1 -0
- package/dist/file-watcher.js +141 -0
- package/dist/file-watcher.js.map +1 -0
- package/dist/statecli.d.ts +12 -0
- package/dist/statecli.d.ts.map +1 -1
- package/dist/statecli.js +41 -0
- package/dist/statecli.js.map +1 -1
- package/package.json +20 -16
package/README.md
CHANGED
|
@@ -1,40 +1,114 @@
|
|
|
1
|
-
# StateCLI -
|
|
1
|
+
# StateCLI - Memory + Self-Awareness Layer for AI Agents
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Give AI agents the ability to remember, replay, and undo their actions.
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Agent Infrastructure** | **Memory Layer** | **Self-Awareness** | **Undo Capability**
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## What This
|
|
9
|
+
## What This Is
|
|
10
10
|
|
|
11
|
-
StateCLI
|
|
11
|
+
StateCLI is the **memory and self-awareness layer** for AI coding agents.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
✅ **Undo mistakes** - Rollback when something goes wrong
|
|
15
|
-
✅ **Track history** - View all your past actions
|
|
16
|
-
✅ **Create checkpoints** - Save state before risky operations
|
|
13
|
+
It gives agents three critical capabilities they lack:
|
|
17
14
|
|
|
18
|
-
**
|
|
15
|
+
🧠 **Memory** - Remember what they did (log, replay)
|
|
16
|
+
⏮️ **Undo** - Fix mistakes instantly (checkpoint, rollback)
|
|
17
|
+
👁️ **Self-Awareness** - See their impact (track changes)
|
|
18
|
+
|
|
19
|
+
**This isn't a dev tool. It's agent infrastructure.**
|
|
19
20
|
|
|
20
21
|
---
|
|
21
22
|
|
|
22
23
|
## Why AI Agents Need This
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
AI agents are powerful but blind. They:
|
|
26
|
+
- ❌ Don't remember what they just changed
|
|
27
|
+
- ❌ Can't undo when they break things
|
|
28
|
+
- ❌ Have no awareness of their impact
|
|
29
|
+
|
|
30
|
+
StateCLI fixes this:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Agent Thought: "I changed something but don't know what"
|
|
34
|
+
→ statecli_replay(entity) → See exact changes
|
|
35
|
+
|
|
36
|
+
Agent Thought: "I broke something and need to undo"
|
|
37
|
+
→ statecli_undo(entity) → Rollback instantly
|
|
38
|
+
|
|
39
|
+
Agent Thought: "I want to try something risky"
|
|
40
|
+
→ statecli_checkpoint(entity) → Save first, rollback if needed
|
|
41
|
+
|
|
42
|
+
Agent Thought: "I need to understand my past behavior"
|
|
43
|
+
→ statecli_log(entity) → View complete history
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Two Ways to Use StateCLI
|
|
51
|
+
|
|
52
|
+
### 1. For Developers: Auto-Tracking Mode 🔥
|
|
53
|
+
|
|
54
|
+
**Start watching your project:**
|
|
55
|
+
```bash
|
|
56
|
+
statecli watch start --auto-checkpoint
|
|
57
|
+
```
|
|
25
58
|
|
|
59
|
+
Now StateCLI automatically:
|
|
60
|
+
- ✅ Tracks every file save
|
|
61
|
+
- ✅ Creates checkpoints every 15 min
|
|
62
|
+
- ✅ Lets you undo any mistake
|
|
63
|
+
- ✅ Shows what changed recently
|
|
64
|
+
|
|
65
|
+
**See what changed:**
|
|
66
|
+
```bash
|
|
67
|
+
statecli diff --time 5m
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Undo mistakes:**
|
|
71
|
+
```bash
|
|
72
|
+
statecli undo
|
|
26
73
|
```
|
|
27
|
-
Problem: "I changed something but don't know what"
|
|
28
|
-
Solution: statecli_replay(entity) → See exact changes
|
|
29
74
|
|
|
30
|
-
|
|
31
|
-
Solution: statecli_undo(entity) → Rollback instantly
|
|
75
|
+
👉 **[Full Developer Guide](./DEVELOPER_GUIDE.md)**
|
|
32
76
|
|
|
33
|
-
|
|
34
|
-
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### 2. For AI Agents: MCP Tools
|
|
80
|
+
|
|
81
|
+
**5 core tools for agent memory & self-awareness:**
|
|
82
|
+
|
|
83
|
+
- `statecli_replay` - Show what the agent just did
|
|
84
|
+
- `statecli_undo` - Rollback mistakes
|
|
85
|
+
- `statecli_checkpoint` - Save state before risky ops
|
|
86
|
+
- `statecli_log` - View complete history
|
|
87
|
+
- `statecli_track` - Track important state changes
|
|
88
|
+
|
|
89
|
+
**MCP Setup:**
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"statecli": {
|
|
94
|
+
"command": "npx",
|
|
95
|
+
"args": ["-y", "statecli-mcp-server"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Quick Install
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Global install
|
|
107
|
+
npm install -g statecli-mcp-server
|
|
35
108
|
|
|
36
|
-
|
|
37
|
-
|
|
109
|
+
# Start auto-tracking
|
|
110
|
+
cd your-project
|
|
111
|
+
statecli watch start --auto-checkpoint
|
|
38
112
|
```
|
|
39
113
|
|
|
40
114
|
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StateCLI } from './statecli';
|
|
2
|
+
export interface AutoTrackerConfig {
|
|
3
|
+
trackGitCommits?: boolean;
|
|
4
|
+
trackNpmInstalls?: boolean;
|
|
5
|
+
trackTestRuns?: boolean;
|
|
6
|
+
autoCheckpointBeforeRisky?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class AutoTracker {
|
|
9
|
+
private stateCLI;
|
|
10
|
+
private config;
|
|
11
|
+
constructor(stateCLI: StateCLI, config?: AutoTrackerConfig);
|
|
12
|
+
trackGitCommit(): Promise<void>;
|
|
13
|
+
trackNpmInstall(packageName?: string): Promise<void>;
|
|
14
|
+
trackTestRun(testCommand: string, passed: boolean, output?: string): Promise<void>;
|
|
15
|
+
checkpointBeforeRisky(operation: string): Promise<string>;
|
|
16
|
+
wrapRiskyOperation<T>(operation: string, fn: () => Promise<T>): Promise<T>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=auto-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-tracker.d.ts","sourceRoot":"","sources":["../src/auto-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC,MAAM,WAAW,iBAAiB;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAoB;gBAEtB,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAE,iBAAsB;IAWxD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclF,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzD,kBAAkB,CAAC,CAAC,EACtB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC;CAiBhB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoTracker = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
7
|
+
class AutoTracker {
|
|
8
|
+
stateCLI;
|
|
9
|
+
config;
|
|
10
|
+
constructor(stateCLI, config = {}) {
|
|
11
|
+
this.stateCLI = stateCLI;
|
|
12
|
+
this.config = {
|
|
13
|
+
trackGitCommits: true,
|
|
14
|
+
trackNpmInstalls: true,
|
|
15
|
+
trackTestRuns: true,
|
|
16
|
+
autoCheckpointBeforeRisky: true,
|
|
17
|
+
...config
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async trackGitCommit() {
|
|
21
|
+
if (!this.config.trackGitCommits)
|
|
22
|
+
return;
|
|
23
|
+
try {
|
|
24
|
+
const { stdout: hash } = await execAsync('git rev-parse HEAD');
|
|
25
|
+
const { stdout: message } = await execAsync('git log -1 --pretty=%B');
|
|
26
|
+
const { stdout: files } = await execAsync('git diff-tree --no-commit-id --name-only -r HEAD');
|
|
27
|
+
this.stateCLI.track('git', 'commit', {
|
|
28
|
+
action: 'commit',
|
|
29
|
+
hash: hash.trim(),
|
|
30
|
+
message: message.trim(),
|
|
31
|
+
files: files.trim().split('\n').filter(f => f),
|
|
32
|
+
timestamp: new Date().toISOString()
|
|
33
|
+
}, 'auto-tracker');
|
|
34
|
+
console.log(`✅ Tracked git commit: ${hash.trim().substring(0, 7)}`);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
// Not a git repo or no commits yet
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async trackNpmInstall(packageName) {
|
|
41
|
+
if (!this.config.trackNpmInstalls)
|
|
42
|
+
return;
|
|
43
|
+
this.stateCLI.track('npm', 'install', {
|
|
44
|
+
action: 'install',
|
|
45
|
+
package: packageName || 'all',
|
|
46
|
+
timestamp: new Date().toISOString()
|
|
47
|
+
}, 'auto-tracker');
|
|
48
|
+
console.log(`✅ Tracked npm install: ${packageName || 'all packages'}`);
|
|
49
|
+
}
|
|
50
|
+
async trackTestRun(testCommand, passed, output) {
|
|
51
|
+
if (!this.config.trackTestRuns)
|
|
52
|
+
return;
|
|
53
|
+
this.stateCLI.track('tests', 'run', {
|
|
54
|
+
action: 'test',
|
|
55
|
+
command: testCommand,
|
|
56
|
+
passed,
|
|
57
|
+
output: output?.substring(0, 1000), // Limit output size
|
|
58
|
+
timestamp: new Date().toISOString()
|
|
59
|
+
}, 'auto-tracker');
|
|
60
|
+
console.log(`✅ Tracked test run: ${passed ? 'PASSED' : 'FAILED'}`);
|
|
61
|
+
}
|
|
62
|
+
async checkpointBeforeRisky(operation) {
|
|
63
|
+
if (!this.config.autoCheckpointBeforeRisky) {
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
const checkpointName = `before-${operation}-${Date.now()}`;
|
|
67
|
+
this.stateCLI.checkpoint('project:current', checkpointName);
|
|
68
|
+
console.log(`💾 Auto-checkpoint before ${operation}: ${checkpointName}`);
|
|
69
|
+
return checkpointName;
|
|
70
|
+
}
|
|
71
|
+
async wrapRiskyOperation(operation, fn) {
|
|
72
|
+
const checkpointName = await this.checkpointBeforeRisky(operation);
|
|
73
|
+
try {
|
|
74
|
+
const result = await fn();
|
|
75
|
+
console.log(`✅ ${operation} completed successfully`);
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error(`❌ ${operation} failed:`, error);
|
|
80
|
+
if (checkpointName) {
|
|
81
|
+
console.log(`💡 You can rollback with: statecli undo --checkpoint ${checkpointName}`);
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.AutoTracker = AutoTracker;
|
|
88
|
+
//# sourceMappingURL=auto-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-tracker.js","sourceRoot":"","sources":["../src/auto-tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -167,6 +167,12 @@ program
|
|
|
167
167
|
});
|
|
168
168
|
await server.run();
|
|
169
169
|
});
|
|
170
|
+
// Import new commands
|
|
171
|
+
const watch_1 = require("./commands/watch");
|
|
172
|
+
const diff_1 = require("./commands/diff");
|
|
173
|
+
// Register new commands
|
|
174
|
+
(0, watch_1.createWatchCommand)(program);
|
|
175
|
+
(0, diff_1.createDiffCommand)(program);
|
|
170
176
|
program
|
|
171
177
|
.command('init')
|
|
172
178
|
.description('Initialize StateCLI configuration')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,yCAAsC;AAEtC,uCAAyB;AACzB,2CAA6B;AAE7B,SAAS,UAAU;IACjB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC;KACzF,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC;AAEtC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KAChD,MAAM,CAAC,CAAC,MAAc,EAAE,OAA2B,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,GAAG,CAAC;KAC7D,MAAM,CAAC,CAAC,MAAc,EAAE,OAA0B,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,yBAAyB,CAAC;KAClC,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC1D,MAAM,CAAC,CAAC,MAAc,EAAE,OAA2D,EAAE,EAAE;IACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,+BAA+B,CAAC;KACxC,WAAW,CAAC,sBAAsB,CAAC;KACnC,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,KAAK,CAAC;KAC/D,MAAM,CAAC,CAAC,UAAkB,EAAE,QAAgB,EAAE,OAAwC,EAAE,EAAE;IACzF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,cAAc,GAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,oBAAoB;aAC3B;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC,GAAG,CAAC;aAChB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,mBAAmB,EAAE,IAAI;aAC1B;SACF,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyDxD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDiffCommand = createDiffCommand;
|
|
4
|
+
const statecli_1 = require("../statecli");
|
|
5
|
+
function createDiffCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('diff')
|
|
8
|
+
.description('Show what changed recently')
|
|
9
|
+
.option('-t, --time <duration>', 'Show changes in last X time (e.g., 5m, 1h, 2d)', '1h')
|
|
10
|
+
.option('-f, --file <path>', 'Show changes for specific file')
|
|
11
|
+
.option('-l, --limit <number>', 'Limit number of changes', '20')
|
|
12
|
+
.action(async (options) => {
|
|
13
|
+
const stateCLI = new statecli_1.StateCLI();
|
|
14
|
+
// Parse time duration
|
|
15
|
+
const duration = parseDuration(options.time);
|
|
16
|
+
const since = new Date(Date.now() - duration);
|
|
17
|
+
let entity = 'project:current';
|
|
18
|
+
if (options.file) {
|
|
19
|
+
entity = `file:${options.file}`;
|
|
20
|
+
}
|
|
21
|
+
const history = stateCLI.log(entity, { limit: parseInt(options.limit) });
|
|
22
|
+
// Filter by time
|
|
23
|
+
const recentChanges = history.changes.filter((change) => {
|
|
24
|
+
const changeTime = new Date(change.timestamp);
|
|
25
|
+
return changeTime >= since;
|
|
26
|
+
});
|
|
27
|
+
if (recentChanges.length === 0) {
|
|
28
|
+
console.log(`No changes in the last ${options.time}`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log(`\n📊 Changes in the last ${options.time}:\n`);
|
|
32
|
+
recentChanges.forEach((change, index) => {
|
|
33
|
+
const time = new Date(change.timestamp).toLocaleTimeString();
|
|
34
|
+
const state = change.after || change;
|
|
35
|
+
console.log(`${index + 1}. [${time}] ${state.action || 'change'}`);
|
|
36
|
+
if (state.path) {
|
|
37
|
+
console.log(` 📁 ${state.path}`);
|
|
38
|
+
}
|
|
39
|
+
if (state.description) {
|
|
40
|
+
console.log(` 💬 ${state.description}`);
|
|
41
|
+
}
|
|
42
|
+
if (state.files && Array.isArray(state.files)) {
|
|
43
|
+
console.log(` 📝 Files: ${state.files.join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
console.log('');
|
|
46
|
+
});
|
|
47
|
+
console.log(`Total: ${recentChanges.length} changes\n`);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function parseDuration(duration) {
|
|
51
|
+
const match = duration.match(/^(\d+)([smhd])$/);
|
|
52
|
+
if (!match) {
|
|
53
|
+
throw new Error('Invalid duration format. Use: 5m, 1h, 2d');
|
|
54
|
+
}
|
|
55
|
+
const value = parseInt(match[1]);
|
|
56
|
+
const unit = match[2];
|
|
57
|
+
const multipliers = {
|
|
58
|
+
's': 1000,
|
|
59
|
+
'm': 60 * 1000,
|
|
60
|
+
'h': 60 * 60 * 1000,
|
|
61
|
+
'd': 24 * 60 * 60 * 1000
|
|
62
|
+
};
|
|
63
|
+
return value * multipliers[unit];
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-undo.d.ts","sourceRoot":"","sources":["../../src/commands/quick-undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D7D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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.createQuickUndoCommand = createQuickUndoCommand;
|
|
37
|
+
const statecli_1 = require("../statecli");
|
|
38
|
+
const readline = __importStar(require("readline"));
|
|
39
|
+
function createQuickUndoCommand(program) {
|
|
40
|
+
program
|
|
41
|
+
.command('undo')
|
|
42
|
+
.description('Quick undo last change')
|
|
43
|
+
.argument('[file]', 'File to undo (optional, defaults to last change)')
|
|
44
|
+
.option('-t, --time <duration>', 'Undo to X time ago (e.g., 5m, 1h)')
|
|
45
|
+
.option('-c, --checkpoint <name>', 'Undo to specific checkpoint')
|
|
46
|
+
.option('-s, --steps <number>', 'Number of steps to undo', '1')
|
|
47
|
+
.option('-y, --yes', 'Skip confirmation')
|
|
48
|
+
.action(async (file, options) => {
|
|
49
|
+
const stateCLI = new statecli_1.StateCLI();
|
|
50
|
+
let entity = 'project:current';
|
|
51
|
+
if (file) {
|
|
52
|
+
entity = `file:${file}`;
|
|
53
|
+
}
|
|
54
|
+
// Preview what will be undone
|
|
55
|
+
const preview = stateCLI.previewUndo(entity, parseInt(options.steps));
|
|
56
|
+
console.log('\n🔍 Preview of undo operation:\n');
|
|
57
|
+
console.log(`Entity: ${preview.entity}`);
|
|
58
|
+
console.log(`Steps to undo: ${preview.stepsToUndo}`);
|
|
59
|
+
console.log(`Current state: ${preview.currentStateIndex}`);
|
|
60
|
+
console.log(`Target state: ${preview.targetStateIndex}\n`);
|
|
61
|
+
if (preview.affectedChanges.length > 0) {
|
|
62
|
+
console.log('Changes that will be undone:');
|
|
63
|
+
preview.affectedChanges.forEach((change, index) => {
|
|
64
|
+
const state = change.state;
|
|
65
|
+
console.log(` ${index + 1}. ${state.action || 'change'} - ${new Date(change.timestamp).toLocaleString()}`);
|
|
66
|
+
});
|
|
67
|
+
console.log('');
|
|
68
|
+
}
|
|
69
|
+
// Confirm
|
|
70
|
+
if (!options.yes) {
|
|
71
|
+
const confirmed = await confirm('Do you want to proceed with undo?');
|
|
72
|
+
if (!confirmed) {
|
|
73
|
+
console.log('❌ Undo cancelled');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Perform undo
|
|
78
|
+
const result = stateCLI.undo(entity, parseInt(options.steps));
|
|
79
|
+
console.log('\n✅ Undo completed!');
|
|
80
|
+
console.log(`Rolled back ${result.stepsUndone} step(s)`);
|
|
81
|
+
console.log(result.summary);
|
|
82
|
+
if (result.restoredState) {
|
|
83
|
+
const state = result.restoredState;
|
|
84
|
+
if (state.path) {
|
|
85
|
+
console.log(`📁 Restored: ${state.path}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async function confirm(question) {
|
|
91
|
+
const rl = readline.createInterface({
|
|
92
|
+
input: process.stdin,
|
|
93
|
+
output: process.stdout
|
|
94
|
+
});
|
|
95
|
+
return new Promise((resolve) => {
|
|
96
|
+
rl.question(`${question} (y/N): `, (answer) => {
|
|
97
|
+
rl.close();
|
|
98
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=quick-undo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-undo.js","sourceRoot":"","sources":["../../src/commands/quick-undo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wDA0DC;AA7DD,0CAAuC;AACvC,mDAAqC;AAErC,SAAgB,sBAAsB,CAAC,OAAgB;IACnD,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC;SACrC,QAAQ,CAAC,QAAQ,EAAE,kDAAkD,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;SACpE,MAAM,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,GAAG,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAEhC,IAAI,MAAM,GAAG,iBAAiB,CAAC;QAC/B,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAE3D,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;gBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAY,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,QAAQ,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAChH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,UAAU;QACV,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO;YACX,CAAC;QACL,CAAC;QAED,eAAe;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,UAAU,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,aAAoB,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,QAAgB;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FzD"}
|
|
@@ -0,0 +1,120 @@
|
|
|
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.createWatchCommand = createWatchCommand;
|
|
37
|
+
const statecli_1 = require("../statecli");
|
|
38
|
+
const file_watcher_1 = require("../file-watcher");
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
function createWatchCommand(program) {
|
|
42
|
+
const watchCmd = program
|
|
43
|
+
.command('watch')
|
|
44
|
+
.description('Watch files and auto-track changes');
|
|
45
|
+
watchCmd
|
|
46
|
+
.command('start')
|
|
47
|
+
.description('Start watching files for changes')
|
|
48
|
+
.option('-p, --path <paths...>', 'Paths to watch (default: current directory)', ['.'])
|
|
49
|
+
.option('-i, --ignore <patterns...>', 'Patterns to ignore')
|
|
50
|
+
.option('--auto-checkpoint', 'Enable auto-checkpoints every 15 minutes')
|
|
51
|
+
.option('--interval <minutes>', 'Checkpoint interval in minutes', '15')
|
|
52
|
+
.action(async (options) => {
|
|
53
|
+
const stateCLI = new statecli_1.StateCLI();
|
|
54
|
+
const watcher = new file_watcher_1.FileWatcher(stateCLI, {
|
|
55
|
+
paths: options.path,
|
|
56
|
+
ignore: options.ignore,
|
|
57
|
+
autoCheckpoint: options.autoCheckpoint,
|
|
58
|
+
checkpointInterval: parseInt(options.interval)
|
|
59
|
+
});
|
|
60
|
+
// Save watcher PID for stop command
|
|
61
|
+
const pidFile = path.join(process.cwd(), '.statecli-watcher.pid');
|
|
62
|
+
fs.writeFileSync(pidFile, process.pid.toString());
|
|
63
|
+
console.log('🚀 StateCLI auto-tracking started!');
|
|
64
|
+
console.log(' Watching:', options.path.join(', '));
|
|
65
|
+
if (options.autoCheckpoint) {
|
|
66
|
+
console.log(` Auto-checkpoint: every ${options.interval} minutes`);
|
|
67
|
+
}
|
|
68
|
+
console.log('\n Press Ctrl+C to stop\n');
|
|
69
|
+
watcher.start();
|
|
70
|
+
// Handle graceful shutdown
|
|
71
|
+
process.on('SIGINT', () => {
|
|
72
|
+
console.log('\n\n🛑 Stopping watcher...');
|
|
73
|
+
watcher.stop();
|
|
74
|
+
fs.unlinkSync(pidFile);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
});
|
|
77
|
+
// Keep process alive
|
|
78
|
+
await new Promise(() => { });
|
|
79
|
+
});
|
|
80
|
+
watchCmd
|
|
81
|
+
.command('stop')
|
|
82
|
+
.description('Stop the file watcher')
|
|
83
|
+
.action(() => {
|
|
84
|
+
const pidFile = path.join(process.cwd(), '.statecli-watcher.pid');
|
|
85
|
+
if (!fs.existsSync(pidFile)) {
|
|
86
|
+
console.log('❌ No watcher is running');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const pid = parseInt(fs.readFileSync(pidFile, 'utf-8'));
|
|
90
|
+
try {
|
|
91
|
+
process.kill(pid, 'SIGINT');
|
|
92
|
+
fs.unlinkSync(pidFile);
|
|
93
|
+
console.log('✅ Watcher stopped');
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.error('❌ Failed to stop watcher:', error);
|
|
97
|
+
fs.unlinkSync(pidFile);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
watchCmd
|
|
101
|
+
.command('status')
|
|
102
|
+
.description('Check watcher status')
|
|
103
|
+
.action(() => {
|
|
104
|
+
const pidFile = path.join(process.cwd(), '.statecli-watcher.pid');
|
|
105
|
+
if (!fs.existsSync(pidFile)) {
|
|
106
|
+
console.log('⭕ Watcher is not running');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const pid = parseInt(fs.readFileSync(pidFile, 'utf-8'));
|
|
110
|
+
try {
|
|
111
|
+
process.kill(pid, 0); // Check if process exists
|
|
112
|
+
console.log('✅ Watcher is running (PID:', pid + ')');
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.log('❌ Watcher process not found (stale PID file)');
|
|
116
|
+
fs.unlinkSync(pidFile);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { StateCLI } from './statecli';
|
|
2
|
+
export interface WatcherConfig {
|
|
3
|
+
paths: string[];
|
|
4
|
+
ignore?: string[];
|
|
5
|
+
autoCheckpoint?: boolean;
|
|
6
|
+
checkpointInterval?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class FileWatcher {
|
|
9
|
+
private watcher;
|
|
10
|
+
private stateCLI;
|
|
11
|
+
private config;
|
|
12
|
+
private lastCheckpoint;
|
|
13
|
+
constructor(stateCLI: StateCLI, config: WatcherConfig);
|
|
14
|
+
start(): void;
|
|
15
|
+
stop(): void;
|
|
16
|
+
private handleFileChange;
|
|
17
|
+
private handleFileAdd;
|
|
18
|
+
private handleFileDelete;
|
|
19
|
+
private autoCheckpoint;
|
|
20
|
+
getStats(): {
|
|
21
|
+
filesTracked: number;
|
|
22
|
+
lastCheckpoint: Date;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=file-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa;IAKrD,KAAK,IAAI,IAAI;IAmCb,IAAI,IAAI,IAAI;YAOE,gBAAgB;YAehB,aAAa;YAkBb,gBAAgB;YAWhB,cAAc;IAc5B,QAAQ,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,IAAI,CAAA;KAAE;CAM7D"}
|
|
@@ -0,0 +1,141 @@
|
|
|
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.FileWatcher = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const chokidar = __importStar(require("chokidar"));
|
|
40
|
+
class FileWatcher {
|
|
41
|
+
watcher = null;
|
|
42
|
+
stateCLI;
|
|
43
|
+
config;
|
|
44
|
+
lastCheckpoint = Date.now();
|
|
45
|
+
constructor(stateCLI, config) {
|
|
46
|
+
this.stateCLI = stateCLI;
|
|
47
|
+
this.config = config;
|
|
48
|
+
}
|
|
49
|
+
start() {
|
|
50
|
+
const watchPaths = this.config.paths;
|
|
51
|
+
const ignore = this.config.ignore || [
|
|
52
|
+
'**/node_modules/**',
|
|
53
|
+
'**/.git/**',
|
|
54
|
+
'**/dist/**',
|
|
55
|
+
'**/build/**',
|
|
56
|
+
'**/.next/**',
|
|
57
|
+
'**/coverage/**'
|
|
58
|
+
];
|
|
59
|
+
console.log(`🔍 StateCLI watching: ${watchPaths.join(', ')}`);
|
|
60
|
+
this.watcher = chokidar.watch(watchPaths, {
|
|
61
|
+
ignored: ignore,
|
|
62
|
+
persistent: true,
|
|
63
|
+
ignoreInitial: true,
|
|
64
|
+
awaitWriteFinish: {
|
|
65
|
+
stabilityThreshold: 500,
|
|
66
|
+
pollInterval: 100
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
this.watcher
|
|
70
|
+
.on('change', (filePath) => this.handleFileChange(filePath))
|
|
71
|
+
.on('add', (filePath) => this.handleFileAdd(filePath))
|
|
72
|
+
.on('unlink', (filePath) => this.handleFileDelete(filePath))
|
|
73
|
+
.on('error', (error) => console.error(`Watcher error: ${error}`));
|
|
74
|
+
// Auto-checkpoint timer
|
|
75
|
+
if (this.config.autoCheckpoint) {
|
|
76
|
+
setInterval(() => this.autoCheckpoint(), (this.config.checkpointInterval || 15) * 60 * 1000);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
stop() {
|
|
80
|
+
if (this.watcher) {
|
|
81
|
+
this.watcher.close();
|
|
82
|
+
console.log('🛑 StateCLI watcher stopped');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async handleFileChange(filePath) {
|
|
86
|
+
const relativePath = path.relative(process.cwd(), filePath);
|
|
87
|
+
console.log(`📝 Changed: ${relativePath}`);
|
|
88
|
+
try {
|
|
89
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
90
|
+
const entity = `file:${relativePath}`;
|
|
91
|
+
// Track the file change
|
|
92
|
+
this.stateCLI.trackFile(entity, content, content);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error(`Error tracking ${filePath}:`, error);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async handleFileAdd(filePath) {
|
|
99
|
+
const relativePath = path.relative(process.cwd(), filePath);
|
|
100
|
+
console.log(`➕ Added: ${relativePath}`);
|
|
101
|
+
try {
|
|
102
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
103
|
+
this.stateCLI.track('file', relativePath, {
|
|
104
|
+
action: 'created',
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
path: relativePath,
|
|
107
|
+
size: content.length
|
|
108
|
+
}, 'watcher');
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(`Error tracking ${filePath}:`, error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async handleFileDelete(filePath) {
|
|
115
|
+
const relativePath = path.relative(process.cwd(), filePath);
|
|
116
|
+
console.log(`🗑️ Deleted: ${relativePath}`);
|
|
117
|
+
this.stateCLI.track('file', relativePath, {
|
|
118
|
+
action: 'deleted',
|
|
119
|
+
timestamp: new Date().toISOString(),
|
|
120
|
+
path: relativePath
|
|
121
|
+
}, 'watcher');
|
|
122
|
+
}
|
|
123
|
+
async autoCheckpoint() {
|
|
124
|
+
const now = Date.now();
|
|
125
|
+
const elapsed = (now - this.lastCheckpoint) / 1000 / 60; // minutes
|
|
126
|
+
if (elapsed >= (this.config.checkpointInterval || 15)) {
|
|
127
|
+
console.log(`💾 Auto-checkpoint (${elapsed.toFixed(0)} min elapsed)`);
|
|
128
|
+
const checkpointName = `auto-${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|
129
|
+
this.stateCLI.checkpoint('project:current', checkpointName);
|
|
130
|
+
this.lastCheckpoint = now;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getStats() {
|
|
134
|
+
return {
|
|
135
|
+
filesTracked: 0, // TODO: implement
|
|
136
|
+
lastCheckpoint: new Date(this.lastCheckpoint)
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.FileWatcher = FileWatcher;
|
|
141
|
+
//# sourceMappingURL=file-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/statecli.d.ts
CHANGED
|
@@ -19,6 +19,18 @@ export declare class StateCLI {
|
|
|
19
19
|
track(entityType: string, entityId: string, state: Record<string, unknown>, actor?: string): TrackResult;
|
|
20
20
|
getCurrentState(entity: string): Record<string, unknown> | null;
|
|
21
21
|
listEntities(): string[];
|
|
22
|
+
trackFile(entity: string, beforeContent: string, afterContent: string, actor?: string): TrackResult;
|
|
23
|
+
previewUndo(entity: string, steps?: number): {
|
|
24
|
+
entity: string;
|
|
25
|
+
stepsToUndo: number;
|
|
26
|
+
currentStateIndex: number;
|
|
27
|
+
targetStateIndex: number;
|
|
28
|
+
affectedChanges: Array<{
|
|
29
|
+
timestamp: string;
|
|
30
|
+
state: Record<string, unknown>;
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
private generateSimpleDiff;
|
|
22
34
|
close(): void;
|
|
23
35
|
}
|
|
24
36
|
export declare function getStateCLI(config?: Partial<StateCLIConfig>): StateCLI;
|
package/dist/statecli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statecli.d.ts","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,WAAW,EAEZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/B,YAAY;IAgCf,IAAI,CACF,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAU,GAChB,UAAU;IAab,UAAU,CACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,gBAAgB;IAYnB,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAgBxC,GAAG,CACD,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/D,SAAS;IAgBZ,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAiB,GACvB,WAAW;IAWd,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,YAAY,IAAI,MAAM,EAAE;IAIxB,KAAK,IAAI,IAAI;CAGd;AAID,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAKtE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
|
|
1
|
+
{"version":3,"file":"statecli.d.ts","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,WAAW,EAEZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/B,YAAY;IAgCf,IAAI,CACF,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAU,GAChB,UAAU;IAab,UAAU,CACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,gBAAgB;IAYnB,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAgBxC,GAAG,CACD,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/D,SAAS;IAgBZ,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAiB,GACvB,WAAW;IAWd,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,YAAY,IAAI,MAAM,EAAE;IAIxB,SAAS,CACP,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,MAAiB,GACvB,WAAW;IAYd,WAAW,CACT,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAU,GAChB;QACD,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;KAC/E;IAmBD,OAAO,CAAC,kBAAkB;IAiB1B,KAAK,IAAI,IAAI;CAGd;AAID,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAKtE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
|
package/dist/statecli.js
CHANGED
|
@@ -100,6 +100,47 @@ class StateCLI {
|
|
|
100
100
|
listEntities() {
|
|
101
101
|
return this.storage.listEntities();
|
|
102
102
|
}
|
|
103
|
+
trackFile(entity, beforeContent, afterContent, actor = 'system') {
|
|
104
|
+
const [entityType, entityId] = entity.includes(':')
|
|
105
|
+
? entity.split(':')
|
|
106
|
+
: ['file', entity];
|
|
107
|
+
return this.track(entityType, entityId, {
|
|
108
|
+
before: beforeContent,
|
|
109
|
+
after: afterContent,
|
|
110
|
+
diff: this.generateSimpleDiff(beforeContent, afterContent)
|
|
111
|
+
}, actor);
|
|
112
|
+
}
|
|
113
|
+
previewUndo(entity, steps = 1) {
|
|
114
|
+
const changes = this.storage.getChanges(entity, {});
|
|
115
|
+
const currentIndex = changes.length;
|
|
116
|
+
const targetIndex = Math.max(0, currentIndex - steps);
|
|
117
|
+
const affectedChanges = changes.slice(targetIndex, currentIndex).map(change => ({
|
|
118
|
+
timestamp: change.timestamp,
|
|
119
|
+
state: change.after
|
|
120
|
+
}));
|
|
121
|
+
return {
|
|
122
|
+
entity,
|
|
123
|
+
stepsToUndo: steps,
|
|
124
|
+
currentStateIndex: currentIndex,
|
|
125
|
+
targetStateIndex: targetIndex,
|
|
126
|
+
affectedChanges
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
generateSimpleDiff(before, after) {
|
|
130
|
+
const beforeLines = before.split('\n');
|
|
131
|
+
const afterLines = after.split('\n');
|
|
132
|
+
let diff = '';
|
|
133
|
+
const maxLen = Math.max(beforeLines.length, afterLines.length);
|
|
134
|
+
for (let i = 0; i < maxLen; i++) {
|
|
135
|
+
if (beforeLines[i] !== afterLines[i]) {
|
|
136
|
+
if (beforeLines[i])
|
|
137
|
+
diff += `- ${beforeLines[i]}\n`;
|
|
138
|
+
if (afterLines[i])
|
|
139
|
+
diff += `+ ${afterLines[i]}\n`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return diff || '(no changes)';
|
|
143
|
+
}
|
|
103
144
|
close() {
|
|
104
145
|
this.storage.close();
|
|
105
146
|
}
|
package/dist/statecli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statecli.js","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"statecli.js","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "statecli-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"mcpName": "io.github.charo360/statecli",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Memory and self-awareness layer for AI agents - MCP server for state tracking, replay, and undo",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"statecli": "./dist/cli.js",
|
|
@@ -20,30 +20,34 @@
|
|
|
20
20
|
"prepublishOnly": "npm run build"
|
|
21
21
|
},
|
|
22
22
|
"keywords": [
|
|
23
|
+
"mcp",
|
|
24
|
+
"mcp-server",
|
|
25
|
+
"model-context-protocol",
|
|
26
|
+
"ai-agent",
|
|
27
|
+
"agent-infrastructure",
|
|
28
|
+
"agent-memory",
|
|
29
|
+
"self-awareness",
|
|
23
30
|
"state-management",
|
|
24
|
-
"
|
|
25
|
-
"time-travel-debugging",
|
|
31
|
+
"replay",
|
|
26
32
|
"undo",
|
|
27
33
|
"rollback",
|
|
28
34
|
"checkpoint",
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"langchain-tools",
|
|
39
|
-
"autogpt-plugins",
|
|
40
|
-
"crewai-tools"
|
|
35
|
+
"windsurf",
|
|
36
|
+
"cascade",
|
|
37
|
+
"cursor",
|
|
38
|
+
"claude",
|
|
39
|
+
"langchain",
|
|
40
|
+
"autogpt",
|
|
41
|
+
"crewai",
|
|
42
|
+
"ai-tools",
|
|
43
|
+
"agent-layer"
|
|
41
44
|
],
|
|
42
45
|
"author": "",
|
|
43
46
|
"license": "MIT",
|
|
44
47
|
"dependencies": {
|
|
45
48
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
46
49
|
"better-sqlite3": "^11.0.0",
|
|
50
|
+
"chokidar": "^4.0.3",
|
|
47
51
|
"commander": "^12.0.0",
|
|
48
52
|
"uuid": "^9.0.0"
|
|
49
53
|
},
|