import { type AutomationScheduleDefinition } from '../automation/schedules.js'; import { ArtifactStore } from '../artifacts/index.js'; import type { MemoryRegistry } from '../state/index.js'; import type { RuntimeEventBus } from '../runtime/events/index.js'; import { KnowledgeConnectorRegistry } from './connectors.js'; import { type KnowledgeMapRenderOptions } from './map.js'; import { KnowledgeSemanticService } from './semantic/index.js'; import { KnowledgeStore } from './store.js'; import { type KnowledgeIssueQueryInput, type KnowledgeNodeQueryInput, type KnowledgeNodeReviewDecisionInput } from './service-node-admin.js'; import type { BrowserKnowledgeIngestOptions, BrowserKnowledgeProfile } from './browser-history/index.js'; import type { KnowledgeBatchIngestResult, KnowledgeBookmarkSeed, KnowledgeConnector, KnowledgeConnectorDoctorReport, KnowledgeConsolidationCandidateRecord, KnowledgeConsolidationReportRecord, KnowledgeEdgeRecord, KnowledgeExtractionRecord, KnowledgeIssueRecord, KnowledgeJobMode, KnowledgeJobRecord, KnowledgeJobRunRecord, KnowledgeMaterializedProjection, KnowledgeItemView, KnowledgeMapResult, KnowledgeNodeRecord, KnowledgeNodeRevisionRecord, KnowledgePacket, KnowledgePacketDetail, KnowledgeProjectionBundle, KnowledgeProjectionTarget, KnowledgeProjectionTargetKind, KnowledgeRefinementTaskRecord, KnowledgeRefinementTaskState, KnowledgeScheduleRecord, KnowledgeSearchResult, KnowledgeSourceRecord, KnowledgeSourceType, KnowledgeStatus, KnowledgeUsageRecord } from './types.js'; import { type KnowledgeIssueReviewInput, type KnowledgeIssueReviewResult } from './review.js'; import { type KnowledgeSpaceScopeInput } from './spaces.js'; export interface KnowledgeServiceConfig { readonly configManager?: { getControlPlaneConfigDir?: (() => string) | undefined; }; readonly memoryRegistry: Pick; readonly runtimeBus?: RuntimeEventBus | null | undefined; readonly semanticService?: KnowledgeSemanticService | undefined; /** * MemoryGovernor admission gate for the expensive entry points (job runs, * url/artifact ingestion). At the critical memory tier new expensive work is * refused with an honest structured error instead of piling on allocation. */ readonly admitExpensiveWork?: ((label: string) => { allowed: boolean; reason?: string | undefined; }) | undefined; } export interface KnowledgeServiceStatus extends KnowledgeStatus { readonly note: string; } export declare class KnowledgeService { private readonly store; private readonly artifactStore; private readonly connectorRegistry; private readonly options; private readonly projectionService; private readonly scheduleService; private readonly semanticService; private runtimeBus; constructor(store: KnowledgeStore, artifactStore: ArtifactStore, connectorRegistry: KnowledgeConnectorRegistry | undefined, options: KnowledgeServiceConfig); private getIngestContext; private getPacketContext; private getConsolidationContext; attachRuntimeBus(runtimeBus: RuntimeEventBus | null | undefined): void; getStatus(scope?: KnowledgeSpaceScopeInput): Promise; listUsageRecords(limit?: number, input?: { readonly targetKind?: KnowledgeUsageRecord['targetKind'] | undefined; readonly targetId?: string | undefined; readonly usageKind?: KnowledgeUsageRecord['usageKind'] | undefined; }): readonly KnowledgeUsageRecord[]; listConsolidationCandidates(limit?: number, input?: { readonly status?: KnowledgeConsolidationCandidateRecord['status'] | undefined; readonly subjectKind?: KnowledgeConsolidationCandidateRecord['subjectKind'] | undefined; readonly subjectId?: string | undefined; }): readonly KnowledgeConsolidationCandidateRecord[]; getConsolidationCandidate(id: string): KnowledgeConsolidationCandidateRecord | null; listConsolidationReports(limit?: number): readonly KnowledgeConsolidationReportRecord[]; getConsolidationReport(id: string): KnowledgeConsolidationReportRecord | null; listSchedules(limit?: number): readonly KnowledgeScheduleRecord[]; getSchedule(id: string): KnowledgeScheduleRecord | null; listSources(limit?: number): KnowledgeSourceRecord[]; querySources(input?: { readonly limit?: number | undefined; readonly offset?: number | undefined; readonly knowledgeSpaceId?: string | undefined; readonly includeAllSpaces?: boolean | undefined; readonly status?: string | undefined; readonly connectorId?: string | undefined; readonly sourceType?: string | undefined; readonly tag?: string | undefined; readonly query?: string | undefined; }): { total: number; items: KnowledgeSourceRecord[]; }; listNodes(limit?: number): KnowledgeNodeRecord[]; /** The append-only revision history of a node, oldest first. (Defect 1.) */ listNodeRevisions(nodeId: string): KnowledgeNodeRevisionRecord[]; /** Honest hard delete of a single node, removes the row and its history. (Defect 6.) */ deleteNode(id: string): Promise<{ deleted: boolean; }>; /** Honest hard delete of a single source and its derived records. (Defect 6.) */ deleteSource(id: string): Promise<{ deleted: boolean; }>; /** Merge one node into another, re-pointing cross-reference edges. (Defect 5.) */ mergeNodes(loserId: string, winnerId: string): Promise<{ merged: boolean; repointedEdges: number; }>; /** Accept/reject a pending node, the decide step that governs activation. (Defect 2.) */ reviewNode(input: KnowledgeNodeReviewDecisionInput): Promise<{ ok: boolean; node?: KnowledgeNodeRecord | undefined; }>; queryNodes(input?: KnowledgeNodeQueryInput): { total: number; items: KnowledgeNodeRecord[]; }; listIssues(limit?: number): KnowledgeIssueRecord[]; queryIssues(input?: KnowledgeIssueQueryInput): { total: number; items: KnowledgeIssueRecord[]; }; reviewIssue(input: KnowledgeIssueReviewInput): Promise; listExtractions(limit?: number, sourceId?: string, scope?: KnowledgeSpaceScopeInput): KnowledgeExtractionRecord[]; getExtraction(id: string): KnowledgeExtractionRecord | null; getSourceExtraction(sourceId: string): KnowledgeExtractionRecord | null; listConnectors(): readonly KnowledgeConnector[]; getConnector(id: string): KnowledgeConnector | null; doctorConnector(id: string): Promise; registerConnector(connector: KnowledgeConnector, options?: { replace?: boolean; }): void; getItem(id: string): KnowledgeItemView | null; getItemScoped(id: string, scope?: KnowledgeSpaceScopeInput): KnowledgeItemView | null; getItems(ids: readonly string[]): KnowledgeItemView[]; private edgeInKnowledgeSpaceScope; private recordReferenceInKnowledgeSpaceScope; private recordMatchesKnowledgeSpaceScope; private nodeMatchesKnowledgeSpaceScope; private issueMatchesKnowledgeSpaceScope; private getScopeLookup; recordUsage(input: { readonly targetKind: KnowledgeUsageRecord['targetKind']; readonly targetId: string; readonly usageKind: KnowledgeUsageRecord['usageKind']; readonly task?: string | undefined; readonly sessionId?: string | undefined; readonly score?: number | undefined; readonly metadata?: Record | undefined; }): Promise; getNeighbors(kind: 'source' | 'node', id: string, input?: { readonly relation?: string | undefined; readonly limit?: number | undefined; }): { readonly edges: readonly KnowledgeEdgeRecord[]; readonly sources: readonly KnowledgeSourceRecord[]; readonly nodes: readonly KnowledgeNodeRecord[]; }; ingestUrl(input: { readonly url: string; readonly title?: string | undefined; readonly tags?: readonly string[] | undefined; readonly folderPath?: string | undefined; readonly sessionId?: string | undefined; readonly sourceType?: KnowledgeSourceType | undefined; readonly connectorId?: string | undefined; readonly allowPrivateHosts?: boolean | undefined; readonly metadata?: Record | undefined; }): Promise<{ source: KnowledgeSourceRecord; artifactId?: string; extraction?: KnowledgeExtractionRecord; issues: readonly KnowledgeIssueRecord[]; }>; /** * Consult the MemoryGovernor before expensive work: at the critical tier the * governor refuses with an honest reason, which surfaces as a structured * error instead of the daemon allocating toward OOM. */ private requireAdmission; ingestArtifact(input: { readonly artifactId?: string | undefined; readonly path?: string | undefined; readonly uri?: string | undefined; readonly title?: string | undefined; readonly tags?: readonly string[] | undefined; readonly folderPath?: string | undefined; readonly sessionId?: string | undefined; readonly sourceType?: KnowledgeSourceType | undefined; readonly connectorId?: string | undefined; readonly allowPrivateHosts?: boolean | undefined; readonly metadata?: Record | undefined; }): Promise<{ source: KnowledgeSourceRecord; artifactId?: string; extraction?: KnowledgeExtractionRecord; issues: readonly KnowledgeIssueRecord[]; }>; importBookmarksFromFile(input: { readonly path: string; readonly sessionId?: string | undefined; readonly allowPrivateHosts?: boolean | undefined; }): Promise; importUrlsFromFile(input: { readonly path: string; readonly sessionId?: string | undefined; readonly allowPrivateHosts?: boolean | undefined; }): Promise; ingestBookmarkSeeds(seeds: readonly KnowledgeBookmarkSeed[], sessionId?: string, sourceType?: KnowledgeSourceType, connectorId?: string, allowPrivateHosts?: boolean): Promise; ingestWithConnector(connectorId: string, input: unknown, sessionId?: string, allowPrivateHosts?: boolean): Promise; ingestConnectorInput(input: { readonly connectorId: string; readonly input?: unknown | undefined; readonly content?: string | undefined; readonly path?: string | undefined; readonly sessionId?: string | undefined; readonly allowPrivateHosts?: boolean | undefined; }): Promise; syncBrowserHistory(input?: BrowserKnowledgeIngestOptions): Promise; listProjectionTargets(limit?: number, scope?: KnowledgeSpaceScopeInput): Promise; renderProjection(input: { readonly kind: KnowledgeProjectionTargetKind; readonly id?: string | undefined; readonly limit?: number | undefined; readonly knowledgeSpaceId?: string | undefined; readonly includeAllSpaces?: boolean | undefined; }): Promise; materializeProjection(input: { readonly kind: KnowledgeProjectionTargetKind; readonly id?: string | undefined; readonly limit?: number | undefined; readonly filename?: string | undefined; readonly knowledgeSpaceId?: string | undefined; readonly includeAllSpaces?: boolean | undefined; }): Promise; map(input?: KnowledgeMapRenderOptions): Promise; reindex(): Promise<{ status: KnowledgeStatus; issues: readonly KnowledgeIssueRecord[]; }>; search(query: string, limit?: number): KnowledgeSearchResult[]; searchScoped(input: { readonly query: string; readonly limit?: number | undefined; readonly knowledgeSpaceId?: string | undefined; readonly includeAllSpaces?: boolean | undefined; }): KnowledgeSearchResult[]; ask(input: { readonly query: string; readonly limit?: number | undefined; readonly mode?: 'concise' | 'standard' | 'detailed' | undefined; readonly knowledgeSpaceId?: string | undefined; readonly includeSources?: boolean | undefined; readonly includeConfidence?: boolean | undefined; readonly includeLinkedObjects?: boolean | undefined; }): Promise; buildPacket(task: string, writeScope?: readonly string[], limit?: number, options?: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number; } & KnowledgeSpaceScopeInput): Promise; buildPacketSync(task: string, writeScope?: readonly string[], limit?: number, options?: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number; } & KnowledgeSpaceScopeInput): KnowledgePacket | null; buildPromptPacketSync(task: string, writeScope?: readonly string[], limit?: number, options?: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number; } & KnowledgeSpaceScopeInput): string | null; buildPromptPacket(task: string, writeScope?: readonly string[], limit?: number, options?: { readonly detail?: KnowledgePacketDetail; readonly budgetLimit?: number; } & KnowledgeSpaceScopeInput): Promise; listJobs(): readonly KnowledgeJobRecord[]; getJob(id: string): KnowledgeJobRecord | null; saveSchedule(input: { readonly id?: string | undefined; readonly jobId: string; readonly label?: string | undefined; readonly enabled?: boolean | undefined; readonly schedule: AutomationScheduleDefinition; readonly metadata?: Record | undefined; }): Promise; deleteSchedule(id: string): Promise; setScheduleEnabled(id: string, enabled: boolean): Promise; decideConsolidationCandidate(id: string, decision: 'accept' | 'reject' | 'supersede', input?: { readonly decidedBy?: string | undefined; readonly memoryClass?: string | undefined; readonly scope?: string | undefined; readonly detail?: string | undefined; }): Promise; listJobRuns(limit?: number, jobId?: string): readonly KnowledgeJobRunRecord[]; listRefinementTasks(limit?: number, input?: { readonly spaceId?: string | undefined; readonly state?: KnowledgeRefinementTaskState | string | undefined; readonly subjectKind?: string | undefined; readonly subjectId?: string | undefined; readonly gapId?: string | undefined; }): readonly KnowledgeRefinementTaskRecord[]; getRefinementTask(id: string): KnowledgeRefinementTaskRecord | null; cancelRefinementTask(id: string): Promise; runRefinement(input?: { readonly knowledgeSpaceId?: string | undefined; readonly gapIds?: readonly string[] | undefined; readonly sourceIds?: readonly string[] | undefined; readonly limit?: number | undefined; readonly maxRunMs?: number | undefined; readonly force?: boolean | undefined; }): Promise; runJob(id: string, input?: { readonly mode?: KnowledgeJobMode | undefined; readonly sourceIds?: readonly string[] | undefined; readonly limit?: number | undefined; }): Promise; private runJobByKind; private deferUsage; private syncReviewedMemory; /** * Release the knowledge scheduler's pending timers. Was `private` with no * caller, so every graph left six `reconcileSchedules` timers pending out to * a 24h horizon; runtime/services.ts registers it for teardown. Idempotent. */ dispose(): void; lint(): Promise; private emitIfReady; } export declare function buildCuratedKnowledgePromptSync(service: Pick, task: string, writeScope?: readonly string[]): string | null; //# sourceMappingURL=service.d.ts.map