@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.
Files changed (103) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +187 -0
  3. package/dist/capsule/index.d.ts +10 -0
  4. package/dist/capsule/index.d.ts.map +1 -0
  5. package/dist/capsule/index.js +10 -0
  6. package/dist/capsule/index.js.map +1 -0
  7. package/dist/capsule/lifecycle.d.ts +63 -0
  8. package/dist/capsule/lifecycle.d.ts.map +1 -0
  9. package/dist/capsule/lifecycle.js +108 -0
  10. package/dist/capsule/lifecycle.js.map +1 -0
  11. package/dist/capsule/manager.d.ts +79 -0
  12. package/dist/capsule/manager.d.ts.map +1 -0
  13. package/dist/capsule/manager.js +113 -0
  14. package/dist/capsule/manager.js.map +1 -0
  15. package/dist/capsule/types.d.ts +79 -0
  16. package/dist/capsule/types.d.ts.map +1 -0
  17. package/dist/capsule/types.js +5 -0
  18. package/dist/capsule/types.js.map +1 -0
  19. package/dist/export/bundle.d.ts +125 -0
  20. package/dist/export/bundle.d.ts.map +1 -0
  21. package/dist/export/bundle.js +136 -0
  22. package/dist/export/bundle.js.map +1 -0
  23. package/dist/export/index.d.ts +8 -0
  24. package/dist/export/index.d.ts.map +1 -0
  25. package/dist/export/index.js +8 -0
  26. package/dist/export/index.js.map +1 -0
  27. package/dist/export/restore.d.ts +111 -0
  28. package/dist/export/restore.d.ts.map +1 -0
  29. package/dist/export/restore.js +149 -0
  30. package/dist/export/restore.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +18 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/retrieval/index.d.ts +8 -0
  36. package/dist/retrieval/index.d.ts.map +1 -0
  37. package/dist/retrieval/index.js +8 -0
  38. package/dist/retrieval/index.js.map +1 -0
  39. package/dist/retrieval/orchestrator.d.ts +50 -0
  40. package/dist/retrieval/orchestrator.d.ts.map +1 -0
  41. package/dist/retrieval/orchestrator.js +86 -0
  42. package/dist/retrieval/orchestrator.js.map +1 -0
  43. package/dist/retrieval/tiering.d.ts +76 -0
  44. package/dist/retrieval/tiering.d.ts.map +1 -0
  45. package/dist/retrieval/tiering.js +122 -0
  46. package/dist/retrieval/tiering.js.map +1 -0
  47. package/dist/service/index.d.ts +6 -0
  48. package/dist/service/index.d.ts.map +1 -0
  49. package/dist/service/index.js +5 -0
  50. package/dist/service/index.js.map +1 -0
  51. package/dist/service/kindling-service.d.ts +219 -0
  52. package/dist/service/kindling-service.d.ts.map +1 -0
  53. package/dist/service/kindling-service.js +260 -0
  54. package/dist/service/kindling-service.js.map +1 -0
  55. package/dist/types/capsule.d.ts +80 -0
  56. package/dist/types/capsule.d.ts.map +1 -0
  57. package/dist/types/capsule.js +33 -0
  58. package/dist/types/capsule.js.map +1 -0
  59. package/dist/types/common.d.ts +56 -0
  60. package/dist/types/common.d.ts.map +1 -0
  61. package/dist/types/common.js +16 -0
  62. package/dist/types/common.js.map +1 -0
  63. package/dist/types/index.d.ts +17 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +11 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/types/observation.d.ts +60 -0
  68. package/dist/types/observation.d.ts.map +1 -0
  69. package/dist/types/observation.js +27 -0
  70. package/dist/types/observation.js.map +1 -0
  71. package/dist/types/pin.d.ts +65 -0
  72. package/dist/types/pin.d.ts.map +1 -0
  73. package/dist/types/pin.js +26 -0
  74. package/dist/types/pin.js.map +1 -0
  75. package/dist/types/retrieval.d.ts +81 -0
  76. package/dist/types/retrieval.d.ts.map +1 -0
  77. package/dist/types/retrieval.js +5 -0
  78. package/dist/types/retrieval.js.map +1 -0
  79. package/dist/types/summary.d.ts +49 -0
  80. package/dist/types/summary.d.ts.map +1 -0
  81. package/dist/types/summary.js +13 -0
  82. package/dist/types/summary.js.map +1 -0
  83. package/dist/validation/capsule.d.ts +18 -0
  84. package/dist/validation/capsule.d.ts.map +1 -0
  85. package/dist/validation/capsule.js +143 -0
  86. package/dist/validation/capsule.js.map +1 -0
  87. package/dist/validation/index.d.ts +8 -0
  88. package/dist/validation/index.d.ts.map +1 -0
  89. package/dist/validation/index.js +8 -0
  90. package/dist/validation/index.js.map +1 -0
  91. package/dist/validation/observation.d.ts +18 -0
  92. package/dist/validation/observation.d.ts.map +1 -0
  93. package/dist/validation/observation.js +110 -0
  94. package/dist/validation/observation.js.map +1 -0
  95. package/dist/validation/pin.d.ts +16 -0
  96. package/dist/validation/pin.d.ts.map +1 -0
  97. package/dist/validation/pin.js +116 -0
  98. package/dist/validation/pin.js.map +1 -0
  99. package/dist/validation/summary.d.ts +16 -0
  100. package/dist/validation/summary.d.ts.map +1 -0
  101. package/dist/validation/summary.js +117 -0
  102. package/dist/validation/summary.js.map +1 -0
  103. package/package.json +55 -0
