fivocell 6.3.0 โ 7.1.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 +194 -197
- package/dist/__tests__/cli-regression.test.js +1 -1
- package/dist/__tests__/cli-regression.test.js.map +1 -1
- package/dist/__tests__/teach-context.test.d.ts +2 -0
- package/dist/__tests__/teach-context.test.d.ts.map +1 -0
- package/dist/__tests__/teach-context.test.js +44 -0
- package/dist/__tests__/teach-context.test.js.map +1 -0
- package/dist/__tests__/teach-parser.test.d.ts +2 -0
- package/dist/__tests__/teach-parser.test.d.ts.map +1 -0
- package/dist/__tests__/teach-parser.test.js +56 -0
- package/dist/__tests__/teach-parser.test.js.map +1 -0
- package/dist/__tests__/teach-store.test.d.ts +2 -0
- package/dist/__tests__/teach-store.test.d.ts.map +1 -0
- package/dist/__tests__/teach-store.test.js +68 -0
- package/dist/__tests__/teach-store.test.js.map +1 -0
- package/dist/__tests__/vibe-engine.test.d.ts +2 -0
- package/dist/__tests__/vibe-engine.test.d.ts.map +1 -0
- package/dist/__tests__/vibe-engine.test.js +132 -0
- package/dist/__tests__/vibe-engine.test.js.map +1 -0
- package/dist/walls/01-context/context/agents-md.d.ts +1 -1
- package/dist/walls/01-context/context/agents-md.d.ts.map +1 -1
- package/dist/walls/01-context/context/agents-md.js +33 -1
- package/dist/walls/01-context/context/agents-md.js.map +1 -1
- package/dist/walls/01-context/context/context-bridge.d.ts +39 -0
- package/dist/walls/01-context/context/context-bridge.d.ts.map +1 -0
- package/dist/walls/01-context/context/context-bridge.js +224 -0
- package/dist/walls/01-context/context/context-bridge.js.map +1 -0
- package/dist/walls/01-context/context/context-continuity.d.ts +54 -0
- package/dist/walls/01-context/context/context-continuity.d.ts.map +1 -0
- package/dist/walls/01-context/context/context-continuity.js +350 -0
- package/dist/walls/01-context/context/context-continuity.js.map +1 -0
- package/dist/walls/01-context/context/context-predictor.d.ts +24 -0
- package/dist/walls/01-context/context/context-predictor.d.ts.map +1 -0
- package/dist/walls/01-context/context/context-predictor.js +322 -0
- package/dist/walls/01-context/context/context-predictor.js.map +1 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts +1 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts.map +1 -1
- package/dist/walls/01-context/context/prompt-builder.js +68 -1
- package/dist/walls/01-context/context/prompt-builder.js.map +1 -1
- package/dist/walls/01-context/sessions/session-memory.d.ts.map +1 -1
- package/dist/walls/01-context/sessions/session-memory.js +47 -1
- package/dist/walls/01-context/sessions/session-memory.js.map +1 -1
- package/dist/walls/04-team/collab/team-supreme.d.ts +70 -0
- package/dist/walls/04-team/collab/team-supreme.d.ts.map +1 -0
- package/dist/walls/04-team/collab/team-supreme.js +357 -0
- package/dist/walls/04-team/collab/team-supreme.js.map +1 -0
- package/dist/walls/05-community/share/cloud-connector.d.ts +83 -0
- package/dist/walls/05-community/share/cloud-connector.d.ts.map +1 -0
- package/dist/walls/05-community/share/cloud-connector.js +385 -0
- package/dist/walls/05-community/share/cloud-connector.js.map +1 -0
- package/dist/walls/05-community/stats/community-supreme.d.ts +83 -0
- package/dist/walls/05-community/stats/community-supreme.d.ts.map +1 -0
- package/dist/walls/05-community/stats/community-supreme.js +221 -0
- package/dist/walls/05-community/stats/community-supreme.js.map +1 -0
- package/dist/walls/06-memory/archive/blob-vault.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/blob-vault.js +8 -9
- package/dist/walls/06-memory/archive/blob-vault.js.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.js +32 -22
- package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.d.ts +19 -0
- package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.js +52 -0
- package/dist/walls/06-memory/privacy/key-provider.js.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.js +9 -0
- package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -1
- package/dist/walls/06-memory/stores/sync-engine.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/sync-engine.js +56 -49
- package/dist/walls/06-memory/stores/sync-engine.js.map +1 -1
- package/dist/walls/06-memory/teach/teach-context.d.ts +8 -0
- package/dist/walls/06-memory/teach/teach-context.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-context.js +25 -0
- package/dist/walls/06-memory/teach/teach-context.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-parser.d.ts +6 -0
- package/dist/walls/06-memory/teach/teach-parser.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-parser.js +42 -0
- package/dist/walls/06-memory/teach/teach-parser.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-sections.d.ts +10 -0
- package/dist/walls/06-memory/teach/teach-sections.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-sections.js +67 -0
- package/dist/walls/06-memory/teach/teach-sections.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-store.d.ts +25 -0
- package/dist/walls/06-memory/teach/teach-store.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-store.js +95 -0
- package/dist/walls/06-memory/teach/teach-store.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-cli.d.ts +2 -0
- package/dist/walls/06-memory/vibe/vibe-cli.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-cli.js +217 -0
- package/dist/walls/06-memory/vibe/vibe-cli.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.d.ts +24 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.js +91 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-context.d.ts +8 -0
- package/dist/walls/06-memory/vibe/vibe-context.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-context.js +88 -0
- package/dist/walls/06-memory/vibe/vibe-context.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-engine.d.ts +45 -0
- package/dist/walls/06-memory/vibe/vibe-engine.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-engine.js +670 -0
- package/dist/walls/06-memory/vibe/vibe-engine.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-intelligence.d.ts +19 -0
- package/dist/walls/06-memory/vibe/vibe-intelligence.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-intelligence.js +264 -0
- package/dist/walls/06-memory/vibe/vibe-intelligence.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-signals.d.ts +27 -0
- package/dist/walls/06-memory/vibe/vibe-signals.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-signals.js +251 -0
- package/dist/walls/06-memory/vibe/vibe-signals.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +25 -0
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/branch.js +6 -6
- package/dist/walls/07-runtime/cli/commands/branch.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/cloud.d.ts +3 -0
- package/dist/walls/07-runtime/cli/commands/cloud.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/cloud.js +219 -0
- package/dist/walls/07-runtime/cli/commands/cloud.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/community.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/community.js +6 -0
- package/dist/walls/07-runtime/cli/commands/community.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/help.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/help.js +87 -77
- package/dist/walls/07-runtime/cli/commands/help.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/memory.js +5 -5
- package/dist/walls/07-runtime/cli/commands/memory.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/scan.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/scan.js +39 -20
- package/dist/walls/07-runtime/cli/commands/scan.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/session.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/session.js +2 -1
- package/dist/walls/07-runtime/cli/commands/session.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/setup.js +2 -2
- package/dist/walls/07-runtime/cli/commands/setup.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/status.js +7 -7
- package/dist/walls/07-runtime/cli/commands/status.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/sync.js +1 -1
- package/dist/walls/07-runtime/cli/commands/sync.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/teach.d.ts +3 -0
- package/dist/walls/07-runtime/cli/commands/teach.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/teach.js +203 -0
- package/dist/walls/07-runtime/cli/commands/teach.js.map +1 -0
- package/dist/walls/07-runtime/cli/utils.js +2 -2
- package/dist/walls/07-runtime/daemon/lifecycle.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/lifecycle.js +13 -1
- package/dist/walls/07-runtime/daemon/lifecycle.js.map +1 -1
- package/dist/walls/07-runtime/daemon/routes/session.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/routes/session.js +4 -3
- package/dist/walls/07-runtime/daemon/routes/session.js.map +1 -1
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +3 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
- package/scripts/deep-audit.js +103 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teach-store.test.js","sourceRoot":"","sources":["../../src/__tests__/teach-store.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-engine.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/vibe-engine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
const vibe_confidence_1 = require("../walls/06-memory/vibe/vibe-confidence");
|
|
40
|
+
const vibe_engine_1 = require("../walls/06-memory/vibe/vibe-engine");
|
|
41
|
+
function makeTmpDir() {
|
|
42
|
+
const dir = path.join(os.tmpdir(), `vibe-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
43
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
44
|
+
const vibeDir = path.join(dir, '.cell', 'vibe');
|
|
45
|
+
fs.mkdirSync(vibeDir, { recursive: true });
|
|
46
|
+
return dir;
|
|
47
|
+
}
|
|
48
|
+
function cleanTmpDir(dir) {
|
|
49
|
+
try {
|
|
50
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
51
|
+
}
|
|
52
|
+
catch { }
|
|
53
|
+
}
|
|
54
|
+
describe('Vibe Confidence Engine', () => {
|
|
55
|
+
test('calculateVibe returns 0 for 0 signals', () => {
|
|
56
|
+
expect((0, vibe_confidence_1.calculateVibe)(0, 10)).toBe(0);
|
|
57
|
+
});
|
|
58
|
+
test('vibe grows with count', () => {
|
|
59
|
+
const low = (0, vibe_confidence_1.calculateVibe)(1, 10);
|
|
60
|
+
const mid = (0, vibe_confidence_1.calculateVibe)(5, 10);
|
|
61
|
+
const high = (0, vibe_confidence_1.calculateVibe)(15, 10);
|
|
62
|
+
expect(low).toBeLessThan(mid);
|
|
63
|
+
expect(mid).toBeLessThan(high);
|
|
64
|
+
});
|
|
65
|
+
test('vibe caps at 100', () => {
|
|
66
|
+
const vibe = (0, vibe_confidence_1.calculateVibe)(100, 50, 1.3);
|
|
67
|
+
expect(vibe).toBeLessThanOrEqual(100);
|
|
68
|
+
});
|
|
69
|
+
test('multiplier increases vibe', () => {
|
|
70
|
+
const base = (0, vibe_confidence_1.calculateVibe)(5, 10, 1.0);
|
|
71
|
+
const boosted = (0, vibe_confidence_1.calculateVibe)(5, 10, 1.3);
|
|
72
|
+
expect(boosted).toBeGreaterThan(base);
|
|
73
|
+
});
|
|
74
|
+
test('evolveVibe blends old and new', () => {
|
|
75
|
+
const evolved = (0, vibe_confidence_1.evolveVibe)(50, true, 4, 10, 1.0);
|
|
76
|
+
expect(evolved).toBeGreaterThan(50);
|
|
77
|
+
});
|
|
78
|
+
test('evolveVibe decays with no evidence', () => {
|
|
79
|
+
const evolved = (0, vibe_confidence_1.evolveVibe)(80, false, 5, 10);
|
|
80
|
+
expect(evolved).toBe(79);
|
|
81
|
+
});
|
|
82
|
+
test('getVibeLevel returns correct levels', () => {
|
|
83
|
+
expect((0, vibe_confidence_1.getVibeLevel)(0)).toBe('uncertain');
|
|
84
|
+
expect((0, vibe_confidence_1.getVibeLevel)(50)).toBe('learning');
|
|
85
|
+
expect((0, vibe_confidence_1.getVibeLevel)(65)).toBe('strong');
|
|
86
|
+
expect((0, vibe_confidence_1.getVibeLevel)(80)).toBe('very_strong');
|
|
87
|
+
expect((0, vibe_confidence_1.getVibeLevel)(95)).toBe('certain');
|
|
88
|
+
});
|
|
89
|
+
test('shouldWriteToFile threshold at 50', () => {
|
|
90
|
+
expect((0, vibe_confidence_1.shouldWriteToFile)(49)).toBe(false);
|
|
91
|
+
expect((0, vibe_confidence_1.shouldWriteToFile)(50)).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
test('shouldShowInContext threshold at 65', () => {
|
|
94
|
+
expect((0, vibe_confidence_1.shouldShowInContext)(64)).toBe(false);
|
|
95
|
+
expect((0, vibe_confidence_1.shouldShowInContext)(65)).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('Vibe Summary Builder', () => {
|
|
99
|
+
test('builds summary from signals', () => {
|
|
100
|
+
const signals = [
|
|
101
|
+
{ id: 'language_hindi', group: 'communication', category: 'Communication Style', count: 22, vibe: 95, firstSeen: '2026-01-01', lastSeen: '2026-06-01' },
|
|
102
|
+
{ id: 'tone_direct', group: 'communication', category: 'Communication Style', count: 15, vibe: 88, firstSeen: '2026-01-01', lastSeen: '2026-06-01' },
|
|
103
|
+
{ id: 'changes_minimal', group: 'code_philosophy', category: 'Coding Philosophy', count: 12, vibe: 85, firstSeen: '2026-01-01', lastSeen: '2026-06-01' },
|
|
104
|
+
];
|
|
105
|
+
const rules = [
|
|
106
|
+
{ text: 'Hinglish preferred. Vibe: 95', category: 'Communication Style', vibe: 95, count: 22, level: 'certain' },
|
|
107
|
+
{ text: 'Direct tone. Vibe: 88', category: 'Communication Style', vibe: 88, count: 15, level: 'very_strong' },
|
|
108
|
+
];
|
|
109
|
+
const summary = (0, vibe_engine_1.buildVibeSummary)(signals, rules);
|
|
110
|
+
expect(summary.communication.language).toBe('hinglish');
|
|
111
|
+
expect(summary.communication.tone).toBe('direct');
|
|
112
|
+
expect(summary.totalRules).toBe(2);
|
|
113
|
+
});
|
|
114
|
+
test('handles empty signals gracefully', () => {
|
|
115
|
+
const summary = (0, vibe_engine_1.buildVibeSummary)([], []);
|
|
116
|
+
expect(summary.summary).toBe('Style still learning.');
|
|
117
|
+
expect(summary.totalRules).toBe(0);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('Vibe File I/O', () => {
|
|
121
|
+
let tmpDir;
|
|
122
|
+
beforeEach(() => { tmpDir = makeTmpDir(); });
|
|
123
|
+
afterEach(() => { cleanTmpDir(tmpDir); });
|
|
124
|
+
test('resetVibe cleans vibe directory', () => {
|
|
125
|
+
const vibeDir = path.join(tmpDir, '.cell', 'vibe');
|
|
126
|
+
fs.writeFileSync(path.join(vibeDir, 'vibe.md'), '# test', 'utf-8');
|
|
127
|
+
expect(fs.existsSync(path.join(vibeDir, 'vibe.md'))).toBe(true);
|
|
128
|
+
(0, vibe_engine_1.resetVibe)(tmpDir);
|
|
129
|
+
expect(fs.existsSync(path.join(vibeDir, 'vibe.md'))).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=vibe-engine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-engine.test.js","sourceRoot":"","sources":["../../src/__tests__/vibe-engine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const AGENTS_MD_FILENAME = "AGENTS.md";
|
|
2
2
|
export declare const CURSORRULES_FILENAME = ".cursorrules";
|
|
3
3
|
export declare const CELL_RULES_MARKER = "# fivo-cell:rules:v1";
|
|
4
|
-
export declare const AGENTS_MD_TEMPLATE = "# fivo-cell:rules:v1\n# FIVO Cell \u2014 AI Memory Rules\n\nFIVO Cell is installed and configured for this project. Use its MCP tools\n(named `cell_*`) to maintain permanent memory across sessions.\n\n## The @cell Convention\n\nWhenever the user types `@cell` in their message (e.g. \"@cell what did I\njust edit?\" or \"@cell fix this bug\"), you MUST do the following BEFORE\nresponding:\n\n1. **Call `cell_get_context` FIRST** to load this project's full context.\n2. **Pass `project` as the current folder name** \u2014 derive it from\n `path.basename(process.cwd())` or the absolute path the IDE is open\n in. If unsure, call `cell_list_projects` and pick the matching one.\n3. **Also pass `tool`** set to YOUR ACTUAL IDE/TOOL NAME (the one you\n are running in right now). Cell formats the block differently for\n each tool. The valid values are:\n - If you are in **Antigravity** / **Gemini** IDE \u2192 pass `\"tool\": \"antigravity\"`\n - If you are in **Cursor** \u2192 pass `\"tool\": \"cursor\"`\n - If you are in **OpenCode** CLI \u2192 pass `\"tool\": \"opencode\"`\n - If you are in **Claude Code** CLI \u2192 pass `\"tool\": \"claude-code\"`\n - If you are in **Codex** CLI \u2192 pass `\"tool\": \"codex\"`\n - If you are in **Windsurf** / **Codeium** \u2192 pass `\"tool\": \"windsurf\"`\n - If you are in **GitHub Copilot** \u2192 pass `\"tool\": \"copilot\"`\n - If you are in **Aider** \u2192 pass `\"tool\": \"aider\"`\n - If you are in **Continue.dev** \u2192 pass `\"tool\": \"continue-dev\"`\n - If you are unsure / none of the above \u2192 omit `tool` and Cell\n returns the rich text block (works for every IDE).\n DO NOT pass `\"opencode\"` unless you are actually OpenCode. If you\n are Antigravity, the correct value is `\"antigravity\"` (not\n `\"opencode\"`, not `\"cursor\"`, not `\"antigravity-ide\"`).\n4. **Use the returned context** to inform your answer \u2014 it contains the\n last session, recent file edits (live events), blind spots, style\n hints, predictions, and
|
|
4
|
+
export declare const AGENTS_MD_TEMPLATE = "# fivo-cell:rules:v1\n# FIVO Cell \u2014 AI Memory Rules\n\nFIVO Cell is installed and configured for this project. Use its MCP tools\n(named `cell_*`) to maintain permanent memory across sessions.\n\n## The @cell Convention\n\nWhenever the user types `@cell` in their message (e.g. \"@cell what did I\njust edit?\" or \"@cell fix this bug\"), you MUST do the following BEFORE\nresponding:\n\n1. **Call `cell_get_context` FIRST** to load this project's full context.\n2. **Pass `project` as the current folder name** \u2014 derive it from\n `path.basename(process.cwd())` or the absolute path the IDE is open\n in. If unsure, call `cell_list_projects` and pick the matching one.\n3. **Also pass `tool`** set to YOUR ACTUAL IDE/TOOL NAME (the one you\n are running in right now). Cell formats the block differently for\n each tool. The valid values are:\n - If you are in **Antigravity** / **Gemini** IDE \u2192 pass `\"tool\": \"antigravity\"`\n - If you are in **Cursor** \u2192 pass `\"tool\": \"cursor\"`\n - If you are in **OpenCode** CLI \u2192 pass `\"tool\": \"opencode\"`\n - If you are in **Claude Code** CLI \u2192 pass `\"tool\": \"claude-code\"`\n - If you are in **Codex** CLI \u2192 pass `\"tool\": \"codex\"`\n - If you are in **Windsurf** / **Codeium** \u2192 pass `\"tool\": \"windsurf\"`\n - If you are in **GitHub Copilot** \u2192 pass `\"tool\": \"copilot\"`\n - If you are in **Aider** \u2192 pass `\"tool\": \"aider\"`\n - If you are in **Continue.dev** \u2192 pass `\"tool\": \"continue-dev\"`\n - If you are unsure / none of the above \u2192 omit `tool` and Cell\n returns the rich text block (works for every IDE).\n DO NOT pass `\"opencode\"` unless you are actually OpenCode. If you\n are Antigravity, the correct value is `\"antigravity\"` (not\n `\"opencode\"`, not `\"cursor\"`, not `\"antigravity-ide\"`).\n4. **Use the returned context** to inform your answer \u2014 it contains the\n last session, recent file edits (live events), blind spots, style\n hints, predictions, tried approaches, **session bridge (what just happened)**,\n and **continuity thread (what's been happening across sessions)**.\n\n## Supreme Context: Bridge + Continuity\n\nFivo Cell v7+ maintains **Supreme Context** \u2014 AI never starts a session blind:\n\n- **\uD83C\uDF09 Session Bridge**: Automatically captured at session end. Auto-injected\n at session start. Contains: summary, open questions, failed approaches,\n working approaches, last thought, file focus, vibe snapshot.\n- **\uD83E\uDDF5 Continuity Thread**: Tracks work across multiple sessions. Knows\n what you're building, open questions, pending actions, key learnings.\n- **\uD83D\uDD2E Context Predictions**: Predicts what you'll need \u2014 which files,\n which errors may recur, which decisions need revisiting.\n\n**The bridge is auto-loaded in every `@cell` block.** You don't need to\nask for it \u2014 just read the `\uD83C\uDF09 LAST SESSION BRIDGE` and `\uD83E\uDDF5 CONTINUITY\nTHREAD` sections at the top of the context block and use them.\n\n## Common Cell Tools\n\n| Task | Tool |\n|------|------|\n| Load project context (`@cell`) | `cell_get_context` |\n| Open a work session | `cell_session_start` |\n| Close a session with key decisions | `cell_session_end` |\n| See recent sessions | `cell_session_recent` |\n| See recent file saves | `cell_watch_events` |\n| Start the file watcher | `cell_watch_start` |\n| Stop the file watcher | `cell_watch_stop` |\n| Detect code risks (try/catch, null checks, validation) | `cell_blindspots` |\n| Scan the project | `cell_scan` |\n| Log an error you hit | `cell_log_error` |\n| Log how you fixed it | `cell_log_fix` |\n| Log a key decision | `cell_log_decision` |\n| List all registered projects | `cell_list_projects` |\n\nThere are 67 cell tools in total. Run `cell --help` to see all of them.\n\n## Session Discipline\n\n- **At the start of a non-trivial task** (multi-file work, refactor,\n feature, debugging session): call `cell_session_start` to open a\n session.\n- **At the end** (or before a long break): call `cell_session_end` with\n `keyDecisions` summarising what you decided and `filesTouched`\n listing the files you changed.\n- If the user switches tools (e.g. Cursor \u2192 Antigravity) within a\n project, the bridge context is auto-loaded \u2014 read it from the @cell\n block to understand what was just done.\n\n## Supreme Context: Never Start Blind\n\nFivo v7 includes **Supreme Context** that auto-injects into every\n`@cell` block:\n\n- **\uD83C\uDF09 Bridge**: Last session's summary, decisions, open questions,\n file focus, failed approaches (don't retry), working approaches\n- **\uD83E\uDDF5 Continuity Thread**: Cross-session work tracking \u2014 what's being\n built, pending actions, key learnings across sessions\n- **\uD83D\uDD2E Predictions**: What files you'll need, which errors may recur,\n which decisions need revisiting\n\nRead these sections at the top of the context block and you'll\nimmediately know what was happening and what to do next.\n\n## Watcher Awareness\n\n- If the watcher is active, the @cell block includes the most recent\n file edits. Trust those for \"what did I just edit\" questions.\n- If the user reports a file change you don't know about, call\n `cell_watch_events` directly.\n\n## Anti-Patterns to Avoid\n\n- Do NOT guess a project name. If unsure, call `cell_list_projects`.\n- Do NOT skip `cell_get_context` when @cell is in the prompt \u2014 the\n whole point of the convention is automatic context.\n- Do NOT call `cell_get_context` for every message. Only when @cell\n appears, or when context is genuinely needed.\n- Do NOT modify or remove this file. To regenerate it, run\n `cell scan` again (it is idempotent \u2014 existing files are kept).\n\n## Regeneration\n\nThis file is auto-generated by `cell scan`. To remove it: `cell scan --no-rules`.\n";
|
|
5
5
|
export declare const CURSORRULES_TEMPLATE = "# fivo-cell:rules:v1\n# FIVO Cell \u2014 Cursor Rules\n\nWhen the user types `@cell` in chat or Composer, you MUST call the\n`cell_get_context` MCP tool FIRST, with `project` set to the current\nfolder name and `tool` set to `cursor`. Then use the returned block\nto inform your response. See AGENTS.md for the full convention.\n";
|
|
6
6
|
export interface WriteRulesResult {
|
|
7
7
|
agentsMd: 'written' | 'exists' | 'skipped';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../../../src/walls/01-context/context/agents-md.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../../../src/walls/01-context/context/agents-md.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,kBAAkB,0yLAyH9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,8UAOhC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAWvH;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAW1H;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,gBAAgB,CAI1H"}
|
|
@@ -78,7 +78,24 @@ responding:
|
|
|
78
78
|
\`"opencode"\`, not \`"cursor"\`, not \`"antigravity-ide"\`).
|
|
79
79
|
4. **Use the returned context** to inform your answer โ it contains the
|
|
80
80
|
last session, recent file edits (live events), blind spots, style
|
|
81
|
-
hints, predictions,
|
|
81
|
+
hints, predictions, tried approaches, **session bridge (what just happened)**,
|
|
82
|
+
and **continuity thread (what's been happening across sessions)**.
|
|
83
|
+
|
|
84
|
+
## Supreme Context: Bridge + Continuity
|
|
85
|
+
|
|
86
|
+
Fivo Cell v7+ maintains **Supreme Context** โ AI never starts a session blind:
|
|
87
|
+
|
|
88
|
+
- **๐ Session Bridge**: Automatically captured at session end. Auto-injected
|
|
89
|
+
at session start. Contains: summary, open questions, failed approaches,
|
|
90
|
+
working approaches, last thought, file focus, vibe snapshot.
|
|
91
|
+
- **๐งต Continuity Thread**: Tracks work across multiple sessions. Knows
|
|
92
|
+
what you're building, open questions, pending actions, key learnings.
|
|
93
|
+
- **๐ฎ Context Predictions**: Predicts what you'll need โ which files,
|
|
94
|
+
which errors may recur, which decisions need revisiting.
|
|
95
|
+
|
|
96
|
+
**The bridge is auto-loaded in every \`@cell\` block.** You don't need to
|
|
97
|
+
ask for it โ just read the \`๐ LAST SESSION BRIDGE\` and \`๐งต CONTINUITY
|
|
98
|
+
THREAD\` sections at the top of the context block and use them.
|
|
82
99
|
|
|
83
100
|
## Common Cell Tools
|
|
84
101
|
|
|
@@ -112,6 +129,21 @@ There are 67 cell tools in total. Run \`cell --help\` to see all of them.
|
|
|
112
129
|
project, the bridge context is auto-loaded โ read it from the @cell
|
|
113
130
|
block to understand what was just done.
|
|
114
131
|
|
|
132
|
+
## Supreme Context: Never Start Blind
|
|
133
|
+
|
|
134
|
+
Fivo v7 includes **Supreme Context** that auto-injects into every
|
|
135
|
+
\`@cell\` block:
|
|
136
|
+
|
|
137
|
+
- **๐ Bridge**: Last session's summary, decisions, open questions,
|
|
138
|
+
file focus, failed approaches (don't retry), working approaches
|
|
139
|
+
- **๐งต Continuity Thread**: Cross-session work tracking โ what's being
|
|
140
|
+
built, pending actions, key learnings across sessions
|
|
141
|
+
- **๐ฎ Predictions**: What files you'll need, which errors may recur,
|
|
142
|
+
which decisions need revisiting
|
|
143
|
+
|
|
144
|
+
Read these sections at the top of the context block and you'll
|
|
145
|
+
immediately know what was happening and what to do next.
|
|
146
|
+
|
|
115
147
|
## Watcher Awareness
|
|
116
148
|
|
|
117
149
|
- If the watcher is active, the @cell block includes the most recent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../../src/walls/01-context/context/agents-md.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../../src/walls/01-context/context/agents-md.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiJA,0CAEC;AAED,sCAWC;AAED,4CAWC;AAED,wCAIC;AAnLD,uCAAyB;AACzB,2CAA6B;AAEhB,QAAA,kBAAkB,GAAG,WAAW,CAAC;AACjC,QAAA,oBAAoB,GAAG,cAAc,CAAC;AACtC,QAAA,iBAAiB,GAAG,sBAAsB,CAAC;AAE3C,QAAA,kBAAkB,GAAG,GAAG,yBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHrD,CAAC;AAEW,QAAA,oBAAoB,GAAG,GAAG,yBAAiB;;;;;;;CAOvD,CAAC;AAQF,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,yBAAiB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,aAAa,CAAC,WAAmB,EAAE,OAAgC,EAAE;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAAkB,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,0BAAkB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,OAAgC,EAAE;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,4BAAoB,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,4BAAoB,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB,EAAE,OAAkD,EAAE;IACtG,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface SessionBridge {
|
|
2
|
+
fromSessionId: number;
|
|
3
|
+
toSessionId?: number;
|
|
4
|
+
capturedAt: string;
|
|
5
|
+
consumedAt?: string;
|
|
6
|
+
consumed: boolean;
|
|
7
|
+
project: string;
|
|
8
|
+
tool: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
status: string;
|
|
11
|
+
filesTouched: string[];
|
|
12
|
+
keyDecisions: string[];
|
|
13
|
+
openQuestions: string[];
|
|
14
|
+
failedApproaches: string[];
|
|
15
|
+
workingApproaches: string[];
|
|
16
|
+
lastThought: string;
|
|
17
|
+
vibeAtCapture: string;
|
|
18
|
+
predictedNextSteps: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare function captureSessionBridge(projectDir: string, params: {
|
|
21
|
+
sessionId: number;
|
|
22
|
+
project: string;
|
|
23
|
+
tool: string;
|
|
24
|
+
summary: string;
|
|
25
|
+
status: string;
|
|
26
|
+
filesTouched: string[];
|
|
27
|
+
keyDecisions: string[];
|
|
28
|
+
openQuestions: string[];
|
|
29
|
+
failedApproaches: string[];
|
|
30
|
+
workingApproaches: string[];
|
|
31
|
+
lastThought: string;
|
|
32
|
+
predictedNextSteps: string[];
|
|
33
|
+
}): SessionBridge;
|
|
34
|
+
export declare function consumeSessionBridge(projectDir: string, currentSessionId: number): SessionBridge | null;
|
|
35
|
+
export declare function peekSessionBridge(projectDir: string): SessionBridge | null;
|
|
36
|
+
export declare function isBridgeStale(projectDir: string): boolean;
|
|
37
|
+
export declare function autoGenerateBridge(projectDir: string, project: string): SessionBridge | null;
|
|
38
|
+
export declare function formatBridgeForContext(bridge: SessionBridge): string;
|
|
39
|
+
//# sourceMappingURL=context-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-bridge.d.ts","sourceRoot":"","sources":["../../../../src/walls/01-context/context/context-bridge.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAaD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,GACA,aAAa,CA6Cf;AAGD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAavG;AAGD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAI1E;AAGD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAKzD;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA0C5F;AAGD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA+DpE"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// context-bridge.ts โ Supreme Session Bridge
|
|
3
|
+
// Rich session-end capture. Auto-injects at next session start.
|
|
4
|
+
// The bridge ensures AI never starts a session "blind" โ always has previous context.
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.captureSessionBridge = captureSessionBridge;
|
|
40
|
+
exports.consumeSessionBridge = consumeSessionBridge;
|
|
41
|
+
exports.peekSessionBridge = peekSessionBridge;
|
|
42
|
+
exports.isBridgeStale = isBridgeStale;
|
|
43
|
+
exports.autoGenerateBridge = autoGenerateBridge;
|
|
44
|
+
exports.formatBridgeForContext = formatBridgeForContext;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const database_1 = require("../../06-memory/database/database");
|
|
48
|
+
function getBridgeDir(projectDir) {
|
|
49
|
+
const d = path.join(projectDir, '.cell', 'bridge');
|
|
50
|
+
if (!fs.existsSync(d))
|
|
51
|
+
fs.mkdirSync(d, { recursive: true });
|
|
52
|
+
return d;
|
|
53
|
+
}
|
|
54
|
+
function bridgeFilePath(projectDir) {
|
|
55
|
+
return path.join(getBridgeDir(projectDir), 'latest.json');
|
|
56
|
+
}
|
|
57
|
+
// CAPTURE: Called at session end โ full snapshot of everything AI needs to remember
|
|
58
|
+
function captureSessionBridge(projectDir, params) {
|
|
59
|
+
const bridge = {
|
|
60
|
+
fromSessionId: params.sessionId,
|
|
61
|
+
capturedAt: new Date().toISOString(),
|
|
62
|
+
consumed: false,
|
|
63
|
+
project: params.project,
|
|
64
|
+
tool: params.tool,
|
|
65
|
+
summary: params.summary,
|
|
66
|
+
status: params.status,
|
|
67
|
+
filesTouched: params.filesTouched,
|
|
68
|
+
keyDecisions: params.keyDecisions,
|
|
69
|
+
openQuestions: params.openQuestions,
|
|
70
|
+
failedApproaches: params.failedApproaches,
|
|
71
|
+
workingApproaches: params.workingApproaches,
|
|
72
|
+
lastThought: params.lastThought,
|
|
73
|
+
vibeAtCapture: '',
|
|
74
|
+
predictedNextSteps: params.predictedNextSteps,
|
|
75
|
+
};
|
|
76
|
+
// Try to read vibes
|
|
77
|
+
try {
|
|
78
|
+
const vibePath = path.join(projectDir, '.cell', 'vibe', 'vibe-summary.json');
|
|
79
|
+
if (fs.existsSync(vibePath)) {
|
|
80
|
+
const v = JSON.parse(fs.readFileSync(vibePath, 'utf-8'));
|
|
81
|
+
bridge.vibeAtCapture = v.summary || '';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch { }
|
|
85
|
+
const dir = getBridgeDir(projectDir);
|
|
86
|
+
fs.writeFileSync(bridgeFilePath(projectDir), JSON.stringify(bridge, null, 2), 'utf-8');
|
|
87
|
+
// Also archive old bridges
|
|
88
|
+
const archiveFile = path.join(dir, `bridge-${params.sessionId}-${Date.now()}.json`);
|
|
89
|
+
fs.writeFileSync(archiveFile, JSON.stringify(bridge, null, 2), 'utf-8');
|
|
90
|
+
// Cleanup old archives โ keep last 10
|
|
91
|
+
const archives = fs.readdirSync(dir)
|
|
92
|
+
.filter(f => f.startsWith('bridge-') && f.endsWith('.json'))
|
|
93
|
+
.sort()
|
|
94
|
+
.reverse();
|
|
95
|
+
for (const f of archives.slice(10)) {
|
|
96
|
+
fs.unlinkSync(path.join(dir, f));
|
|
97
|
+
}
|
|
98
|
+
return bridge;
|
|
99
|
+
}
|
|
100
|
+
// CONSUME: Called at session start โ auto-inject previous bridge
|
|
101
|
+
function consumeSessionBridge(projectDir, currentSessionId) {
|
|
102
|
+
const bp = bridgeFilePath(projectDir);
|
|
103
|
+
if (!fs.existsSync(bp))
|
|
104
|
+
return null;
|
|
105
|
+
const bridge = JSON.parse(fs.readFileSync(bp, 'utf-8'));
|
|
106
|
+
if (bridge.consumed)
|
|
107
|
+
return null; // Already used
|
|
108
|
+
bridge.consumed = true;
|
|
109
|
+
bridge.consumedAt = new Date().toISOString();
|
|
110
|
+
bridge.toSessionId = currentSessionId;
|
|
111
|
+
fs.writeFileSync(bp, JSON.stringify(bridge, null, 2), 'utf-8');
|
|
112
|
+
return bridge;
|
|
113
|
+
}
|
|
114
|
+
// Get bridge without consuming (for display)
|
|
115
|
+
function peekSessionBridge(projectDir) {
|
|
116
|
+
const bp = bridgeFilePath(projectDir);
|
|
117
|
+
if (!fs.existsSync(bp))
|
|
118
|
+
return null;
|
|
119
|
+
return JSON.parse(fs.readFileSync(bp, 'utf-8'));
|
|
120
|
+
}
|
|
121
|
+
// Check staleness โ warn if bridge is older than 24 hours
|
|
122
|
+
function isBridgeStale(projectDir) {
|
|
123
|
+
const bridge = peekSessionBridge(projectDir);
|
|
124
|
+
if (!bridge)
|
|
125
|
+
return false;
|
|
126
|
+
const age = Date.now() - new Date(bridge.capturedAt).getTime();
|
|
127
|
+
return age > 24 * 60 * 60 * 1000; // 24 hours
|
|
128
|
+
}
|
|
129
|
+
// Auto-generate bridge if one doesn't exist (from DB)
|
|
130
|
+
function autoGenerateBridge(projectDir, project) {
|
|
131
|
+
try {
|
|
132
|
+
const db = (0, database_1.getDb)();
|
|
133
|
+
const lastSession = db.prepare('SELECT id, tool_name, start_time, end_time, files_touched, key_decisions, context_snapshot FROM sessions WHERE project = ? ORDER BY id DESC LIMIT 1').get(project);
|
|
134
|
+
if (!lastSession)
|
|
135
|
+
return null;
|
|
136
|
+
const approaches = db.prepare('SELECT approach, status, reason FROM session_approaches WHERE session_id = ? ORDER BY id DESC LIMIT 20').all(lastSession.id);
|
|
137
|
+
const questions = db.prepare('SELECT question, resolved FROM session_questions WHERE session_id = ? ORDER BY id DESC LIMIT 10').all(lastSession.id);
|
|
138
|
+
const failed = approaches.filter((a) => a.status === 'failed' || a.status === 'rejected').map((a) => a.approach);
|
|
139
|
+
const worked = approaches.filter((a) => a.status === 'accepted' || a.status === 'worked').map((a) => a.approach);
|
|
140
|
+
let files = [];
|
|
141
|
+
try {
|
|
142
|
+
files = JSON.parse(lastSession.files_touched || '[]');
|
|
143
|
+
}
|
|
144
|
+
catch { }
|
|
145
|
+
let decisions = [];
|
|
146
|
+
try {
|
|
147
|
+
decisions = JSON.parse(lastSession.key_decisions || '[]');
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
return captureSessionBridge(projectDir, {
|
|
151
|
+
sessionId: lastSession.id,
|
|
152
|
+
project,
|
|
153
|
+
tool: lastSession.tool_name || 'unknown',
|
|
154
|
+
summary: lastSession.context_snapshot || 'No summary captured.',
|
|
155
|
+
status: 'completed',
|
|
156
|
+
filesTouched: files,
|
|
157
|
+
keyDecisions: decisions,
|
|
158
|
+
openQuestions: questions.filter((q) => !q.resolved).map((q) => q.question),
|
|
159
|
+
failedApproaches: failed,
|
|
160
|
+
workingApproaches: worked,
|
|
161
|
+
lastThought: decisions.slice(-3).join('; ') || 'No explicit closing thought captured.',
|
|
162
|
+
predictedNextSteps: [],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Format the bridge for injection into AI context
|
|
170
|
+
function formatBridgeForContext(bridge) {
|
|
171
|
+
const lines = [];
|
|
172
|
+
lines.push('๐ LAST SESSION BRIDGE');
|
|
173
|
+
lines.push(` Completed: ${bridge.capturedAt.split('T')[0]} via ${bridge.tool}`);
|
|
174
|
+
lines.push(` Status: ${bridge.status}`);
|
|
175
|
+
if (bridge.summary && bridge.summary !== 'No summary captured.') {
|
|
176
|
+
lines.push('');
|
|
177
|
+
lines.push(` ๐ SUMMARY: ${bridge.summary}`);
|
|
178
|
+
}
|
|
179
|
+
if (bridge.keyDecisions.length > 0) {
|
|
180
|
+
lines.push('');
|
|
181
|
+
lines.push(' ๐ฏ KEY DECISIONS:');
|
|
182
|
+
for (const d of bridge.keyDecisions.slice(-5)) {
|
|
183
|
+
lines.push(` โข ${d}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (bridge.keyDecisions.length > 0) {
|
|
187
|
+
lines.push('');
|
|
188
|
+
lines.push(` ๐ญ LAST THOUGHT: ${bridge.lastThought}`);
|
|
189
|
+
}
|
|
190
|
+
if (bridge.openQuestions.length > 0) {
|
|
191
|
+
lines.push('');
|
|
192
|
+
lines.push(' โ UNRESOLVED:');
|
|
193
|
+
for (const q of bridge.openQuestions.slice(0, 5)) {
|
|
194
|
+
lines.push(` ? ${q}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (bridge.failedApproaches.length > 0) {
|
|
198
|
+
lines.push('');
|
|
199
|
+
lines.push(' ๐ซ DON\'T RETRY:');
|
|
200
|
+
for (const a of bridge.failedApproaches.slice(0, 3)) {
|
|
201
|
+
lines.push(` โ ${a}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (bridge.workingApproaches.length > 0) {
|
|
205
|
+
lines.push('');
|
|
206
|
+
lines.push(' โ
APPROACHES THAT WORKED:');
|
|
207
|
+
for (const a of bridge.workingApproaches.slice(0, 3)) {
|
|
208
|
+
lines.push(` โ ${a}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (bridge.filesTouched.length > 0) {
|
|
212
|
+
lines.push('');
|
|
213
|
+
lines.push(' ๐ FILES IN FOCUS:');
|
|
214
|
+
for (const f of bridge.filesTouched.slice(0, 8)) {
|
|
215
|
+
lines.push(` ยท ${f}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (bridge.vibeAtCapture) {
|
|
219
|
+
lines.push('');
|
|
220
|
+
lines.push(` ๐ญ VIBE: ${bridge.vibeAtCapture}`);
|
|
221
|
+
}
|
|
222
|
+
return lines.join('\n');
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=context-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-bridge.js","sourceRoot":"","sources":["../../../../src/walls/01-context/context/context-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export interface ContinuityThread {
|
|
2
|
+
project: string;
|
|
3
|
+
threadId: string;
|
|
4
|
+
activeSince: string;
|
|
5
|
+
lastActiveAt: string;
|
|
6
|
+
sessionCount: number;
|
|
7
|
+
contextTags: string[];
|
|
8
|
+
openQuestions: string[];
|
|
9
|
+
pendingActions: string[];
|
|
10
|
+
keyLearnings: string[];
|
|
11
|
+
decisionLog: Array<{
|
|
12
|
+
what: string;
|
|
13
|
+
why: string;
|
|
14
|
+
when: string;
|
|
15
|
+
}>;
|
|
16
|
+
fileFocus: string[];
|
|
17
|
+
threadIntent: string;
|
|
18
|
+
bridgeHints: BridgeHint[];
|
|
19
|
+
}
|
|
20
|
+
export interface BridgeHint {
|
|
21
|
+
type: 'remember' | 'continue' | 'watch_out' | 'prediction' | 'decision';
|
|
22
|
+
text: string;
|
|
23
|
+
confidence: number;
|
|
24
|
+
fromSessionId: number;
|
|
25
|
+
createdAt: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ContinuityContext {
|
|
28
|
+
currentThread: ContinuityThread | null;
|
|
29
|
+
recentThreads: ContinuityThread[];
|
|
30
|
+
crossSessionWarnings: string[];
|
|
31
|
+
predictedNextSteps: string[];
|
|
32
|
+
memoryThread: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function getActiveThread(projectDir: string): ContinuityThread | null;
|
|
35
|
+
export declare function getAllThreads(projectDir: string): ContinuityThread[];
|
|
36
|
+
export declare function detectOrCreateThread(projectDir: string, project: string, recentDecisions: string[], touchedFiles: string[]): ContinuityThread;
|
|
37
|
+
export declare function closeThread(projectDir: string): void;
|
|
38
|
+
export declare function addBridgeHint(projectDir: string, hint: BridgeHint): void;
|
|
39
|
+
export declare function addOpenQuestion(projectDir: string, question: string): void;
|
|
40
|
+
export declare function resolveQuestion(projectDir: string, question: string): void;
|
|
41
|
+
export declare function addPendingAction(projectDir: string, action: string): void;
|
|
42
|
+
export declare function addKeyLearning(projectDir: string, learning: string): void;
|
|
43
|
+
export declare function addDecision(projectDir: string, what: string, why: string): void;
|
|
44
|
+
export declare function updateFileFocus(projectDir: string, files: string[]): void;
|
|
45
|
+
export declare function buildContinuityContext(projectDir: string, project: string): ContinuityContext;
|
|
46
|
+
export declare function captureSessionEnd(projectDir: string, project: string, decisions: string[], files: string[], approaches: Array<{
|
|
47
|
+
approach: string;
|
|
48
|
+
status: string;
|
|
49
|
+
}>, questions: Array<{
|
|
50
|
+
question: string;
|
|
51
|
+
resolved: boolean;
|
|
52
|
+
}>): void;
|
|
53
|
+
export declare function getContinuityBlock(context: ContinuityContext): string;
|
|
54
|
+
//# sourceMappingURL=context-continuity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-continuity.d.ts","sourceRoot":"","sources":["../../../../src/walls/01-context/context/context-continuity.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAYD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAK3E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAOpE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAgD7I;AAWD,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CASpD;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAQxE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ1E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM1E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQzE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CASzE;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAO/E;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAMzE;AAGD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAwD7F;AAGD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,CAAC,GAAG,IAAI,CAkDjO;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAoCrE"}
|