ghagga-core 2.8.0 → 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/dist/acp/adapter.d.ts +91 -0
- package/dist/acp/adapter.d.ts.map +1 -0
- package/dist/acp/adapter.js +315 -0
- package/dist/acp/adapter.js.map +1 -0
- package/dist/acp/index.d.ts +4 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +2 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/types.d.ts +142 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +13 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/adversarial-qa.d.ts +60 -0
- package/dist/adversarial-qa.d.ts.map +1 -0
- package/dist/adversarial-qa.js +85 -0
- package/dist/adversarial-qa.js.map +1 -0
- package/dist/agents/audit.d.ts +18 -0
- package/dist/agents/audit.d.ts.map +1 -0
- package/dist/agents/audit.js +78 -0
- package/dist/agents/audit.js.map +1 -0
- package/dist/agents/consensus.d.ts +1 -1
- package/dist/agents/consensus.d.ts.map +1 -1
- package/dist/agents/consensus.js +10 -8
- package/dist/agents/consensus.js.map +1 -1
- package/dist/agents/diagnostic.d.ts.map +1 -1
- package/dist/agents/diagnostic.js +22 -20
- package/dist/agents/diagnostic.js.map +1 -1
- package/dist/agents/fan-out-lenses.d.ts +41 -0
- package/dist/agents/fan-out-lenses.d.ts.map +1 -1
- package/dist/agents/fan-out-lenses.js +117 -3
- package/dist/agents/fan-out-lenses.js.map +1 -1
- package/dist/agents/prompts.d.ts +12 -0
- package/dist/agents/prompts.d.ts.map +1 -1
- package/dist/agents/prompts.js +31 -0
- package/dist/agents/prompts.js.map +1 -1
- package/dist/agents/simple.d.ts +1 -1
- package/dist/agents/simple.d.ts.map +1 -1
- package/dist/agents/simple.js +10 -6
- package/dist/agents/simple.js.map +1 -1
- package/dist/agents/workflow.d.ts +1 -1
- package/dist/agents/workflow.d.ts.map +1 -1
- package/dist/agents/workflow.js +9 -8
- package/dist/agents/workflow.js.map +1 -1
- package/dist/aisvs.d.ts +44 -0
- package/dist/aisvs.d.ts.map +1 -0
- package/dist/aisvs.js +189 -0
- package/dist/aisvs.js.map +1 -0
- package/dist/checklist/context.d.ts.map +1 -1
- package/dist/checklist/context.js +2 -8
- package/dist/checklist/context.js.map +1 -1
- package/dist/checklist/defaults.d.ts.map +1 -1
- package/dist/checklist/defaults.js.map +1 -1
- package/dist/checklist/scorer.d.ts.map +1 -1
- package/dist/checklist/scorer.js +105 -12
- package/dist/checklist/scorer.js.map +1 -1
- package/dist/code-intel/client.d.ts +30 -0
- package/dist/code-intel/client.d.ts.map +1 -0
- package/dist/code-intel/client.js +91 -0
- package/dist/code-intel/client.js.map +1 -0
- package/dist/code-intel/context.d.ts +21 -0
- package/dist/code-intel/context.d.ts.map +1 -0
- package/dist/code-intel/context.js +72 -0
- package/dist/code-intel/context.js.map +1 -0
- package/dist/code-intel/index.d.ts +10 -0
- package/dist/code-intel/index.d.ts.map +1 -0
- package/dist/code-intel/index.js +11 -0
- package/dist/code-intel/index.js.map +1 -0
- package/dist/code-intel/types.d.ts +63 -0
- package/dist/code-intel/types.d.ts.map +1 -0
- package/dist/code-intel/types.js +9 -0
- package/dist/code-intel/types.js.map +1 -0
- package/dist/compress/index.d.ts +55 -0
- package/dist/compress/index.d.ts.map +1 -0
- package/dist/compress/index.js +166 -0
- package/dist/compress/index.js.map +1 -0
- package/dist/cost-footer.d.ts +38 -0
- package/dist/cost-footer.d.ts.map +1 -0
- package/dist/cost-footer.js +95 -0
- package/dist/cost-footer.js.map +1 -0
- package/dist/critique/critique.d.ts +40 -0
- package/dist/critique/critique.d.ts.map +1 -0
- package/dist/critique/critique.js +194 -0
- package/dist/critique/critique.js.map +1 -0
- package/dist/critique/cross-model.d.ts +123 -0
- package/dist/critique/cross-model.d.ts.map +1 -0
- package/dist/critique/cross-model.js +267 -0
- package/dist/critique/cross-model.js.map +1 -0
- package/dist/critique/index.d.ts +8 -0
- package/dist/critique/index.d.ts.map +1 -0
- package/dist/critique/index.js +6 -0
- package/dist/critique/index.js.map +1 -0
- package/dist/critique/prompts.d.ts +11 -0
- package/dist/critique/prompts.d.ts.map +1 -0
- package/dist/critique/prompts.js +66 -0
- package/dist/critique/prompts.js.map +1 -0
- package/dist/critique/types.d.ts +84 -0
- package/dist/critique/types.d.ts.map +1 -0
- package/dist/critique/types.js +13 -0
- package/dist/critique/types.js.map +1 -0
- package/dist/doc-validation/index.d.ts +9 -0
- package/dist/doc-validation/index.d.ts.map +1 -0
- package/dist/doc-validation/index.js +9 -0
- package/dist/doc-validation/index.js.map +1 -0
- package/dist/doc-validation/scanner.d.ts +40 -0
- package/dist/doc-validation/scanner.d.ts.map +1 -0
- package/dist/doc-validation/scanner.js +163 -0
- package/dist/doc-validation/scanner.js.map +1 -0
- package/dist/doc-validation/types.d.ts +27 -0
- package/dist/doc-validation/types.d.ts.map +1 -0
- package/dist/doc-validation/types.js +8 -0
- package/dist/doc-validation/types.js.map +1 -0
- package/dist/embed.d.ts +27 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/embed.js +47 -0
- package/dist/embed.js.map +1 -0
- package/dist/enhance/enhance.d.ts.map +1 -1
- package/dist/enhance/enhance.js +7 -25
- package/dist/enhance/enhance.js.map +1 -1
- package/dist/enhance/types.d.ts +5 -0
- package/dist/enhance/types.d.ts.map +1 -1
- package/dist/exploitability/analyzer.d.ts +42 -0
- package/dist/exploitability/analyzer.d.ts.map +1 -1
- package/dist/exploitability/analyzer.js +225 -0
- package/dist/exploitability/analyzer.js.map +1 -1
- package/dist/exploitability/index.d.ts +3 -2
- package/dist/exploitability/index.d.ts.map +1 -1
- package/dist/exploitability/index.js +1 -2
- package/dist/exploitability/index.js.map +1 -1
- package/dist/exploitability/types.d.ts +27 -0
- package/dist/exploitability/types.d.ts.map +1 -1
- package/dist/fetch-fix.d.ts +60 -0
- package/dist/fetch-fix.d.ts.map +1 -0
- package/dist/fetch-fix.js +137 -0
- package/dist/fetch-fix.js.map +1 -0
- package/dist/flood/index.d.ts +34 -0
- package/dist/flood/index.d.ts.map +1 -0
- package/dist/flood/index.js +67 -0
- package/dist/flood/index.js.map +1 -0
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +6 -1
- package/dist/format.js.map +1 -1
- package/dist/graph/blast-radius.js +2 -2
- package/dist/graph/blast-radius.js.map +1 -1
- package/dist/graph/call-chain.d.ts +36 -0
- package/dist/graph/call-chain.d.ts.map +1 -0
- package/dist/graph/call-chain.js +291 -0
- package/dist/graph/call-chain.js.map +1 -0
- package/dist/graph/index.d.ts +4 -0
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +2 -0
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/reverse-deps.d.ts +37 -0
- package/dist/graph/reverse-deps.d.ts.map +1 -0
- package/dist/graph/reverse-deps.js +136 -0
- package/dist/graph/reverse-deps.js.map +1 -0
- package/dist/index.d.ts +50 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -7
- package/dist/index.js.map +1 -1
- package/dist/injection-corpus.d.ts +41 -0
- package/dist/injection-corpus.d.ts.map +1 -0
- package/dist/injection-corpus.js +181 -0
- package/dist/injection-corpus.js.map +1 -0
- package/dist/latent-comms.d.ts +31 -0
- package/dist/latent-comms.d.ts.map +1 -0
- package/dist/latent-comms.js +139 -0
- package/dist/latent-comms.js.map +1 -0
- package/dist/memory/pageindex/chunker.d.ts +33 -0
- package/dist/memory/pageindex/chunker.d.ts.map +1 -0
- package/dist/memory/pageindex/chunker.js +112 -0
- package/dist/memory/pageindex/chunker.js.map +1 -0
- package/dist/memory/pageindex/example.d.ts +22 -0
- package/dist/memory/pageindex/example.d.ts.map +1 -0
- package/dist/memory/pageindex/example.js +94 -0
- package/dist/memory/pageindex/example.js.map +1 -0
- package/dist/memory/pageindex/index.d.ts +15 -0
- package/dist/memory/pageindex/index.d.ts.map +1 -0
- package/dist/memory/pageindex/index.js +17 -0
- package/dist/memory/pageindex/index.js.map +1 -0
- package/dist/memory/pageindex/service.d.ts +53 -0
- package/dist/memory/pageindex/service.d.ts.map +1 -0
- package/dist/memory/pageindex/service.js +229 -0
- package/dist/memory/pageindex/service.js.map +1 -0
- package/dist/memory/pageindex/types.d.ts +67 -0
- package/dist/memory/pageindex/types.d.ts.map +1 -0
- package/dist/memory/pageindex/types.js +14 -0
- package/dist/memory/pageindex/types.js.map +1 -0
- package/dist/memory/persist.d.ts.map +1 -1
- package/dist/memory/persist.js +6 -2
- package/dist/memory/persist.js.map +1 -1
- package/dist/memory/sqlite.d.ts +69 -2
- package/dist/memory/sqlite.d.ts.map +1 -1
- package/dist/memory/sqlite.js +312 -5
- package/dist/memory/sqlite.js.map +1 -1
- package/dist/memory/taxonomy.d.ts +34 -0
- package/dist/memory/taxonomy.d.ts.map +1 -0
- package/dist/memory/taxonomy.js +189 -0
- package/dist/memory/taxonomy.js.map +1 -0
- package/dist/memory/versioning.d.ts.map +1 -1
- package/dist/memory/versioning.js.map +1 -1
- package/dist/negative.d.ts +23 -0
- package/dist/negative.d.ts.map +1 -0
- package/dist/negative.js +40 -0
- package/dist/negative.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +455 -46
- package/dist/pipeline.js.map +1 -1
- package/dist/prompt-intel.d.ts +39 -0
- package/dist/prompt-intel.d.ts.map +1 -0
- package/dist/prompt-intel.js +148 -0
- package/dist/prompt-intel.js.map +1 -0
- package/dist/providers/cli-bridge.d.ts +4 -0
- package/dist/providers/cli-bridge.d.ts.map +1 -1
- package/dist/providers/cli-bridge.js +4 -0
- package/dist/providers/cli-bridge.js.map +1 -1
- package/dist/providers/generate-fn.d.ts +3 -15
- package/dist/providers/generate-fn.d.ts.map +1 -1
- package/dist/providers/generate-fn.js +3 -30
- package/dist/providers/generate-fn.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts +15 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +30 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/ranking/index.d.ts +9 -0
- package/dist/ranking/index.d.ts.map +1 -0
- package/dist/ranking/index.js +82 -0
- package/dist/ranking/index.js.map +1 -0
- package/dist/recursive/circuit-breaker.d.ts +36 -0
- package/dist/recursive/circuit-breaker.d.ts.map +1 -0
- package/dist/recursive/circuit-breaker.js +62 -0
- package/dist/recursive/circuit-breaker.js.map +1 -0
- package/dist/recursive/index.d.ts +4 -0
- package/dist/recursive/index.d.ts.map +1 -1
- package/dist/recursive/index.js +18 -1
- package/dist/recursive/index.js.map +1 -1
- package/dist/recursive/types.d.ts +2 -0
- package/dist/recursive/types.d.ts.map +1 -1
- package/dist/recursive/types.js +1 -0
- package/dist/recursive/types.js.map +1 -1
- package/dist/scope/diff-mapper.js.map +1 -1
- package/dist/scope/entity-diff.d.ts +58 -0
- package/dist/scope/entity-diff.d.ts.map +1 -0
- package/dist/scope/entity-diff.js +224 -0
- package/dist/scope/entity-diff.js.map +1 -0
- package/dist/scope/extractor.d.ts.map +1 -1
- package/dist/scope/extractor.js.map +1 -1
- package/dist/scope/index.d.ts +3 -1
- package/dist/scope/index.d.ts.map +1 -1
- package/dist/scope/index.js +3 -0
- package/dist/scope/index.js.map +1 -1
- package/dist/scope/parser.d.ts +1 -1
- package/dist/scope/parser.d.ts.map +1 -1
- package/dist/scope/parser.js.map +1 -1
- package/dist/scope/types.d.ts +32 -0
- package/dist/scope/types.d.ts.map +1 -1
- package/dist/scope/types.js +7 -1
- package/dist/scope/types.js.map +1 -1
- package/dist/search/index.d.ts +11 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +10 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/indexer.d.ts +67 -0
- package/dist/search/indexer.d.ts.map +1 -0
- package/dist/search/indexer.js +196 -0
- package/dist/search/indexer.js.map +1 -0
- package/dist/search/searcher.d.ts +34 -0
- package/dist/search/searcher.d.ts.map +1 -0
- package/dist/search/searcher.js +101 -0
- package/dist/search/searcher.js.map +1 -0
- package/dist/search/types.d.ts +81 -0
- package/dist/search/types.d.ts.map +1 -0
- package/dist/search/types.js +8 -0
- package/dist/search/types.js.map +1 -0
- package/dist/self-improve/index.d.ts +53 -0
- package/dist/self-improve/index.d.ts.map +1 -0
- package/dist/self-improve/index.js +136 -0
- package/dist/self-improve/index.js.map +1 -0
- package/dist/semantic-diff/index.d.ts +31 -0
- package/dist/semantic-diff/index.d.ts.map +1 -0
- package/dist/semantic-diff/index.js +215 -0
- package/dist/semantic-diff/index.js.map +1 -0
- package/dist/testing/index.d.ts +67 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +76 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/vitest-helpers.d.ts +26 -0
- package/dist/testing/vitest-helpers.d.ts.map +1 -0
- package/dist/testing/vitest-helpers.js +37 -0
- package/dist/testing/vitest-helpers.js.map +1 -0
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/remote-query.d.ts +40 -0
- package/dist/tools/remote-query.d.ts.map +1 -0
- package/dist/tools/remote-query.js +71 -0
- package/dist/tools/remote-query.js.map +1 -0
- package/dist/tracing/index.d.ts +39 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +70 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/trajectory.d.ts +65 -0
- package/dist/trajectory.d.ts.map +1 -0
- package/dist/trajectory.js +126 -0
- package/dist/trajectory.js.map +1 -0
- package/dist/trust/index.d.ts +34 -0
- package/dist/trust/index.d.ts.map +1 -0
- package/dist/trust/index.js +78 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/types.d.ts +144 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -11
- package/dist/types.js.map +1 -1
- package/package.json +1 -3
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Service for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Manages paginated project memory using GHAGGA's sql.js database.
|
|
5
|
+
*/
|
|
6
|
+
import { PageDirection } from './types.js';
|
|
7
|
+
import { chunkProjectMemory, shouldCompact } from './chunker.js';
|
|
8
|
+
export class ProjectPageIndexService {
|
|
9
|
+
db;
|
|
10
|
+
constructor(db) {
|
|
11
|
+
this.db = db;
|
|
12
|
+
this.initSchema();
|
|
13
|
+
}
|
|
14
|
+
initSchema() {
|
|
15
|
+
// Page index table
|
|
16
|
+
this.db.exec(`
|
|
17
|
+
CREATE TABLE IF NOT EXISTS project_page_index (
|
|
18
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
19
|
+
project_id TEXT NOT NULL,
|
|
20
|
+
page_num INTEGER NOT NULL,
|
|
21
|
+
total_pages INTEGER NOT NULL,
|
|
22
|
+
content TEXT NOT NULL,
|
|
23
|
+
topics TEXT, -- JSON array
|
|
24
|
+
file_refs TEXT, -- JSON array
|
|
25
|
+
token_count INTEGER NOT NULL,
|
|
26
|
+
prev_page_id INTEGER,
|
|
27
|
+
next_page_id INTEGER,
|
|
28
|
+
created_at INTEGER DEFAULT (CAST((julianday('now') - 2440587.5) * 86400000 AS INTEGER)),
|
|
29
|
+
FOREIGN KEY (prev_page_id) REFERENCES project_page_index(id),
|
|
30
|
+
FOREIGN KEY (next_page_id) REFERENCES project_page_index(id),
|
|
31
|
+
UNIQUE(project_id, page_num)
|
|
32
|
+
)
|
|
33
|
+
`);
|
|
34
|
+
// Create indexes
|
|
35
|
+
this.db.exec(`
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_project_pages_project ON project_page_index(project_id);
|
|
37
|
+
CREATE INDEX IF NOT EXISTS idx_project_pages_number ON project_page_index(project_id, page_num);
|
|
38
|
+
`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create page index for project memory
|
|
42
|
+
*/
|
|
43
|
+
async createPageIndex(projectId, content) {
|
|
44
|
+
// Check if already exists
|
|
45
|
+
const existing = this.db.exec(`SELECT COUNT(*) as count FROM project_page_index WHERE project_id = ?`, [projectId]);
|
|
46
|
+
if (existing[0]?.values[0][0] > 0) {
|
|
47
|
+
// Return existing stats
|
|
48
|
+
const stats = this.getProjectStats(projectId);
|
|
49
|
+
return { pages: stats.pages, tokens: stats.tokens };
|
|
50
|
+
}
|
|
51
|
+
// Chunk content
|
|
52
|
+
const chunks = chunkProjectMemory(projectId, content);
|
|
53
|
+
// Insert pages
|
|
54
|
+
const insertSql = `
|
|
55
|
+
INSERT INTO project_page_index
|
|
56
|
+
(project_id, page_num, total_pages, content, topics, file_refs, token_count)
|
|
57
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
58
|
+
`;
|
|
59
|
+
const pageIds = [];
|
|
60
|
+
for (const chunk of chunks) {
|
|
61
|
+
const result = this.db.exec(insertSql, [
|
|
62
|
+
chunk.projectId,
|
|
63
|
+
chunk.pageNum,
|
|
64
|
+
chunk.totalPages,
|
|
65
|
+
chunk.content,
|
|
66
|
+
JSON.stringify(chunk.topics),
|
|
67
|
+
JSON.stringify(chunk.fileRefs),
|
|
68
|
+
chunk.tokenCount,
|
|
69
|
+
]);
|
|
70
|
+
// Get last insert ID
|
|
71
|
+
const lastId = this.db.exec('SELECT last_insert_rowid() as id');
|
|
72
|
+
pageIds.push(lastId[0].values[0][0]);
|
|
73
|
+
}
|
|
74
|
+
// Link pages
|
|
75
|
+
for (let i = 0; i < pageIds.length; i++) {
|
|
76
|
+
const prevId = i > 0 ? pageIds[i - 1] : null;
|
|
77
|
+
const nextId = i < pageIds.length - 1 ? pageIds[i + 1] : null;
|
|
78
|
+
this.db.exec(`UPDATE project_page_index SET prev_page_id = ?, next_page_id = ? WHERE id = ?`, [prevId, nextId, pageIds[i]]);
|
|
79
|
+
}
|
|
80
|
+
const totalTokens = chunks.reduce((sum, c) => sum + c.tokenCount, 0);
|
|
81
|
+
return { pages: chunks.length, tokens: totalTokens };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get a specific page
|
|
85
|
+
*/
|
|
86
|
+
getPage(projectId, pageNum) {
|
|
87
|
+
const result = this.db.exec(`SELECT * FROM project_page_index WHERE project_id = ? AND page_num = ?`, [projectId, pageNum]);
|
|
88
|
+
if (!result[0] || result[0].values.length === 0) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
return this.rowToPageChunk(result[0]);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get context window around a page
|
|
95
|
+
*/
|
|
96
|
+
getContext(request) {
|
|
97
|
+
const { projectId, pageNum, windowSize } = request;
|
|
98
|
+
const current = this.getPage(projectId, pageNum);
|
|
99
|
+
if (!current) {
|
|
100
|
+
throw new Error(`Page ${pageNum} not found in project ${projectId}`);
|
|
101
|
+
}
|
|
102
|
+
const startPage = Math.max(1, pageNum - windowSize);
|
|
103
|
+
const endPage = pageNum + windowSize;
|
|
104
|
+
const result = this.db.exec(`SELECT * FROM project_page_index
|
|
105
|
+
WHERE project_id = ? AND page_num BETWEEN ? AND ?
|
|
106
|
+
ORDER BY page_num`, [projectId, startPage, endPage]);
|
|
107
|
+
const pages = result[0] ? this.rowsToPageChunks(result[0]) : [];
|
|
108
|
+
const previousPages = pages.filter(p => p.pageNum < pageNum);
|
|
109
|
+
const nextPages = pages.filter(p => p.pageNum > pageNum);
|
|
110
|
+
const totalTokens = pages.reduce((sum, p) => sum + p.tokenCount, 0);
|
|
111
|
+
return {
|
|
112
|
+
currentPage: current,
|
|
113
|
+
previousPages,
|
|
114
|
+
nextPages,
|
|
115
|
+
totalInContext: pages.length,
|
|
116
|
+
totalTokens,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Navigate to adjacent page
|
|
121
|
+
*/
|
|
122
|
+
navigate(request) {
|
|
123
|
+
const { projectId, currentPageNum, direction } = request;
|
|
124
|
+
switch (direction) {
|
|
125
|
+
case PageDirection.NEXT:
|
|
126
|
+
return this.getPage(projectId, currentPageNum + 1);
|
|
127
|
+
case PageDirection.PREV:
|
|
128
|
+
return this.getPage(projectId, currentPageNum - 1);
|
|
129
|
+
case PageDirection.FIRST:
|
|
130
|
+
return this.getPage(projectId, 1);
|
|
131
|
+
case PageDirection.LAST:
|
|
132
|
+
const stats = this.getProjectStats(projectId);
|
|
133
|
+
return stats.pages > 0 ? this.getPage(projectId, stats.pages) : null;
|
|
134
|
+
default:
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Find pages relevant to PR context
|
|
140
|
+
*/
|
|
141
|
+
findRelevantPages(request) {
|
|
142
|
+
const { projectId, prContext, maxPages } = request;
|
|
143
|
+
// Build keywords from PR context
|
|
144
|
+
const keywords = [
|
|
145
|
+
...prContext.title.toLowerCase().split(/\s+/),
|
|
146
|
+
...prContext.description.toLowerCase().split(/\s+/),
|
|
147
|
+
...prContext.files.map(f => f.toLowerCase()),
|
|
148
|
+
].filter(k => k.length > 2);
|
|
149
|
+
// Get all pages for project
|
|
150
|
+
const result = this.db.exec(`SELECT * FROM project_page_index WHERE project_id = ? ORDER BY page_num`, [projectId]);
|
|
151
|
+
if (!result[0])
|
|
152
|
+
return [];
|
|
153
|
+
const pages = this.rowsToPageChunks(result[0]);
|
|
154
|
+
// Score pages by keyword matches
|
|
155
|
+
const scored = pages.map(page => {
|
|
156
|
+
const content = (page.content + ' ' + page.topics.join(' ')).toLowerCase();
|
|
157
|
+
const score = keywords.reduce((sum, kw) => {
|
|
158
|
+
const matches = (content.match(new RegExp(kw, 'g')) || []).length;
|
|
159
|
+
return sum + matches;
|
|
160
|
+
}, 0);
|
|
161
|
+
// Bonus for file ref matches
|
|
162
|
+
const fileMatches = page.fileRefs.filter(ref => prContext.files.some(f => f.includes(ref) || ref.includes(f))).length;
|
|
163
|
+
return { page, score: score + fileMatches * 3 };
|
|
164
|
+
});
|
|
165
|
+
// Sort by score and return top N
|
|
166
|
+
return scored
|
|
167
|
+
.filter(s => s.score > 0)
|
|
168
|
+
.sort((a, b) => b.score - a.score)
|
|
169
|
+
.slice(0, maxPages)
|
|
170
|
+
.map(s => s.page);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if compaction is needed
|
|
174
|
+
*/
|
|
175
|
+
checkCompaction(projectId, modelMaxTokens) {
|
|
176
|
+
const stats = this.getProjectStats(projectId);
|
|
177
|
+
const check = shouldCompact(stats.tokens, modelMaxTokens);
|
|
178
|
+
check.projectId = projectId;
|
|
179
|
+
return check;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get project stats
|
|
183
|
+
*/
|
|
184
|
+
getProjectStats(projectId) {
|
|
185
|
+
const result = this.db.exec(`SELECT
|
|
186
|
+
COUNT(*) as pages,
|
|
187
|
+
COALESCE(SUM(token_count), 0) as tokens
|
|
188
|
+
FROM project_page_index
|
|
189
|
+
WHERE project_id = ?`, [projectId]);
|
|
190
|
+
if (!result[0] || result[0].values.length === 0) {
|
|
191
|
+
return { pages: 0, tokens: 0 };
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
pages: result[0].values[0][0],
|
|
195
|
+
tokens: result[0].values[0][1],
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Delete project page index
|
|
200
|
+
*/
|
|
201
|
+
deletePageIndex(projectId) {
|
|
202
|
+
this.db.exec(`DELETE FROM project_page_index WHERE project_id = ?`, [projectId]);
|
|
203
|
+
}
|
|
204
|
+
rowToPageChunk(row) {
|
|
205
|
+
const values = row.values[0];
|
|
206
|
+
const columns = row.columns;
|
|
207
|
+
const get = (name) => values[columns.indexOf(name)];
|
|
208
|
+
return {
|
|
209
|
+
id: get('id'),
|
|
210
|
+
projectId: get('project_id'),
|
|
211
|
+
pageNum: get('page_num'),
|
|
212
|
+
totalPages: get('total_pages'),
|
|
213
|
+
content: get('content'),
|
|
214
|
+
topics: JSON.parse(get('topics') || '[]'),
|
|
215
|
+
fileRefs: JSON.parse(get('file_refs') || '[]'),
|
|
216
|
+
tokenCount: get('token_count'),
|
|
217
|
+
prevPageId: get('prev_page_id'),
|
|
218
|
+
nextPageId: get('next_page_id'),
|
|
219
|
+
createdAt: get('created_at'),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
rowsToPageChunks(rows) {
|
|
223
|
+
return rows.values.map((_, idx) => {
|
|
224
|
+
const singleRow = { columns: rows.columns, values: [rows.values[idx]] };
|
|
225
|
+
return this.rowToPageChunk(singleRow);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/memory/pageindex/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAW3C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAEhF,MAAM,OAAO,uBAAuB;IAC1B,EAAE,CAAqB;IAE/B,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAwB,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,mBAAmB;QACnB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;KAiBZ,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;KAGZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAe;QACtD,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAC3B,uEAAuE,EACvE,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,IAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,GAAG,CAAC,EAAE,CAAC;YAC9C,wBAAwB;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,gBAAgB;QAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtD,eAAe;QACf,MAAM,SAAS,GAAG;;;;KAIjB,CAAC;QAEF,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;gBACrC,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,OAAO;gBACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC9B,KAAK,CAAC,UAAU;aACjB,CAAC,CAAC;YAEH,qBAAqB;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;QACjD,CAAC;QAED,aAAa;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE9D,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,+EAA+E,EAC/E,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,SAAiB,EAAE,OAAe;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CACzB,wEAAwE,EACxE,CAAC,SAAS,EAAE,OAAO,CAAC,CACrB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAA2B;QACpC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,yBAAyB,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CACzB;;yBAEmB,EACnB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAChC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEpE,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,aAAa;YACb,SAAS;YACT,cAAc,EAAE,KAAK,CAAC,MAAM;YAC5B,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAA8B;QACrC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAEzD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YACrD,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YACrD,KAAK,aAAa,CAAC,KAAK;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACpC,KAAK,aAAa,CAAC,IAAI;gBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC9C,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAA4B;QAC5C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnD,iCAAiC;QACjC,MAAM,QAAQ,GAAG;YACf,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7C,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACnD,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC7C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5B,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CACzB,yEAAyE,EACzE,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/C,iCAAiC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAClE,OAAO,GAAG,GAAG,OAAO,CAAC;YACvB,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,6BAA6B;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC,MAAM,CAAC;YAET,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB,EAAE,cAAsB;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC1D,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CACzB;;;;4BAIsB,EACtB,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW;YACvC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,qDAAqD,EACrD,CAAC,SAAS,CAAC,CACZ,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAA+C;QACpE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5D,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;YACvB,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;YACtC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAW;YAClC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAW;YACxC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW;YACjC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,QAAQ,CAAY,IAAI,IAAI,CAAC;YACrD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,WAAW,CAAY,IAAI,IAAI,CAAC;YAC1D,UAAU,EAAE,GAAG,CAAC,aAAa,CAAW;YACxC,UAAU,EAAE,GAAG,CAAC,cAAc,CAAuB;YACrD,UAAU,EAAE,GAAG,CAAC,cAAc,CAAuB;YACrD,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;SACvC,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,IAAgD;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YAChC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex for GHAGGA Project Memory
|
|
3
|
+
*
|
|
4
|
+
* Enables navigable access to large project memories for small context models.
|
|
5
|
+
* Adapts MCP-LLM-Bridge PageIndex pattern for GHAGGA's sql.js architecture.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProjectPageChunk {
|
|
8
|
+
id?: number;
|
|
9
|
+
projectId: string;
|
|
10
|
+
pageNum: number;
|
|
11
|
+
totalPages: number;
|
|
12
|
+
content: string;
|
|
13
|
+
topics: string[];
|
|
14
|
+
fileRefs: string[];
|
|
15
|
+
tokenCount: number;
|
|
16
|
+
prevPageId?: number;
|
|
17
|
+
nextPageId?: number;
|
|
18
|
+
createdAt: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ProjectPageIndex {
|
|
21
|
+
projectId: string;
|
|
22
|
+
totalPages: number;
|
|
23
|
+
totalTokens: number;
|
|
24
|
+
createdAt: number;
|
|
25
|
+
lastAccessed: number;
|
|
26
|
+
}
|
|
27
|
+
export interface PageContextRequest {
|
|
28
|
+
projectId: string;
|
|
29
|
+
pageNum: number;
|
|
30
|
+
windowSize: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PageContextResponse {
|
|
33
|
+
currentPage: ProjectPageChunk;
|
|
34
|
+
previousPages: ProjectPageChunk[];
|
|
35
|
+
nextPages: ProjectPageChunk[];
|
|
36
|
+
totalInContext: number;
|
|
37
|
+
totalTokens: number;
|
|
38
|
+
}
|
|
39
|
+
export declare enum PageDirection {
|
|
40
|
+
NEXT = "next",
|
|
41
|
+
PREV = "prev",
|
|
42
|
+
FIRST = "first",
|
|
43
|
+
LAST = "last"
|
|
44
|
+
}
|
|
45
|
+
export interface PageNavigationRequest {
|
|
46
|
+
projectId: string;
|
|
47
|
+
currentPageNum: number;
|
|
48
|
+
direction: PageDirection;
|
|
49
|
+
}
|
|
50
|
+
export interface CompactionCheck {
|
|
51
|
+
currentTokens: number;
|
|
52
|
+
maxTokens: number;
|
|
53
|
+
projectId: string;
|
|
54
|
+
shouldCompact: boolean;
|
|
55
|
+
safeToProceed: boolean;
|
|
56
|
+
suggestedAction: 'compact' | 'paginate' | 'none';
|
|
57
|
+
}
|
|
58
|
+
export interface RelevantPageRequest {
|
|
59
|
+
projectId: string;
|
|
60
|
+
prContext: {
|
|
61
|
+
title: string;
|
|
62
|
+
description: string;
|
|
63
|
+
files: string[];
|
|
64
|
+
};
|
|
65
|
+
maxPages: number;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/pageindex/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex for GHAGGA Project Memory
|
|
3
|
+
*
|
|
4
|
+
* Enables navigable access to large project memories for small context models.
|
|
5
|
+
* Adapts MCP-LLM-Bridge PageIndex pattern for GHAGGA's sql.js architecture.
|
|
6
|
+
*/
|
|
7
|
+
export var PageDirection;
|
|
8
|
+
(function (PageDirection) {
|
|
9
|
+
PageDirection["NEXT"] = "next";
|
|
10
|
+
PageDirection["PREV"] = "prev";
|
|
11
|
+
PageDirection["FIRST"] = "first";
|
|
12
|
+
PageDirection["LAST"] = "last";
|
|
13
|
+
})(PageDirection || (PageDirection = {}));
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/memory/pageindex/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,8BAAa,CAAA;AACf,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../src/memory/persist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkC,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../src/memory/persist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkC,YAAY,EAAE,MAAM,aAAa,CAAC;AAwC/F;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
package/dist/memory/persist.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* the same project can benefit from past context.
|
|
7
7
|
*/
|
|
8
8
|
import { stripPrivateData } from './privacy.js';
|
|
9
|
+
import { classifyObservation } from './taxonomy.js';
|
|
9
10
|
// ─── Helpers ────────────────────────────────────────────────────
|
|
10
11
|
/**
|
|
11
12
|
* Map a finding's category to an observation type.
|
|
@@ -63,8 +64,11 @@ export async function persistReviewObservations(storage, project, prNumber, resu
|
|
|
63
64
|
const sanitizedSuggestion = finding.suggestion
|
|
64
65
|
? stripPrivateData(finding.suggestion)
|
|
65
66
|
: undefined;
|
|
67
|
+
const observationTitle = `${finding.category}: ${sanitizedMessage.slice(0, 80)}`;
|
|
68
|
+
const taxonomyTag = classifyObservation(sanitizedMessage, observationTitle);
|
|
69
|
+
const categoryLabel = taxonomyTag.category.toUpperCase().replace('_', ' ');
|
|
66
70
|
const content = [
|
|
67
|
-
`[${finding.severity.toUpperCase()}] ${finding.category}`,
|
|
71
|
+
`[${categoryLabel}] [${finding.severity.toUpperCase()}] ${finding.category}`,
|
|
68
72
|
`File: ${finding.file}${finding.line ? `:${finding.line}` : ''}`,
|
|
69
73
|
`Issue: ${sanitizedMessage}`,
|
|
70
74
|
sanitizedSuggestion ? `Fix: ${sanitizedSuggestion}` : '',
|
|
@@ -75,7 +79,7 @@ export async function persistReviewObservations(storage, project, prNumber, resu
|
|
|
75
79
|
sessionId: session.id,
|
|
76
80
|
project,
|
|
77
81
|
type: findingToObservationType(finding),
|
|
78
|
-
title:
|
|
82
|
+
title: `[${categoryLabel}] ${observationTitle}`,
|
|
79
83
|
content,
|
|
80
84
|
filePaths: [finding.file],
|
|
81
85
|
severity: finding.severity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../src/memory/persist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../src/memory/persist.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/sqlite.d.ts
CHANGED
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
* environments (CLI, GitHub Action).
|
|
7
7
|
*/
|
|
8
8
|
import { type Database } from 'fts5-sql-bundle';
|
|
9
|
-
import
|
|
9
|
+
import { type EmbeddingProvider } from '../embed.js';
|
|
10
|
+
import type { AuthorTrustScore, ListObservationsOptions, MemoryObservationDetail, MemoryObservationRow, MemoryStats, MemoryStorage, NegativeExample } from '../types.js';
|
|
10
11
|
import { type DecayConfig } from '../types.js';
|
|
12
|
+
import { ProjectPageIndexService } from './pageindex/service.js';
|
|
11
13
|
/**
|
|
12
14
|
* Extended Database interface — fts5-sql-bundle types omit the params overload
|
|
13
15
|
* for exec(), but the runtime (sql.js core) supports it.
|
|
14
16
|
*/
|
|
15
17
|
interface DatabaseWithParams extends Database {
|
|
16
|
-
exec(sql: string, params?: (string | number | null)[]): Array<{
|
|
18
|
+
exec(sql: string, params?: (string | number | Buffer | null)[]): Array<{
|
|
17
19
|
columns: string[];
|
|
18
20
|
values: unknown[][];
|
|
19
21
|
}>;
|
|
@@ -23,18 +25,32 @@ export interface SqliteMemoryStorageOptions {
|
|
|
23
25
|
dedupWindowMinutes?: number;
|
|
24
26
|
/** Decay configuration for memory strength. Uses defaults when not provided. */
|
|
25
27
|
decayConfig?: DecayConfig;
|
|
28
|
+
/**
|
|
29
|
+
* Optional embedding provider for hybrid search.
|
|
30
|
+
* When provided, embeddings are stored on save and hybrid BM25+semantic scoring
|
|
31
|
+
* is used for search. When undefined, falls back to keyword-only search.
|
|
32
|
+
*/
|
|
33
|
+
embeddingProvider?: EmbeddingProvider;
|
|
26
34
|
}
|
|
27
35
|
export declare class SqliteMemoryStorage implements MemoryStorage {
|
|
28
36
|
private db;
|
|
29
37
|
private filePath;
|
|
30
38
|
private dedupWindowMinutes;
|
|
31
39
|
private decayConfig;
|
|
40
|
+
private embeddingProvider;
|
|
41
|
+
private pageIndex;
|
|
32
42
|
private constructor();
|
|
33
43
|
/**
|
|
34
44
|
* Expose the underlying database for the versioning layer.
|
|
35
45
|
* Only used by MemoryVersioning — not part of the MemoryStorage interface.
|
|
36
46
|
*/
|
|
37
47
|
getDatabase(): DatabaseWithParams;
|
|
48
|
+
/**
|
|
49
|
+
* Get the PageIndex service for paginated project memory access.
|
|
50
|
+
* Enables small context models (4K-8K tokens) to handle large project memories
|
|
51
|
+
* without compaction loops.
|
|
52
|
+
*/
|
|
53
|
+
getPageIndex(): ProjectPageIndexService;
|
|
38
54
|
/**
|
|
39
55
|
* Async factory — handles WASM initialization and file loading.
|
|
40
56
|
* If filePath exists, loads the existing DB. Otherwise, creates a fresh one.
|
|
@@ -44,6 +60,19 @@ export declare class SqliteMemoryStorage implements MemoryStorage {
|
|
|
44
60
|
limit?: number;
|
|
45
61
|
type?: string;
|
|
46
62
|
}): Promise<MemoryObservationRow[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Hybrid BM25 + semantic search (70% semantic, 30% keyword).
|
|
65
|
+
* Only called when embeddingProvider is set.
|
|
66
|
+
*
|
|
67
|
+
* Strategy:
|
|
68
|
+
* 1. Run FTS5 to get keyword candidates (up to limit * 5 to have enough for re-ranking)
|
|
69
|
+
* 2. Embed the query
|
|
70
|
+
* 3. For each candidate, deserialize its stored embedding and compute cosine similarity
|
|
71
|
+
* 4. Candidates without embeddings get cosine_sim = 0 (keyword-only score still applies)
|
|
72
|
+
* 5. Combine: final_score = 0.7 * cosine_sim + 0.3 * normalized_bm25
|
|
73
|
+
* 6. Sort descending, apply decay filter, return top-k
|
|
74
|
+
*/
|
|
75
|
+
private _hybridSearch;
|
|
47
76
|
saveObservation(data: {
|
|
48
77
|
sessionId?: number;
|
|
49
78
|
project: string;
|
|
@@ -54,6 +83,12 @@ export declare class SqliteMemoryStorage implements MemoryStorage {
|
|
|
54
83
|
filePaths?: string[];
|
|
55
84
|
severity?: string;
|
|
56
85
|
}): Promise<MemoryObservationRow>;
|
|
86
|
+
/**
|
|
87
|
+
* Compute embedding buffer for storage.
|
|
88
|
+
* Returns the serialized float32 Buffer when embeddingProvider is available,
|
|
89
|
+
* or null (no-op) when it is not — enabling graceful degradation.
|
|
90
|
+
*/
|
|
91
|
+
private _computeEmbeddingBuffer;
|
|
57
92
|
createSession(data: {
|
|
58
93
|
project: string;
|
|
59
94
|
prNumber?: number;
|
|
@@ -69,6 +104,38 @@ export declare class SqliteMemoryStorage implements MemoryStorage {
|
|
|
69
104
|
clearObservations(options?: {
|
|
70
105
|
project?: string;
|
|
71
106
|
}): Promise<number>;
|
|
107
|
+
/**
|
|
108
|
+
* Retrieve a cached author trust score.
|
|
109
|
+
* Returns null when the author has no entry in the cache.
|
|
110
|
+
*/
|
|
111
|
+
getTrustScore(author: string): AuthorTrustScore | null;
|
|
112
|
+
/**
|
|
113
|
+
* Insert or replace an author trust score in the cache.
|
|
114
|
+
*/
|
|
115
|
+
upsertTrustScore(score: AuthorTrustScore): void;
|
|
116
|
+
/**
|
|
117
|
+
* Persist a dismissed finding as a negative example.
|
|
118
|
+
* Uses INSERT OR REPLACE to make saves idempotent.
|
|
119
|
+
*/
|
|
120
|
+
saveNegativeExample(example: NegativeExample & {
|
|
121
|
+
filePath?: string;
|
|
122
|
+
}): void;
|
|
123
|
+
/**
|
|
124
|
+
* Retrieve all negative examples scoped to a file path.
|
|
125
|
+
* Uses context_hash (SHA256 of filePath) as the lookup key.
|
|
126
|
+
*/
|
|
127
|
+
getNegativeExamplesForFile(filePath: string): NegativeExample[];
|
|
128
|
+
/**
|
|
129
|
+
* Retrieve all stored negative examples (for listing/management).
|
|
130
|
+
*/
|
|
131
|
+
getAllNegativeExamples(): (NegativeExample & {
|
|
132
|
+
filePath?: string;
|
|
133
|
+
})[];
|
|
134
|
+
/**
|
|
135
|
+
* Delete a negative example by its finding hash.
|
|
136
|
+
* Returns true if a row was deleted, false otherwise.
|
|
137
|
+
*/
|
|
138
|
+
deleteNegativeExample(findingHash: string): boolean;
|
|
72
139
|
close(): Promise<void>;
|
|
73
140
|
}
|
|
74
141
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAwB,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQjE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,EACX,aAAa,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
|