@pellux/goodvibes-sdk 0.26.5 → 0.26.7
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/_internal/platform/daemon/http/home-graph-routes.js +11 -11
- package/dist/_internal/platform/knowledge/extractors.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/extractors.js +26 -2
- package/dist/_internal/platform/knowledge/home-graph/helpers.d.ts +3 -7
- package/dist/_internal/platform/knowledge/home-graph/helpers.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/helpers.js +111 -60
- package/dist/_internal/platform/knowledge/home-graph/search.d.ts +13 -0
- package/dist/_internal/platform/knowledge/home-graph/search.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/search.js +136 -0
- package/dist/_internal/platform/knowledge/home-graph/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/service.js +17 -20
- package/dist/_internal/platform/knowledge/home-graph/state.d.ts +4 -1
- package/dist/_internal/platform/knowledge/home-graph/state.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts +1 -1
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/spaces.d.ts +1 -1
- package/dist/_internal/platform/knowledge/spaces.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/spaces.js +5 -1
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -40,16 +40,16 @@ export class HomeGraphRoutes {
|
|
|
40
40
|
return Response.json(await this.context.homeGraphService.ask(await this.readBody(req)));
|
|
41
41
|
}
|
|
42
42
|
if (url.pathname === '/api/homeassistant/home-graph/sync' && req.method === 'POST') {
|
|
43
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.syncSnapshot(await this.readBody(req))));
|
|
43
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.syncSnapshot(await this.readBody(req))));
|
|
44
44
|
}
|
|
45
45
|
if (url.pathname === '/api/homeassistant/home-graph/ingest/url' && req.method === 'POST') {
|
|
46
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.ingestUrl(await this.readBody(req))));
|
|
46
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.ingestUrl(await this.readBody(req))));
|
|
47
47
|
}
|
|
48
48
|
if (url.pathname === '/api/homeassistant/home-graph/ingest/note' && req.method === 'POST') {
|
|
49
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.ingestNote(await this.readBody(req))));
|
|
49
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.ingestNote(await this.readBody(req))));
|
|
50
50
|
}
|
|
51
51
|
if (url.pathname === '/api/homeassistant/home-graph/ingest/artifact' && req.method === 'POST') {
|
|
52
|
-
return this.admin(req, async () => {
|
|
52
|
+
return await this.admin(req, async () => {
|
|
53
53
|
if (isArtifactUploadRequest(req)) {
|
|
54
54
|
const uploaded = await createArtifactFromUploadRequest(this.context.artifactStore, req);
|
|
55
55
|
if (uploaded instanceof Response)
|
|
@@ -63,25 +63,25 @@ export class HomeGraphRoutes {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
if (url.pathname === '/api/homeassistant/home-graph/link' && req.method === 'POST') {
|
|
66
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.linkKnowledge(await this.readBody(req))));
|
|
66
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.linkKnowledge(await this.readBody(req))));
|
|
67
67
|
}
|
|
68
68
|
if (url.pathname === '/api/homeassistant/home-graph/unlink' && req.method === 'POST') {
|
|
69
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.unlinkKnowledge(await this.readBody(req))));
|
|
69
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.unlinkKnowledge(await this.readBody(req))));
|
|
70
70
|
}
|
|
71
71
|
if (url.pathname === '/api/homeassistant/home-graph/device-passport' && req.method === 'POST') {
|
|
72
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.refreshDevicePassport(await this.readBody(req))));
|
|
72
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.refreshDevicePassport(await this.readBody(req))));
|
|
73
73
|
}
|
|
74
74
|
if (url.pathname === '/api/homeassistant/home-graph/room-page' && req.method === 'POST') {
|
|
75
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.generateRoomPage(await this.readBody(req))));
|
|
75
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.generateRoomPage(await this.readBody(req))));
|
|
76
76
|
}
|
|
77
77
|
if (url.pathname === '/api/homeassistant/home-graph/packet' && req.method === 'POST') {
|
|
78
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.generatePacket(await this.readBody(req))));
|
|
78
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.generatePacket(await this.readBody(req))));
|
|
79
79
|
}
|
|
80
80
|
if (url.pathname === '/api/homeassistant/home-graph/facts/review' && req.method === 'POST') {
|
|
81
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.reviewFact(await this.readBody(req))));
|
|
81
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.reviewFact(await this.readBody(req))));
|
|
82
82
|
}
|
|
83
83
|
if (url.pathname === '/api/homeassistant/home-graph/import' && req.method === 'POST') {
|
|
84
|
-
return this.admin(req, async () => Response.json(await this.context.homeGraphService.importSpace(await this.readBody(req))));
|
|
84
|
+
return await this.admin(req, async () => Response.json(await this.context.homeGraphService.importSpace(await this.readBody(req))));
|
|
85
85
|
}
|
|
86
86
|
return Response.json({ error: 'Unknown Home Graph route' }, { status: 404 });
|
|
87
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractors.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/extractors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"extractors.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/extractors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAI5D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AA6hBD,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,EAC9D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC,CA4CpC"}
|
|
@@ -2,6 +2,7 @@ import JSZip from 'jszip';
|
|
|
2
2
|
import { extname } from 'node:path';
|
|
3
3
|
import { guessMimeType } from '../artifacts/types.js';
|
|
4
4
|
import { extractReadableHtml } from './html-readability.js';
|
|
5
|
+
const MAX_STRUCTURE_SEARCH_TEXT_CHARS = 128 * 1024;
|
|
5
6
|
function decodeHtmlEntities(value) {
|
|
6
7
|
return value
|
|
7
8
|
.replace(/ /g, ' ')
|
|
@@ -29,6 +30,18 @@ function cleanText(value) {
|
|
|
29
30
|
.replace(/[ \t]{2,}/g, ' ')
|
|
30
31
|
.trim();
|
|
31
32
|
}
|
|
33
|
+
function searchTextPayload(value) {
|
|
34
|
+
const cleaned = cleanText(value);
|
|
35
|
+
if (!cleaned)
|
|
36
|
+
return undefined;
|
|
37
|
+
return cleaned.length <= MAX_STRUCTURE_SEARCH_TEXT_CHARS
|
|
38
|
+
? cleaned
|
|
39
|
+
: cleaned.slice(0, MAX_STRUCTURE_SEARCH_TEXT_CHARS);
|
|
40
|
+
}
|
|
41
|
+
function searchTextStructure(value) {
|
|
42
|
+
const searchText = searchTextPayload(value);
|
|
43
|
+
return searchText ? { searchText } : {};
|
|
44
|
+
}
|
|
32
45
|
function estimateTokens(...chunks) {
|
|
33
46
|
const total = chunks
|
|
34
47
|
.filter((value) => typeof value === 'string')
|
|
@@ -103,6 +116,7 @@ function extractHtml(buffer) {
|
|
|
103
116
|
headings: readable.headings,
|
|
104
117
|
readableLength: readable.length,
|
|
105
118
|
paragraphSampleCount: readable.paragraphSamples.length,
|
|
119
|
+
...searchTextStructure(readable.textContent),
|
|
106
120
|
},
|
|
107
121
|
metadata: {
|
|
108
122
|
paragraphSamples: readable.paragraphSamples.slice(0, 4),
|
|
@@ -135,6 +149,7 @@ function extractHtml(buffer) {
|
|
|
135
149
|
headings,
|
|
136
150
|
paragraphCount: paragraphs.length,
|
|
137
151
|
readableLength: readable.length,
|
|
152
|
+
...searchTextStructure(readable),
|
|
138
153
|
},
|
|
139
154
|
metadata: {
|
|
140
155
|
paragraphSamples: paragraphs.slice(0, 4),
|
|
@@ -161,6 +176,7 @@ function extractTextLike(buffer, format, extractorId) {
|
|
|
161
176
|
structure: {
|
|
162
177
|
lineCount: lines.length,
|
|
163
178
|
headingCount: headings.length,
|
|
179
|
+
...searchTextStructure(text),
|
|
164
180
|
},
|
|
165
181
|
metadata: {},
|
|
166
182
|
};
|
|
@@ -189,6 +205,7 @@ function extractJson(buffer) {
|
|
|
189
205
|
rootType: Array.isArray(parsed) ? 'array' : typeof parsed,
|
|
190
206
|
rootKeys,
|
|
191
207
|
itemCount: Array.isArray(parsed) ? parsed.length : undefined,
|
|
208
|
+
...searchTextStructure(text),
|
|
192
209
|
},
|
|
193
210
|
metadata: {},
|
|
194
211
|
};
|
|
@@ -251,6 +268,7 @@ function extractDelimited(buffer, delimiter, format) {
|
|
|
251
268
|
headers,
|
|
252
269
|
sampleRows: rows,
|
|
253
270
|
rowCountSampled: rows.length,
|
|
271
|
+
...searchTextStructure(text),
|
|
254
272
|
},
|
|
255
273
|
metadata: {},
|
|
256
274
|
};
|
|
@@ -268,7 +286,7 @@ function extractXml(buffer) {
|
|
|
268
286
|
sections: tags,
|
|
269
287
|
links: uniqueStrings(Array.from(text.matchAll(/\bhttps?:\/\/[^\s"'<]+/g), (match) => match[0]), 50),
|
|
270
288
|
estimatedTokens: estimateTokens(readable),
|
|
271
|
-
structure: { tags },
|
|
289
|
+
structure: { tags, ...searchTextStructure(readable) },
|
|
272
290
|
metadata: {},
|
|
273
291
|
};
|
|
274
292
|
}
|
|
@@ -284,7 +302,7 @@ function extractYaml(buffer) {
|
|
|
284
302
|
sections: keys.length > 0 ? keys : uniqueStrings(text.split(/\n+/), 8),
|
|
285
303
|
links: uniqueStrings(Array.from(text.matchAll(/\bhttps?:\/\/[^\s"']+/g), (match) => match[0]), 50),
|
|
286
304
|
estimatedTokens: estimateTokens(text),
|
|
287
|
-
structure: { keys },
|
|
305
|
+
structure: { keys, ...searchTextStructure(text) },
|
|
288
306
|
metadata: {},
|
|
289
307
|
};
|
|
290
308
|
}
|
|
@@ -310,6 +328,8 @@ function extractPdf(buffer) {
|
|
|
310
328
|
}
|
|
311
329
|
}
|
|
312
330
|
const combined = uniqueStrings(texts, 64).join('\n');
|
|
331
|
+
const searchable = uniqueStrings(texts, 512).join('\n');
|
|
332
|
+
const searchText = searchTextPayload(searchable);
|
|
313
333
|
return {
|
|
314
334
|
extractorId: 'pdf',
|
|
315
335
|
format: 'pdf',
|
|
@@ -321,6 +341,7 @@ function extractPdf(buffer) {
|
|
|
321
341
|
estimatedTokens: estimateTokens(combined),
|
|
322
342
|
structure: {
|
|
323
343
|
extractedStringCount: texts.length,
|
|
344
|
+
...(searchText ? { searchText } : {}),
|
|
324
345
|
},
|
|
325
346
|
metadata: {
|
|
326
347
|
limitations: texts.length === 0
|
|
@@ -356,6 +377,7 @@ async function extractDocx(buffer) {
|
|
|
356
377
|
structure: {
|
|
357
378
|
paragraphCount: paragraphs.length,
|
|
358
379
|
headingCount: headings.length,
|
|
380
|
+
...searchTextStructure(text),
|
|
359
381
|
},
|
|
360
382
|
metadata: {},
|
|
361
383
|
};
|
|
@@ -411,6 +433,7 @@ async function extractXlsx(buffer) {
|
|
|
411
433
|
structure: {
|
|
412
434
|
sheetNames,
|
|
413
435
|
sampleSheets,
|
|
436
|
+
...searchTextStructure(flatText),
|
|
414
437
|
},
|
|
415
438
|
metadata: {},
|
|
416
439
|
};
|
|
@@ -447,6 +470,7 @@ async function extractPptx(buffer) {
|
|
|
447
470
|
structure: {
|
|
448
471
|
slideCount: slides.length,
|
|
449
472
|
slides: slides.slice(0, 6),
|
|
473
|
+
...searchTextStructure(combined),
|
|
450
474
|
},
|
|
451
475
|
metadata: {},
|
|
452
476
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { KnowledgeEdgeRecord, KnowledgeNodeKind,
|
|
2
|
-
import type { HomeGraphKnowledgeTarget, HomeGraphNodeKind, HomeGraphObjectInput, HomeGraphObjectKind,
|
|
1
|
+
import type { KnowledgeEdgeRecord, KnowledgeNodeKind, KnowledgeReferenceKind, KnowledgeIssueUpsertInput } from '../types.js';
|
|
2
|
+
import type { HomeGraphKnowledgeTarget, HomeGraphNodeKind, HomeGraphObjectInput, HomeGraphObjectKind, HomeGraphSpaceInput } from './types.js';
|
|
3
3
|
export declare const HOME_GRAPH_CONNECTOR_ID = "homeassistant";
|
|
4
4
|
export declare function resolveHomeGraphSpace(input?: HomeGraphSpaceInput): {
|
|
5
5
|
readonly spaceId: string;
|
|
@@ -26,11 +26,6 @@ export declare function edgeIsActive(edge: KnowledgeEdgeRecord): boolean;
|
|
|
26
26
|
export declare function belongsToSpace(record: {
|
|
27
27
|
readonly metadata?: Record<string, unknown>;
|
|
28
28
|
} | undefined | null, spaceId: string): boolean;
|
|
29
|
-
export declare function scoreHomeGraphResults(query: string, sources: readonly KnowledgeSourceRecord[], nodes: readonly KnowledgeNodeRecord[], extractionBySourceId: (sourceId: string) => {
|
|
30
|
-
readonly summary?: string;
|
|
31
|
-
readonly excerpt?: string;
|
|
32
|
-
readonly sections: readonly string[];
|
|
33
|
-
} | null, limit: number): HomeGraphSearchResult[];
|
|
34
29
|
export declare function targetToReference(target: HomeGraphKnowledgeTarget): {
|
|
35
30
|
readonly kind: KnowledgeReferenceKind;
|
|
36
31
|
readonly id: string;
|
|
@@ -43,4 +38,5 @@ export declare function buildIssue(spaceId: string, installationId: string, code
|
|
|
43
38
|
export declare function stableHash(value: string, length?: number): string;
|
|
44
39
|
export declare function uniqueStrings(values: Iterable<string | undefined | null>): string[];
|
|
45
40
|
export declare function readRecord(value: unknown): Record<string, unknown>;
|
|
41
|
+
export declare function normalizeHomeGraphObjectInput(kind: HomeGraphObjectKind | HomeGraphNodeKind, value: HomeGraphObjectInput | Record<string, unknown>): HomeGraphObjectInput;
|
|
46
42
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export function buildHomeGraphNodeInput(spaceId, installationId, kind, object) {
|
|
|
68
68
|
const nodeKind = nodeKindForHomeGraphObject(kind);
|
|
69
69
|
const objectKind = objectKindForNodeKind(nodeKind);
|
|
70
70
|
const objectId = homeGraphObjectId(nodeKind, object);
|
|
71
|
-
const title = object.title ?? object.name ?? object.entityId ?? object.id;
|
|
71
|
+
const title = object.title ?? object.name ?? object.entityId ?? object.id ?? objectId;
|
|
72
72
|
const aliases = uniqueStrings([
|
|
73
73
|
...(object.aliases ?? []),
|
|
74
74
|
...(object.labels ?? []),
|
|
@@ -100,19 +100,20 @@ export function buildHomeGraphNodeInput(spaceId, installationId, kind, object) {
|
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
function homeGraphObjectId(kind, object) {
|
|
103
|
+
const fallback = () => `unknown-${stableHash(`${kind}:${stableJson(object)}`, 16)}`;
|
|
103
104
|
switch (kind) {
|
|
104
105
|
case 'ha_entity':
|
|
105
|
-
return object.entityId ?? object.id;
|
|
106
|
+
return object.entityId ?? object.id ?? fallback();
|
|
106
107
|
case 'ha_device':
|
|
107
108
|
case 'ha_device_passport':
|
|
108
|
-
return object.deviceId ?? object.id;
|
|
109
|
+
return object.deviceId ?? object.id ?? fallback();
|
|
109
110
|
case 'ha_area':
|
|
110
111
|
case 'ha_room':
|
|
111
|
-
return object.areaId ?? object.id;
|
|
112
|
+
return object.areaId ?? object.id ?? fallback();
|
|
112
113
|
case 'ha_integration':
|
|
113
|
-
return object.integrationId ?? object.id;
|
|
114
|
+
return object.integrationId ?? object.id ?? fallback();
|
|
114
115
|
default:
|
|
115
|
-
return object.id;
|
|
116
|
+
return object.id ?? fallback();
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
export function edgeIsActive(edge) {
|
|
@@ -121,54 +122,6 @@ export function edgeIsActive(edge) {
|
|
|
121
122
|
export function belongsToSpace(record, spaceId) {
|
|
122
123
|
return record ? getKnowledgeSpaceId(record) === normalizeKnowledgeSpaceId(spaceId) : false;
|
|
123
124
|
}
|
|
124
|
-
export function scoreHomeGraphResults(query, sources, nodes, extractionBySourceId, limit) {
|
|
125
|
-
const tokens = tokenize(query);
|
|
126
|
-
if (tokens.length === 0)
|
|
127
|
-
return [];
|
|
128
|
-
const sourceResults = sources.map((source) => {
|
|
129
|
-
const extraction = extractionBySourceId(source.id);
|
|
130
|
-
const haystack = [
|
|
131
|
-
source.title ?? '',
|
|
132
|
-
source.summary ?? '',
|
|
133
|
-
source.description ?? '',
|
|
134
|
-
source.sourceUri ?? '',
|
|
135
|
-
source.tags.join(' '),
|
|
136
|
-
extraction?.summary ?? '',
|
|
137
|
-
extraction?.excerpt ?? '',
|
|
138
|
-
extraction?.sections.join(' ') ?? '',
|
|
139
|
-
].join(' ').toLowerCase();
|
|
140
|
-
const baseScore = scoreHaystack(haystack, tokens);
|
|
141
|
-
return {
|
|
142
|
-
kind: 'source',
|
|
143
|
-
id: source.id,
|
|
144
|
-
score: baseScore > 0 ? baseScore + (extraction ? 8 : 0) : 0,
|
|
145
|
-
title: source.title ?? source.sourceUri ?? source.id,
|
|
146
|
-
summary: extraction?.summary ?? source.summary,
|
|
147
|
-
source,
|
|
148
|
-
};
|
|
149
|
-
});
|
|
150
|
-
const nodeResults = nodes.map((node) => {
|
|
151
|
-
const haystack = [
|
|
152
|
-
node.title,
|
|
153
|
-
node.summary ?? '',
|
|
154
|
-
node.aliases.join(' '),
|
|
155
|
-
JSON.stringify(node.metadata),
|
|
156
|
-
].join(' ').toLowerCase();
|
|
157
|
-
const baseScore = scoreHaystack(haystack, tokens);
|
|
158
|
-
return {
|
|
159
|
-
kind: 'node',
|
|
160
|
-
id: node.id,
|
|
161
|
-
score: baseScore > 0 ? baseScore + Math.round(node.confidence / 20) : 0,
|
|
162
|
-
title: node.title,
|
|
163
|
-
summary: node.summary,
|
|
164
|
-
node,
|
|
165
|
-
};
|
|
166
|
-
});
|
|
167
|
-
return [...sourceResults, ...nodeResults]
|
|
168
|
-
.filter((entry) => entry.score > 0)
|
|
169
|
-
.sort((a, b) => b.score - a.score || a.id.localeCompare(b.id))
|
|
170
|
-
.slice(0, Math.max(1, limit));
|
|
171
|
-
}
|
|
172
125
|
export function targetToReference(target) {
|
|
173
126
|
if (target.kind === 'source')
|
|
174
127
|
return { kind: 'source', id: target.id };
|
|
@@ -212,6 +165,110 @@ export function uniqueStrings(values) {
|
|
|
212
165
|
export function readRecord(value) {
|
|
213
166
|
return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
214
167
|
}
|
|
168
|
+
export function normalizeHomeGraphObjectInput(kind, value) {
|
|
169
|
+
const raw = readRecord(value);
|
|
170
|
+
const attributes = readRecord(raw.attributes);
|
|
171
|
+
const entityId = readString(raw.entityId) ?? readString(raw.entity_id);
|
|
172
|
+
const deviceId = readString(raw.deviceId) ?? readString(raw.device_id);
|
|
173
|
+
const areaId = readString(raw.areaId) ?? readString(raw.area_id);
|
|
174
|
+
const integrationId = readString(raw.integrationId)
|
|
175
|
+
?? readString(raw.integration_id)
|
|
176
|
+
?? readString(raw.platform)
|
|
177
|
+
?? readString(raw.domain);
|
|
178
|
+
const name = readString(raw.name)
|
|
179
|
+
?? readString(raw.originalName)
|
|
180
|
+
?? readString(raw.original_name)
|
|
181
|
+
?? readString(attributes.friendly_name);
|
|
182
|
+
const title = readString(raw.title) ?? name ?? entityId ?? deviceId ?? areaId ?? integrationId;
|
|
183
|
+
const id = readString(raw.id)
|
|
184
|
+
?? idForKind(kind, { entityId, deviceId, areaId, integrationId })
|
|
185
|
+
?? readString(raw.uniqueId)
|
|
186
|
+
?? readString(raw.unique_id)
|
|
187
|
+
?? readString(raw.slug)
|
|
188
|
+
?? title
|
|
189
|
+
?? `unknown-${stableHash(`${nodeKindForHomeGraphObject(kind)}:${stableJson(raw)}`, 16)}`;
|
|
190
|
+
const labels = uniqueStrings([
|
|
191
|
+
...readStringArray(raw.labels),
|
|
192
|
+
...readStringArray(raw.labelIds),
|
|
193
|
+
...readStringArray(raw.label_ids),
|
|
194
|
+
]);
|
|
195
|
+
const manufacturer = readString(raw.manufacturer);
|
|
196
|
+
const model = readString(raw.model) ?? readString(raw.modelId) ?? readString(raw.model_id);
|
|
197
|
+
const aliases = uniqueStrings([
|
|
198
|
+
...readStringArray(raw.aliases),
|
|
199
|
+
...readStringArray(raw.alternateNames),
|
|
200
|
+
...readStringArray(raw.alternate_names),
|
|
201
|
+
readString(raw.friendlyName),
|
|
202
|
+
readString(raw.friendly_name),
|
|
203
|
+
readString(attributes.friendly_name),
|
|
204
|
+
]);
|
|
205
|
+
const metadata = {
|
|
206
|
+
...readRecord(raw.metadata),
|
|
207
|
+
...(Object.keys(attributes).length > 0 ? { attributes } : {}),
|
|
208
|
+
...(readString(raw.state) ? { state: readString(raw.state) } : {}),
|
|
209
|
+
sourceFieldStyle: hasSnakeCaseHomeAssistantFields(raw) ? 'homeassistant-snake-case' : 'sdk-camel-case',
|
|
210
|
+
};
|
|
211
|
+
return {
|
|
212
|
+
id,
|
|
213
|
+
...(name ? { name } : {}),
|
|
214
|
+
...(title ? { title } : {}),
|
|
215
|
+
...(entityId ? { entityId } : {}),
|
|
216
|
+
...(deviceId ? { deviceId } : {}),
|
|
217
|
+
...(areaId ? { areaId } : {}),
|
|
218
|
+
...(integrationId ? { integrationId } : {}),
|
|
219
|
+
...(labels.length > 0 ? { labels } : {}),
|
|
220
|
+
...(aliases.length > 0 ? { aliases } : {}),
|
|
221
|
+
...(manufacturer ? { manufacturer } : {}),
|
|
222
|
+
...(model ? { model } : {}),
|
|
223
|
+
metadata,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function idForKind(kind, input) {
|
|
227
|
+
switch (nodeKindForHomeGraphObject(kind)) {
|
|
228
|
+
case 'ha_entity':
|
|
229
|
+
return input.entityId;
|
|
230
|
+
case 'ha_device':
|
|
231
|
+
case 'ha_device_passport':
|
|
232
|
+
return input.deviceId;
|
|
233
|
+
case 'ha_area':
|
|
234
|
+
case 'ha_room':
|
|
235
|
+
return input.areaId;
|
|
236
|
+
case 'ha_integration':
|
|
237
|
+
return input.integrationId;
|
|
238
|
+
default:
|
|
239
|
+
return input.entityId ?? input.deviceId ?? input.areaId ?? input.integrationId;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
function readString(value) {
|
|
243
|
+
if (typeof value === 'string') {
|
|
244
|
+
const trimmed = value.trim();
|
|
245
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
246
|
+
}
|
|
247
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
248
|
+
return String(value);
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
function readStringArray(value) {
|
|
252
|
+
if (!Array.isArray(value))
|
|
253
|
+
return [];
|
|
254
|
+
return uniqueStrings(value.map((entry) => readString(entry)));
|
|
255
|
+
}
|
|
256
|
+
function hasSnakeCaseHomeAssistantFields(raw) {
|
|
257
|
+
return ['entity_id', 'device_id', 'area_id', 'integration_id', 'unique_id', 'original_name', 'model_id', 'label_ids']
|
|
258
|
+
.some((key) => key in raw);
|
|
259
|
+
}
|
|
260
|
+
function stableJson(value) {
|
|
261
|
+
try {
|
|
262
|
+
return JSON.stringify(value, (_key, entry) => {
|
|
263
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry))
|
|
264
|
+
return entry;
|
|
265
|
+
return Object.fromEntries(Object.entries(entry).sort(([left], [right]) => left.localeCompare(right)));
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return String(value);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
215
272
|
function buildObjectSummary(object) {
|
|
216
273
|
const parts = uniqueStrings([
|
|
217
274
|
object.manufacturer,
|
|
@@ -222,9 +279,3 @@ function buildObjectSummary(object) {
|
|
|
222
279
|
]);
|
|
223
280
|
return parts.length > 0 ? parts.join(' - ') : undefined;
|
|
224
281
|
}
|
|
225
|
-
function tokenize(value) {
|
|
226
|
-
return value.toLowerCase().split(/[^a-z0-9_.:-]+/).map((entry) => entry.trim()).filter(Boolean);
|
|
227
|
-
}
|
|
228
|
-
function scoreHaystack(haystack, tokens) {
|
|
229
|
-
return tokens.reduce((score, token) => score + (haystack.includes(token) ? 10 : 0), 0);
|
|
230
|
-
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { KnowledgeStore } from '../store.js';
|
|
2
|
+
import type { KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeNodeRecord, KnowledgeSourceRecord } from '../types.js';
|
|
3
|
+
import type { HomeGraphSearchResult } from './types.js';
|
|
4
|
+
export interface HomeGraphSearchState {
|
|
5
|
+
readonly spaceId: string;
|
|
6
|
+
readonly sources: readonly KnowledgeSourceRecord[];
|
|
7
|
+
readonly nodes: readonly KnowledgeNodeRecord[];
|
|
8
|
+
readonly edges: readonly KnowledgeEdgeRecord[];
|
|
9
|
+
readonly extractionBySourceId: ReadonlyMap<string, KnowledgeExtractionRecord>;
|
|
10
|
+
}
|
|
11
|
+
export declare function readHomeGraphSearchState(store: KnowledgeStore, spaceId: string): HomeGraphSearchState;
|
|
12
|
+
export declare function scoreHomeGraphResults(query: string, sources: readonly KnowledgeSourceRecord[], nodes: readonly KnowledgeNodeRecord[], extractionBySourceId: (sourceId: string) => KnowledgeExtractionRecord | null | undefined, limit: number): HomeGraphSearchResult[];
|
|
13
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMxD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC/E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAqBrG;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACxF,KAAK,EAAE,MAAM,GACZ,qBAAqB,EAAE,CA+CzB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { belongsToSpace, edgeIsActive, readRecord } from './helpers.js';
|
|
2
|
+
const MAX_FIELD_CHARS = 4_096;
|
|
3
|
+
const MAX_SECTION_COUNT = 32;
|
|
4
|
+
const MAX_SEARCH_TEXT_CHARS = 64 * 1024;
|
|
5
|
+
export function readHomeGraphSearchState(store, spaceId) {
|
|
6
|
+
const sources = store.listSources(10_000).filter((source) => belongsToSpace(source, spaceId));
|
|
7
|
+
const nodes = store.listNodes(10_000).filter((node) => belongsToSpace(node, spaceId));
|
|
8
|
+
const sourceIds = new Set(sources.map((source) => source.id));
|
|
9
|
+
const nodeIds = new Set(nodes.map((node) => node.id));
|
|
10
|
+
const edges = store.listEdges().filter((edge) => (edgeIsActive(edge)
|
|
11
|
+
&& belongsToSpace(edge, spaceId)
|
|
12
|
+
&& (edge.fromKind !== 'source' || sourceIds.has(edge.fromId))
|
|
13
|
+
&& (edge.toKind !== 'source' || sourceIds.has(edge.toId))
|
|
14
|
+
&& (edge.fromKind !== 'node' || nodeIds.has(edge.fromId))
|
|
15
|
+
&& (edge.toKind !== 'node' || nodeIds.has(edge.toId))));
|
|
16
|
+
const extractionBySourceId = new Map();
|
|
17
|
+
for (const extraction of store.listExtractions(10_000)) {
|
|
18
|
+
if (!sourceIds.has(extraction.sourceId) && !belongsToSpace(extraction, spaceId))
|
|
19
|
+
continue;
|
|
20
|
+
if (!extractionBySourceId.has(extraction.sourceId)) {
|
|
21
|
+
extractionBySourceId.set(extraction.sourceId, extraction);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return { spaceId, sources, nodes, edges, extractionBySourceId };
|
|
25
|
+
}
|
|
26
|
+
export function scoreHomeGraphResults(query, sources, nodes, extractionBySourceId, limit) {
|
|
27
|
+
const tokens = tokenize(query);
|
|
28
|
+
if (tokens.length === 0)
|
|
29
|
+
return [];
|
|
30
|
+
const sourceResults = sources.map((source) => {
|
|
31
|
+
const extraction = extractionBySourceId(source.id);
|
|
32
|
+
const baseScore = scoreFields(tokens, [
|
|
33
|
+
source.title,
|
|
34
|
+
source.summary,
|
|
35
|
+
source.description,
|
|
36
|
+
source.sourceUri,
|
|
37
|
+
source.canonicalUri,
|
|
38
|
+
source.tags.join(' '),
|
|
39
|
+
extraction?.title,
|
|
40
|
+
extraction?.summary,
|
|
41
|
+
extraction?.excerpt,
|
|
42
|
+
readSearchText(extraction),
|
|
43
|
+
...limitedSections(extraction),
|
|
44
|
+
]);
|
|
45
|
+
return {
|
|
46
|
+
kind: 'source',
|
|
47
|
+
id: source.id,
|
|
48
|
+
score: baseScore > 0 ? baseScore + (extraction ? 8 : 0) : 0,
|
|
49
|
+
title: source.title ?? source.sourceUri ?? source.id,
|
|
50
|
+
summary: extraction?.summary ?? source.summary,
|
|
51
|
+
source,
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
const nodeResults = nodes.map((node) => {
|
|
55
|
+
const baseScore = scoreFields(tokens, [
|
|
56
|
+
node.title,
|
|
57
|
+
node.summary,
|
|
58
|
+
node.aliases.join(' '),
|
|
59
|
+
readNodeMetadataText(node),
|
|
60
|
+
]);
|
|
61
|
+
return {
|
|
62
|
+
kind: 'node',
|
|
63
|
+
id: node.id,
|
|
64
|
+
score: baseScore > 0 ? baseScore + Math.round(node.confidence / 20) : 0,
|
|
65
|
+
title: node.title,
|
|
66
|
+
summary: node.summary,
|
|
67
|
+
node,
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
return [...sourceResults, ...nodeResults]
|
|
71
|
+
.filter((entry) => entry.score > 0)
|
|
72
|
+
.sort((a, b) => b.score - a.score || a.id.localeCompare(b.id))
|
|
73
|
+
.slice(0, Math.max(1, limit));
|
|
74
|
+
}
|
|
75
|
+
function limitedSections(extraction) {
|
|
76
|
+
if (!extraction)
|
|
77
|
+
return [];
|
|
78
|
+
return extraction.sections.slice(0, MAX_SECTION_COUNT).map((section) => clampText(section, MAX_FIELD_CHARS));
|
|
79
|
+
}
|
|
80
|
+
function readSearchText(extraction) {
|
|
81
|
+
if (!extraction)
|
|
82
|
+
return undefined;
|
|
83
|
+
const structure = readRecord(extraction.structure);
|
|
84
|
+
const metadata = readRecord(extraction.metadata);
|
|
85
|
+
return firstBoundedText([
|
|
86
|
+
structure.searchText,
|
|
87
|
+
structure.text,
|
|
88
|
+
structure.content,
|
|
89
|
+
metadata.searchText,
|
|
90
|
+
], MAX_SEARCH_TEXT_CHARS);
|
|
91
|
+
}
|
|
92
|
+
function readNodeMetadataText(node) {
|
|
93
|
+
const homeAssistant = readRecord(node.metadata.homeAssistant);
|
|
94
|
+
const values = [
|
|
95
|
+
homeAssistant.objectKind,
|
|
96
|
+
homeAssistant.objectId,
|
|
97
|
+
homeAssistant.entityId,
|
|
98
|
+
homeAssistant.deviceId,
|
|
99
|
+
homeAssistant.areaId,
|
|
100
|
+
homeAssistant.integrationId,
|
|
101
|
+
node.metadata.manufacturer,
|
|
102
|
+
node.metadata.model,
|
|
103
|
+
].filter((value) => typeof value === 'string' && value.trim().length > 0);
|
|
104
|
+
return values.length > 0 ? values.join(' ') : undefined;
|
|
105
|
+
}
|
|
106
|
+
function firstBoundedText(values, maxLength) {
|
|
107
|
+
for (const value of values) {
|
|
108
|
+
if (typeof value !== 'string')
|
|
109
|
+
continue;
|
|
110
|
+
const trimmed = value.trim();
|
|
111
|
+
if (!trimmed)
|
|
112
|
+
continue;
|
|
113
|
+
return clampText(trimmed, maxLength);
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
function clampText(value, maxLength) {
|
|
118
|
+
return value.length <= maxLength ? value : value.slice(0, maxLength);
|
|
119
|
+
}
|
|
120
|
+
function tokenize(value) {
|
|
121
|
+
return value.toLowerCase().split(/[^a-z0-9_.:-]+/).map((entry) => entry.trim()).filter(Boolean);
|
|
122
|
+
}
|
|
123
|
+
function scoreFields(tokens, fields) {
|
|
124
|
+
let score = 0;
|
|
125
|
+
for (const field of fields) {
|
|
126
|
+
const raw = typeof field === 'string' ? field.trim() : '';
|
|
127
|
+
const haystack = clampText(raw, MAX_SEARCH_TEXT_CHARS).toLowerCase();
|
|
128
|
+
if (!haystack)
|
|
129
|
+
continue;
|
|
130
|
+
for (const token of tokens) {
|
|
131
|
+
if (haystack.includes(token))
|
|
132
|
+
score += 10;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return score;
|
|
136
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EAEnB,oBAAoB,EACpB,mBAAmB,EAEnB,qBAAqB,EAEtB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { extractKnowledgeArtifact } from '../extractors.js';
|
|
2
|
-
import { HOME_GRAPH_CONNECTOR_ID, belongsToSpace, buildHomeGraphMetadata, buildHomeGraphNodeInput, buildIssue, edgeIsActive, homeGraphNodeId, homeGraphSourceId, namespacedCanonicalUri, nodeKindForHomeGraphObject,
|
|
2
|
+
import { HOME_GRAPH_CONNECTOR_ID, belongsToSpace, buildHomeGraphMetadata, buildHomeGraphNodeInput, buildIssue, edgeIsActive, homeGraphNodeId, homeGraphSourceId, namespacedCanonicalUri, nodeKindForHomeGraphObject, normalizeHomeGraphObjectInput, resolveHomeGraphSpace, targetToReference, uniqueStrings, } from './helpers.js';
|
|
3
3
|
import { collectLinkedObjects, findHomeAssistantNode, inferHomeGraphSourceType, missingDevicePassportFields, readHomeGraphState, renderAskAnswer, renderHomeGraphState, safeHomeGraphFilename, sourcesLinkedToNode, } from './state.js';
|
|
4
4
|
import { renderDevicePassportPage, renderPacketPage, renderRoomPage, } from './rendering.js';
|
|
5
|
+
import { readHomeGraphSearchState, scoreHomeGraphResults, } from './search.js';
|
|
5
6
|
import { HOME_GRAPH_CAPABILITIES } from './types.js';
|
|
6
7
|
export class HomeGraphService {
|
|
7
8
|
store;
|
|
@@ -186,8 +187,8 @@ export class HomeGraphService {
|
|
|
186
187
|
async ask(input) {
|
|
187
188
|
await this.store.init();
|
|
188
189
|
const { spaceId } = resolveHomeGraphSpace(input);
|
|
189
|
-
const state =
|
|
190
|
-
const results = scoreHomeGraphResults(input.query, state.sources, state.nodes, (sourceId) =>
|
|
190
|
+
const state = readHomeGraphSearchState(this.store, spaceId);
|
|
191
|
+
const results = scoreHomeGraphResults(input.query, state.sources, state.nodes, (sourceId) => state.extractionBySourceId.get(sourceId), input.limit ?? 8);
|
|
191
192
|
const sources = results.flatMap((result) => result.source ? [result.source] : []);
|
|
192
193
|
const linkedObjects = collectLinkedObjects(results, state);
|
|
193
194
|
const confidence = Math.min(100, Math.max(10, results[0]?.score ?? 10));
|
|
@@ -519,7 +520,9 @@ export class HomeGraphService {
|
|
|
519
520
|
integrations: 0,
|
|
520
521
|
};
|
|
521
522
|
const upsertGroup = async (kind, objects) => {
|
|
522
|
-
|
|
523
|
+
let count = 0;
|
|
524
|
+
for (const rawObject of objects ?? []) {
|
|
525
|
+
const object = normalizeHomeGraphObjectInput(kind, rawObject);
|
|
523
526
|
const nodeInput = buildHomeGraphNodeInput(spaceId, installationId, kind, object);
|
|
524
527
|
const node = await this.store.upsertNode({ ...nodeInput, sourceId, confidence: 90 });
|
|
525
528
|
await this.store.upsertEdge({
|
|
@@ -531,24 +534,18 @@ export class HomeGraphService {
|
|
|
531
534
|
metadata: buildHomeGraphMetadata(spaceId, installationId),
|
|
532
535
|
});
|
|
533
536
|
await this.linkSnapshotObjectRelations(spaceId, installationId, node, object);
|
|
537
|
+
count += 1;
|
|
534
538
|
}
|
|
539
|
+
return count;
|
|
535
540
|
};
|
|
536
|
-
await upsertGroup('area', input.areas);
|
|
537
|
-
counts.
|
|
538
|
-
await upsertGroup('
|
|
539
|
-
counts.
|
|
540
|
-
await upsertGroup('
|
|
541
|
-
counts.
|
|
542
|
-
await upsertGroup('
|
|
543
|
-
counts.
|
|
544
|
-
await upsertGroup('automation', input.automations);
|
|
545
|
-
counts.automations = input.automations?.length ?? 0;
|
|
546
|
-
await upsertGroup('script', input.scripts);
|
|
547
|
-
counts.scripts = input.scripts?.length ?? 0;
|
|
548
|
-
await upsertGroup('scene', input.scenes);
|
|
549
|
-
counts.scenes = input.scenes?.length ?? 0;
|
|
550
|
-
await upsertGroup('label', input.labels);
|
|
551
|
-
counts.labels = input.labels?.length ?? 0;
|
|
541
|
+
counts.areas = await upsertGroup('area', input.areas);
|
|
542
|
+
counts.integrations = await upsertGroup('integration', input.integrations);
|
|
543
|
+
counts.devices = await upsertGroup('device', input.devices);
|
|
544
|
+
counts.entities = await upsertGroup('entity', input.entities);
|
|
545
|
+
counts.automations = await upsertGroup('automation', input.automations);
|
|
546
|
+
counts.scripts = await upsertGroup('script', input.scripts);
|
|
547
|
+
counts.scenes = await upsertGroup('scene', input.scenes);
|
|
548
|
+
counts.labels = await upsertGroup('label', input.labels);
|
|
552
549
|
return counts;
|
|
553
550
|
}
|
|
554
551
|
async linkSnapshotObjectRelations(spaceId, installationId, node, object) {
|
|
@@ -10,7 +10,10 @@ export declare function sourcesLinkedToNode(nodeId: string, state: HomeGraphStat
|
|
|
10
10
|
export declare function collectLinkedObjects(results: readonly {
|
|
11
11
|
readonly source?: KnowledgeSourceRecord;
|
|
12
12
|
readonly node?: KnowledgeNodeRecord;
|
|
13
|
-
}[], state:
|
|
13
|
+
}[], state: {
|
|
14
|
+
readonly edges: readonly KnowledgeEdgeRecord[];
|
|
15
|
+
readonly nodes: readonly KnowledgeNodeRecord[];
|
|
16
|
+
}): KnowledgeNodeRecord[];
|
|
14
17
|
export declare function missingDevicePassportFields(device: KnowledgeNodeRecord, sources: readonly KnowledgeSourceRecord[]): string[];
|
|
15
18
|
export declare function findHomeAssistantNode(nodes: readonly KnowledgeNodeRecord[], kind: string, id: string): KnowledgeNodeRecord | undefined;
|
|
16
19
|
export declare function inferHomeGraphSourceType(tags: readonly string[] | undefined, fallback: KnowledgeSourceType): KnowledgeSourceType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAEzB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACzE,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAkBzF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAUhH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAKlG;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAAE,EAAE,EACpG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAEzB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACzE,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAkBzF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAUhH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAKlG;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAAE,EAAE,EACpG,KAAK,EAAE;IACL,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAChD,GACA,mBAAmB,EAAE,CAavB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACxC,MAAM,EAAE,CAOV;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,mBAAmB,GAAG,SAAS,CAOjC;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACnC,QAAQ,EAAE,mBAAmB,GAC5B,mBAAmB,CAMrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAAE,EAAE,EAClH,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GACxC,MAAM,CASR;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnH"}
|
|
@@ -10,7 +10,7 @@ export interface HomeGraphSpaceInput {
|
|
|
10
10
|
readonly knowledgeSpaceId?: string;
|
|
11
11
|
}
|
|
12
12
|
export interface HomeGraphObjectInput {
|
|
13
|
-
readonly id
|
|
13
|
+
readonly id?: string;
|
|
14
14
|
readonly name?: string;
|
|
15
15
|
readonly title?: string;
|
|
16
16
|
readonly entityId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,qBAAqB,wPAgBxB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,oBAAoB,kNAcvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,uBAAuB,0PAA2P,CAAC;AAEhS,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,OAAO,GACP,aAAa,GACb,MAAM,GACN,iBAAiB,GACjB,kBAAkB,GAClB,sBAAsB,GACtB,UAAU,GACV,cAAc,CAAC;AAEnB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/knowledge/home-graph/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,5 +15,5 @@ export declare function withKnowledgeSpace<T extends {
|
|
|
15
15
|
}>(input: T, spaceId: string): T;
|
|
16
16
|
export declare function getKnowledgeSpaceId(input: KnowledgeSpaceBackedRecord | Record<string, unknown> | undefined | null): KnowledgeSpaceId;
|
|
17
17
|
export declare function isInKnowledgeSpace(input: KnowledgeSpaceBackedRecord | undefined | null, spaceId: string): boolean;
|
|
18
|
-
export declare function normalizeSpaceComponent(value
|
|
18
|
+
export declare function normalizeSpaceComponent(value?: string | null): string;
|
|
19
19
|
//# sourceMappingURL=spaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../../src/_internal/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;AAEtE,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,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,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,CAOpI;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjH;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../../src/_internal/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;AAEtE,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,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,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,CAOpI;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjH;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOrE"}
|
|
@@ -38,7 +38,11 @@ export function isInKnowledgeSpace(input, spaceId) {
|
|
|
38
38
|
return getKnowledgeSpaceId(input) === normalizeKnowledgeSpaceId(spaceId);
|
|
39
39
|
}
|
|
40
40
|
export function normalizeSpaceComponent(value) {
|
|
41
|
-
const normalized =
|
|
41
|
+
const normalized = (typeof value === 'string' ? value : '')
|
|
42
|
+
.trim()
|
|
43
|
+
.toLowerCase()
|
|
44
|
+
.replace(/[^a-z0-9_.:-]+/g, '-')
|
|
45
|
+
.replace(/^-+|-+$/g, '');
|
|
42
46
|
return normalized.length > 0 ? normalized : 'default';
|
|
43
47
|
}
|
|
44
48
|
function readMetadata(input) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
let version = '0.26.
|
|
3
|
+
let version = '0.26.7';
|
|
4
4
|
try {
|
|
5
5
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
|
|
6
6
|
version = pkg.version ?? version;
|