@soleri/core 2.4.0 → 2.6.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/brain/brain.d.ts +7 -0
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +56 -9
- package/dist/brain/brain.js.map +1 -1
- package/dist/brain/intelligence.d.ts +1 -0
- package/dist/brain/intelligence.d.ts.map +1 -1
- package/dist/brain/intelligence.js +164 -148
- package/dist/brain/intelligence.js.map +1 -1
- package/dist/brain/types.d.ts +2 -2
- package/dist/brain/types.d.ts.map +1 -1
- package/dist/cognee/client.d.ts +3 -0
- package/dist/cognee/client.d.ts.map +1 -1
- package/dist/cognee/client.js +17 -0
- package/dist/cognee/client.js.map +1 -1
- package/dist/cognee/sync-manager.d.ts +94 -0
- package/dist/cognee/sync-manager.d.ts.map +1 -0
- package/dist/cognee/sync-manager.js +293 -0
- package/dist/cognee/sync-manager.js.map +1 -0
- package/dist/control/identity-manager.d.ts +3 -1
- package/dist/control/identity-manager.d.ts.map +1 -1
- package/dist/control/identity-manager.js +49 -51
- package/dist/control/identity-manager.js.map +1 -1
- package/dist/control/intent-router.d.ts +1 -0
- package/dist/control/intent-router.d.ts.map +1 -1
- package/dist/control/intent-router.js +32 -32
- package/dist/control/intent-router.js.map +1 -1
- package/dist/curator/curator.d.ts +9 -1
- package/dist/curator/curator.d.ts.map +1 -1
- package/dist/curator/curator.js +104 -92
- package/dist/curator/curator.js.map +1 -1
- package/dist/errors/classify.d.ts +13 -0
- package/dist/errors/classify.d.ts.map +1 -0
- package/dist/errors/classify.js +97 -0
- package/dist/errors/classify.js.map +1 -0
- package/dist/errors/index.d.ts +6 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/retry.d.ts +40 -0
- package/dist/errors/retry.d.ts.map +1 -0
- package/dist/errors/retry.js +97 -0
- package/dist/errors/retry.js.map +1 -0
- package/dist/errors/types.d.ts +48 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +59 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/governance/governance.d.ts +1 -0
- package/dist/governance/governance.d.ts.map +1 -1
- package/dist/governance/governance.js +51 -68
- package/dist/governance/governance.js.map +1 -1
- package/dist/index.d.ts +26 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/intake/content-classifier.d.ts +14 -0
- package/dist/intake/content-classifier.d.ts.map +1 -0
- package/dist/intake/content-classifier.js +125 -0
- package/dist/intake/content-classifier.js.map +1 -0
- package/dist/intake/dedup-gate.d.ts +17 -0
- package/dist/intake/dedup-gate.d.ts.map +1 -0
- package/dist/intake/dedup-gate.js +66 -0
- package/dist/intake/dedup-gate.js.map +1 -0
- package/dist/intake/intake-pipeline.d.ts +63 -0
- package/dist/intake/intake-pipeline.d.ts.map +1 -0
- package/dist/intake/intake-pipeline.js +373 -0
- package/dist/intake/intake-pipeline.js.map +1 -0
- package/dist/intake/types.d.ts +65 -0
- package/dist/intake/types.d.ts.map +1 -0
- package/dist/intake/types.js +3 -0
- package/dist/intake/types.js.map +1 -0
- package/dist/intelligence/loader.js +1 -1
- package/dist/intelligence/loader.js.map +1 -1
- package/dist/intelligence/types.d.ts +3 -1
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/loop/loop-manager.d.ts +58 -7
- package/dist/loop/loop-manager.d.ts.map +1 -1
- package/dist/loop/loop-manager.js +280 -6
- package/dist/loop/loop-manager.js.map +1 -1
- package/dist/loop/types.d.ts +69 -1
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/types.js +4 -1
- package/dist/loop/types.js.map +1 -1
- package/dist/persistence/index.d.ts +4 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +3 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/postgres-provider.d.ts +46 -0
- package/dist/persistence/postgres-provider.d.ts.map +1 -0
- package/dist/persistence/postgres-provider.js +115 -0
- package/dist/persistence/postgres-provider.js.map +1 -0
- package/dist/persistence/sqlite-provider.d.ts +28 -0
- package/dist/persistence/sqlite-provider.d.ts.map +1 -0
- package/dist/persistence/sqlite-provider.js +97 -0
- package/dist/persistence/sqlite-provider.js.map +1 -0
- package/dist/persistence/types.d.ts +58 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +8 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/planning/gap-analysis.d.ts +47 -4
- package/dist/planning/gap-analysis.d.ts.map +1 -1
- package/dist/planning/gap-analysis.js +190 -13
- package/dist/planning/gap-analysis.js.map +1 -1
- package/dist/planning/gap-types.d.ts +1 -1
- package/dist/planning/gap-types.d.ts.map +1 -1
- package/dist/planning/gap-types.js.map +1 -1
- package/dist/planning/planner.d.ts +277 -9
- package/dist/planning/planner.d.ts.map +1 -1
- package/dist/planning/planner.js +611 -46
- package/dist/planning/planner.js.map +1 -1
- package/dist/playbooks/generic/brainstorming.d.ts +9 -0
- package/dist/playbooks/generic/brainstorming.d.ts.map +1 -0
- package/dist/playbooks/generic/brainstorming.js +105 -0
- package/dist/playbooks/generic/brainstorming.js.map +1 -0
- package/dist/playbooks/generic/code-review.d.ts +11 -0
- package/dist/playbooks/generic/code-review.d.ts.map +1 -0
- package/dist/playbooks/generic/code-review.js +176 -0
- package/dist/playbooks/generic/code-review.js.map +1 -0
- package/dist/playbooks/generic/subagent-execution.d.ts +9 -0
- package/dist/playbooks/generic/subagent-execution.d.ts.map +1 -0
- package/dist/playbooks/generic/subagent-execution.js +68 -0
- package/dist/playbooks/generic/subagent-execution.js.map +1 -0
- package/dist/playbooks/generic/systematic-debugging.d.ts +9 -0
- package/dist/playbooks/generic/systematic-debugging.d.ts.map +1 -0
- package/dist/playbooks/generic/systematic-debugging.js +87 -0
- package/dist/playbooks/generic/systematic-debugging.js.map +1 -0
- package/dist/playbooks/generic/tdd.d.ts +9 -0
- package/dist/playbooks/generic/tdd.d.ts.map +1 -0
- package/dist/playbooks/generic/tdd.js +70 -0
- package/dist/playbooks/generic/tdd.js.map +1 -0
- package/dist/playbooks/generic/verification.d.ts +9 -0
- package/dist/playbooks/generic/verification.d.ts.map +1 -0
- package/dist/playbooks/generic/verification.js +74 -0
- package/dist/playbooks/generic/verification.js.map +1 -0
- package/dist/playbooks/index.d.ts +4 -0
- package/dist/playbooks/index.d.ts.map +1 -0
- package/dist/playbooks/index.js +5 -0
- package/dist/playbooks/index.js.map +1 -0
- package/dist/playbooks/playbook-registry.d.ts +42 -0
- package/dist/playbooks/playbook-registry.d.ts.map +1 -0
- package/dist/playbooks/playbook-registry.js +227 -0
- package/dist/playbooks/playbook-registry.js.map +1 -0
- package/dist/playbooks/playbook-seeder.d.ts +47 -0
- package/dist/playbooks/playbook-seeder.d.ts.map +1 -0
- package/dist/playbooks/playbook-seeder.js +104 -0
- package/dist/playbooks/playbook-seeder.js.map +1 -0
- package/dist/playbooks/playbook-types.d.ts +132 -0
- package/dist/playbooks/playbook-types.d.ts.map +1 -0
- package/dist/playbooks/playbook-types.js +12 -0
- package/dist/playbooks/playbook-types.js.map +1 -0
- package/dist/project/project-registry.d.ts +4 -4
- package/dist/project/project-registry.d.ts.map +1 -1
- package/dist/project/project-registry.js +30 -57
- package/dist/project/project-registry.js.map +1 -1
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +3 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/parser.d.ts +17 -0
- package/dist/prompts/parser.d.ts.map +1 -0
- package/dist/prompts/parser.js +47 -0
- package/dist/prompts/parser.js.map +1 -0
- package/dist/prompts/template-manager.d.ts +25 -0
- package/dist/prompts/template-manager.d.ts.map +1 -0
- package/dist/prompts/template-manager.js +71 -0
- package/dist/prompts/template-manager.js.map +1 -0
- package/dist/prompts/types.d.ts +26 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +5 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/runtime/admin-extra-ops.d.ts +5 -3
- package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
- package/dist/runtime/admin-extra-ops.js +348 -11
- package/dist/runtime/admin-extra-ops.js.map +1 -1
- package/dist/runtime/admin-ops.d.ts.map +1 -1
- package/dist/runtime/admin-ops.js +10 -3
- package/dist/runtime/admin-ops.js.map +1 -1
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +20 -2
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/cognee-sync-ops.d.ts +12 -0
- package/dist/runtime/cognee-sync-ops.d.ts.map +1 -0
- package/dist/runtime/cognee-sync-ops.js +55 -0
- package/dist/runtime/cognee-sync-ops.js.map +1 -0
- package/dist/runtime/core-ops.d.ts +8 -6
- package/dist/runtime/core-ops.d.ts.map +1 -1
- package/dist/runtime/core-ops.js +226 -9
- package/dist/runtime/core-ops.js.map +1 -1
- package/dist/runtime/curator-extra-ops.d.ts +2 -2
- package/dist/runtime/curator-extra-ops.d.ts.map +1 -1
- package/dist/runtime/curator-extra-ops.js +15 -3
- package/dist/runtime/curator-extra-ops.js.map +1 -1
- package/dist/runtime/domain-ops.js +2 -2
- package/dist/runtime/domain-ops.js.map +1 -1
- package/dist/runtime/grading-ops.d.ts.map +1 -1
- package/dist/runtime/grading-ops.js.map +1 -1
- package/dist/runtime/intake-ops.d.ts +14 -0
- package/dist/runtime/intake-ops.d.ts.map +1 -0
- package/dist/runtime/intake-ops.js +110 -0
- package/dist/runtime/intake-ops.js.map +1 -0
- package/dist/runtime/loop-ops.d.ts +5 -4
- package/dist/runtime/loop-ops.d.ts.map +1 -1
- package/dist/runtime/loop-ops.js +84 -12
- package/dist/runtime/loop-ops.js.map +1 -1
- package/dist/runtime/memory-cross-project-ops.d.ts.map +1 -1
- package/dist/runtime/memory-cross-project-ops.js.map +1 -1
- package/dist/runtime/memory-extra-ops.js +5 -5
- package/dist/runtime/memory-extra-ops.js.map +1 -1
- package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
- package/dist/runtime/orchestrate-ops.js +8 -2
- package/dist/runtime/orchestrate-ops.js.map +1 -1
- package/dist/runtime/planning-extra-ops.d.ts +13 -5
- package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
- package/dist/runtime/planning-extra-ops.js +381 -18
- package/dist/runtime/planning-extra-ops.js.map +1 -1
- package/dist/runtime/playbook-ops.d.ts +14 -0
- package/dist/runtime/playbook-ops.d.ts.map +1 -0
- package/dist/runtime/playbook-ops.js +141 -0
- package/dist/runtime/playbook-ops.js.map +1 -0
- package/dist/runtime/project-ops.d.ts.map +1 -1
- package/dist/runtime/project-ops.js +7 -2
- package/dist/runtime/project-ops.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +28 -9
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +8 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-extra-ops.d.ts +4 -2
- package/dist/runtime/vault-extra-ops.d.ts.map +1 -1
- package/dist/runtime/vault-extra-ops.js +383 -4
- package/dist/runtime/vault-extra-ops.js.map +1 -1
- package/dist/vault/playbook.d.ts +34 -0
- package/dist/vault/playbook.d.ts.map +1 -0
- package/dist/vault/playbook.js +60 -0
- package/dist/vault/playbook.js.map +1 -0
- package/dist/vault/vault.d.ts +52 -32
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +300 -181
- package/dist/vault/vault.js.map +1 -1
- package/package.json +9 -3
- package/src/__tests__/admin-extra-ops.test.ts +62 -15
- package/src/__tests__/admin-ops.test.ts +2 -2
- package/src/__tests__/brain.test.ts +3 -3
- package/src/__tests__/cognee-integration.test.ts +80 -0
- package/src/__tests__/cognee-sync-manager.test.ts +103 -0
- package/src/__tests__/core-ops.test.ts +36 -4
- package/src/__tests__/curator-extra-ops.test.ts +24 -2
- package/src/__tests__/errors.test.ts +388 -0
- package/src/__tests__/grading-ops.test.ts +28 -7
- package/src/__tests__/intake-pipeline.test.ts +162 -0
- package/src/__tests__/loop-ops.test.ts +74 -3
- package/src/__tests__/memory-cross-project-ops.test.ts +3 -1
- package/src/__tests__/orchestrate-ops.test.ts +8 -3
- package/src/__tests__/persistence.test.ts +291 -0
- package/src/__tests__/planner.test.ts +99 -21
- package/src/__tests__/planning-extra-ops.test.ts +168 -10
- package/src/__tests__/playbook-registry.test.ts +326 -0
- package/src/__tests__/playbook-seeder.test.ts +163 -0
- package/src/__tests__/playbook.test.ts +389 -0
- package/src/__tests__/postgres-provider.test.ts +58 -0
- package/src/__tests__/project-ops.test.ts +18 -4
- package/src/__tests__/template-manager.test.ts +222 -0
- package/src/__tests__/vault-extra-ops.test.ts +82 -7
- package/src/__tests__/vault.test.ts +184 -0
- package/src/brain/brain.ts +71 -9
- package/src/brain/intelligence.ts +258 -307
- package/src/brain/types.ts +2 -2
- package/src/cognee/client.ts +18 -0
- package/src/cognee/sync-manager.ts +389 -0
- package/src/control/identity-manager.ts +77 -75
- package/src/control/intent-router.ts +55 -57
- package/src/curator/curator.ts +199 -139
- package/src/errors/classify.ts +102 -0
- package/src/errors/index.ts +5 -0
- package/src/errors/retry.ts +132 -0
- package/src/errors/types.ts +81 -0
- package/src/governance/governance.ts +90 -107
- package/src/index.ts +116 -3
- package/src/intake/content-classifier.ts +146 -0
- package/src/intake/dedup-gate.ts +92 -0
- package/src/intake/intake-pipeline.ts +503 -0
- package/src/intake/types.ts +69 -0
- package/src/intelligence/loader.ts +1 -1
- package/src/intelligence/types.ts +3 -1
- package/src/loop/loop-manager.ts +325 -7
- package/src/loop/types.ts +72 -1
- package/src/persistence/index.ts +9 -0
- package/src/persistence/postgres-provider.ts +157 -0
- package/src/persistence/sqlite-provider.ts +115 -0
- package/src/persistence/types.ts +74 -0
- package/src/planning/gap-analysis.ts +286 -17
- package/src/planning/gap-types.ts +4 -1
- package/src/planning/planner.ts +828 -55
- package/src/playbooks/generic/brainstorming.ts +110 -0
- package/src/playbooks/generic/code-review.ts +181 -0
- package/src/playbooks/generic/subagent-execution.ts +74 -0
- package/src/playbooks/generic/systematic-debugging.ts +92 -0
- package/src/playbooks/generic/tdd.ts +75 -0
- package/src/playbooks/generic/verification.ts +79 -0
- package/src/playbooks/index.ts +27 -0
- package/src/playbooks/playbook-registry.ts +284 -0
- package/src/playbooks/playbook-seeder.ts +119 -0
- package/src/playbooks/playbook-types.ts +162 -0
- package/src/project/project-registry.ts +81 -74
- package/src/prompts/index.ts +3 -0
- package/src/prompts/parser.ts +59 -0
- package/src/prompts/template-manager.ts +77 -0
- package/src/prompts/types.ts +28 -0
- package/src/runtime/admin-extra-ops.ts +391 -13
- package/src/runtime/admin-ops.ts +17 -6
- package/src/runtime/capture-ops.ts +25 -6
- package/src/runtime/cognee-sync-ops.ts +63 -0
- package/src/runtime/core-ops.ts +258 -8
- package/src/runtime/curator-extra-ops.ts +17 -3
- package/src/runtime/domain-ops.ts +2 -2
- package/src/runtime/grading-ops.ts +11 -2
- package/src/runtime/intake-ops.ts +126 -0
- package/src/runtime/loop-ops.ts +96 -13
- package/src/runtime/memory-cross-project-ops.ts +1 -2
- package/src/runtime/memory-extra-ops.ts +5 -5
- package/src/runtime/orchestrate-ops.ts +8 -2
- package/src/runtime/planning-extra-ops.ts +414 -23
- package/src/runtime/playbook-ops.ts +169 -0
- package/src/runtime/project-ops.ts +9 -3
- package/src/runtime/runtime.ts +36 -10
- package/src/runtime/types.ts +8 -0
- package/src/runtime/vault-extra-ops.ts +425 -4
- package/src/vault/playbook.ts +87 -0
- package/src/vault/vault.ts +419 -235
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL persistence provider (working stub).
|
|
3
|
+
*
|
|
4
|
+
* Implements PersistenceProvider with pg.Pool. The translateSql() function
|
|
5
|
+
* converts SQLite-style queries to PostgreSQL-compatible syntax.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: PersistenceProvider is synchronous (better-sqlite3 heritage).
|
|
8
|
+
* This provider wraps async pg calls synchronously for interface compliance.
|
|
9
|
+
* Full async provider support is planned for v7.0.
|
|
10
|
+
*/
|
|
11
|
+
import type { PersistenceProvider, PersistenceParams, RunResult, FtsSearchOptions } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Translate SQLite-style SQL to PostgreSQL-compatible SQL.
|
|
14
|
+
*
|
|
15
|
+
* - Converts positional `?` params to `$1, $2, ...`
|
|
16
|
+
* - Converts named `@name` params to `$N` positional, returns ordered values
|
|
17
|
+
* - Replaces `unixepoch()` with `EXTRACT(EPOCH FROM NOW())::integer`
|
|
18
|
+
*/
|
|
19
|
+
export declare function translateSql(sql: string, params?: PersistenceParams): {
|
|
20
|
+
sql: string;
|
|
21
|
+
values: unknown[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* PostgreSQL persistence provider.
|
|
25
|
+
*
|
|
26
|
+
* Uses pg.Pool for connection management. Created via async factory
|
|
27
|
+
* `PostgresPersistenceProvider.create()`.
|
|
28
|
+
*/
|
|
29
|
+
export declare class PostgresPersistenceProvider implements PersistenceProvider {
|
|
30
|
+
readonly backend: "postgres";
|
|
31
|
+
private pool;
|
|
32
|
+
private constructor();
|
|
33
|
+
/**
|
|
34
|
+
* Async factory. Dynamically imports `pg` (optional dependency).
|
|
35
|
+
*/
|
|
36
|
+
static create(connectionString: string, poolSize?: number): Promise<PostgresPersistenceProvider>;
|
|
37
|
+
execSql(sql: string): void;
|
|
38
|
+
run(sql: string, params?: PersistenceParams): RunResult;
|
|
39
|
+
get<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T | undefined;
|
|
40
|
+
all<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T[];
|
|
41
|
+
transaction<T>(fn: () => T): T;
|
|
42
|
+
ftsSearch<T = Record<string, unknown>>(table: string, query: string, options?: FtsSearchOptions): T[];
|
|
43
|
+
ftsRebuild(table: string): void;
|
|
44
|
+
close(): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=postgres-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-provider.d.ts","sourceRoot":"","sources":["../../src/persistence/postgres-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,iBAAiB,GACzB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAsBpC;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,YAAW,mBAAmB;IACrE,QAAQ,CAAC,OAAO,EAAG,UAAU,CAAU;IAEvC,OAAO,CAAC,IAAI,CAAM;IAGlB,OAAO;IAIP;;OAEG;WACU,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAUlG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS;IAQvD,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,GAAG,SAAS;IAQxF,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE;IAQ9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAQ9B,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,CAAC,EAAE;IAcN,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL persistence provider (working stub).
|
|
3
|
+
*
|
|
4
|
+
* Implements PersistenceProvider with pg.Pool. The translateSql() function
|
|
5
|
+
* converts SQLite-style queries to PostgreSQL-compatible syntax.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: PersistenceProvider is synchronous (better-sqlite3 heritage).
|
|
8
|
+
* This provider wraps async pg calls synchronously for interface compliance.
|
|
9
|
+
* Full async provider support is planned for v7.0.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Translate SQLite-style SQL to PostgreSQL-compatible SQL.
|
|
13
|
+
*
|
|
14
|
+
* - Converts positional `?` params to `$1, $2, ...`
|
|
15
|
+
* - Converts named `@name` params to `$N` positional, returns ordered values
|
|
16
|
+
* - Replaces `unixepoch()` with `EXTRACT(EPOCH FROM NOW())::integer`
|
|
17
|
+
*/
|
|
18
|
+
export function translateSql(sql, params) {
|
|
19
|
+
let translated = sql.replace(/unixepoch\(\)/gi, 'EXTRACT(EPOCH FROM NOW())::integer');
|
|
20
|
+
if (!params)
|
|
21
|
+
return { sql: translated, values: [] };
|
|
22
|
+
if (Array.isArray(params)) {
|
|
23
|
+
let idx = 0;
|
|
24
|
+
translated = translated.replace(/\?/g, () => `$${++idx}`);
|
|
25
|
+
return { sql: translated, values: params };
|
|
26
|
+
}
|
|
27
|
+
// Named params: @name -> $N
|
|
28
|
+
const values = [];
|
|
29
|
+
const nameMap = new Map();
|
|
30
|
+
translated = translated.replace(/@(\w+)/g, (_match, name) => {
|
|
31
|
+
if (!nameMap.has(name)) {
|
|
32
|
+
nameMap.set(name, values.length + 1);
|
|
33
|
+
values.push(params[name]);
|
|
34
|
+
}
|
|
35
|
+
return `$${nameMap.get(name)}`;
|
|
36
|
+
});
|
|
37
|
+
return { sql: translated, values };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* PostgreSQL persistence provider.
|
|
41
|
+
*
|
|
42
|
+
* Uses pg.Pool for connection management. Created via async factory
|
|
43
|
+
* `PostgresPersistenceProvider.create()`.
|
|
44
|
+
*/
|
|
45
|
+
export class PostgresPersistenceProvider {
|
|
46
|
+
backend = 'postgres';
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
+
pool;
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
constructor(pool) {
|
|
51
|
+
this.pool = pool;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Async factory. Dynamically imports `pg` (optional dependency).
|
|
55
|
+
*/
|
|
56
|
+
static async create(connectionString, poolSize = 10) {
|
|
57
|
+
const { default: pg } = await import('pg');
|
|
58
|
+
const pool = new pg.Pool({
|
|
59
|
+
connectionString,
|
|
60
|
+
max: poolSize,
|
|
61
|
+
idleTimeoutMillis: 30_000,
|
|
62
|
+
});
|
|
63
|
+
return new PostgresPersistenceProvider(pool);
|
|
64
|
+
}
|
|
65
|
+
execSql(sql) {
|
|
66
|
+
// Sync wrapper -- logs warning in non-test env
|
|
67
|
+
// Full async support in v7.0
|
|
68
|
+
void sql;
|
|
69
|
+
throw new Error('PostgresPersistenceProvider.execSql() is not yet implemented. ' +
|
|
70
|
+
'Use SQLitePersistenceProvider for synchronous operations. ' +
|
|
71
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
72
|
+
}
|
|
73
|
+
run(sql, params) {
|
|
74
|
+
const _translated = translateSql(sql, params);
|
|
75
|
+
throw new Error('PostgresPersistenceProvider.run() is not yet implemented. ' +
|
|
76
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
77
|
+
}
|
|
78
|
+
get(sql, params) {
|
|
79
|
+
const _translated = translateSql(sql, params);
|
|
80
|
+
throw new Error('PostgresPersistenceProvider.get() is not yet implemented. ' +
|
|
81
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
82
|
+
}
|
|
83
|
+
all(sql, params) {
|
|
84
|
+
const _translated = translateSql(sql, params);
|
|
85
|
+
throw new Error('PostgresPersistenceProvider.all() is not yet implemented. ' +
|
|
86
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
87
|
+
}
|
|
88
|
+
transaction(fn) {
|
|
89
|
+
void fn;
|
|
90
|
+
throw new Error('PostgresPersistenceProvider.transaction() is not yet implemented. ' +
|
|
91
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
92
|
+
}
|
|
93
|
+
ftsSearch(table, query, options) {
|
|
94
|
+
const _cols = options?.columns?.length ? options.columns.join(', ') : '*';
|
|
95
|
+
const _limit = options?.limit ?? 50;
|
|
96
|
+
const _offset = options?.offset ?? 0;
|
|
97
|
+
void table;
|
|
98
|
+
void query;
|
|
99
|
+
// Would generate: SELECT cols FROM table WHERE tsvector_col @@ to_tsquery($1)
|
|
100
|
+
// ORDER BY ts_rank(tsvector_col, to_tsquery($1)) DESC LIMIT $2 OFFSET $3
|
|
101
|
+
throw new Error('PostgresPersistenceProvider.ftsSearch() is not yet implemented. ' +
|
|
102
|
+
'Full PostgreSQL support requires async PersistenceProvider (v7.0).');
|
|
103
|
+
}
|
|
104
|
+
ftsRebuild(table) {
|
|
105
|
+
// Would run: REINDEX INDEX idx_{table}_fts
|
|
106
|
+
void table;
|
|
107
|
+
}
|
|
108
|
+
close() {
|
|
109
|
+
if (this.pool) {
|
|
110
|
+
// Fire-and-forget pool end; sync interface constraint
|
|
111
|
+
void this.pool.end();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=postgres-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-provider.js","sourceRoot":"","sources":["../../src/persistence/postgres-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite persistence provider backed by better-sqlite3.
|
|
3
|
+
*
|
|
4
|
+
* Supports both positional (array) and named (object) parameters.
|
|
5
|
+
* Exposes getDatabase() for backward-compat consumers that need the raw db.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import type { PersistenceProvider, PersistenceParams, RunResult, FtsSearchOptions } from './types.js';
|
|
9
|
+
export declare class SQLitePersistenceProvider implements PersistenceProvider {
|
|
10
|
+
readonly backend: "sqlite";
|
|
11
|
+
private db;
|
|
12
|
+
constructor(path?: string);
|
|
13
|
+
execSql(sql: string): void;
|
|
14
|
+
run(sql: string, params?: PersistenceParams): RunResult;
|
|
15
|
+
get<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T | undefined;
|
|
16
|
+
all<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T[];
|
|
17
|
+
transaction<T>(fn: () => T): T;
|
|
18
|
+
ftsSearch<T = Record<string, unknown>>(table: string, query: string, options?: FtsSearchOptions): T[];
|
|
19
|
+
ftsRebuild(table: string): void;
|
|
20
|
+
close(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Escape hatch: get the raw better-sqlite3 Database.
|
|
23
|
+
* Used by modules that need direct db access (ProjectRegistry, BrainIntelligence, etc.).
|
|
24
|
+
* @deprecated Use provider methods instead.
|
|
25
|
+
*/
|
|
26
|
+
getDatabase(): Database.Database;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=sqlite-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-provider.d.ts","sourceRoot":"","sources":["../../src/persistence/sqlite-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtG,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,QAAQ,CAAC,OAAO,EAAG,QAAQ,CAAU;IACrC,OAAO,CAAC,EAAE,CAAoB;gBAElB,IAAI,GAAE,MAAmB;IAUrC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS;IAOvD,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,GAAG,SAAS;IAOxF,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE;IAO9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,CAAC,EAAE;IA0BN,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/B,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,WAAW,IAAI,QAAQ,CAAC,QAAQ;CAMjC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite persistence provider backed by better-sqlite3.
|
|
3
|
+
*
|
|
4
|
+
* Supports both positional (array) and named (object) parameters.
|
|
5
|
+
* Exposes getDatabase() for backward-compat consumers that need the raw db.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import { mkdirSync } from 'node:fs';
|
|
9
|
+
import { dirname } from 'node:path';
|
|
10
|
+
export class SQLitePersistenceProvider {
|
|
11
|
+
backend = 'sqlite';
|
|
12
|
+
db;
|
|
13
|
+
constructor(path = ':memory:') {
|
|
14
|
+
if (path !== ':memory:')
|
|
15
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
16
|
+
this.db = new Database(path);
|
|
17
|
+
if (path !== ':memory:') {
|
|
18
|
+
this.db.pragma('cache_size = -64000'); // 64MB
|
|
19
|
+
this.db.pragma('temp_store = MEMORY');
|
|
20
|
+
this.db.pragma('mmap_size = 268435456'); // 256MB
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
execSql(sql) {
|
|
24
|
+
this.db.exec(sql);
|
|
25
|
+
}
|
|
26
|
+
run(sql, params) {
|
|
27
|
+
const stmt = this.db.prepare(sql);
|
|
28
|
+
if (!params)
|
|
29
|
+
return stmt.run();
|
|
30
|
+
if (Array.isArray(params))
|
|
31
|
+
return stmt.run(...params);
|
|
32
|
+
return stmt.run(params);
|
|
33
|
+
}
|
|
34
|
+
get(sql, params) {
|
|
35
|
+
const stmt = this.db.prepare(sql);
|
|
36
|
+
if (!params)
|
|
37
|
+
return stmt.get();
|
|
38
|
+
if (Array.isArray(params))
|
|
39
|
+
return stmt.get(...params);
|
|
40
|
+
return stmt.get(params);
|
|
41
|
+
}
|
|
42
|
+
all(sql, params) {
|
|
43
|
+
const stmt = this.db.prepare(sql);
|
|
44
|
+
if (!params)
|
|
45
|
+
return stmt.all();
|
|
46
|
+
if (Array.isArray(params))
|
|
47
|
+
return stmt.all(...params);
|
|
48
|
+
return stmt.all(params);
|
|
49
|
+
}
|
|
50
|
+
transaction(fn) {
|
|
51
|
+
return this.db.transaction(fn)();
|
|
52
|
+
}
|
|
53
|
+
ftsSearch(table, query, options) {
|
|
54
|
+
const ftsTable = `${table}_fts`;
|
|
55
|
+
const cols = options?.columns?.length ? options.columns.join(', ') : `${table}.*`;
|
|
56
|
+
const orderBy = options?.orderByRank !== false ? `ORDER BY rank` : '';
|
|
57
|
+
const limit = options?.limit ? `LIMIT ${options.limit}` : '';
|
|
58
|
+
const offset = options?.offset ? `OFFSET ${options.offset}` : '';
|
|
59
|
+
const filterClauses = [];
|
|
60
|
+
const filterParams = [query];
|
|
61
|
+
if (options?.filters) {
|
|
62
|
+
for (const [key, value] of Object.entries(options.filters)) {
|
|
63
|
+
filterClauses.push(`${table}.${key} = ?`);
|
|
64
|
+
filterParams.push(value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const filterSql = filterClauses.length
|
|
68
|
+
? `AND ${filterClauses.join(' AND ')}`
|
|
69
|
+
: '';
|
|
70
|
+
const sql = `SELECT ${cols} FROM ${ftsTable} JOIN ${table} ON ${table}.rowid = ${ftsTable}.rowid WHERE ${ftsTable} MATCH ? ${filterSql} ${orderBy} ${limit} ${offset}`;
|
|
71
|
+
return this.all(sql, filterParams);
|
|
72
|
+
}
|
|
73
|
+
ftsRebuild(table) {
|
|
74
|
+
const ftsTable = `${table}_fts`;
|
|
75
|
+
try {
|
|
76
|
+
this.execSql(`INSERT INTO ${ftsTable}(${ftsTable}) VALUES('rebuild')`);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Graceful degradation: FTS table may not exist
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
close() {
|
|
83
|
+
this.db.close();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Escape hatch: get the raw better-sqlite3 Database.
|
|
87
|
+
* Used by modules that need direct db access (ProjectRegistry, BrainIntelligence, etc.).
|
|
88
|
+
* @deprecated Use provider methods instead.
|
|
89
|
+
*/
|
|
90
|
+
getDatabase() {
|
|
91
|
+
if (process.env.NODE_ENV !== 'test' && process.env.VITEST !== 'true') {
|
|
92
|
+
console.warn('SQLitePersistenceProvider.getDatabase() is deprecated. Use provider methods instead.');
|
|
93
|
+
}
|
|
94
|
+
return this.db;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=sqlite-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-provider.js","sourceRoot":"","sources":["../../src/persistence/sqlite-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract persistence layer.
|
|
3
|
+
*
|
|
4
|
+
* Decouples Vault (and future modules) from any specific database engine.
|
|
5
|
+
* The default implementation is SQLitePersistenceProvider (better-sqlite3).
|
|
6
|
+
*/
|
|
7
|
+
export type PersistenceParams = unknown[] | Record<string, unknown>;
|
|
8
|
+
export interface RunResult {
|
|
9
|
+
changes: number;
|
|
10
|
+
lastInsertRowid: number | bigint;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Minimal database provider interface.
|
|
14
|
+
*
|
|
15
|
+
* Supports both positional (`?`) and named (`@param`) parameter styles.
|
|
16
|
+
* Implementations must handle both array and object params.
|
|
17
|
+
*/
|
|
18
|
+
export interface PersistenceProvider {
|
|
19
|
+
/** Run raw SQL (DDL, multi-statement). No return value. */
|
|
20
|
+
execSql(sql: string): void;
|
|
21
|
+
/** Run a parameterized statement (INSERT, UPDATE, DELETE). */
|
|
22
|
+
run(sql: string, params?: PersistenceParams): RunResult;
|
|
23
|
+
/** Get a single row. Returns undefined if no match. */
|
|
24
|
+
get<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T | undefined;
|
|
25
|
+
/** Get all matching rows. */
|
|
26
|
+
all<T = Record<string, unknown>>(sql: string, params?: PersistenceParams): T[];
|
|
27
|
+
/** Run a function inside a transaction. Commits on success, rolls back on error. */
|
|
28
|
+
transaction<T>(fn: () => T): T;
|
|
29
|
+
/** Identifies the backend engine. */
|
|
30
|
+
readonly backend: 'sqlite' | 'postgres';
|
|
31
|
+
/** Full-text search abstraction. */
|
|
32
|
+
ftsSearch<T = Record<string, unknown>>(table: string, query: string, options?: FtsSearchOptions): T[];
|
|
33
|
+
/** Rebuild FTS index for a table. */
|
|
34
|
+
ftsRebuild(table: string): void;
|
|
35
|
+
/** Close the connection. */
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface PersistenceConfig {
|
|
39
|
+
type: 'sqlite' | 'postgres';
|
|
40
|
+
path: string;
|
|
41
|
+
/** PostgreSQL connection string. */
|
|
42
|
+
connectionString?: string;
|
|
43
|
+
/** PostgreSQL pool size. */
|
|
44
|
+
poolSize?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface FtsSearchOptions {
|
|
47
|
+
/** Columns to search (default: all FTS columns). */
|
|
48
|
+
columns?: string[];
|
|
49
|
+
/** Max results. */
|
|
50
|
+
limit?: number;
|
|
51
|
+
/** Skip N results. */
|
|
52
|
+
offset?: number;
|
|
53
|
+
/** Additional WHERE conditions on the base table. */
|
|
54
|
+
filters?: Record<string, unknown>;
|
|
55
|
+
/** Order by FTS relevance rank (default: true). */
|
|
56
|
+
orderByRank?: boolean;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,8DAA8D;IAC9D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAExD,uDAAuD;IACvD,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,GAAG,SAAS,CAAC;IAEzF,6BAA6B;IAC7B,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC;IAE/E,oFAAoF;IACpF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC;IAExC,oCAAoC;IACpC,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,EAAE,CAAC;IAEtG,qCAAqC;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,23 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Ported from Salvador MCP's plan-gap-content.ts / plan-gap-technical.ts
|
|
2
|
+
* Gap analysis engine for plan grading.
|
|
3
|
+
* Ported from Salvador MCP's plan-gap-content.ts / plan-gap-technical.ts /
|
|
4
|
+
* plan-gap-domain.ts / plan-gap-antipattern.ts.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
+
* 6 built-in passes (always run):
|
|
6
7
|
* 1. Structure — required fields present and sufficiently long
|
|
7
8
|
* 2. Completeness — measurable objectives, decision rationale, scope exclusions
|
|
8
9
|
* 3. Feasibility — overly broad scope, missing dependency awareness
|
|
9
10
|
* 4. Risk — breaking changes without mitigation, missing verification
|
|
10
11
|
* 5. Clarity — ambiguous language, vague criteria
|
|
11
12
|
* 6. Semantic Quality — generic objectives, shallow rationale, non-concrete approach
|
|
13
|
+
*
|
|
14
|
+
* Opt-in pass factories (registered via customPasses):
|
|
15
|
+
* - createToolFeasibilityPass — validates tool_chain entries and ordering
|
|
16
|
+
* - createFlowAlignmentPass — validates flow and target_mode against registries
|
|
17
|
+
* - createAntiPatternPass — detects content anti-patterns and vague criteria
|
|
12
18
|
*/
|
|
13
19
|
import type { Plan } from './planner.js';
|
|
14
|
-
import type { PlanGap } from './gap-types.js';
|
|
20
|
+
import type { PlanGap, GapSeverity } from './gap-types.js';
|
|
15
21
|
/** A custom gap analysis pass that agents can register. */
|
|
16
22
|
export type GapAnalysisPass = (plan: Plan) => PlanGap[];
|
|
17
23
|
export interface GapAnalysisOptions {
|
|
18
24
|
/** Custom gap analysis passes appended after the 6 built-in passes. */
|
|
19
25
|
customPasses?: GapAnalysisPass[];
|
|
20
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Factory: tool chain feasibility pass.
|
|
29
|
+
* Validates that tool_chain entries are known and ordering rules are respected.
|
|
30
|
+
* Ported from Salvador's analyzeToolFeasibility.
|
|
31
|
+
*
|
|
32
|
+
* @param validTools - Set of valid tool names for this agent
|
|
33
|
+
* @param orderingRules - Ordering constraints (e.g., search before create)
|
|
34
|
+
*/
|
|
35
|
+
export declare function createToolFeasibilityPass(validTools: Set<string>, orderingRules?: Array<{
|
|
36
|
+
before: string;
|
|
37
|
+
after: string;
|
|
38
|
+
reason: string;
|
|
39
|
+
}>): GapAnalysisPass;
|
|
40
|
+
/**
|
|
41
|
+
* Factory: flow and mode alignment pass.
|
|
42
|
+
* Validates flow and target_mode against known values and intent alignment.
|
|
43
|
+
* Ported from Salvador's analyzeFlowAlignment.
|
|
44
|
+
*
|
|
45
|
+
* @param validFlows - Set of valid flow names for this agent
|
|
46
|
+
* @param validModes - Set of valid operational modes for this agent
|
|
47
|
+
* @param intentFlowMap - Maps detected intents to expected flows
|
|
48
|
+
*/
|
|
49
|
+
export declare function createFlowAlignmentPass(validFlows: Set<string>, validModes: Set<string>, intentFlowMap?: Record<string, string[]>): GapAnalysisPass;
|
|
50
|
+
/**
|
|
51
|
+
* Factory: content anti-pattern pass.
|
|
52
|
+
* Detects common anti-patterns in plan content.
|
|
53
|
+
* Ported from Salvador's analyzeContentAntiPatterns.
|
|
54
|
+
*
|
|
55
|
+
* @param antiPatterns - Regex patterns to check against approach text
|
|
56
|
+
* @param mitigationPatterns - Patterns that indicate the plan is already mitigating
|
|
57
|
+
*/
|
|
58
|
+
export declare function createAntiPatternPass(antiPatterns?: Array<{
|
|
59
|
+
pattern: RegExp;
|
|
60
|
+
severity: GapSeverity;
|
|
61
|
+
description: string;
|
|
62
|
+
recommendation: string;
|
|
63
|
+
}>, mitigationPatterns?: RegExp[]): GapAnalysisPass;
|
|
21
64
|
/**
|
|
22
65
|
* Run all 6 built-in gap analysis passes on a plan, plus any custom passes.
|
|
23
66
|
* Returns a combined list of all gaps found, ordered by pass.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gap-analysis.d.ts","sourceRoot":"","sources":["../../src/planning/gap-analysis.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gap-analysis.d.ts","sourceRoot":"","sources":["../../src/planning/gap-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAqfxE,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CAClC;AAOD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,aAAa,CAAC,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GACvE,eAAe,CA2CjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACvC,eAAe,CAoEjB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,CAAC,EAAE,KAAK,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,EACF,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,eAAe,CAwDjB;AAID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,EAAE,CAkBlF"}
|