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,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch Operations Tools
|
|
3
|
+
*
|
|
4
|
+
* Category 2: Batch Operations
|
|
5
|
+
* - batch_update: NEW unified batch operation with client_id support
|
|
6
|
+
* - batch_operations: DEPRECATED - Create multiple entities with dependencies
|
|
7
|
+
* - batch_update_status: DEPRECATED - Update status of multiple entities
|
|
8
|
+
* - batch_archive: DEPRECATED - Archive multiple entities
|
|
9
|
+
*/
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Batch Operations
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Unified Batch Update
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Unified batch operation with client_id support for idempotency and cross-referencing.
|
|
18
|
+
* Supports create, update, and archive operations in a single call.
|
|
19
|
+
*/
|
|
20
|
+
export async function batchUpdate(input, deps) {
|
|
21
|
+
const { ops, options } = input;
|
|
22
|
+
const atomic = options?.atomic ?? false;
|
|
23
|
+
const includeEntities = options?.include_entities ?? false;
|
|
24
|
+
const requestedFields = options?.fields;
|
|
25
|
+
const dryRun = options?.dry_run ?? false;
|
|
26
|
+
// Map of client_id → real EntityId (for cross-referencing within batch)
|
|
27
|
+
const clientIdMap = new Map();
|
|
28
|
+
// Track processed client_ids for idempotency
|
|
29
|
+
const processedClientIds = new Set();
|
|
30
|
+
const results = [];
|
|
31
|
+
const dryRunPreviews = [];
|
|
32
|
+
let succeeded = 0;
|
|
33
|
+
let failed = 0;
|
|
34
|
+
// Helper to filter entity fields based on requested fields
|
|
35
|
+
const filterEntityFields = (entityFull) => {
|
|
36
|
+
if (!requestedFields || requestedFields.length === 0) {
|
|
37
|
+
return entityFull; // Return all fields if none specified
|
|
38
|
+
}
|
|
39
|
+
const filtered = {};
|
|
40
|
+
for (const field of requestedFields) {
|
|
41
|
+
if (field in entityFull) {
|
|
42
|
+
filtered[field] = entityFull[field];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return filtered;
|
|
46
|
+
};
|
|
47
|
+
// Helper to compute field changes for dry_run preview
|
|
48
|
+
const computeChanges = (entity, payload) => {
|
|
49
|
+
const changes = [];
|
|
50
|
+
// Check all fields in the payload, not just a hardcoded list
|
|
51
|
+
for (const field of Object.keys(payload)) {
|
|
52
|
+
if (payload[field] !== undefined) {
|
|
53
|
+
const before = entity[field];
|
|
54
|
+
const after = payload[field];
|
|
55
|
+
// Check if values are different
|
|
56
|
+
const beforeStr = JSON.stringify(before);
|
|
57
|
+
const afterStr = JSON.stringify(after);
|
|
58
|
+
if (beforeStr !== afterStr) {
|
|
59
|
+
const change = { field, before, after };
|
|
60
|
+
// For array fields, compute added/removed
|
|
61
|
+
if (Array.isArray(before) && Array.isArray(after)) {
|
|
62
|
+
const beforeSet = new Set(before);
|
|
63
|
+
const afterSet = new Set(after);
|
|
64
|
+
change.added = after.filter(v => !beforeSet.has(v));
|
|
65
|
+
change.removed = before.filter(v => !afterSet.has(v));
|
|
66
|
+
}
|
|
67
|
+
changes.push(change);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return changes;
|
|
72
|
+
};
|
|
73
|
+
// Helper to resolve client_ids in payload
|
|
74
|
+
const resolveClientIds = (payload) => {
|
|
75
|
+
const resolved = { ...payload };
|
|
76
|
+
// Resolve parent reference
|
|
77
|
+
if (resolved.parent && typeof resolved.parent === 'string') {
|
|
78
|
+
const parentId = clientIdMap.get(resolved.parent);
|
|
79
|
+
if (parentId) {
|
|
80
|
+
resolved.parent = parentId;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Resolve depends_on references
|
|
84
|
+
if (resolved.depends_on && Array.isArray(resolved.depends_on)) {
|
|
85
|
+
resolved.depends_on = resolved.depends_on.map((dep) => {
|
|
86
|
+
const resolvedId = clientIdMap.get(dep);
|
|
87
|
+
return resolvedId || dep;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// Resolve enables references (for decisions)
|
|
91
|
+
if (resolved.enables && Array.isArray(resolved.enables)) {
|
|
92
|
+
resolved.enables = resolved.enables.map((ref) => {
|
|
93
|
+
const resolvedId = clientIdMap.get(ref);
|
|
94
|
+
return resolvedId || ref;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Resolve implements references
|
|
98
|
+
if (resolved.implements && Array.isArray(resolved.implements)) {
|
|
99
|
+
resolved.implements = resolved.implements.map((ref) => {
|
|
100
|
+
const resolvedId = clientIdMap.get(ref);
|
|
101
|
+
return resolvedId || ref;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return resolved;
|
|
105
|
+
};
|
|
106
|
+
for (const op of ops) {
|
|
107
|
+
// Skip duplicate client_ids (idempotency)
|
|
108
|
+
if (processedClientIds.has(op.client_id)) {
|
|
109
|
+
// Return existing result if we have one
|
|
110
|
+
const existingResult = results.find(r => r.client_id === op.client_id);
|
|
111
|
+
if (existingResult) {
|
|
112
|
+
results.push({ ...existingResult });
|
|
113
|
+
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
processedClientIds.add(op.client_id);
|
|
117
|
+
try {
|
|
118
|
+
switch (op.op) {
|
|
119
|
+
case 'create': {
|
|
120
|
+
if (!op.type) {
|
|
121
|
+
throw new Error('type is required for create operation');
|
|
122
|
+
}
|
|
123
|
+
if (!op.payload.title) {
|
|
124
|
+
throw new Error('title is required for create operation');
|
|
125
|
+
}
|
|
126
|
+
// Resolve client_ids in payload
|
|
127
|
+
const resolvedPayload = resolveClientIds(op.payload);
|
|
128
|
+
if (dryRun) {
|
|
129
|
+
// In dry_run mode, just preview what would be created
|
|
130
|
+
const preview = {
|
|
131
|
+
client_id: op.client_id,
|
|
132
|
+
op: 'create',
|
|
133
|
+
changes: Object.entries(resolvedPayload).map(([field, value]) => ({
|
|
134
|
+
field,
|
|
135
|
+
before: undefined,
|
|
136
|
+
after: value,
|
|
137
|
+
})),
|
|
138
|
+
validation_errors: [],
|
|
139
|
+
};
|
|
140
|
+
dryRunPreviews.push(preview);
|
|
141
|
+
succeeded++;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
// Create the entity
|
|
145
|
+
const entity = await deps.createEntity(op.type, resolvedPayload);
|
|
146
|
+
// Store mapping for cross-references
|
|
147
|
+
clientIdMap.set(op.client_id, entity.id);
|
|
148
|
+
// Add to canvas if requested
|
|
149
|
+
if (options?.add_to_canvas && deps.addToCanvas && options.canvas_source) {
|
|
150
|
+
await deps.addToCanvas(entity, options.canvas_source);
|
|
151
|
+
}
|
|
152
|
+
// Build result with optional entity data
|
|
153
|
+
const createResult = {
|
|
154
|
+
client_id: op.client_id,
|
|
155
|
+
status: 'ok',
|
|
156
|
+
id: entity.id,
|
|
157
|
+
};
|
|
158
|
+
// Include entity data if requested
|
|
159
|
+
if (includeEntities) {
|
|
160
|
+
const entityFull = await deps.toEntityFull(entity);
|
|
161
|
+
createResult.entity = filterEntityFields(entityFull);
|
|
162
|
+
}
|
|
163
|
+
results.push(createResult);
|
|
164
|
+
succeeded++;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case 'update': {
|
|
168
|
+
if (!op.id) {
|
|
169
|
+
throw new Error('id is required for update operation');
|
|
170
|
+
}
|
|
171
|
+
// Get entity
|
|
172
|
+
const entity = await deps.getEntity(op.id);
|
|
173
|
+
if (!entity) {
|
|
174
|
+
throw new Error(`Entity not found: ${op.id}`);
|
|
175
|
+
}
|
|
176
|
+
// Resolve client_ids in payload
|
|
177
|
+
const resolvedPayload = resolveClientIds(op.payload);
|
|
178
|
+
// Validate status transition if status is being changed
|
|
179
|
+
const validationErrors = [];
|
|
180
|
+
if (resolvedPayload.status && resolvedPayload.status !== entity.status) {
|
|
181
|
+
const validation = deps.validateStatusTransition(entity, resolvedPayload.status);
|
|
182
|
+
if (!validation.valid) {
|
|
183
|
+
validationErrors.push(validation.reason || 'Invalid status transition');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (dryRun) {
|
|
187
|
+
// In dry_run mode, compute and preview changes without executing
|
|
188
|
+
const preview = {
|
|
189
|
+
client_id: op.client_id,
|
|
190
|
+
id: op.id,
|
|
191
|
+
op: 'update',
|
|
192
|
+
changes: computeChanges(entity, resolvedPayload),
|
|
193
|
+
validation_errors: validationErrors,
|
|
194
|
+
};
|
|
195
|
+
dryRunPreviews.push(preview);
|
|
196
|
+
if (validationErrors.length === 0) {
|
|
197
|
+
succeeded++;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
failed++;
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
// Throw validation errors in non-dry_run mode
|
|
205
|
+
if (validationErrors.length > 0) {
|
|
206
|
+
throw new Error(validationErrors[0]);
|
|
207
|
+
}
|
|
208
|
+
// Track what was updated
|
|
209
|
+
let statusChanged = false;
|
|
210
|
+
let dependenciesAdded = 0;
|
|
211
|
+
let fieldsUpdated = 0;
|
|
212
|
+
// Handle status update
|
|
213
|
+
if (resolvedPayload.status && resolvedPayload.status !== entity.status) {
|
|
214
|
+
entity.status = resolvedPayload.status;
|
|
215
|
+
statusChanged = true;
|
|
216
|
+
}
|
|
217
|
+
// Handle depends_on - add to existing dependencies
|
|
218
|
+
if (resolvedPayload.depends_on && Array.isArray(resolvedPayload.depends_on) && 'depends_on' in entity) {
|
|
219
|
+
const currentDeps = entity.depends_on || [];
|
|
220
|
+
const newDeps = resolvedPayload.depends_on;
|
|
221
|
+
const mergedDeps = [...new Set([...currentDeps, ...newDeps])];
|
|
222
|
+
dependenciesAdded = mergedDeps.length - currentDeps.length;
|
|
223
|
+
entity.depends_on = mergedDeps;
|
|
224
|
+
}
|
|
225
|
+
// Handle other field updates (title, priority, content, parent, etc.)
|
|
226
|
+
const fieldsToUpdate = ['title', 'priority', 'content', 'workstream',
|
|
227
|
+
'target_date', 'owner', 'acceptance_criteria', 'implements', 'enables', 'parent'];
|
|
228
|
+
for (const field of fieldsToUpdate) {
|
|
229
|
+
if (field in resolvedPayload && resolvedPayload[field] !== undefined) {
|
|
230
|
+
// For array fields like implements/enables, merge with existing
|
|
231
|
+
if ((field === 'implements' || field === 'enables') && Array.isArray(resolvedPayload[field])) {
|
|
232
|
+
const current = entity[field] || [];
|
|
233
|
+
const newValues = resolvedPayload[field];
|
|
234
|
+
entity[field] = [...new Set([...current, ...newValues])];
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
entity[field] = resolvedPayload[field];
|
|
238
|
+
}
|
|
239
|
+
fieldsUpdated++;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Update timestamp and write if anything changed
|
|
243
|
+
if (statusChanged || dependenciesAdded > 0 || fieldsUpdated > 0) {
|
|
244
|
+
entity.updated_at = deps.getCurrentTimestamp();
|
|
245
|
+
await deps.writeEntity(entity);
|
|
246
|
+
}
|
|
247
|
+
// Store mapping for potential cross-references
|
|
248
|
+
clientIdMap.set(op.client_id, op.id);
|
|
249
|
+
// Build result with optional entity data
|
|
250
|
+
const updateResult = {
|
|
251
|
+
client_id: op.client_id,
|
|
252
|
+
status: 'ok',
|
|
253
|
+
id: op.id,
|
|
254
|
+
};
|
|
255
|
+
// Include entity data if requested
|
|
256
|
+
if (includeEntities) {
|
|
257
|
+
const entityFull = await deps.toEntityFull(entity);
|
|
258
|
+
updateResult.entity = filterEntityFields(entityFull);
|
|
259
|
+
}
|
|
260
|
+
results.push(updateResult);
|
|
261
|
+
succeeded++;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
case 'archive': {
|
|
265
|
+
if (!op.id) {
|
|
266
|
+
throw new Error('id is required for archive operation');
|
|
267
|
+
}
|
|
268
|
+
// Get entity
|
|
269
|
+
const entity = await deps.getEntity(op.id);
|
|
270
|
+
if (!entity) {
|
|
271
|
+
throw new Error(`Entity not found: ${op.id}`);
|
|
272
|
+
}
|
|
273
|
+
if (dryRun) {
|
|
274
|
+
// In dry_run mode, preview what would be archived
|
|
275
|
+
const preview = {
|
|
276
|
+
client_id: op.client_id,
|
|
277
|
+
id: op.id,
|
|
278
|
+
op: 'archive',
|
|
279
|
+
changes: [{ field: 'archived', before: entity.archived, after: true }],
|
|
280
|
+
validation_errors: [],
|
|
281
|
+
};
|
|
282
|
+
dryRunPreviews.push(preview);
|
|
283
|
+
succeeded++;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
// Compute archive path
|
|
287
|
+
const now = new Date();
|
|
288
|
+
const quarter = Math.ceil((now.getMonth() + 1) / 3);
|
|
289
|
+
const archivePath = `archive/${now.getFullYear()}-Q${quarter}`;
|
|
290
|
+
// Archive with cascade if requested
|
|
291
|
+
if (op.payload.cascade) {
|
|
292
|
+
// Archive children first
|
|
293
|
+
const children = await deps.getChildren(op.id);
|
|
294
|
+
for (const child of children) {
|
|
295
|
+
// Recursively get grandchildren for stories
|
|
296
|
+
if (child.type === 'story') {
|
|
297
|
+
const grandchildren = await deps.getChildren(child.id);
|
|
298
|
+
for (const grandchild of grandchildren) {
|
|
299
|
+
await deps.archiveEntity(grandchild.id, archivePath);
|
|
300
|
+
if (options?.add_to_canvas === false && deps.removeFromCanvas && options.canvas_source) {
|
|
301
|
+
await deps.removeFromCanvas(grandchild.id, options.canvas_source);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
await deps.archiveEntity(child.id, archivePath);
|
|
306
|
+
if (options?.add_to_canvas === false && deps.removeFromCanvas && options.canvas_source) {
|
|
307
|
+
await deps.removeFromCanvas(child.id, options.canvas_source);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
await deps.archiveEntity(op.id, archivePath);
|
|
312
|
+
if (options?.add_to_canvas === false && deps.removeFromCanvas && options.canvas_source) {
|
|
313
|
+
await deps.removeFromCanvas(op.id, options.canvas_source);
|
|
314
|
+
}
|
|
315
|
+
// Build result with optional entity data
|
|
316
|
+
const archiveResult = {
|
|
317
|
+
client_id: op.client_id,
|
|
318
|
+
status: 'ok',
|
|
319
|
+
id: op.id,
|
|
320
|
+
};
|
|
321
|
+
// Include entity data if requested (re-fetch after archive to get updated state)
|
|
322
|
+
if (includeEntities) {
|
|
323
|
+
const archivedEntity = await deps.getEntity(op.id);
|
|
324
|
+
if (archivedEntity) {
|
|
325
|
+
const entityFull = await deps.toEntityFull(archivedEntity);
|
|
326
|
+
archiveResult.entity = filterEntityFields(entityFull);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
results.push(archiveResult);
|
|
330
|
+
succeeded++;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
default:
|
|
334
|
+
throw new Error(`Unknown operation type: ${op.op}`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
339
|
+
if (atomic) {
|
|
340
|
+
// In atomic mode, fail the entire batch
|
|
341
|
+
throw new Error(`Batch operation failed at ${op.client_id}: ${errorMessage}`);
|
|
342
|
+
}
|
|
343
|
+
results.push({
|
|
344
|
+
client_id: op.client_id,
|
|
345
|
+
status: 'error',
|
|
346
|
+
error: {
|
|
347
|
+
code: 'OPERATION_FAILED',
|
|
348
|
+
message: errorMessage,
|
|
349
|
+
},
|
|
350
|
+
});
|
|
351
|
+
failed++;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Build output
|
|
355
|
+
const output = {
|
|
356
|
+
results: dryRun ? [] : results,
|
|
357
|
+
summary: {
|
|
358
|
+
total: ops.length,
|
|
359
|
+
succeeded,
|
|
360
|
+
failed,
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
// Add dry_run specific fields
|
|
364
|
+
if (dryRun) {
|
|
365
|
+
output.dry_run = true;
|
|
366
|
+
output.would_update = dryRunPreviews;
|
|
367
|
+
}
|
|
368
|
+
return output;
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=batch-operations-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-operations-tools.js","sourceRoot":"","sources":["../../src/tools/batch-operations-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
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 type { Entity, EntityId, Decision, Document } from '../models/v2-types.js';
|
|
15
|
+
import type { GetDecisionHistoryInput, GetDecisionHistoryOutput, SupersedeDocumentInput, SupersedeDocumentOutput, GetDocumentHistoryInput, GetDocumentHistoryOutput, CheckDocumentFreshnessInput, CheckDocumentFreshnessOutput, ManageDocumentsInput, ManageDocumentsOutput, EntityFull, Workstream } from './tool-types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Dependencies for decision and document tools.
|
|
18
|
+
*/
|
|
19
|
+
export interface DecisionDocumentDependencies {
|
|
20
|
+
/** Create a new decision */
|
|
21
|
+
createDecision: (data: {
|
|
22
|
+
title: string;
|
|
23
|
+
context: string;
|
|
24
|
+
decision: string;
|
|
25
|
+
rationale: string;
|
|
26
|
+
workstream: Workstream;
|
|
27
|
+
decided_by: string;
|
|
28
|
+
blocks?: EntityId[];
|
|
29
|
+
supersedes?: EntityId;
|
|
30
|
+
}) => Promise<Decision>;
|
|
31
|
+
/** Get entity by ID */
|
|
32
|
+
getEntity: (id: EntityId) => Promise<Entity | null>;
|
|
33
|
+
/** Get all decisions */
|
|
34
|
+
getAllDecisions: (options?: {
|
|
35
|
+
workstream?: Workstream;
|
|
36
|
+
includeSuperseded?: boolean;
|
|
37
|
+
includeArchived?: boolean;
|
|
38
|
+
}) => Promise<Decision[]>;
|
|
39
|
+
/** Get all documents */
|
|
40
|
+
getAllDocuments: () => Promise<Document[]>;
|
|
41
|
+
/** Update document */
|
|
42
|
+
updateDocument: (id: EntityId, data: Partial<Document>) => Promise<Document>;
|
|
43
|
+
/** Convert entity to full representation */
|
|
44
|
+
toEntityFull: (entity: Entity) => Promise<EntityFull>;
|
|
45
|
+
/** Get current timestamp */
|
|
46
|
+
getCurrentTimestamp: () => string;
|
|
47
|
+
/** Generate next ID */
|
|
48
|
+
generateId: (type: 'decision' | 'document') => Promise<EntityId>;
|
|
49
|
+
/** Get decisions that affect a document */
|
|
50
|
+
getDecisionsAffectingDocument: (docId: EntityId) => Promise<Decision[]>;
|
|
51
|
+
/** Search content for pattern */
|
|
52
|
+
searchContent: (entityId: EntityId, pattern: string) => Promise<boolean>;
|
|
53
|
+
/** Add entity to canvas (optional) */
|
|
54
|
+
addToCanvas?: (entity: Entity, canvasPath: string) => Promise<boolean>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Consolidated tool for document and decision management.
|
|
58
|
+
* Dispatches to the appropriate handler based on action.
|
|
59
|
+
*/
|
|
60
|
+
export declare function manageDocuments(input: ManageDocumentsInput, deps: DecisionDocumentDependencies): Promise<ManageDocumentsOutput>;
|
|
61
|
+
/**
|
|
62
|
+
* Get decision history for a topic or workstream.
|
|
63
|
+
* By default includes archived decisions since most decisions are archived after being decided.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getDecisionHistory(input: GetDecisionHistoryInput, deps: DecisionDocumentDependencies): Promise<GetDecisionHistoryOutput>;
|
|
66
|
+
/**
|
|
67
|
+
* Update a document based on a decision, creating a new version.
|
|
68
|
+
*/
|
|
69
|
+
export declare function supersedeDocument(input: SupersedeDocumentInput, deps: DecisionDocumentDependencies): Promise<SupersedeDocumentOutput>;
|
|
70
|
+
/**
|
|
71
|
+
* Get version history for a document.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getDocumentHistory(input: GetDocumentHistoryInput, deps: DecisionDocumentDependencies): Promise<GetDocumentHistoryOutput>;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a document is up-to-date with related decisions.
|
|
76
|
+
*/
|
|
77
|
+
export declare function checkDocumentFreshness(input: CheckDocumentFreshnessInput, deps: DecisionDocumentDependencies): Promise<CheckDocumentFreshnessOutput>;
|
|
78
|
+
//# sourceMappingURL=decision-document-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-document-tools.d.ts","sourceRoot":"","sources":["../../src/tools/decision-document-tools.ts"],"names":[],"mappings":"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"}
|