@wirecat/cli-core 0.326.0 → 0.327.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/store/document-transfer/digest.d.ts +2 -0
  2. package/dist/store/document-transfer/digest.d.ts.map +1 -0
  3. package/dist/store/document-transfer/digest.js +3 -0
  4. package/dist/store/document-transfer/digest.js.map +1 -0
  5. package/dist/store/document-transfer/index.d.ts +7 -0
  6. package/dist/store/document-transfer/index.d.ts.map +1 -0
  7. package/dist/store/document-transfer/index.js +115 -0
  8. package/dist/store/document-transfer/index.js.map +1 -0
  9. package/dist/store/document-transfer/model.d.ts +69 -0
  10. package/dist/store/document-transfer/model.d.ts.map +1 -0
  11. package/dist/store/document-transfer/model.js +2 -0
  12. package/dist/store/document-transfer/model.js.map +1 -0
  13. package/dist/store/index.d.ts +2 -0
  14. package/dist/store/index.d.ts.map +1 -1
  15. package/dist/store/index.js +1 -0
  16. package/dist/store/index.js.map +1 -1
  17. package/dist/store/sqlite/document-transfer/apply.d.ts +4 -0
  18. package/dist/store/sqlite/document-transfer/apply.d.ts.map +1 -0
  19. package/dist/store/sqlite/document-transfer/apply.js +179 -0
  20. package/dist/store/sqlite/document-transfer/apply.js.map +1 -0
  21. package/dist/store/sqlite/document-transfer/people.d.ts +10 -0
  22. package/dist/store/sqlite/document-transfer/people.d.ts.map +1 -0
  23. package/dist/store/sqlite/document-transfer/people.js +75 -0
  24. package/dist/store/sqlite/document-transfer/people.js.map +1 -0
  25. package/dist/store/sqlite/document-transfer/plan.d.ts +12 -0
  26. package/dist/store/sqlite/document-transfer/plan.d.ts.map +1 -0
  27. package/dist/store/sqlite/document-transfer/plan.js +195 -0
  28. package/dist/store/sqlite/document-transfer/plan.js.map +1 -0
  29. package/dist/store/sqlite/document-transfer/snapshot.d.ts +10 -0
  30. package/dist/store/sqlite/document-transfer/snapshot.d.ts.map +1 -0
  31. package/dist/store/sqlite/document-transfer/snapshot.js +183 -0
  32. package/dist/store/sqlite/document-transfer/snapshot.js.map +1 -0
  33. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  34. package/dist/store/sqlite/manifest.js +1 -0
  35. package/dist/store/sqlite/manifest.js.map +1 -1
  36. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  37. package/dist/store/sqlite/migrations.generated.js +6 -0
  38. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  39. package/dist/store/sqlite/schema/document-index-pending.d.ts +40 -0
  40. package/dist/store/sqlite/schema/document-index-pending.d.ts.map +1 -0
  41. package/dist/store/sqlite/schema/document-index-pending.js +6 -0
  42. package/dist/store/sqlite/schema/document-index-pending.js.map +1 -0
  43. package/dist/store/sqlite/schema/document-transfers.d.ts +104 -0
  44. package/dist/store/sqlite/schema/document-transfers.d.ts.map +1 -0
  45. package/dist/store/sqlite/schema/document-transfers.js +10 -0
  46. package/dist/store/sqlite/schema/document-transfers.js.map +1 -0
  47. package/dist/store/sqlite/schema.d.ts +2 -39
  48. package/dist/store/sqlite/schema.d.ts.map +1 -1
  49. package/dist/store/sqlite/schema.js +2 -4
  50. package/dist/store/sqlite/schema.js.map +1 -1
  51. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export declare const digest: (value: unknown) => string;
