@pellux/goodvibes-sdk 0.33.11 → 0.33.12
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/dist/contracts/artifacts/operator-contract.json +1 -1
- package/dist/platform/knowledge/ingest-compile.d.ts.map +1 -1
- package/dist/platform/knowledge/ingest-compile.js +24 -12
- package/dist/platform/knowledge/semantic/answer-evidence.d.ts.map +1 -1
- package/dist/platform/knowledge/semantic/answer-evidence.js +6 -3
- package/dist/platform/knowledge/spaces.d.ts +2 -0
- package/dist/platform/knowledge/spaces.d.ts.map +1 -1
- package/dist/platform/knowledge/spaces.js +14 -3
- package/dist/platform/knowledge/store-read.js +5 -5
- package/dist/platform/knowledge/store.d.ts +1 -0
- package/dist/platform/knowledge/store.d.ts.map +1 -1
- package/dist/platform/knowledge/store.js +70 -16
- package/dist/platform/version.js +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-compile.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/ingest-compile.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EACV,yBAAyB,EAEzB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ingest-compile.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/ingest-compile.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EACV,yBAAyB,EAEzB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAOpB,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE;IACL,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C,GACA,OAAO,CAAC;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAoEvG;AAOD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5H;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,qBAAqB,EAC7B,UAAU,CAAC,EAAE,yBAAyB,GAAG,IAAI,GAC5C,OAAO,CAAC,IAAI,CAAC,CAaf;AA2KD,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,qBAAqB,EAC7B,UAAU,CAAC,EAAE,yBAAyB,GAAG,IAAI,GAC5C,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
|
|
@@ -4,6 +4,7 @@ import { logger } from '../utils/logger.js';
|
|
|
4
4
|
import { extractKnowledgeArtifact } from './extractors.js';
|
|
5
5
|
import { knowledgeExtractionNeedsRefresh } from './extraction-policy.js';
|
|
6
6
|
import { canonicalizeUri, extractTaggedValues, mergeTags, readMetadataStrings, slugify, topKeywords, } from './shared.js';
|
|
7
|
+
import { getKnowledgeSpaceId, knowledgeSpaceMetadata } from './spaces.js';
|
|
7
8
|
const MAX_EXTRACTION_SECTION_NODES = 12;
|
|
8
9
|
const MAX_EXTRACTION_LINK_EDGES = 24;
|
|
9
10
|
const MAX_ENTITY_HINT_VALUES_PER_KIND = 8;
|
|
@@ -115,6 +116,7 @@ export async function compileKnowledgeSource(context, source, extraction) {
|
|
|
115
116
|
}), source.sessionId);
|
|
116
117
|
}
|
|
117
118
|
async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
119
|
+
const spaceId = getKnowledgeSpaceId(source);
|
|
118
120
|
if (source.artifactId) {
|
|
119
121
|
await context.store.upsertEdge({
|
|
120
122
|
fromKind: 'source',
|
|
@@ -122,6 +124,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
122
124
|
toKind: 'artifact',
|
|
123
125
|
toId: source.artifactId,
|
|
124
126
|
relation: 'snapshotted_as',
|
|
127
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
125
128
|
});
|
|
126
129
|
}
|
|
127
130
|
const domain = source.canonicalUri ?? source.sourceUri;
|
|
@@ -130,11 +133,11 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
130
133
|
const hostname = new URL(domain).hostname.toLowerCase();
|
|
131
134
|
const domainNode = await context.store.upsertNode({
|
|
132
135
|
kind: 'domain',
|
|
133
|
-
slug: slugify(hostname),
|
|
136
|
+
slug: slugify(`${spaceId}-${hostname}`),
|
|
134
137
|
title: hostname,
|
|
135
138
|
summary: `Knowledge sources cataloged under ${hostname}.`,
|
|
136
139
|
aliases: [hostname],
|
|
137
|
-
metadata: { hostname },
|
|
140
|
+
metadata: knowledgeSpaceMetadata(spaceId, { hostname }),
|
|
138
141
|
});
|
|
139
142
|
await context.store.upsertEdge({
|
|
140
143
|
fromKind: 'source',
|
|
@@ -142,6 +145,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
142
145
|
toKind: 'node',
|
|
143
146
|
toId: domainNode.id,
|
|
144
147
|
relation: 'belongs_to_domain',
|
|
148
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
145
149
|
});
|
|
146
150
|
}
|
|
147
151
|
catch (error) {
|
|
@@ -161,11 +165,11 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
161
165
|
accumulated = accumulated ? `${accumulated}/${segment}` : segment;
|
|
162
166
|
const folderNode = await context.store.upsertNode({
|
|
163
167
|
kind: 'bookmark_folder',
|
|
164
|
-
slug: slugify(accumulated),
|
|
168
|
+
slug: slugify(`${spaceId}-${accumulated}`),
|
|
165
169
|
title: segment,
|
|
166
170
|
summary: `Bookmark folder ${accumulated}.`,
|
|
167
171
|
aliases: [accumulated],
|
|
168
|
-
metadata: { folderPath: accumulated },
|
|
172
|
+
metadata: knowledgeSpaceMetadata(spaceId, { folderPath: accumulated }),
|
|
169
173
|
});
|
|
170
174
|
if (previousNode) {
|
|
171
175
|
await context.store.upsertEdge({
|
|
@@ -174,6 +178,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
174
178
|
toKind: 'node',
|
|
175
179
|
toId: folderNode.id,
|
|
176
180
|
relation: 'contains_folder',
|
|
181
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
177
182
|
});
|
|
178
183
|
}
|
|
179
184
|
previousNode = folderNode;
|
|
@@ -185,17 +190,18 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
185
190
|
toKind: 'node',
|
|
186
191
|
toId: previousNode.id,
|
|
187
192
|
relation: 'cataloged_in_folder',
|
|
193
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
188
194
|
});
|
|
189
195
|
}
|
|
190
196
|
}
|
|
191
197
|
for (const tag of source.tags) {
|
|
192
198
|
const topicNode = await context.store.upsertNode({
|
|
193
199
|
kind: 'topic',
|
|
194
|
-
slug: slugify(tag),
|
|
200
|
+
slug: slugify(`${spaceId}-${tag}`),
|
|
195
201
|
title: tag,
|
|
196
202
|
summary: `Topic tag ${tag}.`,
|
|
197
203
|
aliases: [tag],
|
|
198
|
-
metadata: { tag },
|
|
204
|
+
metadata: knowledgeSpaceMetadata(spaceId, { tag }),
|
|
199
205
|
});
|
|
200
206
|
await context.store.upsertEdge({
|
|
201
207
|
fromKind: 'source',
|
|
@@ -203,6 +209,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
203
209
|
toKind: 'node',
|
|
204
210
|
toId: topicNode.id,
|
|
205
211
|
relation: 'tagged_with',
|
|
212
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
206
213
|
});
|
|
207
214
|
}
|
|
208
215
|
await compileKnowledgeStructuredEntityHints(context, source, extraction);
|
|
@@ -224,14 +231,14 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
224
231
|
continue;
|
|
225
232
|
const topicNode = await context.store.upsertNode({
|
|
226
233
|
kind: 'topic',
|
|
227
|
-
slug: slugify(section),
|
|
234
|
+
slug: slugify(`${spaceId}-${section}`),
|
|
228
235
|
title: section,
|
|
229
236
|
summary: `Compiled section or concept from source ${source.id}.`,
|
|
230
237
|
aliases: [section],
|
|
231
|
-
metadata: {
|
|
238
|
+
metadata: knowledgeSpaceMetadata(spaceId, {
|
|
232
239
|
sourceId: source.id,
|
|
233
240
|
extractionId: extraction.id,
|
|
234
|
-
},
|
|
241
|
+
}),
|
|
235
242
|
});
|
|
236
243
|
await context.store.upsertEdge({
|
|
237
244
|
fromKind: 'source',
|
|
@@ -239,6 +246,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
239
246
|
toKind: 'node',
|
|
240
247
|
toId: topicNode.id,
|
|
241
248
|
relation: 'mentions_section',
|
|
249
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
242
250
|
});
|
|
243
251
|
}
|
|
244
252
|
const outboundUris = [...new Set(extraction.links
|
|
@@ -255,6 +263,7 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
255
263
|
toKind: 'source',
|
|
256
264
|
toId: linked.id,
|
|
257
265
|
relation: 'links_to_source',
|
|
266
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
258
267
|
});
|
|
259
268
|
}
|
|
260
269
|
}
|
|
@@ -265,10 +274,12 @@ async function compileKnowledgeSourceRecords(context, source, extraction) {
|
|
|
265
274
|
toKind: 'session',
|
|
266
275
|
toId: source.sessionId,
|
|
267
276
|
relation: 'ingested_during',
|
|
277
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
268
278
|
});
|
|
269
279
|
}
|
|
270
280
|
}
|
|
271
281
|
export async function compileKnowledgeStructuredEntityHints(context, source, extraction) {
|
|
282
|
+
const spaceId = getKnowledgeSpaceId(source);
|
|
272
283
|
const metadata = source.metadata ?? {};
|
|
273
284
|
const topicKeywords = topKeywords([
|
|
274
285
|
source.title ?? '',
|
|
@@ -327,14 +338,14 @@ export async function compileKnowledgeStructuredEntityHints(context, source, ext
|
|
|
327
338
|
continue;
|
|
328
339
|
const node = await context.store.upsertNode({
|
|
329
340
|
kind: spec.kind,
|
|
330
|
-
slug: slugify(title),
|
|
341
|
+
slug: slugify(`${spaceId}-${title}`),
|
|
331
342
|
title,
|
|
332
343
|
summary: `${spec.summaryPrefix} entity compiled from structured knowledge sources.`,
|
|
333
344
|
aliases: topicKeywords,
|
|
334
|
-
metadata: {
|
|
345
|
+
metadata: knowledgeSpaceMetadata(spaceId, {
|
|
335
346
|
compiledFrom: source.id,
|
|
336
347
|
tags: [...source.tags],
|
|
337
|
-
},
|
|
348
|
+
}),
|
|
338
349
|
});
|
|
339
350
|
await context.store.upsertEdge({
|
|
340
351
|
fromKind: 'source',
|
|
@@ -342,6 +353,7 @@ export async function compileKnowledgeStructuredEntityHints(context, source, ext
|
|
|
342
353
|
toKind: 'node',
|
|
343
354
|
toId: node.id,
|
|
344
355
|
relation: spec.relation,
|
|
356
|
+
metadata: knowledgeSpaceMetadata(spaceId),
|
|
345
357
|
});
|
|
346
358
|
}
|
|
347
359
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answer-evidence.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/semantic/answer-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"answer-evidence.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/semantic/answer-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAwB/D,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAW5B,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,SAAS,4BAA4B,EAAE,GACtD,YAAY,EAAE,CAkGhB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,SAAS,4BAA4B,EAAE,GACtD,mBAAmB,EAAE,CASvB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,cAAc,EAAE,SAAS,4BAA4B,EAAE,GACtD,SAAS,mBAAmB,EAAE,CAKhC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,4BAA4B,EACnC,2BAA2B,EAAE,SAAS,mBAAmB,EAAE,GAC1D,OAAO,CAMT;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,SAAS,qBAAqB,EAAE,EAC/C,aAAa,EAAE,SAAS,mBAAmB,EAAE,GAC5C,SAAS,qBAAqB,EAAE,CAelC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,aAAa,EAAE,SAAS,mBAAmB,EAAE,EAC7C,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAwChB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,qBAAqB,CASxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CASxF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAM5F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getExplicitKnowledgeSpaceId, isHomeAssistantKnowledgeSpace, normalizeKnowledgeSpaceId, } from '../spaces.js';
|
|
2
2
|
import { isActiveKnowledgeEdge } from '../projection-utils.js';
|
|
3
3
|
import { clampText, normalizeWhitespace, readRecord, readString, readStringArray, scoreSemanticText, sourceSemanticText, splitSentences, tokenizeSemanticQuery, uniqueStrings, } from './utils.js';
|
|
4
4
|
import { isLowValueFeatureOrSpecText, isSemanticAnswerLinkedObject, } from './fact-quality.js';
|
|
@@ -396,12 +396,15 @@ function pruneEvidence(items, limit, strictTopCluster = false) {
|
|
|
396
396
|
}
|
|
397
397
|
function belongsToAnswerSpace(record, spaceId) {
|
|
398
398
|
const normalized = normalizeKnowledgeSpaceId(spaceId);
|
|
399
|
-
const
|
|
399
|
+
const explicitSpaceId = getExplicitKnowledgeSpaceId(record);
|
|
400
|
+
if (!explicitSpaceId)
|
|
401
|
+
return false;
|
|
402
|
+
const recordSpaceId = normalizeKnowledgeSpaceId(explicitSpaceId);
|
|
400
403
|
if (normalized === 'default')
|
|
401
404
|
return recordSpaceId === 'default';
|
|
402
405
|
if (normalized === 'homeassistant')
|
|
403
406
|
return isHomeAssistantKnowledgeSpace(recordSpaceId);
|
|
404
|
-
return
|
|
407
|
+
return recordSpaceId === normalized;
|
|
405
408
|
}
|
|
406
409
|
function uniqueSources(sources) {
|
|
407
410
|
const seen = new Set();
|
|
@@ -22,8 +22,10 @@ export declare function withKnowledgeSpace<T extends {
|
|
|
22
22
|
readonly metadata?: Record<string, unknown>;
|
|
23
23
|
}>(input: T, spaceId: string): T;
|
|
24
24
|
export declare function getKnowledgeSpaceId(input: KnowledgeSpaceBackedRecord | Record<string, unknown> | undefined | null): KnowledgeSpaceId;
|
|
25
|
+
export declare function getExplicitKnowledgeSpaceId(input: KnowledgeSpaceBackedRecord | Record<string, unknown> | undefined | null): KnowledgeSpaceId | null;
|
|
25
26
|
export declare function isInKnowledgeSpace(input: KnowledgeSpaceBackedRecord | undefined | null, spaceId: string): boolean;
|
|
26
27
|
export declare function resolveKnowledgeSpaceScope(input?: KnowledgeSpaceScopeInput): KnowledgeSpaceId | null;
|
|
27
28
|
export declare function isInKnowledgeSpaceScope(input: KnowledgeSpaceBackedRecord | undefined | null, scope?: KnowledgeSpaceScopeInput): boolean;
|
|
29
|
+
export declare function ensureKnowledgeSpaceMetadata(metadata?: Record<string, unknown>, fallbackSpaceId?: string): Record<string, unknown>;
|
|
28
30
|
export declare function normalizeSpaceComponent(value?: string | null): string;
|
|
29
31
|
//# sourceMappingURL=spaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,qCAAqC,mBAAmB,CAAC;AACtE,eAAO,MAAM,8BAA8B,aAAa,CAAC;AAEzD,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,yBAAyB,GACzB;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAGjF;AAED,wBAAgB,6BAA6B,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAG9F;AAED,wBAAgB,oCAAoC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAElF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAEnF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC1F,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,MAAM,GACd,CAAC,CAKH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,qCAAqC,mBAAmB,CAAC;AACtE,eAAO,MAAM,8BAA8B,aAAa,CAAC;AAEzD,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,yBAAyB,GACzB;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAGjF;AAED,wBAAgB,6BAA6B,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAG9F;AAED,wBAAgB,oCAAoC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAElF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAEnF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC1F,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,MAAM,GACd,CAAC,CAKH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,CAEpI;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAOnJ;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,GAAE,wBAA6B,GAAG,gBAAgB,GAAG,IAAI,CAGxG;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,EACpD,KAAK,GAAE,wBAA6B,GACnC,OAAO,CAIT;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,eAAe,GAAE,MAAmC,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOrE"}
|
|
@@ -39,10 +39,14 @@ export function withKnowledgeSpace(input, spaceId) {
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
export function getKnowledgeSpaceId(input) {
|
|
42
|
+
return getExplicitKnowledgeSpaceId(input) ?? DEFAULT_KNOWLEDGE_SPACE_ID;
|
|
43
|
+
}
|
|
44
|
+
export function getExplicitKnowledgeSpaceId(input) {
|
|
42
45
|
const metadata = readMetadata(input);
|
|
43
|
-
|
|
46
|
+
const value = readString(metadata.knowledgeSpaceId)
|
|
44
47
|
?? readString(metadata.spaceId)
|
|
45
|
-
?? readString(metadata.namespace)
|
|
48
|
+
?? readString(metadata.namespace);
|
|
49
|
+
return value ? normalizeKnowledgeSpaceId(value) : null;
|
|
46
50
|
}
|
|
47
51
|
export function isInKnowledgeSpace(input, spaceId) {
|
|
48
52
|
return getKnowledgeSpaceId(input) === normalizeKnowledgeSpaceId(spaceId);
|
|
@@ -54,7 +58,14 @@ export function resolveKnowledgeSpaceScope(input = {}) {
|
|
|
54
58
|
}
|
|
55
59
|
export function isInKnowledgeSpaceScope(input, scope = {}) {
|
|
56
60
|
const scopedSpaceId = resolveKnowledgeSpaceScope(scope);
|
|
57
|
-
|
|
61
|
+
if (scopedSpaceId === null)
|
|
62
|
+
return true;
|
|
63
|
+
return getExplicitKnowledgeSpaceId(input) === scopedSpaceId;
|
|
64
|
+
}
|
|
65
|
+
export function ensureKnowledgeSpaceMetadata(metadata = {}, fallbackSpaceId = DEFAULT_KNOWLEDGE_SPACE_ID) {
|
|
66
|
+
return getExplicitKnowledgeSpaceId({ metadata })
|
|
67
|
+
? metadata
|
|
68
|
+
: knowledgeSpaceMetadata(fallbackSpaceId, metadata);
|
|
58
69
|
}
|
|
59
70
|
export function normalizeSpaceComponent(value) {
|
|
60
71
|
const normalized = (typeof value === 'string' ? value : '')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isInKnowledgeSpaceScope, normalizeKnowledgeSpaceId } from './spaces.js';
|
|
2
2
|
function sliceLimit(limit) {
|
|
3
3
|
return Math.max(1, limit);
|
|
4
4
|
}
|
|
@@ -44,7 +44,7 @@ export function listKnowledgeNodes(view, limit = 100) {
|
|
|
44
44
|
export function listKnowledgeNodesInSpace(view, spaceId) {
|
|
45
45
|
const normalizedSpaceId = normalizeKnowledgeSpaceId(spaceId);
|
|
46
46
|
return [...view.nodes.values()]
|
|
47
|
-
.filter((node) =>
|
|
47
|
+
.filter((node) => isInKnowledgeSpaceScope(node, { knowledgeSpaceId: normalizedSpaceId }))
|
|
48
48
|
.sort(byUpdatedAtDesc);
|
|
49
49
|
}
|
|
50
50
|
export function listKnowledgeEdges(view) {
|
|
@@ -53,7 +53,7 @@ export function listKnowledgeEdges(view) {
|
|
|
53
53
|
export function listKnowledgeSourcesInSpace(view, spaceId) {
|
|
54
54
|
const normalizedSpaceId = normalizeKnowledgeSpaceId(spaceId);
|
|
55
55
|
return [...view.sources.values()]
|
|
56
|
-
.filter((source) =>
|
|
56
|
+
.filter((source) => isInKnowledgeSpaceScope(source, { knowledgeSpaceId: normalizedSpaceId }))
|
|
57
57
|
.sort(byUpdatedAtDesc);
|
|
58
58
|
}
|
|
59
59
|
export function listKnowledgeIssues(view, limit = 100) {
|
|
@@ -64,7 +64,7 @@ export function listKnowledgeIssues(view, limit = 100) {
|
|
|
64
64
|
export function listKnowledgeIssuesInSpace(view, spaceId) {
|
|
65
65
|
const normalizedSpaceId = normalizeKnowledgeSpaceId(spaceId);
|
|
66
66
|
return [...view.issues.values()]
|
|
67
|
-
.filter((issue) =>
|
|
67
|
+
.filter((issue) => isInKnowledgeSpaceScope(issue, { knowledgeSpaceId: normalizedSpaceId }))
|
|
68
68
|
.sort(byUpdatedAtDesc);
|
|
69
69
|
}
|
|
70
70
|
export function listKnowledgeExtractions(view, limit = 100) {
|
|
@@ -75,7 +75,7 @@ export function listKnowledgeExtractions(view, limit = 100) {
|
|
|
75
75
|
export function listKnowledgeExtractionsInSpace(view, spaceId) {
|
|
76
76
|
const normalizedSpaceId = normalizeKnowledgeSpaceId(spaceId);
|
|
77
77
|
return [...view.extractions.values()]
|
|
78
|
-
.filter((extraction) =>
|
|
78
|
+
.filter((extraction) => isInKnowledgeSpaceScope(extraction, { knowledgeSpaceId: normalizedSpaceId }))
|
|
79
79
|
.sort(byUpdatedAtDesc);
|
|
80
80
|
}
|
|
81
81
|
export function listKnowledgeExtractionsForSources(view, sourceIds) {
|
|
@@ -75,6 +75,7 @@ export declare class KnowledgeStore {
|
|
|
75
75
|
replaceEdgeRecord(record: KnowledgeEdgeRecord): Promise<void>;
|
|
76
76
|
replaceIssues(inputs: readonly KnowledgeIssueUpsertInput[], namespace?: string): Promise<KnowledgeIssueRecord[]>;
|
|
77
77
|
upsertIssue(input: KnowledgeIssueUpsertInput): Promise<KnowledgeIssueRecord>;
|
|
78
|
+
replaceIssueRecord(record: KnowledgeIssueRecord): Promise<void>;
|
|
78
79
|
upsertExtraction(input: KnowledgeExtractionUpsertInput): Promise<KnowledgeExtractionRecord>;
|
|
79
80
|
upsertJobRun(input: KnowledgeJobRunUpsertInput): Promise<KnowledgeJobRunRecord>;
|
|
80
81
|
upsertRefinementTask(input: KnowledgeRefinementTaskUpsertInput): Promise<KnowledgeRefinementTaskRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,qCAAqC,EACrC,0CAA0C,EAC1C,kCAAkC,EAClC,uCAAuC,EACvC,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAOpB,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { deleteKnowledgeSpaceRows, planKnowledgeSpaceDeleteRows, } from './store
|
|
|
9
9
|
import { deleteKnowledgeSchedule, upsertKnowledgeSchedule, } from './store-schedules.js';
|
|
10
10
|
import { edgesForKnowledgeStore, getKnowledgeConsolidationCandidate, getKnowledgeConsolidationCandidateBySubject, getKnowledgeConsolidationReport, getKnowledgeExtraction, getKnowledgeExtractionBySourceId, getKnowledgeIssue, getKnowledgeItem, getKnowledgeJobRun, getKnowledgeRefinementTask, getKnowledgeNode, getKnowledgeNodeByKindAndSlug, getKnowledgeSchedule, getKnowledgeSource, getKnowledgeSourceByCanonicalUri, getKnowledgeStoreStatus, getKnowledgeUsageRecord, listKnowledgeConsolidationCandidates, listKnowledgeConsolidationReports, listKnowledgeEdges, listKnowledgeExtractions, listKnowledgeExtractionsForSources, listKnowledgeExtractionsInSpace, listKnowledgeIssues, listKnowledgeIssuesInSpace, listKnowledgeJobRuns, listKnowledgeRefinementTasks, listKnowledgeNodes, listKnowledgeNodesInSpace, listKnowledgeSchedules, listKnowledgeSources, listKnowledgeSourcesInSpace, listKnowledgeUsageRecords, } from './store-read.js';
|
|
11
11
|
import { loadKnowledgeStoreSnapshot } from './store-load.js';
|
|
12
|
+
import { ensureKnowledgeSpaceMetadata, getExplicitKnowledgeSpaceId, getKnowledgeSpaceId, } from './spaces.js';
|
|
12
13
|
export class KnowledgeStore {
|
|
13
14
|
sqlite;
|
|
14
15
|
dbPath;
|
|
@@ -186,6 +187,10 @@ export class KnowledgeStore {
|
|
|
186
187
|
const _contentHash = stableText(input.contentHash);
|
|
187
188
|
const _crawlError = stableText(input.crawlError);
|
|
188
189
|
const _sessionId = stableText(input.sessionId);
|
|
190
|
+
const sourceMetadata = ensureKnowledgeSpaceMetadata({
|
|
191
|
+
...(existing?.metadata ?? {}),
|
|
192
|
+
...(input.metadata ?? {}),
|
|
193
|
+
});
|
|
189
194
|
const record = {
|
|
190
195
|
id: existing?.id ?? input.id ?? `source-${randomUUID().slice(0, 8)}`,
|
|
191
196
|
connectorId: input.connectorId,
|
|
@@ -203,10 +208,7 @@ export class KnowledgeStore {
|
|
|
203
208
|
...(typeof input.lastCrawledAt === 'number' ? { lastCrawledAt: input.lastCrawledAt } : existing?.lastCrawledAt ? { lastCrawledAt: existing.lastCrawledAt } : {}),
|
|
204
209
|
...opt('crawlError', _crawlError, existing?.crawlError && input.status !== 'indexed' ? existing.crawlError : undefined),
|
|
205
210
|
...opt('sessionId', _sessionId, existing?.sessionId),
|
|
206
|
-
metadata:
|
|
207
|
-
...(existing?.metadata ?? {}),
|
|
208
|
-
...(input.metadata ?? {}),
|
|
209
|
-
},
|
|
211
|
+
metadata: sourceMetadata,
|
|
210
212
|
createdAt: existing?.createdAt ?? now,
|
|
211
213
|
updatedAt: now,
|
|
212
214
|
};
|
|
@@ -320,6 +322,18 @@ export class KnowledgeStore {
|
|
|
320
322
|
const now = nowMs();
|
|
321
323
|
const _summary = stableText(input.summary);
|
|
322
324
|
const _sourceId = stableText(input.sourceId);
|
|
325
|
+
const mergedNodeMetadata = {
|
|
326
|
+
...(existing?.metadata ?? {}),
|
|
327
|
+
...(input.metadata ?? {}),
|
|
328
|
+
};
|
|
329
|
+
const linkedSource = _sourceId !== null
|
|
330
|
+
? this.sources.get(_sourceId)
|
|
331
|
+
: existing?.sourceId
|
|
332
|
+
? this.sources.get(existing.sourceId)
|
|
333
|
+
: null;
|
|
334
|
+
const nodeMetadata = getExplicitKnowledgeSpaceId({ metadata: mergedNodeMetadata }) || !linkedSource
|
|
335
|
+
? mergedNodeMetadata
|
|
336
|
+
: ensureKnowledgeSpaceMetadata(mergedNodeMetadata, getKnowledgeSpaceId(linkedSource));
|
|
323
337
|
const record = {
|
|
324
338
|
id: existing?.id ?? input.id ?? `node-${randomUUID().slice(0, 8)}`,
|
|
325
339
|
kind: input.kind,
|
|
@@ -330,10 +344,7 @@ export class KnowledgeStore {
|
|
|
330
344
|
status: input.status ?? existing?.status ?? 'active',
|
|
331
345
|
confidence: Math.max(0, Math.min(100, input.confidence ?? existing?.confidence ?? 70)),
|
|
332
346
|
...(_sourceId !== null ? { sourceId: _sourceId } : existing?.sourceId ? { sourceId: existing.sourceId } : {}),
|
|
333
|
-
metadata:
|
|
334
|
-
...(existing?.metadata ?? {}),
|
|
335
|
-
...(input.metadata ?? {}),
|
|
336
|
-
},
|
|
347
|
+
metadata: nodeMetadata,
|
|
337
348
|
createdAt: existing?.createdAt ?? now,
|
|
338
349
|
updatedAt: now,
|
|
339
350
|
};
|
|
@@ -516,6 +527,26 @@ export class KnowledgeStore {
|
|
|
516
527
|
const now = nowMs();
|
|
517
528
|
const _sourceId = stableText(input.sourceId);
|
|
518
529
|
const _nodeId = stableText(input.nodeId);
|
|
530
|
+
const mergedIssueMetadata = {
|
|
531
|
+
...(existing?.metadata ?? {}),
|
|
532
|
+
...(input.metadata ?? {}),
|
|
533
|
+
};
|
|
534
|
+
const issueSource = _sourceId !== null
|
|
535
|
+
? this.sources.get(_sourceId)
|
|
536
|
+
: existing?.sourceId
|
|
537
|
+
? this.sources.get(existing.sourceId)
|
|
538
|
+
: null;
|
|
539
|
+
const issueNode = _nodeId !== null
|
|
540
|
+
? this.nodes.get(_nodeId)
|
|
541
|
+
: existing?.nodeId
|
|
542
|
+
? this.nodes.get(existing.nodeId)
|
|
543
|
+
: null;
|
|
544
|
+
const issueSpaceId = getExplicitKnowledgeSpaceId({ metadata: mergedIssueMetadata })
|
|
545
|
+
?? getExplicitKnowledgeSpaceId(issueSource)
|
|
546
|
+
?? getExplicitKnowledgeSpaceId(issueNode);
|
|
547
|
+
const issueMetadata = issueSpaceId
|
|
548
|
+
? ensureKnowledgeSpaceMetadata(mergedIssueMetadata, issueSpaceId)
|
|
549
|
+
: mergedIssueMetadata;
|
|
519
550
|
const record = {
|
|
520
551
|
id: existing?.id ?? input.id ?? `issue-${randomUUID().slice(0, 8)}`,
|
|
521
552
|
severity: input.severity,
|
|
@@ -524,10 +555,7 @@ export class KnowledgeStore {
|
|
|
524
555
|
status: input.status ?? issueStatusForUpsert(existing, input),
|
|
525
556
|
...(_sourceId !== null ? { sourceId: _sourceId } : {}),
|
|
526
557
|
...(_nodeId !== null ? { nodeId: _nodeId } : {}),
|
|
527
|
-
metadata:
|
|
528
|
-
...(existing?.metadata ?? {}),
|
|
529
|
-
...(input.metadata ?? {}),
|
|
530
|
-
},
|
|
558
|
+
metadata: issueMetadata,
|
|
531
559
|
createdAt: existing?.createdAt ?? now,
|
|
532
560
|
updatedAt: now,
|
|
533
561
|
};
|
|
@@ -551,6 +579,27 @@ export class KnowledgeStore {
|
|
|
551
579
|
await this.sqlite.save();
|
|
552
580
|
return record;
|
|
553
581
|
}
|
|
582
|
+
async replaceIssueRecord(record) {
|
|
583
|
+
await this.init();
|
|
584
|
+
this.sqlite.run(`
|
|
585
|
+
INSERT OR REPLACE INTO knowledge_issues (
|
|
586
|
+
id, severity, code, message, status, source_id, node_id, metadata, created_at, updated_at
|
|
587
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
588
|
+
`, [
|
|
589
|
+
record.id,
|
|
590
|
+
record.severity,
|
|
591
|
+
record.code,
|
|
592
|
+
record.message,
|
|
593
|
+
record.status,
|
|
594
|
+
record.sourceId ?? null,
|
|
595
|
+
record.nodeId ?? null,
|
|
596
|
+
JSON.stringify(record.metadata),
|
|
597
|
+
record.createdAt,
|
|
598
|
+
record.updatedAt,
|
|
599
|
+
]);
|
|
600
|
+
this.issues.set(record.id, record);
|
|
601
|
+
await this.sqlite.save();
|
|
602
|
+
}
|
|
554
603
|
async upsertExtraction(input) {
|
|
555
604
|
await this.init();
|
|
556
605
|
const existing = input.id
|
|
@@ -561,6 +610,14 @@ export class KnowledgeStore {
|
|
|
561
610
|
const _title = stableText(input.title);
|
|
562
611
|
const _summary = stableText(input.summary);
|
|
563
612
|
const _excerpt = stableText(input.excerpt);
|
|
613
|
+
const mergedExtractionMetadata = {
|
|
614
|
+
...(existing?.metadata ?? {}),
|
|
615
|
+
...(input.metadata ?? {}),
|
|
616
|
+
};
|
|
617
|
+
const extractionSource = this.sources.get(input.sourceId);
|
|
618
|
+
const extractionMetadata = getExplicitKnowledgeSpaceId({ metadata: mergedExtractionMetadata }) || !extractionSource
|
|
619
|
+
? mergedExtractionMetadata
|
|
620
|
+
: ensureKnowledgeSpaceMetadata(mergedExtractionMetadata, getKnowledgeSpaceId(extractionSource));
|
|
564
621
|
const record = {
|
|
565
622
|
id: existing?.id ?? input.id ?? `extract-${randomUUID().slice(0, 8)}`,
|
|
566
623
|
sourceId: input.sourceId,
|
|
@@ -577,10 +634,7 @@ export class KnowledgeStore {
|
|
|
577
634
|
...(existing?.structure ?? {}),
|
|
578
635
|
...(input.structure ?? {}),
|
|
579
636
|
},
|
|
580
|
-
metadata:
|
|
581
|
-
...(existing?.metadata ?? {}),
|
|
582
|
-
...(input.metadata ?? {}),
|
|
583
|
-
},
|
|
637
|
+
metadata: extractionMetadata,
|
|
584
638
|
createdAt: existing?.createdAt ?? now,
|
|
585
639
|
updatedAt: now,
|
|
586
640
|
};
|
package/dist/platform/version.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
let version = '0.33.
|
|
3
|
+
let version = '0.33.12';
|
|
4
4
|
try {
|
|
5
5
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
|
|
6
6
|
version = pkg.version ?? version;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-sdk",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.12",
|
|
4
4
|
"description": "TypeScript SDK for building GoodVibes operator, peer, web, mobile, and daemon-connected apps with typed contracts, auth, realtime events, and transport layers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"goodvibes",
|
|
@@ -449,14 +449,14 @@
|
|
|
449
449
|
"sideEffects": false,
|
|
450
450
|
"type": "module",
|
|
451
451
|
"dependencies": {
|
|
452
|
-
"@pellux/goodvibes-contracts": "0.33.
|
|
453
|
-
"@pellux/goodvibes-daemon-sdk": "0.33.
|
|
454
|
-
"@pellux/goodvibes-errors": "0.33.
|
|
455
|
-
"@pellux/goodvibes-operator-sdk": "0.33.
|
|
456
|
-
"@pellux/goodvibes-peer-sdk": "0.33.
|
|
457
|
-
"@pellux/goodvibes-transport-core": "0.33.
|
|
458
|
-
"@pellux/goodvibes-transport-http": "0.33.
|
|
459
|
-
"@pellux/goodvibes-transport-realtime": "0.33.
|
|
452
|
+
"@pellux/goodvibes-contracts": "0.33.12",
|
|
453
|
+
"@pellux/goodvibes-daemon-sdk": "0.33.12",
|
|
454
|
+
"@pellux/goodvibes-errors": "0.33.12",
|
|
455
|
+
"@pellux/goodvibes-operator-sdk": "0.33.12",
|
|
456
|
+
"@pellux/goodvibes-peer-sdk": "0.33.12",
|
|
457
|
+
"@pellux/goodvibes-transport-core": "0.33.12",
|
|
458
|
+
"@pellux/goodvibes-transport-http": "0.33.12",
|
|
459
|
+
"@pellux/goodvibes-transport-realtime": "0.33.12"
|
|
460
460
|
},
|
|
461
461
|
"optionalDependencies": {
|
|
462
462
|
"@agentclientprotocol/sdk": "^0.21.0",
|