@swarmvaultai/engine 3.7.3 → 3.9.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
@@ -905,6 +905,25 @@ interface GraphStatsResult {
905
905
  edgeRelations: Record<string, number>;
906
906
  hyperedgeRelations: Record<string, number>;
907
907
  }
908
+ type GraphValidationSeverity = "error" | "warning";
909
+ interface GraphValidationIssue {
910
+ severity: GraphValidationSeverity;
911
+ code: string;
912
+ message: string;
913
+ path?: string;
914
+ id?: string;
915
+ refs?: string[];
916
+ }
917
+ interface GraphValidationResult {
918
+ ok: boolean;
919
+ strict: boolean;
920
+ generatedAt: string;
921
+ counts: GraphStatsResult["counts"];
922
+ errorCount: number;
923
+ warningCount: number;
924
+ issues: GraphValidationIssue[];
925
+ summary: string;
926
+ }
908
927
  interface GraphClusterRefreshResult {
909
928
  graphPath: string;
910
929
  nodeCount: number;
@@ -955,6 +974,20 @@ interface GraphQueryMatch {
955
974
  label: string;
956
975
  score: number;
957
976
  }
977
+ type GraphQueryRelationGroup = "calls" | "imports" | "types" | "data" | "rationale" | "evidence";
978
+ interface GraphQueryFilters {
979
+ relations?: string[];
980
+ relationGroups?: GraphQueryRelationGroup[];
981
+ evidenceClasses?: EvidenceClass[];
982
+ nodeTypes?: GraphNode["type"][];
983
+ languages?: CodeLanguage[];
984
+ }
985
+ interface GraphQueryFilterStats {
986
+ active: boolean;
987
+ droppedEdges: number;
988
+ droppedNodes: number;
989
+ expandedRelations: string[];
990
+ }
958
991
  interface GraphQueryResult {
959
992
  question: string;
960
993
  traversal: "bfs" | "dfs";
@@ -967,6 +1000,8 @@ interface GraphQueryResult {
967
1000
  communities: string[];
968
1001
  summary: string;
969
1002
  matches: GraphQueryMatch[];
1003
+ filters?: GraphQueryFilters;
1004
+ filterStats?: GraphQueryFilterStats;
970
1005
  }
971
1006
  interface GraphPathResult {
972
1007
  from: string;
@@ -2466,6 +2501,10 @@ declare function getGraphStatus(rootDir: string, options?: {
2466
2501
  repoRoots?: string[];
2467
2502
  }): Promise<GraphStatusResult>;
2468
2503
 
2504
+ declare function graphStats(graph: GraphArtifact): GraphStatsResult;
2505
+ declare function validateGraphArtifact(graph: GraphArtifact, options?: {
2506
+ strict?: boolean;
2507
+ }): GraphValidationResult;
2469
2508
  declare function graphDiff(oldGraph: GraphArtifact, newGraph: GraphArtifact): GraphDiffResult;
2470
2509
  /**
2471
2510
  * Compute the blast radius of changing a file/module by tracing reverse import
@@ -3027,12 +3066,17 @@ declare function searchVault(rootDir: string, query: string, limit?: number): Pr
3027
3066
  declare function queryGraphVault(rootDir: string, rawQuestion: string, options?: {
3028
3067
  traversal?: "bfs" | "dfs";
3029
3068
  budget?: number;
3069
+ filters?: GraphQueryFilters;
3030
3070
  }): Promise<GraphQueryResult>;
3031
3071
  declare function benchmarkVault(rootDir: string, options?: BenchmarkOptions): Promise<BenchmarkArtifact>;
3032
3072
  declare function pathGraphVault(rootDir: string, from: string, to: string): Promise<GraphPathResult>;
3033
3073
  declare function explainGraphVault(rootDir: string, target: string): Promise<GraphExplainResult>;
3034
3074
  declare function listGraphHyperedges(rootDir: string, target?: string, limit?: number): Promise<GraphHyperedge[]>;
3035
3075
  declare function graphStatsVault(rootDir: string): Promise<GraphStatsResult>;
3076
+ declare function validateGraphVault(rootDir: string, options?: {
3077
+ graphPath?: string;
3078
+ strict?: boolean;
3079
+ }): Promise<ReturnType<typeof validateGraphArtifact>>;
3036
3080
  declare function refreshGraphClusters(rootDir: string, options?: {
3037
3081
  resolution?: number;
3038
3082
  }): Promise<GraphClusterRefreshResult>;
@@ -3140,4 +3184,4 @@ declare function createWebSearchAdapter(id: string, config: WebSearchProviderCon
3140
3184
  type WebSearchTaskId = "deepLintProvider" | "queryProvider" | "exploreProvider";
3141
3185
  declare function getWebSearchAdapterForTask(rootDir: string, task: WebSearchTaskId): Promise<WebSearchAdapter>;
3142
3186
 
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 };
3187
+ 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 GraphValidationIssue, type GraphValidationResult, type GraphValidationSeverity, 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, graphStats, 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, validateGraphArtifact, validateGraphVault, watchVault, webSearchProviderTypeSchema, withCapabilityFallback, writeRetrievalManifest };
package/dist/index.js CHANGED
@@ -45,6 +45,7 @@ import {
45
45
  getWorkspaceInfo,
46
46
  graphDiff,
47
47
  graphHash,
48
+ graphStats,
48
49
  graphStatsVault,
49
50
  guidedSourceSessionStatePath,
50
51
  importInbox,
@@ -121,11 +122,13 @@ import {
121
122
  syncTrackedRepos,
122
123
  syncTrackedReposForWatch,
123
124
  updateMemoryTask,
125
+ validateGraphArtifact,
126
+ validateGraphVault,
124
127
  validateUrlSafety,
125
128
  writeGuidedSourceSession,
126
129
  writeRetrievalManifest,
127
130
  writeWatchStatusArtifact
128
- } from "./chunk-WWP3VPEJ.js";
131
+ } from "./chunk-2PN46RDI.js";
129
132
  import {
130
133
  LocalWhisperProviderAdapter,
131
134
  SWARMVAULT_OUT_ENV,
@@ -4410,6 +4413,23 @@ function compareTreeNodes(left, right) {
4410
4413
  function escapeHtml(value) {
4411
4414
  return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
4412
4415
  }
4416
+ function escapeAttribute(value) {
4417
+ return escapeHtml(value).replaceAll("'", "&#39;");
4418
+ }
4419
+ function escapeScriptJson(value) {
4420
+ return JSON.stringify(value).replace(/[<>&]/g, (character) => {
4421
+ switch (character) {
4422
+ case "<":
4423
+ return "\\u003c";
4424
+ case ">":
4425
+ return "\\u003e";
4426
+ case "&":
4427
+ return "\\u0026";
4428
+ default:
4429
+ return character;
4430
+ }
4431
+ });
4432
+ }
4413
4433
  function normalizeSourcePath(rootDir, source) {
4414
4434
  const candidate = source.repoRelativePath ?? source.originalPath ?? source.storedPath ?? source.title;
4415
4435
  if (source.repoRelativePath) {
@@ -4538,6 +4558,43 @@ function buildGraphTree(graph, options = {}) {
4538
4558
  }
4539
4559
  return sortAndCapTree(root, Math.max(1, options.maxChildren ?? DEFAULT_MAX_CHILDREN));
4540
4560
  }
4561
+ function collectTreeInspectorEntries(tree, graph) {
4562
+ const graphNodes = new Map(graph.nodes.map((node) => [node.id, node]));
4563
+ const entries = {};
4564
+ const visit = (node) => {
4565
+ 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) => {
4566
+ const outgoing = edge.source === node.nodeId;
4567
+ const otherId = outgoing ? edge.target : edge.source;
4568
+ return {
4569
+ id: edge.id,
4570
+ relation: edge.relation,
4571
+ direction: outgoing ? "outgoing" : "incoming",
4572
+ otherId,
4573
+ otherLabel: graphNodes.get(otherId)?.label ?? otherId,
4574
+ evidenceClass: edge.evidenceClass,
4575
+ confidence: edge.confidence
4576
+ };
4577
+ }) : [];
4578
+ entries[node.id] = {
4579
+ id: node.id,
4580
+ label: node.label,
4581
+ kind: node.kind,
4582
+ count: node.count,
4583
+ path: node.path,
4584
+ sourceId: node.sourceId,
4585
+ nodeId: node.nodeId,
4586
+ language: node.language,
4587
+ symbolKind: node.symbolKind,
4588
+ hiddenChildren: node.hiddenChildren,
4589
+ edges
4590
+ };
4591
+ for (const child of node.children) {
4592
+ visit(child);
4593
+ }
4594
+ };
4595
+ visit(tree);
4596
+ return entries;
4597
+ }
4541
4598
  function renderNode(node) {
4542
4599
  const meta = [
4543
4600
  node.kind,
@@ -4549,15 +4606,17 @@ function renderNode(node) {
4549
4606
  node.count ? `${node.count} item${node.count === 1 ? "" : "s"}` : void 0
4550
4607
  ].filter(Boolean);
4551
4608
  const content = [
4552
- `<span class="label">${escapeHtml(node.label)}</span>`,
4609
+ `<button class="node-button" type="button" data-tree-id="${escapeAttribute(node.id)}"><span class="label">${escapeHtml(node.label)}</span></button>`,
4610
+ node.count ? `<span class="count">${node.count}</span>` : "",
4553
4611
  meta.length ? `<span class="meta">${escapeHtml(meta.join(" \xB7 "))}</span>` : ""
4554
4612
  ].join("");
4555
4613
  if (node.children.length === 0) {
4556
- return `<li class="tree-node kind-${escapeHtml(node.kind)}">${content}</li>`;
4614
+ return `<li class="tree-node kind-${escapeAttribute(node.kind)}" data-tree-id="${escapeAttribute(node.id)}">${content}</li>`;
4557
4615
  }
4558
- return `<li class="tree-node kind-${escapeHtml(node.kind)}"><details open><summary>${content}</summary><ul>${node.children.map(renderNode).join("")}</ul></details></li>`;
4616
+ 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
4617
  }
4560
4618
  function renderGraphTreeHtml(tree, graph) {
4619
+ const inspectorEntries = collectTreeInspectorEntries(tree, graph);
4561
4620
  return `<!doctype html>
4562
4621
  <html lang="en">
4563
4622
  <head>
@@ -4567,27 +4626,44 @@ function renderGraphTreeHtml(tree, graph) {
4567
4626
  <style>
4568
4627
  :root { color-scheme: light dark; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
4569
4628
  body { margin: 0; background: #f7f7f5; color: #171717; }
4570
- main { max-width: 1120px; margin: 0 auto; padding: 32px 20px 56px; }
4629
+ main { max-width: 1280px; margin: 0 auto; padding: 32px 20px 56px; }
4571
4630
  h1 { font-size: 28px; line-height: 1.2; margin: 0 0 8px; }
4572
4631
  .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; }
4632
+ .toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 0 0 18px; }
4633
+ input { flex: 1 1 320px; min-width: 0; border: 1px solid #c9c9c9; border-radius: 6px; padding: 10px 12px; font: inherit; background: #fff; color: inherit; }
4634
+ .toolbar button { border: 1px solid #c9c9c9; border-radius: 6px; background: #fff; color: inherit; font: inherit; padding: 10px 12px; cursor: pointer; }
4635
+ .layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; align-items: start; }
4636
+ .tree, .inspector { background: #fff; border: 1px solid #deded9; border-radius: 8px; padding: 16px 18px; }
4637
+ .inspector { position: sticky; top: 16px; }
4638
+ .inspector h2 { font-size: 17px; margin: 0 0 10px; }
4639
+ .inspector dl { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 6px 10px; margin: 0 0 16px; font-size: 13px; }
4640
+ .inspector dt { color: #666; }
4641
+ .inspector dd { margin: 0; overflow-wrap: anywhere; }
4642
+ .edge-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
4643
+ .edge-list li { border-top: 1px solid #ecece8; padding-top: 8px; }
4576
4644
  ul { list-style: none; margin: 0; padding-left: 20px; }
4577
4645
  .tree > ul { padding-left: 0; }
4578
4646
  li { margin: 4px 0; }
4579
4647
  summary { cursor: pointer; }
4648
+ .node-button { border: 0; background: transparent; color: inherit; font: inherit; padding: 2px 0; cursor: pointer; text-align: left; }
4649
+ .node-button:focus-visible, .toolbar button:focus-visible, input:focus-visible { outline: 2px solid #1f6feb; outline-offset: 2px; }
4580
4650
  .label { font-weight: 600; }
4651
+ .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
4652
  .meta { color: #666; font-size: 12px; margin-left: 8px; }
4582
4653
  .kind-directory > details > summary .label { color: #245b78; }
4583
4654
  .kind-source > details > summary .label, .kind-source > .label { color: #22543d; }
4584
4655
  .kind-module > details > summary .label { color: #6b3f12; }
4585
4656
  .kind-rationale > .label { color: #6d2f46; }
4657
+ .selected > details > summary, .selected > .node-button { background: #eef6f1; border-radius: 4px; }
4586
4658
  .hidden { display: none !important; }
4659
+ @media (max-width: 900px) { .layout { grid-template-columns: 1fr; } .inspector { position: static; } }
4587
4660
  @media (prefers-color-scheme: dark) {
4588
4661
  body { background: #161616; color: #efefef; }
4589
- .subtitle, .meta { color: #ababab; }
4590
- input, .tree { background: #202020; border-color: #3a3a3a; }
4662
+ .subtitle, .meta, .inspector dt { color: #ababab; }
4663
+ input, .tree, .inspector, .toolbar button { background: #202020; border-color: #3a3a3a; }
4664
+ .count { background: #333329; color: #deded8; }
4665
+ .edge-list li { border-color: #333; }
4666
+ .selected > details > summary, .selected > .node-button { background: #24362d; }
4591
4667
  }
4592
4668
  </style>
4593
4669
  </head>
@@ -4595,11 +4671,61 @@ summary { cursor: pointer; }
4595
4671
  <main>
4596
4672
  <h1>${escapeHtml(tree.label)}</h1>
4597
4673
  <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>
4674
+ <div class="toolbar">
4675
+ <input id="filter" type="search" placeholder="Filter files, modules, symbols, or ids" aria-label="Filter graph tree">
4676
+ <button type="button" id="expandAll">Expand all</button>
4677
+ <button type="button" id="collapseAll">Collapse all</button>
4678
+ <button type="button" id="resetTree">Reset</button>
4679
+ </div>
4680
+ <div class="layout">
4681
+ <section class="tree" aria-label="Graph tree"><ul>${renderNode(tree)}</ul></section>
4682
+ <aside class="inspector" aria-live="polite">
4683
+ <h2 id="inspectorTitle">Select a node</h2>
4684
+ <dl id="inspectorMeta"></dl>
4685
+ <ul class="edge-list" id="inspectorEdges"></ul>
4686
+ </aside>
4687
+ </div>
4600
4688
  </main>
4601
4689
  <script>
4690
+ const treeData = ${escapeScriptJson(inspectorEntries)};
4602
4691
  const input = document.getElementById('filter');
4692
+ const inspectorTitle = document.getElementById('inspectorTitle');
4693
+ const inspectorMeta = document.getElementById('inspectorMeta');
4694
+ const inspectorEdges = document.getElementById('inspectorEdges');
4695
+ const renderText = (value) => String(value ?? '').replace(/[&<>"']/g, (character) => ({
4696
+ '&': '&amp;',
4697
+ '<': '&lt;',
4698
+ '>': '&gt;',
4699
+ '"': '&quot;',
4700
+ "'": '&#39;'
4701
+ })[character]);
4702
+ function selectNode(id) {
4703
+ const entry = treeData[id];
4704
+ if (!entry) return;
4705
+ for (const selected of document.querySelectorAll('.selected')) selected.classList.remove('selected');
4706
+ const selectedNode = Array.from(document.querySelectorAll('[data-tree-id]')).find((node) => node.dataset.treeId === id);
4707
+ selectedNode?.classList.add('selected');
4708
+ inspectorTitle.textContent = entry.label;
4709
+ const rows = [
4710
+ ['Kind', entry.kind],
4711
+ ['Count', entry.count],
4712
+ ['Path', entry.path],
4713
+ ['Source', entry.sourceId],
4714
+ ['Node', entry.nodeId],
4715
+ ['Language', entry.language],
4716
+ ['Symbol', entry.symbolKind],
4717
+ ['Hidden', entry.hiddenChildren]
4718
+ ].filter(([, value]) => value !== undefined && value !== null && value !== '');
4719
+ inspectorMeta.innerHTML = rows.map(([label, value]) => '<dt>' + renderText(label) + '</dt><dd>' + renderText(value) + '</dd>').join('');
4720
+ inspectorEdges.innerHTML = entry.edges.length
4721
+ ? 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('')
4722
+ : '<li>No connected edges in the top slice.</li>';
4723
+ }
4724
+ document.querySelector('.tree')?.addEventListener('click', (event) => {
4725
+ const button = event.target.closest('.node-button');
4726
+ if (!button) return;
4727
+ selectNode(button.dataset.treeId);
4728
+ });
4603
4729
  input.addEventListener('input', () => {
4604
4730
  const query = input.value.trim().toLowerCase();
4605
4731
  for (const node of document.querySelectorAll('.tree-node')) {
@@ -4607,6 +4733,19 @@ input.addEventListener('input', () => {
4607
4733
  node.classList.toggle('hidden', query.length > 0 && !text.includes(query));
4608
4734
  }
4609
4735
  });
4736
+ document.getElementById('expandAll').addEventListener('click', () => {
4737
+ for (const details of document.querySelectorAll('details')) details.open = true;
4738
+ });
4739
+ document.getElementById('collapseAll').addEventListener('click', () => {
4740
+ for (const details of document.querySelectorAll('details')) details.open = false;
4741
+ });
4742
+ document.getElementById('resetTree').addEventListener('click', () => {
4743
+ input.value = '';
4744
+ input.dispatchEvent(new Event('input'));
4745
+ for (const details of document.querySelectorAll('details')) details.open = true;
4746
+ selectNode('${escapeAttribute(tree.id)}');
4747
+ });
4748
+ selectNode('${escapeAttribute(tree.id)}');
4610
4749
  </script>
4611
4750
  </body>
4612
4751
  </html>
@@ -4774,7 +4913,44 @@ import path10 from "path";
4774
4913
  import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
4775
4914
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4776
4915
  import { z } from "zod";
4777
- var SERVER_VERSION = "3.7.3";
4916
+ var SERVER_VERSION = "3.9.0";
4917
+ var codeLanguageSchema = z.enum([
4918
+ "javascript",
4919
+ "jsx",
4920
+ "typescript",
4921
+ "tsx",
4922
+ "bash",
4923
+ "python",
4924
+ "go",
4925
+ "rust",
4926
+ "java",
4927
+ "kotlin",
4928
+ "scala",
4929
+ "dart",
4930
+ "lua",
4931
+ "zig",
4932
+ "csharp",
4933
+ "c",
4934
+ "cpp",
4935
+ "php",
4936
+ "ruby",
4937
+ "powershell",
4938
+ "swift",
4939
+ "elixir",
4940
+ "ocaml",
4941
+ "objc",
4942
+ "rescript",
4943
+ "solidity",
4944
+ "html",
4945
+ "css",
4946
+ "vue",
4947
+ "svelte",
4948
+ "julia",
4949
+ "verilog",
4950
+ "systemverilog",
4951
+ "r",
4952
+ "sql"
4953
+ ]);
4778
4954
  async function createMcpServer(rootDir) {
4779
4955
  const server = new McpServer({
4780
4956
  name: "swarmvault",
@@ -4883,13 +5059,25 @@ async function createMcpServer(rootDir) {
4883
5059
  inputSchema: {
4884
5060
  question: z.string().min(1).describe("Question or graph search seed"),
4885
5061
  traversal: z.enum(["bfs", "dfs"]).optional().describe("Traversal strategy"),
4886
- budget: z.number().int().min(3).max(50).optional().describe("Maximum nodes to summarize")
5062
+ budget: z.number().int().min(3).max(50).optional().describe("Maximum nodes to summarize"),
5063
+ relations: z.array(z.string().min(1)).optional().describe("Only traverse edges with these relation names"),
5064
+ context: z.array(z.enum(["calls", "imports", "types", "data", "rationale", "evidence"])).optional().describe("Relation group filters for common code/evidence contexts"),
5065
+ evidenceClasses: z.array(z.enum(["extracted", "inferred", "ambiguous"])).optional().describe("Only traverse these evidence classes"),
5066
+ nodeTypes: z.array(z.enum(["source", "concept", "entity", "module", "symbol", "rationale", "memory_task", "decision"])).optional().describe("Prefer traversal around these graph node types"),
5067
+ languages: z.array(codeLanguageSchema).optional().describe("Prefer traversal around nodes with these code languages")
4887
5068
  }
4888
5069
  },
4889
- safeHandler(async ({ question, traversal, budget }) => {
5070
+ safeHandler(async ({ question, traversal, budget, relations, context, evidenceClasses, nodeTypes, languages }) => {
4890
5071
  const result = await queryGraphVault(rootDir, question, {
4891
5072
  traversal,
4892
- budget
5073
+ budget,
5074
+ filters: {
5075
+ relations,
5076
+ relationGroups: context,
5077
+ evidenceClasses,
5078
+ nodeTypes,
5079
+ languages
5080
+ }
4893
5081
  });
4894
5082
  return asToolText(result);
4895
5083
  })
@@ -8888,6 +9076,7 @@ export {
8888
9076
  getWebSearchAdapterForTask,
8889
9077
  getWorkspaceInfo,
8890
9078
  graphDiff,
9079
+ graphStats,
8891
9080
  graphStatsVault,
8892
9081
  guideManagedSource,
8893
9082
  guideSourceScope,
@@ -8983,6 +9172,8 @@ export {
8983
9172
  trimToTokenBudget,
8984
9173
  uninstallGitHooks,
8985
9174
  updateMemoryTask,
9175
+ validateGraphArtifact,
9176
+ validateGraphVault,
8986
9177
  watchVault,
8987
9178
  withCapabilityFallback,
8988
9179
  writeRetrievalManifest
@@ -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-2PN46RDI.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-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-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
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarmvaultai/engine",
3
- "version": "3.7.3",
3
+ "version": "3.9.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
  }