obsidian-accomplishments-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +349 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +120 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/models/types.d.ts +136 -0
  8. package/dist/models/types.d.ts.map +1 -0
  9. package/dist/models/types.js +27 -0
  10. package/dist/models/types.js.map +1 -0
  11. package/dist/parsers/canvas-parser.d.ts +58 -0
  12. package/dist/parsers/canvas-parser.d.ts.map +1 -0
  13. package/dist/parsers/canvas-parser.js +136 -0
  14. package/dist/parsers/canvas-parser.js.map +1 -0
  15. package/dist/parsers/markdown-parser.d.ts +22 -0
  16. package/dist/parsers/markdown-parser.d.ts.map +1 -0
  17. package/dist/parsers/markdown-parser.js +254 -0
  18. package/dist/parsers/markdown-parser.js.map +1 -0
  19. package/dist/services/accomplishment-service.d.ts +33 -0
  20. package/dist/services/accomplishment-service.d.ts.map +1 -0
  21. package/dist/services/accomplishment-service.js +284 -0
  22. package/dist/services/accomplishment-service.js.map +1 -0
  23. package/dist/services/canvas-service.d.ts +52 -0
  24. package/dist/services/canvas-service.d.ts.map +1 -0
  25. package/dist/services/canvas-service.js +166 -0
  26. package/dist/services/canvas-service.js.map +1 -0
  27. package/dist/services/context-doc-service.d.ts +70 -0
  28. package/dist/services/context-doc-service.d.ts.map +1 -0
  29. package/dist/services/context-doc-service.js +229 -0
  30. package/dist/services/context-doc-service.js.map +1 -0
  31. package/dist/services/dependency-service.d.ts +22 -0
  32. package/dist/services/dependency-service.d.ts.map +1 -0
  33. package/dist/services/dependency-service.js +99 -0
  34. package/dist/services/dependency-service.js.map +1 -0
  35. package/dist/services/task-service.d.ts +32 -0
  36. package/dist/services/task-service.d.ts.map +1 -0
  37. package/dist/services/task-service.js +152 -0
  38. package/dist/services/task-service.js.map +1 -0
  39. package/dist/test-runner.d.ts +6 -0
  40. package/dist/test-runner.d.ts.map +1 -0
  41. package/dist/test-runner.js +130 -0
  42. package/dist/test-runner.js.map +1 -0
  43. package/dist/tools/get-accomplishment.d.ts +26 -0
  44. package/dist/tools/get-accomplishment.d.ts.map +1 -0
  45. package/dist/tools/get-accomplishment.js +53 -0
  46. package/dist/tools/get-accomplishment.js.map +1 -0
  47. package/dist/tools/get-blocked-items.d.ts +15 -0
  48. package/dist/tools/get-blocked-items.d.ts.map +1 -0
  49. package/dist/tools/get-blocked-items.js +72 -0
  50. package/dist/tools/get-blocked-items.js.map +1 -0
  51. package/dist/tools/get-current-work.d.ts +15 -0
  52. package/dist/tools/get-current-work.d.ts.map +1 -0
  53. package/dist/tools/get-current-work.js +67 -0
  54. package/dist/tools/get-current-work.js.map +1 -0
  55. package/dist/tools/get-project-status.d.ts +26 -0
  56. package/dist/tools/get-project-status.d.ts.map +1 -0
  57. package/dist/tools/get-project-status.js +92 -0
  58. package/dist/tools/get-project-status.js.map +1 -0
  59. package/dist/tools/get-ready-to-start.d.ts +15 -0
  60. package/dist/tools/get-ready-to-start.d.ts.map +1 -0
  61. package/dist/tools/get-ready-to-start.js +46 -0
  62. package/dist/tools/get-ready-to-start.js.map +1 -0
  63. package/dist/tools/index.d.ts +155 -0
  64. package/dist/tools/index.d.ts.map +1 -0
  65. package/dist/tools/index.js +48 -0
  66. package/dist/tools/index.js.map +1 -0
  67. package/dist/tools/list-accomplishments.d.ts +34 -0
  68. package/dist/tools/list-accomplishments.d.ts.map +1 -0
  69. package/dist/tools/list-accomplishments.js +34 -0
  70. package/dist/tools/list-accomplishments.js.map +1 -0
  71. package/dist/tools/list-files.d.ts +26 -0
  72. package/dist/tools/list-files.d.ts.map +1 -0
  73. package/dist/tools/list-files.js +46 -0
  74. package/dist/tools/list-files.js.map +1 -0
  75. package/dist/tools/list-workspaces.d.ts +22 -0
  76. package/dist/tools/list-workspaces.d.ts.map +1 -0
  77. package/dist/tools/list-workspaces.js +22 -0
  78. package/dist/tools/list-workspaces.js.map +1 -0
  79. package/dist/tools/manage-accomplishment.d.ts +147 -0
  80. package/dist/tools/manage-accomplishment.d.ts.map +1 -0
  81. package/dist/tools/manage-accomplishment.js +138 -0
  82. package/dist/tools/manage-accomplishment.js.map +1 -0
  83. package/dist/tools/manage-dependency.d.ts +41 -0
  84. package/dist/tools/manage-dependency.d.ts.map +1 -0
  85. package/dist/tools/manage-dependency.js +61 -0
  86. package/dist/tools/manage-dependency.js.map +1 -0
  87. package/dist/tools/manage-task.d.ts +119 -0
  88. package/dist/tools/manage-task.d.ts.map +1 -0
  89. package/dist/tools/manage-task.js +121 -0
  90. package/dist/tools/manage-task.js.map +1 -0
  91. package/dist/tools/read-docs.d.ts +48 -0
  92. package/dist/tools/read-docs.d.ts.map +1 -0
  93. package/dist/tools/read-docs.js +90 -0
  94. package/dist/tools/read-docs.js.map +1 -0
  95. package/dist/tools/set-work-focus.d.ts +48 -0
  96. package/dist/tools/set-work-focus.d.ts.map +1 -0
  97. package/dist/tools/set-work-focus.js +75 -0
  98. package/dist/tools/set-work-focus.js.map +1 -0
  99. package/dist/tools/sync-dependencies.d.ts +33 -0
  100. package/dist/tools/sync-dependencies.d.ts.map +1 -0
  101. package/dist/tools/sync-dependencies.js +144 -0
  102. package/dist/tools/sync-dependencies.js.map +1 -0
  103. package/dist/tools/update-doc.d.ts +62 -0
  104. package/dist/tools/update-doc.d.ts.map +1 -0
  105. package/dist/tools/update-doc.js +196 -0
  106. package/dist/tools/update-doc.js.map +1 -0
  107. package/dist/utils/config.d.ts +27 -0
  108. package/dist/utils/config.d.ts.map +1 -0
  109. package/dist/utils/config.js +106 -0
  110. package/dist/utils/config.js.map +1 -0
  111. package/dist/utils/file-utils.d.ts +29 -0
  112. package/dist/utils/file-utils.d.ts.map +1 -0
  113. package/dist/utils/file-utils.js +83 -0
  114. package/dist/utils/file-utils.js.map +1 -0
  115. package/dist/utils/positioning.d.ts +16 -0
  116. package/dist/utils/positioning.d.ts.map +1 -0
  117. package/dist/utils/positioning.js +126 -0
  118. package/dist/utils/positioning.js.map +1 -0
  119. package/package.json +56 -0
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Simple test runner for the MCP server
3
+ * Run with: npx ts-node src/test-runner.ts
4
+ */
5
+ import { getConfig } from './utils/config.js';
6
+ import { handleManageAccomplishment, handleManageDependency, handleManageTask, handleSetWorkFocus, handleGetAccomplishment, handleListAccomplishments, handleGetCurrentWork, handleGetBlockedItems, handleGetReadyToStart, handleGetProjectStatus, } from './tools/index.js';
7
+ // Set environment variables for testing
8
+ process.env.VAULT_PATH = process.cwd() + '/test-vault';
9
+ process.env.ACCOMPLISHMENTS_FOLDER = 'accomplishments';
10
+ process.env.DEFAULT_CANVAS = 'projects/main.canvas';
11
+ const config = getConfig();
12
+ async function runTests() {
13
+ console.log('=== Obsidian Accomplishments MCP Server Tests ===\n');
14
+ console.log('Config:', config, '\n');
15
+ try {
16
+ // Test 1: Create accomplishments
17
+ console.log('--- Test 1: Create Accomplishments ---');
18
+ const acc1 = await handleManageAccomplishment(config, {
19
+ operation: 'create',
20
+ data: {
21
+ title: 'Setup Development Environment',
22
+ effort: 'Engineering',
23
+ priority: 'High',
24
+ outcome: 'Development environment is fully configured and ready for coding',
25
+ acceptance_criteria: ['Node.js installed', 'IDE configured', 'Git setup'],
26
+ },
27
+ });
28
+ console.log('Created ACC1:', JSON.stringify(acc1, null, 2));
29
+ const acc2 = await handleManageAccomplishment(config, {
30
+ operation: 'create',
31
+ data: {
32
+ title: 'Implement Core Features',
33
+ effort: 'Engineering',
34
+ priority: 'Critical',
35
+ outcome: 'Core features are implemented and working',
36
+ },
37
+ });
38
+ console.log('Created ACC2:', JSON.stringify(acc2, null, 2));
39
+ const acc3 = await handleManageAccomplishment(config, {
40
+ operation: 'create',
41
+ data: {
42
+ title: 'Write Documentation',
43
+ effort: 'Business',
44
+ priority: 'Medium',
45
+ outcome: 'Documentation is complete and published',
46
+ },
47
+ });
48
+ console.log('Created ACC3:', JSON.stringify(acc3, null, 2));
49
+ // Test 2: Add dependencies
50
+ console.log('\n--- Test 2: Add Dependencies ---');
51
+ // ACC-002 depends on ACC-001
52
+ const dep1 = await handleManageDependency(config, {
53
+ operation: 'add',
54
+ blocker_id: 'ACC-001',
55
+ blocked_id: 'ACC-002',
56
+ });
57
+ console.log('Added dependency:', JSON.stringify(dep1, null, 2));
58
+ // ACC-003 depends on ACC-002
59
+ const dep2 = await handleManageDependency(config, {
60
+ operation: 'add',
61
+ blocker_id: 'ACC-002',
62
+ blocked_id: 'ACC-003',
63
+ });
64
+ console.log('Added dependency:', JSON.stringify(dep2, null, 2));
65
+ // Test 3: Add tasks
66
+ console.log('\n--- Test 3: Add Tasks ---');
67
+ const task1 = await handleManageTask(config, {
68
+ operation: 'add',
69
+ accomplishment_id: 'ACC-001',
70
+ data: {
71
+ name: 'Install Node.js',
72
+ goal: 'Have Node.js v20+ installed',
73
+ description: 'Download and install Node.js LTS',
74
+ estimate: 0.5,
75
+ },
76
+ });
77
+ console.log('Added task:', JSON.stringify(task1, null, 2));
78
+ const task2 = await handleManageTask(config, {
79
+ operation: 'add',
80
+ accomplishment_id: 'ACC-001',
81
+ data: {
82
+ name: 'Configure IDE',
83
+ goal: 'IDE is set up with extensions',
84
+ description: 'Install VS Code and required extensions',
85
+ estimate: 1,
86
+ },
87
+ });
88
+ console.log('Added task:', JSON.stringify(task2, null, 2));
89
+ // Test 4: Set work focus
90
+ console.log('\n--- Test 4: Set Work Focus ---');
91
+ const focus = await handleSetWorkFocus(config, {
92
+ accomplishment_id: 'ACC-001',
93
+ in_progress: true,
94
+ task_id: 'ACC-001:Task 1:Install Node.js',
95
+ task_status: 'InProgress',
96
+ });
97
+ console.log('Set focus:', JSON.stringify(focus, null, 2));
98
+ // Test 5: Get accomplishment details
99
+ console.log('\n--- Test 5: Get Accomplishment Details ---');
100
+ const details = await handleGetAccomplishment(config, { id: 'ACC-001' });
101
+ console.log('ACC-001 details:', JSON.stringify(details, null, 2));
102
+ // Test 6: List accomplishments
103
+ console.log('\n--- Test 6: List Accomplishments ---');
104
+ const list = await handleListAccomplishments(config, {});
105
+ console.log('All accomplishments:', JSON.stringify(list, null, 2));
106
+ // Test 7: Get current work
107
+ console.log('\n--- Test 7: Get Current Work ---');
108
+ const currentWork = await handleGetCurrentWork(config, {});
109
+ console.log('Current work:', JSON.stringify(currentWork, null, 2));
110
+ // Test 8: Get blocked items
111
+ console.log('\n--- Test 8: Get Blocked Items ---');
112
+ const blocked = await handleGetBlockedItems(config, {});
113
+ console.log('Blocked items:', JSON.stringify(blocked, null, 2));
114
+ // Test 9: Get ready to start
115
+ console.log('\n--- Test 9: Get Ready to Start ---');
116
+ const ready = await handleGetReadyToStart(config, {});
117
+ console.log('Ready to start:', JSON.stringify(ready, null, 2));
118
+ // Test 10: Get project status
119
+ console.log('\n--- Test 10: Get Project Status ---');
120
+ const status = await handleGetProjectStatus(config, {});
121
+ console.log('Project status:', JSON.stringify(status, null, 2));
122
+ console.log('\n=== All Tests Completed Successfully ===');
123
+ }
124
+ catch (error) {
125
+ console.error('Test failed:', error);
126
+ process.exit(1);
127
+ }
128
+ }
129
+ runTests();
130
+ //# sourceMappingURL=test-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../src/test-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { Config } from '../models/types.js';
3
+ export declare const getAccomplishmentSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ id: string;
7
+ }, {
8
+ id: string;
9
+ }>;
10
+ export type GetAccomplishmentInput = z.infer<typeof getAccomplishmentSchema>;
11
+ export declare const getAccomplishmentDefinition: {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: string;
16
+ properties: {
17
+ id: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ };
22
+ required: string[];
23
+ };
24
+ };
25
+ export declare function handleGetAccomplishment(config: Config, input: GetAccomplishmentInput): Promise<unknown>;
26
+ //# sourceMappingURL=get-accomplishment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-accomplishment.d.ts","sourceRoot":"","sources":["../../src/tools/get-accomplishment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5C,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE7E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;CAavC,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,OAAO,CAAC,CA+BlB"}
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ import { getAccomplishment as getAccomplishmentService } from '../services/accomplishment-service.js';
3
+ import { generateTaskId } from '../parsers/markdown-parser.js';
4
+ // Schema for the tool
5
+ export const getAccomplishmentSchema = z.object({
6
+ id: z.string(),
7
+ });
8
+ export const getAccomplishmentDefinition = {
9
+ name: 'get_accomplishment',
10
+ description: 'Get full details of a single accomplishment including frontmatter, outcome, acceptance criteria, tasks, and notes.',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ id: {
15
+ type: 'string',
16
+ description: 'Accomplishment ID (e.g., ACC-001)',
17
+ },
18
+ },
19
+ required: ['id'],
20
+ },
21
+ };
22
+ export async function handleGetAccomplishment(config, input) {
23
+ const accomplishment = await getAccomplishmentService(config, input.id);
24
+ return {
25
+ id: accomplishment.frontmatter.id,
26
+ title: accomplishment.frontmatter.title,
27
+ type: accomplishment.frontmatter.type,
28
+ effort: accomplishment.frontmatter.effort,
29
+ status: accomplishment.frontmatter.status,
30
+ priority: accomplishment.frontmatter.priority,
31
+ inProgress: accomplishment.frontmatter.inProgress,
32
+ depends_on: accomplishment.frontmatter.depends_on,
33
+ is_blocked: accomplishment.is_blocked,
34
+ created: accomplishment.frontmatter.created,
35
+ updated: accomplishment.frontmatter.updated,
36
+ canvas_source: accomplishment.frontmatter.canvas_source,
37
+ outcome: accomplishment.outcome,
38
+ acceptance_criteria: accomplishment.acceptance_criteria,
39
+ tasks: accomplishment.tasks.map(task => ({
40
+ task_id: generateTaskId(accomplishment.frontmatter.id, task),
41
+ number: task.number,
42
+ name: task.name,
43
+ goal: task.goal,
44
+ description: task.description,
45
+ technical_notes: task.technical_notes,
46
+ estimate: task.estimate,
47
+ status: task.status,
48
+ notes: task.notes,
49
+ })),
50
+ notes: accomplishment.notes,
51
+ };
52
+ }
53
+ //# sourceMappingURL=get-accomplishment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-accomplishment.js","sourceRoot":"","sources":["../../src/tools/get-accomplishment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,sBAAsB;AACtB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oHAAoH;IACjI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;aACjD;SACF;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;KACjB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,KAA6B;IAE7B,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAExE,OAAO;QACL,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE;QACjC,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK;QACvC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI;QACrC,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,MAAM;QACzC,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,MAAM;QACzC,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC,QAAQ;QAC7C,UAAU,EAAE,cAAc,CAAC,WAAW,CAAC,UAAU;QACjD,UAAU,EAAE,cAAc,CAAC,WAAW,CAAC,UAAU;QACjD,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO;QAC3C,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO;QAC3C,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,aAAa;QACvD,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,mBAAmB,EAAE,cAAc,CAAC,mBAAmB;QACvD,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;YAC5D,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,KAAK,EAAE,cAAc,CAAC,KAAK;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import { Config } from '../models/types.js';
3
+ export declare const getBlockedItemsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
4
+ export type GetBlockedItemsInput = z.infer<typeof getBlockedItemsSchema>;
5
+ export declare const getBlockedItemsDefinition: {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: {
9
+ type: string;
10
+ properties: {};
11
+ required: never[];
12
+ };
13
+ };
14
+ export declare function handleGetBlockedItems(config: Config, _input: GetBlockedItemsInput): Promise<unknown>;
15
+ //# sourceMappingURL=get-blocked-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-blocked-items.d.ts","sourceRoot":"","sources":["../../src/tools/get-blocked-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,eAAO,MAAM,qBAAqB,gDAAe,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEzE,eAAO,MAAM,yBAAyB;;;;;;;;CAQrC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA0ElB"}
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ import { listAllAccomplishments } from '../services/accomplishment-service.js';
3
+ // Schema for the tool (no parameters)
4
+ export const getBlockedItemsSchema = z.object({});
5
+ export const getBlockedItemsDefinition = {
6
+ name: 'get_blocked_items',
7
+ description: 'Get all accomplishments that are blocked by incomplete dependencies. Shows what cannot be started yet and what is blocking them.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {},
11
+ required: [],
12
+ },
13
+ };
14
+ export async function handleGetBlockedItems(config, _input) {
15
+ const allAccomplishments = await listAllAccomplishments(config);
16
+ // Build a map of accomplishment IDs to their status
17
+ const statusMap = new Map();
18
+ for (const acc of allAccomplishments) {
19
+ statusMap.set(acc.frontmatter.id, {
20
+ title: acc.frontmatter.title,
21
+ status: acc.frontmatter.status,
22
+ });
23
+ }
24
+ // Find blocked accomplishments
25
+ const blockedItems = [];
26
+ for (const acc of allAccomplishments) {
27
+ if (!acc.is_blocked)
28
+ continue;
29
+ // Find which dependencies are incomplete
30
+ const blockingItems = [];
31
+ for (const depId of acc.frontmatter.depends_on) {
32
+ const depInfo = statusMap.get(depId);
33
+ if (depInfo && depInfo.status !== 'Completed') {
34
+ blockingItems.push({
35
+ id: depId,
36
+ title: depInfo.title,
37
+ status: depInfo.status,
38
+ });
39
+ }
40
+ else if (!depInfo) {
41
+ // Dependency not found - still blocking
42
+ blockingItems.push({
43
+ id: depId,
44
+ title: '(not found)',
45
+ status: 'unknown',
46
+ });
47
+ }
48
+ }
49
+ if (blockingItems.length > 0) {
50
+ blockedItems.push({
51
+ id: acc.frontmatter.id,
52
+ title: acc.frontmatter.title,
53
+ status: acc.frontmatter.status,
54
+ priority: acc.frontmatter.priority,
55
+ effort: acc.frontmatter.effort,
56
+ blocking_items: blockingItems,
57
+ });
58
+ }
59
+ }
60
+ // Sort by priority (Critical > High > Medium > Low)
61
+ const priorityOrder = { Critical: 0, High: 1, Medium: 2, Low: 3 };
62
+ blockedItems.sort((a, b) => {
63
+ const aOrder = priorityOrder[a.priority] ?? 4;
64
+ const bOrder = priorityOrder[b.priority] ?? 4;
65
+ return aOrder - bOrder;
66
+ });
67
+ return {
68
+ count: blockedItems.length,
69
+ blocked_items: blockedItems,
70
+ };
71
+ }
72
+ //# sourceMappingURL=get-blocked-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-blocked-items.js","sourceRoot":"","sources":["../../src/tools/get-blocked-items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import { Config } from '../models/types.js';
3
+ export declare const getCurrentWorkSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
4
+ export type GetCurrentWorkInput = z.infer<typeof getCurrentWorkSchema>;
5
+ export declare const getCurrentWorkDefinition: {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: {
9
+ type: string;
10
+ properties: {};
11
+ required: never[];
12
+ };
13
+ };
14
+ export declare function handleGetCurrentWork(config: Config, _input: GetCurrentWorkInput): Promise<unknown>;
15
+ //# sourceMappingURL=get-current-work.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-work.d.ts","sourceRoot":"","sources":["../../src/tools/get-current-work.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5C,eAAO,MAAM,oBAAoB,gDAAe,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,wBAAwB;;;;;;;;CAQpC,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAmElB"}
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+ import { listAllAccomplishments } from '../services/accomplishment-service.js';
3
+ import { generateTaskId } from '../parsers/markdown-parser.js';
4
+ // Schema for the tool (no parameters)
5
+ export const getCurrentWorkSchema = z.object({});
6
+ export const getCurrentWorkDefinition = {
7
+ name: 'get_current_work',
8
+ description: 'Get all accomplishments with inProgress=true and all tasks with status=InProgress. Shows what is currently being actively worked on.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {},
12
+ required: [],
13
+ },
14
+ };
15
+ export async function handleGetCurrentWork(config, _input) {
16
+ const allAccomplishments = await listAllAccomplishments(config);
17
+ // Filter accomplishments that are in progress
18
+ const inProgressAccomplishments = allAccomplishments.filter(a => a.frontmatter.inProgress);
19
+ // Build response with accomplishments and their in-progress tasks
20
+ const accomplishments = inProgressAccomplishments.map(acc => {
21
+ const inProgressTasks = acc.tasks
22
+ .filter(t => t.status === 'InProgress')
23
+ .map(t => ({
24
+ task_id: generateTaskId(acc.frontmatter.id, t),
25
+ number: t.number,
26
+ name: t.name,
27
+ goal: t.goal,
28
+ estimate: t.estimate,
29
+ }));
30
+ return {
31
+ id: acc.frontmatter.id,
32
+ title: acc.frontmatter.title,
33
+ status: acc.frontmatter.status,
34
+ priority: acc.frontmatter.priority,
35
+ effort: acc.frontmatter.effort,
36
+ tasks_in_progress: inProgressTasks,
37
+ total_tasks: acc.tasks.length,
38
+ completed_tasks: acc.tasks.filter(t => t.status === 'Complete').length,
39
+ };
40
+ });
41
+ // Also find any InProgress tasks in accomplishments that aren't marked inProgress
42
+ // (edge case, but good to surface)
43
+ const orphanedInProgressTasks = [];
44
+ for (const acc of allAccomplishments) {
45
+ if (!acc.frontmatter.inProgress) {
46
+ for (const task of acc.tasks) {
47
+ if (task.status === 'InProgress') {
48
+ orphanedInProgressTasks.push({
49
+ accomplishment_id: acc.frontmatter.id,
50
+ accomplishment_title: acc.frontmatter.title,
51
+ task_id: generateTaskId(acc.frontmatter.id, task),
52
+ task_name: task.name,
53
+ });
54
+ }
55
+ }
56
+ }
57
+ }
58
+ return {
59
+ accomplishments,
60
+ orphaned_in_progress_tasks: orphanedInProgressTasks,
61
+ summary: {
62
+ accomplishments_in_progress: accomplishments.length,
63
+ total_tasks_in_progress: accomplishments.reduce((sum, a) => sum + a.tasks_in_progress.length, 0) + orphanedInProgressTasks.length,
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=get-current-work.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-work.js","sourceRoot":"","sources":["../../src/tools/get-current-work.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { Config } from '../models/types.js';
3
+ export declare const getProjectStatusSchema: z.ZodObject<{
4
+ canvas_source: z.ZodOptional<z.ZodString>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ canvas_source?: string | undefined;
7
+ }, {
8
+ canvas_source?: string | undefined;
9
+ }>;
10
+ export type GetProjectStatusInput = z.infer<typeof getProjectStatusSchema>;
11
+ export declare const getProjectStatusDefinition: {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: string;
16
+ properties: {
17
+ canvas_source: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ };
22
+ required: never[];
23
+ };
24
+ };
25
+ export declare function handleGetProjectStatus(config: Config, input: GetProjectStatusInput): Promise<unknown>;
26
+ //# sourceMappingURL=get-project-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-status.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE3E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAatC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAqFlB"}
@@ -0,0 +1,92 @@
1
+ import { z } from 'zod';
2
+ import { listAllAccomplishments } from '../services/accomplishment-service.js';
3
+ // Schema for the tool
4
+ export const getProjectStatusSchema = z.object({
5
+ canvas_source: z.string().optional(),
6
+ });
7
+ export const getProjectStatusDefinition = {
8
+ name: 'get_project_status',
9
+ description: 'Get project overview and statistics: counts by status, effort type, blocked items, ready to start, and task progress.',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ canvas_source: {
14
+ type: 'string',
15
+ description: 'Canvas file path to filter by (optional, defaults to all)',
16
+ },
17
+ },
18
+ required: [],
19
+ },
20
+ };
21
+ export async function handleGetProjectStatus(config, input) {
22
+ let accomplishments = await listAllAccomplishments(config);
23
+ // Filter by canvas source if provided
24
+ if (input.canvas_source) {
25
+ accomplishments = accomplishments.filter(a => a.frontmatter.canvas_source === input.canvas_source);
26
+ }
27
+ // Count by status
28
+ const byStatus = {
29
+ 'Not Started': 0,
30
+ 'In Progress': 0,
31
+ 'Completed': 0,
32
+ 'Blocked': 0,
33
+ };
34
+ // Count by effort
35
+ const byEffort = {
36
+ Business: 0,
37
+ Engineering: 0,
38
+ Infra: 0,
39
+ Research: 0,
40
+ };
41
+ // Count by priority
42
+ const byPriority = {
43
+ Critical: 0,
44
+ High: 0,
45
+ Medium: 0,
46
+ Low: 0,
47
+ };
48
+ let blockedCount = 0;
49
+ let readyToStartCount = 0;
50
+ let inProgressCount = 0;
51
+ let totalTasks = 0;
52
+ let completedTasks = 0;
53
+ for (const acc of accomplishments) {
54
+ // Status counts
55
+ byStatus[acc.frontmatter.status] = (byStatus[acc.frontmatter.status] || 0) + 1;
56
+ // Effort counts
57
+ byEffort[acc.frontmatter.effort] = (byEffort[acc.frontmatter.effort] || 0) + 1;
58
+ // Priority counts
59
+ byPriority[acc.frontmatter.priority] = (byPriority[acc.frontmatter.priority] || 0) + 1;
60
+ // Blocked count
61
+ if (acc.is_blocked) {
62
+ blockedCount++;
63
+ }
64
+ // Ready to start count
65
+ if (acc.frontmatter.status === 'Not Started' && !acc.is_blocked) {
66
+ readyToStartCount++;
67
+ }
68
+ // In progress count
69
+ if (acc.frontmatter.inProgress) {
70
+ inProgressCount++;
71
+ }
72
+ // Task counts
73
+ totalTasks += acc.tasks.length;
74
+ completedTasks += acc.tasks.filter(t => t.status === 'Complete').length;
75
+ }
76
+ return {
77
+ canvas_source: input.canvas_source || config.defaultCanvas,
78
+ total_accomplishments: accomplishments.length,
79
+ by_status: byStatus,
80
+ by_effort: byEffort,
81
+ by_priority: byPriority,
82
+ blocked_count: blockedCount,
83
+ ready_to_start_count: readyToStartCount,
84
+ in_progress_count: inProgressCount,
85
+ total_tasks: totalTasks,
86
+ completed_tasks: completedTasks,
87
+ task_completion_percentage: totalTasks > 0
88
+ ? Math.round((completedTasks / totalTasks) * 100)
89
+ : 0,
90
+ };
91
+ }
92
+ //# sourceMappingURL=get-project-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-status.js","sourceRoot":"","sources":["../../src/tools/get-project-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import { Config } from '../models/types.js';
3
+ export declare const getReadyToStartSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
4
+ export type GetReadyToStartInput = z.infer<typeof getReadyToStartSchema>;
5
+ export declare const getReadyToStartDefinition: {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: {
9
+ type: string;
10
+ properties: {};
11
+ required: never[];
12
+ };
13
+ };
14
+ export declare function handleGetReadyToStart(config: Config, _input: GetReadyToStartInput): Promise<unknown>;
15
+ //# sourceMappingURL=get-ready-to-start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ready-to-start.d.ts","sourceRoot":"","sources":["../../src/tools/get-ready-to-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,eAAO,MAAM,qBAAqB,gDAAe,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEzE,eAAO,MAAM,yBAAyB;;;;;;;;CAQrC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAmClB"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { listAllAccomplishments } from '../services/accomplishment-service.js';
3
+ // Schema for the tool (no parameters)
4
+ export const getReadyToStartSchema = z.object({});
5
+ export const getReadyToStartDefinition = {
6
+ name: 'get_ready_to_start',
7
+ description: 'Get accomplishments that are ready to begin work: status is "Not Started" and all dependencies are completed (or no dependencies).',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {},
11
+ required: [],
12
+ },
13
+ };
14
+ export async function handleGetReadyToStart(config, _input) {
15
+ const allAccomplishments = await listAllAccomplishments(config);
16
+ // Filter for ready to start:
17
+ // - Status is "Not Started"
18
+ // - Not blocked (all dependencies completed or no dependencies)
19
+ const readyItems = allAccomplishments.filter(acc => {
20
+ if (acc.frontmatter.status !== 'Not Started') {
21
+ return false;
22
+ }
23
+ // is_blocked is computed in listAllAccomplishments
24
+ return !acc.is_blocked;
25
+ });
26
+ // Sort by priority (Critical > High > Medium > Low)
27
+ const priorityOrder = { Critical: 0, High: 1, Medium: 2, Low: 3 };
28
+ readyItems.sort((a, b) => {
29
+ const aOrder = priorityOrder[a.frontmatter.priority] ?? 4;
30
+ const bOrder = priorityOrder[b.frontmatter.priority] ?? 4;
31
+ return aOrder - bOrder;
32
+ });
33
+ const items = readyItems.map(acc => ({
34
+ id: acc.frontmatter.id,
35
+ title: acc.frontmatter.title,
36
+ priority: acc.frontmatter.priority,
37
+ effort: acc.frontmatter.effort,
38
+ task_count: acc.tasks.length,
39
+ outcome: acc.outcome,
40
+ }));
41
+ return {
42
+ count: items.length,
43
+ ready_items: items,
44
+ };
45
+ }
46
+ //# sourceMappingURL=get-ready-to-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ready-to-start.js","sourceRoot":"","sources":["../../src/tools/get-ready-to-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,sCAAsC;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIlD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oIAAoI;IACjJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,MAA4B;IAE5B,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAEhE,6BAA6B;IAC7B,4BAA4B;IAC5B,gEAAgE;IAChE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACjD,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,mDAAmD;QACnD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAClE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,QAAsC,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,QAAsC,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;QACtB,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK;QAC5B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;QAClC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM;QAC9B,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}