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,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Latent-space communication — compress inter-agent messages to reduce
|
|
3
|
+
* token consumption in multi-agent review modes.
|
|
4
|
+
*
|
|
5
|
+
* Instead of passing full specialist text (~5K tokens) to synthesis,
|
|
6
|
+
* extracts structured findings + compact summary (~1.5K tokens).
|
|
7
|
+
* Zero extra LLM calls — pure extraction + template merge.
|
|
8
|
+
*/
|
|
9
|
+
export interface StructuredFinding {
|
|
10
|
+
severity: 'critical' | 'major' | 'minor' | 'info';
|
|
11
|
+
description: string;
|
|
12
|
+
file?: string;
|
|
13
|
+
line?: number;
|
|
14
|
+
suggestion?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CompressedOutput {
|
|
17
|
+
agentName: string;
|
|
18
|
+
summary: string;
|
|
19
|
+
findings: StructuredFinding[];
|
|
20
|
+
tokenEstimate: number;
|
|
21
|
+
originalTokens: number;
|
|
22
|
+
}
|
|
23
|
+
export interface LatentMergeResult {
|
|
24
|
+
mergedPrompt: string;
|
|
25
|
+
totalTokensSaved: number;
|
|
26
|
+
agentCount: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function estimateTokens(text: string): number;
|
|
29
|
+
export declare function compressAgentOutput(agentName: string, rawOutput: string, budgetTokens?: number): CompressedOutput;
|
|
30
|
+
export declare function mergeCompressed(outputs: CompressedOutput[]): LatentMergeResult;
|
|
31
|
+
//# sourceMappingURL=latent-comms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latent-comms.d.ts","sourceRoot":"","sources":["../src/latent-comms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAoFD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CA0ClB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CA4B9E"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Latent-space communication — compress inter-agent messages to reduce
|
|
3
|
+
* token consumption in multi-agent review modes.
|
|
4
|
+
*
|
|
5
|
+
* Instead of passing full specialist text (~5K tokens) to synthesis,
|
|
6
|
+
* extracts structured findings + compact summary (~1.5K tokens).
|
|
7
|
+
* Zero extra LLM calls — pure extraction + template merge.
|
|
8
|
+
*/
|
|
9
|
+
// ── Token estimation ──
|
|
10
|
+
export function estimateTokens(text) {
|
|
11
|
+
return Math.floor(text.length / 4);
|
|
12
|
+
}
|
|
13
|
+
// ── Finding extraction ──
|
|
14
|
+
const SEVERITY_PATTERNS = [
|
|
15
|
+
{ severity: 'critical', pattern: /\*\*(?:critical|security|sql injection|rce)/i },
|
|
16
|
+
{ severity: 'major', pattern: /\*\*(?:major|missing|bug|error|vulnerability)/i },
|
|
17
|
+
{ severity: 'minor', pattern: /\*\*(?:minor|nit|style|naming|hardcoded)/i },
|
|
18
|
+
];
|
|
19
|
+
const FINDING_RE = /^[-*]\s+\*\*(.+?)\*\*(?:\s+in\s+`([^`]+?)(?::(\d+))?`)?\s*[—–-]\s*(.+)/;
|
|
20
|
+
const SUGGESTION_RE = /^\s+Suggestion:\s*(.+)/;
|
|
21
|
+
function parseFinding(line, nextLine) {
|
|
22
|
+
const match = FINDING_RE.exec(line);
|
|
23
|
+
if (!match)
|
|
24
|
+
return null;
|
|
25
|
+
const title = match[1]?.trim();
|
|
26
|
+
const file = match[2] ?? undefined;
|
|
27
|
+
const lineNum = match[3] ? parseInt(match[3], 10) : undefined;
|
|
28
|
+
const description = match[4]?.trim();
|
|
29
|
+
const suggestion = nextLine ? SUGGESTION_RE.exec(nextLine)?.[1]?.trim() : undefined;
|
|
30
|
+
// Determine severity from title
|
|
31
|
+
let severity = 'info';
|
|
32
|
+
for (const { severity: sev, pattern } of SEVERITY_PATTERNS) {
|
|
33
|
+
if (pattern.test(`**${title}`)) {
|
|
34
|
+
severity = sev;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
severity,
|
|
40
|
+
description: `${title}: ${description}`,
|
|
41
|
+
file,
|
|
42
|
+
line: lineNum,
|
|
43
|
+
suggestion,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function extractFindings(text) {
|
|
47
|
+
const lines = text.split('\n');
|
|
48
|
+
const findings = [];
|
|
49
|
+
for (let i = 0; i < lines.length; i++) {
|
|
50
|
+
const finding = parseFinding(lines[i], lines[i + 1]);
|
|
51
|
+
if (finding) {
|
|
52
|
+
findings.push(finding);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return findings;
|
|
56
|
+
}
|
|
57
|
+
function extractSummary(text) {
|
|
58
|
+
// Look for explicit summary section
|
|
59
|
+
const summaryMatch = text.match(/###?\s*Summary\n([\s\S]*?)(?=\n###?\s|\n$|$)/i);
|
|
60
|
+
if (summaryMatch) {
|
|
61
|
+
return summaryMatch[1]?.trim();
|
|
62
|
+
}
|
|
63
|
+
// Fallback: first non-heading paragraph
|
|
64
|
+
const lines = text.split('\n');
|
|
65
|
+
for (const line of lines) {
|
|
66
|
+
const trimmed = line.trim();
|
|
67
|
+
if (trimmed &&
|
|
68
|
+
!trimmed.startsWith('#') &&
|
|
69
|
+
!trimmed.startsWith('-') &&
|
|
70
|
+
!trimmed.startsWith('*')) {
|
|
71
|
+
return trimmed.slice(0, 200);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return '';
|
|
75
|
+
}
|
|
76
|
+
// ── Compression ──
|
|
77
|
+
export function compressAgentOutput(agentName, rawOutput, budgetTokens) {
|
|
78
|
+
const originalTokens = estimateTokens(rawOutput);
|
|
79
|
+
if (!rawOutput.trim()) {
|
|
80
|
+
return {
|
|
81
|
+
agentName,
|
|
82
|
+
summary: '',
|
|
83
|
+
findings: [],
|
|
84
|
+
tokenEstimate: 0,
|
|
85
|
+
originalTokens: 0,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const findings = extractFindings(rawOutput);
|
|
89
|
+
const summary = extractSummary(rawOutput);
|
|
90
|
+
// Build compressed representation
|
|
91
|
+
let compressed = `[${agentName}] ${summary}`;
|
|
92
|
+
for (const f of findings) {
|
|
93
|
+
const loc = f.file ? ` (${f.file}${f.line ? `:${f.line}` : ''})` : '';
|
|
94
|
+
compressed += `\n- [${f.severity}]${loc} ${f.description}`;
|
|
95
|
+
if (f.suggestion) {
|
|
96
|
+
compressed += ` → ${f.suggestion}`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
let tokenEstimate = estimateTokens(compressed);
|
|
100
|
+
// Truncate if over budget
|
|
101
|
+
if (budgetTokens && tokenEstimate > budgetTokens) {
|
|
102
|
+
const charBudget = budgetTokens * 4;
|
|
103
|
+
compressed = compressed.slice(0, charBudget);
|
|
104
|
+
tokenEstimate = budgetTokens;
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
agentName,
|
|
108
|
+
summary,
|
|
109
|
+
findings,
|
|
110
|
+
tokenEstimate,
|
|
111
|
+
originalTokens,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// ── Merge ──
|
|
115
|
+
export function mergeCompressed(outputs) {
|
|
116
|
+
if (outputs.length === 0) {
|
|
117
|
+
return { mergedPrompt: '', totalTokensSaved: 0, agentCount: 0 };
|
|
118
|
+
}
|
|
119
|
+
const sections = [];
|
|
120
|
+
let totalOriginal = 0;
|
|
121
|
+
for (const output of outputs) {
|
|
122
|
+
totalOriginal += output.originalTokens;
|
|
123
|
+
let section = `### ${output.agentName}\n${output.summary}`;
|
|
124
|
+
for (const f of output.findings) {
|
|
125
|
+
const loc = f.file ? ` (${f.file}${f.line ? `:${f.line}` : ''})` : '';
|
|
126
|
+
section += `\n- [${f.severity}]${loc} ${f.description}`;
|
|
127
|
+
}
|
|
128
|
+
sections.push(section);
|
|
129
|
+
}
|
|
130
|
+
const mergedPrompt = sections.join('\n\n');
|
|
131
|
+
const mergedTokens = estimateTokens(mergedPrompt);
|
|
132
|
+
const totalTokensSaved = totalOriginal - mergedTokens;
|
|
133
|
+
return {
|
|
134
|
+
mergedPrompt,
|
|
135
|
+
totalTokensSaved: Math.max(0, totalTokensSaved),
|
|
136
|
+
agentCount: outputs.length,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=latent-comms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latent-comms.js","sourceRoot":"","sources":["../src/latent-comms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Chunker for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Chunks project memory by topics and extracts file references.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProjectPageChunk, CompactionCheck } from './types.js';
|
|
7
|
+
export declare const GHAGGA_CHUNK_CONFIG: {
|
|
8
|
+
maxTokensPerPage: number;
|
|
9
|
+
overlapTokens: number;
|
|
10
|
+
maxTopicLength: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function estimateTokens(text: string): number;
|
|
13
|
+
/**
|
|
14
|
+
* Extract topics from content (headers, emphasized text, file refs)
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractTopics(content: string): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Extract file references from content
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractFileRefs(content: string): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Chunk project memory into pages
|
|
23
|
+
*/
|
|
24
|
+
export declare function chunkProjectMemory(projectId: string, content: string, config?: {
|
|
25
|
+
maxTokensPerPage: number;
|
|
26
|
+
overlapTokens: number;
|
|
27
|
+
maxTopicLength: number;
|
|
28
|
+
}): Omit<ProjectPageChunk, 'id' | 'createdAt'>[];
|
|
29
|
+
/**
|
|
30
|
+
* Check if compaction is needed
|
|
31
|
+
*/
|
|
32
|
+
export declare function shouldCompact(currentTokens: number, modelMaxTokens: number, safetyMargin?: number): CompactionCheck;
|
|
33
|
+
//# sourceMappingURL=chunker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/memory/pageindex/chunker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM;;;;CAAsB,GAC3B,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAoC9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,YAAY,SAAM,GACjB,eAAe,CAajB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Chunker for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Chunks project memory by topics and extracts file references.
|
|
5
|
+
*/
|
|
6
|
+
export const GHAGGA_CHUNK_CONFIG = {
|
|
7
|
+
maxTokensPerPage: 1500,
|
|
8
|
+
overlapTokens: 200,
|
|
9
|
+
maxTopicLength: 50,
|
|
10
|
+
};
|
|
11
|
+
export function estimateTokens(text) {
|
|
12
|
+
return Math.ceil(text.length / 4);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract topics from content (headers, emphasized text, file refs)
|
|
16
|
+
*/
|
|
17
|
+
export function extractTopics(content) {
|
|
18
|
+
const topics = [];
|
|
19
|
+
// Headers (### Topic)
|
|
20
|
+
const headers = content.match(/^#{1,3}\s+(.+)$/gm);
|
|
21
|
+
if (headers) {
|
|
22
|
+
headers.slice(0, 5).forEach(h => {
|
|
23
|
+
topics.push(h.replace(/^#+\s+/, '').slice(0, 50));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
// Bold text (**topic**)
|
|
27
|
+
const bold = content.match(/\*\*(.+?)\*\*/g);
|
|
28
|
+
if (bold && topics.length < 10) {
|
|
29
|
+
bold.slice(0, 3).forEach(b => {
|
|
30
|
+
const topic = b.replace(/\*\*/g, '').slice(0, 50);
|
|
31
|
+
if (!topics.includes(topic))
|
|
32
|
+
topics.push(topic);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return topics.slice(0, 8);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract file references from content
|
|
39
|
+
*/
|
|
40
|
+
export function extractFileRefs(content) {
|
|
41
|
+
const refs = [];
|
|
42
|
+
// File paths (src/... or **/*.ts)
|
|
43
|
+
const paths = content.match(/(?:src\/|apps\/|packages\/)[\w\/\-]+\.\w+/g);
|
|
44
|
+
if (paths) {
|
|
45
|
+
paths.slice(0, 10).forEach(p => {
|
|
46
|
+
if (!refs.includes(p))
|
|
47
|
+
refs.push(p);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Glob patterns
|
|
51
|
+
const globs = content.match(/\*\*\/\*\.\w+/g);
|
|
52
|
+
if (globs) {
|
|
53
|
+
globs.slice(0, 5).forEach(g => {
|
|
54
|
+
if (!refs.includes(g))
|
|
55
|
+
refs.push(g);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return refs.slice(0, 15);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Chunk project memory into pages
|
|
62
|
+
*/
|
|
63
|
+
export function chunkProjectMemory(projectId, content, config = GHAGGA_CHUNK_CONFIG) {
|
|
64
|
+
const maxChars = config.maxTokensPerPage * 4;
|
|
65
|
+
const overlapChars = config.overlapTokens * 4;
|
|
66
|
+
const chunks = [];
|
|
67
|
+
let pos = 0;
|
|
68
|
+
while (pos < content.length) {
|
|
69
|
+
let end = Math.min(pos + maxChars, content.length);
|
|
70
|
+
if (end < content.length) {
|
|
71
|
+
// Try to break at section boundary
|
|
72
|
+
const sectionBreak = content.lastIndexOf('\n\n## ', end);
|
|
73
|
+
if (sectionBreak > pos + maxChars * 0.5) {
|
|
74
|
+
end = sectionBreak + 1;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// Try paragraph
|
|
78
|
+
const para = content.lastIndexOf('\n\n', end);
|
|
79
|
+
if (para > pos + maxChars * 0.7)
|
|
80
|
+
end = para + 2;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
chunks.push(content.slice(pos, end).trim());
|
|
84
|
+
pos = Math.max(pos + 1, end - overlapChars);
|
|
85
|
+
}
|
|
86
|
+
// Create page chunks with metadata
|
|
87
|
+
return chunks.map((chunk, idx) => ({
|
|
88
|
+
projectId,
|
|
89
|
+
pageNum: idx + 1,
|
|
90
|
+
totalPages: chunks.length,
|
|
91
|
+
content: chunk,
|
|
92
|
+
topics: extractTopics(chunk),
|
|
93
|
+
fileRefs: extractFileRefs(chunk),
|
|
94
|
+
tokenCount: estimateTokens(chunk),
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if compaction is needed
|
|
99
|
+
*/
|
|
100
|
+
export function shouldCompact(currentTokens, modelMaxTokens, safetyMargin = 0.3) {
|
|
101
|
+
const threshold = modelMaxTokens * (1 - safetyMargin);
|
|
102
|
+
const shouldCompact = currentTokens > threshold;
|
|
103
|
+
return {
|
|
104
|
+
currentTokens,
|
|
105
|
+
maxTokens: modelMaxTokens,
|
|
106
|
+
projectId: '',
|
|
107
|
+
shouldCompact,
|
|
108
|
+
safeToProceed: !shouldCompact,
|
|
109
|
+
suggestedAction: shouldCompact ? 'paginate' : 'none',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=chunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/memory/pageindex/chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Usage Example for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates how to use ProjectPageIndexService in review workflows.
|
|
5
|
+
*/
|
|
6
|
+
import { ProjectPageIndexService } from './index.js';
|
|
7
|
+
export declare function exampleReviewWorkflow(pageIndex: ProjectPageIndexService, projectId: string, pr: {
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
files: string[];
|
|
11
|
+
}, modelMaxTokens?: number): Promise<{
|
|
12
|
+
context: string;
|
|
13
|
+
tokens: number;
|
|
14
|
+
pagesUsed: number;
|
|
15
|
+
safe: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function exampleCreatePageIndex(pageIndex: ProjectPageIndexService, projectId: string, projectMemory: string): Promise<{
|
|
18
|
+
pages: number;
|
|
19
|
+
tokens: number;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function exampleContextWindow(pageIndex: ProjectPageIndexService, projectId: string, targetPage: number): string;
|
|
22
|
+
//# sourceMappingURL=example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../../src/memory/pageindex/example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAiB,MAAM,YAAY,CAAC;AAGpE,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,uBAAuB,EAClC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,EAC3D,cAAc,GAAE,MAAa;;;;;GAmE9B;AAGD,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,uBAAuB,EAClC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM;;;GAUtB;AAGD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,uBAAuB,EAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,UA2BnB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Usage Example for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates how to use ProjectPageIndexService in review workflows.
|
|
5
|
+
*/
|
|
6
|
+
import { PageDirection } from './index.js';
|
|
7
|
+
// Example: Using PageIndex in a review workflow
|
|
8
|
+
export async function exampleReviewWorkflow(pageIndex, projectId, pr, modelMaxTokens = 4096 // Small model like llama-3.2-3b
|
|
9
|
+
) {
|
|
10
|
+
// Step 1: Check if we need pagination
|
|
11
|
+
const compactionCheck = pageIndex.checkCompaction(projectId, modelMaxTokens);
|
|
12
|
+
if (compactionCheck.shouldCompact) {
|
|
13
|
+
console.log(`⚠️ Project memory ${compactionCheck.currentTokens} tokens exceeds safe limit for ${modelMaxTokens} model`);
|
|
14
|
+
console.log(`💡 Using PageIndex to paginate into manageable chunks`);
|
|
15
|
+
}
|
|
16
|
+
// Step 2: Find relevant pages based on PR context
|
|
17
|
+
console.log('🔍 Finding relevant pages for PR context...');
|
|
18
|
+
const relevantPages = pageIndex.findRelevantPages({
|
|
19
|
+
projectId,
|
|
20
|
+
prContext: {
|
|
21
|
+
title: pr.title,
|
|
22
|
+
description: pr.description,
|
|
23
|
+
files: pr.files,
|
|
24
|
+
},
|
|
25
|
+
maxPages: 3, // Only get top 3 most relevant pages
|
|
26
|
+
});
|
|
27
|
+
console.log(`📄 Found ${relevantPages.length} relevant pages`);
|
|
28
|
+
// Step 3: Build context from relevant pages
|
|
29
|
+
let context = '';
|
|
30
|
+
let totalTokens = 0;
|
|
31
|
+
for (const page of relevantPages) {
|
|
32
|
+
// Check if adding this page would exceed limit
|
|
33
|
+
if (totalTokens + page.tokenCount > modelMaxTokens * 0.6) {
|
|
34
|
+
console.log(`⚠️ Stopping at ${totalTokens} tokens to leave room for response`);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
context += `\n\n--- Page ${page.pageNum}/${page.totalPages} ---\n`;
|
|
38
|
+
context += `Topics: ${page.topics.join(', ')}\n`;
|
|
39
|
+
context += page.content;
|
|
40
|
+
totalTokens += page.tokenCount;
|
|
41
|
+
}
|
|
42
|
+
console.log(`📊 Total context: ${totalTokens} tokens from ${relevantPages.length} pages`);
|
|
43
|
+
console.log(`✅ Safe to proceed: ${totalTokens < modelMaxTokens * 0.7}`);
|
|
44
|
+
// Step 4: If we need more context, navigate to adjacent pages
|
|
45
|
+
if (relevantPages.length > 0) {
|
|
46
|
+
const lastPage = relevantPages[relevantPages.length - 1];
|
|
47
|
+
if (lastPage.pageNum < lastPage.totalPages) {
|
|
48
|
+
const nextPage = pageIndex.navigate({
|
|
49
|
+
projectId,
|
|
50
|
+
currentPageNum: lastPage.pageNum,
|
|
51
|
+
direction: PageDirection.NEXT,
|
|
52
|
+
});
|
|
53
|
+
if (nextPage) {
|
|
54
|
+
console.log(`➡️ Can navigate to page ${nextPage.pageNum} if needed`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
context,
|
|
60
|
+
tokens: totalTokens,
|
|
61
|
+
pagesUsed: relevantPages.length,
|
|
62
|
+
safe: totalTokens < modelMaxTokens * 0.7,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Example: Creating page index for large project
|
|
66
|
+
export async function exampleCreatePageIndex(pageIndex, projectId, projectMemory) {
|
|
67
|
+
console.log('📚 Creating PageIndex for large project memory...');
|
|
68
|
+
const result = await pageIndex.createPageIndex(projectId, projectMemory);
|
|
69
|
+
console.log(`✅ Created ${result.pages} pages (${result.tokens} tokens total)`);
|
|
70
|
+
console.log(`📄 Average ${Math.round(result.tokens / result.pages)} tokens per page`);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
// Example: Reading with context window
|
|
74
|
+
export function exampleContextWindow(pageIndex, projectId, targetPage) {
|
|
75
|
+
console.log(`📖 Reading page ${targetPage} with context window...`);
|
|
76
|
+
const context = pageIndex.getContext({
|
|
77
|
+
projectId,
|
|
78
|
+
pageNum: targetPage,
|
|
79
|
+
windowSize: 1, // Get previous, current, and next page
|
|
80
|
+
});
|
|
81
|
+
console.log(`📄 Context window: ${context.previousPages.length} before, ${context.nextPages.length} after`);
|
|
82
|
+
console.log(`📊 Total in window: ${context.totalInContext} pages (${context.totalTokens} tokens)`);
|
|
83
|
+
// Build full context text
|
|
84
|
+
let fullContext = '';
|
|
85
|
+
for (const page of context.previousPages) {
|
|
86
|
+
fullContext += `\n[Prev Page ${page.pageNum}]\n${page.content.substring(0, 200)}...\n`;
|
|
87
|
+
}
|
|
88
|
+
fullContext += `\n[CURRENT PAGE ${context.currentPage.pageNum}]\n${context.currentPage.content}\n`;
|
|
89
|
+
for (const page of context.nextPages) {
|
|
90
|
+
fullContext += `\n[Next Page ${page.pageNum}]\n${page.content.substring(0, 200)}...\n`;
|
|
91
|
+
}
|
|
92
|
+
return fullContext;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../../src/memory/pageindex/example.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex for GHAGGA Project Memory
|
|
3
|
+
*
|
|
4
|
+
* Exports all PageIndex components for navigable project memory.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './chunker.js';
|
|
8
|
+
export * from './service.js';
|
|
9
|
+
import { ProjectPageIndexService } from './service.js';
|
|
10
|
+
export { ProjectPageIndexService };
|
|
11
|
+
/**
|
|
12
|
+
* Quick factory function
|
|
13
|
+
*/
|
|
14
|
+
export declare function createProjectPageIndex(db: any): ProjectPageIndexService;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/pageindex/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,GAAG,2BAE7C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex for GHAGGA Project Memory
|
|
3
|
+
*
|
|
4
|
+
* Exports all PageIndex components for navigable project memory.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './chunker.js';
|
|
8
|
+
export * from './service.js';
|
|
9
|
+
import { ProjectPageIndexService } from './service.js';
|
|
10
|
+
export { ProjectPageIndexService };
|
|
11
|
+
/**
|
|
12
|
+
* Quick factory function
|
|
13
|
+
*/
|
|
14
|
+
export function createProjectPageIndex(db) {
|
|
15
|
+
return new ProjectPageIndexService(db);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/pageindex/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAO;IAC5C,OAAO,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageIndex Service for GHAGGA
|
|
3
|
+
*
|
|
4
|
+
* Manages paginated project memory using GHAGGA's sql.js database.
|
|
5
|
+
*/
|
|
6
|
+
import type { Database } from 'fts5-sql-bundle';
|
|
7
|
+
import type { ProjectPageChunk, PageContextRequest, PageContextResponse, PageNavigationRequest, CompactionCheck, RelevantPageRequest } from './types.js';
|
|
8
|
+
export declare class ProjectPageIndexService {
|
|
9
|
+
private db;
|
|
10
|
+
constructor(db: Database);
|
|
11
|
+
private initSchema;
|
|
12
|
+
/**
|
|
13
|
+
* Create page index for project memory
|
|
14
|
+
*/
|
|
15
|
+
createPageIndex(projectId: string, content: string): Promise<{
|
|
16
|
+
pages: number;
|
|
17
|
+
tokens: number;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Get a specific page
|
|
21
|
+
*/
|
|
22
|
+
getPage(projectId: string, pageNum: number): ProjectPageChunk | null;
|
|
23
|
+
/**
|
|
24
|
+
* Get context window around a page
|
|
25
|
+
*/
|
|
26
|
+
getContext(request: PageContextRequest): PageContextResponse;
|
|
27
|
+
/**
|
|
28
|
+
* Navigate to adjacent page
|
|
29
|
+
*/
|
|
30
|
+
navigate(request: PageNavigationRequest): ProjectPageChunk | null;
|
|
31
|
+
/**
|
|
32
|
+
* Find pages relevant to PR context
|
|
33
|
+
*/
|
|
34
|
+
findRelevantPages(request: RelevantPageRequest): ProjectPageChunk[];
|
|
35
|
+
/**
|
|
36
|
+
* Check if compaction is needed
|
|
37
|
+
*/
|
|
38
|
+
checkCompaction(projectId: string, modelMaxTokens: number): CompactionCheck;
|
|
39
|
+
/**
|
|
40
|
+
* Get project stats
|
|
41
|
+
*/
|
|
42
|
+
getProjectStats(projectId: string): {
|
|
43
|
+
pages: number;
|
|
44
|
+
tokens: number;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Delete project page index
|
|
48
|
+
*/
|
|
49
|
+
deletePageIndex(projectId: string): void;
|
|
50
|
+
private rowToPageChunk;
|
|
51
|
+
private rowsToPageChunks;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/memory/pageindex/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAcpB,qBAAa,uBAAuB;IAClC,OAAO,CAAC,EAAE,CAAqB;gBAEnB,EAAE,EAAE,QAAQ;IAKxB,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAwDrG;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAapE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB;IAiC5D;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,IAAI;IAkBjE;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,gBAAgB,EAAE;IA4CnE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,eAAe;IAO3E;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAoBrE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOxC,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,gBAAgB;CAMzB"}
|