@@ -0,0 +1,219 @@
1
+ /**
2
+ * KindlingService - Main orchestration service
3
+ *
4
+ * Provides a unified API that combines:
5
+ * - Capsule lifecycle management
6
+ * - Observation ingestion
7
+ * - Retrieval orchestration
8
+ * - Pin management
9
+ * - Export/import coordination
10
+ */
11
+ import type { ID, ScopeIds } from '../types/common.js';
12
+ import type { Observation } from '../types/observation.js';
13
+ import type { Capsule } from '../types/capsule.js';
14
+ import type { Summary } from '../types/summary.js';
15
+ import type { Pin } from '../types/pin.js';
16
+ import type { RetrieveOptions, RetrieveResult, RetrievalProvider } from '../types/retrieval.js';
17
+ import type { OpenCapsuleOptions } from '../capsule/types.js';
18
+ import type { RetrievalStore } from '../retrieval/orchestrator.js';
19
+ import type { ExportStore } from '../export/bundle.js';
20
+ import type { ImportStore } from '../export/restore.js';
21
+ import { type ExportBundle, type ExportBundleOptions, type ExportStats } from '../export/bundle.js';
22
+ import { type ImportOptions, type ImportResult } from '../export/restore.js';
23
+ /**
24
+ * Store interface required by KindlingService
25
+ */
26
+ export interface KindlingStore extends RetrievalStore, ExportStore, ImportStore {
27
+ insertObservation(observation: Observation): void;
28
+ createCapsule(capsule: Capsule): void;
29
+ closeCapsule(capsuleId: ID, closedAt?: number): void;
30
+ attachObservationToCapsule(capsuleId: ID, observationId: ID): void;
31
+ createSummary(summary: Summary): void;
32
+ createPin(pin: Pin): void;
33
+ removePin(pinId: ID): void;
34
+ redactObservation(observationId: ID): void;
35
+ getCapsule(capsuleId: ID): Capsule | undefined;
36
+ getOpenCapsuleForSession(sessionId: string): Capsule | undefined;
37
+ getObservationById(observationId: ID): Observation | undefined;
38
+ getSummaryById(summaryId: ID): Summary | undefined;
39
+ getLatestSummaryForCapsule(capsuleId: ID): Summary | undefined;
40
+ listActivePins(scopeIds?: Partial<Record<string, string>>, now?: number): Pin[];
41
+ }
42
+ /**
43
+ * Options for appendObservation
44
+ */
45
+ export interface AppendObservationOptions {
46
+ capsuleId?: ID;
47
+ validate?: boolean;
48
+ }
49
+ /**
50
+ * Options for creating a pin
51
+ */
52
+ export interface CreatePinOptions {
53
+ targetType: 'observation' | 'summary';
54
+ targetId: ID;
55
+ note?: string;
56
+ ttlMs?: number;
57
+ scopeIds?: Partial<ScopeIds>;
58
+ }
59
+ /**
60
+ * Options for closing a capsule
61
+ */
62
+ export interface CloseCapsuleOptions {
63
+ generateSummary?: boolean;
64
+ summaryContent?: string;
65
+ confidence?: number;
66
+ }
67
+ /**
68
+ * KindlingService configuration
69
+ */
70
+ export interface KindlingServiceConfig {
71
+ store: KindlingStore;
72
+ provider: RetrievalProvider;
73
+ }
74
+ /**
75
+ * Main Kindling service
76
+ *
77
+ * Provides a unified API for all Kindling operations.
78
+ */
79
+ export declare class KindlingService {
80
+ private store;
81
+ private provider;
82
+ private capsuleManager;
83
+ constructor(config: KindlingServiceConfig);
84
+ /**
85
+ * Open a new capsule
86
+ *
87
+ * @param options - Capsule creation options
88
+ * @returns The created capsule
89
+ */
90
+ openCapsule(options: OpenCapsuleOptions): Capsule;
91
+ /**
92
+ * Close a capsule
93
+ *
94
+ * @param capsuleId - ID of capsule to close
95
+ * @param options - Closure options
96
+ * @returns The closed capsule
97
+ */
98
+ closeCapsule(capsuleId: ID, options?: CloseCapsuleOptions): Capsule;
99
+ /**
100
+ * Append an observation
101
+ *
102
+ * @param observation - Observation to append
103
+ * @param options - Append options
104
+ */
105
+ appendObservation(observation: Observation, options?: AppendObservationOptions): void;
106
+ /**
107
+ * Retrieve relevant context
108
+ *
109
+ * @param options - Retrieval options
110
+ * @returns Retrieval result with pins, summary, and candidates
111
+ */
112
+ retrieve(options: RetrieveOptions): Promise<RetrieveResult>;
113
+ /**
114
+ * Create a pin
115
+ *
116
+ * @param options - Pin creation options
117
+ * @returns The created pin
118
+ */
119
+ pin(options: CreatePinOptions): Pin;
120
+ /**
121
+ * Remove a pin
122
+ *
123
+ * @param pinId - ID of pin to remove
124
+ */
125
+ unpin(pinId: ID): void;
126
+ /**
127
+ * Redact an observation
128
+ *
129
+ * Removes content but preserves structure for provenance.
130
+ *
131
+ * @param observationId - ID of observation to redact
132
+ */
133
+ forget(observationId: ID): void;
134
+ /**
135
+ * Get a capsule by ID
136
+ *
137
+ * @param capsuleId - Capsule ID
138
+ * @returns Capsule or undefined if not found
139
+ */
140
+ getCapsule(capsuleId: ID): Capsule | undefined;
141
+ /**
142
+ * Get open capsule for a session
143
+ *
144
+ * @param sessionId - Session ID
145
+ * @returns Open capsule or undefined
146
+ */
147
+ getOpenCapsule(sessionId: string): Capsule | undefined;
148
+ /**
149
+ * Get observation by ID
150
+ *
151
+ * @param observationId - Observation ID
152
+ * @returns Observation or undefined if not found
153
+ */
154
+ getObservation(observationId: ID): Observation | undefined;
155
+ /**
156
+ * Get summary by ID
157
+ *
158
+ * @param summaryId - Summary ID
159
+ * @returns Summary or undefined if not found
160
+ */
161
+ getSummary(summaryId: ID): Summary | undefined;
162
+ /**
163
+ * List active pins for a scope
164
+ *
165
+ * @param scopeIds - Scope to filter by
166
+ * @returns Array of active pins
167
+ */
168
+ listPins(scopeIds?: Partial<ScopeIds>): Pin[];
169
+ /**
170
+ * Export database to a portable bundle
171
+ *
172
+ * @param options - Export options
173
+ * @returns Export bundle with dataset and metadata
174
+ */
175
+ export(options?: ExportBundleOptions): ExportBundle;
176
+ /**
177
+ * Export database to JSON string
178
+ *
179
+ * @param options - Export options
180
+ * @param pretty - Use pretty formatting (default: false)
181
+ * @returns JSON string
182
+ */
183
+ exportToJson(options?: ExportBundleOptions, pretty?: boolean): string;
184
+ /**
185
+ * Import from export bundle
186
+ *
187
+ * @param bundle - Export bundle to import
188
+ * @param options - Import options
189
+ * @returns Import result with counts and errors
190
+ */
191
+ import(bundle: ExportBundle, options?: ImportOptions): ImportResult;
192
+ /**
193
+ * Import from JSON string
194
+ *
195
+ * @param json - JSON string containing export bundle
196
+ * @param options - Import options
197
+ * @returns Import result with counts and errors
198
+ */
199
+ importFromJson(json: string, options?: ImportOptions): ImportResult;
200
+ /**
201
+ * Get statistics for an export bundle
202
+ *
203
+ * @param bundle - Export bundle
204
+ * @returns Statistics about bundle contents
205
+ */
206
+ getBundleStats(bundle: ExportBundle): ExportStats;
207
+ /**
208
+ * Merge multiple export bundles
209
+ *
210
+ * @param bundles - Bundles to merge
211
+ * @param metadata - Optional metadata for merged bundle
212
+ * @returns Merged bundle
213
+ */
214
+ mergeBundles(bundles: ExportBundle[], metadata?: {
215
+ description?: string;
216
+ tags?: string[];
217
+ }): ExportBundle;
218
+ }
219
+ //# sourceMappingURL=kindling-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kindling-service.d.ts","sourceRoot":"","sources":["../../src/service/kindling-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * KindlingService - Main orchestration service
3
+ *
4
+ * Provides a unified API that combines:
5
+ * - Capsule lifecycle management
6
+ * - Observation ingestion
7
+ * - Retrieval orchestration
8
+ * - Pin management
9
+ * - Export/import coordination
10
+ */
11
+ import { CapsuleManager } from '../capsule/manager.js';
12
+ import { retrieve as retrieveOrchestrator } from '../retrieval/orchestrator.js';
13
+ import { validateObservation } from '../validation/observation.js';
14
+ import { validatePin } from '../validation/pin.js';
15
+ import { validateSummary } from '../validation/summary.js';
16
+ import { createExportBundle, getBundleStats, serializeBundle, deserializeBundle, } from '../export/bundle.js';
17
+ import { restoreFromBundle, mergeBundles, } from '../export/restore.js';
18
+ /**
19
+ * Main Kindling service
20
+ *
21
+ * Provides a unified API for all Kindling operations.
22
+ */
23
+ export class KindlingService {
24
+ store;
25
+ provider;
26
+ capsuleManager;
27
+ constructor(config) {
28
+ this.store = config.store;
29
+ this.provider = config.provider;
30
+ this.capsuleManager = new CapsuleManager({
31
+ createCapsule: (capsule) => this.store.createCapsule(capsule),
32
+ closeCapsule: (capsuleId, closedAt) => this.store.closeCapsule(capsuleId, closedAt),
33
+ getCapsuleById: (capsuleId) => this.store.getCapsule(capsuleId),
34
+ getOpenCapsuleForSession: (sessionId) => this.store.getOpenCapsuleForSession(sessionId),
35
+ insertSummary: (summary) => this.store.createSummary(summary),
36
+ });
37
+ }
38
+ /**
39
+ * Open a new capsule
40
+ *
41
+ * @param options - Capsule creation options
42
+ * @returns The created capsule
43
+ */
44
+ openCapsule(options) {
45
+ return this.capsuleManager.open(options);
46
+ }
47
+ /**
48
+ * Close a capsule
49
+ *
50
+ * @param capsuleId - ID of capsule to close
51
+ * @param options - Closure options
52
+ * @returns The closed capsule
53
+ */
54
+ closeCapsule(capsuleId, options) {
55
+ const signals = {};
56
+ // Generate summary if requested
57
+ if (options?.generateSummary && options.summaryContent) {
58
+ const summary = {
59
+ id: `sum_${crypto.randomUUID()}`,
60
+ capsuleId,
61
+ content: options.summaryContent,
62
+ confidence: options.confidence ?? 1.0,
63
+ createdAt: Date.now(),
64
+ evidenceRefs: [],
65
+ };
66
+ // Validate and store summary
67
+ const validation = validateSummary(summary);
68
+ if (!validation.ok) {
69
+ const errorMessages = validation.error.map(e => e.message).join(', ');
70
+ throw new Error(`Invalid summary: ${errorMessages}`);
71
+ }
72
+ this.store.createSummary(validation.value);
73
+ }
74
+ return this.capsuleManager.close(capsuleId, signals);
75
+ }
76
+ /**
77
+ * Append an observation
78
+ *
79
+ * @param observation - Observation to append
80
+ * @param options - Append options
81
+ */
82
+ appendObservation(observation, options) {
83
+ // Validate observation if requested (default: true)
84
+ let obsToStore = observation;
85
+ if (options?.validate !== false) {
86
+ const validation = validateObservation(observation);
87
+ if (!validation.ok) {
88
+ const errorMessages = validation.error.map(e => e.message).join(', ');
89
+ throw new Error(`Invalid observation: ${errorMessages}`);
90
+ }
91
+ obsToStore = validation.value;
92
+ }
93
+ // Store observation
94
+ this.store.insertObservation(obsToStore);
95
+ // Attach to capsule if specified
96
+ if (options?.capsuleId) {
97
+ this.store.attachObservationToCapsule(options.capsuleId, obsToStore.id);
98
+ // Update the capsule manager's cache
99
+ this.capsuleManager.notifyObservationAttached(options.capsuleId, obsToStore.id);
100
+ }
101
+ }
102
+ /**
103
+ * Retrieve relevant context
104
+ *
105
+ * @param options - Retrieval options
106
+ * @returns Retrieval result with pins, summary, and candidates
107
+ */
108
+ async retrieve(options) {
109
+ return retrieveOrchestrator(this.store, this.provider, options);
110
+ }
111
+ /**
112
+ * Create a pin
113
+ *
114
+ * @param options - Pin creation options
115
+ * @returns The created pin
116
+ */
117
+ pin(options) {
118
+ const pin = {
119
+ id: `pin_${crypto.randomUUID()}`,
120
+ targetType: options.targetType,
121
+ targetId: options.targetId,
122
+ reason: options.note,
123
+ createdAt: Date.now(),
124
+ expiresAt: options.ttlMs ? Date.now() + options.ttlMs : undefined,
125
+ scopeIds: options.scopeIds ?? {},
126
+ };
127
+ // Validate pin
128
+ const validation = validatePin(pin);
129
+ if (!validation.ok) {
130
+ const errorMessages = validation.error.map(e => e.message).join(', ');
131
+ throw new Error(`Invalid pin: ${errorMessages}`);
132
+ }
133
+ this.store.createPin(validation.value);
134
+ return validation.value;
135
+ }
136
+ /**
137
+ * Remove a pin
138
+ *
139
+ * @param pinId - ID of pin to remove
140
+ */
141
+ unpin(pinId) {
142
+ this.store.removePin(pinId);
143
+ }
144
+ /**
145
+ * Redact an observation
146
+ *
147
+ * Removes content but preserves structure for provenance.
148
+ *
149
+ * @param observationId - ID of observation to redact
150
+ */
151
+ forget(observationId) {
152
+ this.store.redactObservation(observationId);
153
+ }
154
+ /**
155
+ * Get a capsule by ID
156
+ *
157
+ * @param capsuleId - Capsule ID
158
+ * @returns Capsule or undefined if not found
159
+ */
160
+ getCapsule(capsuleId) {
161
+ return this.capsuleManager.get(capsuleId);
162
+ }
163
+ /**
164
+ * Get open capsule for a session
165
+ *
166
+ * @param sessionId - Session ID
167
+ * @returns Open capsule or undefined
168
+ */
169
+ getOpenCapsule(sessionId) {
170
+ return this.capsuleManager.getOpen({ sessionId });
171
+ }
172
+ /**
173
+ * Get observation by ID
174
+ *
175
+ * @param observationId - Observation ID
176
+ * @returns Observation or undefined if not found
177
+ */
178
+ getObservation(observationId) {
179
+ return this.store.getObservationById(observationId);
180
+ }
181
+ /**
182
+ * Get summary by ID
183
+ *
184
+ * @param summaryId - Summary ID
185
+ * @returns Summary or undefined if not found
186
+ */
187
+ getSummary(summaryId) {
188
+ return this.store.getSummaryById(summaryId);
189
+ }
190
+ /**
191
+ * List active pins for a scope
192
+ *
193
+ * @param scopeIds - Scope to filter by
194
+ * @returns Array of active pins
195
+ */
196
+ listPins(scopeIds) {
197
+ return this.store.listActivePins(scopeIds, Date.now());
198
+ }
199
+ /**
200
+ * Export database to a portable bundle
201
+ *
202
+ * @param options - Export options
203
+ * @returns Export bundle with dataset and metadata
204
+ */
205
+ export(options) {
206
+ return createExportBundle(this.store, options);
207
+ }
208
+ /**
209
+ * Export database to JSON string
210
+ *
211
+ * @param options - Export options
212
+ * @param pretty - Use pretty formatting (default: false)
213
+ * @returns JSON string
214
+ */
215
+ exportToJson(options, pretty = false) {
216
+ const bundle = this.export(options);
217
+ return serializeBundle(bundle, pretty);
218
+ }
219
+ /**
220
+ * Import from export bundle
221
+ *
222
+ * @param bundle - Export bundle to import
223
+ * @param options - Import options
224
+ * @returns Import result with counts and errors
225
+ */
226
+ import(bundle, options) {
227
+ return restoreFromBundle(this.store, bundle, options);
228
+ }
229
+ /**
230
+ * Import from JSON string
231
+ *
232
+ * @param json - JSON string containing export bundle
233
+ * @param options - Import options
234
+ * @returns Import result with counts and errors
235
+ */
236
+ importFromJson(json, options) {
237
+ const bundle = deserializeBundle(json);
238
+ return this.import(bundle, options);
239
+ }
240
+ /**
241
+ * Get statistics for an export bundle
242
+ *
243
+ * @param bundle - Export bundle
244
+ * @returns Statistics about bundle contents
245
+ */
246
+ getBundleStats(bundle) {
247
+ return getBundleStats(bundle);
248
+ }
249
+ /**
250
+ * Merge multiple export bundles
251
+ *
252
+ * @param bundles - Bundles to merge
253
+ * @param metadata - Optional metadata for merged bundle
254
+ * @returns Merged bundle
255
+ */
256
+ mergeBundles(bundles, metadata) {
257
+ return mergeBundles(bundles, metadata);
258
+ }
259
+ }
260
+ //# sourceMappingURL=kindling-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kindling-service.js","sourceRoot":"","sources":["../../src/service/kindling-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,GAIlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,YAAY,GAGb,MAAM,sBAAsB,CAAC;AA6D9B;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAClB,KAAK,CAAgB;IACrB,QAAQ,CAAoB;IAC5B,cAAc,CAAiB;IAEvC,YAAY,MAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,aAAa,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;YACtE,YAAY,EAAE,CAAC,SAAa,EAAE,QAAgB,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC9C,cAAc,EAAE,CAAC,SAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;YACnE,wBAAwB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC;YAChD,aAAa,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;SACvE,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAA2B;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,SAAa,EAAE,OAA6B;QACvD,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,gCAAgC;QAChC,IAAI,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE;gBAChC,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,cAAc;gBAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,GAAG;gBACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,YAAY,EAAE,EAAE;aACjB,CAAC;YAEF,6BAA6B;YAC7B,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,WAAwB,EAAE,OAAkC;QAC5E,oDAAoD;QACpD,IAAI,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,OAAO,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEzC,iCAAiC;QACjC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YACxE,qCAAqC;YACrC,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,OAAyB;QAC3B,MAAM,GAAG,GAAQ;YACf,EAAE,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACjE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;SACjC,CAAC;QAEF,eAAe;QACf,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAS;QACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,aAAiB;QACtB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,aAAiB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAa;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,QAA4B;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAA2C,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAA6B;QAClC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,OAA6B,EAAE,MAAM,GAAG,KAAK;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAoB,EAAE,OAAuB;QAClD,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,IAAY,EAAE,OAAuB;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAoB;QACjC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CACV,OAAuB,EACvB,QAAoD;QAEpD,OAAO,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Capsule types and definitions
3
+ *
4
+ * A Capsule is a bounded unit of meaning that groups related observations
5
+ * (e.g., a session, a workflow node)
6
+ */
7
+ import type { ID, Timestamp, ScopeIds } from './common.js';
8
+ /**
9
+ * Types of capsules
10
+ */
11
+ export type CapsuleType = 'session' | 'pocketflow_node';
12
+ /**
13
+ * Capsule lifecycle status
14
+ */
15
+ export type CapsuleStatus = 'open' | 'closed';
16
+ /**
17
+ * Capsule entity
18
+ *
19
+ * Immutable except for:
20
+ * - status (transitions from 'open' to 'closed')
21
+ * - closedAt (set when status changes to 'closed')
22
+ */
23
+ export interface Capsule {
24
+ /** Unique identifier (UUIDv4) */
25
+ id: ID;
26
+ /** Type of capsule */
27
+ type: CapsuleType;
28
+ /**
29
+ * Human-readable description of capsule purpose
30
+ * e.g., "Fix authentication bug"
31
+ */
32
+ intent: string;
33
+ /** Lifecycle state */
34
+ status: CapsuleStatus;
35
+ /** Timestamp when capsule was opened (epoch milliseconds) */
36
+ openedAt: Timestamp;
37
+ /** Timestamp when capsule was closed (epoch milliseconds, undefined if open) */
38
+ closedAt?: Timestamp;
39
+ /** Isolation dimensions for scoped queries */
40
+ scopeIds: ScopeIds;
41
+ /**
42
+ * Ordered list of observation IDs attached to this capsule
43
+ * Order is deterministic (insertion order)
44
+ */
45
+ observationIds: ID[];
46
+ /** Optional reference to summary for this capsule */
47
+ summaryId?: ID;
48
+ }
49
+ /**
50
+ * Input for creating a new capsule
51
+ * Makes id, openedAt, status, observationIds, and summaryId optional
52
+ */
53
+ export interface CapsuleInput {
54
+ id?: ID;
55
+ type: CapsuleType;
56
+ intent: string;
57
+ status?: CapsuleStatus;
58
+ openedAt?: Timestamp;
59
+ closedAt?: Timestamp;
60
+ scopeIds: ScopeIds;
61
+ observationIds?: ID[];
62
+ summaryId?: ID;
63
+ }
64
+ /**
65
+ * All valid capsule types
66
+ */
67
+ export declare const CAPSULE_TYPES: readonly CapsuleType[];
68
+ /**
69
+ * All valid capsule statuses
70
+ */
71
+ export declare const CAPSULE_STATUSES: readonly CapsuleStatus[];
72
+ /**
73
+ * Type guard to check if a string is a valid CapsuleType
74
+ */
75
+ export declare function isCapsuleType(value: unknown): value is CapsuleType;
76
+ /**
77
+ * Type guard to check if a string is a valid CapsuleStatus
78
+ */
79
+ export declare function isCapsuleStatus(value: unknown): value is CapsuleStatus;
80
+ //# sourceMappingURL=capsule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../../src/types/capsule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,QAAQ,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,EAAE,EAAE,EAAE,CAAC;IAEP,sBAAsB;IACtB,IAAI,EAAE,WAAW,CAAC;IAElB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf,sBAAsB;IACtB,MAAM,EAAE,aAAa,CAAC;IAEtB,6DAA6D;IAC7D,QAAQ,EAAE,SAAS,CAAC;IAEpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,8CAA8C;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;OAGG;IACH,cAAc,EAAE,EAAE,EAAE,CAAC;IAErB,qDAAqD;IACrD,SAAS,CAAC,EAAE,EAAE,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAGtC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAG3C,CAAC;AAEX;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Capsule types and definitions
3
+ *
4
+ * A Capsule is a bounded unit of meaning that groups related observations
5
+ * (e.g., a session, a workflow node)
6
+ */
7
+ /**
8
+ * All valid capsule types
9
+ */
10
+ export const CAPSULE_TYPES = [
11
+ 'session',
12
+ 'pocketflow_node',
13
+ ];
14
+ /**
15
+ * All valid capsule statuses
16
+ */
17
+ export const CAPSULE_STATUSES = [
18
+ 'open',
19
+ 'closed',
20
+ ];
21
+ /**
22
+ * Type guard to check if a string is a valid CapsuleType
23
+ */
24
+ export function isCapsuleType(value) {
25
+ return typeof value === 'string' && CAPSULE_TYPES.includes(value);
26
+ }
27
+ /**
28
+ * Type guard to check if a string is a valid CapsuleStatus
29
+ */
30
+ export function isCapsuleStatus(value) {
31
+ return typeof value === 'string' && CAPSULE_STATUSES.includes(value);
32
+ }
33
+ //# sourceMappingURL=capsule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsule.js","sourceRoot":"","sources":["../../src/types/capsule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4EH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,SAAS;IACT,iBAAiB;CACT,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,MAAM;IACN,QAAQ;CACA,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Common types used across Kindling packages
3
+ */
4
+ /**
5
+ * Unique identifier for entities
6
+ * Implementation uses UUIDv4 format
7
+ */
8
+ export type ID = string;
9
+ /**
10
+ * Timestamp in epoch milliseconds
11
+ */
12
+ export type Timestamp = number;
13
+ /**
14
+ * Scope identifiers for multi-dimensional isolation
15
+ *
16
+ * All fields are optional to support partial scoping:
17
+ * - sessionId: Isolate by session (e.g., OpenCode session)
18
+ * - repoId: Isolate by repository path
19
+ * - agentId: Isolate by agent (future)
20
+ * - userId: Isolate by user (future)
21
+ * - taskId: Link to external task system (e.g., Beads task ID)
22
+ */
23
+ export interface ScopeIds {
24
+ sessionId?: string;
25
+ repoId?: string;
26
+ agentId?: string;
27
+ userId?: string;
28
+ taskId?: string;
29
+ }
30
+ /**
31
+ * Result type for operations that can fail
32
+ */
33
+ export type Result<T, E = Error> = {
34
+ ok: true;
35
+ value: T;
36
+ } | {
37
+ ok: false;
38
+ error: E;
39
+ };
40
+ /**
41
+ * Validation error details
42
+ */
43
+ export interface ValidationError {
44
+ field: string;
45
+ message: string;
46
+ value?: unknown;
47
+ }
48
+ /**
49
+ * Helper to create a success result
50
+ */
51
+ export declare function ok<T>(value: T): Result<T, never>;
52
+ /**
53
+ * Helper to create an error result
54
+ */
55
+ export declare function err<E>(error: E): Result<never, E>;
56
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAEhD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAEjD"}