obsidian-accomplishments-mcp 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/accomplishment-service.d.ts.map +1 -1
- package/dist/services/accomplishment-service.js +10 -2
- package/dist/services/accomplishment-service.js.map +1 -1
- package/dist/services/canvas-service.d.ts +44 -0
- package/dist/services/canvas-service.d.ts.map +1 -1
- package/dist/services/canvas-service.js +102 -36
- package/dist/services/canvas-service.js.map +1 -1
- package/dist/test-runner.js +36 -2
- package/dist/test-runner.js.map +1 -1
- package/dist/utils/file-utils.d.ts +5 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +34 -1
- package/dist/utils/file-utils.js.map +1 -1
- package/package.json +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accomplishment-service.d.ts","sourceRoot":"","sources":["../../src/services/accomplishment-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,qBAAqB,EACrB,MAAM,EACN,wBAAwB,EACxB,wBAAwB,EAIxB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"accomplishment-service.d.ts","sourceRoot":"","sources":["../../src/services/accomplishment-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,qBAAqB,EACrB,MAAM,EACN,wBAAwB,EACxB,wBAAwB,EAIxB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAoB5B;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAuEzB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,cAAc,CAAC,CAazB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA2CzB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqBtF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,oBAAoB,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAclC;AA8GD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBnC"}
|
|
@@ -2,7 +2,7 @@ import { NotFoundError, } from '../models/types.js';
|
|
|
2
2
|
import { parseAccomplishment, serializeAccomplishment } from '../parsers/markdown-parser.js';
|
|
3
3
|
import { readFile, writeFileAtomic, deleteFile, listFiles } from '../utils/file-utils.js';
|
|
4
4
|
import { getAccomplishmentsPath, getAccomplishmentFilePath, getRelativeAccomplishmentPath, } from '../utils/config.js';
|
|
5
|
-
import { generateAccomplishmentId, addAccomplishmentNode, removeAccomplishmentNode, loadCanvas, getNodeIdsByFilePaths, updateNodePosition, } from './canvas-service.js';
|
|
5
|
+
import { generateAccomplishmentId, addAccomplishmentNode, removeAccomplishmentNode, loadCanvas, getNodeIdsByFilePaths, updateNodePosition, addDependencyEdge, } from './canvas-service.js';
|
|
6
6
|
import { calculatePosition } from '../utils/positioning.js';
|
|
7
7
|
/**
|
|
8
8
|
* Create a new accomplishment
|
|
@@ -53,7 +53,15 @@ export async function createAccomplishment(config, data) {
|
|
|
53
53
|
}
|
|
54
54
|
const position = calculatePosition(canvas, dependsOnNodeIds);
|
|
55
55
|
// Add node to canvas
|
|
56
|
-
|
|
56
|
+
const newNodeFilePath = getRelativeAccomplishmentPath(config, data.title);
|
|
57
|
+
await addAccomplishmentNode(config, newNodeFilePath, position, canvasSource);
|
|
58
|
+
// Create edges for dependencies
|
|
59
|
+
if (data.depends_on && data.depends_on.length > 0) {
|
|
60
|
+
const depFilePaths = await getFilePathsForIds(config, data.depends_on);
|
|
61
|
+
for (const blockerFilePath of depFilePaths) {
|
|
62
|
+
await addDependencyEdge(config, blockerFilePath, newNodeFilePath, canvasSource);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
57
65
|
return accomplishment;
|
|
58
66
|
}
|
|
59
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accomplishment-service.js","sourceRoot":"","sources":["../../src/services/accomplishment-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,aAAa,GAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAc,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,qBAAqB,EACrB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"accomplishment-service.js","sourceRoot":"","sources":["../../src/services/accomplishment-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,43 @@
|
|
|
1
1
|
import { CanvasFile, CanvasNode, CanvasEdge, Config } from '../models/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canvas operation types for merge-based updates
|
|
4
|
+
*/
|
|
5
|
+
export type CanvasOperation = {
|
|
6
|
+
type: 'add_node';
|
|
7
|
+
node: CanvasNode;
|
|
8
|
+
} | {
|
|
9
|
+
type: 'remove_node';
|
|
10
|
+
filePath: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'update_position';
|
|
13
|
+
filePath: string;
|
|
14
|
+
position: {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
};
|
|
18
|
+
} | {
|
|
19
|
+
type: 'add_edge';
|
|
20
|
+
fromFilePath: string;
|
|
21
|
+
toFilePath: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'remove_edge';
|
|
24
|
+
fromFilePath: string;
|
|
25
|
+
toFilePath: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Apply multiple operations to canvas atomically with merge strategy.
|
|
29
|
+
*
|
|
30
|
+
* Flow:
|
|
31
|
+
* 1. Read current canvas (captures Obsidian's latest state)
|
|
32
|
+
* 2. Apply our operations in memory (our changes take precedence on conflicts)
|
|
33
|
+
* 3. Write to temp file
|
|
34
|
+
* 4. Atomic rename to canvas file
|
|
35
|
+
* 5. Trigger Obsidian reload
|
|
36
|
+
*
|
|
37
|
+
* This minimizes race conditions with Obsidian and preserves user changes
|
|
38
|
+
* that don't conflict with our operations.
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyCanvasOperations(config: Config, operations: CanvasOperation[], canvasSource?: string): Promise<void>;
|
|
2
41
|
/**
|
|
3
42
|
* Load a canvas file
|
|
4
43
|
*/
|
|
@@ -17,6 +56,7 @@ export declare function getAllAccomplishmentIds(config: Config, canvasSource?: s
|
|
|
17
56
|
export declare function generateAccomplishmentId(config: Config, canvasSource?: string): Promise<string>;
|
|
18
57
|
/**
|
|
19
58
|
* Add a node to canvas for an accomplishment
|
|
59
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
20
60
|
*/
|
|
21
61
|
export declare function addAccomplishmentNode(config: Config, filePath: string, position: {
|
|
22
62
|
x: number;
|
|
@@ -24,10 +64,12 @@ export declare function addAccomplishmentNode(config: Config, filePath: string,
|
|
|
24
64
|
}, canvasSource?: string): Promise<CanvasNode>;
|
|
25
65
|
/**
|
|
26
66
|
* Remove an accomplishment node from canvas
|
|
67
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
27
68
|
*/
|
|
28
69
|
export declare function removeAccomplishmentNode(config: Config, filePath: string, canvasSource?: string): Promise<void>;
|
|
29
70
|
/**
|
|
30
71
|
* Update node position
|
|
72
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
31
73
|
*/
|
|
32
74
|
export declare function updateNodePosition(config: Config, filePath: string, position: {
|
|
33
75
|
x: number;
|
|
@@ -35,10 +77,12 @@ export declare function updateNodePosition(config: Config, filePath: string, pos
|
|
|
35
77
|
}, canvasSource?: string): Promise<void>;
|
|
36
78
|
/**
|
|
37
79
|
* Add a dependency edge between two accomplishments
|
|
80
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
38
81
|
*/
|
|
39
82
|
export declare function addDependencyEdge(config: Config, blockerFilePath: string, blockedFilePath: string, canvasSource?: string): Promise<CanvasEdge | null>;
|
|
40
83
|
/**
|
|
41
84
|
* Remove a dependency edge
|
|
85
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
42
86
|
*/
|
|
43
87
|
export declare function removeDependencyEdge(config: Config, blockerFilePath: string, blockedFilePath: string, canvasSource?: string): Promise<void>;
|
|
44
88
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-service.d.ts","sourceRoot":"","sources":["../../src/services/canvas-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,EAEP,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAS3F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED
|
|
1
|
+
{"version":3,"file":"canvas-service.d.ts","sourceRoot":"","sources":["../../src/services/canvas-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,92 @@
|
|
|
1
1
|
import { NotFoundError, } from '../models/types.js';
|
|
2
2
|
import { parseCanvas, serializeCanvas, findNodeByFile } from '../parsers/canvas-parser.js';
|
|
3
|
-
import { readFile, writeFileAtomic, fileExists } from '../utils/file-utils.js';
|
|
3
|
+
import { readFile, writeFileAtomic, fileExists, triggerObsidianReload } from '../utils/file-utils.js';
|
|
4
4
|
import { getCanvasPath } from '../utils/config.js';
|
|
5
5
|
import { generateId } from '../utils/file-utils.js';
|
|
6
|
+
/**
|
|
7
|
+
* Apply multiple operations to canvas atomically with merge strategy.
|
|
8
|
+
*
|
|
9
|
+
* Flow:
|
|
10
|
+
* 1. Read current canvas (captures Obsidian's latest state)
|
|
11
|
+
* 2. Apply our operations in memory (our changes take precedence on conflicts)
|
|
12
|
+
* 3. Write to temp file
|
|
13
|
+
* 4. Atomic rename to canvas file
|
|
14
|
+
* 5. Trigger Obsidian reload
|
|
15
|
+
*
|
|
16
|
+
* This minimizes race conditions with Obsidian and preserves user changes
|
|
17
|
+
* that don't conflict with our operations.
|
|
18
|
+
*/
|
|
19
|
+
export async function applyCanvasOperations(config, operations, canvasSource) {
|
|
20
|
+
if (operations.length === 0)
|
|
21
|
+
return;
|
|
22
|
+
const canvasPath = getCanvasPath(config, canvasSource);
|
|
23
|
+
// Step 1: Read current canvas (captures any user changes)
|
|
24
|
+
const canvas = await loadCanvas(config, canvasSource);
|
|
25
|
+
// Step 2: Apply our operations (our changes win on conflicts)
|
|
26
|
+
for (const op of operations) {
|
|
27
|
+
switch (op.type) {
|
|
28
|
+
case 'add_node': {
|
|
29
|
+
// Check if node with same file already exists
|
|
30
|
+
const existing = findNodeByFile(canvas, op.node.file);
|
|
31
|
+
if (existing) {
|
|
32
|
+
// Update to our values (our changes win)
|
|
33
|
+
Object.assign(existing, op.node);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
canvas.nodes.push(op.node);
|
|
37
|
+
}
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case 'remove_node': {
|
|
41
|
+
const node = findNodeByFile(canvas, op.filePath);
|
|
42
|
+
if (node) {
|
|
43
|
+
canvas.nodes = canvas.nodes.filter(n => n.id !== node.id);
|
|
44
|
+
canvas.edges = canvas.edges.filter(e => e.fromNode !== node.id && e.toNode !== node.id);
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case 'update_position': {
|
|
49
|
+
const node = findNodeByFile(canvas, op.filePath);
|
|
50
|
+
if (node) {
|
|
51
|
+
node.x = op.position.x;
|
|
52
|
+
node.y = op.position.y;
|
|
53
|
+
}
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case 'add_edge': {
|
|
57
|
+
const fromNode = findNodeByFile(canvas, op.fromFilePath);
|
|
58
|
+
const toNode = findNodeByFile(canvas, op.toFilePath);
|
|
59
|
+
if (fromNode && toNode) {
|
|
60
|
+
// Only add if not already exists
|
|
61
|
+
const exists = canvas.edges.some(e => e.fromNode === fromNode.id && e.toNode === toNode.id);
|
|
62
|
+
if (!exists) {
|
|
63
|
+
canvas.edges.push({
|
|
64
|
+
id: generateId(),
|
|
65
|
+
fromNode: fromNode.id,
|
|
66
|
+
toNode: toNode.id,
|
|
67
|
+
fromSide: 'right',
|
|
68
|
+
toSide: 'left',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case 'remove_edge': {
|
|
75
|
+
const fromNode = findNodeByFile(canvas, op.fromFilePath);
|
|
76
|
+
const toNode = findNodeByFile(canvas, op.toFilePath);
|
|
77
|
+
if (fromNode && toNode) {
|
|
78
|
+
canvas.edges = canvas.edges.filter(e => !(e.fromNode === fromNode.id && e.toNode === toNode.id));
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Steps 3-4: Write to temp file and atomic rename (handled by writeFileAtomic)
|
|
85
|
+
const content = serializeCanvas(canvas);
|
|
86
|
+
await writeFileAtomic(canvasPath, content);
|
|
87
|
+
// Step 5: Trigger Obsidian to reload the canvas
|
|
88
|
+
triggerObsidianReload(config.vaultPath, canvasPath);
|
|
89
|
+
}
|
|
6
90
|
/**
|
|
7
91
|
* Load a canvas file
|
|
8
92
|
*/
|
|
@@ -63,9 +147,9 @@ export async function generateAccomplishmentId(config, canvasSource) {
|
|
|
63
147
|
}
|
|
64
148
|
/**
|
|
65
149
|
* Add a node to canvas for an accomplishment
|
|
150
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
66
151
|
*/
|
|
67
152
|
export async function addAccomplishmentNode(config, filePath, position, canvasSource) {
|
|
68
|
-
const canvas = await loadCanvas(config, canvasSource);
|
|
69
153
|
const node = {
|
|
70
154
|
id: generateId(),
|
|
71
155
|
type: 'file',
|
|
@@ -75,39 +159,29 @@ export async function addAccomplishmentNode(config, filePath, position, canvasSo
|
|
|
75
159
|
width: 400,
|
|
76
160
|
height: 300,
|
|
77
161
|
};
|
|
78
|
-
|
|
79
|
-
await saveCanvas(config, canvas, canvasSource);
|
|
162
|
+
await applyCanvasOperations(config, [{ type: 'add_node', node }], canvasSource);
|
|
80
163
|
return node;
|
|
81
164
|
}
|
|
82
165
|
/**
|
|
83
166
|
* Remove an accomplishment node from canvas
|
|
167
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
84
168
|
*/
|
|
85
169
|
export async function removeAccomplishmentNode(config, filePath, canvasSource) {
|
|
86
|
-
|
|
87
|
-
const node = findNodeByFile(canvas, filePath);
|
|
88
|
-
if (!node)
|
|
89
|
-
return;
|
|
90
|
-
// Remove node and all associated edges
|
|
91
|
-
canvas.nodes = canvas.nodes.filter(n => n.id !== node.id);
|
|
92
|
-
canvas.edges = canvas.edges.filter(e => e.fromNode !== node.id && e.toNode !== node.id);
|
|
93
|
-
await saveCanvas(config, canvas, canvasSource);
|
|
170
|
+
await applyCanvasOperations(config, [{ type: 'remove_node', filePath }], canvasSource);
|
|
94
171
|
}
|
|
95
172
|
/**
|
|
96
173
|
* Update node position
|
|
174
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
97
175
|
*/
|
|
98
176
|
export async function updateNodePosition(config, filePath, position, canvasSource) {
|
|
99
|
-
|
|
100
|
-
const node = findNodeByFile(canvas, filePath);
|
|
101
|
-
if (!node)
|
|
102
|
-
return;
|
|
103
|
-
node.x = position.x;
|
|
104
|
-
node.y = position.y;
|
|
105
|
-
await saveCanvas(config, canvas, canvasSource);
|
|
177
|
+
await applyCanvasOperations(config, [{ type: 'update_position', filePath, position }], canvasSource);
|
|
106
178
|
}
|
|
107
179
|
/**
|
|
108
180
|
* Add a dependency edge between two accomplishments
|
|
181
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
109
182
|
*/
|
|
110
183
|
export async function addDependencyEdge(config, blockerFilePath, blockedFilePath, canvasSource) {
|
|
184
|
+
// First check if nodes exist (read-only operation)
|
|
111
185
|
const canvas = await loadCanvas(config, canvasSource);
|
|
112
186
|
const blockerNode = findNodeByFile(canvas, blockerFilePath);
|
|
113
187
|
const blockedNode = findNodeByFile(canvas, blockedFilePath);
|
|
@@ -119,28 +193,20 @@ export async function addDependencyEdge(config, blockerFilePath, blockedFilePath
|
|
|
119
193
|
if (existingEdge) {
|
|
120
194
|
return existingEdge;
|
|
121
195
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
canvas.edges.push(edge);
|
|
130
|
-
await saveCanvas(config, canvas, canvasSource);
|
|
131
|
-
return edge;
|
|
196
|
+
// Apply the operation with merge strategy
|
|
197
|
+
await applyCanvasOperations(config, [{ type: 'add_edge', fromFilePath: blockerFilePath, toFilePath: blockedFilePath }], canvasSource);
|
|
198
|
+
// Return the edge info (re-read to get the actual edge created)
|
|
199
|
+
const updatedCanvas = await loadCanvas(config, canvasSource);
|
|
200
|
+
const newBlockerNode = findNodeByFile(updatedCanvas, blockerFilePath);
|
|
201
|
+
const newBlockedNode = findNodeByFile(updatedCanvas, blockedFilePath);
|
|
202
|
+
return updatedCanvas.edges.find(e => e.fromNode === newBlockerNode?.id && e.toNode === newBlockedNode?.id) || null;
|
|
132
203
|
}
|
|
133
204
|
/**
|
|
134
205
|
* Remove a dependency edge
|
|
206
|
+
* Uses merge-based approach to handle concurrent Obsidian edits
|
|
135
207
|
*/
|
|
136
208
|
export async function removeDependencyEdge(config, blockerFilePath, blockedFilePath, canvasSource) {
|
|
137
|
-
|
|
138
|
-
const blockerNode = findNodeByFile(canvas, blockerFilePath);
|
|
139
|
-
const blockedNode = findNodeByFile(canvas, blockedFilePath);
|
|
140
|
-
if (!blockerNode || !blockedNode)
|
|
141
|
-
return;
|
|
142
|
-
canvas.edges = canvas.edges.filter(e => !(e.fromNode === blockerNode.id && e.toNode === blockedNode.id));
|
|
143
|
-
await saveCanvas(config, canvas, canvasSource);
|
|
209
|
+
await applyCanvasOperations(config, [{ type: 'remove_edge', fromFilePath: blockerFilePath, toFilePath: blockedFilePath }], canvasSource);
|
|
144
210
|
}
|
|
145
211
|
/**
|
|
146
212
|
* Get node by file path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-service.js","sourceRoot":"","sources":["../../src/services/canvas-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"canvas-service.js","sourceRoot":"","sources":["../../src/services/canvas-service.ts"],"names":[],"mappings":"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"}
|
package/dist/test-runner.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { getConfig } from './utils/config.js';
|
|
6
6
|
import { handleManageAccomplishment, handleManageDependency, handleManageTask, handleSetWorkFocus, handleGetAccomplishment, handleListAccomplishments, handleGetCurrentWork, handleGetBlockedItems, handleGetReadyToStart, handleGetProjectStatus, } from './tools/index.js';
|
|
7
|
+
import { loadCanvas } from './services/canvas-service.js';
|
|
8
|
+
import { findNodeByFile } from './parsers/canvas-parser.js';
|
|
7
9
|
// Set environment variables for testing
|
|
8
10
|
process.env.VAULT_PATH = process.cwd() + '/test-vault';
|
|
9
11
|
process.env.ACCOMPLISHMENTS_FOLDER = 'accomplishments';
|
|
@@ -46,8 +48,8 @@ async function runTests() {
|
|
|
46
48
|
},
|
|
47
49
|
});
|
|
48
50
|
console.log('Created ACC3:', JSON.stringify(acc3, null, 2));
|
|
49
|
-
// Test 2: Add dependencies
|
|
50
|
-
console.log('\n--- Test 2: Add Dependencies ---');
|
|
51
|
+
// Test 2: Add dependencies using manage_dependency
|
|
52
|
+
console.log('\n--- Test 2: Add Dependencies (via manage_dependency) ---');
|
|
51
53
|
// ACC-002 depends on ACC-001
|
|
52
54
|
const dep1 = await handleManageDependency(config, {
|
|
53
55
|
operation: 'add',
|
|
@@ -62,6 +64,38 @@ async function runTests() {
|
|
|
62
64
|
blocked_id: 'ACC-003',
|
|
63
65
|
});
|
|
64
66
|
console.log('Added dependency:', JSON.stringify(dep2, null, 2));
|
|
67
|
+
// Test 2b: Create accomplishment WITH depends_on at creation time
|
|
68
|
+
console.log('\n--- Test 2b: Create Accomplishment with depends_on (edge creation test) ---');
|
|
69
|
+
const acc4 = await handleManageAccomplishment(config, {
|
|
70
|
+
operation: 'create',
|
|
71
|
+
data: {
|
|
72
|
+
title: 'Deploy to Production',
|
|
73
|
+
effort: 'Engineering',
|
|
74
|
+
priority: 'High',
|
|
75
|
+
outcome: 'Application is deployed and running in production',
|
|
76
|
+
depends_on: ['ACC-002', 'ACC-003'], // Should create edges at creation time
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
console.log('Created ACC4 with depends_on:', JSON.stringify(acc4, null, 2));
|
|
80
|
+
// Verify edges were created in canvas
|
|
81
|
+
console.log('\n--- Verifying canvas edges for ACC-004 ---');
|
|
82
|
+
const canvas = await loadCanvas(config);
|
|
83
|
+
// Find nodes
|
|
84
|
+
const acc2Node = findNodeByFile(canvas, 'accomplishments/Implement Core Features.md');
|
|
85
|
+
const acc3Node = findNodeByFile(canvas, 'accomplishments/Write Documentation.md');
|
|
86
|
+
const acc4Node = findNodeByFile(canvas, 'accomplishments/Deploy to Production.md');
|
|
87
|
+
console.log('ACC-002 node:', acc2Node ? `found (id: ${acc2Node.id})` : 'NOT FOUND');
|
|
88
|
+
console.log('ACC-003 node:', acc3Node ? `found (id: ${acc3Node.id})` : 'NOT FOUND');
|
|
89
|
+
console.log('ACC-004 node:', acc4Node ? `found (id: ${acc4Node.id})` : 'NOT FOUND');
|
|
90
|
+
// Check for edges
|
|
91
|
+
const edgeFromAcc2ToAcc4 = canvas.edges.find(e => e.fromNode === acc2Node?.id && e.toNode === acc4Node?.id);
|
|
92
|
+
const edgeFromAcc3ToAcc4 = canvas.edges.find(e => e.fromNode === acc3Node?.id && e.toNode === acc4Node?.id);
|
|
93
|
+
console.log('Edge ACC-002 -> ACC-004:', edgeFromAcc2ToAcc4 ? '✅ EXISTS' : '❌ MISSING');
|
|
94
|
+
console.log('Edge ACC-003 -> ACC-004:', edgeFromAcc3ToAcc4 ? '✅ EXISTS' : '❌ MISSING');
|
|
95
|
+
if (!edgeFromAcc2ToAcc4 || !edgeFromAcc3ToAcc4) {
|
|
96
|
+
throw new Error('FAILED: Edges were not created when passing depends_on at creation time!');
|
|
97
|
+
}
|
|
98
|
+
console.log('\n✅ SUCCESS: Edges are correctly created when passing depends_on at creation time!');
|
|
65
99
|
// Test 3: Add tasks
|
|
66
100
|
console.log('\n--- Test 3: Add Tasks ---');
|
|
67
101
|
const task1 = await handleManageTask(config, {
|
package/dist/test-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../src/test-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../src/test-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,4 +26,9 @@ export declare function listFilesRecursive(dirPath: string, basePath?: string):
|
|
|
26
26
|
* Generate a unique ID for canvas nodes/edges
|
|
27
27
|
*/
|
|
28
28
|
export declare function generateId(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Trigger Obsidian to reload a file by opening it via obsidian:// URI
|
|
31
|
+
* This works cross-platform and forces Obsidian to refresh its view
|
|
32
|
+
*/
|
|
33
|
+
export declare function triggerObsidianReload(vaultPath: string, filePath: string): void;
|
|
29
34
|
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBlG;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CA6B/E"}
|
package/dist/utils/file-utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
|
-
import { dirname } from 'path';
|
|
2
|
+
import { dirname, basename } from 'path';
|
|
3
|
+
import { exec } from 'child_process';
|
|
3
4
|
/**
|
|
4
5
|
* Read file content as string
|
|
5
6
|
*/
|
|
@@ -80,4 +81,36 @@ export function generateId() {
|
|
|
80
81
|
return Math.random().toString(36).substring(2, 15) +
|
|
81
82
|
Math.random().toString(36).substring(2, 15);
|
|
82
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Trigger Obsidian to reload a file by opening it via obsidian:// URI
|
|
86
|
+
* This works cross-platform and forces Obsidian to refresh its view
|
|
87
|
+
*/
|
|
88
|
+
export function triggerObsidianReload(vaultPath, filePath) {
|
|
89
|
+
const vaultName = basename(vaultPath);
|
|
90
|
+
// filePath should be relative to vault
|
|
91
|
+
const relativePath = filePath.startsWith(vaultPath)
|
|
92
|
+
? filePath.slice(vaultPath.length + 1)
|
|
93
|
+
: filePath;
|
|
94
|
+
const uri = `obsidian://open?vault=${encodeURIComponent(vaultName)}&file=${encodeURIComponent(relativePath)}`;
|
|
95
|
+
// Detect platform and open URI accordingly
|
|
96
|
+
const platform = process.platform;
|
|
97
|
+
let command;
|
|
98
|
+
if (platform === 'darwin') {
|
|
99
|
+
command = `open "${uri}"`;
|
|
100
|
+
}
|
|
101
|
+
else if (platform === 'win32') {
|
|
102
|
+
command = `start "" "${uri}"`;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Linux
|
|
106
|
+
command = `xdg-open "${uri}"`;
|
|
107
|
+
}
|
|
108
|
+
// Fire and forget - we don't wait for this
|
|
109
|
+
exec(command, (error) => {
|
|
110
|
+
if (error) {
|
|
111
|
+
// Silently ignore errors - Obsidian might not be running
|
|
112
|
+
// or the vault might not be open
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
83
116
|
//# sourceMappingURL=file-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-accomplishments-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server for managing structured project accomplishments in Obsidian",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -53,4 +53,3 @@
|
|
|
53
53
|
"vitest": "^1.0.0"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
|