statecli-mcp-server 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -1,40 +1,115 @@
1
- # StateCLI - MCP Server for State Replay & Self-Debugging
1
+ # StateCLI - Memory + Self-Awareness Layer for AI Agents
2
2
 
3
- > **For AI Agents:** Memory, replay, and undo capability for your actions.
3
+ > Give AI agents the ability to remember, replay, and undo their actions.
4
4
 
5
- **MCP Server** | **State Management** | **Agent Self-Debugging** | **Rollback Capability**
5
+ **Agent Infrastructure** | **Memory Layer** | **Self-Awareness** | **Undo Capability**
6
6
 
7
7
  ---
8
8
 
9
- ## What This Does (For AI Agents)
9
+ ## What This Is
10
10
 
11
- StateCLI gives AI agents the ability to:
11
+ StateCLI is the **memory and self-awareness layer** for AI coding agents.
12
12
 
13
- **See what you just did** - Replay your actions step-by-step
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
- **Keywords for discovery:** state-management, debugging, replay, time-travel, undo, mcp-server, ai-agent-tools, self-debugging, agent-memory, rollback, introspection
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
- **Common Agent Problems:**
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
+ - ✅ **Windows Native Support** (v0.4.1+)
65
+
66
+ **See what changed:**
67
+ ```bash
68
+ statecli diff --time 5m
69
+ ```
70
+
71
+ **Undo mistakes:**
72
+ ```bash
73
+ statecli undo
26
74
  ```
27
- Problem: "I changed something but don't know what"
28
- Solution: statecli_replay(entity) → See exact changes
29
75
 
30
- Problem: "I broke something and need to undo"
31
- Solution: statecli_undo(entity) → Rollback instantly
76
+ 👉 **[Full Developer Guide](./DEVELOPER_GUIDE.md)**
32
77
 
33
- Problem: "I want to try something risky"
34
- Solution: statecli_checkpoint(entity) → Save first, rollback if needed
78
+ ---
79
+
80
+ ### 2. For AI Agents: MCP Tools
81
+
82
+ **5 core tools for agent memory & self-awareness:**
83
+
84
+ - `statecli_replay` - Show what the agent just did
85
+ - `statecli_undo` - Rollback mistakes
86
+ - `statecli_checkpoint` - Save state before risky ops
87
+ - `statecli_log` - View complete history
88
+ - `statecli_track` - Track important state changes
89
+
90
+ **MCP Setup:**
91
+ ```json
92
+ {
93
+ "mcpServers": {
94
+ "statecli": {
95
+ "command": "npx",
96
+ "args": ["-y", "statecli-mcp-server"]
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Quick Install
105
+
106
+ ```bash
107
+ # Global install
108
+ npm install -g statecli-mcp-server
35
109
 
