cortex-mcp 2.7.6 → 2.9.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/CHANGELOG.md +305 -58
- package/README.md +394 -224
- package/dist/cli/setup.js +58 -60
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/config.js +2 -2
- package/dist/config/config.js.map +1 -1
- package/dist/db/database.d.ts +8 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +35 -54
- package/dist/db/database.js.map +1 -1
- package/dist/db/event-log.d.ts +4 -0
- package/dist/db/event-log.d.ts.map +1 -1
- package/dist/db/event-log.js +14 -10
- package/dist/db/event-log.js.map +1 -1
- package/dist/db/memory-store.d.ts +30 -3
- package/dist/db/memory-store.d.ts.map +1 -1
- package/dist/db/memory-store.js +153 -55
- package/dist/db/memory-store.js.map +1 -1
- package/dist/embedding-worker.js +1 -1
- package/dist/embedding-worker.js.map +1 -1
- package/dist/hooks/git-capture.js +3 -3
- package/dist/hooks/git-hooks.js +5 -2
- package/dist/mcp-stdio.js +39 -5
- package/dist/mcp-stdio.js.map +1 -1
- package/dist/memory/access-pattern-tracker.d.ts +51 -0
- package/dist/memory/access-pattern-tracker.d.ts.map +1 -0
- package/dist/memory/access-pattern-tracker.js +92 -0
- package/dist/memory/access-pattern-tracker.js.map +1 -0
- package/dist/memory/anticipation-engine.d.ts.map +1 -1
- package/dist/memory/anticipation-engine.js +18 -10
- package/dist/memory/anticipation-engine.js.map +1 -1
- package/dist/memory/auto-learner.d.ts.map +1 -1
- package/dist/memory/auto-learner.js +192 -45
- package/dist/memory/auto-learner.js.map +1 -1
- package/dist/memory/completion-resolver.d.ts +38 -0
- package/dist/memory/completion-resolver.d.ts.map +1 -0
- package/dist/memory/completion-resolver.js +127 -0
- package/dist/memory/completion-resolver.js.map +1 -0
- package/dist/memory/confidence-decay.d.ts.map +1 -1
- package/dist/memory/confidence-decay.js +13 -9
- package/dist/memory/confidence-decay.js.map +1 -1
- package/dist/memory/convention-detector.d.ts +11 -0
- package/dist/memory/convention-detector.d.ts.map +1 -0
- package/dist/memory/convention-detector.js +294 -0
- package/dist/memory/convention-detector.js.map +1 -0
- package/dist/memory/correction-detector.d.ts +33 -0
- package/dist/memory/correction-detector.d.ts.map +1 -0
- package/dist/memory/correction-detector.js +129 -0
- package/dist/memory/correction-detector.js.map +1 -0
- package/dist/memory/cross-memory-linker.d.ts +18 -0
- package/dist/memory/cross-memory-linker.d.ts.map +1 -0
- package/dist/memory/cross-memory-linker.js +115 -0
- package/dist/memory/cross-memory-linker.js.map +1 -0
- package/dist/memory/daily-diary.d.ts +30 -0
- package/dist/memory/daily-diary.d.ts.map +1 -0
- package/dist/memory/daily-diary.js +159 -0
- package/dist/memory/daily-diary.js.map +1 -0
- package/dist/memory/embedding-cache.d.ts +32 -0
- package/dist/memory/embedding-cache.d.ts.map +1 -0
- package/dist/memory/embedding-cache.js +76 -0
- package/dist/memory/embedding-cache.js.map +1 -0
- package/dist/memory/embedding-manager.d.ts.map +1 -1
- package/dist/memory/embedding-manager.js +6 -4
- package/dist/memory/embedding-manager.js.map +1 -1
- package/dist/memory/error-learner.d.ts +26 -0
- package/dist/memory/error-learner.d.ts.map +1 -0
- package/dist/memory/error-learner.js +145 -0
- package/dist/memory/error-learner.js.map +1 -0
- package/dist/memory/export-import.js +2 -2
- package/dist/memory/export-import.js.map +1 -1
- package/dist/memory/file-relationships.d.ts +47 -0
- package/dist/memory/file-relationships.d.ts.map +1 -0
- package/dist/memory/file-relationships.js +130 -0
- package/dist/memory/file-relationships.js.map +1 -0
- package/dist/memory/git-memory.d.ts.map +1 -1
- package/dist/memory/git-memory.js +20 -26
- package/dist/memory/git-memory.js.map +1 -1
- package/dist/memory/impact-analyzer.d.ts +16 -0
- package/dist/memory/impact-analyzer.d.ts.map +1 -0
- package/dist/memory/impact-analyzer.js +189 -0
- package/dist/memory/impact-analyzer.js.map +1 -0
- package/dist/memory/instructions-generator.d.ts +30 -0
- package/dist/memory/instructions-generator.d.ts.map +1 -0
- package/dist/memory/instructions-generator.js +117 -0
- package/dist/memory/instructions-generator.js.map +1 -0
- package/dist/memory/learning-rate.js +8 -7
- package/dist/memory/learning-rate.js.map +1 -1
- package/dist/memory/llm-enhancer.d.ts +2 -14
- package/dist/memory/llm-enhancer.d.ts.map +1 -1
- package/dist/memory/llm-enhancer.js +66 -46
- package/dist/memory/llm-enhancer.js.map +1 -1
- package/dist/memory/memory-cache.d.ts.map +1 -1
- package/dist/memory/memory-cache.js +10 -0
- package/dist/memory/memory-cache.js.map +1 -1
- package/dist/memory/memory-consolidator.d.ts.map +1 -1
- package/dist/memory/memory-consolidator.js +20 -14
- package/dist/memory/memory-consolidator.js.map +1 -1
- package/dist/memory/memory-decay.d.ts.map +1 -1
- package/dist/memory/memory-decay.js +82 -52
- package/dist/memory/memory-decay.js.map +1 -1
- package/dist/memory/memory-export-md.d.ts +12 -0
- package/dist/memory/memory-export-md.d.ts.map +1 -0
- package/dist/memory/memory-export-md.js +188 -0
- package/dist/memory/memory-export-md.js.map +1 -0
- package/dist/memory/memory-quality.d.ts +1 -1
- package/dist/memory/memory-quality.d.ts.map +1 -1
- package/dist/memory/memory-quality.js +9 -6
- package/dist/memory/memory-quality.js.map +1 -1
- package/dist/memory/memory-ranker.d.ts.map +1 -1
- package/dist/memory/memory-ranker.js +12 -3
- package/dist/memory/memory-ranker.js.map +1 -1
- package/dist/memory/meta-memory.js +3 -3
- package/dist/memory/meta-memory.js.map +1 -1
- package/dist/memory/mmr-reranker.d.ts +39 -0
- package/dist/memory/mmr-reranker.d.ts.map +1 -0
- package/dist/memory/mmr-reranker.js +115 -0
- package/dist/memory/mmr-reranker.js.map +1 -0
- package/dist/memory/pre-flight.d.ts +24 -0
- package/dist/memory/pre-flight.d.ts.map +1 -0
- package/dist/memory/pre-flight.js +121 -0
- package/dist/memory/pre-flight.js.map +1 -0
- package/dist/memory/preference-learner.d.ts +28 -0
- package/dist/memory/preference-learner.d.ts.map +1 -0
- package/dist/memory/preference-learner.js +144 -0
- package/dist/memory/preference-learner.js.map +1 -0
- package/dist/memory/query-expansion.d.ts +28 -0
- package/dist/memory/query-expansion.d.ts.map +1 -0
- package/dist/memory/query-expansion.js +140 -0
- package/dist/memory/query-expansion.js.map +1 -0
- package/dist/memory/regression-guard.d.ts +35 -0
- package/dist/memory/regression-guard.d.ts.map +1 -0
- package/dist/memory/regression-guard.js +90 -0
- package/dist/memory/regression-guard.js.map +1 -0
- package/dist/memory/resume-work.d.ts +37 -0
- package/dist/memory/resume-work.d.ts.map +1 -0
- package/dist/memory/resume-work.js +141 -0
- package/dist/memory/resume-work.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +2 -0
- package/dist/memory/session-tracker.d.ts.map +1 -1
- package/dist/memory/session-tracker.js +26 -8
- package/dist/memory/session-tracker.js.map +1 -1
- package/dist/memory/soul-manager.d.ts +30 -0
- package/dist/memory/soul-manager.d.ts.map +1 -0
- package/dist/memory/soul-manager.js +171 -0
- package/dist/memory/soul-manager.js.map +1 -0
- package/dist/memory/success-tracker.d.ts +33 -0
- package/dist/memory/success-tracker.d.ts.map +1 -0
- package/dist/memory/success-tracker.js +75 -0
- package/dist/memory/success-tracker.js.map +1 -0
- package/dist/memory/temporal-engine.d.ts.map +1 -1
- package/dist/memory/temporal-engine.js +9 -13
- package/dist/memory/temporal-engine.js.map +1 -1
- package/dist/memory/tool-recommender.d.ts +29 -0
- package/dist/memory/tool-recommender.d.ts.map +1 -0
- package/dist/memory/tool-recommender.js +117 -0
- package/dist/memory/tool-recommender.js.map +1 -0
- package/dist/memory/usage-stats.d.ts +98 -0
- package/dist/memory/usage-stats.d.ts.map +1 -0
- package/dist/memory/usage-stats.js +345 -0
- package/dist/memory/usage-stats.js.map +1 -0
- package/dist/retrieval/hybrid-retriever.d.ts +0 -2
- package/dist/retrieval/hybrid-retriever.d.ts.map +1 -1
- package/dist/retrieval/hybrid-retriever.js +3 -13
- package/dist/retrieval/hybrid-retriever.js.map +1 -1
- package/dist/scanners/architecture-graph.js +2 -2
- package/dist/scanners/architecture-graph.js.map +1 -1
- package/dist/scanners/code-verifier.d.ts +1 -0
- package/dist/scanners/code-verifier.d.ts.map +1 -1
- package/dist/scanners/code-verifier.js +14 -14
- package/dist/scanners/code-verifier.js.map +1 -1
- package/dist/scanners/context-builder.d.ts.map +1 -1
- package/dist/scanners/context-builder.js +33 -45
- package/dist/scanners/context-builder.js.map +1 -1
- package/dist/scanners/export-map.js +2 -2
- package/dist/scanners/export-map.js.map +1 -1
- package/dist/scanners/project-scanner.js +2 -2
- package/dist/scanners/project-scanner.js.map +1 -1
- package/dist/security/encryption.js +1 -1
- package/dist/security/encryption.js.map +1 -1
- package/dist/security/feature-gate.d.ts.map +1 -1
- package/dist/security/feature-gate.js +62 -20
- package/dist/security/feature-gate.js.map +1 -1
- package/dist/security/license.js +282 -35
- package/dist/security/license.js.map +1 -1
- package/dist/security/rate-limiter.d.ts +4 -3
- package/dist/security/rate-limiter.d.ts.map +1 -1
- package/dist/security/rate-limiter.js +11 -29
- package/dist/security/rate-limiter.js.map +1 -1
- package/dist/server/dashboard.js +166 -327
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/mcp-handler.d.ts.map +1 -1
- package/dist/server/mcp-handler.js +1000 -792
- package/dist/server/mcp-handler.js.map +1 -1
- package/dist/utils/extract-tags.d.ts +16 -0
- package/dist/utils/extract-tags.d.ts.map +1 -0
- package/dist/utils/extract-tags.js +40 -0
- package/dist/utils/extract-tags.js.map +1 -0
- package/package.json +18 -8
- package/dist/core/event-bus.d.ts +0 -19
- package/dist/core/event-bus.d.ts.map +0 -1
- package/dist/core/event-bus.js +0 -51
- package/dist/core/event-bus.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-work.js","sourceRoot":"","sources":["../../src/memory/resume-work.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export interface SessionData {
|
|
|
16
16
|
businessRules: string[];
|
|
17
17
|
gotchas: string[];
|
|
18
18
|
currentTasks: string[];
|
|
19
|
+
project: string;
|
|
19
20
|
autoLearnCount: number;
|
|
20
21
|
lastUpdateTime: number;
|
|
21
22
|
}
|
|
@@ -30,6 +31,7 @@ export declare function feedSession(data: {
|
|
|
30
31
|
businessRule?: string;
|
|
31
32
|
gotcha?: string;
|
|
32
33
|
currentTask?: string;
|
|
34
|
+
project?: string;
|
|
33
35
|
type?: string;
|
|
34
36
|
}): void;
|
|
35
37
|
/** Build and store the session summary */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/memory/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAgB,YAAY,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/memory/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAgB,YAAY,IAAI,IAAI,CAcnC;AAED,wBAAgB,UAAU,IAAI,WAAW,GAAG,IAAI,CAE/C;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CA8BP;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CA+DlE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,EAAE,CA0BvF"}
|
|
@@ -18,6 +18,7 @@ function startSession() {
|
|
|
18
18
|
businessRules: [],
|
|
19
19
|
gotchas: [],
|
|
20
20
|
currentTasks: [],
|
|
21
|
+
project: '',
|
|
21
22
|
autoLearnCount: 0,
|
|
22
23
|
lastUpdateTime: Date.now(),
|
|
23
24
|
};
|
|
@@ -30,20 +31,38 @@ function feedSession(data) {
|
|
|
30
31
|
if (!currentSession)
|
|
31
32
|
startSession();
|
|
32
33
|
const s = currentSession;
|
|
34
|
+
const MAX_SESSION_ENTRIES = 20;
|
|
33
35
|
if (data.topic)
|
|
34
36
|
s.topics.add(data.topic.toLowerCase().slice(0, 80));
|
|
35
|
-
if (data.decision)
|
|
37
|
+
if (data.decision) {
|
|
36
38
|
s.decisions.push(data.decision.slice(0, 150));
|
|
39
|
+
if (s.decisions.length > MAX_SESSION_ENTRIES)
|
|
40
|
+
s.decisions.shift();
|
|
41
|
+
}
|
|
37
42
|
if (data.fileChanged)
|
|
38
43
|
s.filesChanged.add(data.fileChanged);
|
|
39
|
-
if (data.failedAttempt)
|
|
44
|
+
if (data.failedAttempt) {
|
|
40
45
|
s.failedAttempts.push(data.failedAttempt.slice(0, 150));
|
|
41
|
-
|
|
46
|
+
if (s.failedAttempts.length > MAX_SESSION_ENTRIES)
|
|
47
|
+
s.failedAttempts.shift();
|
|
48
|
+
}
|
|
49
|
+
if (data.businessRule) {
|
|
42
50
|
s.businessRules.push(data.businessRule.slice(0, 150));
|
|
43
|
-
|
|
51
|
+
if (s.businessRules.length > MAX_SESSION_ENTRIES)
|
|
52
|
+
s.businessRules.shift();
|
|
53
|
+
}
|
|
54
|
+
if (data.gotcha) {
|
|
44
55
|
s.gotchas.push(data.gotcha.slice(0, 150));
|
|
45
|
-
|
|
56
|
+
if (s.gotchas.length > MAX_SESSION_ENTRIES)
|
|
57
|
+
s.gotchas.shift();
|
|
58
|
+
}
|
|
59
|
+
if (data.currentTask) {
|
|
46
60
|
s.currentTasks.push(data.currentTask.slice(0, 150));
|
|
61
|
+
if (s.currentTasks.length > MAX_SESSION_ENTRIES)
|
|
62
|
+
s.currentTasks.shift();
|
|
63
|
+
}
|
|
64
|
+
if (data.project)
|
|
65
|
+
s.project = data.project;
|
|
47
66
|
s.autoLearnCount++;
|
|
48
67
|
s.lastUpdateTime = Date.now();
|
|
49
68
|
}
|
|
@@ -103,9 +122,8 @@ function endSession(memoryStore) {
|
|
|
103
122
|
}
|
|
104
123
|
/** Get the last N session summaries for injection at conversation start */
|
|
105
124
|
function getRecentSessions(memoryStore, count = 3) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
.slice(0, count);
|
|
125
|
+
// Use SQL-level tag search instead of loading all conversations and filtering in JS
|
|
126
|
+
const sessions = memoryStore.findByTag('session-summary', count);
|
|
109
127
|
// Cross-session threading — detect topic overlap with current session
|
|
110
128
|
const currentTopics = currentSession ? [...currentSession.topics] : [];
|
|
111
129
|
return sessions.map(s => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/memory/session-tracker.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/memory/session-tracker.ts"],"names":[],"mappings":";;AA6BA,oCAcC;AAED,gCAEC;AAGD,kCAwCC;AAGD,gCA+DC;AAGD,8CA0BC;AAhLD,oCAAsC;AAgBtC,IAAI,cAAc,GAAuB,IAAI,CAAC;AAE9C,iFAAiF;AAEjF,SAAgB,YAAY;IACxB,cAAc,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;KAC7B,CAAC;AACN,CAAC;AAED,SAAgB,UAAU;IACtB,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,SAAgB,WAAW,CAAC,IAU3B;IACG,IAAI,CAAC,cAAc;QAAE,YAAY,EAAE,CAAC;IACpC,MAAM,CAAC,GAAG,cAAe,CAAC;IAC1B,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,KAAK;QAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB;YAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,WAAW;QAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,mBAAmB;YAAE,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,mBAAmB;YAAE,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,mBAAmB;YAAE,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,CAAC,OAAO;QAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC;AAED,0CAA0C;AAC1C,SAAgB,UAAU,CAAC,WAAwB;IAC/C,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,CAAC,GAAG,cAAc,CAAC;IAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC;IACnE,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC1C,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,CAAC,oCAAoC;IACrD,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,WAAW,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,4BAA4B;IAC5B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnF,WAAW,CAAC,GAAG,CAAC;QACZ,IAAI,EAAE,kBAAU,CAAC,YAAY;QAC7B,MAAM,EAAE,oBAAoB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,EAAE;QACxG,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,8BAA8B,CAAC,CAAC,cAAc,sBAAsB,WAAW,MAAM;QAC7F,IAAI,EAAE,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,EAAE,EAAE,EAAE;KACT,CAAC,CAAC;IAEH,cAAc,GAAG,IAAI,CAAC;IACtB,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,SAAgB,iBAAiB,CAAC,WAAwB,EAAE,QAAgB,CAAC;IACzE,oFAAoF;IACpF,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAEjE,sEAAsE;IACtE,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;QACrC,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU;YAC/D,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY;gBACvD,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC;QAEnD,oDAAoD;QACpD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7B,CAAC,KAAK,iBAAiB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACxF,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,aAAa,GAAG,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,CAAC;QACL,CAAC;QAED,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface SoulEntry {
|
|
2
|
+
category: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Load SOUL.md from workspace. Returns content or null.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadSoul(workspaceRoot: string): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Initialize SOUL.md with default template if it doesn't exist.
|
|
11
|
+
*/
|
|
12
|
+
export declare function initSoul(workspaceRoot: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Update soul by appending a new entry under the right category.
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateSoul(workspaceRoot: string, entry: SoulEntry): void;
|
|
17
|
+
/**
|
|
18
|
+
* Format soul content for injection into force_recall (Layer 0).
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatSoul(workspaceRoot: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Auto-learn from memories to build soul entries.
|
|
23
|
+
* Called periodically — extracts strong conventions and rules.
|
|
24
|
+
*/
|
|
25
|
+
export declare function autoLearnSoul(workspaceRoot: string, memories: Array<{
|
|
26
|
+
type: string;
|
|
27
|
+
intent: string;
|
|
28
|
+
accessCount?: number;
|
|
29
|
+
}>): void;
|
|
30
|
+
//# sourceMappingURL=soul-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soul-manager.d.ts","sourceRoot":"","sources":["../../src/memory/soul-manager.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAuBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAoBxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAelI"}
|
|
@@ -0,0 +1,171 @@
|
|
|
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.loadSoul = loadSoul;
|
|
37
|
+
exports.initSoul = initSoul;
|
|
38
|
+
exports.updateSoul = updateSoul;
|
|
39
|
+
exports.formatSoul = formatSoul;
|
|
40
|
+
exports.autoLearnSoul = autoLearnSoul;
|
|
41
|
+
/**
|
|
42
|
+
* Soul Manager — OpenClaw-style persistent identity layer.
|
|
43
|
+
*
|
|
44
|
+
* Creates and maintains a SOUL.md file in the workspace that stores:
|
|
45
|
+
* - User's coding preferences ("always use TypeScript strict mode")
|
|
46
|
+
* - Project conventions ("we use PostgreSQL, never MongoDB")
|
|
47
|
+
* - Identity ("Senior Backend Engineer working on e-commerce platform")
|
|
48
|
+
*
|
|
49
|
+
* This is injected as Layer 0 in force_recall — the very first thing the AI sees.
|
|
50
|
+
* Unlike transient memories, the Soul NEVER decays.
|
|
51
|
+
*
|
|
52
|
+
* Inspired by OpenClaw's SOUL.md / IDENTITY.md architecture.
|
|
53
|
+
*/
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const DEFAULT_SOUL = `# 🧠 Cortex Soul — Who I Am
|
|
57
|
+
|
|
58
|
+
> This file is your AI's persistent identity. Edit it freely.
|
|
59
|
+
> Cortex reads this at the start of every session.
|
|
60
|
+
|
|
61
|
+
## Identity
|
|
62
|
+
- (Add your role: e.g., "Senior TypeScript developer")
|
|
63
|
+
- (Add your project: e.g., "Building an e-commerce platform")
|
|
64
|
+
|
|
65
|
+
## Conventions
|
|
66
|
+
- (Add team rules: e.g., "Always use strict TypeScript, never \`any\`")
|
|
67
|
+
- (Add stack: e.g., "PostgreSQL, Redis, Next.js 14")
|
|
68
|
+
|
|
69
|
+
## Preferences
|
|
70
|
+
- (Add style: e.g., "Prefer functional over OOP")
|
|
71
|
+
- (Add tools: e.g., "Use pnpm, not npm")
|
|
72
|
+
|
|
73
|
+
## Rules (Never Break)
|
|
74
|
+
- (Add hard rules: e.g., "Never delete user data without confirmation")
|
|
75
|
+
`;
|
|
76
|
+
/**
|
|
77
|
+
* Load SOUL.md from workspace. Returns content or null.
|
|
78
|
+
*/
|
|
79
|
+
function loadSoul(workspaceRoot) {
|
|
80
|
+
const soulPath = getSoulPath(workspaceRoot);
|
|
81
|
+
try {
|
|
82
|
+
if (fs.existsSync(soulPath)) {
|
|
83
|
+
return fs.readFileSync(soulPath, 'utf-8').trim();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch { /* file not readable */ }
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Initialize SOUL.md with default template if it doesn't exist.
|
|
91
|
+
*/
|
|
92
|
+
function initSoul(workspaceRoot) {
|
|
93
|
+
const soulPath = getSoulPath(workspaceRoot);
|
|
94
|
+
try {
|
|
95
|
+
const dir = path.dirname(soulPath);
|
|
96
|
+
if (!fs.existsSync(dir))
|
|
97
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
98
|
+
if (!fs.existsSync(soulPath)) {
|
|
99
|
+
fs.writeFileSync(soulPath, DEFAULT_SOUL, 'utf-8');
|
|
100
|
+
return DEFAULT_SOUL;
|
|
101
|
+
}
|
|
102
|
+
return fs.readFileSync(soulPath, 'utf-8').trim();
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return '';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Update soul by appending a new entry under the right category.
|
|
110
|
+
*/
|
|
111
|
+
function updateSoul(workspaceRoot, entry) {
|
|
112
|
+
const soulPath = getSoulPath(workspaceRoot);
|
|
113
|
+
try {
|
|
114
|
+
let content = loadSoul(workspaceRoot) || DEFAULT_SOUL;
|
|
115
|
+
const sectionMap = {
|
|
116
|
+
'identity': '## Identity',
|
|
117
|
+
'convention': '## Conventions',
|
|
118
|
+
'preference': '## Preferences',
|
|
119
|
+
'rule': '## Rules (Never Break)',
|
|
120
|
+
};
|
|
121
|
+
const header = sectionMap[entry.category] || '## Preferences';
|
|
122
|
+
const idx = content.indexOf(header);
|
|
123
|
+
if (idx >= 0) {
|
|
124
|
+
const insertAt = content.indexOf('\n', idx) + 1;
|
|
125
|
+
content = content.slice(0, insertAt) + `- ${entry.content}\n` + content.slice(insertAt);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
content += `\n${header}\n- ${entry.content}\n`;
|
|
129
|
+
}
|
|
130
|
+
fs.writeFileSync(soulPath, content, 'utf-8');
|
|
131
|
+
}
|
|
132
|
+
catch { /* non-fatal */ }
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Format soul content for injection into force_recall (Layer 0).
|
|
136
|
+
*/
|
|
137
|
+
function formatSoul(workspaceRoot) {
|
|
138
|
+
const soul = loadSoul(workspaceRoot);
|
|
139
|
+
if (!soul || soul.includes('(Add your role'))
|
|
140
|
+
return ''; // Still default template
|
|
141
|
+
// Strip the header explanation, keep only the actual content
|
|
142
|
+
const lines = soul.split('\n').filter(l => l.trim() && !l.startsWith('>') && !l.includes('(Add your'));
|
|
143
|
+
if (lines.length <= 1)
|
|
144
|
+
return '';
|
|
145
|
+
return `\n## 🧬 Soul (Persistent Identity)\n${lines.join('\n')}`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Auto-learn from memories to build soul entries.
|
|
149
|
+
* Called periodically — extracts strong conventions and rules.
|
|
150
|
+
*/
|
|
151
|
+
function autoLearnSoul(workspaceRoot, memories) {
|
|
152
|
+
try {
|
|
153
|
+
const soul = loadSoul(workspaceRoot) || '';
|
|
154
|
+
const strongConventions = memories.filter(m => (m.type === 'CONVENTION' || m.type === 'DECISION') &&
|
|
155
|
+
(m.accessCount || 0) >= 3 && // Accessed multiple times = important
|
|
156
|
+
!soul.includes(m.intent.slice(0, 40)) // Not already in soul
|
|
157
|
+
);
|
|
158
|
+
for (const m of strongConventions.slice(0, 3)) {
|
|
159
|
+
updateSoul(workspaceRoot, {
|
|
160
|
+
category: m.type === 'CONVENTION' ? 'convention' : 'preference',
|
|
161
|
+
content: m.intent.slice(0, 150),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch { /* non-fatal */ }
|
|
166
|
+
}
|
|
167
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
168
|
+
function getSoulPath(workspaceRoot) {
|
|
169
|
+
return path.join(workspaceRoot, '.cortex', 'SOUL.md');
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=soul-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soul-manager.js","sourceRoot":"","sources":["../../src/memory/soul-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Success Tracker — Reinforces approaches that work.
|
|
3
|
+
*
|
|
4
|
+
* When the user says "that worked", "perfect", "great job", "exactly what I wanted",
|
|
5
|
+
* this module captures what approach was used and stores it as a proven pattern.
|
|
6
|
+
*
|
|
7
|
+
* The AI currently only learns from MISTAKES (corrections, bug fixes).
|
|
8
|
+
* But learning from SUCCESS is equally important — repeat what works.
|
|
9
|
+
*
|
|
10
|
+
* Detects:
|
|
11
|
+
* - Explicit praise: "perfect", "that's exactly right", "great"
|
|
12
|
+
* - Implicit success: "it works now", "the tests pass", "build succeeded"
|
|
13
|
+
* - Task completion: "done", "all good", "ship it"
|
|
14
|
+
*/
|
|
15
|
+
export interface SuccessSignal {
|
|
16
|
+
type: 'explicit_praise' | 'implicit_success' | 'task_completion';
|
|
17
|
+
trigger: string;
|
|
18
|
+
confidence: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detect success signals from user text.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectSuccess(text: string): SuccessSignal[];
|
|
24
|
+
/**
|
|
25
|
+
* Build a success memory from the signal and the AI's recent response context.
|
|
26
|
+
* The context should describe what approach was used.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildSuccessMemory(signal: SuccessSignal, aiContext: string): {
|
|
29
|
+
intent: string;
|
|
30
|
+
reason: string;
|
|
31
|
+
tags: string[];
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=success-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"success-tracker.d.ts","sourceRoot":"","sources":["../../src/memory/success-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAiB3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAcA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Success Tracker — Reinforces approaches that work.
|
|
4
|
+
*
|
|
5
|
+
* When the user says "that worked", "perfect", "great job", "exactly what I wanted",
|
|
6
|
+
* this module captures what approach was used and stores it as a proven pattern.
|
|
7
|
+
*
|
|
8
|
+
* The AI currently only learns from MISTAKES (corrections, bug fixes).
|
|
9
|
+
* But learning from SUCCESS is equally important — repeat what works.
|
|
10
|
+
*
|
|
11
|
+
* Detects:
|
|
12
|
+
* - Explicit praise: "perfect", "that's exactly right", "great"
|
|
13
|
+
* - Implicit success: "it works now", "the tests pass", "build succeeded"
|
|
14
|
+
* - Task completion: "done", "all good", "ship it"
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.detectSuccess = detectSuccess;
|
|
18
|
+
exports.buildSuccessMemory = buildSuccessMemory;
|
|
19
|
+
// ─── Detection Patterns ──────────────────────────────────────────────────────
|
|
20
|
+
const PRAISE_PATTERNS = [
|
|
21
|
+
// Explicit praise (highest confidence)
|
|
22
|
+
{ regex: /\b(?:perfect|exactly\s+(?:right|what\s+i\s+(?:wanted|needed)))\b/i, type: 'explicit_praise', confidence: 0.95 },
|
|
23
|
+
{ regex: /\b(?:great\s+(?:job|work)|well\s+done|nice\s+work|awesome|excellent)\b/i, type: 'explicit_praise', confidence: 0.90 },
|
|
24
|
+
{ regex: /\bthat'?s?\s+(?:exactly|precisely|perfectly)\s+(?:right|correct|it)\b/i, type: 'explicit_praise', confidence: 0.90 },
|
|
25
|
+
{ regex: /\bthank(?:s| you)\s+(?:that|this|it)\s+(?:works?|helped|fixed)\b/i, type: 'explicit_praise', confidence: 0.85 },
|
|
26
|
+
{ regex: /\byou\s+(?:nailed|got)\s+it\b/i, type: 'explicit_praise', confidence: 0.90 },
|
|
27
|
+
// Implicit success (medium confidence)
|
|
28
|
+
{ regex: /\b(?:it|that)\s+works?\s+(?:now|perfectly|great|fine)\b/i, type: 'implicit_success', confidence: 0.85 },
|
|
29
|
+
{ regex: /\btests?\s+(?:pass|passed|passing|all\s+pass)\b/i, type: 'implicit_success', confidence: 0.90 },
|
|
30
|
+
{ regex: /\bbuild\s+(?:succeeded|passed|success|works)\b/i, type: 'implicit_success', confidence: 0.90 },
|
|
31
|
+
{ regex: /\b(?:no\s+(?:more\s+)?errors?|error\s+(?:is\s+)?(?:gone|fixed|resolved))\b/i, type: 'implicit_success', confidence: 0.85 },
|
|
32
|
+
{ regex: /\b(?:the\s+)?(?:bug|issue|problem)\s+(?:is\s+)?(?:fixed|resolved|gone)\b/i, type: 'implicit_success', confidence: 0.85 },
|
|
33
|
+
// Task completion (lower confidence — context-dependent)
|
|
34
|
+
{ regex: /\b(?:all\s+(?:good|done|set)|we'?re?\s+(?:good|done|set))\b/i, type: 'task_completion', confidence: 0.75 },
|
|
35
|
+
{ regex: /\b(?:ship\s+it|let'?s?\s+(?:merge|deploy|push))\b/i, type: 'task_completion', confidence: 0.80 },
|
|
36
|
+
{ regex: /\b(?:looks?\s+(?:good|great|perfect)|lgtm)\b/i, type: 'task_completion', confidence: 0.80 },
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Detect success signals from user text.
|
|
40
|
+
*/
|
|
41
|
+
function detectSuccess(text) {
|
|
42
|
+
const signals = [];
|
|
43
|
+
const seen = new Set();
|
|
44
|
+
for (const pattern of PRAISE_PATTERNS) {
|
|
45
|
+
const match = text.match(pattern.regex);
|
|
46
|
+
if (match && !seen.has(pattern.type)) {
|
|
47
|
+
signals.push({
|
|
48
|
+
type: pattern.type,
|
|
49
|
+
trigger: match[0],
|
|
50
|
+
confidence: pattern.confidence,
|
|
51
|
+
});
|
|
52
|
+
seen.add(`${pattern.type}:${match[0].toLowerCase()}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return signals;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build a success memory from the signal and the AI's recent response context.
|
|
59
|
+
* The context should describe what approach was used.
|
|
60
|
+
*/
|
|
61
|
+
function buildSuccessMemory(signal, aiContext) {
|
|
62
|
+
// Extract the approach from AI context (first meaningful sentence)
|
|
63
|
+
const approach = aiContext
|
|
64
|
+
.split(/[.\n]/)
|
|
65
|
+
.map(s => s.trim())
|
|
66
|
+
.filter(s => s.length > 20 && s.length < 200)
|
|
67
|
+
.slice(0, 2)
|
|
68
|
+
.join('. ') || aiContext.slice(0, 200);
|
|
69
|
+
return {
|
|
70
|
+
intent: `[PROVEN] ${approach}`,
|
|
71
|
+
reason: `User confirmed success: "${signal.trigger}" (${signal.type}, confidence: ${signal.confidence})`,
|
|
72
|
+
tags: ['success', 'proven-pattern', signal.type],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=success-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"success-tracker.js","sourceRoot":"","sources":["../../src/memory/success-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-engine.d.ts","sourceRoot":"","sources":["../../src/memory/temporal-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"temporal-engine.d.ts","sourceRoot":"","sources":["../../src/memory/temporal-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,EAAE,CAkB7E;AAED,6CAA6C;AAC7C,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE,CAG3F;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAiBtE;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAmD9D"}
|
|
@@ -4,6 +4,7 @@ exports.getTemporalBuckets = getTemporalBuckets;
|
|
|
4
4
|
exports.getRecentChanges = getRecentChanges;
|
|
5
5
|
exports.formatTemporalContext = formatTemporalContext;
|
|
6
6
|
exports.getWorkspaceDiff = getWorkspaceDiff;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
7
8
|
/** Get memories bucketed by time period */
|
|
8
9
|
function getTemporalBuckets(memoryStore) {
|
|
9
10
|
const now = Date.now();
|
|
@@ -15,21 +16,16 @@ function getTemporalBuckets(memoryStore) {
|
|
|
15
16
|
{ label: 'Yesterday', memories: [], start: now - 2 * DAY, end: now - DAY },
|
|
16
17
|
{ label: 'This week', memories: [], start: now - 7 * DAY, end: now - 2 * DAY },
|
|
17
18
|
];
|
|
18
|
-
|
|
19
|
-
for (const
|
|
20
|
-
|
|
21
|
-
if (m.timestamp >= bucket.start && m.timestamp < bucket.end) {
|
|
22
|
-
bucket.memories.push(m);
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
19
|
+
// SQL-targeted: fetch only memories in each time range
|
|
20
|
+
for (const bucket of buckets) {
|
|
21
|
+
bucket.memories = memoryStore.getActiveByTimestampRange(bucket.start, bucket.end, 50);
|
|
26
22
|
}
|
|
27
23
|
return buckets.filter(b => b.memories.length > 0);
|
|
28
24
|
}
|
|
29
25
|
/** Get only recent changes (last N hours) */
|
|
30
26
|
function getRecentChanges(memoryStore, hours = 24) {
|
|
31
27
|
const since = Date.now() - (hours * 3600000);
|
|
32
|
-
return memoryStore.
|
|
28
|
+
return memoryStore.getActiveByTimestampRange(since, Date.now(), 200);
|
|
33
29
|
}
|
|
34
30
|
/** Format temporal context for injection into force_recall */
|
|
35
31
|
function formatTemporalContext(memoryStore) {
|
|
@@ -52,11 +48,11 @@ function formatTemporalContext(memoryStore) {
|
|
|
52
48
|
/** Get workspace changes since last session */
|
|
53
49
|
function getWorkspaceDiff(workspaceRoot) {
|
|
54
50
|
try {
|
|
55
|
-
|
|
51
|
+
// execSync imported at module level
|
|
56
52
|
// Recent commits
|
|
57
53
|
let commits = '';
|
|
58
54
|
try {
|
|
59
|
-
commits = execSync('git log --oneline -5', {
|
|
55
|
+
commits = (0, child_process_1.execSync)('git log --oneline -5', {
|
|
60
56
|
cwd: workspaceRoot,
|
|
61
57
|
encoding: 'utf-8',
|
|
62
58
|
timeout: 3000,
|
|
@@ -66,7 +62,7 @@ function getWorkspaceDiff(workspaceRoot) {
|
|
|
66
62
|
// Files changed recently
|
|
67
63
|
let diffStat = '';
|
|
68
64
|
try {
|
|
69
|
-
diffStat = execSync('git diff --stat HEAD~3 2>nul || echo "no git history"', {
|
|
65
|
+
diffStat = (0, child_process_1.execSync)('git diff --stat HEAD~3 2>nul || echo "no git history"', {
|
|
70
66
|
cwd: workspaceRoot,
|
|
71
67
|
encoding: 'utf-8',
|
|
72
68
|
timeout: 3000,
|
|
@@ -76,7 +72,7 @@ function getWorkspaceDiff(workspaceRoot) {
|
|
|
76
72
|
// Current branch
|
|
77
73
|
let branch = '';
|
|
78
74
|
try {
|
|
79
|
-
branch = execSync('git branch --show-current', {
|
|
75
|
+
branch = (0, child_process_1.execSync)('git branch --show-current', {
|
|
80
76
|
cwd: workspaceRoot,
|
|
81
77
|
encoding: 'utf-8',
|
|
82
78
|
timeout: 2000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-engine.js","sourceRoot":"","sources":["../../src/memory/temporal-engine.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"temporal-engine.js","sourceRoot":"","sources":["../../src/memory/temporal-engine.ts"],"names":[],"mappings":";;AAoBA,gDAkBC;AAGD,4CAGC;AAGD,sDAiBC;AAGD,4CAmDC;AA5GD,iDAAyC;AASzC,2CAA2C;AAC3C,SAAgB,kBAAkB,CAAC,WAAwB;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,GAAG,GAAG,QAAQ,CAAC;IAErB,MAAM,OAAO,GAAqB;QAC9B,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;QACjE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE;QACnE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE;QAC1E,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;KACjF,CAAC;IAEF,uDAAuD;IACvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,6CAA6C;AAC7C,SAAgB,gBAAgB,CAAC,WAAwB,EAAE,QAAgB,EAAE;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;IAC7C,OAAO,WAAW,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,8DAA8D;AAC9D,SAAgB,qBAAqB,CAAC,WAAwB;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAa,CAAC,sBAAsB,CAAC,CAAC;IAEjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QAC1E,8CAA8C;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,+CAA+C;AAC/C,SAAgB,gBAAgB,CAAC,aAAqB;IAClD,IAAI,CAAC;QACD,oCAAoC;QAEpC,iBAAiB;QACjB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC;YACD,OAAO,GAAG,IAAA,wBAAQ,EAAC,sBAAsB,EAAE;gBACvC,GAAG,EAAE,aAAa;gBAClB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;QAEX,yBAAyB;QACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,QAAQ,GAAG,IAAA,wBAAQ,EAAC,uDAAuD,EAAE;gBACzE,GAAG,EAAE,aAAa;gBAClB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;QAEX,iBAAiB;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YACD,MAAM,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE;gBAC3C,GAAG,EAAE,aAAa;gBAClB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;QAEX,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,KAAK,GAAa,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,IAAI,QAAQ,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Recommender — Suggests which Cortex tools to use based on context.
|
|
3
|
+
*
|
|
4
|
+
* THE GAP THIS FILLS:
|
|
5
|
+
* The AI has 20 tools but often doesn't know WHEN to use which.
|
|
6
|
+
* This module analyzes the current situation and recommends the right tools.
|
|
7
|
+
*
|
|
8
|
+
* Like a flight checklist: "Before takeoff: check instruments, fuel, clearance."
|
|
9
|
+
* Here: "Before editing auth.ts: run pre_check, check_impact, verify_code."
|
|
10
|
+
*/
|
|
11
|
+
export interface ToolRecommendation {
|
|
12
|
+
tool: string;
|
|
13
|
+
reason: string;
|
|
14
|
+
priority: 'must' | 'should' | 'could';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Recommend tools based on what the user is doing.
|
|
18
|
+
*/
|
|
19
|
+
export declare function recommendTools(context: {
|
|
20
|
+
topic?: string;
|
|
21
|
+
currentFile?: string;
|
|
22
|
+
isNewConversation?: boolean;
|
|
23
|
+
recentAction?: string;
|
|
24
|
+
}): ToolRecommendation[];
|
|
25
|
+
/**
|
|
26
|
+
* Format tool recommendations for injection.
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatRecommendations(recs: ToolRecommendation[]): string;
|
|
29
|
+
//# sourceMappingURL=tool-recommender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-recommender.d.ts","sourceRoot":"","sources":["../../src/memory/tool-recommender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,kBAAkB,EAAE,CAgGvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,MAAM,CASxE"}
|