@steno-ai/engine 0.1.16 → 0.1.18

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.
@@ -0,0 +1,397 @@
1
+ /**
2
+ * Structured data extractor — bypasses LLM entirely.
3
+ *
4
+ * Handles structured_event, structured_task, structured_email, structured_vault
5
+ * input types by directly creating entities, edges, and facts from known fields.
6
+ * Zero LLM cost, deterministic, high confidence.
7
+ */
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+ // ---------------------------------------------------------------------------
11
+ function canonicalize(name) {
12
+ return name.toLowerCase().replace(/[^a-z0-9\s.-]/g, '').replace(/\s+/g, ' ').trim();
13
+ }
14
+ function formatDate(iso) {
15
+ try {
16
+ return new Date(iso).toLocaleDateString('en-US', {
17
+ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric',
18
+ });
19
+ }
20
+ catch {
21
+ return iso;
22
+ }
23
+ }
24
+ function formatTime(iso) {
25
+ try {
26
+ return new Date(iso).toLocaleTimeString('en-US', {
27
+ hour: 'numeric', minute: '2-digit', hour12: true,
28
+ });
29
+ }
30
+ catch {
31
+ return '';
32
+ }
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Extractors
36
+ // ---------------------------------------------------------------------------
37
+ export function extractStructuredEvent(data) {
38
+ if (!data?.title)
39
+ return { facts: [], entities: [], edges: [], tier: 'heuristic', confidence: 1.0, tokensInput: 0, tokensOutput: 0, model: null };
40
+ const entities = [];
41
+ const edges = [];
42
+ // Main event entity
43
+ const eventCanonical = canonicalize(data.title);
44
+ entities.push({
45
+ name: data.title,
46
+ entityType: 'event',
47
+ canonicalName: eventCanonical,
48
+ properties: {
49
+ startTime: data.startTime,
50
+ endTime: data.endTime,
51
+ location: data.location,
52
+ url: data.url,
53
+ provider: data.provider,
54
+ externalId: data.externalId,
55
+ sourceType: data.sourceType,
56
+ },
57
+ });
58
+ // Location entity
59
+ if (data.location) {
60
+ const locCanonical = canonicalize(data.location);
61
+ entities.push({
62
+ name: data.location,
63
+ entityType: 'location',
64
+ canonicalName: locCanonical,
65
+ properties: {},
66
+ });
67
+ edges.push({
68
+ sourceName: eventCanonical,
69
+ targetName: locCanonical,
70
+ relation: 'located_at',
71
+ edgeType: 'associative',
72
+ confidence: 1.0,
73
+ });
74
+ }
75
+ // Organizer entities
76
+ for (const org of data.organizers ?? []) {
77
+ const orgCanonical = canonicalize(org);
78
+ entities.push({
79
+ name: org,
80
+ entityType: 'organization',
81
+ canonicalName: orgCanonical,
82
+ properties: {},
83
+ });
84
+ edges.push({
85
+ sourceName: eventCanonical,
86
+ targetName: orgCanonical,
87
+ relation: 'hosted_by',
88
+ edgeType: 'associative',
89
+ confidence: 1.0,
90
+ });
91
+ }
92
+ // Attendee entities
93
+ for (const attendee of data.attendees ?? []) {
94
+ const attCanonical = canonicalize(attendee);
95
+ entities.push({
96
+ name: attendee,
97
+ entityType: 'person',
98
+ canonicalName: attCanonical,
99
+ properties: {},
100
+ });
101
+ edges.push({
102
+ sourceName: attCanonical,
103
+ targetName: eventCanonical,
104
+ relation: 'attends',
105
+ edgeType: 'associative',
106
+ confidence: 1.0,
107
+ });
108
+ }
109
+ // Build fact content
110
+ let factContent = `Event: "${data.title}" on ${formatDate(data.startTime)}`;
111
+ if (data.startTime)
112
+ factContent += ` at ${formatTime(data.startTime)}`;
113
+ if (data.endTime)
114
+ factContent += ` - ${formatTime(data.endTime)}`;
115
+ if (data.location)
116
+ factContent += ` at ${data.location}`;
117
+ if (data.organizers?.length)
118
+ factContent += `. Hosted by ${data.organizers.join(', ')}`;
119
+ if (data.description)
120
+ factContent += `. ${data.description.slice(0, 300)}`;
121
+ const fact = {
122
+ content: factContent,
123
+ importance: 0.8,
124
+ confidence: 1.0,
125
+ sourceType: (data.sourceType === 'vault' ? 'structured_vault' : 'structured_event'),
126
+ modality: 'text',
127
+ tags: ['structured', 'event', ...(data.provider ? [data.provider] : [])],
128
+ originalContent: JSON.stringify(data),
129
+ entityCanonicalNames: [eventCanonical, ...entities.filter(e => e.canonicalName !== eventCanonical).map(e => e.canonicalName)],
130
+ eventDate: new Date(data.startTime),
131
+ documentDate: new Date(),
132
+ };
133
+ return {
134
+ facts: [fact],
135
+ entities,
136
+ edges,
137
+ tier: 'heuristic',
138
+ confidence: 1.0,
139
+ tokensInput: 0,
140
+ tokensOutput: 0,
141
+ model: null,
142
+ };
143
+ }
144
+ export function extractStructuredTask(data) {
145
+ if (!data?.title)
146
+ return { facts: [], entities: [], edges: [], tier: 'heuristic', confidence: 1.0, tokensInput: 0, tokensOutput: 0, model: null };
147
+ const entities = [];
148
+ const edges = [];
149
+ const taskCanonical = canonicalize(data.title);
150
+ entities.push({
151
+ name: data.title,
152
+ entityType: 'task',
153
+ canonicalName: taskCanonical,
154
+ properties: {
155
+ status: data.status,
156
+ priority: data.priority,
157
+ category: data.category,
158
+ dueDate: data.dueDate,
159
+ externalId: data.externalId,
160
+ },
161
+ });
162
+ // Category entity
163
+ if (data.category) {
164
+ const catCanonical = canonicalize(data.category);
165
+ entities.push({
166
+ name: data.category,
167
+ entityType: 'topic',
168
+ canonicalName: catCanonical,
169
+ properties: {},
170
+ });
171
+ edges.push({
172
+ sourceName: taskCanonical,
173
+ targetName: catCanonical,
174
+ relation: 'categorized_as',
175
+ edgeType: 'hierarchical',
176
+ confidence: 1.0,
177
+ });
178
+ }
179
+ let factContent = `Task: "${data.title}"`;
180
+ if (data.status)
181
+ factContent += ` (${data.status})`;
182
+ if (data.priority)
183
+ factContent += `, priority: ${data.priority}`;
184
+ if (data.dueDate)
185
+ factContent += `, due ${formatDate(data.dueDate)}`;
186
+ if (data.description)
187
+ factContent += `. ${data.description.slice(0, 200)}`;
188
+ const fact = {
189
+ content: factContent,
190
+ importance: data.priority === 'high' || data.priority === 'urgent' ? 0.9 : 0.7,
191
+ confidence: 1.0,
192
+ sourceType: 'structured_task',
193
+ modality: 'text',
194
+ tags: ['structured', 'task', ...(data.tags ?? [])],
195
+ originalContent: JSON.stringify(data),
196
+ entityCanonicalNames: [taskCanonical],
197
+ eventDate: data.dueDate ? new Date(data.dueDate) : undefined,
198
+ documentDate: new Date(),
199
+ };
200
+ return {
201
+ facts: [fact],
202
+ entities,
203
+ edges,
204
+ tier: 'heuristic',
205
+ confidence: 1.0,
206
+ tokensInput: 0,
207
+ tokensOutput: 0,
208
+ model: null,
209
+ };
210
+ }
211
+ export function extractStructuredEmail(data) {
212
+ if (!data?.subject && !data?.from)
213
+ return { facts: [], entities: [], edges: [], tier: 'heuristic', confidence: 1.0, tokensInput: 0, tokensOutput: 0, model: null };
214
+ const entities = [];
215
+ const edges = [];
216
+ // Sender entity
217
+ const senderCanonical = canonicalize(data.from);
218
+ entities.push({
219
+ name: data.from,
220
+ entityType: 'person',
221
+ canonicalName: senderCanonical,
222
+ properties: { email: data.from },
223
+ });
224
+ // Subject as topic entity if substantial
225
+ if (data.subject && data.subject.length > 5) {
226
+ const subjectCanonical = canonicalize(data.subject);
227
+ entities.push({
228
+ name: data.subject,
229
+ entityType: 'topic',
230
+ canonicalName: subjectCanonical,
231
+ properties: { threadId: data.threadId, provider: data.provider },
232
+ });
233
+ edges.push({
234
+ sourceName: senderCanonical,
235
+ targetName: subjectCanonical,
236
+ relation: 'authored',
237
+ edgeType: 'associative',
238
+ confidence: 1.0,
239
+ });
240
+ }
241
+ // Recipients
242
+ for (const to of data.to ?? []) {
243
+ const toCanonical = canonicalize(to);
244
+ entities.push({
245
+ name: to,
246
+ entityType: 'person',
247
+ canonicalName: toCanonical,
248
+ properties: { email: to },
249
+ });
250
+ }
251
+ let factContent = `Email from ${data.from}: "${data.subject}"`;
252
+ if (data.date)
253
+ factContent += ` on ${formatDate(data.date)}`;
254
+ if (data.body)
255
+ factContent += `. ${data.body.slice(0, 300)}`;
256
+ const fact = {
257
+ content: factContent,
258
+ importance: data.isUnread ? 0.8 : 0.5,
259
+ confidence: 1.0,
260
+ sourceType: 'structured_email',
261
+ modality: 'text',
262
+ tags: ['structured', 'email', ...(data.provider ? [data.provider] : []), ...(data.isUnread ? ['unread'] : [])],
263
+ originalContent: JSON.stringify(data),
264
+ entityCanonicalNames: [senderCanonical],
265
+ eventDate: new Date(data.date),
266
+ documentDate: new Date(),
267
+ };
268
+ return {
269
+ facts: [fact],
270
+ entities,
271
+ edges,
272
+ tier: 'heuristic',
273
+ confidence: 1.0,
274
+ tokensInput: 0,
275
+ tokensOutput: 0,
276
+ model: null,
277
+ };
278
+ }
279
+ export function extractStructuredVault(data) {
280
+ if (!data?.title)
281
+ return { facts: [], entities: [], edges: [], tier: 'heuristic', confidence: 1.0, tokensInput: 0, tokensOutput: 0, model: null };
282
+ const entities = [];
283
+ const edges = [];
284
+ const vaultCanonical = canonicalize(data.title);
285
+ entities.push({
286
+ name: data.title,
287
+ entityType: data.contentType === 'event' ? 'event' : 'topic',
288
+ canonicalName: vaultCanonical,
289
+ properties: {
290
+ contentType: data.contentType,
291
+ url: data.url,
292
+ source: data.source,
293
+ savedAt: data.savedAt,
294
+ externalId: data.externalId,
295
+ ...(data.metadata ?? {}),
296
+ },
297
+ });
298
+ // Source domain entity
299
+ if (data.source) {
300
+ const sourceCanonical = canonicalize(data.source);
301
+ entities.push({
302
+ name: data.source,
303
+ entityType: 'source',
304
+ canonicalName: sourceCanonical,
305
+ properties: {},
306
+ });
307
+ edges.push({
308
+ sourceName: vaultCanonical,
309
+ targetName: sourceCanonical,
310
+ relation: 'saved_from',
311
+ edgeType: 'associative',
312
+ confidence: 1.0,
313
+ });
314
+ }
315
+ // If event type, extract organizers from metadata
316
+ const organizers = data.metadata?.organizer || data.metadata?.organizers;
317
+ if (organizers) {
318
+ const orgList = typeof organizers === 'string'
319
+ ? organizers.split(/,\s*|(?:\s+and\s+)/)
320
+ : Array.isArray(organizers) ? organizers : [];
321
+ for (const org of orgList) {
322
+ const trimmed = org.trim();
323
+ if (!trimmed)
324
+ continue;
325
+ const orgCanonical = canonicalize(trimmed);
326
+ entities.push({
327
+ name: trimmed,
328
+ entityType: 'organization',
329
+ canonicalName: orgCanonical,
330
+ properties: {},
331
+ });
332
+ edges.push({
333
+ sourceName: vaultCanonical,
334
+ targetName: orgCanonical,
335
+ relation: 'hosted_by',
336
+ edgeType: 'associative',
337
+ confidence: 1.0,
338
+ });
339
+ }
340
+ }
341
+ let factContent = `Saved to vault: "${data.title}" (${data.contentType})`;
342
+ if (data.source)
343
+ factContent += ` from ${data.source}`;
344
+ if (data.savedAt)
345
+ factContent += ` on ${formatDate(data.savedAt)}`;
346
+ if (data.content)
347
+ factContent += `. ${data.content.slice(0, 300)}`;
348
+ const fact = {
349
+ content: factContent,
350
+ importance: 0.7,
351
+ confidence: 1.0,
352
+ sourceType: 'structured_vault',
353
+ modality: 'text',
354
+ tags: ['structured', 'vault', data.contentType],
355
+ originalContent: JSON.stringify(data),
356
+ entityCanonicalNames: [vaultCanonical, ...entities.filter(e => e.canonicalName !== vaultCanonical).map(e => e.canonicalName)],
357
+ eventDate: data.metadata?.date ? new Date(data.metadata.date) : undefined,
358
+ documentDate: new Date(data.savedAt),
359
+ };
360
+ return {
361
+ facts: [fact],
362
+ entities,
363
+ edges,
364
+ tier: 'heuristic',
365
+ confidence: 1.0,
366
+ tokensInput: 0,
367
+ tokensOutput: 0,
368
+ model: null,
369
+ };
370
+ }
371
+ // ---------------------------------------------------------------------------
372
+ // Router — picks the right extractor based on inputType
373
+ // ---------------------------------------------------------------------------
374
+ const STRUCTURED_INPUT_TYPES = new Set([
375
+ 'structured_event',
376
+ 'structured_task',
377
+ 'structured_email',
378
+ 'structured_vault',
379
+ ]);
380
+ export function isStructuredInput(inputType) {
381
+ return STRUCTURED_INPUT_TYPES.has(inputType);
382
+ }
383
+ export function extractStructured(inputType, data) {
384
+ switch (inputType) {
385
+ case 'structured_event':
386
+ return extractStructuredEvent(data);
387
+ case 'structured_task':
388
+ return extractStructuredTask(data);
389
+ case 'structured_email':
390
+ return extractStructuredEmail(data);
391
+ case 'structured_vault':
392
+ return extractStructuredVault(data);
393
+ default:
394
+ throw new Error(`Unknown structured input type: ${inputType}`);
395
+ }
396
+ }
397
+ //# sourceMappingURL=structured-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-extractor.js","sourceRoot":"","sources":["../../src/extraction/structured-extractor.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export interface ExtractionInput {
55
55
  scope: Scope;
56
56
  scopeId: string;
57
57
  sessionId?: string;
58
- inputType: 'conversation' | 'document' | 'url' | 'raw_text' | 'image' | 'audio' | 'code' | 'codebase_scan' | 'file_change' | 'architecture_doc';
58
+ inputType: 'conversation' | 'document' | 'url' | 'raw_text' | 'image' | 'audio' | 'code' | 'codebase_scan' | 'file_change' | 'architecture_doc' | 'structured_event' | 'structured_task' | 'structured_email' | 'structured_vault';
59
59
  data: unknown;
60
60
  existingFacts?: Array<{
61
61
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/extraction/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1F,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2FAA2F;IAC3F,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,kDAAkD;IAClD,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACjD,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,GAAG,aAAa,GAAG,kBAAkB,CAAC;IAChJ,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAChG,+EAA+E;IAC/E,cAAc,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACrH,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/extraction/types.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export declare const EdgeSchema: z.ZodObject<{
5
5
  sourceId: z.ZodString;
6
6
  targetId: z.ZodString;
7
7
  relation: z.ZodString;
8
- edgeType: z.ZodEnum<["associative", "causal", "temporal", "contradictory", "hierarchical", "updates", "extends", "derives", "precedes", "depends_on", "deadline", "imports", "implements", "owns", "configures", "tested_by"]>;
8
+ edgeType: z.ZodEnum<["associative", "causal", "temporal", "contradictory", "hierarchical", "updates", "extends", "derives", "precedes", "depends_on", "deadline", "imports", "implements", "owns", "configures", "same_as", "tested_by"]>;
9
9
  weight: z.ZodDefault<z.ZodNumber>;
10
10
  validFrom: z.ZodDate;
11
11
  validUntil: z.ZodNullable<z.ZodDate>;
@@ -24,7 +24,7 @@ export declare const EdgeSchema: z.ZodObject<{
24
24
  sourceId: string;
25
25
  targetId: string;
26
26
  relation: string;
27
- edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "tested_by";
27
+ edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "same_as" | "tested_by";
28
28
  weight: number;
29
29
  factId: string | null;
30
30
  }, {
@@ -38,7 +38,7 @@ export declare const EdgeSchema: z.ZodObject<{
38
38
  sourceId: string;
39
39
  targetId: string;
40
40
  relation: string;
41
- edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "tested_by";
41
+ edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "same_as" | "tested_by";
42
42
  factId: string | null;
43
43
  weight?: number | undefined;
44
44
  }>;
@@ -48,7 +48,7 @@ export declare const CreateEdgeSchema: z.ZodObject<{
48
48
  sourceId: z.ZodString;
49
49
  targetId: z.ZodString;
50
50
  relation: z.ZodString;
51
- edgeType: z.ZodEnum<["associative", "causal", "temporal", "contradictory", "hierarchical", "updates", "extends", "derives", "precedes", "depends_on", "deadline", "imports", "implements", "owns", "configures", "tested_by"]>;
51
+ edgeType: z.ZodEnum<["associative", "causal", "temporal", "contradictory", "hierarchical", "updates", "extends", "derives", "precedes", "depends_on", "deadline", "imports", "implements", "owns", "configures", "same_as", "tested_by"]>;
52
52
  weight: z.ZodDefault<z.ZodNumber>;
53
53
  factId: z.ZodOptional<z.ZodString>;
54
54
  confidence: z.ZodDefault<z.ZodNumber>;
@@ -60,7 +60,7 @@ export declare const CreateEdgeSchema: z.ZodObject<{
60
60
  sourceId: string;
61
61
  targetId: string;
62
62
  relation: string;
63
- edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "tested_by";
63
+ edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "same_as" | "tested_by";
64
64
  weight: number;
65
65
  factId?: string | undefined;
66
66
  }, {
@@ -68,7 +68,7 @@ export declare const CreateEdgeSchema: z.ZodObject<{
68
68
  sourceId: string;
69
69
  targetId: string;
70
70
  relation: string;
71
- edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "tested_by";
71
+ edgeType: "temporal" | "associative" | "causal" | "contradictory" | "hierarchical" | "updates" | "extends" | "derives" | "precedes" | "depends_on" | "deadline" | "imports" | "implements" | "owns" | "configures" | "same_as" | "tested_by";
72
72
  confidence?: number | undefined;
73
73
  metadata?: Record<string, unknown> | undefined;
74
74
  weight?: number | undefined;
@@ -3,7 +3,7 @@ export declare const ExtractionSchema: z.ZodObject<{
3
3
  id: z.ZodString;
4
4
  tenantId: z.ZodString;
5
5
  status: z.ZodEnum<["queued", "processing", "completed", "failed", "deduped"]>;
6
- inputType: z.ZodEnum<["conversation", "document", "url", "raw_text", "image", "audio", "code", "codebase_scan", "file_change", "architecture_doc"]>;
6
+ inputType: z.ZodEnum<["conversation", "document", "url", "raw_text", "image", "audio", "code", "codebase_scan", "file_change", "architecture_doc", "structured_event", "structured_task", "structured_email", "structured_vault"]>;
7
7
  inputData: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>;
8
8
  inputHash: z.ZodString;
9
9
  inputSize: z.ZodNullable<z.ZodNumber>;
@@ -33,7 +33,7 @@ export declare const ExtractionSchema: z.ZodObject<{
33
33
  scopeId: string;
34
34
  sessionId: string | null;
35
35
  createdAt: Date;
36
- inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
36
+ inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
37
37
  inputData: string | Record<string, unknown> | null;
38
38
  inputHash: string;
39
39
  inputSize: number | null;
@@ -59,7 +59,7 @@ export declare const ExtractionSchema: z.ZodObject<{
59
59
  scopeId: string;
60
60
  sessionId: string | null;
61
61
  createdAt: Date;
62
- inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
62
+ inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
63
63
  inputData: string | Record<string, unknown> | null;
64
64
  inputHash: string;
65
65
  inputSize: number | null;
@@ -81,7 +81,7 @@ export declare const ExtractionSchema: z.ZodObject<{
81
81
  export type Extraction = z.infer<typeof ExtractionSchema>;
82
82
  export declare const CreateExtractionSchema: z.ZodObject<{
83
83
  tenantId: z.ZodString;
84
- inputType: z.ZodEnum<["conversation", "document", "url", "raw_text", "image", "audio", "code", "codebase_scan", "file_change", "architecture_doc"]>;
84
+ inputType: z.ZodEnum<["conversation", "document", "url", "raw_text", "image", "audio", "code", "codebase_scan", "file_change", "architecture_doc", "structured_event", "structured_task", "structured_email", "structured_vault"]>;
85
85
  inputData: z.ZodString;
86
86
  inputHash: z.ZodString;
87
87
  inputSize: z.ZodOptional<z.ZodNumber>;
@@ -92,7 +92,7 @@ export declare const CreateExtractionSchema: z.ZodObject<{
92
92
  tenantId: string;
93
93
  scope: "user" | "agent" | "session" | "hive" | "codebase";
94
94
  scopeId: string;
95
- inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
95
+ inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
96
96
  inputData: string;
97
97
  inputHash: string;
98
98
  sessionId?: string | undefined;
@@ -101,7 +101,7 @@ export declare const CreateExtractionSchema: z.ZodObject<{
101
101
  tenantId: string;
102
102
  scope: "user" | "agent" | "session" | "hive" | "codebase";
103
103
  scopeId: string;
104
- inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
104
+ inputType: "code" | "conversation" | "document" | "url" | "raw_text" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | "image" | "audio" | "codebase_scan" | "file_change" | "architecture_doc";
105
105
  inputData: string;
106
106
  inputHash: string;
107
107
  sessionId?: string | undefined;
@@ -20,7 +20,7 @@ export declare const FactSchema: z.ZodObject<{
20
20
  decayScore: z.ZodNumber;
21
21
  contradictionStatus: z.ZodEnum<["none", "active", "resolved", "superseded"]>;
22
22
  contradictsId: z.ZodNullable<z.ZodString>;
23
- sourceType: z.ZodEnum<["conversation", "document", "url", "raw_text", "api", "agent_self", "file_analysis", "ast_parse", "git_history", "dependency_scan"]>;
23
+ sourceType: z.ZodEnum<["conversation", "document", "url", "raw_text", "api", "agent_self", "file_analysis", "ast_parse", "git_history", "dependency_scan", "structured_event", "structured_task", "structured_email", "structured_vault"]>;
24
24
  sourceRef: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
25
  confidence: z.ZodNumber;
26
26
  originalContent: z.ZodNullable<z.ZodString>;
@@ -57,7 +57,7 @@ export declare const FactSchema: z.ZodObject<{
57
57
  decayScore: number;
58
58
  contradictionStatus: "none" | "active" | "resolved" | "superseded";
59
59
  contradictsId: string | null;
60
- sourceType: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan";
60
+ sourceType: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | "structured_event" | "structured_task" | "structured_email" | "structured_vault";
61
61
  sourceRef: Record<string, unknown> | null;
62
62
  confidence: number;
63
63
  originalContent: string | null;
@@ -91,7 +91,7 @@ export declare const FactSchema: z.ZodObject<{
91
91
  decayScore: number;
92
92
  contradictionStatus: "none" | "active" | "resolved" | "superseded";
93
93
  contradictsId: string | null;
94
- sourceType: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan";
94
+ sourceType: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | "structured_event" | "structured_task" | "structured_email" | "structured_vault";
95
95
  sourceRef: Record<string, unknown> | null;
96
96
  confidence: number;
97
97
  originalContent: string | null;
@@ -121,7 +121,7 @@ export declare const CreateFactSchema: z.ZodObject<{
121
121
  operation: z.ZodDefault<z.ZodEnum<["create", "update", "invalidate"]>>;
122
122
  contradictionStatus: z.ZodDefault<z.ZodEnum<["none", "active", "resolved", "superseded"]>>;
123
123
  contradictsId: z.ZodOptional<z.ZodString>;
124
- sourceType: z.ZodOptional<z.ZodEnum<["conversation", "document", "url", "raw_text", "api", "agent_self", "file_analysis", "ast_parse", "git_history", "dependency_scan"]>>;
124
+ sourceType: z.ZodOptional<z.ZodEnum<["conversation", "document", "url", "raw_text", "api", "agent_self", "file_analysis", "ast_parse", "git_history", "dependency_scan", "structured_event", "structured_task", "structured_email", "structured_vault"]>>;
125
125
  sourceRef: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
126
126
  originalContent: z.ZodOptional<z.ZodString>;
127
127
  extractionId: z.ZodOptional<z.ZodString>;
@@ -152,7 +152,7 @@ export declare const CreateFactSchema: z.ZodObject<{
152
152
  lineageId?: string | undefined;
153
153
  parentId?: string | undefined;
154
154
  contradictsId?: string | undefined;
155
- sourceType?: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | undefined;
155
+ sourceType?: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | undefined;
156
156
  sourceRef?: Record<string, unknown> | undefined;
157
157
  originalContent?: string | undefined;
158
158
  extractionId?: string | undefined;
@@ -174,7 +174,7 @@ export declare const CreateFactSchema: z.ZodObject<{
174
174
  importance?: number | undefined;
175
175
  contradictionStatus?: "none" | "active" | "resolved" | "superseded" | undefined;
176
176
  contradictsId?: string | undefined;
177
- sourceType?: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | undefined;
177
+ sourceType?: "conversation" | "document" | "url" | "raw_text" | "api" | "agent_self" | "file_analysis" | "ast_parse" | "git_history" | "dependency_scan" | "structured_event" | "structured_task" | "structured_email" | "structured_vault" | undefined;
178
178
  sourceRef?: Record<string, unknown> | undefined;
179
179
  confidence?: number | undefined;
180
180
  originalContent?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steno-ai/engine",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "Core memory engine — extraction, retrieval, knowledge graph",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/config.ts CHANGED
@@ -72,6 +72,10 @@ export const SOURCE_TYPES = [
72
72
  'ast_parse',
73
73
  'git_history',
74
74
  'dependency_scan',
75
+ 'structured_event',
76
+ 'structured_task',
77
+ 'structured_email',
78
+ 'structured_vault',
75
79
  ] as const;
76
80
  export type SourceType = (typeof SOURCE_TYPES)[number];
77
81
 
@@ -100,6 +104,7 @@ export const EDGE_TYPES = [
100
104
  'implements', // A implements interface/contract B
101
105
  'owns', // A owns/contains B (package → module)
102
106
  'configures', // A configures/sets up B
107
+ 'same_as', // A and B are the same real-world thing (vault item = calendar event)
103
108
  'tested_by', // A is tested by B (module → test file)
104
109
  ] as const;
105
110
  export type EdgeType = (typeof EDGE_TYPES)[number];
@@ -124,6 +129,10 @@ export const INPUT_TYPES = [
124
129
  'codebase_scan',
125
130
  'file_change',
126
131
  'architecture_doc',
132
+ 'structured_event',
133
+ 'structured_task',
134
+ 'structured_email',
135
+ 'structured_vault',
127
136
  ] as const;
128
137
  export type InputType = (typeof INPUT_TYPES)[number];
129
138