@pellux/goodvibes-sdk 0.27.12 → 0.28.0
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/contracts/artifacts/operator-contract.json +7534 -5938
- package/dist/_internal/contracts/generated/foundation-metadata.d.ts +2 -2
- package/dist/_internal/contracts/generated/foundation-metadata.js +2 -2
- package/dist/_internal/contracts/generated/operator-contract.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-contract.js +7534 -5938
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.js +8 -0
- package/dist/_internal/daemon/context.d.ts +4 -0
- package/dist/_internal/daemon/context.d.ts.map +1 -1
- package/dist/_internal/daemon/index.d.ts +1 -0
- package/dist/_internal/daemon/index.d.ts.map +1 -1
- package/dist/_internal/daemon/index.js +1 -0
- package/dist/_internal/daemon/knowledge-refinement-routes.d.ts +4 -0
- package/dist/_internal/daemon/knowledge-refinement-routes.d.ts.map +1 -0
- package/dist/_internal/daemon/knowledge-refinement-routes.js +57 -0
- package/dist/_internal/daemon/knowledge-route-types.d.ts +4 -0
- package/dist/_internal/daemon/knowledge-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.d.ts +1 -1
- package/dist/_internal/daemon/knowledge-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.js +2 -0
- package/dist/_internal/daemon/operator.d.ts +1 -1
- package/dist/_internal/daemon/operator.d.ts.map +1 -1
- package/dist/_internal/daemon/operator.js +10 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts +4 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-runtime.js +17 -0
- package/dist/_internal/platform/config/schema-types.d.ts +6 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-homegraph.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-homegraph.js +52 -2
- package/dist/_internal/platform/control-plane/method-catalog-knowledge.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-knowledge.js +58 -1
- package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.d.ts +20 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.d.ts.map +1 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-homegraph.js +140 -0
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.d.ts +11 -16
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/operator-contract-schemas-knowledge.js +78 -127
- package/dist/_internal/platform/control-plane/routes/operator.d.ts +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.js +10 -0
- package/dist/_internal/platform/daemon/http/home-graph-routes.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/home-graph-routes.js +32 -0
- package/dist/_internal/platform/daemon/http/openai-compatible-routes.d.ts +10 -0
- package/dist/_internal/platform/daemon/http/openai-compatible-routes.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/http/openai-compatible-routes.js +445 -0
- package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router-route-contexts.js +4 -0
- package/dist/_internal/platform/daemon/http/router.d.ts +1 -0
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +16 -0
- package/dist/_internal/platform/knowledge/home-graph/ask.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/ask.js +1 -0
- package/dist/_internal/platform/knowledge/home-graph/generated-pages.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/generated-pages.js +24 -5
- package/dist/_internal/platform/knowledge/home-graph/inventory.d.ts +23 -0
- package/dist/_internal/platform/knowledge/home-graph/inventory.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/inventory.js +21 -0
- package/dist/_internal/platform/knowledge/home-graph/map-view.d.ts +6 -0
- package/dist/_internal/platform/knowledge/home-graph/map-view.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/map-view.js +11 -0
- package/dist/_internal/platform/knowledge/home-graph/refinement.d.ts +56 -0
- package/dist/_internal/platform/knowledge/home-graph/refinement.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/refinement.js +62 -0
- package/dist/_internal/platform/knowledge/home-graph/rendering.d.ts +3 -3
- package/dist/_internal/platform/knowledge/home-graph/rendering.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/rendering.js +52 -136
- package/dist/_internal/platform/knowledge/home-graph/service.d.ts +46 -0
- package/dist/_internal/platform/knowledge/home-graph/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/home-graph/service.js +21 -42
- package/dist/_internal/platform/knowledge/home-graph/status.d.ts +4 -0
- package/dist/_internal/platform/knowledge/home-graph/status.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/home-graph/status.js +43 -0
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts +7 -0
- package/dist/_internal/platform/knowledge/home-graph/types.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/index.d.ts +1 -1
- package/dist/_internal/platform/knowledge/index.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/scheduling.js +1 -1
- package/dist/_internal/platform/knowledge/semantic/answer.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/semantic/answer.js +69 -9
- package/dist/_internal/platform/knowledge/semantic/gap-repair.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/semantic/gap-repair.js +46 -9
- package/dist/_internal/platform/knowledge/semantic/self-improvement.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/semantic/self-improvement.js +125 -5
- package/dist/_internal/platform/knowledge/semantic/service.d.ts +1 -2
- package/dist/_internal/platform/knowledge/semantic/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/semantic/service.js +51 -54
- package/dist/_internal/platform/knowledge/semantic/types.d.ts +12 -0
- package/dist/_internal/platform/knowledge/semantic/types.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/service-jobs.d.ts +34 -0
- package/dist/_internal/platform/knowledge/service-jobs.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/service-jobs.js +64 -0
- package/dist/_internal/platform/knowledge/service.d.ts +17 -1
- package/dist/_internal/platform/knowledge/service.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/service.js +52 -69
- package/dist/_internal/platform/knowledge/store-config.d.ts +8 -0
- package/dist/_internal/platform/knowledge/store-config.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/store-config.js +10 -0
- package/dist/_internal/platform/knowledge/store-load.d.ts +2 -1
- package/dist/_internal/platform/knowledge/store-load.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store-load.js +2 -1
- package/dist/_internal/platform/knowledge/store-read.d.ts +10 -1
- package/dist/_internal/platform/knowledge/store-read.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store-read.js +14 -0
- package/dist/_internal/platform/knowledge/store-refinement.d.ts +4 -0
- package/dist/_internal/platform/knowledge/store-refinement.d.ts.map +1 -0
- package/dist/_internal/platform/knowledge/store-refinement.js +69 -0
- package/dist/_internal/platform/knowledge/store-schema.d.ts +2 -1
- package/dist/_internal/platform/knowledge/store-schema.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store-schema.js +48 -0
- package/dist/_internal/platform/knowledge/store.d.ts +6 -7
- package/dist/_internal/platform/knowledge/store.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store.js +18 -13
- package/dist/_internal/platform/knowledge/types.d.ts +56 -0
- package/dist/_internal/platform/knowledge/types.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/turn.d.ts +6 -2
- package/dist/_internal/platform/runtime/emitters/turn.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/turn.js +4 -4
- package/dist/_internal/platform/runtime/events/turn.d.ts +12 -2
- package/dist/_internal/platform/runtime/events/turn.d.ts.map +1 -1
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ import { ingestKnowledgeArtifact, ingestKnowledgeBookmarkSeeds, ingestKnowledgeC
|
|
|
12
12
|
import { decideKnowledgeConsolidationCandidate, runKnowledgeConsolidation, } from './consolidation.js';
|
|
13
13
|
import { reviewKnowledgeIssue, } from './review.js';
|
|
14
14
|
import { KnowledgeScheduleService } from './scheduling.js';
|
|
15
|
+
import { runKnowledgeServiceJobByKind } from './service-jobs.js';
|
|
15
16
|
import { lintKnowledgeStore } from './lint.js';
|
|
16
17
|
import { syncKnowledgeMemoryNodes } from './memory-sync.js';
|
|
17
18
|
import { emitKnowledgeExtractionCompleted, emitKnowledgeExtractionFailed, emitKnowledgeIngestCompleted, emitKnowledgeIngestFailed, emitKnowledgeIngestStarted, emitKnowledgePacketBuilt, emitKnowledgeProjectionMaterialized, emitKnowledgeProjectionRendered, } from '../runtime/emitters/index.js';
|
|
@@ -377,79 +378,61 @@ export class KnowledgeService {
|
|
|
377
378
|
listJobRuns(limit = 100, jobId) {
|
|
378
379
|
return this.scheduleService.listJobRuns(limit, jobId);
|
|
379
380
|
}
|
|
381
|
+
listRefinementTasks(limit = 100, input = {}) {
|
|
382
|
+
return this.store.listRefinementTasks(limit, input);
|
|
383
|
+
}
|
|
384
|
+
getRefinementTask(id) {
|
|
385
|
+
return this.store.getRefinementTask(id);
|
|
386
|
+
}
|
|
387
|
+
async cancelRefinementTask(id) {
|
|
388
|
+
const task = this.store.getRefinementTask(id);
|
|
389
|
+
if (!task)
|
|
390
|
+
return null;
|
|
391
|
+
return this.store.upsertRefinementTask({
|
|
392
|
+
id: task.id,
|
|
393
|
+
spaceId: task.spaceId,
|
|
394
|
+
subjectKind: task.subjectKind,
|
|
395
|
+
subjectId: task.subjectId,
|
|
396
|
+
subjectTitle: task.subjectTitle,
|
|
397
|
+
subjectType: task.subjectType,
|
|
398
|
+
gapId: task.gapId,
|
|
399
|
+
issueId: task.issueId,
|
|
400
|
+
state: 'cancelled',
|
|
401
|
+
priority: task.priority,
|
|
402
|
+
trigger: task.trigger,
|
|
403
|
+
budget: task.budget,
|
|
404
|
+
attemptCount: task.attemptCount,
|
|
405
|
+
appendTrace: [{
|
|
406
|
+
at: Date.now(),
|
|
407
|
+
state: 'cancelled',
|
|
408
|
+
message: 'Refinement task was cancelled by request.',
|
|
409
|
+
}],
|
|
410
|
+
metadata: task.metadata,
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
async runRefinement(input = {}) {
|
|
414
|
+
return this.semanticService.selfImprove({
|
|
415
|
+
knowledgeSpaceId: input.knowledgeSpaceId,
|
|
416
|
+
gapIds: input.gapIds,
|
|
417
|
+
sourceIds: input.sourceIds,
|
|
418
|
+
limit: input.limit,
|
|
419
|
+
force: input.force,
|
|
420
|
+
reason: 'manual',
|
|
421
|
+
});
|
|
422
|
+
}
|
|
380
423
|
async runJob(id, input = {}) {
|
|
381
424
|
return this.scheduleService.runJob(id, input);
|
|
382
425
|
}
|
|
383
426
|
async runJobByKind(kind, input) {
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
case 'refresh-stale': {
|
|
394
|
-
const refreshed = await refreshKnowledgeSources(this.getIngestContext(), pickKnowledgeRefreshCandidates({ store: this.store }, 'stale', input.sourceIds, input.limit));
|
|
395
|
-
return { refreshed };
|
|
396
|
-
}
|
|
397
|
-
case 'refresh-bookmarks': {
|
|
398
|
-
const refreshed = await refreshKnowledgeSources(this.getIngestContext(), pickKnowledgeRefreshCandidates({ store: this.store }, 'bookmark', input.sourceIds, input.limit));
|
|
399
|
-
return { refreshed };
|
|
400
|
-
}
|
|
401
|
-
case 'sync-browser-history': {
|
|
402
|
-
const result = await this.syncBrowserHistory({
|
|
403
|
-
limit: input.limit,
|
|
404
|
-
});
|
|
405
|
-
return {
|
|
406
|
-
imported: result.imported,
|
|
407
|
-
failed: result.failed,
|
|
408
|
-
profileCount: result.profiles.length,
|
|
409
|
-
errorCount: result.errors.length,
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
case 'rebuild-projections': {
|
|
413
|
-
const overview = await this.materializeProjection({ kind: 'overview', limit: Math.max(8, input.limit ?? 12) });
|
|
414
|
-
const bundle = await this.materializeProjection({ kind: 'bundle', limit: Math.max(12, input.limit ?? 18) });
|
|
415
|
-
return {
|
|
416
|
-
projections: [
|
|
417
|
-
{ targetId: overview.bundle.target.targetId, artifactId: overview.artifact.id },
|
|
418
|
-
{ targetId: bundle.bundle.target.targetId, artifactId: bundle.artifact.id },
|
|
419
|
-
],
|
|
420
|
-
};
|
|
421
|
-
}
|
|
422
|
-
case 'semantic-enrichment': {
|
|
423
|
-
return this.semanticService.reindex({
|
|
424
|
-
sourceIds: input.sourceIds,
|
|
425
|
-
limit: input.limit,
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
case 'semantic-self-improvement': {
|
|
429
|
-
const result = await this.semanticService.selfImprove({
|
|
430
|
-
sourceIds: input.sourceIds,
|
|
431
|
-
limit: input.limit,
|
|
432
|
-
reason: 'scheduled',
|
|
433
|
-
});
|
|
434
|
-
return { ...result };
|
|
435
|
-
}
|
|
436
|
-
case 'light-consolidation': {
|
|
437
|
-
const report = await runKnowledgeConsolidation(this.getConsolidationContext(), 'light-consolidation', {
|
|
438
|
-
limit: input.limit,
|
|
439
|
-
autoPromote: false,
|
|
440
|
-
});
|
|
441
|
-
return { reportId: report.id, metrics: report.metrics };
|
|
442
|
-
}
|
|
443
|
-
case 'deep-consolidation': {
|
|
444
|
-
const report = await runKnowledgeConsolidation(this.getConsolidationContext(), 'deep-consolidation', {
|
|
445
|
-
limit: input.limit,
|
|
446
|
-
autoPromote: true,
|
|
447
|
-
});
|
|
448
|
-
return { reportId: report.id, metrics: report.metrics };
|
|
449
|
-
}
|
|
450
|
-
default:
|
|
451
|
-
return {};
|
|
452
|
-
}
|
|
427
|
+
return runKnowledgeServiceJobByKind(kind, input, {
|
|
428
|
+
lint: () => lintKnowledgeStore({ store: this.store, emitIfReady: this.emitIfReady.bind(this) }),
|
|
429
|
+
reindex: () => this.reindex(),
|
|
430
|
+
refreshSources: async (refreshKind, sourceIds, limit) => refreshKnowledgeSources(this.getIngestContext(), pickKnowledgeRefreshCandidates({ store: this.store }, refreshKind, sourceIds, limit)),
|
|
431
|
+
syncBrowserHistory: (options) => this.syncBrowserHistory(options),
|
|
432
|
+
materializeProjection: (options) => this.materializeProjection(options),
|
|
433
|
+
semanticService: this.semanticService,
|
|
434
|
+
runConsolidation: (jobKind, options) => runKnowledgeConsolidation(this.getConsolidationContext(), jobKind, options),
|
|
435
|
+
});
|
|
453
436
|
}
|
|
454
437
|
deferUsage(input) {
|
|
455
438
|
queueMicrotask(() => {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface KnowledgeStoreConfig {
|
|
2
|
+
readonly dbPath?: string;
|
|
3
|
+
readonly configManager?: {
|
|
4
|
+
getControlPlaneConfigDir?: () => string;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveKnowledgeDbPath(config: KnowledgeStoreConfig): string;
|
|
8
|
+
//# sourceMappingURL=store-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-config.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,wBAAwB,CAAC,EAAE,MAAM,MAAM,CAAC;KACzC,CAAC;CACH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAO3E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { resolveKnowledgeDbPathFromControlPlaneDir } from './store-schema.js';
|
|
2
|
+
export function resolveKnowledgeDbPath(config) {
|
|
3
|
+
const controlPlaneDir = typeof config.configManager?.getControlPlaneConfigDir === 'function'
|
|
4
|
+
? config.configManager.getControlPlaneConfigDir()
|
|
5
|
+
: undefined;
|
|
6
|
+
const dbPath = config.dbPath ?? (controlPlaneDir ? resolveKnowledgeDbPathFromControlPlaneDir(controlPlaneDir) : undefined);
|
|
7
|
+
if (!dbPath)
|
|
8
|
+
throw new Error('KnowledgeStore requires an explicit dbPath or configManager.getControlPlaneConfigDir().');
|
|
9
|
+
return dbPath;
|
|
10
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SQLiteStore } from '../state/sqlite-store.js';
|
|
2
|
-
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeIssueRecord, KnowledgeJobRunRecord, KnowledgeNodeRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeUsageRecord } from './types.js';
|
|
2
|
+
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeIssueRecord, KnowledgeJobRunRecord, KnowledgeNodeRecord, KnowledgeRefinementTaskRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeUsageRecord } from './types.js';
|
|
3
3
|
export interface KnowledgeStoreSnapshot {
|
|
4
4
|
readonly sources: KnowledgeSourceRecord[];
|
|
5
5
|
readonly nodes: KnowledgeNodeRecord[];
|
|
@@ -7,6 +7,7 @@ export interface KnowledgeStoreSnapshot {
|
|
|
7
7
|
readonly issues: KnowledgeIssueRecord[];
|
|
8
8
|
readonly extractions: KnowledgeExtractionRecord[];
|
|
9
9
|
readonly jobRuns: KnowledgeJobRunRecord[];
|
|
10
|
+
readonly refinementTasks: KnowledgeRefinementTaskRecord[];
|
|
10
11
|
readonly usageRecords: KnowledgeUsageRecord[];
|
|
11
12
|
readonly consolidationCandidates: KnowledgeConsolidationCandidateRecord[];
|
|
12
13
|
readonly consolidationReports: KnowledgeConsolidationReportRecord[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-load.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"store-load.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAc5D,OAAO,KAAK,EACV,qCAAqC,EACrC,kCAAkC,EAClC,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,EAAE,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,6BAA6B,EAAE,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IAC9C,QAAQ,CAAC,uBAAuB,EAAE,qCAAqC,EAAE,CAAC;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,kCAAkC,EAAE,CAAC;IACpE,QAAQ,CAAC,SAAS,EAAE,uBAAuB,EAAE,CAAC;CAC/C;AAQD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,CActF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mapCandidateRow, mapEdgeRow, mapExtractionRow, mapIssueRow, mapJobRunRow, mapNodeRow, mapReportRow, mapScheduleRow, mapSourceRow, mapUsageRow, } from './store-schema.js';
|
|
1
|
+
import { mapCandidateRow, mapEdgeRow, mapExtractionRow, mapIssueRow, mapJobRunRow, mapNodeRow, mapRefinementTaskRow, mapReportRow, mapScheduleRow, mapSourceRow, mapUsageRow, } from './store-schema.js';
|
|
2
2
|
function loadRows(sqlite, sql, mapRow) {
|
|
3
3
|
const rows = sqlite.exec(sql);
|
|
4
4
|
if (!rows.length)
|
|
@@ -13,6 +13,7 @@ export function loadKnowledgeStoreSnapshot(sqlite) {
|
|
|
13
13
|
issues: loadRows(sqlite, 'SELECT * FROM knowledge_issues', mapIssueRow),
|
|
14
14
|
extractions: loadRows(sqlite, 'SELECT * FROM knowledge_extractions', mapExtractionRow),
|
|
15
15
|
jobRuns: loadRows(sqlite, 'SELECT * FROM knowledge_job_runs', mapJobRunRow),
|
|
16
|
+
refinementTasks: loadRows(sqlite, 'SELECT * FROM knowledge_refinement_tasks', mapRefinementTaskRow),
|
|
16
17
|
usageRecords: loadRows(sqlite, 'SELECT * FROM knowledge_usage_records', mapUsageRow),
|
|
17
18
|
consolidationCandidates: loadRows(sqlite, 'SELECT * FROM knowledge_consolidation_candidates', mapCandidateRow),
|
|
18
19
|
consolidationReports: loadRows(sqlite, 'SELECT * FROM knowledge_consolidation_reports', mapReportRow),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { KnowledgeEdgeRecord, KnowledgeItemView, KnowledgeIssueRecord, KnowledgeJobRunRecord, KnowledgeNodeRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeStatus, KnowledgeUsageRecord, KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeExtractionRecord } from './types.js';
|
|
1
|
+
import type { KnowledgeEdgeRecord, KnowledgeItemView, KnowledgeIssueRecord, KnowledgeJobRunRecord, KnowledgeRefinementTaskRecord, KnowledgeNodeRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeStatus, KnowledgeUsageRecord, KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeExtractionRecord } from './types.js';
|
|
2
2
|
export interface KnowledgeStoreReadView {
|
|
3
3
|
readonly ready: boolean;
|
|
4
4
|
readonly dbPath: string;
|
|
@@ -8,6 +8,7 @@ export interface KnowledgeStoreReadView {
|
|
|
8
8
|
readonly issues: Map<string, KnowledgeIssueRecord>;
|
|
9
9
|
readonly extractions: Map<string, KnowledgeExtractionRecord>;
|
|
10
10
|
readonly jobRuns: Map<string, KnowledgeJobRunRecord>;
|
|
11
|
+
readonly refinementTasks: Map<string, KnowledgeRefinementTaskRecord>;
|
|
11
12
|
readonly usageRecords: Map<string, KnowledgeUsageRecord>;
|
|
12
13
|
readonly consolidationCandidates: Map<string, KnowledgeConsolidationCandidateRecord>;
|
|
13
14
|
readonly consolidationReports: Map<string, KnowledgeConsolidationReportRecord>;
|
|
@@ -20,6 +21,13 @@ export declare function listKnowledgeEdges(view: KnowledgeStoreReadView): Knowle
|
|
|
20
21
|
export declare function listKnowledgeIssues(view: KnowledgeStoreReadView, limit?: number): KnowledgeIssueRecord[];
|
|
21
22
|
export declare function listKnowledgeExtractions(view: KnowledgeStoreReadView, limit?: number): KnowledgeExtractionRecord[];
|
|
22
23
|
export declare function listKnowledgeJobRuns(view: KnowledgeStoreReadView, limit?: number, jobId?: string): KnowledgeJobRunRecord[];
|
|
24
|
+
export declare function listKnowledgeRefinementTasks(view: KnowledgeStoreReadView, limit?: number, input?: {
|
|
25
|
+
readonly spaceId?: string;
|
|
26
|
+
readonly state?: string;
|
|
27
|
+
readonly subjectKind?: string;
|
|
28
|
+
readonly subjectId?: string;
|
|
29
|
+
readonly gapId?: string;
|
|
30
|
+
}): KnowledgeRefinementTaskRecord[];
|
|
23
31
|
export declare function listKnowledgeUsageRecords(view: KnowledgeStoreReadView, limit?: number, input?: {
|
|
24
32
|
readonly targetKind?: KnowledgeUsageRecord['targetKind'];
|
|
25
33
|
readonly targetId?: string;
|
|
@@ -38,6 +46,7 @@ export declare function getKnowledgeIssue(view: KnowledgeStoreReadView, id: stri
|
|
|
38
46
|
export declare function getKnowledgeExtraction(view: KnowledgeStoreReadView, id: string): KnowledgeExtractionRecord | null;
|
|
39
47
|
export declare function getKnowledgeExtractionBySourceId(view: KnowledgeStoreReadView, sourceId: string): KnowledgeExtractionRecord | null;
|
|
40
48
|
export declare function getKnowledgeJobRun(view: KnowledgeStoreReadView, id: string): KnowledgeJobRunRecord | null;
|
|
49
|
+
export declare function getKnowledgeRefinementTask(view: KnowledgeStoreReadView, id: string): KnowledgeRefinementTaskRecord | null;
|
|
41
50
|
export declare function getKnowledgeUsageRecord(view: KnowledgeStoreReadView, id: string): KnowledgeUsageRecord | null;
|
|
42
51
|
export declare function getKnowledgeConsolidationCandidate(view: KnowledgeStoreReadView, id: string): KnowledgeConsolidationCandidateRecord | null;
|
|
43
52
|
export declare function getKnowledgeConsolidationCandidateBySubject(view: KnowledgeStoreReadView, subjectKind: KnowledgeConsolidationCandidateRecord['subjectKind'], subjectId: string, candidateType: KnowledgeConsolidationCandidateRecord['candidateType']): KnowledgeConsolidationCandidateRecord | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-read.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,qCAAqC,EACrC,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;IACrF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC/E,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CAC1D;AAsBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"store-read.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export function getKnowledgeStoreStatus(view) {
|
|
|
23
23
|
issueCount: view.issues.size,
|
|
24
24
|
extractionCount: view.extractions.size,
|
|
25
25
|
jobRunCount: view.jobRuns.size,
|
|
26
|
+
refinementTaskCount: view.refinementTasks.size,
|
|
26
27
|
usageCount: view.usageRecords.size,
|
|
27
28
|
candidateCount: view.consolidationCandidates.size,
|
|
28
29
|
reportCount: view.consolidationReports.size,
|
|
@@ -58,6 +59,16 @@ export function listKnowledgeJobRuns(view, limit = 100, jobId) {
|
|
|
58
59
|
.sort(byRequestedAtDesc)
|
|
59
60
|
.slice(0, sliceLimit(limit));
|
|
60
61
|
}
|
|
62
|
+
export function listKnowledgeRefinementTasks(view, limit = 100, input = {}) {
|
|
63
|
+
return [...view.refinementTasks.values()]
|
|
64
|
+
.filter((task) => ((!input.spaceId || task.spaceId === input.spaceId)
|
|
65
|
+
&& (!input.state || task.state === input.state)
|
|
66
|
+
&& (!input.subjectKind || task.subjectKind === input.subjectKind)
|
|
67
|
+
&& (!input.subjectId || task.subjectId === input.subjectId)
|
|
68
|
+
&& (!input.gapId || task.gapId === input.gapId)))
|
|
69
|
+
.sort(byUpdatedAtDesc)
|
|
70
|
+
.slice(0, sliceLimit(limit));
|
|
71
|
+
}
|
|
61
72
|
export function listKnowledgeUsageRecords(view, limit = 100, input = {}) {
|
|
62
73
|
return [...view.usageRecords.values()]
|
|
63
74
|
.filter((record) => ((!input.targetKind || record.targetKind === input.targetKind)
|
|
@@ -106,6 +117,9 @@ export function getKnowledgeExtractionBySourceId(view, sourceId) {
|
|
|
106
117
|
export function getKnowledgeJobRun(view, id) {
|
|
107
118
|
return view.jobRuns.get(id) ?? null;
|
|
108
119
|
}
|
|
120
|
+
export function getKnowledgeRefinementTask(view, id) {
|
|
121
|
+
return view.refinementTasks.get(id) ?? null;
|
|
122
|
+
}
|
|
109
123
|
export function getKnowledgeUsageRecord(view, id) {
|
|
110
124
|
return view.usageRecords.get(id) ?? null;
|
|
111
125
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SQLiteStore } from '../state/sqlite-store.js';
|
|
2
|
+
import type { KnowledgeRefinementTaskRecord, KnowledgeRefinementTaskUpsertInput } from './types.js';
|
|
3
|
+
export declare function upsertKnowledgeRefinementTask(sqlite: SQLiteStore, refinementTasks: Map<string, KnowledgeRefinementTaskRecord>, input: KnowledgeRefinementTaskUpsertInput, createId: () => string): Promise<KnowledgeRefinementTaskRecord>;
|
|
4
|
+
//# sourceMappingURL=store-refinement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-refinement.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-refinement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EACV,6BAA6B,EAC7B,kCAAkC,EACnC,MAAM,YAAY,CAAC;AAEpB,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,EAC3D,KAAK,EAAE,kCAAkC,EACzC,QAAQ,EAAE,MAAM,MAAM,GACrB,OAAO,CAAC,6BAA6B,CAAC,CAmExC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { nowMs, stableText } from './store-schema.js';
|
|
2
|
+
export async function upsertKnowledgeRefinementTask(sqlite, refinementTasks, input, createId) {
|
|
3
|
+
const existing = input.id ? refinementTasks.get(input.id) : null;
|
|
4
|
+
const now = nowMs();
|
|
5
|
+
const _subjectKind = stableText(input.subjectKind);
|
|
6
|
+
const _subjectId = stableText(input.subjectId);
|
|
7
|
+
const _subjectTitle = stableText(input.subjectTitle);
|
|
8
|
+
const _subjectType = stableText(input.subjectType);
|
|
9
|
+
const _gapId = stableText(input.gapId);
|
|
10
|
+
const _issueId = stableText(input.issueId);
|
|
11
|
+
const _blockedReason = stableText(input.blockedReason);
|
|
12
|
+
const replacementTrace = input.trace ? [...input.trace] : existing?.trace ?? [];
|
|
13
|
+
const trace = [...replacementTrace, ...(input.appendTrace ?? [])].slice(-80);
|
|
14
|
+
const record = {
|
|
15
|
+
id: existing?.id ?? input.id ?? createId(),
|
|
16
|
+
spaceId: input.spaceId,
|
|
17
|
+
...(_subjectKind !== null ? { subjectKind: _subjectKind } : existing?.subjectKind ? { subjectKind: existing.subjectKind } : {}),
|
|
18
|
+
...(_subjectId !== null ? { subjectId: _subjectId } : existing?.subjectId ? { subjectId: existing.subjectId } : {}),
|
|
19
|
+
...(_subjectTitle !== null ? { subjectTitle: _subjectTitle } : existing?.subjectTitle ? { subjectTitle: existing.subjectTitle } : {}),
|
|
20
|
+
...(_subjectType !== null ? { subjectType: _subjectType } : existing?.subjectType ? { subjectType: existing.subjectType } : {}),
|
|
21
|
+
...(_gapId !== null ? { gapId: _gapId } : existing?.gapId ? { gapId: existing.gapId } : {}),
|
|
22
|
+
...(_issueId !== null ? { issueId: _issueId } : existing?.issueId ? { issueId: existing.issueId } : {}),
|
|
23
|
+
state: input.state,
|
|
24
|
+
priority: input.priority ?? existing?.priority ?? 'normal',
|
|
25
|
+
trigger: input.trigger,
|
|
26
|
+
budget: {
|
|
27
|
+
...(existing?.budget ?? {}),
|
|
28
|
+
...(input.budget ?? {}),
|
|
29
|
+
},
|
|
30
|
+
attemptCount: Math.max(0, Math.trunc(input.attemptCount ?? existing?.attemptCount ?? 0)),
|
|
31
|
+
...(_blockedReason !== null ? { blockedReason: _blockedReason } : existing?.blockedReason && input.state === existing.state ? { blockedReason: existing.blockedReason } : {}),
|
|
32
|
+
trace,
|
|
33
|
+
metadata: {
|
|
34
|
+
...(existing?.metadata ?? {}),
|
|
35
|
+
...(input.metadata ?? {}),
|
|
36
|
+
},
|
|
37
|
+
createdAt: existing?.createdAt ?? now,
|
|
38
|
+
updatedAt: now,
|
|
39
|
+
};
|
|
40
|
+
sqlite.run(`
|
|
41
|
+
INSERT OR REPLACE INTO knowledge_refinement_tasks (
|
|
42
|
+
id, space_id, subject_kind, subject_id, subject_title, subject_type, gap_id,
|
|
43
|
+
issue_id, state, priority, trigger, budget, attempt_count, blocked_reason,
|
|
44
|
+
trace, metadata, created_at, updated_at
|
|
45
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
46
|
+
`, [
|
|
47
|
+
record.id,
|
|
48
|
+
record.spaceId,
|
|
49
|
+
record.subjectKind ?? null,
|
|
50
|
+
record.subjectId ?? null,
|
|
51
|
+
record.subjectTitle ?? null,
|
|
52
|
+
record.subjectType ?? null,
|
|
53
|
+
record.gapId ?? null,
|
|
54
|
+
record.issueId ?? null,
|
|
55
|
+
record.state,
|
|
56
|
+
record.priority,
|
|
57
|
+
record.trigger,
|
|
58
|
+
JSON.stringify(record.budget),
|
|
59
|
+
record.attemptCount,
|
|
60
|
+
record.blockedReason ?? null,
|
|
61
|
+
JSON.stringify(record.trace),
|
|
62
|
+
JSON.stringify(record.metadata),
|
|
63
|
+
record.createdAt,
|
|
64
|
+
record.updatedAt,
|
|
65
|
+
]);
|
|
66
|
+
refinementTasks.set(record.id, record);
|
|
67
|
+
await sqlite.save();
|
|
68
|
+
return record;
|
|
69
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeIssueRecord, KnowledgeIssueUpsertInput, KnowledgeJobRunRecord, KnowledgeNodeRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeUsageRecord } from './types.js';
|
|
1
|
+
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeIssueRecord, KnowledgeIssueUpsertInput, KnowledgeJobRunRecord, KnowledgeNodeRecord, KnowledgeScheduleRecord, KnowledgeSourceRecord, KnowledgeRefinementTaskRecord, KnowledgeUsageRecord } from './types.js';
|
|
2
2
|
export declare function resolveKnowledgeDbPathFromControlPlaneDir(controlPlaneDir: string): string;
|
|
3
3
|
export declare function nowMs(): number;
|
|
4
4
|
export declare function stableText(value: string | undefined): string | null;
|
|
@@ -16,6 +16,7 @@ export declare function mapEdgeRow(columns: string[], values: unknown[]): Knowle
|
|
|
16
16
|
export declare function mapIssueRow(columns: string[], values: unknown[]): KnowledgeIssueRecord;
|
|
17
17
|
export declare function mapExtractionRow(columns: string[], values: unknown[]): KnowledgeExtractionRecord;
|
|
18
18
|
export declare function mapJobRunRow(columns: string[], values: unknown[]): KnowledgeJobRunRecord;
|
|
19
|
+
export declare function mapRefinementTaskRow(columns: string[], values: unknown[]): KnowledgeRefinementTaskRecord;
|
|
19
20
|
export declare function mapUsageRow(columns: string[], values: unknown[]): KnowledgeUsageRecord;
|
|
20
21
|
export declare function mapCandidateRow(columns: string[], values: unknown[]): KnowledgeConsolidationCandidateRecord;
|
|
21
22
|
export declare function mapReportRow(columns: string[], values: unknown[]): KnowledgeConsolidationReportRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-schema.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qCAAqC,EACrC,kCAAkC,EAClC,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"store-schema.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qCAAqC,EACrC,kCAAkC,EAClC,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EAOrB,6BAA6B,EAQ7B,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,yCAAyC,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAEzF;AAED,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAInE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EACjD,KAAK,EAAE,yBAAyB,GAC/B,oBAAoB,CAAC,QAAQ,CAAC,CAOhC;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAWpE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAOhE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CA4MjE;AAED,wBAAgB,4BAA4B,IAAI,SAAS,MAAM,EAAE,CAShE;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAIjD;AAMD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAuBxF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAgBpF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAcpF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CActF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,yBAAyB,CAmBhG;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAgBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,6BAA6B,CAsBxG;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAatF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,qCAAqC,CAoB3G;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,kCAAkC,CAarG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAc5F"}
|
|
@@ -158,6 +158,31 @@ export function createSchema(db) {
|
|
|
158
158
|
db.run(`CREATE INDEX IF NOT EXISTS idx_knowledge_job_runs_job_id ON knowledge_job_runs(job_id)`);
|
|
159
159
|
db.run(`CREATE INDEX IF NOT EXISTS idx_knowledge_job_runs_requested_at ON knowledge_job_runs(requested_at)`);
|
|
160
160
|
db.run(`
|
|
161
|
+
CREATE TABLE IF NOT EXISTS knowledge_refinement_tasks (
|
|
162
|
+
id TEXT PRIMARY KEY,
|
|
163
|
+
space_id TEXT NOT NULL,
|
|
164
|
+
subject_kind TEXT,
|
|
165
|
+
subject_id TEXT,
|
|
166
|
+
subject_title TEXT,
|
|
167
|
+
subject_type TEXT,
|
|
168
|
+
gap_id TEXT,
|
|
169
|
+
issue_id TEXT,
|
|
170
|
+
state TEXT NOT NULL,
|
|
171
|
+
priority TEXT NOT NULL,
|
|
172
|
+
trigger TEXT NOT NULL,
|
|
173
|
+
budget TEXT NOT NULL DEFAULT '{}',
|
|
174
|
+
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
175
|
+
blocked_reason TEXT,
|
|
176
|
+
trace TEXT NOT NULL DEFAULT '[]',
|
|
177
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
178
|
+
created_at INTEGER NOT NULL,
|
|
179
|
+
updated_at INTEGER NOT NULL
|
|
180
|
+
)
|
|
181
|
+
`);
|
|
182
|
+
db.run(`CREATE INDEX IF NOT EXISTS idx_knowledge_refinement_space_state ON knowledge_refinement_tasks(space_id, state)`);
|
|
183
|
+
db.run(`CREATE INDEX IF NOT EXISTS idx_knowledge_refinement_gap ON knowledge_refinement_tasks(gap_id)`);
|
|
184
|
+
db.run(`CREATE INDEX IF NOT EXISTS idx_knowledge_refinement_subject ON knowledge_refinement_tasks(subject_kind, subject_id)`);
|
|
185
|
+
db.run(`
|
|
161
186
|
CREATE TABLE IF NOT EXISTS knowledge_usage_records (
|
|
162
187
|
id TEXT PRIMARY KEY,
|
|
163
188
|
target_kind TEXT NOT NULL,
|
|
@@ -351,6 +376,29 @@ export function mapJobRunRow(columns, values) {
|
|
|
351
376
|
updatedAt: Number(row.updated_at),
|
|
352
377
|
};
|
|
353
378
|
}
|
|
379
|
+
export function mapRefinementTaskRow(columns, values) {
|
|
380
|
+
const row = rowObject(columns, values);
|
|
381
|
+
return {
|
|
382
|
+
id: String(row.id),
|
|
383
|
+
spaceId: String(row.space_id),
|
|
384
|
+
...(stableText(row.subject_kind) ? { subjectKind: String(row.subject_kind) } : {}),
|
|
385
|
+
...(stableText(row.subject_id) ? { subjectId: String(row.subject_id) } : {}),
|
|
386
|
+
...(stableText(row.subject_title) ? { subjectTitle: String(row.subject_title) } : {}),
|
|
387
|
+
...(stableText(row.subject_type) ? { subjectType: String(row.subject_type) } : {}),
|
|
388
|
+
...(stableText(row.gap_id) ? { gapId: String(row.gap_id) } : {}),
|
|
389
|
+
...(stableText(row.issue_id) ? { issueId: String(row.issue_id) } : {}),
|
|
390
|
+
state: String(row.state),
|
|
391
|
+
priority: String(row.priority),
|
|
392
|
+
trigger: String(row.trigger),
|
|
393
|
+
budget: parseJsonValue(row.budget, {}),
|
|
394
|
+
attemptCount: Number(row.attempt_count),
|
|
395
|
+
...(stableText(row.blocked_reason) ? { blockedReason: String(row.blocked_reason) } : {}),
|
|
396
|
+
trace: parseJsonValue(row.trace, []),
|
|
397
|
+
metadata: parseJsonValue(row.metadata, {}),
|
|
398
|
+
createdAt: Number(row.created_at),
|
|
399
|
+
updatedAt: Number(row.updated_at),
|
|
400
|
+
};
|
|
401
|
+
}
|
|
354
402
|
export function mapUsageRow(columns, values) {
|
|
355
403
|
const row = rowObject(columns, values);
|
|
356
404
|
return {
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationCandidateUpsertInput, KnowledgeConsolidationReportRecord, KnowledgeConsolidationReportUpsertInput, KnowledgeEdgeRecord, KnowledgeEdgeUpsertInput, KnowledgeExtractionRecord, KnowledgeExtractionUpsertInput, KnowledgeIssueRecord, KnowledgeIssueUpsertInput, KnowledgeItemView, KnowledgeJobRunRecord, KnowledgeJobRunUpsertInput, KnowledgeNodeRecord, KnowledgeNodeUpsertInput, KnowledgeScheduleRecord, KnowledgeScheduleUpsertInput, KnowledgeSourceRecord, KnowledgeSourceUpsertInput, KnowledgeStatus, KnowledgeUsageRecord, KnowledgeUsageUpsertInput } from './types.js';
|
|
2
|
-
|
|
3
|
-
readonly dbPath?: string;
|
|
4
|
-
readonly configManager?: {
|
|
5
|
-
getControlPlaneConfigDir?: () => string;
|
|
6
|
-
};
|
|
7
|
-
}
|
|
1
|
+
import type { KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationCandidateUpsertInput, KnowledgeConsolidationReportRecord, KnowledgeConsolidationReportUpsertInput, KnowledgeEdgeRecord, KnowledgeEdgeUpsertInput, KnowledgeExtractionRecord, KnowledgeExtractionUpsertInput, KnowledgeIssueRecord, KnowledgeIssueUpsertInput, KnowledgeItemView, KnowledgeJobRunRecord, KnowledgeJobRunUpsertInput, KnowledgeRefinementTaskFilter, KnowledgeRefinementTaskRecord, KnowledgeRefinementTaskUpsertInput, KnowledgeNodeRecord, KnowledgeNodeUpsertInput, KnowledgeScheduleRecord, KnowledgeScheduleUpsertInput, KnowledgeSourceRecord, KnowledgeSourceUpsertInput, KnowledgeStatus, KnowledgeUsageRecord, KnowledgeUsageUpsertInput } from './types.js';
|
|
2
|
+
import { type KnowledgeStoreConfig } from './store-config.js';
|
|
8
3
|
export declare class KnowledgeStore {
|
|
9
4
|
private readonly sqlite;
|
|
10
5
|
private readonly dbPath;
|
|
@@ -16,6 +11,7 @@ export declare class KnowledgeStore {
|
|
|
16
11
|
private readonly issues;
|
|
17
12
|
private readonly extractions;
|
|
18
13
|
private readonly jobRuns;
|
|
14
|
+
private readonly refinementTasks;
|
|
19
15
|
private readonly usageRecords;
|
|
20
16
|
private readonly consolidationCandidates;
|
|
21
17
|
private readonly consolidationReports;
|
|
@@ -32,6 +28,7 @@ export declare class KnowledgeStore {
|
|
|
32
28
|
listIssues(limit?: number): KnowledgeIssueRecord[];
|
|
33
29
|
listExtractions(limit?: number): KnowledgeExtractionRecord[];
|
|
34
30
|
listJobRuns(limit?: number, jobId?: string): KnowledgeJobRunRecord[];
|
|
31
|
+
listRefinementTasks(limit?: number, input?: KnowledgeRefinementTaskFilter): KnowledgeRefinementTaskRecord[];
|
|
35
32
|
listUsageRecords(limit?: number, input?: {
|
|
36
33
|
readonly targetKind?: KnowledgeUsageRecord['targetKind'];
|
|
37
34
|
readonly targetId?: string;
|
|
@@ -50,6 +47,7 @@ export declare class KnowledgeStore {
|
|
|
50
47
|
getExtraction(id: string): KnowledgeExtractionRecord | null;
|
|
51
48
|
getExtractionBySourceId(sourceId: string): KnowledgeExtractionRecord | null;
|
|
52
49
|
getJobRun(id: string): KnowledgeJobRunRecord | null;
|
|
50
|
+
getRefinementTask(id: string): KnowledgeRefinementTaskRecord | null;
|
|
53
51
|
getUsageRecord(id: string): KnowledgeUsageRecord | null;
|
|
54
52
|
getConsolidationCandidate(id: string): KnowledgeConsolidationCandidateRecord | null;
|
|
55
53
|
getConsolidationCandidateBySubject(subjectKind: KnowledgeConsolidationCandidateRecord['subjectKind'], subjectId: string, candidateType: KnowledgeConsolidationCandidateRecord['candidateType']): KnowledgeConsolidationCandidateRecord | null;
|
|
@@ -66,6 +64,7 @@ export declare class KnowledgeStore {
|
|
|
66
64
|
upsertIssue(input: KnowledgeIssueUpsertInput): Promise<KnowledgeIssueRecord>;
|
|
67
65
|
upsertExtraction(input: KnowledgeExtractionUpsertInput): Promise<KnowledgeExtractionRecord>;
|
|
68
66
|
upsertJobRun(input: KnowledgeJobRunUpsertInput): Promise<KnowledgeJobRunRecord>;
|
|
67
|
+
upsertRefinementTask(input: KnowledgeRefinementTaskUpsertInput): Promise<KnowledgeRefinementTaskRecord>;
|
|
69
68
|
upsertUsageRecord(input: KnowledgeUsageUpsertInput): Promise<KnowledgeUsageRecord>;
|
|
70
69
|
upsertConsolidationCandidate(input: KnowledgeConsolidationCandidateUpsertInput): Promise<KnowledgeConsolidationCandidateRecord>;
|
|
71
70
|
upsertConsolidationReport(input: KnowledgeConsolidationReportUpsertInput): Promise<KnowledgeConsolidationReportRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/knowledge/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qCAAqC,EACrC,0CAA0C,EAC1C,kCAAkC,EAClC,uCAAuC,EACvC,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAOpB,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAkCtF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IACpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoD;IACpF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA4D;IACpG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAyD;IAC9F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;gBAE5D,MAAM,EAAE,oBAAoB;IAMxC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,UAAU;IAIZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,MAAM,IAAI,eAAe;IAIzB,WAAW,CAAC,KAAK,SAAM,GAAG,qBAAqB,EAAE;IAIjD,SAAS,CAAC,KAAK,SAAM,GAAG,mBAAmB,EAAE;IAI7C,SAAS,IAAI,mBAAmB,EAAE;IAIlC,UAAU,CAAC,KAAK,SAAM,GAAG,oBAAoB,EAAE;IAI/C,eAAe,CAAC,KAAK,SAAM,GAAG,yBAAyB,EAAE;IAIzD,WAAW,CAAC,KAAK,SAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAIjE,mBAAmB,CAAC,KAAK,SAAM,EAAE,KAAK,GAAE,6BAAkC,GAAG,6BAA6B,EAAE;IAI5G,gBAAgB,CAAC,KAAK,SAAM,EAAE,KAAK,GAAE;QACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;KACnD,GAAG,oBAAoB,EAAE;IAI/B,2BAA2B,CAAC,KAAK,SAAM,EAAE,KAAK,GAAE;QAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,qCAAqC,CAAC,QAAQ,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,qCAAqC,CAAC,aAAa,CAAC,CAAC;QAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,qCAAqC,EAAE;IAIhD,wBAAwB,CAAC,KAAK,SAAM,GAAG,kCAAkC,EAAE;IAI3E,aAAa,CAAC,KAAK,SAAM,GAAG,uBAAuB,EAAE;IAIrD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAInD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAI/C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAIjD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IAI3D,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IAI3E,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAInD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,6BAA6B,GAAG,IAAI;IAInE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAIvD,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,qCAAqC,GAAG,IAAI;IAInF,kCAAkC,CAChC,WAAW,EAAE,qCAAqC,CAAC,aAAa,CAAC,EACjE,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,qCAAqC,CAAC,eAAe,CAAC,GACpE,qCAAqC,GAAG,IAAI;IAI/C,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,kCAAkC,GAAG,IAAI;IAI7E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;IAIvD,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAI3E,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAIjG,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIlH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIvC,YAAY,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0E/E,UAAU,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgDzE,UAAU,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8CzE,aAAa,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqBhH,WAAW,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0C5E,gBAAgB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4D3F,YAAY,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgD/E,oBAAoB,CAAC,KAAK,EAAE,kCAAkC,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAKvG,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmClF,4BAA4B,CAChC,KAAK,EAAE,0CAA0C,GAChD,OAAO,CAAC,qCAAqC,CAAC;IA2D3C,yBAAyB,CAC7B,KAAK,EAAE,uCAAuC,GAC7C,OAAO,CAAC,kCAAkC,CAAC;IAyCxC,cAAc,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAwCrF,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAUpC,UAAU;CA2BzB"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
2
|
import { SQLiteStore } from '../state/sqlite-store.js';
|
|
4
|
-
import { createSchema, issueStatusForUpsert, nowMs,
|
|
5
|
-
import {
|
|
3
|
+
import { createSchema, issueStatusForUpsert, nowMs, stableText, uniq, } from './store-schema.js';
|
|
4
|
+
import { resolveKnowledgeDbPath } from './store-config.js';
|
|
5
|
+
import { upsertKnowledgeRefinementTask } from './store-refinement.js';
|
|
6
|
+
import { edgesForKnowledgeStore, getKnowledgeConsolidationCandidate, getKnowledgeConsolidationCandidateBySubject, getKnowledgeConsolidationReport, getKnowledgeExtraction, getKnowledgeExtractionBySourceId, getKnowledgeIssue, getKnowledgeItem, getKnowledgeJobRun, getKnowledgeRefinementTask, getKnowledgeNode, getKnowledgeNodeByKindAndSlug, getKnowledgeSchedule, getKnowledgeSource, getKnowledgeSourceByCanonicalUri, getKnowledgeStoreStatus, getKnowledgeUsageRecord, listKnowledgeConsolidationCandidates, listKnowledgeConsolidationReports, listKnowledgeEdges, listKnowledgeExtractions, listKnowledgeIssues, listKnowledgeJobRuns, listKnowledgeRefinementTasks, listKnowledgeNodes, listKnowledgeSchedules, listKnowledgeSources, listKnowledgeUsageRecords, } from './store-read.js';
|
|
6
7
|
import { loadKnowledgeStoreSnapshot } from './store-load.js';
|
|
7
|
-
function resolveKnowledgeDbPath(config) {
|
|
8
|
-
const controlPlaneDir = typeof config.configManager?.getControlPlaneConfigDir === 'function'
|
|
9
|
-
? config.configManager.getControlPlaneConfigDir()
|
|
10
|
-
: undefined;
|
|
11
|
-
const dbPath = config.dbPath ?? (controlPlaneDir ? resolveKnowledgeDbPathFromControlPlaneDir(controlPlaneDir) : undefined);
|
|
12
|
-
if (!dbPath) {
|
|
13
|
-
throw new Error('KnowledgeStore requires an explicit dbPath or configManager.getControlPlaneConfigDir().');
|
|
14
|
-
}
|
|
15
|
-
return dbPath;
|
|
16
|
-
}
|
|
17
8
|
export class KnowledgeStore {
|
|
18
9
|
sqlite;
|
|
19
10
|
dbPath;
|
|
@@ -25,6 +16,7 @@ export class KnowledgeStore {
|
|
|
25
16
|
issues = new Map();
|
|
26
17
|
extractions = new Map();
|
|
27
18
|
jobRuns = new Map();
|
|
19
|
+
refinementTasks = new Map();
|
|
28
20
|
usageRecords = new Map();
|
|
29
21
|
consolidationCandidates = new Map();
|
|
30
22
|
consolidationReports = new Map();
|
|
@@ -77,6 +69,9 @@ export class KnowledgeStore {
|
|
|
77
69
|
listJobRuns(limit = 100, jobId) {
|
|
78
70
|
return listKnowledgeJobRuns(this.asReadView(), limit, jobId);
|
|
79
71
|
}
|
|
72
|
+
listRefinementTasks(limit = 100, input = {}) {
|
|
73
|
+
return listKnowledgeRefinementTasks(this.asReadView(), limit, input);
|
|
74
|
+
}
|
|
80
75
|
listUsageRecords(limit = 100, input = {}) {
|
|
81
76
|
return listKnowledgeUsageRecords(this.asReadView(), limit, input);
|
|
82
77
|
}
|
|
@@ -107,6 +102,9 @@ export class KnowledgeStore {
|
|
|
107
102
|
getJobRun(id) {
|
|
108
103
|
return getKnowledgeJobRun(this.asReadView(), id);
|
|
109
104
|
}
|
|
105
|
+
getRefinementTask(id) {
|
|
106
|
+
return getKnowledgeRefinementTask(this.asReadView(), id);
|
|
107
|
+
}
|
|
110
108
|
getUsageRecord(id) {
|
|
111
109
|
return getKnowledgeUsageRecord(this.asReadView(), id);
|
|
112
110
|
}
|
|
@@ -466,6 +464,10 @@ export class KnowledgeStore {
|
|
|
466
464
|
await this.sqlite.save();
|
|
467
465
|
return record;
|
|
468
466
|
}
|
|
467
|
+
async upsertRefinementTask(input) {
|
|
468
|
+
await this.init();
|
|
469
|
+
return upsertKnowledgeRefinementTask(this.sqlite, this.refinementTasks, input, () => `kref-${randomUUID().slice(0, 8)}`);
|
|
470
|
+
}
|
|
469
471
|
async upsertUsageRecord(input) {
|
|
470
472
|
await this.init();
|
|
471
473
|
const _task = stableText(input.task);
|
|
@@ -668,6 +670,9 @@ export class KnowledgeStore {
|
|
|
668
670
|
this.jobRuns.clear();
|
|
669
671
|
for (const record of snapshot.jobRuns)
|
|
670
672
|
this.jobRuns.set(record.id, record);
|
|
673
|
+
this.refinementTasks.clear();
|
|
674
|
+
for (const record of snapshot.refinementTasks)
|
|
675
|
+
this.refinementTasks.set(record.id, record);
|
|
671
676
|
this.usageRecords.clear();
|
|
672
677
|
for (const record of snapshot.usageRecords)
|
|
673
678
|
this.usageRecords.set(record.id, record);
|