obsidian-accomplishments-mcp 0.1.10 → 0.1.11
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/README.md +154 -182
- package/dist/index.js +207 -38
- package/dist/index.js.map +1 -1
- package/dist/integration.test.d.ts +8 -0
- package/dist/integration.test.d.ts.map +1 -0
- package/dist/integration.test.js +979 -0
- package/dist/integration.test.js.map +1 -0
- package/dist/models/types.d.ts +1 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js.map +1 -1
- package/dist/models/v2-types.d.ts +460 -0
- package/dist/models/v2-types.d.ts.map +1 -0
- package/dist/models/v2-types.js +137 -0
- package/dist/models/v2-types.js.map +1 -0
- package/dist/models/v2-types.test.d.ts +5 -0
- package/dist/models/v2-types.test.d.ts.map +1 -0
- package/dist/models/v2-types.test.js +133 -0
- package/dist/models/v2-types.test.js.map +1 -0
- package/dist/parsers/canvas-parser.d.ts +1 -1
- package/dist/parsers/canvas-parser.d.ts.map +1 -1
- package/dist/parsers/canvas-parser.js +1 -1
- package/dist/parsers/canvas-parser.js.map +1 -1
- package/dist/parsers/markdown-parser.js +9 -9
- package/dist/parsers/markdown-parser.js.map +1 -1
- package/dist/services/v2/archive-manager.d.ts +96 -0
- package/dist/services/v2/archive-manager.d.ts.map +1 -0
- package/dist/services/v2/archive-manager.js +281 -0
- package/dist/services/v2/archive-manager.js.map +1 -0
- package/dist/services/v2/canvas-manager.d.ts +155 -0
- package/dist/services/v2/canvas-manager.d.ts.map +1 -0
- package/dist/services/v2/canvas-manager.js +540 -0
- package/dist/services/v2/canvas-manager.js.map +1 -0
- package/dist/services/v2/canvas-manager.test.d.ts +5 -0
- package/dist/services/v2/canvas-manager.test.d.ts.map +1 -0
- package/dist/services/v2/canvas-manager.test.js +327 -0
- package/dist/services/v2/canvas-manager.test.js.map +1 -0
- package/dist/services/v2/cascade-manager.d.ts +54 -0
- package/dist/services/v2/cascade-manager.d.ts.map +1 -0
- package/dist/services/v2/cascade-manager.js +220 -0
- package/dist/services/v2/cascade-manager.js.map +1 -0
- package/dist/services/v2/cycle-detector.d.ts +76 -0
- package/dist/services/v2/cycle-detector.d.ts.map +1 -0
- package/dist/services/v2/cycle-detector.js +183 -0
- package/dist/services/v2/cycle-detector.js.map +1 -0
- package/dist/services/v2/cycle-detector.test.d.ts +7 -0
- package/dist/services/v2/cycle-detector.test.d.ts.map +1 -0
- package/dist/services/v2/cycle-detector.test.js +125 -0
- package/dist/services/v2/cycle-detector.test.js.map +1 -0
- package/dist/services/v2/entity-parser.d.ts +54 -0
- package/dist/services/v2/entity-parser.d.ts.map +1 -0
- package/dist/services/v2/entity-parser.js +418 -0
- package/dist/services/v2/entity-parser.js.map +1 -0
- package/dist/services/v2/entity-parser.test.d.ts +5 -0
- package/dist/services/v2/entity-parser.test.d.ts.map +1 -0
- package/dist/services/v2/entity-parser.test.js +637 -0
- package/dist/services/v2/entity-parser.test.js.map +1 -0
- package/dist/services/v2/entity-serializer.d.ts +94 -0
- package/dist/services/v2/entity-serializer.d.ts.map +1 -0
- package/dist/services/v2/entity-serializer.js +583 -0
- package/dist/services/v2/entity-serializer.js.map +1 -0
- package/dist/services/v2/entity-serializer.test.d.ts +5 -0
- package/dist/services/v2/entity-serializer.test.d.ts.map +1 -0
- package/dist/services/v2/entity-serializer.test.js +241 -0
- package/dist/services/v2/entity-serializer.test.js.map +1 -0
- package/dist/services/v2/entity-validator.d.ts +65 -0
- package/dist/services/v2/entity-validator.d.ts.map +1 -0
- package/dist/services/v2/entity-validator.js +573 -0
- package/dist/services/v2/entity-validator.js.map +1 -0
- package/dist/services/v2/entity-validator.test.d.ts +5 -0
- package/dist/services/v2/entity-validator.test.d.ts.map +1 -0
- package/dist/services/v2/entity-validator.test.js +519 -0
- package/dist/services/v2/entity-validator.test.js.map +1 -0
- package/dist/services/v2/file-manager.d.ts +73 -0
- package/dist/services/v2/file-manager.d.ts.map +1 -0
- package/dist/services/v2/file-manager.js +310 -0
- package/dist/services/v2/file-manager.js.map +1 -0
- package/dist/services/v2/file-manager.test.d.ts +5 -0
- package/dist/services/v2/file-manager.test.d.ts.map +1 -0
- package/dist/services/v2/file-manager.test.js +339 -0
- package/dist/services/v2/file-manager.test.js.map +1 -0
- package/dist/services/v2/index-manager.d.ts +68 -0
- package/dist/services/v2/index-manager.d.ts.map +1 -0
- package/dist/services/v2/index-manager.js +228 -0
- package/dist/services/v2/index-manager.js.map +1 -0
- package/dist/services/v2/index-manager.test.d.ts +5 -0
- package/dist/services/v2/index-manager.test.d.ts.map +1 -0
- package/dist/services/v2/index-manager.test.js +386 -0
- package/dist/services/v2/index-manager.test.js.map +1 -0
- package/dist/services/v2/index-service.d.ts +82 -0
- package/dist/services/v2/index-service.d.ts.map +1 -0
- package/dist/services/v2/index-service.js +274 -0
- package/dist/services/v2/index-service.js.map +1 -0
- package/dist/services/v2/index-service.test.d.ts +5 -0
- package/dist/services/v2/index-service.test.d.ts.map +1 -0
- package/dist/services/v2/index-service.test.js +117 -0
- package/dist/services/v2/index-service.test.js.map +1 -0
- package/dist/services/v2/lifecycle-manager.d.ts +59 -0
- package/dist/services/v2/lifecycle-manager.d.ts.map +1 -0
- package/dist/services/v2/lifecycle-manager.js +310 -0
- package/dist/services/v2/lifecycle-manager.js.map +1 -0
- package/dist/services/v2/lifecycle-manager.test.d.ts +5 -0
- package/dist/services/v2/lifecycle-manager.test.d.ts.map +1 -0
- package/dist/services/v2/lifecycle-manager.test.js +141 -0
- package/dist/services/v2/lifecycle-manager.test.js.map +1 -0
- package/dist/services/v2/path-resolver.d.ts +64 -0
- package/dist/services/v2/path-resolver.d.ts.map +1 -0
- package/dist/services/v2/path-resolver.js +174 -0
- package/dist/services/v2/path-resolver.js.map +1 -0
- package/dist/services/v2/progress-computer.d.ts +46 -0
- package/dist/services/v2/progress-computer.d.ts.map +1 -0
- package/dist/services/v2/progress-computer.js +200 -0
- package/dist/services/v2/progress-computer.js.map +1 -0
- package/dist/services/v2/search-service.d.ts +68 -0
- package/dist/services/v2/search-service.d.ts.map +1 -0
- package/dist/services/v2/search-service.js +194 -0
- package/dist/services/v2/search-service.js.map +1 -0
- package/dist/services/v2/transitive-dependency-remover.d.ts +54 -0
- package/dist/services/v2/transitive-dependency-remover.d.ts.map +1 -0
- package/dist/services/v2/transitive-dependency-remover.js +156 -0
- package/dist/services/v2/transitive-dependency-remover.js.map +1 -0
- package/dist/services/v2/transitive-dependency-remover.test.d.ts +7 -0
- package/dist/services/v2/transitive-dependency-remover.test.d.ts.map +1 -0
- package/dist/services/v2/transitive-dependency-remover.test.js +119 -0
- package/dist/services/v2/transitive-dependency-remover.test.js.map +1 -0
- package/dist/services/v2/v2-runtime.d.ts +374 -0
- package/dist/services/v2/v2-runtime.d.ts.map +1 -0
- package/dist/services/v2/v2-runtime.js +1908 -0
- package/dist/services/v2/v2-runtime.js.map +1 -0
- package/dist/services/v2/v2-runtime.test.d.ts +5 -0
- package/dist/services/v2/v2-runtime.test.d.ts.map +1 -0
- package/dist/services/v2/v2-runtime.test.js +658 -0
- package/dist/services/v2/v2-runtime.test.js.map +1 -0
- package/dist/services/v2/workstream-normalizer.d.ts +59 -0
- package/dist/services/v2/workstream-normalizer.d.ts.map +1 -0
- package/dist/services/v2/workstream-normalizer.js +137 -0
- package/dist/services/v2/workstream-normalizer.js.map +1 -0
- package/dist/services/v2/workstream-normalizer.test.d.ts +7 -0
- package/dist/services/v2/workstream-normalizer.test.d.ts.map +1 -0
- package/dist/services/v2/workstream-normalizer.test.js +130 -0
- package/dist/services/v2/workstream-normalizer.test.js.map +1 -0
- package/dist/test-runner.d.ts +4 -1
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +44 -249
- package/dist/test-runner.js.map +1 -1
- package/dist/tools/batch-operations-tools.d.ts +54 -0
- package/dist/tools/batch-operations-tools.d.ts.map +1 -0
- package/dist/tools/batch-operations-tools.js +370 -0
- package/dist/tools/batch-operations-tools.js.map +1 -0
- package/dist/tools/decision-document-tools.d.ts +78 -0
- package/dist/tools/decision-document-tools.d.ts.map +1 -0
- package/dist/tools/decision-document-tools.js +260 -0
- package/dist/tools/decision-document-tools.js.map +1 -0
- package/dist/tools/entity-management-tools.d.ts +79 -0
- package/dist/tools/entity-management-tools.d.ts.map +1 -0
- package/dist/tools/entity-management-tools.js +851 -0
- package/dist/tools/entity-management-tools.js.map +1 -0
- package/dist/tools/entity-management-tools.test.d.ts +5 -0
- package/dist/tools/entity-management-tools.test.d.ts.map +1 -0
- package/dist/tools/entity-management-tools.test.js +530 -0
- package/dist/tools/entity-management-tools.test.js.map +1 -0
- package/dist/tools/index.d.ts +15 -331
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +510 -47
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/index.test.d.ts +8 -0
- package/dist/tools/index.test.d.ts.map +1 -0
- package/dist/tools/index.test.js +429 -0
- package/dist/tools/index.test.js.map +1 -0
- package/dist/tools/project-understanding-tools.d.ts +75 -0
- package/dist/tools/project-understanding-tools.d.ts.map +1 -0
- package/dist/tools/project-understanding-tools.js +751 -0
- package/dist/tools/project-understanding-tools.js.map +1 -0
- package/dist/tools/search-navigation-tools.d.ts +77 -0
- package/dist/tools/search-navigation-tools.d.ts.map +1 -0
- package/dist/tools/search-navigation-tools.js +379 -0
- package/dist/tools/search-navigation-tools.js.map +1 -0
- package/dist/tools/tool-types.d.ts +703 -0
- package/dist/tools/tool-types.d.ts.map +1 -0
- package/dist/tools/tool-types.js +7 -0
- package/dist/tools/tool-types.js.map +1 -0
- package/dist/utils/config.d.ts +0 -4
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +2 -19
- package/dist/utils/config.js.map +1 -1
- package/package.json +16 -1
- package/dist/services/accomplishment-service.d.ts +0 -33
- package/dist/services/accomplishment-service.d.ts.map +0 -1
- package/dist/services/accomplishment-service.js +0 -296
- package/dist/services/accomplishment-service.js.map +0 -1
- package/dist/services/canvas-service.d.ts +0 -96
- package/dist/services/canvas-service.d.ts.map +0 -1
- package/dist/services/canvas-service.js +0 -231
- package/dist/services/canvas-service.js.map +0 -1
- package/dist/services/context-doc-service.d.ts +0 -70
- package/dist/services/context-doc-service.d.ts.map +0 -1
- package/dist/services/context-doc-service.js +0 -229
- package/dist/services/context-doc-service.js.map +0 -1
- package/dist/services/dependency-service.d.ts +0 -22
- package/dist/services/dependency-service.d.ts.map +0 -1
- package/dist/services/dependency-service.js +0 -99
- package/dist/services/dependency-service.js.map +0 -1
- package/dist/services/status-indicator-service.d.ts +0 -40
- package/dist/services/status-indicator-service.d.ts.map +0 -1
- package/dist/services/status-indicator-service.js +0 -173
- package/dist/services/status-indicator-service.js.map +0 -1
- package/dist/services/task-service.d.ts +0 -32
- package/dist/services/task-service.d.ts.map +0 -1
- package/dist/services/task-service.js +0 -152
- package/dist/services/task-service.js.map +0 -1
- package/dist/test-real-vault.d.ts +0 -6
- package/dist/test-real-vault.d.ts.map +0 -1
- package/dist/test-real-vault.js +0 -30
- package/dist/test-real-vault.js.map +0 -1
- package/dist/tools/batch-operations.d.ts +0 -246
- package/dist/tools/batch-operations.d.ts.map +0 -1
- package/dist/tools/batch-operations.js +0 -235
- package/dist/tools/batch-operations.js.map +0 -1
- package/dist/tools/get-accomplishment.d.ts +0 -42
- package/dist/tools/get-accomplishment.d.ts.map +0 -1
- package/dist/tools/get-accomplishment.js +0 -93
- package/dist/tools/get-accomplishment.js.map +0 -1
- package/dist/tools/get-accomplishments-graph.d.ts +0 -26
- package/dist/tools/get-accomplishments-graph.d.ts.map +0 -1
- package/dist/tools/get-accomplishments-graph.js +0 -137
- package/dist/tools/get-accomplishments-graph.js.map +0 -1
- package/dist/tools/get-blocked-items.d.ts +0 -15
- package/dist/tools/get-blocked-items.d.ts.map +0 -1
- package/dist/tools/get-blocked-items.js +0 -73
- package/dist/tools/get-blocked-items.js.map +0 -1
- package/dist/tools/get-current-work.d.ts +0 -15
- package/dist/tools/get-current-work.d.ts.map +0 -1
- package/dist/tools/get-current-work.js +0 -68
- package/dist/tools/get-current-work.js.map +0 -1
- package/dist/tools/get-project-status.d.ts +0 -26
- package/dist/tools/get-project-status.d.ts.map +0 -1
- package/dist/tools/get-project-status.js +0 -98
- package/dist/tools/get-project-status.js.map +0 -1
- package/dist/tools/get-ready-to-start.d.ts +0 -15
- package/dist/tools/get-ready-to-start.d.ts.map +0 -1
- package/dist/tools/get-ready-to-start.js +0 -47
- package/dist/tools/get-ready-to-start.js.map +0 -1
- package/dist/tools/list-accomplishments.d.ts +0 -42
- package/dist/tools/list-accomplishments.d.ts.map +0 -1
- package/dist/tools/list-accomplishments.js +0 -40
- package/dist/tools/list-accomplishments.js.map +0 -1
- package/dist/tools/manage-accomplishment.d.ts +0 -147
- package/dist/tools/manage-accomplishment.d.ts.map +0 -1
- package/dist/tools/manage-accomplishment.js +0 -153
- package/dist/tools/manage-accomplishment.js.map +0 -1
- package/dist/tools/manage-dependency.d.ts +0 -41
- package/dist/tools/manage-dependency.d.ts.map +0 -1
- package/dist/tools/manage-dependency.js +0 -66
- package/dist/tools/manage-dependency.js.map +0 -1
- package/dist/tools/manage-task.d.ts +0 -119
- package/dist/tools/manage-task.d.ts.map +0 -1
- package/dist/tools/manage-task.js +0 -126
- package/dist/tools/manage-task.js.map +0 -1
- package/dist/tools/reconcile-canvas.d.ts +0 -33
- package/dist/tools/reconcile-canvas.d.ts.map +0 -1
- package/dist/tools/reconcile-canvas.js +0 -41
- package/dist/tools/reconcile-canvas.js.map +0 -1
- package/dist/tools/set-work-focus.d.ts +0 -48
- package/dist/tools/set-work-focus.d.ts.map +0 -1
- package/dist/tools/set-work-focus.js +0 -78
- package/dist/tools/set-work-focus.js.map +0 -1
- package/dist/tools/sync-dependencies.d.ts +0 -33
- package/dist/tools/sync-dependencies.d.ts.map +0 -1
- package/dist/tools/sync-dependencies.js +0 -144
- package/dist/tools/sync-dependencies.js.map +0 -1
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision & Document Management Tools
|
|
3
|
+
*
|
|
4
|
+
* Category 5: Decision & Document Management
|
|
5
|
+
* - manage_documents: Consolidated tool for document/decision management
|
|
6
|
+
* - get_decision_history: Get decision history for a topic
|
|
7
|
+
* - supersede_document: Update document based on decision
|
|
8
|
+
* - get_document_history: Get document version history
|
|
9
|
+
* - check_freshness: Check if document is up-to-date
|
|
10
|
+
*
|
|
11
|
+
* DEPRECATED:
|
|
12
|
+
* - create_decision: Use create_entity with type: 'decision' instead
|
|
13
|
+
*/
|
|
14
|
+
import { workstreamNormalizer } from '../services/v2/workstream-normalizer.js';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Manage Documents (Consolidated Tool)
|
|
17
|
+
// =============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Consolidated tool for document and decision management.
|
|
20
|
+
* Dispatches to the appropriate handler based on action.
|
|
21
|
+
*/
|
|
22
|
+
export async function manageDocuments(input, deps) {
|
|
23
|
+
const { action } = input;
|
|
24
|
+
switch (action) {
|
|
25
|
+
case 'get_decision_history': {
|
|
26
|
+
const result = await getDecisionHistory({
|
|
27
|
+
topic: input.topic,
|
|
28
|
+
workstream: input.workstream,
|
|
29
|
+
include_superseded: input.include_superseded,
|
|
30
|
+
include_archived: input.include_archived,
|
|
31
|
+
}, deps);
|
|
32
|
+
return { action: 'get_decision_history', ...result };
|
|
33
|
+
}
|
|
34
|
+
case 'supersede_document': {
|
|
35
|
+
if (!input.document_id || !input.decision_id || !input.new_content || !input.change_summary) {
|
|
36
|
+
throw new Error('supersede_document requires document_id, decision_id, new_content, and change_summary');
|
|
37
|
+
}
|
|
38
|
+
const result = await supersedeDocument({
|
|
39
|
+
document_id: input.document_id,
|
|
40
|
+
decision_id: input.decision_id,
|
|
41
|
+
new_content: input.new_content,
|
|
42
|
+
change_summary: input.change_summary,
|
|
43
|
+
}, deps);
|
|
44
|
+
return { action: 'supersede_document', ...result };
|
|
45
|
+
}
|
|
46
|
+
case 'get_document_history': {
|
|
47
|
+
if (!input.document_id) {
|
|
48
|
+
throw new Error('get_document_history requires document_id');
|
|
49
|
+
}
|
|
50
|
+
const result = await getDocumentHistory({
|
|
51
|
+
document_id: input.document_id,
|
|
52
|
+
}, deps);
|
|
53
|
+
return { action: 'get_document_history', ...result };
|
|
54
|
+
}
|
|
55
|
+
case 'check_freshness': {
|
|
56
|
+
if (!input.document_id) {
|
|
57
|
+
throw new Error('check_freshness requires document_id');
|
|
58
|
+
}
|
|
59
|
+
const result = await checkDocumentFreshness({
|
|
60
|
+
document_id: input.document_id,
|
|
61
|
+
}, deps);
|
|
62
|
+
return { action: 'check_freshness', ...result };
|
|
63
|
+
}
|
|
64
|
+
default:
|
|
65
|
+
throw new Error(`Unknown action: ${action}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// =============================================================================
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Get Decision History
|
|
71
|
+
// =============================================================================
|
|
72
|
+
/**
|
|
73
|
+
* Get decision history for a topic or workstream.
|
|
74
|
+
* By default includes archived decisions since most decisions are archived after being decided.
|
|
75
|
+
*/
|
|
76
|
+
export async function getDecisionHistory(input, deps) {
|
|
77
|
+
const { topic, include_superseded } = input;
|
|
78
|
+
// Default to including archived decisions (most decisions are archived after being decided)
|
|
79
|
+
const include_archived = input.include_archived ?? true;
|
|
80
|
+
// Normalize workstream for consistent querying
|
|
81
|
+
const normalizedWorkstream = input.workstream
|
|
82
|
+
? workstreamNormalizer.normalize(input.workstream).normalized
|
|
83
|
+
: undefined;
|
|
84
|
+
// Get all decisions
|
|
85
|
+
const decisions = await deps.getAllDecisions({
|
|
86
|
+
workstream: normalizedWorkstream,
|
|
87
|
+
includeSuperseded: include_superseded,
|
|
88
|
+
includeArchived: include_archived,
|
|
89
|
+
});
|
|
90
|
+
// Filter by topic if provided
|
|
91
|
+
const filtered = topic
|
|
92
|
+
? decisions.filter((d) => d.title.toLowerCase().includes(topic.toLowerCase()))
|
|
93
|
+
: decisions;
|
|
94
|
+
// Build decision list
|
|
95
|
+
const decisionList = filtered.map((d) => ({
|
|
96
|
+
id: d.id,
|
|
97
|
+
title: d.title,
|
|
98
|
+
status: d.status,
|
|
99
|
+
decided_on: d.decided_on || d.created_at,
|
|
100
|
+
affects: d.affects || [],
|
|
101
|
+
superseded_by: undefined, // Would need reverse lookup
|
|
102
|
+
}));
|
|
103
|
+
// Build decision chains (supersession chains)
|
|
104
|
+
const chains = [];
|
|
105
|
+
const processed = new Set();
|
|
106
|
+
for (const d of filtered) {
|
|
107
|
+
if (processed.has(d.id))
|
|
108
|
+
continue;
|
|
109
|
+
// Find the chain this decision belongs to
|
|
110
|
+
const history = [];
|
|
111
|
+
let current = d;
|
|
112
|
+
// Walk back through supersedes
|
|
113
|
+
while (current?.supersedes) {
|
|
114
|
+
const prev = await deps.getEntity(current.supersedes);
|
|
115
|
+
if (prev && prev.type === 'decision') {
|
|
116
|
+
history.unshift(prev.id);
|
|
117
|
+
processed.add(prev.id);
|
|
118
|
+
current = prev;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (history.length > 0) {
|
|
125
|
+
chains.push({
|
|
126
|
+
current: d.id,
|
|
127
|
+
history,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
processed.add(d.id);
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
decisions: decisionList,
|
|
134
|
+
decision_chains: chains,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// =============================================================================
|
|
138
|
+
// Supersede Document
|
|
139
|
+
// =============================================================================
|
|
140
|
+
/**
|
|
141
|
+
* Update a document based on a decision, creating a new version.
|
|
142
|
+
*/
|
|
143
|
+
export async function supersedeDocument(input, deps) {
|
|
144
|
+
const { document_id, decision_id, new_content, change_summary } = input;
|
|
145
|
+
// Get the document
|
|
146
|
+
const doc = await deps.getEntity(document_id);
|
|
147
|
+
if (!doc || doc.type !== 'document') {
|
|
148
|
+
throw new Error(`Document not found: ${document_id}`);
|
|
149
|
+
}
|
|
150
|
+
// Get the decision
|
|
151
|
+
const decision = await deps.getEntity(decision_id);
|
|
152
|
+
if (!decision || decision.type !== 'decision') {
|
|
153
|
+
throw new Error(`Decision not found: ${decision_id}`);
|
|
154
|
+
}
|
|
155
|
+
const document = doc;
|
|
156
|
+
const currentVersion = parseInt(document.version || '1', 10);
|
|
157
|
+
const newVersion = currentVersion + 1;
|
|
158
|
+
// Update the document
|
|
159
|
+
// Note: We store the decision reference in implementation_context since
|
|
160
|
+
// Document doesn't have a supersedes_decision field
|
|
161
|
+
// Note: previous_version is now a single DocumentId (not an array)
|
|
162
|
+
// The old document's next_version will be auto-synced by the runtime
|
|
163
|
+
await deps.updateDocument(document_id, {
|
|
164
|
+
content: new_content,
|
|
165
|
+
version: String(newVersion),
|
|
166
|
+
implementation_context: `Updated per decision ${decision_id}: ${change_summary}`,
|
|
167
|
+
previous_version: document.id, // Reference to previous version (single ID)
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
document_id,
|
|
171
|
+
new_version: newVersion,
|
|
172
|
+
decision_id,
|
|
173
|
+
previous_version_ref: `${document_id}@v${currentVersion}`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// =============================================================================
|
|
177
|
+
// Get Document History
|
|
178
|
+
// =============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Get version history for a document.
|
|
181
|
+
*/
|
|
182
|
+
export async function getDocumentHistory(input, deps) {
|
|
183
|
+
const { document_id } = input;
|
|
184
|
+
const doc = await deps.getEntity(document_id);
|
|
185
|
+
if (!doc || doc.type !== 'document') {
|
|
186
|
+
throw new Error(`Document not found: ${document_id}`);
|
|
187
|
+
}
|
|
188
|
+
const document = doc;
|
|
189
|
+
const currentVersion = parseInt(document.version || '1', 10);
|
|
190
|
+
// Build history from previous_versions
|
|
191
|
+
const history = [];
|
|
192
|
+
// Current version
|
|
193
|
+
history.push({
|
|
194
|
+
version: currentVersion,
|
|
195
|
+
date: document.updated_at,
|
|
196
|
+
// Note: supersedes_decision would need to be parsed from implementation_context
|
|
197
|
+
// or stored separately in a real implementation
|
|
198
|
+
supersedes_decision: undefined,
|
|
199
|
+
change_summary: 'Current version',
|
|
200
|
+
});
|
|
201
|
+
// Previous versions (simplified - would need more metadata in real impl)
|
|
202
|
+
if (document.previous_version) {
|
|
203
|
+
for (let i = document.previous_version.length - 1; i >= 0; i--) {
|
|
204
|
+
history.push({
|
|
205
|
+
version: currentVersion - (document.previous_version.length - i),
|
|
206
|
+
date: document.created_at, // Would need actual dates
|
|
207
|
+
change_summary: 'Previous version',
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
document_id,
|
|
213
|
+
current_version: currentVersion,
|
|
214
|
+
history,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// Check Document Freshness
|
|
219
|
+
// =============================================================================
|
|
220
|
+
/**
|
|
221
|
+
* Check if a document is up-to-date with related decisions.
|
|
222
|
+
*/
|
|
223
|
+
export async function checkDocumentFreshness(input, deps) {
|
|
224
|
+
const { document_id } = input;
|
|
225
|
+
const doc = await deps.getEntity(document_id);
|
|
226
|
+
if (!doc || doc.type !== 'document') {
|
|
227
|
+
throw new Error(`Document not found: ${document_id}`);
|
|
228
|
+
}
|
|
229
|
+
const document = doc;
|
|
230
|
+
const staleReasons = [];
|
|
231
|
+
const suggestedUpdates = [];
|
|
232
|
+
// Check for newer decisions that might affect this document
|
|
233
|
+
const relatedDecisions = await deps.getDecisionsAffectingDocument(document_id);
|
|
234
|
+
for (const decision of relatedDecisions) {
|
|
235
|
+
if (decision.decided_on && decision.decided_on > document.updated_at) {
|
|
236
|
+
staleReasons.push({
|
|
237
|
+
type: 'newer_decision',
|
|
238
|
+
detail: `Decision "${decision.title}" was made after last document update`,
|
|
239
|
+
entity_id: decision.id,
|
|
240
|
+
});
|
|
241
|
+
suggestedUpdates.push(`Review and incorporate decision: ${decision.title}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Check for TODO items in content
|
|
245
|
+
const hasTodos = await deps.searchContent(document_id, 'TODO|FIXME|XXX');
|
|
246
|
+
if (hasTodos) {
|
|
247
|
+
staleReasons.push({
|
|
248
|
+
type: 'todo_items',
|
|
249
|
+
detail: 'Document contains TODO/FIXME items',
|
|
250
|
+
});
|
|
251
|
+
suggestedUpdates.push('Address TODO items in document');
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
document_id,
|
|
255
|
+
is_fresh: staleReasons.length === 0,
|
|
256
|
+
stale_reasons: staleReasons,
|
|
257
|
+
suggested_updates: suggestedUpdates,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=decision-document-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-document-tools.js","sourceRoot":"","sources":["../../src/tools/decision-document-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 Entity Management Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for creating, updating, archiving, and restoring entities.
|
|
5
|
+
*/
|
|
6
|
+
import { Entity, EntityId, EntityType, EntityStatus } from '../models/v2-types.js';
|
|
7
|
+
import { CreateEntityInput, CreateEntityOutput, UpdateEntityInput, UpdateEntityOutput, UpdateEntityStatusInput, UpdateEntityStatusOutput, ArchiveEntityInput, ArchiveEntityOutput, ArchiveMilestoneInput, ArchiveMilestoneOutput, RestoreFromArchiveInput, RestoreFromArchiveOutput, EntityFull } from './tool-types.js';
|
|
8
|
+
export interface EntityManagementDependencies {
|
|
9
|
+
getEntity: (id: EntityId) => Promise<Entity | null>;
|
|
10
|
+
getNextId: (type: EntityType) => Promise<EntityId>;
|
|
11
|
+
getChildren: (parentId: EntityId) => Promise<Entity[]>;
|
|
12
|
+
entityExists: (id: EntityId) => boolean;
|
|
13
|
+
getEntityType: (id: EntityId) => EntityType | null;
|
|
14
|
+
writeEntity: (entity: Entity) => Promise<void>;
|
|
15
|
+
moveToArchive: (id: EntityId, archivePath?: string) => Promise<string>;
|
|
16
|
+
restoreFromArchive: (id: EntityId) => Promise<string>;
|
|
17
|
+
validateStatusTransition: (entity: Entity, newStatus: EntityStatus) => {
|
|
18
|
+
valid: boolean;
|
|
19
|
+
reason?: string;
|
|
20
|
+
};
|
|
21
|
+
computeCascadeEffects: (entity: Entity, newStatus: EntityStatus) => Promise<EntityId[]>;
|
|
22
|
+
addToCanvas?: (entity: Entity, canvasPath: string) => Promise<boolean>;
|
|
23
|
+
removeFromCanvas?: (id: EntityId, canvasPath: string) => Promise<boolean>;
|
|
24
|
+
toEntityFull: (entity: Entity) => Promise<EntityFull>;
|
|
25
|
+
getCurrentTimestamp: () => string;
|
|
26
|
+
}
|
|
27
|
+
export interface RelationshipValidationError {
|
|
28
|
+
field: string;
|
|
29
|
+
message: string;
|
|
30
|
+
invalidId?: EntityId;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate entity relationships before creation/update.
|
|
34
|
+
* Checks that:
|
|
35
|
+
* 1. All referenced entity IDs exist (or are in the batch being created)
|
|
36
|
+
* 2. Relationship types are valid (e.g., decisions can't enable milestones)
|
|
37
|
+
*
|
|
38
|
+
* @param type - The entity type being created/updated
|
|
39
|
+
* @param data - The entity data containing relationships
|
|
40
|
+
* @param deps - Dependencies for entity lookup
|
|
41
|
+
* @param batchIds - Optional map of IDs being created in the same batch (id -> type)
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateRelationships(type: EntityType, data: Record<string, unknown>, deps: {
|
|
44
|
+
entityExists: (id: EntityId) => boolean;
|
|
45
|
+
getEntityType: (id: EntityId) => EntityType | null;
|
|
46
|
+
}, batchIds?: Map<EntityId, EntityType>): RelationshipValidationError[];
|
|
47
|
+
/**
|
|
48
|
+
* Create a new entity with optional dependencies and relationships.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createEntity(input: CreateEntityInput, deps: EntityManagementDependencies): Promise<CreateEntityOutput>;
|
|
51
|
+
/**
|
|
52
|
+
* Update entity fields and/or modify relationships.
|
|
53
|
+
* Enhanced to support:
|
|
54
|
+
* - Status updates with validation and cascade (replaces update_entity_status)
|
|
55
|
+
* - Archive operations (replaces archive_entity, archive_milestone)
|
|
56
|
+
* - Restore operations (replaces restore_from_archive)
|
|
57
|
+
*/
|
|
58
|
+
export declare function updateEntity(input: UpdateEntityInput, deps: EntityManagementDependencies): Promise<UpdateEntityOutput>;
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use updateEntity({ id, status, status_note, cascade }) instead.
|
|
61
|
+
* Dedicated status update with optional note and cascade.
|
|
62
|
+
*/
|
|
63
|
+
export declare function updateEntityStatus(input: UpdateEntityStatusInput, deps: EntityManagementDependencies): Promise<UpdateEntityStatusOutput>;
|
|
64
|
+
/**
|
|
65
|
+
* @deprecated Use updateEntity({ id, archived: true, archive_options }) instead.
|
|
66
|
+
* Archive a single entity.
|
|
67
|
+
*/
|
|
68
|
+
export declare function archiveEntity(input: ArchiveEntityInput, deps: EntityManagementDependencies): Promise<ArchiveEntityOutput>;
|
|
69
|
+
/**
|
|
70
|
+
* @deprecated Use updateEntity({ id, archived: true, archive_options: { cascade: true } }) instead.
|
|
71
|
+
* Archive a milestone and all its children.
|
|
72
|
+
*/
|
|
73
|
+
export declare function archiveMilestone(input: ArchiveMilestoneInput, deps: EntityManagementDependencies): Promise<ArchiveMilestoneOutput>;
|
|
74
|
+
/**
|
|
75
|
+
* @deprecated Use updateEntity({ id, archived: false, restore_options }) instead.
|
|
76
|
+
* Restore an archived entity.
|
|
77
|
+
*/
|
|
78
|
+
export declare function restoreFromArchive(input: RestoreFromArchiveInput, deps: EntityManagementDependencies): Promise<RestoreFromArchiveOutput>;
|
|
79
|
+
//# sourceMappingURL=entity-management-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-management-tools.d.ts","sourceRoot":"","sources":["../../src/tools/entity-management-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EAeb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAqCzB,MAAM,WAAW,4BAA4B;IAE3C,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpD,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,aAAa,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,UAAU,GAAG,IAAI,CAAC;IAGnD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAGtD,wBAAwB,EAAE,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,KACpB;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,qBAAqB,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,KACpB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAGzB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAG1E,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,mBAAmB,EAAE,MAAM,MAAM,CAAC;CACnC;AAMD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE;IAAE,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC;IAAC,aAAa,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,UAAU,GAAG,IAAI,CAAA;CAAE,EACrG,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,GACnC,2BAA2B,EAAE,CAqK/B;AAMD;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAkF7B;AA0ID;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAgJ7B;AAgOD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA6CnC;AAMD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAgC9B;AAMD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAuDjC;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA8CnC"}
|