@aaronsb/kg-cli 0.6.6 → 0.7.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.
Files changed (96) hide show
  1. package/dist/api/client.d.ts +127 -1
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +147 -0
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/cli/batch.d.ts +8 -0
  6. package/dist/cli/batch.d.ts.map +1 -0
  7. package/dist/cli/batch.js +225 -0
  8. package/dist/cli/batch.js.map +1 -0
  9. package/dist/cli/commands.d.ts.map +1 -1
  10. package/dist/cli/commands.js +8 -0
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/cli/concept.d.ts +9 -0
  13. package/dist/cli/concept.d.ts.map +1 -0
  14. package/dist/cli/concept.js +336 -0
  15. package/dist/cli/concept.js.map +1 -0
  16. package/dist/cli/edge.d.ts +9 -0
  17. package/dist/cli/edge.d.ts.map +1 -0
  18. package/dist/cli/edge.js +364 -0
  19. package/dist/cli/edge.js.map +1 -0
  20. package/dist/cli/jobs.js +111 -3
  21. package/dist/cli/jobs.js.map +1 -1
  22. package/dist/cli/storage.d.ts +10 -0
  23. package/dist/cli/storage.d.ts.map +1 -0
  24. package/dist/cli/storage.js +260 -0
  25. package/dist/cli/storage.js.map +1 -0
  26. package/dist/cli/vocabulary/index.d.ts.map +1 -1
  27. package/dist/cli/vocabulary/index.js +1 -0
  28. package/dist/cli/vocabulary/index.js.map +1 -1
  29. package/dist/cli/vocabulary/similarity.d.ts +1 -0
  30. package/dist/cli/vocabulary/similarity.d.ts.map +1 -1
  31. package/dist/cli/vocabulary/similarity.js +60 -9
  32. package/dist/cli/vocabulary/similarity.js.map +1 -1
  33. package/dist/lib/interactive.d.ts +84 -0
  34. package/dist/lib/interactive.d.ts.map +1 -0
  35. package/dist/lib/interactive.js +296 -0
  36. package/dist/lib/interactive.js.map +1 -0
  37. package/dist/lib/validation.d.ts +106 -0
  38. package/dist/lib/validation.d.ts.map +1 -0
  39. package/dist/lib/validation.js +354 -0
  40. package/dist/lib/validation.js.map +1 -0
  41. package/dist/mcp/formatters/concept.d.ts +24 -0
  42. package/dist/mcp/formatters/concept.d.ts.map +1 -0
  43. package/dist/mcp/formatters/concept.js +243 -0
  44. package/dist/mcp/formatters/concept.js.map +1 -0
  45. package/dist/mcp/formatters/document.d.ts +25 -0
  46. package/dist/mcp/formatters/document.d.ts.map +1 -0
  47. package/dist/mcp/formatters/document.js +178 -0
  48. package/dist/mcp/formatters/document.js.map +1 -0
  49. package/dist/mcp/formatters/epistemic.d.ts +16 -0
  50. package/dist/mcp/formatters/epistemic.d.ts.map +1 -0
  51. package/dist/mcp/formatters/epistemic.js +269 -0
  52. package/dist/mcp/formatters/epistemic.js.map +1 -0
  53. package/dist/mcp/formatters/graph.d.ts +63 -0
  54. package/dist/mcp/formatters/graph.d.ts.map +1 -0
  55. package/dist/mcp/formatters/graph.js +220 -0
  56. package/dist/mcp/formatters/graph.js.map +1 -0
  57. package/dist/mcp/formatters/index.d.ts +18 -0
  58. package/dist/mcp/formatters/index.d.ts.map +1 -0
  59. package/dist/mcp/formatters/index.js +63 -0
  60. package/dist/mcp/formatters/index.js.map +1 -0
  61. package/dist/mcp/formatters/ingest.d.ts +16 -0
  62. package/dist/mcp/formatters/ingest.d.ts.map +1 -0
  63. package/dist/mcp/formatters/ingest.js +169 -0
  64. package/dist/mcp/formatters/ingest.js.map +1 -0
  65. package/dist/mcp/formatters/job.d.ts +13 -0
  66. package/dist/mcp/formatters/job.d.ts.map +1 -0
  67. package/dist/mcp/formatters/job.js +204 -0
  68. package/dist/mcp/formatters/job.js.map +1 -0
  69. package/dist/mcp/formatters/source.d.ts +19 -0
  70. package/dist/mcp/formatters/source.d.ts.map +1 -0
  71. package/dist/mcp/formatters/source.js +182 -0
  72. package/dist/mcp/formatters/source.js.map +1 -0
  73. package/dist/mcp/formatters/system.d.ts +10 -0
  74. package/dist/mcp/formatters/system.d.ts.map +1 -0
  75. package/dist/mcp/formatters/system.js +152 -0
  76. package/dist/mcp/formatters/system.js.map +1 -0
  77. package/dist/mcp/formatters/utils.d.ts +17 -0
  78. package/dist/mcp/formatters/utils.d.ts.map +1 -0
  79. package/dist/mcp/formatters/utils.js +55 -0
  80. package/dist/mcp/formatters/utils.js.map +1 -0
  81. package/dist/mcp/graph-operations.d.ts +242 -0
  82. package/dist/mcp/graph-operations.d.ts.map +1 -0
  83. package/dist/mcp/graph-operations.js +532 -0
  84. package/dist/mcp/graph-operations.js.map +1 -0
  85. package/dist/mcp-server.js +460 -32
  86. package/dist/mcp-server.js.map +1 -1
  87. package/dist/types/index.d.ts +153 -0
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/version.d.ts +3 -3
  90. package/dist/version.js +3 -3
  91. package/dist/version.js.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/mcp/formatters.d.ts +0 -100
  94. package/dist/mcp/formatters.d.ts.map +0 -1
  95. package/dist/mcp/formatters.js +0 -1411
  96. package/dist/mcp/formatters.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Document formatters (ADR-084)
