@ai-dossier/mcp-server 1.0.2 → 1.0.4

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 (85) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +110 -297
  3. package/dist/index.js +196 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/orchestration/outputMapper.d.ts +94 -0
  6. package/dist/orchestration/outputMapper.d.ts.map +1 -0
  7. package/dist/orchestration/outputMapper.js +129 -0
  8. package/dist/orchestration/outputMapper.js.map +1 -0
  9. package/dist/orchestration/session.d.ts +43 -0
  10. package/dist/orchestration/session.d.ts.map +1 -0
  11. package/dist/orchestration/session.js +67 -0
  12. package/dist/orchestration/session.js.map +1 -0
  13. package/dist/resources/orchestration.d.ts +7 -0
  14. package/dist/resources/orchestration.d.ts.map +1 -0
  15. package/dist/resources/orchestration.js +11 -0
  16. package/dist/resources/orchestration.js.map +1 -0
  17. package/dist/tools/cancelJourney.d.ts +20 -0
  18. package/dist/tools/cancelJourney.d.ts.map +1 -0
  19. package/dist/tools/cancelJourney.js +50 -0
  20. package/dist/tools/cancelJourney.js.map +1 -0
  21. package/dist/tools/getJourneyStatus.d.ts +29 -0
  22. package/dist/tools/getJourneyStatus.d.ts.map +1 -0
  23. package/dist/tools/getJourneyStatus.js +39 -0
  24. package/dist/tools/getJourneyStatus.js.map +1 -0
  25. package/dist/tools/readDossier.d.ts +1 -0
  26. package/dist/tools/readDossier.d.ts.map +1 -1
  27. package/dist/tools/readDossier.js +22 -1
  28. package/dist/tools/readDossier.js.map +1 -1
  29. package/dist/tools/startJourney.d.ts +26 -0
  30. package/dist/tools/startJourney.d.ts.map +1 -0
  31. package/dist/tools/startJourney.js +90 -0
  32. package/dist/tools/startJourney.js.map +1 -0
  33. package/dist/tools/stepComplete.d.ts +28 -0
  34. package/dist/tools/stepComplete.d.ts.map +1 -0
  35. package/dist/tools/stepComplete.js +101 -0
  36. package/dist/tools/stepComplete.js.map +1 -0
  37. package/package.json +7 -4
  38. package/dist/orchestration/__tests__/graph.test.d.ts +0 -2
  39. package/dist/orchestration/__tests__/graph.test.d.ts.map +0 -1
  40. package/dist/orchestration/__tests__/graph.test.js +0 -348
  41. package/dist/orchestration/__tests__/graph.test.js.map +0 -1
  42. package/dist/orchestration/__tests__/resolver.test.d.ts +0 -2
  43. package/dist/orchestration/__tests__/resolver.test.d.ts.map +0 -1
  44. package/dist/orchestration/__tests__/resolver.test.js +0 -181
  45. package/dist/orchestration/__tests__/resolver.test.js.map +0 -1
  46. package/dist/parsers/signatureVerifier.d.ts +0 -10
  47. package/dist/parsers/signatureVerifier.d.ts.map +0 -1
  48. package/dist/parsers/signatureVerifier.js +0 -85
  49. package/dist/parsers/signatureVerifier.js.map +0 -1
  50. package/dist/tools/__tests__/listDossiers.test.d.ts +0 -2
  51. package/dist/tools/__tests__/listDossiers.test.d.ts.map +0 -1
  52. package/dist/tools/__tests__/listDossiers.test.js +0 -67
  53. package/dist/tools/__tests__/listDossiers.test.js.map +0 -1
  54. package/dist/tools/__tests__/readDossier.test.d.ts +0 -2
  55. package/dist/tools/__tests__/readDossier.test.d.ts.map +0 -1
  56. package/dist/tools/__tests__/readDossier.test.js +0 -88
  57. package/dist/tools/__tests__/readDossier.test.js.map +0 -1
  58. package/dist/tools/__tests__/resolveGraph.test.d.ts +0 -2
  59. package/dist/tools/__tests__/resolveGraph.test.d.ts.map +0 -1
  60. package/dist/tools/__tests__/resolveGraph.test.js +0 -170
  61. package/dist/tools/__tests__/resolveGraph.test.js.map +0 -1
  62. package/dist/tools/__tests__/searchDossiers.test.d.ts +0 -2
  63. package/dist/tools/__tests__/searchDossiers.test.d.ts.map +0 -1
  64. package/dist/tools/__tests__/searchDossiers.test.js +0 -52
  65. package/dist/tools/__tests__/searchDossiers.test.js.map +0 -1
  66. package/dist/tools/__tests__/verifyDossier.test.d.ts +0 -2
  67. package/dist/tools/__tests__/verifyDossier.test.d.ts.map +0 -1
  68. package/dist/tools/__tests__/verifyDossier.test.js +0 -59
  69. package/dist/tools/__tests__/verifyDossier.test.js.map +0 -1
  70. package/dist/tools/__tests__/verifyGraph.test.d.ts +0 -2
  71. package/dist/tools/__tests__/verifyGraph.test.d.ts.map +0 -1
  72. package/dist/tools/__tests__/verifyGraph.test.js +0 -278
  73. package/dist/tools/__tests__/verifyGraph.test.js.map +0 -1
  74. package/dist/utils/__tests__/cli-wrapper.test.d.ts +0 -2
  75. package/dist/utils/__tests__/cli-wrapper.test.d.ts.map +0 -1
  76. package/dist/utils/__tests__/cli-wrapper.test.js +0 -29
  77. package/dist/utils/__tests__/cli-wrapper.test.js.map +0 -1
  78. package/dist/utils/__tests__/paths.test.d.ts +0 -2
  79. package/dist/utils/__tests__/paths.test.d.ts.map +0 -1
  80. package/dist/utils/__tests__/paths.test.js +0 -26
  81. package/dist/utils/__tests__/paths.test.js.map +0 -1
  82. package/dist/utils/errors.d.ts +0 -35
  83. package/dist/utils/errors.d.ts.map +0 -1
  84. package/dist/utils/errors.js +0 -68
  85. package/dist/utils/errors.js.map +0 -1
