@swarmvaultai/engine 3.7.2 → 3.8.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/index.d.ts CHANGED
@@ -955,6 +955,20 @@ interface GraphQueryMatch {
955
955
  label: string;
956
956
  score: number;
957
957
  }
958
+ type GraphQueryRelationGroup = "calls" | "imports" | "types" | "data" | "rationale" | "evidence";
959
+ interface GraphQueryFilters {
960
+ relations?: string[];
961
+ relationGroups?: GraphQueryRelationGroup[];
962
+ evidenceClasses?: EvidenceClass[];
963
+ nodeTypes?: GraphNode["type"][];
964
+ languages?: CodeLanguage[];
965
+ }
966
+ interface GraphQueryFilterStats {
967
+ active: boolean;
968
+ droppedEdges: number;
969
+ droppedNodes: number;
970
+ expandedRelations: string[];
971
+ }
958
972
  interface GraphQueryResult {
959
973
  question: string;
960
974
  traversal: "bfs" | "dfs";
@@ -967,6 +981,8 @@ interface GraphQueryResult {
967
981
  communities: string[];
968
982
  summary: string;
969
983
  matches: GraphQueryMatch[];
984
+ filters?: GraphQueryFilters;
985
+ filterStats?: GraphQueryFilterStats;
970
986
  }
971
987
  interface GraphPathResult {
972
988
  from: string;
@@ -3021,12 +3037,13 @@ declare function createSupersessionEdge(rootDir: string, oldPageIdOrPath: string
3021
3037
  declare function archiveCandidate(rootDir: string, target: string): Promise<CandidateRecord>;
3022
3038
  declare function initVault(rootDir: string, options?: InitOptions): Promise<void>;
3023
3039
  declare function compileVault(rootDir: string, options?: CompileOptions): Promise<CompileResult>;
3024
- declare function queryVault(rootDir: string, options: QueryOptions): Promise<QueryResult>;
3025
- declare function exploreVault(rootDir: string, options: ExploreOptions): Promise<ExploreResult>;
3040
+ declare function queryVault(rootDir: string, rawOptions: QueryOptions): Promise<QueryResult>;
3041
+ declare function exploreVault(rootDir: string, rawOptions: ExploreOptions): Promise<ExploreResult>;
3026
3042
  declare function searchVault(rootDir: string, query: string, limit?: number): Promise<SearchResult[]>;
3027
- declare function queryGraphVault(rootDir: string, question: string, options?: {
3043
+ declare function queryGraphVault(rootDir: string, rawQuestion: string, options?: {
3028
3044
  traversal?: "bfs" | "dfs";
3029
3045
  budget?: number;
3046
+ filters?: GraphQueryFilters;
3030
3047
  }): Promise<GraphQueryResult>;
3031
3048
  declare function benchmarkVault(rootDir: string, options?: BenchmarkOptions): Promise<BenchmarkArtifact>;
3032
3049
  declare function pathGraphVault(rootDir: string, from: string, to: string): Promise<GraphPathResult>;
@@ -3140,4 +3157,4 @@ declare function createWebSearchAdapter(id: string, config: WebSearchProviderCon
3140
3157
  type WebSearchTaskId = "deepLintProvider" | "queryProvider" | "exploreProvider";
3141
3158
  declare function getWebSearchAdapterForTask(rootDir: string, task: WebSearchTaskId): Promise<WebSearchAdapter>;
3142
3159
 
3143
- export { ALL_MIGRATIONS, type AddOptions, type AddResult, type AgentMemoryDecision, type AgentMemoryNote, type AgentMemoryResumeFormat, type AgentMemoryTask, type AgentMemoryTaskResult, type AgentMemoryTaskStatus, type AgentMemoryTaskSummary, type AgentType, type AnalyzedTerm, type ApprovalBundleType, type ApprovalChangeType, type ApprovalDetail, type ApprovalDiffHunk, type ApprovalDiffLine, type ApprovalEntry, type ApprovalEntryDetail, type ApprovalEntryLabel, type ApprovalEntryStatus, type ApprovalFrontmatterChange, type ApprovalManifest, type ApprovalStructuredDiff, type ApprovalSummary, type AudioTranscriptionRequest, type AudioTranscriptionResponse, type BenchmarkArtifact, type BenchmarkByClassEntry, type BenchmarkOptions, type BenchmarkQuestionResult, type BenchmarkSummary, type BlastRadiusResult, type BuildContextPackOptions, type BuildContextPackResult, type CandidatePromotionConfig, type CandidateRecord, type ChartDatum, type ChartSpec, type ClaimStatus, type CodeAnalysis, type CodeDiagnostic, type CodeImport, type CodeIndexArtifact, type CodeIndexEntry, type CodeLanguage, type CodeRelation, type CodeSymbol, type CodeSymbolKind, type CommandRoleExecutorConfig, type CompileOptions, type CompileResult, type CompileState, type ConsolidationConfig, type ConsolidationPromotion, type ConsolidationResult, type ContextPack, type ContextPackFormat, type ContextPackItem, type ContextPackItemKind, type ContextPackOmittedItem, type ContextPackSummary, DEFAULT_CONSOLIDATION_CONFIG, DEFAULT_HALF_LIFE_DAYS, DEFAULT_HALF_LIFE_DAYS_BY_SOURCE_CLASS, DEFAULT_PROMOTION_CONFIG, DEFAULT_REDACTION_PATTERNS, DEFAULT_STALE_THRESHOLD, type DegradationOutcome, type DirectoryIngestFailure, type DirectoryIngestResult, type DirectoryIngestSkip, type EmbeddingCacheArtifact, type EmbeddingCacheEntry, type EvidenceClass, type ExploreOptions, type ExploreResult, type ExploreStepResult, type ExtractionClaim, type ExtractionKind, type ExtractionTerm, type FinishMemoryTaskOptions, type Freshness, type FreshnessConfig, type GenerationAttachment, type GenerationRequest, type GenerationResponse, type GitHookStatus, type GraphArtifact, type GraphClusterRefreshResult, type GraphCommunityResult, type GraphDiffResult, type GraphEdge, type GraphExplainNeighbor, type GraphExplainResult, type GraphExportFormat, type GraphExportResult, type GraphHyperedge, type GraphNode, type GraphPage, type GraphPathResult, type GraphPushCounts, type GraphPushNeo4jOptions, type GraphPushResult, type GraphQueryMatch, type GraphQueryResult, type GraphReportArtifact, type GraphShareArtifact, type GraphShareBundleFile, type GraphShrinkDimension, type GraphShrinkGuardResult, type GraphStatsResult, type GraphStatusChange, type GraphStatusResult, type GuidedSessionMode, type GuidedSourceSessionAnswers, type GuidedSourceSessionQuestion, type GuidedSourceSessionRecord, type GuidedSourceSessionStatus, type ImageGenerationRequest, type ImageGenerationResponse, type ImageVisionExtraction, type InboxImportResult, type InboxImportSkip, type IngestOptions, type InitOptions, type InputIngestResult, type InstallAgentOptions, type InstallAgentResult, LARGE_REPO_NODE_THRESHOLD, LOCAL_WHISPER_MODEL_SIZES, type LintFinding, type LintOptions, type LocalWhisperAdapterOptions, type LocalWhisperBinaryDiscovery, LocalWhisperProviderAdapter, type LocalWhisperSetupStatus, type ManagedSourceAddOptions, type ManagedSourceAddResult, type ManagedSourceDeleteResult, type ManagedSourceKind, type ManagedSourceRecord, type ManagedSourceReloadOptions, type ManagedSourceReloadResult, type ManagedSourceStatus, type ManagedSourceSyncCounts, type ManagedSourcesArtifact, type MemoryTier, type MigrationPlan, type MigrationResult, type MigrationStep, type Neo4jGraphSinkConfig, OPENAI_COMPATIBLE_CAPABILITY_MATRIX, type OpenAiCompatiblePresetId, type OrchestrationConfig, type OrchestrationFinding, type OrchestrationProposal, type OrchestrationRole, type OrchestrationRoleConfig, type OrchestrationRoleResult, type OutputAsset, type OutputAssetRole, type OutputFormat, type OutputOrigin, type PageKind, type PageManager, type PageStatus, type PendingSemanticRefreshEntry, type Polarity, type PromotionDecision, type PromotionGateKind, type PromotionGateResult, type PromotionSession, type ProviderAdapter, type ProviderCapability, type ProviderConfig, type ProviderPresetCapability, type ProviderRegistrationOptions, type ProviderRegistrationResult, type ProviderRoleExecutorConfig, type ProviderType, type QueryOptions, type QueryResult, type RedactionMatchSummary, type RedactionPatternConfig, type RedactionSettings, type RedactionSummary, type RepoSyncResult, type ResolvedLargeRepoDefaults, type ResolvedPaths, type ResumeMemoryTaskOptions, type ResumeMemoryTaskResult, type RetrievalConfig, type RetrievalDoctorResult, type RetrievalManifest, type RetrievalStatus, type ReviewActionResult, type RoleExecutorConfig, SWARMVAULT_OUT_ENV, type SceneElement, type SceneSpec, type ScheduleController, type ScheduleJobConfig, type ScheduleStateRecord, type ScheduleTriggerConfig, type ScheduledCompileTask, type ScheduledConsolidateTask, type ScheduledExploreTask, type ScheduledLintTask, type ScheduledQueryTask, type ScheduledRunResult, type ScheduledTaskConfig, type SearchResult, type SourceAnalysis, type SourceAttachment, type SourceCaptureType, type SourceClaim, type SourceClass, type SourceExtractionArtifact, type SourceGuideResult, type SourceKind, type SourceManifest, type SourceRationale, type SourceReviewResult, type StartMemoryTaskOptions, type SynthesizedHubEdge, type SynthesizedHubNode, type SynthesizedHyperedgeHubs, type UpdateMemoryTaskOptions, type VaultConfig, type VaultDashboardPack, type VaultDoctorAction, type VaultDoctorCheck, type VaultDoctorCounts, type VaultDoctorRecommendation, type VaultDoctorRecommendationPriority, type VaultDoctorReport, type VaultDoctorSafeAction, type VaultDoctorStatus, type VaultProfileConfig, type VaultProfilePreset, type VaultVersionRecord, type WatchConfig, type WatchController, type WatchOptions, type WatchRepoSyncResult, type WatchRunRecord, type WatchStatusResult, type WebSearchAdapter, type WebSearchProviderConfig, type WebSearchProviderType, type WebSearchResult, type WhisperRunResult, type WhisperRunner, acceptApproval, addInput, addManagedSource, addWatchedRoot, agentTypeSchema, applyDecayToPages, archiveCandidate, assertProviderCapability, autoCommitWikiChanges, benchmarkVault, blastRadius, blastRadiusVault, bootstrapDemo, buildConfiguredRedactor, buildContextPack, buildGraphShareArtifact, buildGraphTree, buildMemoryGraphElements, buildRedactor, checkTrackedRepoChanges, compileVault, computeDecayScore, consolidateVault, createMcpServer, createProvider, createSupersessionEdge, createWebSearchAdapter, defaultVaultConfig, defaultVaultSchema, deleteContextPack, deleteManagedSource, detectVaultVersion, discoverLocalWhisperBinary, doctorRetrieval, doctorVault, downloadWhisperModel, ensureMemoryLedger, estimatePageTokens, estimateTokens, evaluateCandidateForPromotion, evaluateGraphShrinkGuard, expectedModelPath, explainGraphVault, exploreVault, exportGraphFormat, exportGraphHtml, exportGraphReportHtml, exportGraphTree, exportObsidianCanvas, exportObsidianVault, finishMemoryTask, getGitHookStatus, getGraphCommunityVault, getGraphStatus, getProviderForTask, getRetrievalStatus, getWatchStatus, getWebSearchAdapterForTask, getWorkspaceInfo, graphDiff, graphStatsVault, guideManagedSource, guideSourceScope, importInbox, ingestDirectory, ingestInput, ingestInputDetailed, initVault, initWorkspace, installAgent, installConfiguredAgents, installGitHooks, lintVault, listApprovals, listCandidates, listContextPacks, listGodNodes, listGraphHyperedges, listManagedSourceRecords, listManifests, listMemoryTasks, listPages, listSchedules, listTrackedRepoRoots, listWatchedRoots, loadMemoryTaskPages, loadVaultConfig, loadVaultSchema, loadVaultSchemas, lookupPresetCapabilities, markSuperseded, memoryTaskHashes, mergeGraphFiles, modelDownloadUrl, pathGraphVault, persistDecayFrontmatter, planMigration, previewCandidatePromotions, projectGraphAfterRemovals, promoteCandidate, providerCapabilitySchema, providerTypeSchema, pushGraphNeo4j, queryGraphVault, queryVault, readApproval, readContextPack, readExtractedText, readGraphReport, readMemoryTask, readPage, rebuildRetrievalIndex, refreshGraphClusters, registerLocalWhisperProvider, rejectApproval, reloadManagedSources, removeWatchedRoot, renderContextPackLlms, renderContextPackMarkdown, renderGraphShareBundleFiles, renderGraphShareMarkdown, renderGraphSharePreviewHtml, renderGraphShareSvg, renderGraphTreeHtml, renderMemoryTaskMarkdown, resetDecay, resolveArtifactRootDir, resolveConsolidationConfig, resolveDecayConfig, resolveLargeRepoDefaults, resolvePaths, resolveRedactionPatterns, resolveRetrievalConfig, resolveWatchedRepoRoots, resumeMemoryTask, resumeSourceSession, reviewManagedSource, reviewSourceScope, runAutoPromotion, runConsolidation, runDecayPass, runMigration, runSchedule, runWatchCycle, searchVault, serveSchedules, stageGeneratedOutputPages, startGraphServer, startMcpServer, startMemoryTask, summarizeLocalWhisperSetup, syncTrackedRepos, syncTrackedReposForWatch, synthesizeHyperedgeHubs, trimToTokenBudget, uninstallGitHooks, updateMemoryTask, watchVault, webSearchProviderTypeSchema, withCapabilityFallback, writeRetrievalManifest };
3160
+ export { ALL_MIGRATIONS, type AddOptions, type AddResult, type AgentMemoryDecision, type AgentMemoryNote, type AgentMemoryResumeFormat, type AgentMemoryTask, type AgentMemoryTaskResult, type AgentMemoryTaskStatus, type AgentMemoryTaskSummary, type AgentType, type AnalyzedTerm, type ApprovalBundleType, type ApprovalChangeType, type ApprovalDetail, type ApprovalDiffHunk, type ApprovalDiffLine, type ApprovalEntry, type ApprovalEntryDetail, type ApprovalEntryLabel, type ApprovalEntryStatus, type ApprovalFrontmatterChange, type ApprovalManifest, type ApprovalStructuredDiff, type ApprovalSummary, type AudioTranscriptionRequest, type AudioTranscriptionResponse, type BenchmarkArtifact, type BenchmarkByClassEntry, type BenchmarkOptions, type BenchmarkQuestionResult, type BenchmarkSummary, type BlastRadiusResult, type BuildContextPackOptions, type BuildContextPackResult, type CandidatePromotionConfig, type CandidateRecord, type ChartDatum, type ChartSpec, type ClaimStatus, type CodeAnalysis, type CodeDiagnostic, type CodeImport, type CodeIndexArtifact, type CodeIndexEntry, type CodeLanguage, type CodeRelation, type CodeSymbol, type CodeSymbolKind, type CommandRoleExecutorConfig, type CompileOptions, type CompileResult, type CompileState, type ConsolidationConfig, type ConsolidationPromotion, type ConsolidationResult, type ContextPack, type ContextPackFormat, type ContextPackItem, type ContextPackItemKind, type ContextPackOmittedItem, type ContextPackSummary, DEFAULT_CONSOLIDATION_CONFIG, DEFAULT_HALF_LIFE_DAYS, DEFAULT_HALF_LIFE_DAYS_BY_SOURCE_CLASS, DEFAULT_PROMOTION_CONFIG, DEFAULT_REDACTION_PATTERNS, DEFAULT_STALE_THRESHOLD, type DegradationOutcome, type DirectoryIngestFailure, type DirectoryIngestResult, type DirectoryIngestSkip, type EmbeddingCacheArtifact, type EmbeddingCacheEntry, type EvidenceClass, type ExploreOptions, type ExploreResult, type ExploreStepResult, type ExtractionClaim, type ExtractionKind, type ExtractionTerm, type FinishMemoryTaskOptions, type Freshness, type FreshnessConfig, type GenerationAttachment, type GenerationRequest, type GenerationResponse, type GitHookStatus, type GraphArtifact, type GraphClusterRefreshResult, type GraphCommunityResult, type GraphDiffResult, type GraphEdge, type GraphExplainNeighbor, type GraphExplainResult, type GraphExportFormat, type GraphExportResult, type GraphHyperedge, type GraphNode, type GraphPage, type GraphPathResult, type GraphPushCounts, type GraphPushNeo4jOptions, type GraphPushResult, type GraphQueryFilterStats, type GraphQueryFilters, type GraphQueryMatch, type GraphQueryRelationGroup, type GraphQueryResult, type GraphReportArtifact, type GraphShareArtifact, type GraphShareBundleFile, type GraphShrinkDimension, type GraphShrinkGuardResult, type GraphStatsResult, type GraphStatusChange, type GraphStatusResult, type GuidedSessionMode, type GuidedSourceSessionAnswers, type GuidedSourceSessionQuestion, type GuidedSourceSessionRecord, type GuidedSourceSessionStatus, type ImageGenerationRequest, type ImageGenerationResponse, type ImageVisionExtraction, type InboxImportResult, type InboxImportSkip, type IngestOptions, type InitOptions, type InputIngestResult, type InstallAgentOptions, type InstallAgentResult, LARGE_REPO_NODE_THRESHOLD, LOCAL_WHISPER_MODEL_SIZES, type LintFinding, type LintOptions, type LocalWhisperAdapterOptions, type LocalWhisperBinaryDiscovery, LocalWhisperProviderAdapter, type LocalWhisperSetupStatus, type ManagedSourceAddOptions, type ManagedSourceAddResult, type ManagedSourceDeleteResult, type ManagedSourceKind, type ManagedSourceRecord, type ManagedSourceReloadOptions, type ManagedSourceReloadResult, type ManagedSourceStatus, type ManagedSourceSyncCounts, type ManagedSourcesArtifact, type MemoryTier, type MigrationPlan, type MigrationResult, type MigrationStep, type Neo4jGraphSinkConfig, OPENAI_COMPATIBLE_CAPABILITY_MATRIX, type OpenAiCompatiblePresetId, type OrchestrationConfig, type OrchestrationFinding, type OrchestrationProposal, type OrchestrationRole, type OrchestrationRoleConfig, type OrchestrationRoleResult, type OutputAsset, type OutputAssetRole, type OutputFormat, type OutputOrigin, type PageKind, type PageManager, type PageStatus, type PendingSemanticRefreshEntry, type Polarity, type PromotionDecision, type PromotionGateKind, type PromotionGateResult, type PromotionSession, type ProviderAdapter, type ProviderCapability, type ProviderConfig, type ProviderPresetCapability, type ProviderRegistrationOptions, type ProviderRegistrationResult, type ProviderRoleExecutorConfig, type ProviderType, type QueryOptions, type QueryResult, type RedactionMatchSummary, type RedactionPatternConfig, type RedactionSettings, type RedactionSummary, type RepoSyncResult, type ResolvedLargeRepoDefaults, type ResolvedPaths, type ResumeMemoryTaskOptions, type ResumeMemoryTaskResult, type RetrievalConfig, type RetrievalDoctorResult, type RetrievalManifest, type RetrievalStatus, type ReviewActionResult, type RoleExecutorConfig, SWARMVAULT_OUT_ENV, type SceneElement, type SceneSpec, type ScheduleController, type ScheduleJobConfig, type ScheduleStateRecord, type ScheduleTriggerConfig, type ScheduledCompileTask, type ScheduledConsolidateTask, type ScheduledExploreTask, type ScheduledLintTask, type ScheduledQueryTask, type ScheduledRunResult, type ScheduledTaskConfig, type SearchResult, type SourceAnalysis, type SourceAttachment, type SourceCaptureType, type SourceClaim, type SourceClass, type SourceExtractionArtifact, type SourceGuideResult, type SourceKind, type SourceManifest, type SourceRationale, type SourceReviewResult, type StartMemoryTaskOptions, type SynthesizedHubEdge, type SynthesizedHubNode, type SynthesizedHyperedgeHubs, type UpdateMemoryTaskOptions, type VaultConfig, type VaultDashboardPack, type VaultDoctorAction, type VaultDoctorCheck, type VaultDoctorCounts, type VaultDoctorRecommendation, type VaultDoctorRecommendationPriority, type VaultDoctorReport, type VaultDoctorSafeAction, type VaultDoctorStatus, type VaultProfileConfig, type VaultProfilePreset, type VaultVersionRecord, type WatchConfig, type WatchController, type WatchOptions, type WatchRepoSyncResult, type WatchRunRecord, type WatchStatusResult, type WebSearchAdapter, type WebSearchProviderConfig, type WebSearchProviderType, type WebSearchResult, type WhisperRunResult, type WhisperRunner, acceptApproval, addInput, addManagedSource, addWatchedRoot, agentTypeSchema, applyDecayToPages, archiveCandidate, assertProviderCapability, autoCommitWikiChanges, benchmarkVault, blastRadius, blastRadiusVault, bootstrapDemo, buildConfiguredRedactor, buildContextPack, buildGraphShareArtifact, buildGraphTree, buildMemoryGraphElements, buildRedactor, checkTrackedRepoChanges, compileVault, computeDecayScore, consolidateVault, createMcpServer, createProvider, createSupersessionEdge, createWebSearchAdapter, defaultVaultConfig, defaultVaultSchema, deleteContextPack, deleteManagedSource, detectVaultVersion, discoverLocalWhisperBinary, doctorRetrieval, doctorVault, downloadWhisperModel, ensureMemoryLedger, estimatePageTokens, estimateTokens, evaluateCandidateForPromotion, evaluateGraphShrinkGuard, expectedModelPath, explainGraphVault, exploreVault, exportGraphFormat, exportGraphHtml, exportGraphReportHtml, exportGraphTree, exportObsidianCanvas, exportObsidianVault, finishMemoryTask, getGitHookStatus, getGraphCommunityVault, getGraphStatus, getProviderForTask, getRetrievalStatus, getWatchStatus, getWebSearchAdapterForTask, getWorkspaceInfo, graphDiff, graphStatsVault, guideManagedSource, guideSourceScope, importInbox, ingestDirectory, ingestInput, ingestInputDetailed, initVault, initWorkspace, installAgent, installConfiguredAgents, installGitHooks, lintVault, listApprovals, listCandidates, listContextPacks, listGodNodes, listGraphHyperedges, listManagedSourceRecords, listManifests, listMemoryTasks, listPages, listSchedules, listTrackedRepoRoots, listWatchedRoots, loadMemoryTaskPages, loadVaultConfig, loadVaultSchema, loadVaultSchemas, lookupPresetCapabilities, markSuperseded, memoryTaskHashes, mergeGraphFiles, modelDownloadUrl, pathGraphVault, persistDecayFrontmatter, planMigration, previewCandidatePromotions, projectGraphAfterRemovals, promoteCandidate, providerCapabilitySchema, providerTypeSchema, pushGraphNeo4j, queryGraphVault, queryVault, readApproval, readContextPack, readExtractedText, readGraphReport, readMemoryTask, readPage, rebuildRetrievalIndex, refreshGraphClusters, registerLocalWhisperProvider, rejectApproval, reloadManagedSources, removeWatchedRoot, renderContextPackLlms, renderContextPackMarkdown, renderGraphShareBundleFiles, renderGraphShareMarkdown, renderGraphSharePreviewHtml, renderGraphShareSvg, renderGraphTreeHtml, renderMemoryTaskMarkdown, resetDecay, resolveArtifactRootDir, resolveConsolidationConfig, resolveDecayConfig, resolveLargeRepoDefaults, resolvePaths, resolveRedactionPatterns, resolveRetrievalConfig, resolveWatchedRepoRoots, resumeMemoryTask, resumeSourceSession, reviewManagedSource, reviewSourceScope, runAutoPromotion, runConsolidation, runDecayPass, runMigration, runSchedule, runWatchCycle, searchVault, serveSchedules, stageGeneratedOutputPages, startGraphServer, startMcpServer, startMemoryTask, summarizeLocalWhisperSetup, syncTrackedRepos, syncTrackedReposForWatch, synthesizeHyperedgeHubs, trimToTokenBudget, uninstallGitHooks, updateMemoryTask, watchVault, webSearchProviderTypeSchema, withCapabilityFallback, writeRetrievalManifest };
package/dist/index.js CHANGED
@@ -125,7 +125,7 @@ import {
125
125
  writeGuidedSourceSession,
126
126
  writeRetrievalManifest,
127
127
  writeWatchStatusArtifact
128
- } from "./chunk-YFKWMXJ6.js";
128
+ } from "./chunk-563TZ4TZ.js";
129
129
  import {
130
130
  LocalWhisperProviderAdapter,
131
131
  SWARMVAULT_OUT_ENV,
@@ -151,7 +151,7 @@ import {
151
151
  truncate,
152
152
  uniqueBy,
153
153
  writeJsonFile
154
- } from "./chunk-HW72C7O2.js";
154
+ } from "./chunk-75BU5TQ6.js";
155
155
  import {
156
156
  estimatePageTokens,
157
157
  estimateTokens,
@@ -4410,6 +4410,23 @@ function compareTreeNodes(left, right) {
4410
4410
  function escapeHtml(value) {
4411
4411
  return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
4412
4412
  }
4413
+ function escapeAttribute(value) {
4414
+ return escapeHtml(value).replaceAll("'", "&#39;");
4415
+ }
4416
+ function escapeScriptJson(value) {
4417
+ return JSON.stringify(value).replace(/[<>&]/g, (character) => {
4418
+ switch (character) {
4419
+ case "<":
4420
+ return "\\u003c";
4421
+ case ">":
4422
+ return "\\u003e";
4423
+ case "&":
4424
+ return "\\u0026";
4425
+ default:
4426
+ return character;
4427
+ }
4428
+ });
4429
+ }
4413
4430
  function normalizeSourcePath(rootDir, source) {
4414
4431
  const candidate = source.repoRelativePath ?? source.originalPath ?? source.storedPath ?? source.title;
4415
4432
  if (source.repoRelativePath) {
@@ -4538,6 +4555,43 @@ function buildGraphTree(graph, options = {}) {
4538
4555
  }
4539
4556
  return sortAndCapTree(root, Math.max(1, options.maxChildren ?? DEFAULT_MAX_CHILDREN));
4540
4557
  }
4558
+ function collectTreeInspectorEntries(tree, graph) {
4559
+ const graphNodes = new Map(graph.nodes.map((node) => [node.id, node]));
4560
+ const entries = {};
4561
+ const visit = (node) => {
4562
+ const edges = node.nodeId ? graph.edges.filter((edge) => edge.source === node.nodeId || edge.target === node.nodeId).slice().sort((left, right) => right.confidence - left.confidence || left.relation.localeCompare(right.relation)).slice(0, 8).map((edge) => {
4563
+ const outgoing = edge.source === node.nodeId;
4564
+ const otherId = outgoing ? edge.target : edge.source;
4565
+ return {
4566
+ id: edge.id,
4567
+ relation: edge.relation,
4568
+ direction: outgoing ? "outgoing" : "incoming",
4569
+ otherId,
4570
+ otherLabel: graphNodes.get(otherId)?.label ?? otherId,
4571
+ evidenceClass: edge.evidenceClass,
4572
+ confidence: edge.confidence
4573
+ };
4574
+ }) : [];
4575
+ entries[node.id] = {
4576
+ id: node.id,
4577
+ label: node.label,
4578
+ kind: node.kind,
4579
+ count: node.count,
4580
+ path: node.path,
4581
+ sourceId: node.sourceId,
4582
+ nodeId: node.nodeId,
4583
+ language: node.language,
4584
+ symbolKind: node.symbolKind,
4585
+ hiddenChildren: node.hiddenChildren,
4586
+ edges
4587
+ };
4588
+ for (const child of node.children) {
4589
+ visit(child);
4590
+ }
4591
+ };
4592
+ visit(tree);
4593
+ return entries;
4594
+ }
4541
4595
  function renderNode(node) {
4542
4596
  const meta = [
4543
4597
  node.kind,
@@ -4549,15 +4603,17 @@ function renderNode(node) {
4549
4603
  node.count ? `${node.count} item${node.count === 1 ? "" : "s"}` : void 0
4550
4604
  ].filter(Boolean);
4551
4605
  const content = [
4552
- `<span class="label">${escapeHtml(node.label)}</span>`,
4606
+ `<button class="node-button" type="button" data-tree-id="${escapeAttribute(node.id)}"><span class="label">${escapeHtml(node.label)}</span></button>`,
4607
+ node.count ? `<span class="count">${node.count}</span>` : "",
4553
4608
  meta.length ? `<span class="meta">${escapeHtml(meta.join(" \xB7 "))}</span>` : ""
4554
4609
  ].join("");
4555
4610
  if (node.children.length === 0) {
4556
- return `<li class="tree-node kind-${escapeHtml(node.kind)}">${content}</li>`;
4611
+ return `<li class="tree-node kind-${escapeAttribute(node.kind)}" data-tree-id="${escapeAttribute(node.id)}">${content}</li>`;
4557
4612
  }
4558
- return `<li class="tree-node kind-${escapeHtml(node.kind)}"><details open><summary>${content}</summary><ul>${node.children.map(renderNode).join("")}</ul></details></li>`;
4613
+ return `<li class="tree-node kind-${escapeAttribute(node.kind)}" data-tree-id="${escapeAttribute(node.id)}"><details open><summary>${content}</summary><ul>${node.children.map(renderNode).join("")}</ul></details></li>`;
4559
4614
  }
4560
4615
  function renderGraphTreeHtml(tree, graph) {
4616
+ const inspectorEntries = collectTreeInspectorEntries(tree, graph);
4561
4617
  return `<!doctype html>
4562
4618
  <html lang="en">
4563
4619
  <head>
@@ -4567,27 +4623,44 @@ function renderGraphTreeHtml(tree, graph) {
4567
4623
  <style>
4568
4624
  :root { color-scheme: light dark; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
4569
4625
  body { margin: 0; background: #f7f7f5; color: #171717; }
4570
- main { max-width: 1120px; margin: 0 auto; padding: 32px 20px 56px; }
4626
+ main { max-width: 1280px; margin: 0 auto; padding: 32px 20px 56px; }
4571
4627
  h1 { font-size: 28px; line-height: 1.2; margin: 0 0 8px; }
4572
4628
  .subtitle { color: #5d5d5d; margin: 0 0 20px; }
4573
- .toolbar { display: flex; gap: 12px; align-items: center; margin: 0 0 18px; }
4574
- input { flex: 1; min-width: 0; border: 1px solid #c9c9c9; border-radius: 6px; padding: 10px 12px; font: inherit; background: #fff; color: inherit; }
4575
- .tree { background: #fff; border: 1px solid #deded9; border-radius: 8px; padding: 16px 18px; }
4629
+ .toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 0 0 18px; }
4630
+ input { flex: 1 1 320px; min-width: 0; border: 1px solid #c9c9c9; border-radius: 6px; padding: 10px 12px; font: inherit; background: #fff; color: inherit; }
4631
+ .toolbar button { border: 1px solid #c9c9c9; border-radius: 6px; background: #fff; color: inherit; font: inherit; padding: 10px 12px; cursor: pointer; }
4632
+ .layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; align-items: start; }
4633
+ .tree, .inspector { background: #fff; border: 1px solid #deded9; border-radius: 8px; padding: 16px 18px; }
4634
+ .inspector { position: sticky; top: 16px; }
4635
+ .inspector h2 { font-size: 17px; margin: 0 0 10px; }
4636
+ .inspector dl { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 6px 10px; margin: 0 0 16px; font-size: 13px; }
4637
+ .inspector dt { color: #666; }
4638
+ .inspector dd { margin: 0; overflow-wrap: anywhere; }
4639
+ .edge-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
4640
+ .edge-list li { border-top: 1px solid #ecece8; padding-top: 8px; }
4576
4641
  ul { list-style: none; margin: 0; padding-left: 20px; }
4577
4642
  .tree > ul { padding-left: 0; }
4578
4643
  li { margin: 4px 0; }
4579
4644
  summary { cursor: pointer; }
4645
+ .node-button { border: 0; background: transparent; color: inherit; font: inherit; padding: 2px 0; cursor: pointer; text-align: left; }
4646
+ .node-button:focus-visible, .toolbar button:focus-visible, input:focus-visible { outline: 2px solid #1f6feb; outline-offset: 2px; }
4580
4647
  .label { font-weight: 600; }
4648
+ .count { display: inline-flex; min-width: 18px; justify-content: center; margin-left: 8px; padding: 1px 6px; border-radius: 999px; background: #ededdf; color: #444; font-size: 12px; }
4581
4649
  .meta { color: #666; font-size: 12px; margin-left: 8px; }
4582
4650
  .kind-directory > details > summary .label { color: #245b78; }
4583
4651
  .kind-source > details > summary .label, .kind-source > .label { color: #22543d; }
4584
4652
  .kind-module > details > summary .label { color: #6b3f12; }
4585
4653
  .kind-rationale > .label { color: #6d2f46; }
4654
+ .selected > details > summary, .selected > .node-button { background: #eef6f1; border-radius: 4px; }
4586
4655
  .hidden { display: none !important; }
4656
+ @media (max-width: 900px) { .layout { grid-template-columns: 1fr; } .inspector { position: static; } }
4587
4657
  @media (prefers-color-scheme: dark) {
4588
4658
  body { background: #161616; color: #efefef; }
4589
- .subtitle, .meta { color: #ababab; }
4590
- input, .tree { background: #202020; border-color: #3a3a3a; }
4659
+ .subtitle, .meta, .inspector dt { color: #ababab; }
4660
+ input, .tree, .inspector, .toolbar button { background: #202020; border-color: #3a3a3a; }
4661
+ .count { background: #333329; color: #deded8; }
4662
+ .edge-list li { border-color: #333; }
4663
+ .selected > details > summary, .selected > .node-button { background: #24362d; }
4591
4664
  }
4592
4665
  </style>
4593
4666
  </head>
@@ -4595,11 +4668,61 @@ summary { cursor: pointer; }
4595
4668
  <main>
4596
4669
  <h1>${escapeHtml(tree.label)}</h1>
4597
4670
  <p class="subtitle">${graph.sources.length} sources \xB7 ${graph.nodes.length} nodes \xB7 ${graph.edges.length} edges \xB7 generated ${escapeHtml(graph.generatedAt)}</p>
4598
- <div class="toolbar"><input id="filter" type="search" placeholder="Filter files, modules, symbols, or ids" aria-label="Filter graph tree"></div>
4599
- <section class="tree"><ul>${renderNode(tree)}</ul></section>
4671
+ <div class="toolbar">
4672
+ <input id="filter" type="search" placeholder="Filter files, modules, symbols, or ids" aria-label="Filter graph tree">
4673
+ <button type="button" id="expandAll">Expand all</button>
4674
+ <button type="button" id="collapseAll">Collapse all</button>
4675
+ <button type="button" id="resetTree">Reset</button>
4676
+ </div>
4677
+ <div class="layout">
4678
+ <section class="tree" aria-label="Graph tree"><ul>${renderNode(tree)}</ul></section>
4679
+ <aside class="inspector" aria-live="polite">
4680
+ <h2 id="inspectorTitle">Select a node</h2>
4681
+ <dl id="inspectorMeta"></dl>
4682
+ <ul class="edge-list" id="inspectorEdges"></ul>
4683
+ </aside>
4684
+ </div>
4600
4685
  </main>
4601
4686
  <script>
4687
+ const treeData = ${escapeScriptJson(inspectorEntries)};
4602
4688
  const input = document.getElementById('filter');
4689
+ const inspectorTitle = document.getElementById('inspectorTitle');
4690
+ const inspectorMeta = document.getElementById('inspectorMeta');
4691
+ const inspectorEdges = document.getElementById('inspectorEdges');
4692
+ const renderText = (value) => String(value ?? '').replace(/[&<>"']/g, (character) => ({
4693
+ '&': '&amp;',
4694
+ '<': '&lt;',
4695
+ '>': '&gt;',
4696
+ '"': '&quot;',
4697
+ "'": '&#39;'
4698
+ })[character]);
4699
+ function selectNode(id) {
4700
+ const entry = treeData[id];
4701
+ if (!entry) return;
4702
+ for (const selected of document.querySelectorAll('.selected')) selected.classList.remove('selected');
4703
+ const selectedNode = Array.from(document.querySelectorAll('[data-tree-id]')).find((node) => node.dataset.treeId === id);
4704
+ selectedNode?.classList.add('selected');
4705
+ inspectorTitle.textContent = entry.label;
4706
+ const rows = [
4707
+ ['Kind', entry.kind],
4708
+ ['Count', entry.count],
4709
+ ['Path', entry.path],
4710
+ ['Source', entry.sourceId],
4711
+ ['Node', entry.nodeId],
4712
+ ['Language', entry.language],
4713
+ ['Symbol', entry.symbolKind],
4714
+ ['Hidden', entry.hiddenChildren]
4715
+ ].filter(([, value]) => value !== undefined && value !== null && value !== '');
4716
+ inspectorMeta.innerHTML = rows.map(([label, value]) => '<dt>' + renderText(label) + '</dt><dd>' + renderText(value) + '</dd>').join('');
4717
+ inspectorEdges.innerHTML = entry.edges.length
4718
+ ? entry.edges.map((edge) => '<li><strong>' + renderText(edge.relation) + '</strong> ' + renderText(edge.direction) + ' ' + renderText(edge.otherLabel) + '<br><span class="meta">' + renderText(edge.evidenceClass) + ' \xB7 ' + renderText(edge.confidence) + '</span></li>').join('')
4719
+ : '<li>No connected edges in the top slice.</li>';
4720
+ }
4721
+ document.querySelector('.tree')?.addEventListener('click', (event) => {
4722
+ const button = event.target.closest('.node-button');
4723
+ if (!button) return;
4724
+ selectNode(button.dataset.treeId);
4725
+ });
4603
4726
  input.addEventListener('input', () => {
4604
4727
  const query = input.value.trim().toLowerCase();
4605
4728
  for (const node of document.querySelectorAll('.tree-node')) {
@@ -4607,6 +4730,19 @@ input.addEventListener('input', () => {
4607
4730
  node.classList.toggle('hidden', query.length > 0 && !text.includes(query));
4608
4731
  }
4609
4732
  });
4733
+ document.getElementById('expandAll').addEventListener('click', () => {
4734
+ for (const details of document.querySelectorAll('details')) details.open = true;
4735
+ });
4736
+ document.getElementById('collapseAll').addEventListener('click', () => {
4737
+ for (const details of document.querySelectorAll('details')) details.open = false;
4738
+ });
4739
+ document.getElementById('resetTree').addEventListener('click', () => {
4740
+ input.value = '';
4741
+ input.dispatchEvent(new Event('input'));
4742
+ for (const details of document.querySelectorAll('details')) details.open = true;
4743
+ selectNode('${escapeAttribute(tree.id)}');
4744
+ });
4745
+ selectNode('${escapeAttribute(tree.id)}');
4610
4746
  </script>
4611
4747
  </body>
4612
4748
  </html>
@@ -4774,7 +4910,44 @@ import path10 from "path";
4774
4910
  import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
4775
4911
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4776
4912
  import { z } from "zod";
4777
- var SERVER_VERSION = "3.7.2";
4913
+ var SERVER_VERSION = "3.8.0";
4914
+ var codeLanguageSchema = z.enum([
4915
+ "javascript",
4916
+ "jsx",
4917
+ "typescript",
4918
+ "tsx",
4919
+ "bash",
4920
+ "python",
4921
+ "go",
4922
+ "rust",
4923
+ "java",
4924
+ "kotlin",
4925
+ "scala",
4926
+ "dart",
4927
+ "lua",
4928
+ "zig",
4929
+ "csharp",
4930
+ "c",
4931
+ "cpp",
4932
+ "php",
4933
+ "ruby",
4934
+ "powershell",
4935
+ "swift",
4936
+ "elixir",
4937
+ "ocaml",
4938
+ "objc",
4939
+ "rescript",
4940
+ "solidity",
4941
+ "html",
4942
+ "css",
4943
+ "vue",
4944
+ "svelte",
4945
+ "julia",
4946
+ "verilog",
4947
+ "systemverilog",
4948
+ "r",
4949
+ "sql"
4950
+ ]);
4778
4951
  async function createMcpServer(rootDir) {
4779
4952
  const server = new McpServer({
4780
4953
  name: "swarmvault",
@@ -4883,13 +5056,25 @@ async function createMcpServer(rootDir) {
4883
5056
  inputSchema: {
4884
5057
  question: z.string().min(1).describe("Question or graph search seed"),
4885
5058
  traversal: z.enum(["bfs", "dfs"]).optional().describe("Traversal strategy"),
4886
- budget: z.number().int().min(3).max(50).optional().describe("Maximum nodes to summarize")
5059
+ budget: z.number().int().min(3).max(50).optional().describe("Maximum nodes to summarize"),
5060
+ relations: z.array(z.string().min(1)).optional().describe("Only traverse edges with these relation names"),
5061
+ context: z.array(z.enum(["calls", "imports", "types", "data", "rationale", "evidence"])).optional().describe("Relation group filters for common code/evidence contexts"),
5062
+ evidenceClasses: z.array(z.enum(["extracted", "inferred", "ambiguous"])).optional().describe("Only traverse these evidence classes"),
5063
+ nodeTypes: z.array(z.enum(["source", "concept", "entity", "module", "symbol", "rationale", "memory_task", "decision"])).optional().describe("Prefer traversal around these graph node types"),
5064
+ languages: z.array(codeLanguageSchema).optional().describe("Prefer traversal around nodes with these code languages")
4887
5065
  }
4888
5066
  },
4889
- safeHandler(async ({ question, traversal, budget }) => {
5067
+ safeHandler(async ({ question, traversal, budget, relations, context, evidenceClasses, nodeTypes, languages }) => {
4890
5068
  const result = await queryGraphVault(rootDir, question, {
4891
5069
  traversal,
4892
- budget
5070
+ budget,
5071
+ filters: {
5072
+ relations,
5073
+ relationGroups: context,
5074
+ evidenceClasses,
5075
+ nodeTypes,
5076
+ languages
5077
+ }
4893
5078
  });
4894
5079
  return asToolText(result);
4895
5080
  })
@@ -0,0 +1,32 @@
1
+ import {
2
+ buildMemoryGraphElements,
3
+ ensureMemoryLedger,
4
+ estimateMemoryTaskTokens,
5
+ finishMemoryTask,
6
+ listMemoryTasks,
7
+ loadMemoryTaskPages,
8
+ memoryTaskHashes,
9
+ memoryTaskPageRecord,
10
+ readMemoryTask,
11
+ renderMemoryTaskMarkdown,
12
+ resumeMemoryTask,
13
+ startMemoryTask,
14
+ updateMemoryTask
15
+ } from "./chunk-WOA5LSNB.js";
16
+ import "./chunk-75BU5TQ6.js";
17
+ import "./chunk-NAIERP4C.js";
18
+ export {
19
+ buildMemoryGraphElements,
20
+ ensureMemoryLedger,
21
+ estimateMemoryTaskTokens,
22
+ finishMemoryTask,
23
+ listMemoryTasks,
24
+ loadMemoryTaskPages,
25
+ memoryTaskHashes,
26
+ memoryTaskPageRecord,
27
+ readMemoryTask,
28
+ renderMemoryTaskMarkdown,
29
+ resumeMemoryTask,
30
+ startMemoryTask,
31
+ updateMemoryTask
32
+ };
@@ -0,0 +1,32 @@
1
+ import {
2
+ buildMemoryGraphElements,
3
+ ensureMemoryLedger,
4
+ estimateMemoryTaskTokens,
5
+ finishMemoryTask,
6
+ listMemoryTasks,
7
+ loadMemoryTaskPages,
8
+ memoryTaskHashes,
9
+ memoryTaskPageRecord,
10
+ readMemoryTask,
11
+ renderMemoryTaskMarkdown,
12
+ resumeMemoryTask,
13
+ startMemoryTask,
14
+ updateMemoryTask
15
+ } from "./chunk-WWP3VPEJ.js";
16
+ import "./chunk-75BU5TQ6.js";
17
+ import "./chunk-NAIERP4C.js";
18
+ export {
19
+ buildMemoryGraphElements,
20
+ ensureMemoryLedger,
21
+ estimateMemoryTaskTokens,
22
+ finishMemoryTask,
23
+ listMemoryTasks,
24
+ loadMemoryTaskPages,
25
+ memoryTaskHashes,
26
+ memoryTaskPageRecord,
27
+ readMemoryTask,
28
+ renderMemoryTaskMarkdown,
29
+ resumeMemoryTask,
30
+ startMemoryTask,
31
+ updateMemoryTask
32
+ };
@@ -0,0 +1,32 @@
1
+ import {
2
+ buildMemoryGraphElements,
3
+ ensureMemoryLedger,
4
+ estimateMemoryTaskTokens,
5
+ finishMemoryTask,
6
+ listMemoryTasks,
7
+ loadMemoryTaskPages,
8
+ memoryTaskHashes,
9
+ memoryTaskPageRecord,
10
+ readMemoryTask,
11
+ renderMemoryTaskMarkdown,
12
+ resumeMemoryTask,
13
+ startMemoryTask,
14
+ updateMemoryTask
15
+ } from "./chunk-563TZ4TZ.js";
16
+ import "./chunk-75BU5TQ6.js";
17
+ import "./chunk-NAIERP4C.js";
18
+ export {
19
+ buildMemoryGraphElements,
20
+ ensureMemoryLedger,
21
+ estimateMemoryTaskTokens,
22
+ finishMemoryTask,
23
+ listMemoryTasks,
24
+ loadMemoryTaskPages,
25
+ memoryTaskHashes,
26
+ memoryTaskPageRecord,
27
+ readMemoryTask,
28
+ renderMemoryTaskMarkdown,
29
+ resumeMemoryTask,
30
+ startMemoryTask,
31
+ updateMemoryTask
32
+ };
@@ -0,0 +1,12 @@
1
+ import {
2
+ assertProviderCapability,
3
+ createProvider,
4
+ getProviderForTask,
5
+ getResolvedPaths
6
+ } from "./chunk-75BU5TQ6.js";
7
+ export {
8
+ assertProviderCapability,
9
+ createProvider,
10
+ getProviderForTask,
11
+ getResolvedPaths
12
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarmvaultai/engine",
3
- "version": "3.7.2",
3
+ "version": "3.8.0",
4
4
  "description": "Core engine for SwarmVault: ingest, compile, query, lint, and provider abstractions.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -40,7 +40,7 @@
40
40
  "node": ">=24.0.0"
41
41
  },
42
42
  "scripts": {
43
- "build": "test -f ../viewer/dist/index.html || pnpm --dir ../viewer build; tsup src/index.ts --format esm --dts && tsup --config tsup.hooks.config.ts && rm -rf dist/viewer && mkdir -p dist/viewer && cp -R ../viewer/dist/. dist/viewer/",
43
+ "build": "test -f ../viewer/dist/index.html || pnpm --dir ../viewer build; tsup src/index.ts --format esm --dts && tsup --config tsup.hooks.config.ts && node ../../scripts/copy-engine-grammar-assets.mjs && rm -rf dist/viewer && mkdir -p dist/viewer && cp -R ../viewer/dist/. dist/viewer/",
44
44
  "pretest": "tsup --config tsup.hooks.config.ts",
45
45
  "test": "SWARMVAULT_ALLOW_PRIVATE_URLS=1 vitest run --testTimeout=10000",
46
46
  "typecheck": "tsc --noEmit",
@@ -95,6 +95,8 @@
95
95
  "@types/turndown": "^5.0.5",
96
96
  "graphology-types": "^0.24.8",
97
97
  "tsup": "^8.5.0",
98
+ "tree-sitter-julia": "0.23.1",
99
+ "tree-sitter-systemverilog": "0.3.1",
98
100
  "vitest": "^3.2.4"
99
101
  }
100
102
  }