2
+ //# sourceMappingURL=digest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../../src/store/document-transfer/digest.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,UAAW,OAAO,WAAqE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { createHash } from "node:crypto";
2
+ export const digest = (value) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
3
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../../src/store/document-transfer/digest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { DocumentTransferOptions } from "./model.js";
2
+ export type { DocumentTransferOptions, DocumentTransferPreview, DocumentTransferReceipt } from "./model.js";
3
+ export declare const previewDocumentTransfer: (options: DocumentTransferOptions) => Promise<import("./model.js").DocumentTransferPreview>;
4
+ export declare const applyDocumentTransfer: (options: DocumentTransferOptions & {
5
+ expected_fingerprint: string;
6
+ }) => Promise<import("./model.js").DocumentTransferReceipt>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/document-transfer/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAkE3G,eAAO,MAAM,uBAAuB,YAAmB,uBAAuB,0DAkB7E,CAAA;AAED,eAAO,MAAM,qBAAqB,YAAmB,uBAAuB,GAAG;IAAE,oBAAoB,EAAE,MAAM,CAAA;CAAE,0DA0C9G,CAAA"}
@@ -0,0 +1,115 @@
1
+ import { realpathSync, statSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { CliError } from "@wirecat/cli-base";
4
+ import { MIGRATIONS, migrate } from "../migrations.js";
5
+ import { applyTransfer } from "../sqlite/document-transfer/apply.js";
6
+ import { planTransfer } from "../sqlite/document-transfer/plan.js";
7
+ import { transferSnapshot } from "../sqlite/document-transfer/snapshot.js";
8
+ import { openSqlite } from "../sqlite/open.js";
9
+ import { openStoreContext } from "../sqlite/open-store.js";
10
+ import { digest } from "./digest.js";
11
+ const locations = (options) => {
12
+ for (const value of [options.source, options.destination, options.collection])
13
+ if (typeof value !== "string" || !value.trim())
14
+ throw new CliError("validation_error", "transfer source, destination and collection are required");
15
+ if (!statSync(options.source, { throwIfNoEntry: false })?.isFile())
16
+ throw new CliError("not_found", "the source store does not exist as a file");
17
+ const source = realpathSync(options.source), destination = resolve(options.destination);
18
+ const left = statSync(source), right = statSync(destination, { throwIfNoEntry: false });
19
+ if (right && (!right.isFile() || (left.dev === right.dev && left.ino === right.ino)))
20
+ throw new CliError("validation_error", "the source and destination must be different ordinary store files");
21
+ const bindings = options.bindings ?? {};
22
+ if (!bindings ||
23
+ typeof bindings !== "object" ||
24
+ Array.isArray(bindings) ||
25
+ Object.values(bindings).some((value) => typeof value !== "string" || !value.trim()))
26
+ throw new CliError("validation_error", "transfer bindings must map source references to destination references");
27
+ return { source, destination, sourceKey: digest([left.dev, left.ino, left.birthtimeMs]), bindings };
28
+ };
29
+ const openSource = async (path) => {
30
+ const opened = await openSqlite(path, { readOnly: true });
31
+ try {
32
+ const row = opened.database
33
+ .prepare("SELECT version,min_compatible FROM schema_migrations ORDER BY version DESC LIMIT 1")
34
+ .get();
35
+ const version = Number(row?.version), minimum = Number(row?.min_compatible);
36
+ if (!Number.isSafeInteger(version) ||
37
+ version < 2 ||
38
+ version > (MIGRATIONS.at(-1)?.version ?? 0) ||
39
+ !Number.isSafeInteger(minimum) ||
40
+ minimum < 1 ||
41
+ minimum > version ||
42
+ minimum > (MIGRATIONS.at(-1)?.version ?? 0))
43
+ throw new CliError("configuration_error", "the store schema is not compatible with document annotation transfer; upgrade a separate copy first");
44
+ return opened;
45
+ }
46
+ catch (error) {
47
+ opened.database.close();
48
+ if (error instanceof CliError)
49
+ throw error;
50
+ throw new CliError("configuration_error", "the store has no readable annotation schema; it was not changed");
51
+ }
52
+ };
53
+ const openPreviewTarget = async (path) => {
54
+ if (statSync(path, { throwIfNoEntry: false }))
55
+ return openSource(path);
56
+ const target = await openSqlite(":memory:");
57
+ try {
58
+ migrate(target.database);
59
+ return target;
60
+ }
61
+ catch (error) {
62
+ target.database.close();
63
+ throw error;
64
+ }
65
+ };
66
+ export const previewDocumentTransfer = async (options) => {
67
+ const location = locations(options);
68
+ const source = await openSource(location.source);
69
+ try {
70
+ const target = await openPreviewTarget(location.destination);
71
+ try {
72
+ return planTransfer(target.database, transferSnapshot(source.database, options.collection), location.sourceKey, location.bindings).preview;
73
+ }
74
+ finally {
75
+ target.database.close();
76
+ }
77
+ }
78
+ finally {
79
+ source.database.close();
80
+ }
81
+ };
82
+ export const applyDocumentTransfer = async (options) => {
83
+ if (!/^[a-f0-9]{64}$/.test(options.expected_fingerprint))
84
+ throw new CliError("validation_error", "apply requires the fingerprint returned by a transfer preview");
85
+ const location = locations(options);
86
+ const source = await openSource(location.source);
87
+ try {
88
+ const snapshot = transferSnapshot(source.database, options.collection);
89
+ const check = await openPreviewTarget(location.destination);
90
+ try {
91
+ const preview = planTransfer(check.database, snapshot, location.sourceKey, location.bindings).preview;
92
+ if (preview.fingerprint !== options.expected_fingerprint)
93
+ throw new CliError("validation_error", "the transfer preview changed; preview it again before applying");
94
+ if (!preview.ready)
95
+ throw new CliError("configuration_error", "the transfer has unresolved references or conflicts; preview it before applying");
96
+ }
97
+ finally {
98
+ check.database.close();
99
+ }
100
+ const target = await openStoreContext({ path: location.destination, env: options.env });
101
+ try {
102
+ const receipt = applyTransfer(target.database, snapshot, location.sourceKey, location.bindings, options.expected_fingerprint, target.now);
103
+ if (digest(transferSnapshot(source.database, options.collection)) !== digest(snapshot))
104
+ throw new CliError("configuration_error", "source annotations changed during the transfer; the source and copied snapshot were retained, keep the original store selected");
105
+ return receipt;
106
+ }
107
+ finally {
108
+ target.database.close();
109
+ }
110
+ }
111
+ finally {
112
+ source.database.close();
113
+ }
114
+ };
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/document-transfer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export type TransferValues = Record<string, string | number | null>;
2
+ export type TransferKind = "document" | "note" | "memory" | "fact";
3
+ export interface TransferEntity {
4
+ key: string;
5
+ kind: TransferKind;
6
+ values: TransferValues;
7
+ revisions: TransferValues[];
8
+ }
9
+ export interface TransferExternal {
10
+ key: string;
11
+ reference: string;
12
+ kind: string;
13
+ owner?: boolean;
14
+ bot?: {
15
+ name: string;
16
+ kind: string;
17
+ };
18
+ collection?: string;
19
+ external_id?: string;
20
+ document_fingerprint?: string;
21
+ person?: {
22
+ name: string | null;
23
+ identities: TransferValues[];
24
+ };
25
+ }
26
+ export interface TransferSnapshot {
27
+ collection: TransferValues;
28
+ entities: TransferEntity[];
29
+ taggings: TransferValues[];
30
+ links: TransferValues[];
31
+ aliases: TransferValues[];
32
+ external: TransferExternal[];
33
+ }
34
+ export interface DocumentTransferOptions {
35
+ source: string;
36
+ destination: string;
37
+ collection: string;
38
+ env?: NodeJS.ProcessEnv;
39
+ /** Explicit source-reference to destination-reference decisions, never display names. */
40
+ bindings?: Record<string, string>;
41
+ }
42
+ export interface DocumentTransferPreview {
43
+ fingerprint: string;
44
+ source_documents: {
45
+ external_id: string;
46
+ content_hash: string | null;
47
+ }[];
48
+ counts: {
49
+ documents: number;
50
+ notes: number;
51
+ memories: number;
52
+ facts: number;
53
+ tags: number;
54
+ links: number;
55
+ people: number;
56
+ identities: number;
57
+ authors: number;
58
+ aliases: number;
59
+ };
60
+ missing_bindings: string[];
61
+ conflicts: string[];
62
+ already_transferred: boolean;
63
+ ready: boolean;
64
+ }
65
+ export interface DocumentTransferReceipt extends DocumentTransferPreview {
66
+ references: Record<string, string>;
67
+ documents: Record<string, string>;
68
+ }
69
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/store/document-transfer/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAA;AACnE,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAElE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,EAAE,cAAc,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,cAAc,EAAE,CAAA;KAAE,CAAA;CAC/D;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,cAAc,CAAA;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;IACxE,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/store/document-transfer/model.ts"],"names":[],"mappings":""}
@@ -2,6 +2,8 @@ export type { ContextEvidenceItem, ContextEvidencePage, ContextEvidenceReader, C
2
2
  export { FACT_STATUSES, FACT_TYPES, MEMORY_KINDS, MEMORY_SCOPES, MEMORY_STATUSES, TASK_TYPES, WORK_TASK_TYPES, } from "../domain/knowledge.js";
3
3
  export type { FindingEvidence, FindingOutcome, MeetingFactFinding, MeetingFinding, MeetingFindingsInput, MeetingFindingsReceipt, MeetingTaskFinding, } from "../meetings/index.js";
4
4
  export type { AccountMail, AccountMeetings, AccountStore } from "./account-store.js";
5
+ export type { DocumentTransferOptions, DocumentTransferPreview, DocumentTransferReceipt, } from "./document-transfer/index.js";
6
+ export { applyDocumentTransfer, previewDocumentTransfer } from "./document-transfer/index.js";
5
7
  export type { CacheDatabase, CacheStatement, OpenDatabase, SqlValue } from "./driver.js";
6
8
  export { PRAGMAS } from "./driver.js";
7
9
  export type { MeetingFindingsBatch, MeetingFindingsStore } from "./meeting-findings.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { FACT_STATUSES, FACT_TYPES, MEMORY_KINDS, MEMORY_SCOPES, MEMORY_STATUSES, TASK_TYPES, WORK_TASK_TYPES, } from "../domain/knowledge.js";
2
+ export { applyDocumentTransfer, previewDocumentTransfer } from "./document-transfer/index.js";
2
3
  export { PRAGMAS } from "./driver.js";
3
4
  export { MIGRATIONS, migrate } from "./migrations.js";
4
5
  export { openCache } from "./open.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAY/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAuBnD,OAAO,EAAE,uBAAuB,EAA0B,MAAM,gCAAgC,CAAA;AAYhG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAiBjF,OAAO,EAEL,WAAW,GAKZ,MAAM,yBAAyB,CAAA;AAYhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EACL,eAAe,EACf,gBAAgB,EAGhB,gBAAgB,GACjB,MAAM,0BAA0B,CAAA;AAIjC,OAAO,EAAiD,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA0BhE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAyBL,aAAa,EACb,gBAAgB,EAKhB,aAAa,EACb,SAAS,GA8BV,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAgB/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAE7F,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAuBnD,OAAO,EAAE,uBAAuB,EAA0B,MAAM,gCAAgC,CAAA;AAYhG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAiBjF,OAAO,EAEL,WAAW,GAKZ,MAAM,yBAAyB,CAAA;AAYhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EACL,eAAe,EACf,gBAAgB,EAGhB,gBAAgB,GACjB,MAAM,0BAA0B,CAAA;AAIjC,OAAO,EAAiD,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA0BhE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAyBL,aAAa,EACb,gBAAgB,EAKhB,aAAa,EACb,SAAS,GA8BV,MAAM,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { DocumentTransferReceipt, TransferSnapshot } from "../../document-transfer/model.js";
2
+ import type { CacheDatabase } from "../../driver.js";
3
+ export declare const applyTransfer: (database: CacheDatabase, snapshot: TransferSnapshot, sourceKey: string, bindings: Record<string, string>, expectedFingerprint: string, now: () => number) => DocumentTransferReceipt;
4
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/store/sqlite/document-transfer/apply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAEvB,gBAAgB,EAEjB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAA;AAqC9D,eAAO,MAAM,aAAa,aACd,aAAa,YACb,gBAAgB,aACf,MAAM,YACP,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,uBACX,MAAM,OACtB,MAAM,MAAM,KAChB,uBA0JC,CAAA"}
@@ -0,0 +1,179 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { botNamed, ownerPerson } from "../actors.js";
3
+ import { canonicalTagNamed } from "../tags.js";
4
+ import { referenceOfThing } from "../things.js";
5
+ import { write } from "../transaction.js";
6
+ import { copyPeople } from "./people.js";
7
+ import { planTransfer } from "./plan.js";
8
+ import { TRANSFER_TABLES } from "./snapshot.js";
9
+ const COLUMNS = {
10
+ document: "account_id external_id kind title location file_name extension url storage local_path mime size content_hash front_matter body normalized_text extraction extraction_error language revision export_path external_created_at external_updated_at metadata created_at updated_at deleted_at",
11
+ note: "notable_type notable_id title body author_type author_id revision created_at updated_at deleted_at",
12
+ memory: "kind body subject_type subject_id author_type author_id model confidence status last_verified_at supersedes_id scope created_at updated_at deleted_at",
13
+ fact: "type statement status project_id subject_type subject_id occurred_at supersedes_id author_type author_id model confirmed_by_type confirmed_by_id scope source metadata created_at updated_at deleted_at",
14
+ };
15
+ const LINK_COLUMNS = "from_type from_id to_type to_id kind anchor source target_text target_folded role evidence metadata confirmed created_at author updated_at";
16
+ const TAGGING_COLUMNS = "tag_id taggable_type taggable_id main source author_type author_id created_at updated_at";
17
+ const insert = (database, table, columns, values) => {
18
+ const fields = columns.split(" ");
19
+ const row = database
20
+ .prepare(`INSERT INTO ${table} (${fields.join(",")}) VALUES (${fields.map(() => "?").join(",")}) RETURNING id`)
21
+ .get(...fields.map((field) => values[field] ?? null));
22
+ return Number(row?.id);
23
+ };
24
+ const mapped = (mappings, type, id) => {
25
+ if (type == null && id == null)
26
+ return undefined;
27
+ const result = mappings.get(`${String(type)}:${String(id)}`);
28
+ if (!result)
29
+ throw new CliError("configuration_error", "an annotation reference was not resolved; the transfer was rolled back");
30
+ return result;
31
+ };
32
+ export const applyTransfer = (database, snapshot, sourceKey, bindings, expectedFingerprint, now) => write(database, () => {
33
+ const plan = planTransfer(database, snapshot, sourceKey, bindings);
34
+ if (plan.preview.fingerprint !== expectedFingerprint)
35
+ throw new CliError("validation_error", "the transfer preview changed; preview it again before applying");
36
+ if (!plan.preview.ready)
37
+ throw new CliError("configuration_error", "the transfer has unresolved references or conflicts; preview it before applying");
38
+ const mappings = plan.mappings;
39
+ const references = () => Object.fromEntries([...mappings].map(([key, value]) => [key, referenceOfThing(database, value) ?? `${value.type}:${value.id}`]));
40
+ const documents = (refs) => Object.fromEntries(snapshot.entities
41
+ .filter((entity) => entity.kind === "document")
42
+ .map((entity) => [String(entity.values.external_id), refs[entity.key]]));
43
+ if (plan.preview.already_transferred) {
44
+ const refs = references();
45
+ return { ...plan.preview, references: refs, documents: documents(refs) };
46
+ }
47
+ copyPeople(database, snapshot, mappings, now);
48
+ const owner = ownerPerson(database);
49
+ for (const external of snapshot.external)
50
+ if (external.bot && !mappings.has(external.key))
51
+ mappings.set(external.key, botNamed(database, external.bot.name, now(), external.bot.kind));
52
+ let collectionId = plan.collectionId;
53
+ if (collectionId === undefined) {
54
+ const organization = snapshot.collection.organization_id == null
55
+ ? undefined
56
+ : mapped(mappings, "organization", snapshot.collection.organization_id);
57
+ collectionId = insert(database, "accounts", "provider external_id name created_at settings updated_at scope organization_id", { ...snapshot.collection, organization_id: organization?.id ?? null });
58
+ }
59
+ mappings.set(`account:${String(snapshot.collection.id)}`, { type: "account", id: collectionId });
60
+ const inserted = new Set();
61
+ const ordered = [...snapshot.entities].sort((a, b) => Number(a.kind !== "document") - Number(b.kind !== "document"));
62
+ for (const entity of ordered) {
63
+ if (mappings.has(entity.key))
64
+ continue;
65
+ const values = { ...entity.values };
66
+ if (entity.kind === "document")
67
+ values.account_id = collectionId;
68
+ else {
69
+ for (const prefix of ["notable", "subject", "author", "confirmed_by"]) {
70
+ if (!Object.hasOwn(values, `${prefix}_type`))
71
+ continue;
72
+ const required = prefix === "notable" || (prefix === "author" && entity.kind !== "note");
73
+ values[`${prefix}_type`] = required ? owner.type : null;
74
+ values[`${prefix}_id`] = required ? owner.id : null;
75
+ }
76
+ if (Object.hasOwn(values, "supersedes_id"))
77
+ values.supersedes_id = null;
78
+ if (Object.hasOwn(values, "project_id"))
79
+ values.project_id = null;
80
+ }
81
+ const id = insert(database, TRANSFER_TABLES[entity.kind], COLUMNS[entity.kind], values);
82
+ mappings.set(entity.key, { type: entity.kind, id });
83
+ inserted.add(entity.key);
84
+ }
85
+ for (const entity of ordered) {
86
+ const destination = mappings.get(entity.key);
87
+ if (inserted.has(entity.key))
88
+ remapEntity(database, entity, destination.id, mappings);
89
+ if (entity.kind === "document" || entity.kind === "note") {
90
+ const table = entity.kind === "document" ? "document_revisions" : "note_revisions";
91
+ for (const revision of entity.revisions) {
92
+ const existing = database
93
+ .prepare(`SELECT body FROM ${table} WHERE ${entity.kind}_id=? AND revision=?`)
94
+ .get(destination.id, Number(revision.revision));
95
+ if (existing)
96
+ continue;
97
+ insert(database, table, `${entity.kind}_id body revision created_at`, {
98
+ ...revision,
99
+ [`${entity.kind}_id`]: destination.id,
100
+ });
101
+ }
102
+ }
103
+ }
104
+ for (const tagging of snapshot.taggings) {
105
+ const tag = canonicalTagNamed(database, String(tagging.tag_name));
106
+ const tagId = tag
107
+ ? Number(tag.id)
108
+ : insert(database, "tags", "name kind created_at updated_at", {
109
+ name: tagging.tag_name ?? null,
110
+ kind: tagging.tag_kind ?? null,
111
+ created_at: tagging.created_at ?? null,
112
+ updated_at: tagging.updated_at ?? null,
113
+ });
114
+ const subject = mapped(mappings, tagging.taggable_type, tagging.taggable_id);
115
+ const author = mapped(mappings, tagging.author_type, tagging.author_id);
116
+ if (database
117
+ .prepare("SELECT id FROM taggings WHERE tag_id=? AND taggable_type=? AND taggable_id=?")
118
+ .get(tagId, subject.type, subject.id))
119
+ continue;
120
+ insert(database, "taggings", TAGGING_COLUMNS, {
121
+ ...tagging,
122
+ tag_id: tagId,
123
+ taggable_type: subject.type,
124
+ taggable_id: subject.id,
125
+ author_type: author?.type ?? null,
126
+ author_id: author?.id ?? null,
127
+ });
128
+ }
129
+ for (const alias of snapshot.aliases) {
130
+ const sourceTag = snapshot.taggings.find((tagging) => tagging.tag_id === alias.aliasable_id);
131
+ const targetTag = canonicalTagNamed(database, String(sourceTag?.tag_name));
132
+ if (!targetTag)
133
+ throw new CliError("configuration_error", "an imported label alias has no canonical tag; the transfer was rolled back");
134
+ const existing = database
135
+ .prepare("SELECT id FROM aliases WHERE aliasable_type='tag' AND aliasable_id=? AND account_id IS NULL AND name_folded=?")
136
+ .get(targetTag.id, String(alias.name_folded));
137
+ if (!existing)
138
+ insert(database, "aliases", "aliasable_type aliasable_id account_id name name_folded display source created_at updated_at", { ...alias, aliasable_id: targetTag.id });
139
+ }
140
+ for (const link of snapshot.links) {
141
+ const from = mapped(mappings, link.from_type, link.from_id);
142
+ const to = mapped(mappings, link.to_type, link.to_id);
143
+ insert(database, "links", LINK_COLUMNS, {
144
+ ...link,
145
+ from_type: from.type,
146
+ from_id: from.id,
147
+ to_type: to?.type ?? null,
148
+ to_id: to?.id ?? null,
149
+ });
150
+ }
151
+ database
152
+ .prepare("INSERT INTO document_annotation_transfers (source_key,collection,snapshot_hash,bindings_hash,reference_map,created_at) VALUES (?,?,?,?,?,?)")
153
+ .run(sourceKey, String(snapshot.collection.external_id), plan.snapshotHash, plan.bindingsHash, JSON.stringify(Object.fromEntries(mappings)), now());
154
+ const refs = references();
155
+ return { ...plan.preview, references: refs, documents: documents(refs) };
156
+ });
157
+ const remapEntity = (database, entity, id, mappings) => {
158
+ const columns = [], values = [];
159
+ for (const prefix of ["notable", "subject", "author", "confirmed_by"]) {
160
+ if (!Object.hasOwn(entity.values, `${prefix}_type`))
161
+ continue;
162
+ const target = mapped(mappings, entity.values[`${prefix}_type`], entity.values[`${prefix}_id`]);
163
+ columns.push(`${prefix}_type=?`, `${prefix}_id=?`);
164
+ values.push(target?.type ?? null, target?.id ?? null);
165
+ }
166
+ if (Object.hasOwn(entity.values, "supersedes_id")) {
167
+ columns.push("supersedes_id=?");
168
+ values.push(entity.values.supersedes_id == null
169
+ ? null
170
+ : mapped(mappings, entity.kind, entity.values.supersedes_id).id);
171
+ }
172
+ if (Object.hasOwn(entity.values, "project_id")) {
173
+ columns.push("project_id=?");
174
+ values.push(entity.values.project_id == null ? null : mapped(mappings, "project", entity.values.project_id).id);
175
+ }
176
+ if (columns.length)
177
+ database.prepare(`UPDATE ${TRANSFER_TABLES[entity.kind]} SET ${columns.join(",")} WHERE id=?`).run(...values, id);
178
+ };
179
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/store/sqlite/document-transfer/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { TransferSnapshot } from "../../document-transfer/model.js";
2
+ import type { CacheDatabase } from "../../driver.js";
3
+ import { type Thing } from "../things.js";
4
+ export declare const planPeople: (database: CacheDatabase, snapshot: TransferSnapshot, mappings: Map<string, Thing>, bindings: Record<string, string>, conflicts: Set<string>) => {
5
+ creatable: Set<string>;
6
+ people: number;
7
+ identities: number;
8
+ };
9
+ export declare const copyPeople: (database: CacheDatabase, snapshot: TransferSnapshot, mappings: Map<string, Thing>, now: () => number) => void;
10
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../../../src/store/sqlite/document-transfer/people.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAgB,KAAK,KAAK,EAAW,MAAM,cAAc,CAAA;AAEhE,eAAO,MAAM,UAAU,aACX,aAAa,YACb,gBAAgB,YAChB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,YAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,aACrB,GAAG,CAAC,MAAM,CAAC;;;;CAsCvB,CAAA;AAED,eAAO,MAAM,UAAU,aACX,aAAa,YACb,gBAAgB,YAChB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OACvB,MAAM,MAAM,SAuDlB,CAAA"}
@@ -0,0 +1,75 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { ownerPerson } from "../actors.js";
3
+ import { stateOfThing, thingOf } from "../things.js";
4
+ export const planPeople = (database, snapshot, mappings, bindings, conflicts) => {
5
+ const creatable = new Set();
6
+ let people = 0, identities = 0;
7
+ for (const external of snapshot.external) {
8
+ if (!external.person)
9
+ continue;
10
+ const matched = external.person.identities.flatMap((identity) => {
11
+ const row = database
12
+ .prepare("SELECT i.id,l.person_id FROM identities i LEFT JOIN identity_links l ON l.identity_id=i.id WHERE i.provider=? AND i.external_id=?")
13
+ .get(String(identity.provider), String(identity.external_id));
14
+ if (row && row.person_id == null)
15
+ conflicts.add(`a destination identity has no person for ${external.reference}`);
16
+ if (!row) {
17
+ identities++;
18
+ creatable.add(`identity:${String(identity.id)}`);
19
+ return [];
20
+ }
21
+ mappings.set(`identity:${String(identity.id)}`, { type: "identity", id: Number(row.id) });
22
+ return row.person_id == null ? [] : [Number(row.person_id)];
23
+ });
24
+ let selected = mappings.get(external.key);
25
+ const binding = bindings[external.reference];
26
+ if (binding !== undefined)
27
+ selected = thingOf(database, binding);
28
+ else if (external.owner)
29
+ selected = ownerPerson(database);
30
+ else if (new Set(matched).size === 1)
31
+ selected = { type: "person", id: matched[0] };
32
+ if (selected && (selected.type !== "person" || stateOfThing(database, selected) !== "available"))
33
+ selected = undefined;
34
+ if (new Set(matched).size > 1 || (selected && matched.some((id) => id !== selected.id)))
35
+ conflicts.add(`source identities disagree with the destination person for ${external.reference}`);
36
+ if (selected)
37
+ mappings.set(external.key, selected);
38
+ else if (binding === undefined) {
39
+ creatable.add(external.key);
40
+ people++;
41
+ }
42
+ }
43
+ return { creatable, people, identities };
44
+ };
45
+ export const copyPeople = (database, snapshot, mappings, now) => {
46
+ for (const external of snapshot.external) {
47
+ if (!external.person)
48
+ continue;
49
+ let person = mappings.get(external.key);
50
+ if (!person) {
51
+ const row = database
52
+ .prepare("INSERT INTO persons (name,owner,created_at,updated_at) VALUES (?,0,?,?) RETURNING id")
53
+ .get(external.person.name, now(), now());
54
+ person = { type: "person", id: Number(row?.id) };
55
+ mappings.set(external.key, person);
56
+ }
57
+ for (const identity of external.person.identities) {
58
+ let row = database
59
+ .prepare("SELECT i.id,l.person_id FROM identities i LEFT JOIN identity_links l ON l.identity_id=i.id WHERE i.provider=? AND i.external_id=?")
60
+ .get(String(identity.provider), String(identity.external_id));
61
+ if (row && Number(row.person_id) !== person.id)
62
+ throw new CliError("configuration_error", "an identity belongs to another destination person; the transfer was rolled back");
63
+ if (!row)
64
+ row = database
65
+ .prepare("INSERT INTO identities (provider,external_id,name,username,bot,created_at,updated_at) VALUES (?,?,?,?,?,?,?) RETURNING id")
66
+ .get(String(identity.provider), String(identity.external_id), identity.name ?? null, identity.username ?? null, identity.bot ?? null, identity.created_at ?? now(), identity.updated_at ?? now());
67
+ if (!database.prepare("SELECT identity_id FROM identity_links WHERE identity_id=?").get(Number(row?.id)))
68
+ database
69
+ .prepare("INSERT INTO identity_links (identity_id,person_id,method,confidence,author,source,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?)")
70
+ .run(Number(row?.id), person.id, identity.link_method ?? "transfer", identity.link_confidence ?? 1, identity.link_author ?? "owner", identity.link_source ?? null, identity.link_created_at ?? now(), identity.link_updated_at ?? now());
71
+ mappings.set(`identity:${String(identity.id)}`, { type: "identity", id: Number(row?.id) });
72
+ }
73
+ }
74
+ };
75
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../../../src/store/sqlite/document-transfer/people.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DocumentTransferPreview, TransferSnapshot } from "../../document-transfer/model.js";
2
+ import type { CacheDatabase } from "../../driver.js";
3
+ import { type Thing } from "../things.js";
4
+ export interface TransferPlan {
5
+ preview: DocumentTransferPreview;
6
+ mappings: Map<string, Thing>;
7
+ collectionId?: number;
8
+ snapshotHash: string;
9
+ bindingsHash: string;
10
+ }
11
+ export declare const planTransfer: (database: CacheDatabase, snapshot: TransferSnapshot, sourceKey: string, bindings: Record<string, string>) => TransferPlan;
12
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/store/sqlite/document-transfer/plan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAgB,KAAK,KAAK,EAAW,MAAM,cAAc,CAAA;AAGhE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,uBAAuB,CAAA;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,YAAY,aACb,aAAa,YACb,gBAAgB,aACf,MAAM,YACP,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/B,YAmLF,CAAA"}