@getrift/rift 0.1.0-beta.0 → 0.1.0-beta.10
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/README.md +72 -48
- package/dist/src/auth/keychain.d.ts +9 -0
- package/dist/src/auth/keychain.d.ts.map +1 -1
- package/dist/src/auth/keychain.js +37 -0
- package/dist/src/auth/keychain.js.map +1 -1
- package/dist/src/capture/recover-quarantine.d.ts +221 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
- package/dist/src/capture/recover-quarantine.js +453 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/backfill.js +5 -2
- package/dist/src/cli/commands/backfill.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts +12 -0
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -0
- package/dist/src/cli/commands/capture-recover.js +120 -0
- package/dist/src/cli/commands/capture-recover.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +10 -4
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/feedback.d.ts.map +1 -1
- package/dist/src/cli/commands/feedback.js +6 -2
- package/dist/src/cli/commands/feedback.js.map +1 -1
- package/dist/src/cli/commands/hooks-install.d.ts +19 -0
- package/dist/src/cli/commands/hooks-install.d.ts.map +1 -0
- package/dist/src/cli/commands/hooks-install.js +103 -0
- package/dist/src/cli/commands/hooks-install.js.map +1 -0
- package/dist/src/cli/commands/mcp-install.js +5 -2
- package/dist/src/cli/commands/mcp-install.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts +24 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +200 -21
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +6 -3
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts.map +1 -1
- package/dist/src/cli/commands/review.js +22 -7
- package/dist/src/cli/commands/review.js.map +1 -1
- package/dist/src/cli/commands/status.d.ts.map +1 -1
- package/dist/src/cli/commands/status.js +48 -2
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -1
- package/dist/src/cli/commands/token-issue.js +9 -1
- package/dist/src/cli/commands/token-issue.js.map +1 -1
- package/dist/src/cli/commands/triage.d.ts.map +1 -1
- package/dist/src/cli/commands/triage.js +7 -5
- package/dist/src/cli/commands/triage.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +26 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -0
- package/dist/src/cli/commands/update.js +130 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/default-config-path.d.ts +15 -0
- package/dist/src/cli/default-config-path.d.ts.map +1 -0
- package/dist/src/cli/default-config-path.js +27 -0
- package/dist/src/cli/default-config-path.js.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.d.ts +25 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js +85 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts +12 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.js +228 -0
- package/dist/src/cli/hooks-writers/claude-code.js.map +1 -0
- package/dist/src/cli/hooks-writers/errors.d.ts +16 -0
- package/dist/src/cli/hooks-writers/errors.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/errors.js +24 -0
- package/dist/src/cli/hooks-writers/errors.js.map +1 -0
- package/dist/src/cli/hooks-writers/index.d.ts +13 -0
- package/dist/src/cli/hooks-writers/index.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/index.js +26 -0
- package/dist/src/cli/hooks-writers/index.js.map +1 -0
- package/dist/src/cli/hooks-writers/types.d.ts +27 -0
- package/dist/src/cli/hooks-writers/types.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/types.js +9 -0
- package/dist/src/cli/hooks-writers/types.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +56 -1
- package/dist/src/cli/http-client.d.ts.map +1 -1
- package/dist/src/cli/http-client.js +140 -4
- package/dist/src/cli/http-client.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +27 -6
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +117 -7
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js +31 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts +3 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.js +16 -0
- package/dist/src/ingestion/inbox-core/extensions.js.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.js +22 -0
- package/dist/src/ingestion/inbox-core/idempotency.js.map +1 -0
- package/dist/src/ingestion/inbox-core/index.d.ts +19 -0
- package/dist/src/ingestion/inbox-core/index.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/index.js +19 -0
- package/dist/src/ingestion/inbox-core/index.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.js +23 -0
- package/dist/src/ingestion/inbox-core/source-detection.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts +11 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js +69 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts +70 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js +161 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -1
- package/dist/src/ingestion/inbox-watcher.js +34 -50
- package/dist/src/ingestion/inbox-watcher.js.map +1 -1
- package/dist/src/ingestion/indexer.d.ts +7 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -1
- package/dist/src/ingestion/indexer.js +36 -2
- package/dist/src/ingestion/indexer.js.map +1 -1
- package/dist/src/ingestion/metadata-extraction.d.ts +8 -5
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -1
- package/dist/src/ingestion/metadata-extraction.js +24 -5
- package/dist/src/ingestion/metadata-extraction.js.map +1 -1
- package/dist/src/ingestion/skip-quarantine.d.ts +10 -0
- package/dist/src/ingestion/skip-quarantine.d.ts.map +1 -0
- package/dist/src/ingestion/skip-quarantine.js +35 -0
- package/dist/src/ingestion/skip-quarantine.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
- package/dist/src/jobs/handlers/compact.js +25 -4
- package/dist/src/jobs/handlers/compact.js.map +1 -1
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
- package/dist/src/jobs/handlers/ingest.js +49 -24
- package/dist/src/jobs/handlers/ingest.js.map +1 -1
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reconcile.js +30 -8
- package/dist/src/jobs/handlers/reconcile.js.map +1 -1
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reindex.js +12 -2
- package/dist/src/jobs/handlers/reindex.js.map +1 -1
- package/dist/src/jobs/handlers/save.d.ts.map +1 -1
- package/dist/src/jobs/handlers/save.js +9 -2
- package/dist/src/jobs/handlers/save.js.map +1 -1
- package/dist/src/jobs/queue.d.ts +11 -0
- package/dist/src/jobs/queue.d.ts.map +1 -1
- package/dist/src/jobs/queue.js +18 -0
- package/dist/src/jobs/queue.js.map +1 -1
- package/dist/src/jobs/worker-entry.d.ts.map +1 -1
- package/dist/src/jobs/worker-entry.js +2 -0
- package/dist/src/jobs/worker-entry.js.map +1 -1
- package/dist/src/main.js +36 -4
- package/dist/src/main.js.map +1 -1
- package/dist/src/observability/embedding-events.d.ts +52 -0
- package/dist/src/observability/embedding-events.d.ts.map +1 -0
- package/dist/src/observability/embedding-events.js +149 -0
- package/dist/src/observability/embedding-events.js.map +1 -0
- package/dist/src/observability/index-events.d.ts +70 -0
- package/dist/src/observability/index-events.d.ts.map +1 -0
- package/dist/src/observability/index-events.js +148 -0
- package/dist/src/observability/index-events.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +7 -0
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
- package/dist/src/observability/tool-usage-stats.js +41 -5
- package/dist/src/observability/tool-usage-stats.js.map +1 -1
- package/dist/src/observability/tool-usage.d.ts +7 -7
- package/dist/src/observability/tool-usage.d.ts.map +1 -1
- package/dist/src/observability/tool-usage.js +78 -39
- package/dist/src/observability/tool-usage.js.map +1 -1
- package/dist/src/observability/version-check.d.ts +70 -0
- package/dist/src/observability/version-check.d.ts.map +1 -0
- package/dist/src/observability/version-check.js +197 -0
- package/dist/src/observability/version-check.js.map +1 -0
- package/dist/src/providers/ollama-embed.d.ts +2 -1
- package/dist/src/providers/ollama-embed.d.ts.map +1 -1
- package/dist/src/providers/ollama-embed.js +1 -0
- package/dist/src/providers/ollama-embed.js.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.d.ts +3 -3
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.js +18 -3
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
- package/dist/src/providers/stub.d.ts +2 -0
- package/dist/src/providers/stub.d.ts.map +1 -1
- package/dist/src/providers/stub.js +2 -0
- package/dist/src/providers/stub.js.map +1 -1
- package/dist/src/providers/types.d.ts +11 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/voyage.d.ts +2 -1
- package/dist/src/providers/voyage.d.ts.map +1 -1
- package/dist/src/providers/voyage.js +1 -0
- package/dist/src/providers/voyage.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +67 -1
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/friend-status.d.ts +202 -3
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +290 -7
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/storage/rebuild.d.ts +14 -1
- package/dist/src/storage/rebuild.d.ts.map +1 -1
- package/dist/src/storage/rebuild.js +160 -34
- package/dist/src/storage/rebuild.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,15 +5,18 @@
|
|
|
5
5
|
* Calls the Anthropic Messages API with the fast_model to extract:
|
|
6
6
|
* domain, intent, quality, topics, decisions, key_outputs
|
|
7
7
|
*
|
|
8
|
-
* Output is Zod-validated.
|
|
9
|
-
* can quarantine the item.
|
|
8
|
+
* Output is Zod-validated. Structural invalidity (missing fields, wrong
|
|
9
|
+
* types, empty `topics`) throws so the caller can quarantine the item.
|
|
10
|
+
* Enum drift on `domain` / `intent` / `quality` is normalized to a safe
|
|
11
|
+
* default and logged to stderr via `normalizedEnum` — visible but
|
|
12
|
+
* non-fatal.
|
|
10
13
|
*/
|
|
11
14
|
import { z } from "zod";
|
|
12
15
|
import type { MetadataExtractor, ConversationMetadata, RetryConfig } from "../providers/types.js";
|
|
13
16
|
export declare const ConversationMetadataSchema: z.ZodObject<{
|
|
14
|
-
domain: z.
|
|
15
|
-
intent: z.
|
|
16
|
-
quality: z.
|
|
17
|
+
domain: z.ZodEffects<z.ZodUnknown, "business" | "tech" | "personal" | "travel" | "health" | "finance" | "creative", unknown>;
|
|
18
|
+
intent: z.ZodEffects<z.ZodUnknown, "research" | "decision" | "brainstorm" | "build" | "learn" | "troubleshoot", unknown>;
|
|
19
|
+
quality: z.ZodEffects<z.ZodUnknown, "high" | "medium" | "low", unknown>;
|
|
17
20
|
topics: z.ZodArray<z.ZodString, "many">;
|
|
18
21
|
decisions: z.ZodArray<z.ZodString, "many">;
|
|
19
22
|
key_outputs: z.ZodArray<z.ZodString, "many">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-extraction.d.ts","sourceRoot":"","sources":["../../../src/ingestion/metadata-extraction.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"metadata-extraction.d.ts","sourceRoot":"","sources":["../../../src/ingestion/metadata-extraction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAiC/B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAOrC,CAAC;AAoCH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,IAAI,EAAE,yBAAyB;IAMrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;YASpD,OAAO;CA2DtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CA0BlE"}
|
|
@@ -5,16 +5,35 @@
|
|
|
5
5
|
* Calls the Anthropic Messages API with the fast_model to extract:
|
|
6
6
|
* domain, intent, quality, topics, decisions, key_outputs
|
|
7
7
|
*
|
|
8
|
-
* Output is Zod-validated.
|
|
9
|
-
* can quarantine the item.
|
|
8
|
+
* Output is Zod-validated. Structural invalidity (missing fields, wrong
|
|
9
|
+
* types, empty `topics`) throws so the caller can quarantine the item.
|
|
10
|
+
* Enum drift on `domain` / `intent` / `quality` is normalized to a safe
|
|
11
|
+
* default and logged to stderr via `normalizedEnum` — visible but
|
|
12
|
+
* non-fatal.
|
|
10
13
|
*/
|
|
11
14
|
import { z } from "zod";
|
|
12
15
|
import { DOMAINS, INTENTS, QUALITY_LEVELS, DEFAULT_RETRY_CONFIG, } from "../providers/types.js";
|
|
13
16
|
// --- Zod schema for extraction output validation ---
|
|
17
|
+
/**
|
|
18
|
+
* Normalize an LLM-emitted enum value: accept it if it matches the allowed
|
|
19
|
+
* set, otherwise remap to `fallback` and warn on stderr. Keeps ingest
|
|
20
|
+
* tolerant (we don't fail the whole record on a stray value) but makes
|
|
21
|
+
* extraction drift observable instead of silent — which is what
|
|
22
|
+
* `.catch(default)` was masking.
|
|
23
|
+
*/
|
|
24
|
+
function normalizedEnum(values, fallback, field) {
|
|
25
|
+
return z.unknown().transform((raw) => {
|
|
26
|
+
if (typeof raw === "string" && values.includes(raw)) {
|
|
27
|
+
return raw;
|
|
28
|
+
}
|
|
29
|
+
process.stderr.write(`metadata-extraction: ${field}=${JSON.stringify(raw)} not in [${values.join("|")}], remapped to "${fallback}"\n`);
|
|
30
|
+
return fallback;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
14
33
|
export const ConversationMetadataSchema = z.object({
|
|
15
|
-
domain:
|
|
16
|
-
intent:
|
|
17
|
-
quality:
|
|
34
|
+
domain: normalizedEnum(DOMAINS, "tech", "domain"),
|
|
35
|
+
intent: normalizedEnum(INTENTS, "research", "intent"),
|
|
36
|
+
quality: normalizedEnum(QUALITY_LEVELS, "medium", "quality"),
|
|
18
37
|
topics: z.array(z.string().min(1)).min(1),
|
|
19
38
|
decisions: z.array(z.string()),
|
|
20
39
|
key_outputs: z.array(z.string()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-extraction.js","sourceRoot":"","sources":["../../../src/ingestion/metadata-extraction.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"metadata-extraction.js","sourceRoot":"","sources":["../../../src/ingestion/metadata-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SkipReason = "empty_extracted_content" | "inbox_unsupported_extension";
|
|
2
|
+
export interface SkipQuarantineRecord {
|
|
3
|
+
kind: "indexer_skip";
|
|
4
|
+
reason: SkipReason;
|
|
5
|
+
source_path: string;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
quarantined_at: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function writeSkipQuarantine(dataDir: string, record: Omit<SkipQuarantineRecord, "kind" | "quarantined_at">): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=skip-quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-quarantine.d.ts","sourceRoot":"","sources":["../../../src/ingestion/skip-quarantine.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAClB,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAC5D,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quarantine record writer for the watcher/indexer path.
|
|
3
|
+
*
|
|
4
|
+
* When a watched file cannot be safely indexed (e.g. extraction yielded
|
|
5
|
+
* empty content, which would cause a Voyage 400), we record a structured
|
|
6
|
+
* skip event to `data/quarantine/` so the user can see why a file was
|
|
7
|
+
* dropped — instead of letting it surface only as a stderr line.
|
|
8
|
+
*
|
|
9
|
+
* Distinct from the conversation-level quarantine in `jobs/handlers/ingest.ts`
|
|
10
|
+
* (that one carries `conversation_id` + `content_preview`); this one carries
|
|
11
|
+
* `source_path` + `reason` + extractor metadata, which is what the watcher
|
|
12
|
+
* has on hand.
|
|
13
|
+
*/
|
|
14
|
+
import crypto from "node:crypto";
|
|
15
|
+
import path from "node:path";
|
|
16
|
+
import { atomicWrite } from "../storage/atomic.js";
|
|
17
|
+
export async function writeSkipQuarantine(dataDir, record) {
|
|
18
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
19
|
+
const hash = crypto
|
|
20
|
+
.createHash("sha256")
|
|
21
|
+
.update(record.source_path)
|
|
22
|
+
.digest("hex")
|
|
23
|
+
.slice(0, 12);
|
|
24
|
+
const file = path.join(dataDir, "quarantine", `indexer-skip_${record.reason}_${timestamp}_${hash}.json`);
|
|
25
|
+
const payload = {
|
|
26
|
+
kind: "indexer_skip",
|
|
27
|
+
reason: record.reason,
|
|
28
|
+
source_path: record.source_path,
|
|
29
|
+
...(record.metadata ? { metadata: record.metadata } : {}),
|
|
30
|
+
quarantined_at: new Date().toISOString(),
|
|
31
|
+
};
|
|
32
|
+
await atomicWrite(file, JSON.stringify(payload, null, 2));
|
|
33
|
+
return file;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=skip-quarantine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-quarantine.js","sourceRoot":"","sources":["../../../src/ingestion/skip-quarantine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAcnD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,MAA6D;IAE7D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,MAAM;SAChB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACpB,OAAO,EACP,YAAY,EACZ,gBAAgB,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI,IAAI,OAAO,CAC1D,CAAC;IAEF,MAAM,OAAO,GAAyB;QACpC,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACzC,CAAC;IAEF,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/compact.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AACvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/compact.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AACvG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAQ1D,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AASD,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAwBlE"}
|
|
@@ -32,6 +32,8 @@ import fs from "node:fs";
|
|
|
32
32
|
import path from "node:path";
|
|
33
33
|
import { getTable } from "../../storage/tables.js";
|
|
34
34
|
import { atomicWrite } from "../../storage/atomic.js";
|
|
35
|
+
import { recordEmbed } from "../../observability/embedding-events.js";
|
|
36
|
+
import { recordIndexWrite } from "../../observability/index-events.js";
|
|
35
37
|
const COMPACTION_DIR = "compaction";
|
|
36
38
|
const MANIFEST_SUFFIX = "_manifest.json";
|
|
37
39
|
// ---------------------------------------------------------------------------
|
|
@@ -100,7 +102,11 @@ async function handleCompaction(deps, dryRun) {
|
|
|
100
102
|
// Generate digest from conversations being moved
|
|
101
103
|
const entries = toMove.map(rowToEntry);
|
|
102
104
|
const digestContent = await deps.digestSummarizer.summarize(entries);
|
|
103
|
-
const digestEmbedding = await deps.embeddingProvider
|
|
105
|
+
const digestEmbedding = await recordEmbed(deps.dataDir, deps.embeddingProvider, {
|
|
106
|
+
pipeline: "compact",
|
|
107
|
+
operation: "digest_embedding",
|
|
108
|
+
input_count: 1,
|
|
109
|
+
}, () => deps.embeddingProvider.embed(digestContent.summary));
|
|
104
110
|
const now = new Date();
|
|
105
111
|
const digestId = crypto.randomUUID();
|
|
106
112
|
const conversationIds = toMove.map((r) => r.id);
|
|
@@ -125,7 +131,12 @@ async function handleCompaction(deps, dryRun) {
|
|
|
125
131
|
clearPriorEligibility(deps.dataDir, timestamp);
|
|
126
132
|
// --- Table mutations ---
|
|
127
133
|
// 1. Insert into cold (strip LanceDB internal fields)
|
|
128
|
-
await
|
|
134
|
+
await recordIndexWrite(deps.dataDir, {
|
|
135
|
+
table: "conversations_cold",
|
|
136
|
+
pipeline: "compact",
|
|
137
|
+
operation: "conversation_move_to_cold",
|
|
138
|
+
row_count: toMove.length,
|
|
139
|
+
}, () => coldTable.add(toMove.map(cleanConversationRow)));
|
|
129
140
|
// 2. Remove from hot
|
|
130
141
|
for (const row of toMove) {
|
|
131
142
|
await hotTable.delete(`id = '${row.id}'`);
|
|
@@ -160,7 +171,12 @@ async function handleCompaction(deps, dryRun) {
|
|
|
160
171
|
digest_type: "weekly",
|
|
161
172
|
created_at: now.toISOString(),
|
|
162
173
|
};
|
|
163
|
-
await
|
|
174
|
+
await recordIndexWrite(deps.dataDir, {
|
|
175
|
+
table: "digests",
|
|
176
|
+
pipeline: "compact",
|
|
177
|
+
operation: "digest_upsert",
|
|
178
|
+
row_count: 1,
|
|
179
|
+
}, () => digestTable.add([digestRow]));
|
|
164
180
|
// --- Mark this compaction as rollback-eligible (all mutations succeeded) ---
|
|
165
181
|
manifest.eligible = true;
|
|
166
182
|
manifest.digest_filename = digestFileName;
|
|
@@ -199,7 +215,12 @@ async function handleRollback(deps, dryRun) {
|
|
|
199
215
|
.where(`id = '${convId}'`)
|
|
200
216
|
.toArray());
|
|
201
217
|
if (rows.length > 0) {
|
|
202
|
-
await
|
|
218
|
+
await recordIndexWrite(deps.dataDir, {
|
|
219
|
+
table: "conversations_hot",
|
|
220
|
+
pipeline: "compact",
|
|
221
|
+
operation: "conversation_rollback_to_hot",
|
|
222
|
+
row_count: rows.length,
|
|
223
|
+
}, () => hotTable.add(rows.map(cleanConversationRow)));
|
|
203
224
|
await coldTable.delete(`id = '${convId}'`);
|
|
204
225
|
}
|
|
205
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/jobs/handlers/compact.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/jobs/handlers/compact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/ingest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/ingest.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAKnE,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,wBAAwB,CAAC,EAAE,CACzB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,iBAAiB,KACpB,iBAAiB,CAAC;CACxB;AAiDD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CA4LvE"}
|
|
@@ -17,9 +17,11 @@
|
|
|
17
17
|
* an upload are indexed, or none are. No partial ingest.
|
|
18
18
|
*
|
|
19
19
|
* Replay safety:
|
|
20
|
-
* - Row ID is
|
|
20
|
+
* - Row ID is deterministic on (source, provider conversation ID), so a
|
|
21
|
+
* re-imported monthly export collapses to the same row across jobs
|
|
21
22
|
* - Raw files are written before table insert (crash safety)
|
|
22
|
-
* - Existing rows are skipped
|
|
23
|
+
* - Existing rows in conversations_hot OR conversations_cold are skipped
|
|
24
|
+
* on replay (compacted-then-re-imported conversations don't re-enter hot)
|
|
23
25
|
*/
|
|
24
26
|
import crypto from "node:crypto";
|
|
25
27
|
import fs from "node:fs";
|
|
@@ -31,7 +33,10 @@ import { parseChatGPTWeb } from "../../ingestion/parsers/chatgpt-web.js";
|
|
|
31
33
|
import { parseClaudeWeb } from "../../ingestion/parsers/claude-web.js";
|
|
32
34
|
import { parseGeminiWeb } from "../../ingestion/parsers/gemini-web.js";
|
|
33
35
|
import { parseGrokWeb } from "../../ingestion/parsers/grok-web.js";
|
|
36
|
+
import { stableConversationRowId } from "../../ingestion/inbox-core/conversation-key.js";
|
|
34
37
|
import { CodexCliMetadataExtractor } from "../../providers/codex-cli-metadata-extraction.js";
|
|
38
|
+
import { recordEmbed } from "../../observability/embedding-events.js";
|
|
39
|
+
import { recordIndexWrite } from "../../observability/index-events.js";
|
|
35
40
|
/** Map of source -> parser. Only fixture-backed sources are registered. */
|
|
36
41
|
const PARSERS = {
|
|
37
42
|
chatgpt_web: parseChatGPTWeb,
|
|
@@ -39,17 +44,6 @@ const PARSERS = {
|
|
|
39
44
|
gemini_web: parseGeminiWeb,
|
|
40
45
|
grok_web: parseGrokWeb,
|
|
41
46
|
};
|
|
42
|
-
/**
|
|
43
|
-
* Generate a stable row ID from the source conversation ID and job root.
|
|
44
|
-
* This ensures replay safety: retries converge on the same row ID.
|
|
45
|
-
*/
|
|
46
|
-
function stableRowId(conversationId, jobRootId) {
|
|
47
|
-
return crypto
|
|
48
|
-
.createHash("sha256")
|
|
49
|
-
.update(`${jobRootId}:${conversationId}`)
|
|
50
|
-
.digest("hex")
|
|
51
|
-
.slice(0, 32);
|
|
52
|
-
}
|
|
53
47
|
/**
|
|
54
48
|
* Walk the retry_of chain to the root job (same logic as save handler).
|
|
55
49
|
*/
|
|
@@ -80,7 +74,6 @@ export function createIngestHandler(deps) {
|
|
|
80
74
|
const rootJob = resolveChainRoot(job, deps.queue);
|
|
81
75
|
const rootPayload = rootJob.payload ??
|
|
82
76
|
job.payload;
|
|
83
|
-
const jobRootId = rootJob.id;
|
|
84
77
|
const payload = rootPayload;
|
|
85
78
|
if (!payload?.source || !payload.fileData) {
|
|
86
79
|
throw new Error("Invalid ingest job payload: missing source or fileData");
|
|
@@ -101,6 +94,7 @@ export function createIngestHandler(deps) {
|
|
|
101
94
|
}
|
|
102
95
|
const rawDir = path.join(deps.dataDir, "raw", "conversations", payload.rawSource ?? payload.source);
|
|
103
96
|
const table = getTable("conversations_hot");
|
|
97
|
+
const coldTable = getTable("conversations_cold");
|
|
104
98
|
// --- Phase 1: Process all conversations (no side effects) ---
|
|
105
99
|
// Extract metadata + embed for every conversation. If any fails,
|
|
106
100
|
// quarantine that one and throw — nothing has been persisted yet.
|
|
@@ -110,13 +104,26 @@ export function createIngestHandler(deps) {
|
|
|
110
104
|
const processed = [];
|
|
111
105
|
const recoverable = [];
|
|
112
106
|
for (const conversation of parsed) {
|
|
113
|
-
|
|
114
|
-
//
|
|
115
|
-
|
|
107
|
+
// Row id is keyed on (source, provider conversation id) so a
|
|
108
|
+
// re-imported monthly export collapses to the same row instead
|
|
109
|
+
// of duplicating every conversation under a fresh job-root id.
|
|
110
|
+
const rowId = stableConversationRowId(payload.source, conversation.id);
|
|
111
|
+
// Replay guard: skip already-indexed conversations.
|
|
112
|
+
// Check both hot AND cold — a conversation compacted into cold
|
|
113
|
+
// is exactly the kind of "old" conversation a monthly full export
|
|
114
|
+
// re-includes; without the cold check we'd duplicate it back into hot.
|
|
115
|
+
const existingHot = await table
|
|
116
|
+
.query()
|
|
117
|
+
.where(`id = '${rowId}'`)
|
|
118
|
+
.toArray();
|
|
119
|
+
if (existingHot.length > 0) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const existingCold = await coldTable
|
|
116
123
|
.query()
|
|
117
124
|
.where(`id = '${rowId}'`)
|
|
118
125
|
.toArray();
|
|
119
|
-
if (
|
|
126
|
+
if (existingCold.length > 0) {
|
|
120
127
|
continue;
|
|
121
128
|
}
|
|
122
129
|
// Crash recovery: raw file exists but row missing → defer to Phase 2.
|
|
@@ -135,7 +142,11 @@ export function createIngestHandler(deps) {
|
|
|
135
142
|
}
|
|
136
143
|
let embedding;
|
|
137
144
|
try {
|
|
138
|
-
embedding = await deps.embeddingProvider
|
|
145
|
+
embedding = await recordEmbed(deps.dataDir, deps.embeddingProvider, {
|
|
146
|
+
pipeline: "ingest_job",
|
|
147
|
+
operation: "conversation_embedding",
|
|
148
|
+
input_count: 1,
|
|
149
|
+
}, () => deps.embeddingProvider.embed(conversation.content));
|
|
139
150
|
}
|
|
140
151
|
catch (err) {
|
|
141
152
|
await quarantine(deps.dataDir, payload.source, conversation, err);
|
|
@@ -190,11 +201,16 @@ export function createIngestHandler(deps) {
|
|
|
190
201
|
indexed_at: new Date().toISOString(),
|
|
191
202
|
idempotency_key: payload.idempotency_key ?? "",
|
|
192
203
|
};
|
|
193
|
-
await
|
|
204
|
+
await recordIndexWrite(deps.dataDir, {
|
|
205
|
+
table: "conversations_hot",
|
|
206
|
+
pipeline: "ingest_job",
|
|
207
|
+
operation: "conversation_upsert",
|
|
208
|
+
row_count: 1,
|
|
209
|
+
}, () => table.add([row]));
|
|
194
210
|
}
|
|
195
211
|
// Recover rows from existing raw files (crash recovery).
|
|
196
212
|
for (const item of recoverable) {
|
|
197
|
-
await reindexFromRaw(item.rawPath, item.rowId, payload, table, deps.embeddingProvider);
|
|
213
|
+
await reindexFromRaw(item.rawPath, item.rowId, payload, table, deps.embeddingProvider, deps.dataDir);
|
|
198
214
|
}
|
|
199
215
|
};
|
|
200
216
|
}
|
|
@@ -209,11 +225,15 @@ function resolveMetadataExtractor(payload, deps) {
|
|
|
209
225
|
* Raw files written by Phase 2 include full metadata, so we can
|
|
210
226
|
* rebuild the row without calling the extractor again.
|
|
211
227
|
*/
|
|
212
|
-
async function reindexFromRaw(rawPath, rowId, payload, table, embeddingProvider) {
|
|
228
|
+
async function reindexFromRaw(rawPath, rowId, payload, table, embeddingProvider, dataDir) {
|
|
213
229
|
const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8"));
|
|
214
230
|
const content = raw.content ?? "";
|
|
215
231
|
const summary = raw.summary ?? "";
|
|
216
|
-
const embedding = await
|
|
232
|
+
const embedding = await recordEmbed(dataDir, embeddingProvider, {
|
|
233
|
+
pipeline: "ingest_job",
|
|
234
|
+
operation: "reindex_from_raw",
|
|
235
|
+
input_count: 1,
|
|
236
|
+
}, () => embeddingProvider.embed(content || summary));
|
|
217
237
|
const row = {
|
|
218
238
|
id: rowId,
|
|
219
239
|
content,
|
|
@@ -229,7 +249,12 @@ async function reindexFromRaw(rawPath, rowId, payload, table, embeddingProvider)
|
|
|
229
249
|
indexed_at: new Date().toISOString(),
|
|
230
250
|
idempotency_key: payload.idempotency_key ?? "",
|
|
231
251
|
};
|
|
232
|
-
await
|
|
252
|
+
await recordIndexWrite(dataDir, {
|
|
253
|
+
table: "conversations_hot",
|
|
254
|
+
pipeline: "ingest_job",
|
|
255
|
+
operation: "conversation_reindex_from_raw",
|
|
256
|
+
row_count: 1,
|
|
257
|
+
}, () => table.add([row]));
|
|
233
258
|
}
|
|
234
259
|
/**
|
|
235
260
|
* Quarantine a failed conversation to data/quarantine/.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/jobs/handlers/ingest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/jobs/handlers/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAavE,2EAA2E;AAC3E,MAAM,OAAO,GAAuC;IAClD,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAE,YAAY;CACvB,CAAC;AAgBF;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAQ,EAAE,KAAe;IACjD,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,OAAO,CAAC,QAAQ,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,MAAM;QACnB,OAAO,GAAG,MAAM,CAAC;QACjB,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,OAAO,KAAK,EAAE,GAAQ,EAAiB,EAAE;QACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,OAAqC;YAC/D,GAAG,CAAC,OAAyB,CAAC;QAEjC,MAAM,OAAO,GAAG,WAAW,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,CACnF,OAAO,EACP,IAAI,CACL,CAAC;QAEF,qCAAqC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/D,iCAAiC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,CAAC,MAAM,0BAA0B,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,sDAAsD;YACtD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CACtB,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,eAAe,EACf,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CACpC,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAEjD,+DAA+D;QAC/D,iEAAiE;QACjE,kEAAkE;QAClE,6DAA6D;QAC7D,8DAA8D;QAC9D,wCAAwC;QACxC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,MAAM,WAAW,GAA8B,EAAE,CAAC;QAElD,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE,CAAC;YAClC,6DAA6D;YAC7D,+DAA+D;YAC/D,+DAA+D;YAC/D,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YAEvE,oDAAoD;YACpD,+DAA+D;YAC/D,kEAAkE;YAClE,uEAAuE;YACvE,MAAM,WAAW,GAAG,MAAM,KAAK;iBAC5B,KAAK,EAAE;iBACP,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC;iBACxB,OAAO,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,SAAS;iBACjC,KAAK,EAAE;iBACP,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC;iBACxB,OAAO,EAAE,CAAC;YACb,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,sEAAsE;YACtE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,eAAe,EAAE,CAAC;gBACpB,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtD,SAAS;YACX,CAAC;YAED,IAAI,QAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,iBAAiB,CAAC,eAAe,CAChD,YAAY,CAAC,OAAO,CACrB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,IAAI,SAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,WAAW,CAC3B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,iBAAiB,EACtB;oBACE,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,wBAAwB;oBACnC,WAAW,EAAE,CAAC;iBACf,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CACzD,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,+BAA+B;QACzC,CAAC;QAED,8DAA8D;QAC9D,0DAA0D;QAC1D,+DAA+D;QAC/D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,aAAa,EAAE,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAC9B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;gBACvC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;gBAClC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC9B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAClC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;gBACtC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,GAAG,CAAC,oBAAoB;oBACtB,CAAC,CAAC,EAAE,qBAAqB,EAAE,oBAAoB,EAAE;oBACjD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;YACF,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAoB;gBAC3B,EAAE,EAAE,IAAI,CAAC,KAAK;gBACd,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;gBAClC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAChC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAClD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACtD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;aAC/C,CAAC;YAEF,MAAM,gBAAgB,CACpB,IAAI,CAAC,OAAO,EACZ;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,qBAAqB;gBAChC,SAAS,EAAE,CAAC;aACb,EACD,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,cAAc,CAClB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,OAAO,EACP,KAAK,EACL,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,OAAO,CACb,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAsB,EACtB,IAAuB;IAEvB,IAAI,OAAO,CAAC,4BAA4B,KAAK,WAAW,EAAE,CAAC;QACzD,OAAO,IAAI,yBAAyB,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,KAAa,EACb,OAAsB,EACtB,KAAkC,EAClC,iBAAoC,EACpC,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CACP,CAAC;IAE7B,MAAM,OAAO,GAAI,GAAG,CAAC,OAAkB,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAI,GAAG,CAAC,OAAkB,IAAI,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,OAAO,EACP,iBAAiB,EACjB;QACE,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,kBAAkB;QAC7B,WAAW,EAAE,CAAC;KACf,EACD,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,CAClD,CAAC;IAEF,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,KAAK;QACT,OAAO;QACP,OAAO;QACP,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAG,GAAG,CAAC,MAAoC,IAAI,MAAM;QAC3D,MAAM,EAAG,GAAG,CAAC,MAAoC,IAAI,OAAO;QAC5D,OAAO,EAAG,GAAG,CAAC,OAAsC,IAAI,QAAQ;QAChE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC,MAAmB,IAAI,EAAE,CAAC;QACtD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC,SAAsB,IAAI,EAAE,CAAC;QAC5D,WAAW,EAAE,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC,WAAwB,IAAI,EAAE,CAAC;QAChE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;KAC/C,CAAC;IAEF,MAAM,gBAAgB,CACpB,OAAO,EACP;QACE,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,CAAC;KACb,EACD,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,OAAe,EACf,MAAc,EACd,YAAgC,EAChC,KAAc;IAEd,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,MAAM;SAChB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC5D,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,OAAO,EACP,YAAY,EACZ,GAAG,MAAM,IAAI,SAAS,IAAI,IAAI,OAAO,CACtC,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,MAAM;QACN,eAAe,EAAE,YAAY,CAAC,EAAE;QAChC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QACpD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7D,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACzC,CAAC;IAEF,MAAM,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/reconcile.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../../src/jobs/handlers/reconcile.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAiB1D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,mEAAmE;IACnE,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAUD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CA4CtE"}
|
|
@@ -24,6 +24,8 @@ import { CONVERSATION_SOURCES } from "../../providers/types.js";
|
|
|
24
24
|
import { isWatcherPathIgnored } from "../../ingestion/watcher.js";
|
|
25
25
|
import { walkDirectory } from "../../ingestion/scanner.js";
|
|
26
26
|
import { buildIgnoredPaths } from "../../ingestion/ignored-paths.js";
|
|
27
|
+
import { recordEmbed } from "../../observability/embedding-events.js";
|
|
28
|
+
import { recordIndexWrite } from "../../observability/index-events.js";
|
|
27
29
|
import { Indexer, fileId } from "../../ingestion/indexer.js";
|
|
28
30
|
import { isSupported } from "../../ingestion/extractor.js";
|
|
29
31
|
import { getTable } from "../../storage/tables.js";
|
|
@@ -147,6 +149,7 @@ async function scannerPostPass(deps) {
|
|
|
147
149
|
sourceScope: owner.scope,
|
|
148
150
|
clientName: owner.client_name ?? "",
|
|
149
151
|
allowedRoots: [owner.path],
|
|
152
|
+
dataDir: deps.dataDir,
|
|
150
153
|
...(isLocal ? { tableName: "structured_docs_local" } : {}),
|
|
151
154
|
});
|
|
152
155
|
};
|
|
@@ -246,6 +249,7 @@ async function reconcileStructuredDocs(deps, report) {
|
|
|
246
249
|
sourceScope: source.scope,
|
|
247
250
|
clientName: source.client_name ?? "",
|
|
248
251
|
allowedRoots: [source.path],
|
|
252
|
+
dataDir: deps.dataDir,
|
|
249
253
|
...(isLocal ? { tableName: "structured_docs_local" } : {}),
|
|
250
254
|
});
|
|
251
255
|
try {
|
|
@@ -341,7 +345,7 @@ async function reconcileConversations(deps, report) {
|
|
|
341
345
|
if (indexedIds.has(id))
|
|
342
346
|
continue;
|
|
343
347
|
try {
|
|
344
|
-
await reindexConversation(deps.embeddingProvider, id, rawPath);
|
|
348
|
+
await reindexConversation(deps.embeddingProvider, id, rawPath, deps.dataDir);
|
|
345
349
|
report.missing_reindexed++;
|
|
346
350
|
}
|
|
347
351
|
catch (err) {
|
|
@@ -385,12 +389,16 @@ function extractIdFromFilename(filename) {
|
|
|
385
389
|
const match = filename.match(/^[^_]+_(.+)\.json$/);
|
|
386
390
|
return match?.[1];
|
|
387
391
|
}
|
|
388
|
-
async function reindexConversation(embedding, id, rawPath) {
|
|
392
|
+
async function reindexConversation(embedding, id, rawPath, dataDir) {
|
|
389
393
|
const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8"));
|
|
390
394
|
const summary = raw.summary ?? "";
|
|
391
395
|
// Ingest raw files store full content separately; save raw files use summary as content.
|
|
392
396
|
const content = raw.content ?? summary;
|
|
393
|
-
const vec = await
|
|
397
|
+
const vec = await recordEmbed(dataDir, embedding, {
|
|
398
|
+
pipeline: "reconcile",
|
|
399
|
+
operation: "reindex_conversation",
|
|
400
|
+
input_count: 1,
|
|
401
|
+
}, () => embedding.embed(content || summary));
|
|
394
402
|
const row = {
|
|
395
403
|
id,
|
|
396
404
|
content,
|
|
@@ -406,7 +414,12 @@ async function reindexConversation(embedding, id, rawPath) {
|
|
|
406
414
|
indexed_at: new Date().toISOString(),
|
|
407
415
|
idempotency_key: raw.idempotency_key ?? "",
|
|
408
416
|
};
|
|
409
|
-
await
|
|
417
|
+
await recordIndexWrite(dataDir, {
|
|
418
|
+
table: "conversations_hot",
|
|
419
|
+
pipeline: "reconcile",
|
|
420
|
+
operation: "reindex_conversation",
|
|
421
|
+
row_count: 1,
|
|
422
|
+
}, () => getTable("conversations_hot").add([row]));
|
|
410
423
|
}
|
|
411
424
|
// ---------------------------------------------------------------------------
|
|
412
425
|
// Digests: data/raw/digests/ -> digests table
|
|
@@ -442,7 +455,7 @@ async function reconcileDigests(deps, report) {
|
|
|
442
455
|
if (indexedIds.has(id))
|
|
443
456
|
continue;
|
|
444
457
|
try {
|
|
445
|
-
await reindexDigest(deps.embeddingProvider, rawPath);
|
|
458
|
+
await reindexDigest(deps.embeddingProvider, rawPath, deps.dataDir);
|
|
446
459
|
report.missing_reindexed++;
|
|
447
460
|
}
|
|
448
461
|
catch (err) {
|
|
@@ -457,10 +470,14 @@ async function reconcileDigests(deps, report) {
|
|
|
457
470
|
}
|
|
458
471
|
}
|
|
459
472
|
}
|
|
460
|
-
async function reindexDigest(embedding, rawPath) {
|
|
473
|
+
async function reindexDigest(embedding, rawPath, dataDir) {
|
|
461
474
|
const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8"));
|
|
462
475
|
const summary = raw.summary ?? raw.content ?? "";
|
|
463
|
-
const vec = await embedding
|
|
476
|
+
const vec = await recordEmbed(dataDir, embedding, {
|
|
477
|
+
pipeline: "reconcile",
|
|
478
|
+
operation: "reindex_digest",
|
|
479
|
+
input_count: 1,
|
|
480
|
+
}, () => embedding.embed(summary));
|
|
464
481
|
const row = {
|
|
465
482
|
id: raw.id,
|
|
466
483
|
content: raw.content ?? "",
|
|
@@ -471,6 +488,11 @@ async function reindexDigest(embedding, rawPath) {
|
|
|
471
488
|
digest_type: raw.digest_type ?? "weekly",
|
|
472
489
|
created_at: raw.created_at ?? new Date().toISOString(),
|
|
473
490
|
};
|
|
474
|
-
await
|
|
491
|
+
await recordIndexWrite(dataDir, {
|
|
492
|
+
table: "digests",
|
|
493
|
+
pipeline: "reconcile",
|
|
494
|
+
operation: "reindex_digest",
|
|
495
|
+
row_count: 1,
|
|
496
|
+
}, () => getTable("digests").add([row]));
|
|
475
497
|
}
|
|
476
498
|
//# sourceMappingURL=reconcile.js.map
|