@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.
Files changed (48) hide show
  1. package/dist/browser-knowledge.d.ts +1 -1
  2. package/dist/browser-knowledge.d.ts.map +1 -1
  3. package/dist/browser-knowledge.js +1 -1
  4. package/dist/contracts/artifacts/operator-contract.json +75 -2
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/platform/control-plane/method-catalog-knowledge.d.ts.map +1 -1
  8. package/dist/platform/control-plane/method-catalog-knowledge.js +16 -7
  9. package/dist/platform/control-plane/routes/operator.js +2 -2
  10. package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
  11. package/dist/platform/daemon/http/router-route-contexts.js +8 -8
  12. package/dist/platform/knowledge/graphql-schema.d.ts +1 -1
  13. package/dist/platform/knowledge/graphql-schema.d.ts.map +1 -1
  14. package/dist/platform/knowledge/graphql-schema.js +13 -11
  15. package/dist/platform/knowledge/graphql.d.ts.map +1 -1
  16. package/dist/platform/knowledge/graphql.js +51 -25
  17. package/dist/platform/knowledge/index.d.ts +1 -1
  18. package/dist/platform/knowledge/index.d.ts.map +1 -1
  19. package/dist/platform/knowledge/ingest-compile.d.ts.map +1 -1
  20. package/dist/platform/knowledge/ingest-compile.js +24 -12
  21. package/dist/platform/knowledge/map-filters.d.ts +3 -0
  22. package/dist/platform/knowledge/map-filters.d.ts.map +1 -1
  23. package/dist/platform/knowledge/map-filters.js +20 -0
  24. package/dist/platform/knowledge/map.d.ts +2 -0
  25. package/dist/platform/knowledge/map.d.ts.map +1 -1
  26. package/dist/platform/knowledge/map.js +1 -6
  27. package/dist/platform/knowledge/packet.d.ts +6 -5
  28. package/dist/platform/knowledge/packet.d.ts.map +1 -1
  29. package/dist/platform/knowledge/packet.js +13 -8
  30. package/dist/platform/knowledge/projections.d.ts +12 -1
  31. package/dist/platform/knowledge/projections.d.ts.map +1 -1
  32. package/dist/platform/knowledge/projections.js +153 -91
  33. package/dist/platform/knowledge/semantic/answer-evidence.d.ts.map +1 -1
  34. package/dist/platform/knowledge/semantic/answer-evidence.js +6 -3
  35. package/dist/platform/knowledge/service.d.ts +27 -7
  36. package/dist/platform/knowledge/service.d.ts.map +1 -1
  37. package/dist/platform/knowledge/service.js +66 -6
  38. package/dist/platform/knowledge/spaces.d.ts +8 -0
  39. package/dist/platform/knowledge/spaces.d.ts.map +1 -1
  40. package/dist/platform/knowledge/spaces.js +22 -2
  41. package/dist/platform/knowledge/store-read.js +5 -5
  42. package/dist/platform/knowledge/store.d.ts +1 -0
  43. package/dist/platform/knowledge/store.d.ts.map +1 -1
  44. package/dist/platform/knowledge/store.js +70 -16
  45. package/dist/platform/knowledge/types.d.ts +2 -0
  46. package/dist/platform/knowledge/types.d.ts.map +1 -1
  47. package/dist/platform/version.js +1 -1
  48. 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: ({ limit, knowledgeSpaceId }) => (this.service.listSources(knowledgeSpaceId ? 10_000 : clampInt(limit, 100))
54
- .filter((source) => !knowledgeSpaceId || isInKnowledgeSpace(source, knowledgeSpaceId))
55
- .slice(0, clampInt(limit, 100))),
56
- nodes: ({ limit, knowledgeSpaceId }) => (this.service.listNodes(knowledgeSpaceId ? 10_000 : clampInt(limit, 100))
57
- .filter((node) => !knowledgeSpaceId || isInKnowledgeSpace(node, knowledgeSpaceId))
58
- .slice(0, clampInt(limit, 100))),
59
- issues: ({ limit, knowledgeSpaceId }) => (this.service.listIssues(knowledgeSpaceId ? 10_000 : clampInt(limit, 100))
60
- .filter((issue) => !knowledgeSpaceId || isInKnowledgeSpace(issue, knowledgeSpaceId))
61
- .slice(0, clampInt(limit, 100))),
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: ({ limit, sourceId, knowledgeSpaceId }) => (this.service.listExtractions(clampInt(limit, 100), sourceId)
92
- .filter((extraction) => !knowledgeSpaceId || isInKnowledgeSpace(extraction, knowledgeSpaceId))
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: ({ query, limit, knowledgeSpaceId }) => (this.service.search(query, knowledgeSpaceId ? 10_000 : clampInt(limit, 10))
102
- .filter((result) => !knowledgeSpaceId || isInKnowledgeSpace(result.source ?? result.node, knowledgeSpaceId))
103
- .slice(0, clampInt(limit, 10))),
104
- packet: async ({ task, writeScope, limit, detail, budgetLimit }) => mapPacket(await this.service.buildPacket(task, writeScope ?? [], clampInt(limit, 6), {
105
- detail: toPacketDetail(detail),
106
- ...(typeof budgetLimit === 'number' ? { budgetLimit } : {}),
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 ({ limit }) => (await this.service.listProjectionTargets(clampInt(limit, 25))).map((target) => mapProjectionTarget(target)),
112
- projection: async ({ kind, id, limit }) => mapProjectionBundle(await this.service.renderProjection({
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":"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"}
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;AAMpB,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;AAkKD,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,qBAAqB,EAC7B,UAAU,CAAC,EAAE,yBAAyB,GAAG,IAAI,GAC5C,OAAO,CAAC,IAAI,CAAC,CAwGf"}
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":"AAGA,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,CA2EzB;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,WAAW,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;CAC7E,CAqBA;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,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
+ {"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,CAsGpB"}
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,GACT,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;CAAO,GACvF,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;CAAO,GACvF,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;CAAO,GACvF,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;CAAO,GACvF,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
1
+ {"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/packet.ts"],"names":[],"mappings":"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"}
@@ -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
  }