@pellux/goodvibes-sdk 0.33.10 → 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/browser-knowledge.d.ts +1 -1
- package/dist/browser-knowledge.d.ts.map +1 -1
- package/dist/browser-knowledge.js +1 -1
- package/dist/contracts/artifacts/operator-contract.json +75 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-knowledge.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-knowledge.js +16 -7
- package/dist/platform/control-plane/routes/operator.js +2 -2
- package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/platform/daemon/http/router-route-contexts.js +8 -8
- package/dist/platform/knowledge/graphql-schema.d.ts +1 -1
- package/dist/platform/knowledge/graphql-schema.d.ts.map +1 -1
- package/dist/platform/knowledge/graphql-schema.js +13 -11
- package/dist/platform/knowledge/graphql.d.ts.map +1 -1
- package/dist/platform/knowledge/graphql.js +51 -25
- package/dist/platform/knowledge/index.d.ts +1 -1
- package/dist/platform/knowledge/index.d.ts.map +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/map-filters.d.ts +3 -0
- package/dist/platform/knowledge/map-filters.d.ts.map +1 -1
- package/dist/platform/knowledge/map-filters.js +20 -0
- package/dist/platform/knowledge/map.d.ts +2 -0
- package/dist/platform/knowledge/map.d.ts.map +1 -1
- package/dist/platform/knowledge/map.js +1 -6
- package/dist/platform/knowledge/packet.d.ts +6 -5
- package/dist/platform/knowledge/packet.d.ts.map +1 -1
- package/dist/platform/knowledge/packet.js +13 -8
- package/dist/platform/knowledge/projections.d.ts +12 -1
- package/dist/platform/knowledge/projections.d.ts.map +1 -1
- package/dist/platform/knowledge/projections.js +153 -91
- 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/service.d.ts +27 -7
- package/dist/platform/knowledge/service.d.ts.map +1 -1
- package/dist/platform/knowledge/service.js +66 -6
- package/dist/platform/knowledge/spaces.d.ts +8 -0
- package/dist/platform/knowledge/spaces.d.ts.map +1 -1
- package/dist/platform/knowledge/spaces.js +22 -2
- 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/knowledge/types.d.ts +2 -0
- package/dist/platform/knowledge/types.d.ts.map +1 -1
- package/dist/platform/version.js +1 -1
- package/package.json +9 -9
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { GraphQLError, buildSchema, graphql, parse, printSchema } from 'graphql';
|
|
2
2
|
import { KNOWLEDGE_GRAPHQL_SDL, clampInt, clampOffset, installJsonScalar, mapJob, mapJobRun, mapPacket, mapProjectionBundle, mapProjectionTarget, pickOperation, toJobMode, toPacketDetail, toProjectionKind, } from './graphql-schema.js';
|
|
3
|
-
import { isInKnowledgeSpace } from './spaces.js';
|
|
4
3
|
export function inspectKnowledgeGraphqlAccess(source, operationName) {
|
|
5
4
|
const document = parse(source);
|
|
6
5
|
const operation = pickOperation(document, operationName);
|
|
@@ -49,16 +48,19 @@ export class KnowledgeGraphqlService {
|
|
|
49
48
|
}
|
|
50
49
|
createRootValue() {
|
|
51
50
|
return {
|
|
52
|
-
status: async () => this.service.getStatus(),
|
|
53
|
-
sources: (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
status: async (args) => this.service.getStatus(graphqlScope(args)),
|
|
52
|
+
sources: (args) => (this.service.querySources({
|
|
53
|
+
limit: clampInt(args.limit, 100),
|
|
54
|
+
...graphqlScope(args),
|
|
55
|
+
}).items),
|
|
56
|
+
nodes: (args) => (this.service.queryNodes({
|
|
57
|
+
limit: clampInt(args.limit, 100),
|
|
58
|
+
...graphqlScope(args),
|
|
59
|
+
}).items),
|
|
60
|
+
issues: (args) => (this.service.queryIssues({
|
|
61
|
+
limit: clampInt(args.limit, 100),
|
|
62
|
+
...graphqlScope(args),
|
|
63
|
+
}).items),
|
|
62
64
|
source: ({ id }) => this.service.listSources(Number.MAX_SAFE_INTEGER).find((source) => source.id === id) ?? null,
|
|
63
65
|
node: ({ id }) => this.service.listNodes(Number.MAX_SAFE_INTEGER).find((node) => node.id === id) ?? null,
|
|
64
66
|
issue: ({ id }) => this.service.listIssues(Number.MAX_SAFE_INTEGER).find((issue) => issue.id === id) ?? null,
|
|
@@ -67,6 +69,7 @@ export class KnowledgeGraphqlService {
|
|
|
67
69
|
sourcesConnection: (args) => this.service.querySources({
|
|
68
70
|
limit: clampInt(args.limit, 100),
|
|
69
71
|
offset: clampOffset(args.offset),
|
|
72
|
+
...graphqlScope(args),
|
|
70
73
|
status: args.status,
|
|
71
74
|
connectorId: args.connectorId,
|
|
72
75
|
sourceType: args.sourceType,
|
|
@@ -76,6 +79,7 @@ export class KnowledgeGraphqlService {
|
|
|
76
79
|
nodesConnection: (args) => this.service.queryNodes({
|
|
77
80
|
limit: clampInt(args.limit, 100),
|
|
78
81
|
offset: clampOffset(args.offset),
|
|
82
|
+
...graphqlScope(args),
|
|
79
83
|
kind: args.kind,
|
|
80
84
|
status: args.status,
|
|
81
85
|
query: args.query,
|
|
@@ -83,14 +87,14 @@ export class KnowledgeGraphqlService {
|
|
|
83
87
|
issuesConnection: (args) => this.service.queryIssues({
|
|
84
88
|
limit: clampInt(args.limit, 100),
|
|
85
89
|
offset: clampOffset(args.offset),
|
|
90
|
+
...graphqlScope(args),
|
|
86
91
|
severity: args.severity,
|
|
87
92
|
status: args.status,
|
|
88
93
|
code: args.code,
|
|
89
94
|
query: args.query,
|
|
90
95
|
}),
|
|
91
|
-
extractions: (
|
|
92
|
-
.
|
|
93
|
-
.slice(0, clampInt(limit, 100))),
|
|
96
|
+
extractions: (args) => (this.service.listExtractions(clampInt(args.limit, 100), args.sourceId, graphqlScope(args))
|
|
97
|
+
.slice(0, clampInt(args.limit, 100))),
|
|
94
98
|
sourceExtraction: ({ sourceId }) => this.service.getSourceExtraction(sourceId),
|
|
95
99
|
neighbors: ({ kind, id, relation, limit }) => {
|
|
96
100
|
if (kind !== 'source' && kind !== 'node') {
|
|
@@ -98,21 +102,25 @@ export class KnowledgeGraphqlService {
|
|
|
98
102
|
}
|
|
99
103
|
return this.service.getNeighbors(kind, id, { relation, limit: clampInt(limit, 20) });
|
|
100
104
|
},
|
|
101
|
-
search: (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
search: (args) => (this.service.searchScoped({
|
|
106
|
+
query: args.query,
|
|
107
|
+
limit: clampInt(args.limit, 10),
|
|
108
|
+
...graphqlScope(args),
|
|
109
|
+
})),
|
|
110
|
+
packet: async (args) => mapPacket(await this.service.buildPacket(args.task, args.writeScope ?? [], clampInt(args.limit, 6), {
|
|
111
|
+
detail: toPacketDetail(args.detail),
|
|
112
|
+
...(typeof args.budgetLimit === 'number' ? { budgetLimit: args.budgetLimit } : {}),
|
|
113
|
+
...graphqlScope(args),
|
|
107
114
|
})),
|
|
108
115
|
connectors: () => this.service.listConnectors(),
|
|
109
116
|
connector: ({ id }) => this.service.getConnector(id),
|
|
110
117
|
connectorDoctor: ({ id }) => this.service.doctorConnector(id),
|
|
111
|
-
projectionTargets: async (
|
|
112
|
-
projection: async (
|
|
113
|
-
kind: toProjectionKind(kind),
|
|
114
|
-
id,
|
|
115
|
-
limit: clampInt(limit, 12),
|
|
118
|
+
projectionTargets: async (args) => (await this.service.listProjectionTargets(clampInt(args.limit, 25), graphqlScope(args))).map((target) => mapProjectionTarget(target)),
|
|
119
|
+
projection: async (args) => mapProjectionBundle(await this.service.renderProjection({
|
|
120
|
+
kind: toProjectionKind(args.kind),
|
|
121
|
+
id: args.id,
|
|
122
|
+
limit: clampInt(args.limit, 12),
|
|
123
|
+
...graphqlScope(args),
|
|
116
124
|
})),
|
|
117
125
|
jobs: () => this.service.listJobs().map((job) => mapJob(job)),
|
|
118
126
|
job: ({ id }) => {
|
|
@@ -222,6 +230,15 @@ export class KnowledgeGraphqlService {
|
|
|
222
230
|
assertWriteAccess(context);
|
|
223
231
|
return this.service.setScheduleEnabled(args.id, args.enabled);
|
|
224
232
|
},
|
|
233
|
+
renderProjection: async (args, context) => {
|
|
234
|
+
assertWriteAccess(context);
|
|
235
|
+
return mapProjectionBundle(await this.service.renderProjection({
|
|
236
|
+
kind: toProjectionKind(args.kind),
|
|
237
|
+
id: args.id,
|
|
238
|
+
limit: clampInt(args.limit, 12),
|
|
239
|
+
...graphqlScope(args),
|
|
240
|
+
}));
|
|
241
|
+
},
|
|
225
242
|
materializeProjection: async (args, context) => {
|
|
226
243
|
assertWriteAccess(context);
|
|
227
244
|
const materialized = await this.service.materializeProjection({
|
|
@@ -229,6 +246,7 @@ export class KnowledgeGraphqlService {
|
|
|
229
246
|
id: args.id,
|
|
230
247
|
limit: clampInt(args.limit, 12),
|
|
231
248
|
filename: args.filename,
|
|
249
|
+
...graphqlScope(args),
|
|
232
250
|
});
|
|
233
251
|
return {
|
|
234
252
|
...materialized,
|
|
@@ -238,6 +256,14 @@ export class KnowledgeGraphqlService {
|
|
|
238
256
|
};
|
|
239
257
|
}
|
|
240
258
|
}
|
|
259
|
+
function graphqlScope(input = {}) {
|
|
260
|
+
return {
|
|
261
|
+
...(typeof input.knowledgeSpaceId === 'string' && input.knowledgeSpaceId.trim()
|
|
262
|
+
? { knowledgeSpaceId: input.knowledgeSpaceId }
|
|
263
|
+
: {}),
|
|
264
|
+
...(input.includeAllSpaces === true ? { includeAllSpaces: true } : {}),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
241
267
|
export function getKnowledgeGraphqlSchemaText() {
|
|
242
268
|
return KnowledgeGraphqlService.schemaSdl;
|
|
243
269
|
}
|
|
@@ -8,7 +8,7 @@ export { collectBrowserKnowledge, discoverBrowserKnowledgeProfiles, ingestBrowse
|
|
|
8
8
|
export { KnowledgeGraphqlService, getKnowledgeGraphqlSchemaText, inspectKnowledgeGraphqlAccess } from './graphql.js';
|
|
9
9
|
export type { KnowledgeGraphqlAccessProfile, KnowledgeGraphqlExecuteInput } from './graphql.js';
|
|
10
10
|
export { DEFAULT_KNOWLEDGE_SPACE_ID, HOME_ASSISTANT_KNOWLEDGE_SPACE_PREFIX, PROJECT_KNOWLEDGE_SPACE_PREFIX, getKnowledgeSpaceId, homeAssistantKnowledgeSpaceId, isHomeAssistantKnowledgeSpace, isInKnowledgeSpace, isProjectKnowledgeSpace, knowledgeSpaceMetadata, normalizeProjectId, normalizeHomeAssistantInstallationId, normalizeKnowledgeSpaceId, projectKnowledgeSpaceId, withKnowledgeSpace, } from './spaces.js';
|
|
11
|
-
export type { KnowledgeSpaceId } from './spaces.js';
|
|
11
|
+
export type { KnowledgeSpaceId, KnowledgeSpaceScopeInput } from './spaces.js';
|
|
12
12
|
export { buildGeneratedKnowledgePageGraph, listGeneratedKnowledgePages, } from './generated-pages.js';
|
|
13
13
|
export type { GeneratedKnowledgePageEntry, GeneratedKnowledgePageGraph, GeneratedKnowledgePageGraphNeighbor, GeneratedKnowledgePageGraphNode, GeneratedKnowledgePageListOptions, GeneratedKnowledgePageListResult, GeneratedKnowledgeRelatedPage, } from './generated-pages.js';
|
|
14
14
|
export { generatedKnowledgeCanonicalUri, generatedKnowledgeSourceId, isGeneratedKnowledgeSource, materializeGeneratedKnowledgeProjection, } from './generated-projections.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,uCAAuC,EAAE,MAAM,iBAAiB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,yCAAyC,EACzC,4CAA4C,EAC5C,6BAA6B,EAC7B,uCAAuC,EACvC,2CAA2C,EAC3C,yCAAyC,EACzC,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACrH,YAAY,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,EACrC,8BAA8B,EAC9B,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,oCAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
}
|
|
@@ -14,11 +14,14 @@ export declare function buildKnowledgeMapFacets(state: KnowledgeMapFilterState):
|
|
|
14
14
|
export declare function normalizeKnowledgeMapFilters(options?: KnowledgeMapFilterOptions): Required<Pick<KnowledgeMapFilterInput, 'ids' | 'linkedToIds' | 'nodeKinds' | 'sourceTypes' | 'sourceStatuses' | 'nodeStatuses' | 'issueCodes' | 'issueStatuses' | 'issueSeverities' | 'edgeRelations' | 'tags'>> & {
|
|
15
15
|
readonly query?: string | undefined;
|
|
16
16
|
readonly minConfidence?: number | undefined;
|
|
17
|
+
readonly knowledgeSpaceId?: string | undefined;
|
|
18
|
+
readonly includeAllSpaces?: boolean | undefined;
|
|
17
19
|
readonly recordKinds?: ReadonlySet<'source' | 'node' | 'issue'> | undefined;
|
|
18
20
|
};
|
|
19
21
|
export declare function normalizeStringArray(value: unknown): readonly string[];
|
|
20
22
|
export declare function readString(value: unknown): string | undefined;
|
|
21
23
|
export declare function readNumber(value: unknown): number | undefined;
|
|
24
|
+
export declare function readBoolean(value: unknown): boolean | undefined;
|
|
22
25
|
export declare function countFacet(values: readonly unknown[]): readonly KnowledgeMapFacetValue[];
|
|
23
26
|
export declare function readTags(metadata: Record<string, unknown>): readonly string[];
|
|
24
27
|
//# sourceMappingURL=map-filters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-filters.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/map-filters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map-filters.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/map-filters.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,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,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjD;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,uBAAuB,CA8EzB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAoB1F;AAED,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,yBAA8B,GAAG,QAAQ,CAAC,IAAI,CAClG,uBAAuB,EACrB,KAAK,GACL,aAAa,GACb,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,MAAM,CACT,CAAC,GAAG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;CAC7E,CAyBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAMtE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO7D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAQ/D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,sBAAsB,EAAE,CAUxF;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,MAAM,EAAE,CAG7E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isGeneratedKnowledgeSource, } from './generated-projections.js';
|
|
2
|
+
import { isInKnowledgeSpaceScope, } from './spaces.js';
|
|
2
3
|
export function applyKnowledgeMapFilters(state, options = {}) {
|
|
3
4
|
const filters = normalizeKnowledgeMapFilters(options);
|
|
4
5
|
const linkedIds = new Set(filters.linkedToIds);
|
|
@@ -9,6 +10,7 @@ export function applyKnowledgeMapFilters(state, options = {}) {
|
|
|
9
10
|
? []
|
|
10
11
|
: state.sources
|
|
11
12
|
.filter((source) => source.status !== 'stale')
|
|
13
|
+
.filter((source) => isInKnowledgeSpaceScope(source, filters))
|
|
12
14
|
.filter((source) => options.includeGenerated !== false || !isGeneratedKnowledgeSource(source))
|
|
13
15
|
.filter((source) => matchesSet(filters.sourceTypes, source.sourceType))
|
|
14
16
|
.filter((source) => matchesSet(filters.sourceStatuses, source.status))
|
|
@@ -28,6 +30,7 @@ export function applyKnowledgeMapFilters(state, options = {}) {
|
|
|
28
30
|
? []
|
|
29
31
|
: state.nodes
|
|
30
32
|
.filter((node) => node.status !== 'stale')
|
|
33
|
+
.filter((node) => isInKnowledgeSpaceScope(node, filters))
|
|
31
34
|
.filter((node) => matchesSet(filters.nodeKinds, node.kind))
|
|
32
35
|
.filter((node) => matchesSet(filters.nodeStatuses, node.status))
|
|
33
36
|
.filter((node) => filters.minConfidence === undefined || node.confidence >= filters.minConfidence)
|
|
@@ -46,6 +49,7 @@ export function applyKnowledgeMapFilters(state, options = {}) {
|
|
|
46
49
|
? []
|
|
47
50
|
: state.issues
|
|
48
51
|
.filter((issue) => (filters.issueStatuses?.length ?? 0) > 0 || issue.status === 'open')
|
|
52
|
+
.filter((issue) => isInKnowledgeSpaceScope(issue, filters))
|
|
49
53
|
.filter((issue) => matchesSet(filters.issueCodes, issue.code))
|
|
50
54
|
.filter((issue) => matchesSet(filters.issueStatuses, issue.status))
|
|
51
55
|
.filter((issue) => matchesSet(filters.issueSeverities, issue.severity))
|
|
@@ -96,9 +100,13 @@ export function normalizeKnowledgeMapFilters(options = {}) {
|
|
|
96
100
|
const recordKinds = normalizeStringArray(options.recordKinds ?? nested.recordKinds);
|
|
97
101
|
const query = readString(options.query) ?? readString(nested.query);
|
|
98
102
|
const minConfidence = readNumber(options.minConfidence) ?? readNumber(nested.minConfidence);
|
|
103
|
+
const knowledgeSpaceId = readString(options.knowledgeSpaceId) ?? readString(nested.knowledgeSpaceId);
|
|
104
|
+
const includeAllSpaces = readBoolean(options.includeAllSpaces) ?? readBoolean(nested.includeAllSpaces);
|
|
99
105
|
return {
|
|
100
106
|
...(query ? { query } : {}),
|
|
101
107
|
...(minConfidence === undefined ? {} : { minConfidence }),
|
|
108
|
+
...(knowledgeSpaceId ? { knowledgeSpaceId } : {}),
|
|
109
|
+
...(includeAllSpaces === undefined ? {} : { includeAllSpaces }),
|
|
102
110
|
...(recordKinds.length > 0 ? { recordKinds: new Set(recordKinds.filter(isRecordKind)) } : {}),
|
|
103
111
|
ids: normalizeStringArray(options.ids ?? nested.ids),
|
|
104
112
|
linkedToIds: normalizeStringArray(options.linkedToIds ?? nested.linkedToIds),
|
|
@@ -133,6 +141,18 @@ export function readNumber(value) {
|
|
|
133
141
|
}
|
|
134
142
|
return undefined;
|
|
135
143
|
}
|
|
144
|
+
export function readBoolean(value) {
|
|
145
|
+
if (typeof value === 'boolean')
|
|
146
|
+
return value;
|
|
147
|
+
if (typeof value === 'string') {
|
|
148
|
+
const normalized = value.trim().toLowerCase();
|
|
149
|
+
if (['1', 'true', 'yes', 'on'].includes(normalized))
|
|
150
|
+
return true;
|
|
151
|
+
if (['0', 'false', 'no', 'off'].includes(normalized))
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
136
156
|
export function countFacet(values) {
|
|
137
157
|
const counts = new Map();
|
|
138
158
|
for (const value of values) {
|
|
@@ -13,6 +13,8 @@ export interface KnowledgeMapRenderOptions {
|
|
|
13
13
|
readonly includeGenerated?: boolean | undefined;
|
|
14
14
|
readonly title?: string | undefined;
|
|
15
15
|
readonly spaceId?: string | undefined;
|
|
16
|
+
readonly knowledgeSpaceId?: string | undefined;
|
|
17
|
+
readonly includeAllSpaces?: boolean | undefined;
|
|
16
18
|
readonly filters?: KnowledgeMapFilterInput | undefined;
|
|
17
19
|
readonly query?: string | undefined;
|
|
18
20
|
readonly recordKinds?: readonly ('source' | 'node' | 'issue')[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/map.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EAEvB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,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,MAAM,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/map.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EAEvB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,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,MAAM,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,CAiGpB"}
|
|
@@ -92,12 +92,7 @@ export function renderKnowledgeMap(state, options = {}) {
|
|
|
92
92
|
edgeCount: visibleEdges.length,
|
|
93
93
|
totalNodeCount: filtered.sources.length + filtered.nodes.length + filtered.issues.length,
|
|
94
94
|
totalEdgeCount: filteredEdges.length,
|
|
95
|
-
facets: buildKnowledgeMapFacets(
|
|
96
|
-
sources: state.sources,
|
|
97
|
-
nodes: state.nodes,
|
|
98
|
-
edges: state.edges,
|
|
99
|
-
issues: state.issues ?? [],
|
|
100
|
-
}),
|
|
95
|
+
facets: buildKnowledgeMapFacets(filtered),
|
|
101
96
|
nodes: mapNodes,
|
|
102
97
|
edges: visibleEdges,
|
|
103
98
|
svg: renderMapSvg({ width, height, title, nodes: mapNodes, edges: visibleEdges }),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { KnowledgeStore } from './store.js';
|
|
2
|
+
import { type KnowledgeSpaceScopeInput } from './spaces.js';
|
|
2
3
|
import type { KnowledgePacket, KnowledgePacketDetail, KnowledgeSearchResult, KnowledgeUsageRecord } from './types.js';
|
|
3
4
|
import type { RuntimeEventBus } from '../runtime/events/index.js';
|
|
4
5
|
export interface KnowledgePacketContext {
|
|
@@ -18,21 +19,21 @@ export interface KnowledgePacketContext {
|
|
|
18
19
|
readonly source: string;
|
|
19
20
|
}) => void, sessionId?: string) => void;
|
|
20
21
|
}
|
|
21
|
-
export declare function searchKnowledge(context: KnowledgePacketContext, query: string, limit?: number): KnowledgeSearchResult[];
|
|
22
|
+
export declare function searchKnowledge(context: KnowledgePacketContext, query: string, limit?: number, scope?: KnowledgeSpaceScopeInput): KnowledgeSearchResult[];
|
|
22
23
|
export declare function buildKnowledgePacket(context: KnowledgePacketContext, task: string, writeScope?: readonly string[], limit?: number, options?: {
|
|
23
24
|
readonly detail?: KnowledgePacketDetail;
|
|
24
25
|
readonly budgetLimit?: number;
|
|
25
|
-
}): Promise<KnowledgePacket>;
|
|
26
|
+
} & KnowledgeSpaceScopeInput): Promise<KnowledgePacket>;
|
|
26
27
|
export declare function buildKnowledgePacketSync(context: KnowledgePacketContext, task: string, writeScope?: readonly string[], limit?: number, options?: {
|
|
27
28
|
readonly detail?: KnowledgePacketDetail;
|
|
28
29
|
readonly budgetLimit?: number;
|
|
29
|
-
}): KnowledgePacket | null;
|
|
30
|
+
} & KnowledgeSpaceScopeInput): KnowledgePacket | null;
|
|
30
31
|
export declare function buildKnowledgePromptPacketSync(context: KnowledgePacketContext, task: string, writeScope?: readonly string[], limit?: number, options?: {
|
|
31
32
|
readonly detail?: KnowledgePacketDetail;
|
|
32
33
|
readonly budgetLimit?: number;
|
|
33
|
-
}): string | null;
|
|
34
|
+
} & KnowledgeSpaceScopeInput): string | null;
|
|
34
35
|
export declare function buildKnowledgePromptPacket(context: KnowledgePacketContext, task: string, writeScope?: readonly string[], limit?: number, options?: {
|
|
35
36
|
readonly detail?: KnowledgePacketDetail;
|
|
36
37
|
readonly budgetLimit?: number;
|
|
37
|
-
}): Promise<string | null>;
|
|
38
|
+
} & KnowledgeSpaceScopeInput): Promise<string | null>;
|
|
38
39
|
//# sourceMappingURL=packet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/packet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAErB,qBAAqB,EAGrB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAalE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACzD,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,WAAW,EAAE,CACpB,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,EAC1H,SAAS,CAAC,EAAE,MAAM,KACf,IAAI,CAAC;CACX;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/packet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAErB,qBAAqB,EAGrB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAalE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACzD,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,WAAW,EAAE,CACpB,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,EAC1H,SAAS,CAAC,EAAE,MAAM,KACf,IAAI,CAAC;CACX;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,EACV,KAAK,GAAE,wBAA6B,GACnC,qBAAqB,EAAE,CAyDzB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,EAClC,KAAK,SAAuB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,wBAA6B,GAClH,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,EAClC,KAAK,SAAuB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,wBAA6B,GAClH,eAAe,GAAG,IAAI,CAExB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,EAClC,KAAK,SAAuB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,wBAA6B,GAClH,MAAM,GAAG,IAAI,CAGf;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,EAClC,KAAK,SAAuB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,wBAA6B,GAClH,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { isInKnowledgeSpaceScope, } from './spaces.js';
|
|
1
2
|
import { emitKnowledgePacketBuilt } from '../runtime/emitters/index.js';
|
|
2
3
|
import { DEFAULT_PACKET_BUDGET, DEFAULT_PACKET_LIMIT, estimateTokens, isSourcePastRefreshWindow, renderPacket, scoreHaystack, summarizeCompact, tokenize, trimForDetail, } from './shared.js';
|
|
3
|
-
export function searchKnowledge(context, query, limit = 10) {
|
|
4
|
+
export function searchKnowledge(context, query, limit = 10, scope = {}) {
|
|
4
5
|
const taskTokens = tokenize(query);
|
|
5
6
|
if (taskTokens.length === 0)
|
|
6
7
|
return [];
|
|
7
|
-
const sourceResults = context.store.listSources(Number.MAX_SAFE_INTEGER).map((source) => {
|
|
8
|
+
const sourceResults = context.store.listSources(Number.MAX_SAFE_INTEGER).filter((source) => isInKnowledgeSpaceScope(source, scope)).map((source) => {
|
|
8
9
|
const extraction = context.store.getExtractionBySourceId(source.id);
|
|
9
10
|
const haystack = [
|
|
10
11
|
source.title ?? '',
|
|
@@ -27,7 +28,7 @@ export function searchKnowledge(context, query, limit = 10) {
|
|
|
27
28
|
source,
|
|
28
29
|
};
|
|
29
30
|
});
|
|
30
|
-
const nodeResults = context.store.listNodes(Number.MAX_SAFE_INTEGER).map((node) => {
|
|
31
|
+
const nodeResults = context.store.listNodes(Number.MAX_SAFE_INTEGER).filter((node) => isInKnowledgeSpaceScope(node, scope)).map((node) => {
|
|
31
32
|
const haystack = [
|
|
32
33
|
node.title,
|
|
33
34
|
node.summary ?? '',
|
|
@@ -81,6 +82,8 @@ function buildKnowledgePacketFromCurrentState(context, task, writeScope, limit,
|
|
|
81
82
|
const usageStats = buildUsageStats(context);
|
|
82
83
|
const candidates = [];
|
|
83
84
|
for (const source of context.store.listSources(Number.MAX_SAFE_INTEGER)) {
|
|
85
|
+
if (!isInKnowledgeSpaceScope(source, options))
|
|
86
|
+
continue;
|
|
84
87
|
const extraction = context.store.getExtractionBySourceId(source.id);
|
|
85
88
|
const haystack = [
|
|
86
89
|
source.title ?? '',
|
|
@@ -101,7 +104,7 @@ function buildKnowledgePacketFromCurrentState(context, task, writeScope, limit,
|
|
|
101
104
|
? []
|
|
102
105
|
: (extraction?.sections.slice(0, detail === 'detailed' ? 4 : 2) ?? []);
|
|
103
106
|
const summary = trimForDetail(extraction?.summary ?? source.summary ?? source.description, detail);
|
|
104
|
-
const relationLabels = collectRelatedLabels(context, 'source', source.id);
|
|
107
|
+
const relationLabels = collectRelatedLabels(context, 'source', source.id, options);
|
|
105
108
|
const usageBoost = scoreUsageBoost(usageStats.get(`source:${source.id}`));
|
|
106
109
|
const relationBoost = Math.min(18, relationLabels.length * 3);
|
|
107
110
|
const freshnessBoost = isSourcePastRefreshWindow(source) ? -8 : 6;
|
|
@@ -126,6 +129,8 @@ function buildKnowledgePacketFromCurrentState(context, task, writeScope, limit,
|
|
|
126
129
|
candidates.push({ score: item.score, item });
|
|
127
130
|
}
|
|
128
131
|
for (const node of context.store.listNodes(Number.MAX_SAFE_INTEGER)) {
|
|
132
|
+
if (!isInKnowledgeSpaceScope(node, options))
|
|
133
|
+
continue;
|
|
129
134
|
const haystack = [
|
|
130
135
|
node.title,
|
|
131
136
|
node.summary ?? '',
|
|
@@ -135,7 +140,7 @@ function buildKnowledgePacketFromCurrentState(context, task, writeScope, limit,
|
|
|
135
140
|
const scored = scoreHaystack(haystack, taskTokens, scopeTokens);
|
|
136
141
|
if (scored.score <= 0)
|
|
137
142
|
continue;
|
|
138
|
-
const related = collectRelatedLabels(context, 'node', node.id);
|
|
143
|
+
const related = collectRelatedLabels(context, 'node', node.id, options);
|
|
139
144
|
const usageBoost = scoreUsageBoost(usageStats.get(`node:${node.id}`));
|
|
140
145
|
const relationBoost = Math.min(20, context.store.edgesFor('node', node.id).length * 2);
|
|
141
146
|
const kindBoost = nodeKindBoost(node.kind);
|
|
@@ -202,7 +207,7 @@ function buildKnowledgePacketFromCurrentState(context, task, writeScope, limit,
|
|
|
202
207
|
}));
|
|
203
208
|
return packet;
|
|
204
209
|
}
|
|
205
|
-
function collectRelatedLabels(context, kind, id) {
|
|
210
|
+
function collectRelatedLabels(context, kind, id, scope) {
|
|
206
211
|
const related = context.store.edgesFor(kind, id);
|
|
207
212
|
const labels = [];
|
|
208
213
|
for (const edge of related) {
|
|
@@ -210,12 +215,12 @@ function collectRelatedLabels(context, kind, id) {
|
|
|
210
215
|
const otherId = edge.fromKind === kind && edge.fromId === id ? edge.toId : edge.fromId;
|
|
211
216
|
if (otherKind === 'node') {
|
|
212
217
|
const node = context.store.getNode(otherId);
|
|
213
|
-
if (node)
|
|
218
|
+
if (node && isInKnowledgeSpaceScope(node, scope))
|
|
214
219
|
labels.push(node.title);
|
|
215
220
|
}
|
|
216
221
|
else if (otherKind === 'source') {
|
|
217
222
|
const source = context.store.getSource(otherId);
|
|
218
|
-
if (source)
|
|
223
|
+
if (source && isInKnowledgeSpaceScope(source, scope))
|
|
219
224
|
labels.push(source.title ?? source.canonicalUri ?? source.id);
|
|
220
225
|
}
|
|
221
226
|
}
|