3
+ */
4
+ /**
5
+ * Format document search results (ADR-084)
6
+ */
7
+ export declare function formatDocumentSearchResults(result: any): string;
8
+ /**
9
+ * Format document list (ADR-084)
10
+ */
11
+ export declare function formatDocumentList(result: any): string;
12
+ /**
13
+ * Format document content (ADR-084)
14
+ */
15
+ export declare function formatDocumentContent(result: any): string;
16
+ /**
17
+ * Format document concepts (ADR-084)
18
+ */
19
+ export declare function formatDocumentConcepts(result: any): string;
20
+ /**
21
+ * Format document concepts with full details (ADR-084)
22
+ * Used when include_details=true - fetches all concept info in one call
23
+ */
24
+ export declare function formatDocumentConceptsDetailed(docResult: any, conceptDetails: any[]): string;
25
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/mcp/formatters/document.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAgC/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAuBtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAyBzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAyB1D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,CA+D5F"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * Document formatters (ADR-084)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatDocumentSearchResults = formatDocumentSearchResults;
7
+ exports.formatDocumentList = formatDocumentList;
8
+ exports.formatDocumentContent = formatDocumentContent;
9
+ exports.formatDocumentConcepts = formatDocumentConcepts;
10
+ exports.formatDocumentConceptsDetailed = formatDocumentConceptsDetailed;
11
+ const utils_js_1 = require("./utils.js");
12
+ /**
13
+ * Format document search results (ADR-084)
14
+ */
15
+ function formatDocumentSearchResults(result) {
16
+ let output = `# Document Search: "${result.query || 'documents'}"\n\n`;
17
+ output += `Found ${result.total_matches} document(s)\n\n`;
18
+ if (result.documents.length === 0) {
19
+ output += 'No documents found matching this query.\n';
20
+ return output;
21
+ }
22
+ result.documents.forEach((doc, i) => {
23
+ output += `## ${i + 1}. ${doc.filename}\n\n`;
24
+ output += `Document ID: ${doc.document_id}\n`;
25
+ output += `Ontology: ${doc.ontology}\n`;
26
+ output += `Similarity: ${(doc.best_similarity * 100).toFixed(1)}%\n`;
27
+ output += `Source Chunks: ${doc.source_count}\n`;
28
+ if (doc.concept_ids && doc.concept_ids.length > 0) {
29
+ const conceptPreview = doc.concept_ids.slice(0, 5).join(', ');
30
+ const more = doc.concept_ids.length > 5 ? ` (+${doc.concept_ids.length - 5} more)` : '';
31
+ output += `Concepts: ${conceptPreview}${more}\n`;
32
+ }
33
+ output += '\n';
34
+ });
35
+ // Usage hints
36
+ output += '## Next Steps\n\n';
37
+ output += '- Use `document` tool with action "show" to view document content\n';
38
+ output += '- Use `document` tool with action "concepts" to see all extracted concepts\n';
39
+ output += '- Use `concept` tool to explore individual concepts in detail\n';
40
+ return output;
41
+ }
42
+ /**
43
+ * Format document list (ADR-084)
44
+ */
45
+ function formatDocumentList(result) {
46
+ let output = `# Documents\n\n`;
47
+ output += `Showing ${result.documents.length} of ${result.total} documents\n\n`;
48
+ if (result.documents.length === 0) {
49
+ output += 'No documents found.\n';
50
+ return output;
51
+ }
52
+ result.documents.forEach((doc, i) => {
53
+ output += `${i + 1}. **${doc.filename}**\n`;
54
+ output += ` - ID: ${doc.document_id.substring(0, 50)}...\n`;
55
+ output += ` - Ontology: ${doc.ontology}\n`;
56
+ output += ` - Type: ${doc.content_type || 'document'}\n`;
57
+ output += ` - Sources: ${doc.source_count}, Concepts: ${doc.concept_count}\n`;
58
+ output += '\n';
59
+ });
60
+ if (result.total > result.documents.length) {
61
+ output += `Use offset=${result.offset + result.documents.length} to see more.\n`;
62
+ }
63
+ return output;
64
+ }
65
+ /**
66
+ * Format document content (ADR-084)
67
+ */
68
+ function formatDocumentContent(result) {
69
+ let output = `# Document Content\n\n`;
70
+ output += `Type: ${result.content_type}\n`;
71
+ output += `Chunks: ${result.chunks.length}\n\n`;
72
+ if (result.content_type === 'image') {
73
+ if (result.content.prose) {
74
+ output += '## Image Description\n\n';
75
+ output += result.content.prose + '\n\n';
76
+ }
77
+ if (result.content.image) {
78
+ output += `[Image data: ${result.content.image.length} bytes base64]\n`;
79
+ }
80
+ }
81
+ else {
82
+ if (result.content.document) {
83
+ output += '## Content\n\n';
84
+ output += result.content.document + '\n';
85
+ }
86
+ else if (result.content.error) {
87
+ output += `Error: ${result.content.error}\n`;
88
+ }
89
+ else {
90
+ output += 'No content available.\n';
91
+ }
92
+ }
93
+ return output;
94
+ }
95
+ /**
96
+ * Format document concepts (ADR-084)
97
+ */
98
+ function formatDocumentConcepts(result) {
99
+ let output = `# Concepts: ${result.filename}\n\n`;
100
+ output += `Document: ${result.document_id}\n`;
101
+ output += `Total: ${result.total} concept(s)\n\n`;
102
+ if (result.concepts.length === 0) {
103
+ output += 'No concepts found for this document.\n';
104
+ return output;
105
+ }
106
+ result.concepts.forEach((concept, i) => {
107
+ output += `${i + 1}. **${concept.name}**\n`;
108
+ output += ` - ID: ${concept.concept_id}\n`;
109
+ output += ` - Source: ${concept.source_id}\n`;
110
+ output += ` - Instances: ${concept.instance_count}\n`;
111
+ output += '\n';
112
+ });
113
+ // Usage hints
114
+ output += '## Next Steps\n\n';
115
+ output += '- Use `concept` tool with action "details" for full concept information\n';
116
+ output += '- Use `concept` tool with action "connect" to find relationships between concepts\n';
117
+ output += '- Or use `include_details: true` to get full details in one call\n';
118
+ return output;
119
+ }
120
+ /**
121
+ * Format document concepts with full details (ADR-084)
122
+ * Used when include_details=true - fetches all concept info in one call
123
+ */
124
+ function formatDocumentConceptsDetailed(docResult, conceptDetails) {
125
+ let output = `# Concepts: ${docResult.filename}\n\n`;
126
+ output += `Document: ${docResult.document_id}\n`;
127
+ output += `Total: ${conceptDetails.length} unique concept(s)\n\n`;
128
+ if (conceptDetails.length === 0) {
129
+ output += 'No concepts found for this document.\n';
130
+ return output;
131
+ }
132
+ conceptDetails.forEach((concept, i) => {
133
+ if (concept.error) {
134
+ output += `## ${i + 1}. ${concept.label}\n\n`;
135
+ output += `ID: ${concept.concept_id}\n`;
136
+ output += `Status: Failed to load\n\n`;
137
+ return;
138
+ }
139
+ output += `## ${i + 1}. ${concept.label}\n\n`;
140
+ if (concept.description) {
141
+ output += `${concept.description}\n\n`;
142
+ }
143
+ output += `ID: ${concept.concept_id}\n`;
144
+ output += `Documents: ${concept.documents?.join(', ') || 'Unknown'}\n`;
145
+ output += `Evidence: ${concept.instances?.length || 0} instances\n`;
146
+ // Grounding with confidence
147
+ if (concept.grounding_strength !== undefined || concept.grounding_display) {
148
+ const grounding = concept.grounding_display || (0, utils_js_1.formatGroundingStrength)(concept.grounding_strength);
149
+ output += `Grounding: ${grounding}\n`;
150
+ }
151
+ // Sample evidence (max 2)
152
+ if (concept.instances && concept.instances.length > 0) {
153
+ output += `\n### Evidence Samples\n\n`;
154
+ concept.instances.slice(0, 2).forEach((inst, idx) => {
155
+ const truncated = inst.quote.length > 120 ? inst.quote.substring(0, 120) + '...' : inst.quote;
156
+ output += `${idx + 1}. ${inst.document} (para ${inst.paragraph}):\n`;
157
+ output += ` "${truncated}"\n`;
158
+ });
159
+ if (concept.instances.length > 2) {
160
+ output += ` ... and ${concept.instances.length - 2} more\n`;
161
+ }
162
+ }
163
+ // Relationships (max 5)
164
+ if (concept.relationships && concept.relationships.length > 0) {
165
+ output += `\n### Relationships (${concept.relationships.length})\n\n`;
166
+ concept.relationships.slice(0, 5).forEach((rel) => {
167
+ const confidence = rel.confidence ? ` (${(rel.confidence * 100).toFixed(0)}%)` : '';
168
+ output += `${rel.rel_type} -> ${rel.to_label}${confidence}\n`;
169
+ });
170
+ if (concept.relationships.length > 5) {
171
+ output += `... and ${concept.relationships.length - 5} more\n`;
172
+ }
173
+ }
174
+ output += '\n---\n\n';
175
+ });
176
+ return output;
177
+ }
178
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/mcp/formatters/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Epistemic status formatters (ADR-065)
3
+ */
4
+ /**
5
+ * Format epistemic status list (ADR-065)
6
+ */
7
+ export declare function formatEpistemicStatusList(result: any): string;
8
+ /**
9
+ * Format epistemic status details for a specific type (ADR-065)
10
+ */
11
+ export declare function formatEpistemicStatusDetails(result: any): string;
12
+ /**
13
+ * Format epistemic status measurement results (ADR-065)
14
+ */
15
+ export declare function formatEpistemicStatusMeasurement(result: any): string;
16
+ //# sourceMappingURL=epistemic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epistemic.d.ts","sourceRoot":"","sources":["../../../src/mcp/formatters/epistemic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA8E7D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAiGhE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAoEpE"}
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ /**
3
+ * Epistemic status formatters (ADR-065)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatEpistemicStatusList = formatEpistemicStatusList;
7
+ exports.formatEpistemicStatusDetails = formatEpistemicStatusDetails;
8
+ exports.formatEpistemicStatusMeasurement = formatEpistemicStatusMeasurement;
9
+ /**
10
+ * Format epistemic status interpretation hint
11
+ */
12
+ function formatEpistemicStatusInterpretation(status) {
13
+ const interpretations = {
14
+ 'WELL_GROUNDED': 'Well-established knowledge with strong evidence support (avg grounding >0.8). Highly reliable for reasoning.',
15
+ 'MIXED_GROUNDING': 'Variable validation - grounding ranges 0.15-0.8 (15-80% net support). Represents mixed evidence or evolving understanding.',
16
+ 'WEAK_GROUNDING': 'Weak positive grounding 0.0-0.15 (0-15% net support). Developing evidence, emerging knowledge. Use for exploratory reasoning.',
17
+ 'POORLY_GROUNDED': 'Weak negative grounding -0.5-0.0 (0-50% net contradiction). Uncertain, liminal knowledge. Unclear epistemic status.',
18
+ 'CONTRADICTED': 'Strong negative grounding <-0.5 (>50% net contradiction). Refuted claims, contradicted by evidence.',
19
+ 'HISTORICAL': 'Temporal vocabulary with past-tense markers. Important for understanding evolution of concepts over time.',
20
+ 'INSUFFICIENT_DATA': 'Less than 3 measurements available. Need more graph data to establish epistemic status.',
21
+ };
22
+ return interpretations[status] || 'Unknown epistemic status classification.';
23
+ }
24
+ /**
25
+ * Format epistemic status list (ADR-065)
26
+ */
27
+ function formatEpistemicStatusList(result) {
28
+ let output = '# Epistemic Status Classification\n\n';
29
+ output += `Total vocabulary types: ${result.total}\n\n`;
30
+ if (!result.types || result.types.length === 0) {
31
+ output += '**No epistemic status data available.**\n\n';
32
+ output += 'Run measurement first using the "measure" action to calculate epistemic status for all vocabulary types.\n\n';
33
+ output += '**What This Means:** Epistemic status reflects how well-established each relationship type is based on evidence grounding. ';
34
+ output += 'Without measurement, you cannot filter relationships by reliability or identify contested knowledge areas.\n';
35
+ return output;
36
+ }
37
+ // Add staleness header (ADR-065 Phase 2 counter-based tracking)
38
+ if (result.last_measurement_at) {
39
+ const measurementDate = new Date(result.last_measurement_at).toLocaleString();
40
+ output += `**Last Measurement:** ${measurementDate}\n`;
41
+ const delta = result.vocabulary_changes_since_measurement ?? 0;
42
+ let stalenessText = '';
43
+ if (delta === 0) {
44
+ stalenessText = 'No changes since measurement (fresh)';
45
+ }
46
+ else if (delta < 5) {
47
+ stalenessText = `${delta} vocabulary change${delta > 1 ? 's' : ''} since measurement`;
48
+ }
49
+ else if (delta < 10) {
50
+ stalenessText = `${delta} vocabulary changes since measurement (consider re-measuring)`;
51
+ }
52
+ else {
53
+ stalenessText = `${delta} vocabulary changes since measurement (re-measurement recommended)`;
54
+ }
55
+ output += `**Staleness:** ${stalenessText}\n\n`;
56
+ }
57
+ // Summary by classification
58
+ const classificationCounts = {};
59
+ result.types.forEach((type) => {
60
+ const status = type.epistemic_status || 'UNKNOWN';
61
+ classificationCounts[status] = (classificationCounts[status] || 0) + 1;
62
+ });
63
+ output += '## Classification Summary\n\n';
64
+ Object.entries(classificationCounts)
65
+ .sort((a, b) => b[1] - a[1]) // Sort by count descending
66
+ .forEach(([status, count]) => {
67
+ output += `- **${status}**: ${count} types\n`;
68
+ });
69
+ output += '\n';
70
+ // Detailed table (removed "Measured At" column - all types measured together)
71
+ output += '## Vocabulary Types\n\n';
72
+ output += '| Relationship Type | Status | Avg Grounding | Sampled Edges |\n';
73
+ output += '|-------------------|--------|---------------|---------------|\n';
74
+ result.types.forEach((type) => {
75
+ const avgGrounding = type.stats?.avg_grounding !== undefined
76
+ ? type.stats.avg_grounding.toFixed(3)
77
+ : '--';
78
+ const sampledEdges = type.stats?.sampled_edges !== undefined
79
+ ? type.stats.sampled_edges.toString()
80
+ : '--';
81
+ output += `| ${type.relationship_type} | ${type.epistemic_status} | ${avgGrounding} | ${sampledEdges} |\n`;
82
+ });
83
+ output += '\n## Interpretation Guide\n\n';
84
+ output += '**How to use this data:**\n';
85
+ output += '- **WELL_GROUNDED types** → Use for high-confidence reasoning and reliable knowledge extraction (>80% net support)\n';
86
+ output += '- **MIXED_GROUNDING types** → Variable validation (15-80% net support), explore dialectical patterns or uncertainty\n';
87
+ output += '- **WEAK_GROUNDING types** → Emerging evidence (0-15% net support), use for exploratory reasoning\n';
88
+ output += '- **POORLY_GROUNDED types** → Uncertain knowledge (0-50% net contradiction), unclear epistemic status\n';
89
+ output += '- **CONTRADICTED types** → Refuted claims (>50% net contradiction), contradicted by evidence\n';
90
+ output += '- **INSUFFICIENT_DATA types** → Need more document ingestion to establish epistemic patterns\n\n';
91
+ output += '**Next Steps:**\n';
92
+ output += '- Use `epistemic_status` with action "show" to get detailed statistics for a specific type\n';
93
+ output += '- Filter concept searches by epistemic status to curate high-confidence vs exploratory subgraphs\n';
94
+ output += '- Ingest more documents to move types from INSUFFICIENT_DATA to measurable classifications\n';
95
+ return output;
96
+ }
97
+ /**
98
+ * Format epistemic status details for a specific type (ADR-065)
99
+ */
100
+ function formatEpistemicStatusDetails(result) {
101
+ const relType = result.relationship_type || 'Unknown';
102
+ const status = result.epistemic_status || 'UNKNOWN';
103
+ let output = `# Epistemic Status: ${relType}\n\n`;
104
+ output += `**Classification:** ${status}\n\n`;
105
+ output += `**Interpretation:** ${formatEpistemicStatusInterpretation(status)}\n\n`;
106
+ if (result.stats) {
107
+ output += '## Grounding Statistics\n\n';
108
+ output += `- **Average Grounding:** ${result.stats.avg_grounding.toFixed(3)} `;
109
+ if (result.stats.avg_grounding > 0.8) {
110
+ output += '(Strong support - well-established)\n';
111
+ }
112
+ else if (result.stats.avg_grounding > 0.15) {
113
+ output += '(Mixed validation - debated or uncertain)\n';
114
+ }
115
+ else if (result.stats.avg_grounding >= 0) {
116
+ output += '(Weak support - emerging or poorly grounded)\n';
117
+ }
118
+ else {
119
+ output += '(Contradicted - refuted or historical)\n';
120
+ }
121
+ if (result.stats.std_grounding !== undefined) {
122
+ output += `- **Standard Deviation:** ${result.stats.std_grounding.toFixed(3)} `;
123
+ if (result.stats.std_grounding > 0.3) {
124
+ output += '(High variance - highly contested)\n';
125
+ }
126
+ else if (result.stats.std_grounding > 0.15) {
127
+ output += '(Moderate variance - some disagreement)\n';
128
+ }
129
+ else {
130
+ output += '(Low variance - consistent validation)\n';
131
+ }
132
+ }
133
+ output += `- **Range:** ${result.stats.min_grounding.toFixed(3)} to ${result.stats.max_grounding.toFixed(3)}\n`;
134
+ output += `- **Measurements:** ${result.stats.measured_concepts} concepts sampled\n`;
135
+ output += `- **Sampled Edges:** ${result.stats.sampled_edges} of ${result.stats.total_edges} total\n`;
136
+ }
137
+ // Add measurement context with staleness (ADR-065 Phase 2)
138
+ output += '\n## Measurement Context\n\n';
139
+ if (result.status_measured_at) {
140
+ output += `- **Measured At:** ${new Date(result.status_measured_at).toLocaleString()}\n`;
141
+ }
142
+ const delta = result.vocabulary_changes_since_measurement ?? 0;
143
+ let stalenessText = '';
144
+ if (delta === 0) {
145
+ stalenessText = 'No changes since measurement (fresh)';
146
+ }
147
+ else if (delta < 5) {
148
+ stalenessText = `${delta} vocabulary change${delta > 1 ? 's' : ''} since measurement`;
149
+ }
150
+ else if (delta < 10) {
151
+ stalenessText = `${delta} vocabulary changes since measurement (consider re-measuring)`;
152
+ }
153
+ else {
154
+ stalenessText = `${delta} vocabulary changes since measurement (re-measurement recommended)`;
155
+ }
156
+ output += `- **Staleness:** ${stalenessText}\n`;
157
+ output += `- **Note:** Results are temporal - rerun measurement as graph evolves\n`;
158
+ if (result.rationale) {
159
+ output += `\n## Classification Rationale\n\n${result.rationale}\n`;
160
+ }
161
+ output += '\n## Practical Implications\n\n';
162
+ if (status === 'WELL_GROUNDED') {
163
+ output += '**This relationship type is highly reliable.**\n';
164
+ output += '- Use in high-confidence reasoning chains\n';
165
+ output += '- Good candidate for automated inference\n';
166
+ output += '- Represents well-established domain knowledge\n';
167
+ }
168
+ else if (status === 'MIXED_GROUNDING') {
169
+ output += '**This relationship type has variable validation.**\n';
170
+ output += '- Represents mixed evidence or evolving understanding\n';
171
+ output += '- Explore both supporting and contradicting evidence\n';
172
+ output += '- Good for identifying knowledge gaps or areas of uncertainty\n';
173
+ }
174
+ else if (status === 'WEAK_GROUNDING') {
175
+ output += '**This relationship type has emerging evidence.**\n';
176
+ output += '- Weak positive grounding (0.0-0.15) indicates developing knowledge\n';
177
+ output += '- May strengthen with more document ingestion\n';
178
+ output += '- Use for exploratory reasoning, but verify claims\n';
179
+ }
180
+ else if (status === 'POORLY_GROUNDED') {
181
+ output += '**This relationship type has uncertain validation.**\n';
182
+ output += '- Weak negative grounding (-0.5-0.0) indicates unclear support\n';
183
+ output += '- May represent liminal or contested knowledge\n';
184
+ output += '- Use cautiously - verify before using in reasoning\n';
185
+ }
186
+ else if (status === 'CONTRADICTED') {
187
+ output += '**This relationship type is contradicted by evidence.**\n';
188
+ output += '- May represent refuted claims or historical misconceptions\n';
189
+ output += '- Use cautiously - validate before using in reasoning\n';
190
+ output += '- Useful for understanding evolution of knowledge\n';
191
+ }
192
+ else if (status === 'INSUFFICIENT_DATA') {
193
+ output += '**Not enough data to establish epistemic pattern.**\n';
194
+ output += '- Need more documents using this relationship type\n';
195
+ output += '- Current measurements: <3 successful samples\n';
196
+ output += '- Re-measure after ingesting more content\n';
197
+ }
198
+ return output;
199
+ }
200
+ /**
201
+ * Format epistemic status measurement results (ADR-065)
202
+ */
203
+ function formatEpistemicStatusMeasurement(result) {
204
+ let output = '# Epistemic Status Measurement Results\n\n';
205
+ output += `**Measured:** ${result.total_types} vocabulary types\n`;
206
+ output += `**Stored:** ${result.stored_count} types updated in database\n\n`;
207
+ if (result.classifications && Object.keys(result.classifications).length > 0) {
208
+ output += '## Classification Distribution\n\n';
209
+ Object.entries(result.classifications)
210
+ .sort((a, b) => b[1] - a[1]) // Sort by count descending
211
+ .forEach(([status, count]) => {
212
+ output += `- **${status}**: ${count}\n`;
213
+ });
214
+ output += '\n';
215
+ }
216
+ if (result.sample_results && result.sample_results.length > 0) {
217
+ output += '## Sample Results (Top 10)\n\n';
218
+ output += '| Type | Status | Avg Grounding | Interpretation |\n';
219
+ output += '|------|--------|---------------|----------------|\n';
220
+ result.sample_results.forEach((sample) => {
221
+ const avgGrounding = sample.stats?.avg_grounding !== undefined
222
+ ? sample.stats.avg_grounding.toFixed(3)
223
+ : '--';
224
+ let interpretation = '';
225
+ if (sample.epistemic_status === 'WELL_GROUNDED') {
226
+ interpretation = '✓ Reliable';
227
+ }
228
+ else if (sample.epistemic_status === 'MIXED_GROUNDING') {
229
+ interpretation = '⚠ Variable';
230
+ }
231
+ else if (sample.epistemic_status === 'WEAK_GROUNDING') {
232
+ interpretation = '~ Emerging';
233
+ }
234
+ else if (sample.epistemic_status === 'POORLY_GROUNDED') {
235
+ interpretation = '? Uncertain';
236
+ }
237
+ else if (sample.epistemic_status === 'CONTRADICTED') {
238
+ interpretation = '✗ Refuted';
239
+ }
240
+ else if (sample.epistemic_status === 'INSUFFICIENT_DATA') {
241
+ interpretation = '? Need data';
242
+ }
243
+ else {
244
+ interpretation = '- Other';
245
+ }
246
+ output += `| ${sample.relationship_type} | ${sample.epistemic_status} | ${avgGrounding} | ${interpretation} |\n`;
247
+ });
248
+ output += '\n';
249
+ }
250
+ output += '## What This Means\n\n';
251
+ output += 'Epistemic status measurement evaluates how well-established each vocabulary relationship type is based on:\n';
252
+ output += '1. **Grounding strength** of target concepts (evidence support)\n';
253
+ output += '2. **Consistency** across multiple samples (standard deviation)\n';
254
+ output += '3. **Sample size** (measured vs total edges)\n\n';
255
+ output += '**Key Insights:**\n';
256
+ output += '- **WELL_GROUNDED types** represent well-established knowledge patterns (>80% net support)\n';
257
+ output += '- **MIXED_GROUNDING types** show variable validation or mixed evidence (15-80% net support)\n';
258
+ output += '- **WEAK_GROUNDING types** represent emerging knowledge (0-15% net support)\n';
259
+ output += '- **POORLY_GROUNDED types** have uncertain validation (0-50% net contradiction)\n';
260
+ output += '- **CONTRADICTED types** may represent refuted claims (>50% net contradiction)\n';
261
+ output += '- **INSUFFICIENT_DATA types** need more document ingestion\n\n';
262
+ output += '**Next Actions:**\n';
263
+ output += '1. Review MIXED_GROUNDING types to identify knowledge gaps or dialectical patterns\n';
264
+ output += '2. Use WELL_GROUNDED types for high-confidence reasoning and inference\n';
265
+ output += '3. Investigate CONTRADICTED types to understand knowledge evolution\n';
266
+ output += '4. Ingest more documents to move INSUFFICIENT_DATA types to measurable states\n';
267
+ return output;
268
+ }
269
+ //# sourceMappingURL=epistemic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epistemic.js","sourceRoot":"","sources":["../../../src/mcp/formatters/epistemic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Graph CRUD formatters (ADR-089 Phase 3a)
3
+ */
4
+ /**
5
+ * Format a created/updated concept for MCP output
6
+ */
7
+ export declare function formatGraphConceptResult(result: any, action: string): string;
8
+ /**
9
+ * Format a created/updated edge for MCP output
10
+ */
11
+ export declare function formatGraphEdgeResult(result: any, action: string): string;
12
+ /**
13
+ * Format concept list for MCP output
14
+ */
15
+ export declare function formatGraphConceptList(result: any): string;
16
+ /**
17
+ * Format edge list for MCP output
18
+ */
19
+ export declare function formatGraphEdgeList(result: any): string;
20
+ /**
21
+ * Format batch create response for MCP output
22
+ */
23
+ export declare function formatGraphBatchResult(result: any): string;
24
+ /**
25
+ * Queue operation result type for formatter
26
+ */
27
+ interface QueueOperationResult {
28
+ index: number;
29
+ status: 'ok' | 'error';
30
+ op: string;
31
+ entity: string;
32
+ label?: string;
33
+ id?: string;
34
+ relationship?: string;
35
+ count?: number;
36
+ total?: number;
37
+ matched_existing?: boolean;
38
+ concepts?: Array<{
39
+ id: string;
40
+ label: string;
41
+ }>;
42
+ edges?: Array<{
43
+ from: string;
44
+ type: string;
45
+ to: string;
46
+ }>;
47
+ error?: string;
48
+ }
49
+ /**
50
+ * Queue execution result type for formatter
51
+ */
52
+ interface QueueExecutionResult {
53
+ results: QueueOperationResult[];
54
+ stopIndex: number;
55
+ successCount: number;
56
+ errorCount: number;
57
+ }
58
+ /**
59
+ * Format queue execution results for MCP output
60
+ */
61
+ export declare function formatGraphQueueResult(queueResult: QueueExecutionResult, totalOperations: number): string;
62
+ export {};
63
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/mcp/formatters/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA4B5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBzE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA+B1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAwBvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAkD1D;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,oBAAoB,EACjC,eAAe,EAAE,MAAM,GACtB,MAAM,CAoDR"}