@eddacraft/kindling-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +187 -0
- package/dist/capsule/index.d.ts +10 -0
- package/dist/capsule/index.d.ts.map +1 -0
- package/dist/capsule/index.js +10 -0
- package/dist/capsule/index.js.map +1 -0
- package/dist/capsule/lifecycle.d.ts +63 -0
- package/dist/capsule/lifecycle.d.ts.map +1 -0
- package/dist/capsule/lifecycle.js +108 -0
- package/dist/capsule/lifecycle.js.map +1 -0
- package/dist/capsule/manager.d.ts +79 -0
- package/dist/capsule/manager.d.ts.map +1 -0
- package/dist/capsule/manager.js +113 -0
- package/dist/capsule/manager.js.map +1 -0
- package/dist/capsule/types.d.ts +79 -0
- package/dist/capsule/types.d.ts.map +1 -0
- package/dist/capsule/types.js +5 -0
- package/dist/capsule/types.js.map +1 -0
- package/dist/export/bundle.d.ts +125 -0
- package/dist/export/bundle.d.ts.map +1 -0
- package/dist/export/bundle.js +136 -0
- package/dist/export/bundle.js.map +1 -0
- package/dist/export/index.d.ts +8 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +8 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/restore.d.ts +111 -0
- package/dist/export/restore.d.ts.map +1 -0
- package/dist/export/restore.js +149 -0
- package/dist/export/restore.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/retrieval/index.d.ts +8 -0
- package/dist/retrieval/index.d.ts.map +1 -0
- package/dist/retrieval/index.js +8 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/retrieval/orchestrator.d.ts +50 -0
- package/dist/retrieval/orchestrator.d.ts.map +1 -0
- package/dist/retrieval/orchestrator.js +86 -0
- package/dist/retrieval/orchestrator.js.map +1 -0
- package/dist/retrieval/tiering.d.ts +76 -0
- package/dist/retrieval/tiering.d.ts.map +1 -0
- package/dist/retrieval/tiering.js +122 -0
- package/dist/retrieval/tiering.js.map +1 -0
- package/dist/service/index.d.ts +6 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +5 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/kindling-service.d.ts +219 -0
- package/dist/service/kindling-service.d.ts.map +1 -0
- package/dist/service/kindling-service.js +260 -0
- package/dist/service/kindling-service.js.map +1 -0
- package/dist/types/capsule.d.ts +80 -0
- package/dist/types/capsule.d.ts.map +1 -0
- package/dist/types/capsule.js +33 -0
- package/dist/types/capsule.js.map +1 -0
- package/dist/types/common.d.ts +56 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +16 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/observation.d.ts +60 -0
- package/dist/types/observation.d.ts.map +1 -0
- package/dist/types/observation.js +27 -0
- package/dist/types/observation.js.map +1 -0
- package/dist/types/pin.d.ts +65 -0
- package/dist/types/pin.d.ts.map +1 -0
- package/dist/types/pin.js +26 -0
- package/dist/types/pin.js.map +1 -0
- package/dist/types/retrieval.d.ts +81 -0
- package/dist/types/retrieval.d.ts.map +1 -0
- package/dist/types/retrieval.js +5 -0
- package/dist/types/retrieval.js.map +1 -0
- package/dist/types/summary.d.ts +49 -0
- package/dist/types/summary.d.ts.map +1 -0
- package/dist/types/summary.js +13 -0
- package/dist/types/summary.js.map +1 -0
- package/dist/validation/capsule.d.ts +18 -0
- package/dist/validation/capsule.d.ts.map +1 -0
- package/dist/validation/capsule.js +143 -0
- package/dist/validation/capsule.js.map +1 -0
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +8 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/observation.d.ts +18 -0
- package/dist/validation/observation.d.ts.map +1 -0
- package/dist/validation/observation.js +110 -0
- package/dist/validation/observation.js.map +1 -0
- package/dist/validation/pin.d.ts +16 -0
- package/dist/validation/pin.d.ts.map +1 -0
- package/dist/validation/pin.js +116 -0
- package/dist/validation/pin.js.map +1 -0
- package/dist/validation/summary.d.ts +16 -0
- package/dist/validation/summary.d.ts.map +1 -0
- package/dist/validation/summary.js +117 -0
- package/dist/validation/summary.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capsule manager implementation
|
|
3
|
+
*
|
|
4
|
+
* Manages capsule lifecycle with in-memory caching for fast lookup.
|
|
5
|
+
*/
|
|
6
|
+
import { openCapsule, closeCapsule, getCapsule, getOpenCapsule } from './lifecycle.js';
|
|
7
|
+
/**
|
|
8
|
+
* Default capsule manager implementation
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - In-memory cache for active capsules
|
|
12
|
+
* - Thread-safe operations (via synchronous store calls)
|
|
13
|
+
* - Automatic cache invalidation on close
|
|
14
|
+
*/
|
|
15
|
+
export class CapsuleManager {
|
|
16
|
+
store;
|
|
17
|
+
activeCache;
|
|
18
|
+
constructor(store) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
this.activeCache = new Map();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Open a new capsule
|
|
24
|
+
*
|
|
25
|
+
* @param options - Capsule creation options
|
|
26
|
+
* @returns The created capsule
|
|
27
|
+
* @throws Error if validation fails or duplicate open capsule exists
|
|
28
|
+
*/
|
|
29
|
+
open(options) {
|
|
30
|
+
const capsule = openCapsule(this.store, options);
|
|
31
|
+
// Cache for fast lookup
|
|
32
|
+
this.activeCache.set(capsule.id, capsule);
|
|
33
|
+
return capsule;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Close an open capsule
|
|
37
|
+
*
|
|
38
|
+
* @param capsuleId - ID of capsule to close
|
|
39
|
+
* @param signals - Closure signals/metadata
|
|
40
|
+
* @returns The closed capsule
|
|
41
|
+
* @throws Error if capsule not found or already closed
|
|
42
|
+
*/
|
|
43
|
+
close(capsuleId, signals) {
|
|
44
|
+
const capsule = closeCapsule(this.store, capsuleId, signals);
|
|
45
|
+
// Remove from active cache
|
|
46
|
+
this.activeCache.delete(capsuleId);
|
|
47
|
+
return capsule;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get a capsule by ID
|
|
51
|
+
*
|
|
52
|
+
* Checks cache first, falls back to store.
|
|
53
|
+
*
|
|
54
|
+
* @param capsuleId - Capsule ID to lookup
|
|
55
|
+
* @returns Capsule or undefined if not found
|
|
56
|
+
*/
|
|
57
|
+
get(capsuleId) {
|
|
58
|
+
// Check cache first
|
|
59
|
+
const cached = this.activeCache.get(capsuleId);
|
|
60
|
+
if (cached) {
|
|
61
|
+
return cached;
|
|
62
|
+
}
|
|
63
|
+
// Fall back to store
|
|
64
|
+
return getCapsule(this.store, capsuleId);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get the open capsule for a scope (if any)
|
|
68
|
+
*
|
|
69
|
+
* Currently only supports session-scoped lookup.
|
|
70
|
+
*
|
|
71
|
+
* @param scopeIds - Partial scope to match
|
|
72
|
+
* @returns Open capsule or undefined
|
|
73
|
+
*/
|
|
74
|
+
getOpen(scopeIds) {
|
|
75
|
+
// Only session-scoped lookup is supported for now
|
|
76
|
+
if (!scopeIds.sessionId) {
|
|
77
|
+
throw new Error('getOpen currently only supports sessionId lookup');
|
|
78
|
+
}
|
|
79
|
+
return getOpenCapsule(this.store, scopeIds.sessionId);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Notify that an observation was attached to a capsule
|
|
83
|
+
*
|
|
84
|
+
* Updates the cached capsule's observationIds if the capsule is in the cache.
|
|
85
|
+
*
|
|
86
|
+
* @param capsuleId - Capsule that received the observation
|
|
87
|
+
* @param observationId - Observation that was attached
|
|
88
|
+
*/
|
|
89
|
+
notifyObservationAttached(capsuleId, observationId) {
|
|
90
|
+
const cached = this.activeCache.get(capsuleId);
|
|
91
|
+
if (cached) {
|
|
92
|
+
// Update the cached capsule's observationIds
|
|
93
|
+
cached.observationIds.push(observationId);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Clear the active capsule cache
|
|
98
|
+
*
|
|
99
|
+
* Useful for testing or manual cache invalidation.
|
|
100
|
+
*/
|
|
101
|
+
clearCache() {
|
|
102
|
+
this.activeCache.clear();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get count of cached active capsules
|
|
106
|
+
*
|
|
107
|
+
* Useful for debugging and monitoring.
|
|
108
|
+
*/
|
|
109
|
+
getCacheSize() {
|
|
110
|
+
return this.activeCache.size;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/capsule/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,CAAe;IACpB,WAAW,CAAmB;IAEtC,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,OAA2B;QAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEjD,wBAAwB;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAE1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAa,EAAE,OAA6B;QAChD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7D,2BAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,SAAa;QACf,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,qBAAqB;QACrB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAA2B;QACjC,kDAAkD;QAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACH,yBAAyB,CAAC,SAAa,EAAE,aAAiB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,6CAA6C;YAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capsule lifecycle types and interfaces
|
|
3
|
+
*/
|
|
4
|
+
import type { ID, ScopeIds } from '../types/common.js';
|
|
5
|
+
import type { Capsule, CapsuleType } from '../types/capsule.js';
|
|
6
|
+
/**
|
|
7
|
+
* Options for opening a new capsule
|
|
8
|
+
*/
|
|
9
|
+
export interface OpenCapsuleOptions {
|
|
10
|
+
/** Type of capsule (session, task, etc.) */
|
|
11
|
+
type: CapsuleType;
|
|
12
|
+
/** Human-readable intent/purpose */
|
|
13
|
+
intent: string;
|
|
14
|
+
/** Scope dimensions for isolation */
|
|
15
|
+
scopeIds: ScopeIds;
|
|
16
|
+
/** Optional pre-generated ID */
|
|
17
|
+
id?: ID;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Signals/metadata for closing a capsule
|
|
21
|
+
*/
|
|
22
|
+
export interface CloseCapsuleSignals {
|
|
23
|
+
/** Reason for closure (completion, timeout, error, etc.) */
|
|
24
|
+
reason?: string;
|
|
25
|
+
/** Optional summary content to generate on close */
|
|
26
|
+
summaryContent?: string;
|
|
27
|
+
/** Confidence score for summary (0.0-1.0) */
|
|
28
|
+
summaryConfidence?: number;
|
|
29
|
+
/** Evidence observation IDs that support the summary */
|
|
30
|
+
evidenceRefs?: ID[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Capsule manager interface
|
|
34
|
+
*
|
|
35
|
+
* Manages capsule lifecycle: opening, closing, and lookup
|
|
36
|
+
*/
|
|
37
|
+
export interface CapsuleManager {
|
|
38
|
+
/**
|
|
39
|
+
* Open a new capsule
|
|
40
|
+
*
|
|
41
|
+
* @param options - Capsule creation options
|
|
42
|
+
* @returns The created capsule
|
|
43
|
+
* @throws Error if a capsule is already open for the same scope (session type)
|
|
44
|
+
*/
|
|
45
|
+
open(options: OpenCapsuleOptions): Capsule;
|
|
46
|
+
/**
|
|
47
|
+
* Close an open capsule
|
|
48
|
+
*
|
|
49
|
+
* @param capsuleId - ID of capsule to close
|
|
50
|
+
* @param signals - Closure signals/metadata
|
|
51
|
+
* @returns The closed capsule
|
|
52
|
+
* @throws Error if capsule not found or already closed
|
|
53
|
+
*/
|
|
54
|
+
close(capsuleId: ID, signals?: CloseCapsuleSignals): Capsule;
|
|
55
|
+
/**
|
|
56
|
+
* Get a capsule by ID
|
|
57
|
+
*
|
|
58
|
+
* @param capsuleId - Capsule ID to lookup
|
|
59
|
+
* @returns Capsule or undefined if not found
|
|
60
|
+
*/
|
|
61
|
+
get(capsuleId: ID): Capsule | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Get the open capsule for a scope (if any)
|
|
64
|
+
*
|
|
65
|
+
* @param scopeIds - Partial scope to match
|
|
66
|
+
* @returns Open capsule or undefined
|
|
67
|
+
*/
|
|
68
|
+
getOpen(scopeIds: Partial<ScopeIds>): Capsule | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Notify that an observation was attached to a capsule
|
|
71
|
+
*
|
|
72
|
+
* Updates any cached capsule state to include the new observation.
|
|
73
|
+
*
|
|
74
|
+
* @param capsuleId - Capsule that received the observation
|
|
75
|
+
* @param observationId - Observation that was attached
|
|
76
|
+
*/
|
|
77
|
+
notifyObservationAttached(capsuleId: ID, observationId: ID): void;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capsule/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,IAAI,EAAE,WAAW,CAAC;IAElB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IAEf,qCAAqC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IAEnB,gCAAgC;IAChC,EAAE,CAAC,EAAE,EAAE,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,wDAAwD;IACxD,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAE3C;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAE7D;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC;IAExC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAE1D;;;;;;;OAOG;IACH,yBAAyB,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC;CACnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/capsule/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-level export coordination
|
|
3
|
+
*
|
|
4
|
+
* Provides high-level export API for backup and portability.
|
|
5
|
+
* Builds on store-level export primitives from STORAGE-005.
|
|
6
|
+
*/
|
|
7
|
+
import type { ScopeIds } from '../types/common.js';
|
|
8
|
+
import type { Observation, Capsule, Summary, Pin } from '../types/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Store interface for export operations
|
|
11
|
+
*/
|
|
12
|
+
export interface ExportStore {
|
|
13
|
+
/**
|
|
14
|
+
* Export database to a dataset
|
|
15
|
+
*/
|
|
16
|
+
exportDatabase(options?: {
|
|
17
|
+
scope?: Partial<ScopeIds>;
|
|
18
|
+
includeRedacted?: boolean;
|
|
19
|
+
limit?: number;
|
|
20
|
+
}): {
|
|
21
|
+
version: string;
|
|
22
|
+
exportedAt: number;
|
|
23
|
+
scope?: Partial<ScopeIds>;
|
|
24
|
+
observations: Observation[];
|
|
25
|
+
capsules: Capsule[];
|
|
26
|
+
summaries: Summary[];
|
|
27
|
+
pins: Pin[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Export options
|
|
32
|
+
*/
|
|
33
|
+
export interface ExportBundleOptions {
|
|
34
|
+
/** Optional scope filter */
|
|
35
|
+
scope?: Partial<ScopeIds>;
|
|
36
|
+
/** Include redacted observations (default: false) */
|
|
37
|
+
includeRedacted?: boolean;
|
|
38
|
+
/** Maximum observations to export */
|
|
39
|
+
limit?: number;
|
|
40
|
+
/** Bundle metadata */
|
|
41
|
+
metadata?: {
|
|
42
|
+
description?: string;
|
|
43
|
+
tags?: string[];
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Export bundle with metadata
|
|
49
|
+
*/
|
|
50
|
+
export interface ExportBundle {
|
|
51
|
+
/** Bundle format version */
|
|
52
|
+
bundleVersion: string;
|
|
53
|
+
/** Export timestamp */
|
|
54
|
+
exportedAt: number;
|
|
55
|
+
/** Optional metadata */
|
|
56
|
+
metadata?: {
|
|
57
|
+
description?: string;
|
|
58
|
+
tags?: string[];
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
};
|
|
61
|
+
/** Dataset with entities */
|
|
62
|
+
dataset: {
|
|
63
|
+
version: string;
|
|
64
|
+
exportedAt: number;
|
|
65
|
+
scope?: Partial<ScopeIds>;
|
|
66
|
+
observations: Observation[];
|
|
67
|
+
capsules: Capsule[];
|
|
68
|
+
summaries: Summary[];
|
|
69
|
+
pins: Pin[];
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Export bundle statistics
|
|
74
|
+
*/
|
|
75
|
+
export interface ExportStats {
|
|
76
|
+
observations: number;
|
|
77
|
+
capsules: number;
|
|
78
|
+
summaries: number;
|
|
79
|
+
pins: number;
|
|
80
|
+
totalSize: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create an export bundle
|
|
84
|
+
*
|
|
85
|
+
* Coordinates export from store with optional metadata and validation.
|
|
86
|
+
*
|
|
87
|
+
* @param store - Export store
|
|
88
|
+
* @param options - Export options
|
|
89
|
+
* @returns Export bundle with dataset and metadata
|
|
90
|
+
*/
|
|
91
|
+
export declare function createExportBundle(store: ExportStore, options?: ExportBundleOptions): ExportBundle;
|
|
92
|
+
/**
|
|
93
|
+
* Get statistics for an export bundle
|
|
94
|
+
*
|
|
95
|
+
* @param bundle - Export bundle
|
|
96
|
+
* @returns Statistics about bundle contents
|
|
97
|
+
*/
|
|
98
|
+
export declare function getBundleStats(bundle: ExportBundle): ExportStats;
|
|
99
|
+
/**
|
|
100
|
+
* Validate export bundle structure
|
|
101
|
+
*
|
|
102
|
+
* @param bundle - Bundle to validate
|
|
103
|
+
* @returns Validation result with errors if any
|
|
104
|
+
*/
|
|
105
|
+
export declare function validateBundle(bundle: unknown): {
|
|
106
|
+
valid: boolean;
|
|
107
|
+
errors: string[];
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Serialize export bundle to JSON string
|
|
111
|
+
*
|
|
112
|
+
* @param bundle - Bundle to serialize
|
|
113
|
+
* @param pretty - Use pretty formatting (default: false)
|
|
114
|
+
* @returns JSON string
|
|
115
|
+
*/
|
|
116
|
+
export declare function serializeBundle(bundle: ExportBundle, pretty?: boolean): string;
|
|
117
|
+
/**
|
|
118
|
+
* Deserialize export bundle from JSON string
|
|
119
|
+
*
|
|
120
|
+
* @param json - JSON string to parse
|
|
121
|
+
* @returns Parsed bundle
|
|
122
|
+
* @throws Error if JSON is invalid
|
|
123
|
+
*/
|
|
124
|
+
export declare function deserializeBundle(json: string): ExportBundle;
|
|
125
|
+
//# sourceMappingURL=bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/export/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-level export coordination
|
|
3
|
+
*
|
|
4
|
+
* Provides high-level export API for backup and portability.
|
|
5
|
+
* Builds on store-level export primitives from STORAGE-005.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Create an export bundle
|
|
9
|
+
*
|
|
10
|
+
* Coordinates export from store with optional metadata and validation.
|
|
11
|
+
*
|
|
12
|
+
* @param store - Export store
|
|
13
|
+
* @param options - Export options
|
|
14
|
+
* @returns Export bundle with dataset and metadata
|
|
15
|
+
*/
|
|
16
|
+
export function createExportBundle(store, options = {}) {
|
|
17
|
+
const { scope, includeRedacted = false, limit, metadata } = options;
|
|
18
|
+
// Export dataset from store
|
|
19
|
+
const dataset = store.exportDatabase({
|
|
20
|
+
scope,
|
|
21
|
+
includeRedacted,
|
|
22
|
+
limit,
|
|
23
|
+
});
|
|
24
|
+
// Create bundle with metadata
|
|
25
|
+
const bundle = {
|
|
26
|
+
bundleVersion: '1.0',
|
|
27
|
+
exportedAt: Date.now(),
|
|
28
|
+
dataset,
|
|
29
|
+
};
|
|
30
|
+
if (metadata) {
|
|
31
|
+
bundle.metadata = metadata;
|
|
32
|
+
}
|
|
33
|
+
return bundle;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get statistics for an export bundle
|
|
37
|
+
*
|
|
38
|
+
* @param bundle - Export bundle
|
|
39
|
+
* @returns Statistics about bundle contents
|
|
40
|
+
*/
|
|
41
|
+
export function getBundleStats(bundle) {
|
|
42
|
+
const { dataset } = bundle;
|
|
43
|
+
// Estimate size (JSON string length approximation)
|
|
44
|
+
const totalSize = JSON.stringify(bundle).length;
|
|
45
|
+
return {
|
|
46
|
+
observations: dataset.observations.length,
|
|
47
|
+
capsules: dataset.capsules.length,
|
|
48
|
+
summaries: dataset.summaries.length,
|
|
49
|
+
pins: dataset.pins.length,
|
|
50
|
+
totalSize,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate export bundle structure
|
|
55
|
+
*
|
|
56
|
+
* @param bundle - Bundle to validate
|
|
57
|
+
* @returns Validation result with errors if any
|
|
58
|
+
*/
|
|
59
|
+
export function validateBundle(bundle) {
|
|
60
|
+
const errors = [];
|
|
61
|
+
if (!bundle || typeof bundle !== 'object') {
|
|
62
|
+
return { valid: false, errors: ['Bundle must be an object'] };
|
|
63
|
+
}
|
|
64
|
+
const b = bundle;
|
|
65
|
+
// Check bundle version
|
|
66
|
+
if (!b.bundleVersion || typeof b.bundleVersion !== 'string') {
|
|
67
|
+
errors.push('Missing or invalid bundleVersion');
|
|
68
|
+
}
|
|
69
|
+
else if (b.bundleVersion !== '1.0') {
|
|
70
|
+
errors.push(`Unsupported bundle version: ${b.bundleVersion}`);
|
|
71
|
+
}
|
|
72
|
+
// Check exportedAt
|
|
73
|
+
if (!b.exportedAt || typeof b.exportedAt !== 'number') {
|
|
74
|
+
errors.push('Missing or invalid exportedAt');
|
|
75
|
+
}
|
|
76
|
+
// Check dataset
|
|
77
|
+
if (!b.dataset || typeof b.dataset !== 'object') {
|
|
78
|
+
errors.push('Missing or invalid dataset');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const ds = b.dataset;
|
|
82
|
+
if (!ds.version || typeof ds.version !== 'string') {
|
|
83
|
+
errors.push('Missing or invalid dataset.version');
|
|
84
|
+
}
|
|
85
|
+
if (!Array.isArray(ds.observations)) {
|
|
86
|
+
errors.push('dataset.observations must be an array');
|
|
87
|
+
}
|
|
88
|
+
if (!Array.isArray(ds.capsules)) {
|
|
89
|
+
errors.push('dataset.capsules must be an array');
|
|
90
|
+
}
|
|
91
|
+
if (!Array.isArray(ds.summaries)) {
|
|
92
|
+
errors.push('dataset.summaries must be an array');
|
|
93
|
+
}
|
|
94
|
+
if (!Array.isArray(ds.pins)) {
|
|
95
|
+
errors.push('dataset.pins must be an array');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
valid: errors.length === 0,
|
|
100
|
+
errors,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Serialize export bundle to JSON string
|
|
105
|
+
*
|
|
106
|
+
* @param bundle - Bundle to serialize
|
|
107
|
+
* @param pretty - Use pretty formatting (default: false)
|
|
108
|
+
* @returns JSON string
|
|
109
|
+
*/
|
|
110
|
+
export function serializeBundle(bundle, pretty = false) {
|
|
111
|
+
return JSON.stringify(bundle, null, pretty ? 2 : 0);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Deserialize export bundle from JSON string
|
|
115
|
+
*
|
|
116
|
+
* @param json - JSON string to parse
|
|
117
|
+
* @returns Parsed bundle
|
|
118
|
+
* @throws Error if JSON is invalid
|
|
119
|
+
*/
|
|
120
|
+
export function deserializeBundle(json) {
|
|
121
|
+
try {
|
|
122
|
+
const bundle = JSON.parse(json);
|
|
123
|
+
const validation = validateBundle(bundle);
|
|
124
|
+
if (!validation.valid) {
|
|
125
|
+
throw new Error(`Invalid bundle: ${validation.errors.join(', ')}`);
|
|
126
|
+
}
|
|
127
|
+
return bundle;
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (err instanceof SyntaxError) {
|
|
131
|
+
throw new Error(`Invalid JSON: ${err.message}`);
|
|
132
|
+
}
|
|
133
|
+
throw err;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/export/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/export/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/export/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-level import coordination
|
|
3
|
+
*
|
|
4
|
+
* Provides high-level import API for restoring from export bundles.
|
|
5
|
+
*/
|
|
6
|
+
import type { ExportBundle } from './bundle.js';
|
|
7
|
+
import type { ScopeIds, Observation, Capsule, Summary, Pin } from '../types/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Store interface for import operations
|
|
10
|
+
*/
|
|
11
|
+
export interface ImportStore {
|
|
12
|
+
/**
|
|
13
|
+
* Import dataset into database
|
|
14
|
+
*/
|
|
15
|
+
importDatabase(dataset: {
|
|
16
|
+
version: string;
|
|
17
|
+
exportedAt: number;
|
|
18
|
+
scope?: Partial<ScopeIds>;
|
|
19
|
+
observations: Observation[];
|
|
20
|
+
capsules: Capsule[];
|
|
21
|
+
summaries: Summary[];
|
|
22
|
+
pins: Pin[];
|
|
23
|
+
}): {
|
|
24
|
+
observations: number;
|
|
25
|
+
capsules: number;
|
|
26
|
+
summaries: number;
|
|
27
|
+
pins: number;
|
|
28
|
+
errors: string[];
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Import options
|
|
33
|
+
*/
|
|
34
|
+
export interface ImportOptions {
|
|
35
|
+
/** Skip validation (default: false) */
|
|
36
|
+
skipValidation?: boolean;
|
|
37
|
+
/** Dry run (validate only, don't import) */
|
|
38
|
+
dryRun?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Import result
|
|
42
|
+
*/
|
|
43
|
+
export interface ImportResult {
|
|
44
|
+
/** Number of observations imported */
|
|
45
|
+
observations: number;
|
|
46
|
+
/** Number of capsules imported */
|
|
47
|
+
capsules: number;
|
|
48
|
+
/** Number of summaries imported */
|
|
49
|
+
summaries: number;
|
|
50
|
+
/** Number of pins imported */
|
|
51
|
+
pins: number;
|
|
52
|
+
/** Any errors encountered */
|
|
53
|
+
errors: string[];
|
|
54
|
+
/** Whether this was a dry run */
|
|
55
|
+
dryRun: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Restore from export bundle
|
|
59
|
+
*
|
|
60
|
+
* Coordinates import with validation and error handling.
|
|
61
|
+
*
|
|
62
|
+
* @param store - Import store
|
|
63
|
+
* @param bundle - Export bundle to restore
|
|
64
|
+
* @param options - Import options
|
|
65
|
+
* @returns Import result with counts and errors
|
|
66
|
+
*/
|
|
67
|
+
export declare function restoreFromBundle(store: ImportStore, bundle: ExportBundle, options?: ImportOptions): ImportResult;
|
|
68
|
+
/**
|
|
69
|
+
* Merge multiple export bundles
|
|
70
|
+
*
|
|
71
|
+
* Combines datasets from multiple bundles into a single bundle.
|
|
72
|
+
* Useful for consolidating exports from different sources.
|
|
73
|
+
*
|
|
74
|
+
* @param bundles - Bundles to merge
|
|
75
|
+
* @param metadata - Optional metadata for merged bundle
|
|
76
|
+
* @returns Merged bundle
|
|
77
|
+
*/
|
|
78
|
+
export declare function mergeBundles(bundles: ExportBundle[], metadata?: {
|
|
79
|
+
description?: string;
|
|
80
|
+
tags?: string[];
|
|
81
|
+
}): ExportBundle;
|
|
82
|
+
/**
|
|
83
|
+
* Compare two bundles for differences
|
|
84
|
+
*
|
|
85
|
+
* @param bundle1 - First bundle
|
|
86
|
+
* @param bundle2 - Second bundle
|
|
87
|
+
* @returns Difference summary
|
|
88
|
+
*/
|
|
89
|
+
export declare function compareBundles(bundle1: ExportBundle, bundle2: ExportBundle): {
|
|
90
|
+
observations: {
|
|
91
|
+
added: number;
|
|
92
|
+
removed: number;
|
|
93
|
+
common: number;
|
|
94
|
+
};
|
|
95
|
+
capsules: {
|
|
96
|
+
added: number;
|
|
97
|
+
removed: number;
|
|
98
|
+
common: number;
|
|
99
|
+
};
|
|
100
|
+
summaries: {
|
|
101
|
+
added: number;
|
|
102
|
+
removed: number;
|
|
103
|
+
common: number;
|
|
104
|
+
};
|
|
105
|
+
pins: {
|
|
106
|
+
added: number;
|
|
107
|
+
removed: number;
|
|
108
|
+
common: number;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=restore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/export/restore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;QAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,SAAS,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,EAAE,GAAG,EAAE,CAAC;KACb,GAAG;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,YAAY,CAqCd;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACnD,YAAY,CAgDd;AA0BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACpB;IACD,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D,CAqBA"}
|