36
- Problem: "I need to understand my past behavior"
37
- Solution: statecli_log(entity) → View complete history
110
+ # Start auto-tracking
111
+ cd your-project
112
+ statecli watch start --auto-checkpoint
38
113
  ```
39
114
 
40
115
  ---
@@ -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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createDiffCommand(program: Command): void;
3
+ //# sourceMappingURL=diff.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createQuickUndoCommand(program: Command): void;
3
+ //# sourceMappingURL=quick-undo.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createWatchCommand(program: Command): void;
3
+ //# sourceMappingURL=watch.d.ts.map
@@ -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,26 @@
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
+ private fileSnapshots;
14
+ constructor(stateCLI: StateCLI, config: WatcherConfig);
15
+ start(): void;
16
+ stop(): void;
17
+ private handleFileChange;
18
+ private handleFileAdd;
19
+ private handleFileDelete;
20
+ private autoCheckpoint;
21
+ getStats(): {
22
+ filesTracked: number;
23
+ lastCheckpoint: Date;
24
+ };
25
+ }
26
+ //# 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,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAAkC;gBAE3C,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa;IAKrD,KAAK,IAAI,IAAI;IAiEb,IAAI,IAAI,IAAI;YAOE,gBAAgB;YAuBhB,aAAa;YAsBb,gBAAgB;YAahB,cAAc;IAc5B,QAAQ,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,IAAI,CAAA;KAAE;CAM7D"}
@@ -0,0 +1,186 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.FileWatcher = void 0;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const node_watch_1 = __importDefault(require("node-watch"));
43
+ class FileWatcher {
44
+ watcher = null;
45
+ stateCLI;
46
+ config;
47
+ lastCheckpoint = Date.now();
48
+ fileSnapshots = new Map();
49
+ constructor(stateCLI, config) {
50
+ this.stateCLI = stateCLI;
51
+ this.config = config;
52
+ }
53
+ start() {
54
+ const watchPaths = this.config.paths;
55
+ // Basic ignore list - substrings to ignore
56
+ const ignoredSubstrings = [
57
+ 'node_modules',
58
+ '.git',
59
+ 'dist',
60
+ 'build',
61
+ '.next',
62
+ 'coverage',
63
+ '.statecli'
64
+ ];
65
+ // Filter function for node-watch
66
+ // Return true to include/watch, false to ignore
67
+ const filter = (name) => {
68
+ for (const ignored of ignoredSubstrings) {
69
+ // Check if path contains the ignored substring
70
+ // Using platform specific separator check might be safer but substring is usually ok for these standard names
71
+ if (name.includes(ignored))
72
+ return false;
73
+ }
74
+ // Also ignore changes to specific files like .DS_Store
75
+ if (name.endsWith('.DS_Store'))
76
+ return false;
77
+ return true;
78
+ };
79
+ console.log(`🔍 StateCLI watching: ${watchPaths.join(', ')}`);
80
+ try {
81
+ this.watcher = (0, node_watch_1.default)(watchPaths, {
82
+ recursive: true,
83
+ filter: filter,
84
+ delay: 200 // Wait 200ms for file write to finish/debounce
85
+ });
86
+ this.watcher.on('change', (evt, name) => {
87
+ // name is the full path
88
+ if (evt === 'update') {
89
+ // Check if it's a new file or existing
90
+ if (this.fileSnapshots.has(name)) {
91
+ console.log(`📝 File changed: ${name}`);
92
+ this.handleFileChange(name);
93
+ }
94
+ else {
95
+ console.log(`➕ File added: ${name}`);
96
+ this.handleFileAdd(name);
97
+ }
98
+ }
99
+ else if (evt === 'remove') {
100
+ console.log(`🗑️ File deleted: ${name}`);
101
+ this.handleFileDelete(name);
102
+ }
103
+ });
104
+ console.log('✅ Watcher ready (using node-watch)');
105
+ }
106
+ catch (error) {
107
+ console.error('Failed to start watcher:', error);
108
+ }
109
+ // Auto-checkpoint timer
110
+ if (this.config.autoCheckpoint) {
111
+ setInterval(() => this.autoCheckpoint(), (this.config.checkpointInterval || 15) * 60 * 1000);
112
+ }
113
+ }
114
+ stop() {
115
+ if (this.watcher) {
116
+ this.watcher.close();
117
+ console.log('🛑 StateCLI watcher stopped');
118
+ }
119
+ }
120
+ async handleFileChange(filePath) {
121
+ const relativePath = path.relative(process.cwd(), filePath);
122
+ console.log(`📝 Changed: ${relativePath}`);
123
+ try {
124
+ // Read new content
125
+ const content = fs.readFileSync(filePath, 'utf-8');
126
+ const entity = `file:${relativePath}`;
127
+ // Get previous content from snapshots or use empty string
128
+ const previousContent = this.fileSnapshots.get(filePath) || '';
129
+ // Track the file change with proper before/after
130
+ this.stateCLI.trackFile(entity, previousContent, content);
131
+ // Update snapshot
132
+ this.fileSnapshots.set(filePath, content);
133
+ }
134
+ catch (error) {
135
+ // If file was deleted rapidly or read failed
136
+ console.error(`Error tracking ${filePath}:`, error);
137
+ }
138
+ }
139
+ async handleFileAdd(filePath) {
140
+ const relativePath = path.relative(process.cwd(), filePath);
141
+ console.log(`➕ Added: ${relativePath}`);
142
+ try {
143
+ const content = fs.readFileSync(filePath, 'utf-8');
144
+ // Initialize snapshot
145
+ this.fileSnapshots.set(filePath, content);
146
+ this.stateCLI.track('file', relativePath, {
147
+ action: 'created',
148
+ timestamp: new Date().toISOString(),
149
+ path: relativePath,
150
+ size: content.length
151
+ }, 'watcher');
152
+ }
153
+ catch (error) {
154
+ // File might be deleted immediately
155
+ // console.error(`Error tracking ${filePath}:`, error);
156
+ }
157
+ }
158
+ async handleFileDelete(filePath) {
159
+ const relativePath = path.relative(process.cwd(), filePath);
160
+ console.log(`🗑️ Deleted: ${relativePath}`);
161
+ this.fileSnapshots.delete(filePath);
162
+ this.stateCLI.track('file', relativePath, {
163
+ action: 'deleted',
164
+ timestamp: new Date().toISOString(),
165
+ path: relativePath
166
+ }, 'watcher');
167
+ }
168
+ async autoCheckpoint() {
169
+ const now = Date.now();
170
+ const elapsed = (now - this.lastCheckpoint) / 1000 / 60; // minutes
171
+ if (elapsed >= (this.config.checkpointInterval || 15)) {
172
+ console.log(`💾 Auto-checkpoint (${elapsed.toFixed(0)} min elapsed)`);
173
+ const checkpointName = `auto-${new Date().toISOString().replace(/[:.]/g, '-')}`;
174
+ this.stateCLI.checkpoint('project:current', checkpointName);
175
+ this.lastCheckpoint = now;
176
+ }
177
+ }
178
+ getStats() {
179
+ return {
180
+ filesTracked: 0, // TODO: implement
181
+ lastCheckpoint: new Date(this.lastCheckpoint)
182
+ };
183
+ }
184
+ }
185
+ exports.FileWatcher = FileWatcher;
186
+ //# 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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"}
@@ -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;
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statecli.js","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statecli.js","sourceRoot":"","sources":["../src/statecli.ts"],"names":[],"mappings":";;;AAuNA,kCAKC;AAED,sCAKC;AAnOD,uCAAyC;AAWzC,MAAa,QAAQ;IACX,OAAO,CAAe;IAE9B,YAAY,SAAkC,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CACJ,MAAc,EACd,UAA8B,EAAE;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,KAAK,GAAG,CAAC;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC,CAAC;QAEJ,MAAM,oBAAoB,GAAa,EAAE,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,oBAAoB,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,oBAAoB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5D,CAAC;YACD,oBAAoB,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpE,CAAC;QAED,OAAO;YACL,MAAM;YACN,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ;YACjF,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,CACF,MAAc,EACd,QAAgB,CAAC;QAEjB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO;YACL,MAAM;YACN,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,aAAa;YACb,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,mBAAmB;gBACjF,CAAC,CAAC,qBAAqB;SAC1B,CAAC;IACJ,CAAC;IAED,UAAU,CACR,MAAc,EACd,IAAY;QAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE/D,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,OAAO,EAAE,eAAe,IAAI,iBAAiB,MAAM,EAAE;SACtD,CAAC;IACJ,CAAC;IAED,iBAAiB,CACf,MAAc,EACd,IAAY;QAEZ,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9E,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,2BAA2B,IAAI,UAAU,UAAU,CAAC,SAAS,EAAE;aACzE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,eAAe,IAAI,mBAAmB,MAAM,EAAE;SACxD,CAAC;IACJ,CAAC;IAED,GAAG,CACD,MAAc,EACd,UAA8D,EAAE;QAEhE,IAAI,OAAO,CAAC;QAEZ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,OAAO;YACL,MAAM;YACN,OAAO;YACP,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS;SAC7E,CAAC;IACJ,CAAC;IAED,KAAK,CACH,UAAkB,EAClB,QAAgB,EAChB,KAA8B,EAC9B,QAAgB,QAAQ;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEtE,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,qBAAqB,MAAM,CAAC,MAAM,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,CACP,MAAc,EACd,aAAqB,EACrB,YAAoB,EACpB,QAAgB,QAAQ;QAExB,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACnB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE;YACtC,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,CAAC;SAC3D,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,WAAW,CACT,MAAc,EACd,QAAgB,CAAC;QAQjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC;QAEtD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAgC;SAC/C,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,MAAM;YACN,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,YAAY;YAC/B,gBAAgB,EAAE,WAAW;YAC7B,eAAe;SAChB,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,MAAc,EAAE,KAAa;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,IAAI,WAAW,CAAC,CAAC,CAAC;oBAAE,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpD,IAAI,UAAU,CAAC,CAAC,CAAC;oBAAE,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,IAAI,cAAc,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAxMD,4BAwMC;AAED,IAAI,QAAQ,GAAoB,IAAI,CAAC;AAErC,SAAgB,WAAW,CAAC,MAAgC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "statecli-mcp-server",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "mcpName": "io.github.charo360/statecli",
5
- "description": "MCP Server for State Replay & Self-Debugging - Memory, replay, and undo capability for AI agents",
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,31 +20,36 @@
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
- "state-replay",
25
- "time-travel-debugging",
31
+ "replay",
26
32
  "undo",
27
33
  "rollback",
28
34
  "checkpoint",
29
- "agent-memory",
30
- "agent-introspection",
31
- "self-debugging",
32
- "ai-agent-tools",
33
- "mcp-server",
34
- "model-context-protocol",
35
- "autonomous-agents",
36
- "agent-observability",
37
- "state-tracking",
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",
52
+ "node-watch": "^0.7.4",
48
53
  "uuid": "^9.0.0"
49
54
  },
50
55
  "devDependencies": {
@@ -76,4 +81,4 @@
76
81
  "publishConfig": {
77
82
  "access": "public"
78
83
  }
79
- }
84
+ }