@@ -1,278 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const verifyGraph_1 = require("../verifyGraph");
5
- vitest_1.vi.mock('../../utils/cli-wrapper', () => ({
6
- execCli: vitest_1.vi.fn(),
7
- CliNotFoundError: class CliNotFoundError extends Error {
8
- constructor() {
9
- super('ai-dossier CLI not found');
10
- this.name = 'CliNotFoundError';
11
- }
12
- },
13
- }));
14
- vitest_1.vi.mock('../../utils/graphStore', () => ({
15
- getGraph: vitest_1.vi.fn(),
16
- generateGraphId: vitest_1.vi.fn(() => 'test-graph-id'),
17
- storeGraph: vitest_1.vi.fn(),
18
- }));
19
- vitest_1.vi.mock('../../orchestration/resolver', () => {
20
- const DossierResolver = vitest_1.vi.fn();
21
- DossierResolver.prototype.resolve = vitest_1.vi.fn();
22
- DossierResolver.prototype.resolveFromPath = vitest_1.vi.fn();
23
- DossierResolver.prototype.resolveGraph = vitest_1.vi.fn();
24
- return { DossierResolver };
25
- });
26
- vitest_1.vi.mock('../../orchestration/graph', () => ({
27
- buildGraph: vitest_1.vi.fn(),
28
- buildExecutionPlan: vitest_1.vi.fn(),
29
- }));
30
- vitest_1.vi.mock('../../utils/logger', () => ({
31
- logger: { info: vitest_1.vi.fn(), warn: vitest_1.vi.fn(), error: vitest_1.vi.fn(), debug: vitest_1.vi.fn() },
32
- }));
33
- const graph_1 = require("../../orchestration/graph");
34
- const resolver_1 = require("../../orchestration/resolver");
35
- const cli_wrapper_1 = require("../../utils/cli-wrapper");
36
- const graphStore_1 = require("../../utils/graphStore");
37
- function makePlan(entries) {
38
- return {
39
- entryDossier: entries[0]?.name ?? 'unknown',
40
- totalDossiers: entries.length,
41
- phases: [
42
- {
43
- phase: 1,
44
- dossiers: entries.map((e) => ({
45
- name: e.name,
46
- source: e.source,
47
- path: e.path,
48
- condition: 'required',
49
- riskLevel: e.riskLevel,
50
- })),
51
- },
52
- ],
53
- conflicts: [],
54
- warnings: [],
55
- };
56
- }
57
- function passedResult() {
58
- return {
59
- passed: true,
60
- stages: [
61
- { stage: 1, name: 'Integrity Check', passed: true },
62
- { stage: 2, name: 'Authenticity Check', passed: true },
63
- ],
64
- };
65
- }
66
- function failedIntegrity() {
67
- return {
68
- passed: false,
69
- stages: [
70
- { stage: 1, name: 'Integrity Check', passed: false },
71
- { stage: 2, name: 'Authenticity Check', skipped: true },
72
- ],
73
- };
74
- }
75
- function failedAuthenticity() {
76
- return {
77
- passed: false,
78
- stages: [
79
- { stage: 1, name: 'Integrity Check', passed: true },
80
- { stage: 2, name: 'Authenticity Check', passed: false },
81
- ],
82
- };
83
- }
84
- (0, vitest_1.describe)('verifyGraph tool', () => {
85
- (0, vitest_1.beforeEach)(() => {
86
- vitest_1.vi.clearAllMocks();
87
- });
88
- (0, vitest_1.afterEach)(() => {
89
- vitest_1.vi.restoreAllMocks();
90
- });
91
- (0, vitest_1.it)('should return error when neither graph_id nor dossier is provided', async () => {
92
- const result = await (0, verifyGraph_1.verifyGraph)({});
93
- (0, vitest_1.expect)(result).toHaveProperty('error');
94
- (0, vitest_1.expect)(result.error.type).toBe('validation');
95
- });
96
- (0, vitest_1.it)('should return error when graph_id is not found', async () => {
97
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(undefined);
98
- const result = await (0, verifyGraph_1.verifyGraph)({ graph_id: 'nonexistent' });
99
- (0, vitest_1.expect)(result).toHaveProperty('error');
100
- (0, vitest_1.expect)(result.error.type).toBe('not_found');
101
- });
102
- (0, vitest_1.it)('should verify all dossiers from a stored graph', async () => {
103
- const plan = makePlan([
104
- { name: 'setup-infra', source: 'local', path: '/tmp/setup.ds.md', riskLevel: 'low' },
105
- { name: 'deploy-app', source: 'local', path: '/tmp/deploy.ds.md', riskLevel: 'low' },
106
- ]);
107
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
108
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
109
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
110
- (0, vitest_1.expect)(result.overall_recommendation).toBe('ALLOW');
111
- (0, vitest_1.expect)(result.dossiers).toHaveLength(2);
112
- (0, vitest_1.expect)(result.blockers).toHaveLength(0);
113
- (0, vitest_1.expect)(cli_wrapper_1.execCli).toHaveBeenCalledTimes(2);
114
- });
115
- (0, vitest_1.it)('should run verifications in parallel', async () => {
116
- const plan = makePlan([
117
- { name: 'a', source: 'local', path: '/a.ds.md' },
118
- { name: 'b', source: 'local', path: '/b.ds.md' },
119
- { name: 'c', source: 'local', path: '/c.ds.md' },
120
- ]);
121
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
122
- const callOrder = [];
123
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockImplementation((_cmd, args) => {
124
- callOrder.push(args[0]);
125
- return Promise.resolve(passedResult());
126
- });
127
- await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' });
128
- // All three were called (Promise.all means parallel)
129
- (0, vitest_1.expect)(callOrder).toHaveLength(3);
130
- (0, vitest_1.expect)(callOrder).toContain('/a.ds.md');
131
- (0, vitest_1.expect)(callOrder).toContain('/b.ds.md');
132
- (0, vitest_1.expect)(callOrder).toContain('/c.ds.md');
133
- });
134
- (0, vitest_1.it)('should BLOCK when any dossier fails integrity', async () => {
135
- const plan = makePlan([
136
- { name: 'good', source: 'local', path: '/good.ds.md', riskLevel: 'low' },
137
- { name: 'bad', source: 'local', path: '/bad.ds.md', riskLevel: 'low' },
138
- ]);
139
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
140
- vitest_1.vi.mocked(cli_wrapper_1.execCli)
141
- .mockResolvedValueOnce(passedResult())
142
- .mockResolvedValueOnce(failedIntegrity());
143
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
144
- (0, vitest_1.expect)(result.overall_recommendation).toBe('BLOCK');
145
- (0, vitest_1.expect)(result.blockers).toContain('bad');
146
- (0, vitest_1.expect)(result.dossiers[1].recommendation).toBe('BLOCK');
147
- });
148
- (0, vitest_1.it)('should WARN when authenticity fails but integrity passes', async () => {
149
- const plan = makePlan([
150
- { name: 'unsigned', source: 'local', path: '/unsigned.ds.md', riskLevel: 'low' },
151
- ]);
152
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
153
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(failedAuthenticity());
154
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
155
- (0, vitest_1.expect)(result.overall_recommendation).toBe('WARN');
156
- (0, vitest_1.expect)(result.blockers).toHaveLength(0);
157
- (0, vitest_1.expect)(result.dossiers[0].recommendation).toBe('WARN');
158
- });
159
- (0, vitest_1.it)('should WARN for high-risk dossiers even when verification passes', async () => {
160
- const plan = makePlan([
161
- { name: 'risky', source: 'local', path: '/risky.ds.md', riskLevel: 'high' },
162
- ]);
163
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
164
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
165
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
166
- (0, vitest_1.expect)(result.overall_recommendation).toBe('WARN');
167
- (0, vitest_1.expect)(result.dossiers[0].recommendation).toBe('WARN');
168
- (0, vitest_1.expect)(result.dossiers[0].passed).toBe(true);
169
- });
170
- (0, vitest_1.it)('should aggregate worst-case recommendation', async () => {
171
- const plan = makePlan([
172
- { name: 'allow', source: 'local', path: '/allow.ds.md', riskLevel: 'low' },
173
- { name: 'warn', source: 'local', path: '/warn.ds.md', riskLevel: 'high' },
174
- ]);
175
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
176
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
177
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
178
- // One ALLOW + one WARN = overall WARN
179
- (0, vitest_1.expect)(result.overall_recommendation).toBe('WARN');
180
- });
181
- (0, vitest_1.it)('should resolve and verify when dossier parameter is used', async () => {
182
- const mockEntry = {
183
- name: 'deploy',
184
- source: 'local',
185
- path: '/test/deploy.ds.md',
186
- metadata: {},
187
- relationships: {},
188
- };
189
- const mockNodes = new Map([
190
- ['deploy', { name: 'deploy', source: 'local', path: '/test/deploy.ds.md' }],
191
- ]);
192
- const mockGraph = { nodes: mockNodes, edges: [] };
193
- const mockPlan = makePlan([
194
- { name: 'deploy', source: 'local', path: '/test/deploy.ds.md', riskLevel: 'low' },
195
- ]);
196
- vitest_1.vi.mocked(resolver_1.DossierResolver.prototype.resolveFromPath).mockResolvedValue(mockEntry);
197
- vitest_1.vi.mocked(resolver_1.DossierResolver.prototype.resolveGraph).mockResolvedValue(mockNodes);
198
- vitest_1.vi.mocked(graph_1.buildGraph).mockReturnValue(mockGraph);
199
- vitest_1.vi.mocked(graph_1.buildExecutionPlan).mockReturnValue(mockPlan);
200
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
201
- const result = (await (0, verifyGraph_1.verifyGraph)({ dossier: './deploy.ds.md' }));
202
- (0, vitest_1.expect)(result.overall_recommendation).toBe('ALLOW');
203
- (0, vitest_1.expect)(result.dossiers).toHaveLength(1);
204
- (0, vitest_1.expect)(resolver_1.DossierResolver.prototype.resolveFromPath).toHaveBeenCalled();
205
- });
206
- (0, vitest_1.it)('should return resolve error when inline resolution fails', async () => {
207
- vitest_1.vi.mocked(resolver_1.DossierResolver.prototype.resolve).mockRejectedValue(new Error('Registry unavailable'));
208
- const result = await (0, verifyGraph_1.verifyGraph)({ dossier: 'nonexistent-dossier' });
209
- (0, vitest_1.expect)(result).toHaveProperty('error');
210
- (0, vitest_1.expect)(result.error.type).toBe('resolve');
211
- (0, vitest_1.expect)(result.error.message).toContain('Registry unavailable');
212
- });
213
- (0, vitest_1.it)('should BLOCK when CLI is not found', async () => {
214
- const plan = makePlan([{ name: 'test', source: 'local', path: '/test.ds.md' }]);
215
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
216
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockRejectedValue(new cli_wrapper_1.CliNotFoundError());
217
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
218
- (0, vitest_1.expect)(result.overall_recommendation).toBe('BLOCK');
219
- (0, vitest_1.expect)(result.dossiers[0].recommendation).toBe('BLOCK');
220
- (0, vitest_1.expect)(result.dossiers[0].error).toBeDefined();
221
- });
222
- (0, vitest_1.it)('should use name when path is not available', async () => {
223
- const plan = makePlan([{ name: 'org/deploy-app', source: 'registry' }]);
224
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
225
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
226
- await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' });
227
- (0, vitest_1.expect)(cli_wrapper_1.execCli).toHaveBeenCalledWith('verify', ['org/deploy-app', '--json']);
228
- });
229
- (0, vitest_1.it)('should deduplicate dossiers across phases', async () => {
230
- const plan = {
231
- entryDossier: 'a',
232
- totalDossiers: 2,
233
- phases: [
234
- { phase: 1, dossiers: [{ name: 'a', source: 'local', condition: 'required' }] },
235
- { phase: 2, dossiers: [{ name: 'a', source: 'local', condition: 'required' }] },
236
- ],
237
- conflicts: [],
238
- warnings: [],
239
- };
240
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
241
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
242
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
243
- // Should verify 'a' only once
244
- (0, vitest_1.expect)(cli_wrapper_1.execCli).toHaveBeenCalledTimes(1);
245
- (0, vitest_1.expect)(result.dossiers).toHaveLength(1);
246
- });
247
- (0, vitest_1.it)('should produce a readable summary', async () => {
248
- const plan = makePlan([
249
- { name: 'a', source: 'local', path: '/a.ds.md', riskLevel: 'low' },
250
- { name: 'b', source: 'local', path: '/b.ds.md', riskLevel: 'low' },
251
- { name: 'c', source: 'local', path: '/c.ds.md', riskLevel: 'low' },
252
- ]);
253
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
254
- vitest_1.vi.mocked(cli_wrapper_1.execCli)
255
- .mockResolvedValueOnce(passedResult())
256
- .mockResolvedValueOnce(passedResult())
257
- .mockResolvedValueOnce(failedIntegrity());
258
- const result = (await (0, verifyGraph_1.verifyGraph)({ graph_id: 'test-id' }));
259
- (0, vitest_1.expect)(result.summary).toContain('3 dossiers verified');
260
- (0, vitest_1.expect)(result.summary).toContain('2 passed');
261
- (0, vitest_1.expect)(result.summary).toContain('1 blocked');
262
- });
263
- (0, vitest_1.it)('should prefer graph_id over dossier when both are provided', async () => {
264
- const plan = makePlan([
265
- { name: 'from-store', source: 'local', path: '/store.ds.md', riskLevel: 'low' },
266
- ]);
267
- vitest_1.vi.mocked(graphStore_1.getGraph).mockReturnValue(plan);
268
- vitest_1.vi.mocked(cli_wrapper_1.execCli).mockResolvedValue(passedResult());
269
- const result = (await (0, verifyGraph_1.verifyGraph)({
270
- graph_id: 'test-id',
271
- dossier: './other.ds.md',
272
- }));
273
- (0, vitest_1.expect)(result.dossiers[0].name).toBe('from-store');
274
- (0, vitest_1.expect)(resolver_1.DossierResolver.prototype.resolve).not.toHaveBeenCalled();
275
- (0, vitest_1.expect)(resolver_1.DossierResolver.prototype.resolveFromPath).not.toHaveBeenCalled();
276
- });
277
- });
278
- //# sourceMappingURL=verifyGraph.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyGraph.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/verifyGraph.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli-wrapper.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-wrapper.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/cli-wrapper.test.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const cli_wrapper_1 = require("../cli-wrapper");
5
- vitest_1.vi.mock('../logger', () => ({
6
- logger: { info: vitest_1.vi.fn(), warn: vitest_1.vi.fn(), error: vitest_1.vi.fn(), debug: vitest_1.vi.fn() },
7
- }));
8
- (0, vitest_1.describe)('CliNotFoundError', () => {
9
- (0, vitest_1.it)('should have correct name and message', () => {
10
- const err = new cli_wrapper_1.CliNotFoundError();
11
- (0, vitest_1.expect)(err.name).toBe('CliNotFoundError');
12
- (0, vitest_1.expect)(err.message).toContain('ai-dossier CLI not found');
13
- });
14
- });
15
- (0, vitest_1.describe)('CliExecutionError', () => {
16
- (0, vitest_1.it)('should include command and exit code in message', () => {
17
- const err = new cli_wrapper_1.CliExecutionError('verify', 1, 'some error');
18
- (0, vitest_1.expect)(err.name).toBe('CliExecutionError');
19
- (0, vitest_1.expect)(err.message).toContain('verify');
20
- (0, vitest_1.expect)(err.command).toBe('verify');
21
- (0, vitest_1.expect)(err.exitCode).toBe(1);
22
- (0, vitest_1.expect)(err.stderr).toBe('some error');
23
- });
24
- (0, vitest_1.it)('should handle null exit code', () => {
25
- const err = new cli_wrapper_1.CliExecutionError('list', null, '');
26
- (0, vitest_1.expect)(err.exitCode).toBeNull();
27
- });
28
- });
29
- //# sourceMappingURL=cli-wrapper.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-wrapper.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/cli-wrapper.test.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,gDAAqE;AAErE,WAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE,EAAE;CACzE,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,+BAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,+BAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=paths.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/paths.test.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const node_path_1 = require("node:path");
4
- const vitest_1 = require("vitest");
5
- const paths_1 = require("../paths");
6
- (0, vitest_1.describe)('validatePathWithinCwd', () => {
7
- (0, vitest_1.it)('should return resolved path for paths within cwd', () => {
8
- const result = (0, paths_1.validatePathWithinCwd)('.');
9
- (0, vitest_1.expect)(result).toBe(process.cwd());
10
- });
11
- (0, vitest_1.it)('should return resolved path for subdirectories', () => {
12
- const result = (0, paths_1.validatePathWithinCwd)('src');
13
- (0, vitest_1.expect)(result).toBe((0, node_path_1.resolve)('src'));
14
- });
15
- (0, vitest_1.it)('should reject paths outside cwd', () => {
16
- (0, vitest_1.expect)(() => (0, paths_1.validatePathWithinCwd)('/etc/passwd')).toThrow('Access denied');
17
- });
18
- (0, vitest_1.it)('should reject parent directory traversal', () => {
19
- (0, vitest_1.expect)(() => (0, paths_1.validatePathWithinCwd)('../../etc/passwd')).toThrow('Access denied');
20
- });
21
- (0, vitest_1.it)('should allow cwd itself', () => {
22
- const result = (0, paths_1.validatePathWithinCwd)(process.cwd());
23
- (0, vitest_1.expect)(result).toBe(process.cwd());
24
- });
25
- });
26
- //# sourceMappingURL=paths.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/paths.test.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,mCAA8C;AAC9C,oCAAiD;AAEjD,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,GAAG,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAA,mBAAO,EAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,6BAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,6BAAqB,EAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Error types for dossier MCP server
3
- */
4
- export declare enum ErrorType {
5
- CLIENT_ERROR = "CLIENT_ERROR",
6
- SERVER_ERROR = "SERVER_ERROR",
7
- SECURITY_ERROR = "SECURITY_ERROR",
8
- EXTERNAL_ERROR = "EXTERNAL_ERROR"
9
- }
10
- export declare class DossierError extends Error {
11
- type: ErrorType;
12
- code?: string | undefined;
13
- context?: Record<string, unknown> | undefined;
14
- constructor(type: ErrorType, message: string, code?: string | undefined, context?: Record<string, unknown> | undefined);
15
- toJSON(): {
16
- type: ErrorType;
17
- message: string;
18
- code: string | undefined;
19
- context: Record<string, unknown> | undefined;
20
- };
21
- }
22
- export declare class DossierParseError extends DossierError {
23
- constructor(message: string, context?: Record<string, unknown>);
24
- }
25
- export declare class DossierVerificationError extends DossierError {
26
- verificationType: 'CHECKSUM_MISMATCH' | 'SIGNATURE_INVALID' | 'MISSING_METADATA';
27
- constructor(verificationType: 'CHECKSUM_MISMATCH' | 'SIGNATURE_INVALID' | 'MISSING_METADATA', details: Record<string, unknown>);
28
- }
29
- export declare class DossierNotFoundError extends DossierError {
30
- constructor(path: string);
31
- }
32
- export declare class ExternalToolError extends DossierError {
33
- constructor(tool: string, message: string, context?: Record<string, unknown>);
34
- }
35
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IACnB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;CAClC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAM1C,MAAM;;;;;;CAQP;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,wBAAyB,SAAQ,YAAY;IAE/C,gBAAgB,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,kBAAkB;gBAAhF,gBAAgB,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,kBAAkB,EACvF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUnC;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO7E"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- /**
3
- * Error types for dossier MCP server
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ExternalToolError = exports.DossierNotFoundError = exports.DossierVerificationError = exports.DossierParseError = exports.DossierError = exports.ErrorType = void 0;
7
- var ErrorType;
8
- (function (ErrorType) {
9
- ErrorType["CLIENT_ERROR"] = "CLIENT_ERROR";
10
- ErrorType["SERVER_ERROR"] = "SERVER_ERROR";
11
- ErrorType["SECURITY_ERROR"] = "SECURITY_ERROR";
12
- ErrorType["EXTERNAL_ERROR"] = "EXTERNAL_ERROR";
13
- })(ErrorType || (exports.ErrorType = ErrorType = {}));
14
- class DossierError extends Error {
15
- type;
16
- code;
17
- context;
18
- constructor(type, message, code, context) {
19
- super(message);
20
- this.type = type;
21
- this.code = code;
22
- this.context = context;
23
- this.name = 'DossierError';
24
- }
25
- toJSON() {
26
- return {
27
- type: this.type,
28
- message: this.message,
29
- code: this.code,
30
- context: this.context,
31
- };
32
- }
33
- }
34
- exports.DossierError = DossierError;
35
- class DossierParseError extends DossierError {
36
- constructor(message, context) {
37
- super(ErrorType.CLIENT_ERROR, message, 'PARSE_ERROR', context);
38
- this.name = 'DossierParseError';
39
- }
40
- }
41
- exports.DossierParseError = DossierParseError;
42
- class DossierVerificationError extends DossierError {
43
- verificationType;
44
- constructor(verificationType, details) {
45
- super(ErrorType.SECURITY_ERROR, `Verification failed: ${verificationType}`, verificationType, details);
46
- this.verificationType = verificationType;
47
- this.name = 'DossierVerificationError';
48
- }
49
- }
50
- exports.DossierVerificationError = DossierVerificationError;
51
- class DossierNotFoundError extends DossierError {
52
- constructor(path) {
53
- super(ErrorType.CLIENT_ERROR, `Dossier not found: ${path}`, 'NOT_FOUND', { path });
54
- this.name = 'DossierNotFoundError';
55
- }
56
- }
57
- exports.DossierNotFoundError = DossierNotFoundError;
58
- class ExternalToolError extends DossierError {
59
- constructor(tool, message, context) {
60
- super(ErrorType.EXTERNAL_ERROR, `${tool} error: ${message}`, 'EXTERNAL_TOOL_ERROR', {
61
- tool,
62
- ...context,
63
- });
64
- this.name = 'ExternalToolError';
65
- }
66
- }
67
- exports.ExternalToolError = ExternalToolError;
68
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0CAA6B,CAAA;IAC7B,0CAA6B,CAAA;IAC7B,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;AACnC,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AAED,MAAa,YAAa,SAAQ,KAAK;IAE5B;IAEA;IACA;IAJT,YACS,IAAe,EACtB,OAAe,EACR,IAAa,EACb,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QALR,SAAI,GAAJ,IAAI,CAAW;QAEf,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAnBD,oCAmBC;AAED,MAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,wBAAyB,SAAQ,YAAY;IAE/C;IADT,YACS,gBAAgF,EACvF,OAAgC;QAEhC,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,wBAAwB,gBAAgB,EAAE,EAC1C,gBAAgB,EAChB,OAAO,CACR,CAAC;QARK,qBAAgB,GAAhB,gBAAgB,CAAgE;QASvF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAbD,4DAaC;AAED,MAAa,oBAAqB,SAAQ,YAAY;IACpD,YAAY,IAAY;QACtB,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,sBAAsB,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAED,MAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,IAAY,EAAE,OAAe,EAAE,OAAiC;QAC1E,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI,WAAW,OAAO,EAAE,EAAE,qBAAqB,EAAE;YAClF,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AARD,8CAQC"}