memkin 0.4.2 → 0.4.3
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/apply/candidate-selection.d.ts +60 -0
- package/dist/apply/candidate-selection.d.ts.map +1 -0
- package/dist/apply/candidate-selection.js +159 -0
- package/dist/apply/candidate-selection.js.map +1 -0
- package/dist/apply/cutover.d.ts +45 -0
- package/dist/apply/cutover.d.ts.map +1 -0
- package/dist/apply/cutover.js +85 -0
- package/dist/apply/cutover.js.map +1 -0
- package/dist/apply/engine.d.ts +34 -0
- package/dist/apply/engine.d.ts.map +1 -0
- package/dist/apply/engine.js +255 -0
- package/dist/apply/engine.js.map +1 -0
- package/dist/apply/ids.d.ts +9 -0
- package/dist/apply/ids.d.ts.map +1 -0
- package/dist/apply/ids.js +0 -0
- package/dist/apply/ids.js.map +1 -0
- package/dist/apply/page-content.d.ts +14 -0
- package/dist/apply/page-content.d.ts.map +1 -0
- package/dist/apply/page-content.js +0 -0
- package/dist/apply/page-content.js.map +1 -0
- package/dist/apply/rematerialize.d.ts +13 -0
- package/dist/apply/rematerialize.d.ts.map +1 -0
- package/dist/apply/rematerialize.js +150 -0
- package/dist/apply/rematerialize.js.map +1 -0
- package/dist/apply/rollback.d.ts +20 -0
- package/dist/apply/rollback.d.ts.map +1 -0
- package/dist/apply/rollback.js +117 -0
- package/dist/apply/rollback.js.map +1 -0
- package/dist/apply/shadow-runner.d.ts +47 -0
- package/dist/apply/shadow-runner.d.ts.map +1 -0
- package/dist/apply/shadow-runner.js +84 -0
- package/dist/apply/shadow-runner.js.map +1 -0
- package/dist/apply/types.d.ts +51 -0
- package/dist/apply/types.d.ts.map +1 -0
- package/dist/apply/types.js +13 -0
- package/dist/apply/types.js.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidator/consolidator.d.ts +21 -2
- package/dist/consolidator/consolidator.d.ts.map +1 -1
- package/dist/consolidator/consolidator.js +16 -1
- package/dist/consolidator/consolidator.js.map +1 -1
- package/dist/core/config.d.ts +42 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +25 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/pipeline.d.ts +26 -1
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +26 -0
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/schemas.d.ts +16 -16
- package/dist/daemon/serve-runtime.d.ts +1 -1
- package/dist/daemon/serve-runtime.d.ts.map +1 -1
- package/dist/daemon/serve-runtime.js +26 -1
- package/dist/daemon/serve-runtime.js.map +1 -1
- package/dist/distiller/authority-matrix.d.ts +22 -0
- package/dist/distiller/authority-matrix.d.ts.map +1 -0
- package/dist/distiller/authority-matrix.js +29 -0
- package/dist/distiller/authority-matrix.js.map +1 -0
- package/dist/distiller/contract.d.ts +1427 -0
- package/dist/distiller/contract.d.ts.map +1 -0
- package/dist/distiller/contract.js +166 -0
- package/dist/distiller/contract.js.map +1 -0
- package/dist/distiller/index.d.ts +83 -0
- package/dist/distiller/index.d.ts.map +1 -0
- package/dist/distiller/index.js +226 -0
- package/dist/distiller/index.js.map +1 -0
- package/dist/distiller/map-reduce.d.ts +81 -0
- package/dist/distiller/map-reduce.d.ts.map +1 -0
- package/dist/distiller/map-reduce.js +92 -0
- package/dist/distiller/map-reduce.js.map +1 -0
- package/dist/distiller/msg-id.d.ts +55 -0
- package/dist/distiller/msg-id.d.ts.map +1 -0
- package/dist/distiller/msg-id.js +91 -0
- package/dist/distiller/msg-id.js.map +1 -0
- package/dist/distiller/payload-privacy.d.ts +18 -0
- package/dist/distiller/payload-privacy.d.ts.map +1 -0
- package/dist/distiller/payload-privacy.js +51 -0
- package/dist/distiller/payload-privacy.js.map +1 -0
- package/dist/distiller/prompt.d.ts +28 -0
- package/dist/distiller/prompt.d.ts.map +1 -0
- package/dist/distiller/prompt.js +69 -0
- package/dist/distiller/prompt.js.map +1 -0
- package/dist/distiller/raw-privacy.d.ts +55 -0
- package/dist/distiller/raw-privacy.d.ts.map +1 -0
- package/dist/distiller/raw-privacy.js +123 -0
- package/dist/distiller/raw-privacy.js.map +1 -0
- package/dist/distiller/segmenter.d.ts +40 -0
- package/dist/distiller/segmenter.d.ts.map +1 -0
- package/dist/distiller/segmenter.js +75 -0
- package/dist/distiller/segmenter.js.map +1 -0
- package/dist/embedded-assets.generated.d.ts.map +1 -1
- package/dist/embedded-assets.generated.js +5 -4
- package/dist/embedded-assets.generated.js.map +1 -1
- package/dist/eval/golden.d.ts +12 -12
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +6 -1
- package/dist/server/api.js.map +1 -1
- package/dist/setup/generate-config.d.ts.map +1 -1
- package/dist/setup/generate-config.js +3 -0
- package/dist/setup/generate-config.js.map +1 -1
- package/dist/setup/validate-config.d.ts +2 -1
- package/dist/setup/validate-config.d.ts.map +1 -1
- package/dist/setup/validate-config.js.map +1 -1
- package/dist/store/agent-sessions.d.ts.map +1 -1
- package/dist/store/agent-sessions.js +3 -1
- package/dist/store/agent-sessions.js.map +1 -1
- package/dist/store/distilled-payload.d.ts +50 -0
- package/dist/store/distilled-payload.d.ts.map +1 -0
- package/dist/store/distilled-payload.js +117 -0
- package/dist/store/distilled-payload.js.map +1 -0
- package/dist/store/engine-factory.d.ts.map +1 -1
- package/dist/store/engine-factory.js +8 -1
- package/dist/store/engine-factory.js.map +1 -1
- package/dist/store/migrations/index.d.ts.map +1 -1
- package/dist/store/migrations/index.js +139 -0
- package/dist/store/migrations/index.js.map +1 -1
- package/dist/store/search.d.ts.map +1 -1
- package/dist/store/search.js +15 -8
- package/dist/store/search.js.map +1 -1
- package/dist/store/source-filter.d.ts +19 -0
- package/dist/store/source-filter.d.ts.map +1 -0
- package/dist/store/source-filter.js +44 -0
- package/dist/store/source-filter.js.map +1 -0
- package/dist/store/timeline.d.ts.map +1 -1
- package/dist/store/timeline.js +15 -8
- package/dist/store/timeline.js.map +1 -1
- package/dist/synth/scope.d.ts.map +1 -1
- package/dist/synth/scope.js +10 -4
- package/dist/synth/scope.js.map +1 -1
- package/package.json +2 -1
- package/web/dist/assets/index-Cie2dVF3.js +5167 -0
- package/web/dist/assets/index-diZtO98v.css +2 -0
- package/web/dist/assets/newsreader-T5L87s1n.woff2 +0 -0
- package/web/dist/index.html +19 -0
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
// and each session's processing state is tracked independently of the scan
|
|
10
10
|
// watermark so a poison session never blocks progress.
|
|
11
11
|
// Allowed state transitions. Enforced by markState; an unlisted edge throws.
|
|
12
|
+
// discovered → retrying: distillation failed validation twice for this revision
|
|
13
|
+
// (spec §4.2 / PR-2); a later successful retry lands back as distilled.
|
|
12
14
|
const ALLOWED_TRANSITIONS = {
|
|
13
|
-
discovered: ["distilled"],
|
|
15
|
+
discovered: ["distilled", "retrying"],
|
|
14
16
|
distilled: ["applying", "retrying"],
|
|
15
17
|
applying: ["done", "retrying"],
|
|
16
18
|
retrying: ["distilled", "dead_letter"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-sessions.js","sourceRoot":"","sources":["../../src/store/agent-sessions.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,mEAAmE;AACnE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,uDAAuD;AAyDvD,6EAA6E;AAC7E,MAAM,mBAAmB,GAAyC;IAChE,UAAU,EAAE,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-sessions.js","sourceRoot":"","sources":["../../src/store/agent-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { DistilledPayload } from "../distiller/contract.js";
|
|
2
|
+
import type { RestorationMap } from "../distiller/raw-privacy.js";
|
|
3
|
+
import type { SqlConn } from "./sql-executor.js";
|
|
4
|
+
export interface PersistPayloadInput {
|
|
5
|
+
sourceInstance: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
revisionId: number;
|
|
8
|
+
contentHash: string;
|
|
9
|
+
payload: DistilledPayload;
|
|
10
|
+
restorationMap: RestorationMap;
|
|
11
|
+
}
|
|
12
|
+
export interface StoredPayload {
|
|
13
|
+
id: number;
|
|
14
|
+
sourceInstance: string;
|
|
15
|
+
sessionId: string;
|
|
16
|
+
revisionId: number;
|
|
17
|
+
contentHash: string;
|
|
18
|
+
payload: DistilledPayload;
|
|
19
|
+
restorationMap: RestorationMap | null;
|
|
20
|
+
ttlExpiresAt: string | null;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class DistilledPayloadStore {
|
|
24
|
+
private readonly pg;
|
|
25
|
+
constructor(pg: SqlConn);
|
|
26
|
+
/**
|
|
27
|
+
* Persist a validated payload (immutable per revision) and advance the ledger
|
|
28
|
+
* to `distilled`, linking payload_id. Idempotent: replaying the same revision
|
|
29
|
+
* returns the existing row without re-inserting and without any LLM call.
|
|
30
|
+
*/
|
|
31
|
+
persist(input: PersistPayloadInput): Promise<StoredPayload>;
|
|
32
|
+
getByRevision(revisionId: number): Promise<StoredPayload | null>;
|
|
33
|
+
getById(id: number): Promise<StoredPayload | null>;
|
|
34
|
+
/** Stamp ttl_expires_at = now + ttlDays (call once the session reaches `done`). */
|
|
35
|
+
setTtl(id: number, ttlDays: number): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Stamp ttl_expires_at for every payload whose session revision has reached
|
|
38
|
+
* `done` and that has no TTL yet (spec §4.3: payload retained N days after
|
|
39
|
+
* done). Called by the consolidator's cleanup hook. Idempotent — already
|
|
40
|
+
* stamped rows are skipped. Returns the number of payloads stamped.
|
|
41
|
+
*/
|
|
42
|
+
stampTtlForDoneSessions(ttlDays: number): Promise<number>;
|
|
43
|
+
/**
|
|
44
|
+
* Delete payloads whose TTL has passed. The reversible restoration_map is a
|
|
45
|
+
* column on the same row, so it is cleared together (spec §4.3). Returns the
|
|
46
|
+
* number of rows swept.
|
|
47
|
+
*/
|
|
48
|
+
sweepExpired(now?: Date): Promise<number>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=distilled-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distilled-payload.d.ts","sourceRoot":"","sources":["../../src/store/distilled-payload.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAiCD,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,OAAO;IAExC;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyC3D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAQhE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAOxD,mFAAmF;IAC7E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD;;;;;OAKG;IACG,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY/D;;;;OAIG;IACG,YAAY,CAAC,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAS5D"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// src/store/distilled-payload.ts
|
|
2
|
+
//
|
|
3
|
+
// DistilledPayloadStore — the distillation OUTBOX (spec §5, §6.2, §4.3).
|
|
4
|
+
//
|
|
5
|
+
// Holds the target-agnostic, immutable distilled payload for each session
|
|
6
|
+
// revision. PR-2 writes here (after validation + second-pass privacy) and
|
|
7
|
+
// advances the ledger discovered→distilled; PR-4's apply engine later reads it
|
|
8
|
+
// to build target-specific apply plans. The payload is never mutated after
|
|
9
|
+
// insert (unique revision_id), so "retry" only ever replays it — the LLM is
|
|
10
|
+
// never called again once a payload exists.
|
|
11
|
+
//
|
|
12
|
+
// TTL: after a session reaches `done`, the payload is retained for
|
|
13
|
+
// distiller.payload_ttl_days (default 90) via ttl_expires_at; the consolidator
|
|
14
|
+
// calls sweepExpired() to clear payload + reversible restoration map together
|
|
15
|
+
// (spec §4.3).
|
|
16
|
+
function parseJson(v) {
|
|
17
|
+
if (v === null || v === undefined)
|
|
18
|
+
return null;
|
|
19
|
+
return typeof v === "string" ? JSON.parse(v) : v;
|
|
20
|
+
}
|
|
21
|
+
function rowToStored(row) {
|
|
22
|
+
return {
|
|
23
|
+
id: row.id,
|
|
24
|
+
sourceInstance: row.source_instance,
|
|
25
|
+
sessionId: row.session_id,
|
|
26
|
+
revisionId: row.revision_id,
|
|
27
|
+
contentHash: row.content_hash,
|
|
28
|
+
payload: parseJson(row.payload),
|
|
29
|
+
restorationMap: parseJson(row.restoration_map),
|
|
30
|
+
ttlExpiresAt: row.ttl_expires_at,
|
|
31
|
+
createdAt: row.created_at,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export class DistilledPayloadStore {
|
|
35
|
+
pg;
|
|
36
|
+
constructor(pg) {
|
|
37
|
+
this.pg = pg;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Persist a validated payload (immutable per revision) and advance the ledger
|
|
41
|
+
* to `distilled`, linking payload_id. Idempotent: replaying the same revision
|
|
42
|
+
* returns the existing row without re-inserting and without any LLM call.
|
|
43
|
+
*/
|
|
44
|
+
async persist(input) {
|
|
45
|
+
const inserted = await this.pg.query(`INSERT INTO distilled_payload
|
|
46
|
+
(source_instance, session_id, revision_id, content_hash, payload, restoration_map)
|
|
47
|
+
VALUES ($1, $2, $3, $4, $5::jsonb, $6::jsonb)
|
|
48
|
+
ON CONFLICT (revision_id) DO NOTHING
|
|
49
|
+
RETURNING *`, [
|
|
50
|
+
input.sourceInstance,
|
|
51
|
+
input.sessionId,
|
|
52
|
+
input.revisionId,
|
|
53
|
+
input.contentHash,
|
|
54
|
+
JSON.stringify(input.payload),
|
|
55
|
+
JSON.stringify(input.restorationMap ?? {}),
|
|
56
|
+
]);
|
|
57
|
+
let stored;
|
|
58
|
+
if (inserted.rows.length > 0) {
|
|
59
|
+
stored = rowToStored(inserted.rows[0]);
|
|
60
|
+
// Link + advance the ledger. discovered→distilled is a legal transition;
|
|
61
|
+
// we set state and payload_id in one update. If the revision is already
|
|
62
|
+
// past discovered (e.g. re-run), leave state alone but ensure the link.
|
|
63
|
+
await this.pg.query(`UPDATE agent_sessions
|
|
64
|
+
SET payload_id = $2,
|
|
65
|
+
state = CASE WHEN state = 'discovered' THEN 'distilled' ELSE state END,
|
|
66
|
+
updated_at = NOW()
|
|
67
|
+
WHERE id = $1`, [input.revisionId, stored.id]);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const existing = await this.pg.query("SELECT * FROM distilled_payload WHERE revision_id = $1", [input.revisionId]);
|
|
71
|
+
stored = rowToStored(existing.rows[0]);
|
|
72
|
+
}
|
|
73
|
+
return stored;
|
|
74
|
+
}
|
|
75
|
+
async getByRevision(revisionId) {
|
|
76
|
+
const r = await this.pg.query("SELECT * FROM distilled_payload WHERE revision_id = $1", [revisionId]);
|
|
77
|
+
return r.rows[0] ? rowToStored(r.rows[0]) : null;
|
|
78
|
+
}
|
|
79
|
+
async getById(id) {
|
|
80
|
+
const r = await this.pg.query("SELECT * FROM distilled_payload WHERE id = $1", [
|
|
81
|
+
id,
|
|
82
|
+
]);
|
|
83
|
+
return r.rows[0] ? rowToStored(r.rows[0]) : null;
|
|
84
|
+
}
|
|
85
|
+
/** Stamp ttl_expires_at = now + ttlDays (call once the session reaches `done`). */
|
|
86
|
+
async setTtl(id, ttlDays) {
|
|
87
|
+
await this.pg.query(`UPDATE distilled_payload
|
|
88
|
+
SET ttl_expires_at = NOW() + ($2 || ' days')::interval
|
|
89
|
+
WHERE id = $1`, [id, String(ttlDays)]);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Stamp ttl_expires_at for every payload whose session revision has reached
|
|
93
|
+
* `done` and that has no TTL yet (spec §4.3: payload retained N days after
|
|
94
|
+
* done). Called by the consolidator's cleanup hook. Idempotent — already
|
|
95
|
+
* stamped rows are skipped. Returns the number of payloads stamped.
|
|
96
|
+
*/
|
|
97
|
+
async stampTtlForDoneSessions(ttlDays) {
|
|
98
|
+
const r = await this.pg.query(`UPDATE distilled_payload
|
|
99
|
+
SET ttl_expires_at = NOW() + ($1 || ' days')::interval
|
|
100
|
+
WHERE ttl_expires_at IS NULL
|
|
101
|
+
AND revision_id IN (SELECT id FROM agent_sessions WHERE state = 'done')
|
|
102
|
+
RETURNING id`, [String(ttlDays)]);
|
|
103
|
+
return r.rows.length;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Delete payloads whose TTL has passed. The reversible restoration_map is a
|
|
107
|
+
* column on the same row, so it is cleared together (spec §4.3). Returns the
|
|
108
|
+
* number of rows swept.
|
|
109
|
+
*/
|
|
110
|
+
async sweepExpired(now = new Date()) {
|
|
111
|
+
const r = await this.pg.query(`DELETE FROM distilled_payload
|
|
112
|
+
WHERE ttl_expires_at IS NOT NULL AND ttl_expires_at <= $1
|
|
113
|
+
RETURNING id`, [now.toISOString()]);
|
|
114
|
+
return r.rows.length;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=distilled-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distilled-payload.js","sourceRoot":"","sources":["../../src/store/distilled-payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../src/store/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../src/store/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BvE"}
|
|
@@ -3,7 +3,14 @@ export async function createEngine(config) {
|
|
|
3
3
|
switch (engine) {
|
|
4
4
|
case "pglite": {
|
|
5
5
|
const { PgliteExecutor } = await import("./pglite-executor.js");
|
|
6
|
-
|
|
6
|
+
// In a `bun --compile` sidecar (Tauri desktop) the PGLite WASM/data assets are
|
|
7
|
+
// staged outside the executable and their real path arrives via --pglite-assets
|
|
8
|
+
// (mirrored to MEMKIN_PGLITE_ASSETS by the serve command). Thread it through so
|
|
9
|
+
// the compiled binary loads assets from the resource dir instead of the missing
|
|
10
|
+
// <execDir>/assets fallback. In dev/non-compiled mode this override is ignored.
|
|
11
|
+
return PgliteExecutor.create(config.store?.data_dir, {
|
|
12
|
+
assetsOverride: process.env.MEMKIN_PGLITE_ASSETS,
|
|
13
|
+
});
|
|
7
14
|
}
|
|
8
15
|
case "postgres": {
|
|
9
16
|
const { PostgresExecutor } = await import("./postgres-executor.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../src/store/engine-factory.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,CAAC;IAEhD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAChE,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../src/store/engine-factory.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,CAAC;IAEhD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAChE,+EAA+E;YAC/E,gFAAgF;YAChF,gFAAgF;YAChF,gFAAgF;YAChF,gFAAgF;YAChF,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACnD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;aACjD,CAAC,CAAC;QACL,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACpE,OAAO,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,SAAS;YACZ,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;QACJ;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,0CAA0C,CAAC,CAAC;IAChG,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AA8UD,eAAO,MAAM,UAAU,EAAE,SAAS,EAajC,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhE"}
|
|
@@ -181,6 +181,142 @@ CREATE TABLE IF NOT EXISTS entity_merge_suggestions (
|
|
|
181
181
|
CREATE INDEX IF NOT EXISTS idx_entity_merge_suggestions_status
|
|
182
182
|
ON entity_merge_suggestions (status);
|
|
183
183
|
`;
|
|
184
|
+
// Migration 010: distilled_payload outbox (extraction-quality-redesign PR-2).
|
|
185
|
+
// Numbered M010 because PR-3 (entity normalization) merged to main first and
|
|
186
|
+
// took M008 (entity_handles) + M009 (entity_merge_suggestions).
|
|
187
|
+
// One row per session revision, holding the target-agnostic, immutable distilled
|
|
188
|
+
// payload (spec §5, §6.2). PR-2 produces and persists this; the apply engine
|
|
189
|
+
// (PR-4) later consumes it to build target-specific apply plans. Never mutated
|
|
190
|
+
// after insert — hence the unique(revision_id). ttl_expires_at drives the
|
|
191
|
+
// consolidator's payload-TTL sweep (spec §4.3, distiller.payload_ttl_days,
|
|
192
|
+
// default 90 days after the session reaches `done`). restoration_map holds the
|
|
193
|
+
// reversible pre-LLM redaction mapping keyed by msg_id (spec §4.3), cleared on
|
|
194
|
+
// TTL alongside the payload. Migration-only (like M005/M007) — runMigrations
|
|
195
|
+
// runs on both fresh and upgraded databases.
|
|
196
|
+
const M010_DISTILLED_PAYLOAD = `
|
|
197
|
+
CREATE TABLE IF NOT EXISTS distilled_payload (
|
|
198
|
+
id SERIAL PRIMARY KEY,
|
|
199
|
+
source_instance TEXT NOT NULL,
|
|
200
|
+
session_id TEXT NOT NULL,
|
|
201
|
+
revision_id INTEGER NOT NULL,
|
|
202
|
+
content_hash TEXT NOT NULL,
|
|
203
|
+
payload JSONB NOT NULL,
|
|
204
|
+
restoration_map JSONB,
|
|
205
|
+
ttl_expires_at TIMESTAMPTZ,
|
|
206
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
207
|
+
UNIQUE (revision_id)
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
CREATE INDEX IF NOT EXISTS idx_distilled_payload_lookup
|
|
211
|
+
ON distilled_payload (source_instance, session_id);
|
|
212
|
+
CREATE INDEX IF NOT EXISTS idx_distilled_payload_ttl
|
|
213
|
+
ON distilled_payload (ttl_expires_at) WHERE ttl_expires_at IS NOT NULL;
|
|
214
|
+
`;
|
|
215
|
+
// Migration 011: apply-engine backbone (extraction-quality-redesign PR-4).
|
|
216
|
+
// The three-layer apply data structure (spec §6.2) plus the two-layer ID
|
|
217
|
+
// provenance table (spec §6.1, §8):
|
|
218
|
+
// - memory_contributions: source-signal → canonical-page contribution ledger.
|
|
219
|
+
// Two-layer ID: contribution_id = hash(revision_id, type, normalized_topic)
|
|
220
|
+
// is the PK (one raw material per distillation); signal_family_key =
|
|
221
|
+
// hash(source_instance, session_id, type, normalized_topic) is the
|
|
222
|
+
// cross-revision family, unique per (signal_family_key, revision_id). Every
|
|
223
|
+
// canonical-page derivative (system-managed body, primary source, links,
|
|
224
|
+
// tags, timeline) is rematerialized from the ACTIVE rows here. This table
|
|
225
|
+
// doubles as the normalized provenance table (spec §8) via source_ref.
|
|
226
|
+
// - apply_plan(payload_id, target): the candidate-selection result, one per
|
|
227
|
+
// (payload, target). staging and production plans are independent.
|
|
228
|
+
// - apply_attempt(plan_id, status): one row per apply of a plan.
|
|
229
|
+
// - apply_mutation_journal: inverse records for NON-derived writes only
|
|
230
|
+
// (spec §3.1 / §6.2) — a rollback safety net; derived writes are rebuilt by
|
|
231
|
+
// rematerialize, so they are not journaled.
|
|
232
|
+
// Numbered M011 (M008/M009 = PR-3, M010 = PR-2). Migration-only, runs on both
|
|
233
|
+
// fresh and upgraded databases.
|
|
234
|
+
const M011_APPLY_ENGINE = `
|
|
235
|
+
CREATE TABLE IF NOT EXISTS memory_contributions (
|
|
236
|
+
contribution_id TEXT PRIMARY KEY,
|
|
237
|
+
signal_family_key TEXT NOT NULL,
|
|
238
|
+
canonical_page_id INTEGER REFERENCES pages(id) ON DELETE CASCADE,
|
|
239
|
+
session_ref TEXT NOT NULL,
|
|
240
|
+
revision_id INTEGER NOT NULL,
|
|
241
|
+
authority TEXT NOT NULL,
|
|
242
|
+
signal_type TEXT NOT NULL,
|
|
243
|
+
normalized_topic TEXT NOT NULL,
|
|
244
|
+
signal JSONB NOT NULL,
|
|
245
|
+
source_ref JSONB,
|
|
246
|
+
evidence JSONB,
|
|
247
|
+
active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
248
|
+
apply_attempt_id INTEGER,
|
|
249
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
250
|
+
UNIQUE (signal_family_key, revision_id)
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
CREATE INDEX IF NOT EXISTS idx_memory_contributions_page
|
|
254
|
+
ON memory_contributions (canonical_page_id) WHERE active;
|
|
255
|
+
CREATE INDEX IF NOT EXISTS idx_memory_contributions_family
|
|
256
|
+
ON memory_contributions (signal_family_key);
|
|
257
|
+
CREATE INDEX IF NOT EXISTS idx_memory_contributions_attempt
|
|
258
|
+
ON memory_contributions (apply_attempt_id);
|
|
259
|
+
|
|
260
|
+
CREATE TABLE IF NOT EXISTS apply_plan (
|
|
261
|
+
id SERIAL PRIMARY KEY,
|
|
262
|
+
payload_id INTEGER NOT NULL REFERENCES distilled_payload(id) ON DELETE CASCADE,
|
|
263
|
+
target TEXT NOT NULL CHECK (target IN ('staging','production')),
|
|
264
|
+
plan JSONB NOT NULL,
|
|
265
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
266
|
+
UNIQUE (payload_id, target)
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
CREATE TABLE IF NOT EXISTS apply_attempt (
|
|
270
|
+
id SERIAL PRIMARY KEY,
|
|
271
|
+
plan_id INTEGER NOT NULL REFERENCES apply_plan(id) ON DELETE CASCADE,
|
|
272
|
+
target TEXT NOT NULL CHECK (target IN ('staging','production')),
|
|
273
|
+
status TEXT NOT NULL DEFAULT 'pending'
|
|
274
|
+
CHECK (status IN ('pending','applied','failed','dead_letter')),
|
|
275
|
+
detail JSONB,
|
|
276
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
277
|
+
completed_at TIMESTAMPTZ
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
CREATE INDEX IF NOT EXISTS idx_apply_attempt_plan ON apply_attempt (plan_id);
|
|
281
|
+
|
|
282
|
+
CREATE TABLE IF NOT EXISTS apply_mutation_journal (
|
|
283
|
+
id SERIAL PRIMARY KEY,
|
|
284
|
+
apply_attempt_id INTEGER NOT NULL REFERENCES apply_attempt(id) ON DELETE CASCADE,
|
|
285
|
+
seq INTEGER NOT NULL,
|
|
286
|
+
kind TEXT NOT NULL,
|
|
287
|
+
inverse JSONB NOT NULL,
|
|
288
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
289
|
+
UNIQUE (apply_attempt_id, seq)
|
|
290
|
+
);
|
|
291
|
+
`;
|
|
292
|
+
// Migration 012: staging schema for shadow apply (extraction-quality-redesign
|
|
293
|
+
// PR-4, spec §3.1). A physically isolated `staging` schema holds tables
|
|
294
|
+
// isomorphic to production, so the SINGLE target-agnostic apply engine can run
|
|
295
|
+
// with target=staging (shadow) writing here without touching production. The
|
|
296
|
+
// engine selects the target by SET LOCAL search_path within its transaction, so
|
|
297
|
+
// the same unqualified store SQL (pages, content_chunks, …) writes to whichever
|
|
298
|
+
// schema is first on the path. Search / consolidator / stats keep the default
|
|
299
|
+
// search_path ("$user", public) and therefore only ever read production —
|
|
300
|
+
// staging rows cannot pollute retrieval. Isomorphism is guaranteed by
|
|
301
|
+
// LIKE ... INCLUDING ALL against the just-migrated production tables (this runs
|
|
302
|
+
// after M001–M011), so any column added upstream is mirrored automatically.
|
|
303
|
+
// Migration-only; runs on both fresh and upgraded databases.
|
|
304
|
+
const M012_STAGING_SCHEMA = `
|
|
305
|
+
CREATE SCHEMA IF NOT EXISTS staging;
|
|
306
|
+
|
|
307
|
+
CREATE TABLE IF NOT EXISTS staging.pages
|
|
308
|
+
(LIKE public.pages INCLUDING ALL);
|
|
309
|
+
CREATE TABLE IF NOT EXISTS staging.content_chunks
|
|
310
|
+
(LIKE public.content_chunks INCLUDING ALL);
|
|
311
|
+
CREATE TABLE IF NOT EXISTS staging.links
|
|
312
|
+
(LIKE public.links INCLUDING ALL);
|
|
313
|
+
CREATE TABLE IF NOT EXISTS staging.tags
|
|
314
|
+
(LIKE public.tags INCLUDING ALL);
|
|
315
|
+
CREATE TABLE IF NOT EXISTS staging.timeline_entries
|
|
316
|
+
(LIKE public.timeline_entries INCLUDING ALL);
|
|
317
|
+
CREATE TABLE IF NOT EXISTS staging.memory_contributions
|
|
318
|
+
(LIKE public.memory_contributions INCLUDING ALL);
|
|
319
|
+
`;
|
|
184
320
|
export const MIGRATIONS = [
|
|
185
321
|
{ version: 1, name: "lifecycle_columns", sql: M001_LIFECYCLE_COLUMNS },
|
|
186
322
|
{ version: 2, name: "provenance_columns", sql: M002_PROVENANCE_COLUMNS },
|
|
@@ -191,6 +327,9 @@ export const MIGRATIONS = [
|
|
|
191
327
|
{ version: 7, name: "agent_sessions", sql: M007_AGENT_SESSIONS },
|
|
192
328
|
{ version: 8, name: "entity_handles", sql: M008_ENTITY_HANDLES },
|
|
193
329
|
{ version: 9, name: "entity_merge_suggestions", sql: M009_ENTITY_MERGE_SUGGESTIONS },
|
|
330
|
+
{ version: 10, name: "distilled_payload", sql: M010_DISTILLED_PAYLOAD },
|
|
331
|
+
{ version: 11, name: "apply_engine", sql: M011_APPLY_ENGINE },
|
|
332
|
+
{ version: 12, name: "staging_schema", sql: M012_STAGING_SCHEMA },
|
|
194
333
|
];
|
|
195
334
|
export async function runMigrations(conn) {
|
|
196
335
|
await conn.exec(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/migrations/index.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,4FAA4F;AAC5F,wFAAwF;AACxF,qFAAqF;AACrF,EAAE;AACF,2FAA2F;AAE3F,iEAAiE;AACjE,mFAAmF;AACnF,kFAAkF;AAClF,mDAAmD;AACnD,MAAM,sBAAsB,GAAG;;;;;;;;;CAS9B,CAAC;AAEF,yFAAyF;AACzF,0DAA0D;AAC1D,MAAM,uBAAuB,GAAG;;;;CAI/B,CAAC;AAEF,wFAAwF;AACxF,sEAAsE;AACtE,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;CAgB3B,CAAC;AAEF,gEAAgE;AAChE,0EAA0E;AAC1E,4EAA4E;AAC5E,6DAA6D;AAC7D,MAAM,4BAA4B,GAAG;;CAEpC,CAAC;AAEF,iFAAiF;AACjF,oFAAoF;AACpF,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AACpF,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;CAc5B,CAAC;AAEF,wFAAwF;AACxF,2FAA2F;AAC3F,6FAA6F;AAC7F,uFAAuF;AACvF,iDAAiD;AACjD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;CAerB,CAAC;AAEF,sFAAsF;AACtF,0FAA0F;AAC1F,8FAA8F;AAC9F,qFAAqF;AACrF,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,yFAAyF;AACzF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB3B,CAAC;AAEF,yFAAyF;AACzF,wFAAwF;AACxF,uFAAuF;AACvF,2EAA2E;AAC3E,qEAAqE;AACrE,yFAAyF;AACzF,6CAA6C;AAC7C,EAAE;AACF,wCAAwC;AACxC,wFAAwF;AACxF,qFAAqF;AACrF,wFAAwF;AACxF,sDAAsD;AACtD,0FAA0F;AAC1F,0FAA0F;AAC1F,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF,uFAAuF;AACvF,4FAA4F;AAC5F,yFAAyF;AACzF,0FAA0F;AAC1F,4FAA4F;AAC5F,2FAA2F;AAC3F,4FAA4F;AAC5F,mFAAmF;AACnF,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;CAmBrC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,sBAAsB,EAAE;IACtE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,uBAAuB,EAAE;IACxE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IAChE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,4BAA4B,EAAE;IAClF,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,EAAE;IAClE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE;IACpD,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IAChE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IAChE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,6BAA6B,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/store/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/store/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,uEAAuE;QACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACrC,CAAC;IACF,iFAAiF;IACjF,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAyBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMpE;AA8ID,qBAAa,YAAY;IAQrB,OAAO,CAAC,EAAE;IAPZ,OAAO,CAAC,SAAS,CAAC,CAAsC;IACxD,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAA2B;IAC5C,OAAO,CAAC,GAAG,CAAC,CAAc;gBAGhB,EAAE,EAAE,OAAO,EACnB,IAAI,CAAC,EAAE,gBAAgB;IAUzB;;;;OAIG;YACW,OAAO;IAUf,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAgDvE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YA6H9D,cAAc;YAuDd,YAAY;CAiC3B"}
|
package/dist/store/search.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { rewriteQuery } from "./query-rewrite.js";
|
|
2
|
+
import { sourceFilterCondition } from "./source-filter.js";
|
|
2
3
|
import { buildSnippet, buildTrgmConditions, splitTerms } from "./trgm-search.js";
|
|
3
4
|
const RRF_K = 60;
|
|
4
5
|
const COMPILED_TRUTH_BOOST = 2.0;
|
|
@@ -44,35 +45,41 @@ function sourceJson(alias) {
|
|
|
44
45
|
return `COALESCE(${alias}.frontmatter->'source', ${alias}.frontmatter->'first_seen')`;
|
|
45
46
|
}
|
|
46
47
|
function addMemoryFilterConditions(conditions, params, opts, pageAlias = "p") {
|
|
48
|
+
const pageId = `${pageAlias}.id`;
|
|
47
49
|
const addArrayCondition = (field) => {
|
|
48
50
|
const values = asArray(opts?.[field]);
|
|
49
51
|
if (!values || values.length === 0)
|
|
50
52
|
return;
|
|
51
53
|
params.push(values);
|
|
52
|
-
|
|
54
|
+
const p = `$${params.length}`;
|
|
55
|
+
// Spec §8: match active contributions (multi-source truth), frontmatter primary as fallback.
|
|
56
|
+
conditions.push(sourceFilterCondition(pageId, `mc.source_ref->>'${field}' = ANY(${p}::text[])`, `${sourceField(pageAlias, field)} = ANY(${p}::text[])`));
|
|
53
57
|
};
|
|
54
58
|
addArrayCondition("platform");
|
|
55
59
|
addArrayCondition("source_type");
|
|
56
60
|
if (opts?.channel) {
|
|
57
61
|
params.push(opts.channel);
|
|
58
|
-
|
|
62
|
+
const p = `$${params.length}`;
|
|
63
|
+
conditions.push(sourceFilterCondition(pageId, `mc.source_ref->>'channel' = ${p}`, `${sourceField(pageAlias, "channel")} = ${p}`));
|
|
59
64
|
}
|
|
60
65
|
if (opts?.channel_name) {
|
|
61
66
|
params.push(opts.channel_name);
|
|
62
|
-
|
|
67
|
+
const p = `$${params.length}`;
|
|
68
|
+
conditions.push(sourceFilterCondition(pageId, `mc.source_ref->>'channel_name' = ${p}`, `${sourceField(pageAlias, "channel_name")} = ${p}`));
|
|
63
69
|
}
|
|
64
70
|
if (opts?.participant) {
|
|
65
71
|
params.push(opts.participant);
|
|
66
72
|
const param = `$${params.length}`;
|
|
67
|
-
|
|
73
|
+
const participantMatch = (json) => `(
|
|
68
74
|
EXISTS (
|
|
69
75
|
SELECT 1
|
|
70
|
-
FROM jsonb_array_elements(COALESCE(${
|
|
76
|
+
FROM jsonb_array_elements(COALESCE(${json}->'participants', '[]'::jsonb)) AS participant
|
|
71
77
|
WHERE participant->>'name' = ${param} OR participant->>'id' = ${param}
|
|
72
78
|
)
|
|
73
|
-
OR ${
|
|
74
|
-
OR ${
|
|
75
|
-
)
|
|
79
|
+
OR ${json}->'author'->>'name' = ${param}
|
|
80
|
+
OR ${json}->'author'->>'id' = ${param}
|
|
81
|
+
)`;
|
|
82
|
+
conditions.push(sourceFilterCondition(pageId, participantMatch("mc.source_ref"), participantMatch(sourceJson(pageAlias))));
|
|
76
83
|
}
|
|
77
84
|
if (opts?.type && opts.type.length > 0) {
|
|
78
85
|
params.push(opts.type);
|
package/dist/store/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/store/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/store/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a boolean SQL condition that matches when an active contribution of the
|
|
3
|
+
* page satisfies `contribCond`, or — only when the page has no active
|
|
4
|
+
* contributions — the frontmatter `fallbackCond` matches.
|
|
5
|
+
*
|
|
6
|
+
* `contribCond` is evaluated against alias `mc` (memory_contributions);
|
|
7
|
+
* `fallbackCond` against whatever page/entry aliases the caller already uses.
|
|
8
|
+
* Both branches must reference the SAME bound parameter so the caller pushes it
|
|
9
|
+
* exactly once.
|
|
10
|
+
*/
|
|
11
|
+
export declare function sourceFilterCondition(pageIdExpr: string, contribCond: string, fallbackCond: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* A correlated subquery returning the primary active contribution's source_ref
|
|
14
|
+
* (first user_confirmed, else earliest) as JSONB, for use in COALESCE(...) so
|
|
15
|
+
* derived timestamps/sources come from contributions with a frontmatter
|
|
16
|
+
* fallback. Alias-safe: pass the page id expression.
|
|
17
|
+
*/
|
|
18
|
+
export declare function primaryContribSourceExpr(pageIdExpr: string): string;
|
|
19
|
+
//# sourceMappingURL=source-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-filter.d.ts","sourceRoot":"","sources":["../../src/store/source-filter.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAOnE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// src/store/source-filter.ts
|
|
2
|
+
//
|
|
3
|
+
// Source filtering against active contributions (spec §8, PR-4).
|
|
4
|
+
//
|
|
5
|
+
// The multi-source truth lives in memory_contributions, not in the frontmatter
|
|
6
|
+
// (which keeps only a singular `source` = primary, for display). Filtering by a
|
|
7
|
+
// NON-primary platform / source_type / channel would MISS multi-source pages if
|
|
8
|
+
// it read only the frontmatter primary. So every source filter now matches
|
|
9
|
+
// against the page's ACTIVE contributions.
|
|
10
|
+
//
|
|
11
|
+
// Legacy pages that predate the apply engine have no contributions yet; for
|
|
12
|
+
// them we fall back to the frontmatter primary so existing retrieval keeps
|
|
13
|
+
// working during the transition. Concretely, a page matches a source filter
|
|
14
|
+
// when EITHER an active contribution matches, OR (the page has no active
|
|
15
|
+
// contributions AND) the frontmatter primary matches.
|
|
16
|
+
/**
|
|
17
|
+
* Build a boolean SQL condition that matches when an active contribution of the
|
|
18
|
+
* page satisfies `contribCond`, or — only when the page has no active
|
|
19
|
+
* contributions — the frontmatter `fallbackCond` matches.
|
|
20
|
+
*
|
|
21
|
+
* `contribCond` is evaluated against alias `mc` (memory_contributions);
|
|
22
|
+
* `fallbackCond` against whatever page/entry aliases the caller already uses.
|
|
23
|
+
* Both branches must reference the SAME bound parameter so the caller pushes it
|
|
24
|
+
* exactly once.
|
|
25
|
+
*/
|
|
26
|
+
export function sourceFilterCondition(pageIdExpr, contribCond, fallbackCond) {
|
|
27
|
+
const base = `SELECT 1 FROM memory_contributions mc WHERE mc.canonical_page_id = ${pageIdExpr} AND mc.active`;
|
|
28
|
+
return `(EXISTS (${base} AND (${contribCond})) OR (NOT EXISTS (${base}) AND (${fallbackCond})))`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A correlated subquery returning the primary active contribution's source_ref
|
|
32
|
+
* (first user_confirmed, else earliest) as JSONB, for use in COALESCE(...) so
|
|
33
|
+
* derived timestamps/sources come from contributions with a frontmatter
|
|
34
|
+
* fallback. Alias-safe: pass the page id expression.
|
|
35
|
+
*/
|
|
36
|
+
export function primaryContribSourceExpr(pageIdExpr) {
|
|
37
|
+
return `(
|
|
38
|
+
SELECT mc.source_ref FROM memory_contributions mc
|
|
39
|
+
WHERE mc.canonical_page_id = ${pageIdExpr} AND mc.active
|
|
40
|
+
ORDER BY (mc.authority = 'user_confirmed') DESC, mc.created_at ASC
|
|
41
|
+
LIMIT 1
|
|
42
|
+
)`;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=source-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-filter.js","sourceRoot":"","sources":["../../src/store/source-filter.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,iEAAiE;AACjE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,sDAAsD;AAEtD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,WAAmB,EACnB,YAAoB;IAEpB,MAAM,IAAI,GAAG,sEAAsE,UAAU,gBAAgB,CAAC;IAC9G,OAAO,YAAY,IAAI,SAAS,WAAW,sBAAsB,IAAI,UAAU,YAAY,KAAK,CAAC;AACnG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO;;oCAE2B,UAAU;;;IAG1C,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/store/timeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/store/timeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AA+JD,qBAAa,aAAa;IACZ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,OAAO;IAEzB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,SAAS,CAAC;KACxB,GACA,OAAO,CAAC,IAAI,CAAC;IAuBV,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAcvD,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqC5E,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;CAerE"}
|