@ai-dossier/mcp-server 1.0.1 → 1.0.3

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 (92) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +110 -297
  3. package/dist/index.js +272 -38
  4. package/dist/index.js.map +1 -1
  5. package/dist/orchestration/graph.d.ts +33 -0
  6. package/dist/orchestration/graph.d.ts.map +1 -0
  7. package/dist/orchestration/graph.js +240 -0
  8. package/dist/orchestration/graph.js.map +1 -0
  9. package/dist/orchestration/outputMapper.d.ts +94 -0
  10. package/dist/orchestration/outputMapper.d.ts.map +1 -0
  11. package/dist/orchestration/outputMapper.js +129 -0
  12. package/dist/orchestration/outputMapper.js.map +1 -0
  13. package/dist/orchestration/resolver.d.ts +40 -0
  14. package/dist/orchestration/resolver.d.ts.map +1 -0
  15. package/dist/orchestration/resolver.js +208 -0
  16. package/dist/orchestration/resolver.js.map +1 -0
  17. package/dist/orchestration/session.d.ts +43 -0
  18. package/dist/orchestration/session.d.ts.map +1 -0
  19. package/dist/orchestration/session.js +67 -0
  20. package/dist/orchestration/session.js.map +1 -0
  21. package/dist/orchestration/types.d.ts +76 -0
  22. package/dist/orchestration/types.d.ts.map +1 -0
  23. package/dist/orchestration/types.js +6 -0
  24. package/dist/orchestration/types.js.map +1 -0
  25. package/dist/resources/orchestration.d.ts +7 -0
  26. package/dist/resources/orchestration.d.ts.map +1 -0
  27. package/dist/resources/orchestration.js +11 -0
  28. package/dist/resources/orchestration.js.map +1 -0
  29. package/dist/tools/cancelJourney.d.ts +20 -0
  30. package/dist/tools/cancelJourney.d.ts.map +1 -0
  31. package/dist/tools/cancelJourney.js +50 -0
  32. package/dist/tools/cancelJourney.js.map +1 -0
  33. package/dist/tools/getJourneyStatus.d.ts +29 -0
  34. package/dist/tools/getJourneyStatus.d.ts.map +1 -0
  35. package/dist/tools/getJourneyStatus.js +39 -0
  36. package/dist/tools/getJourneyStatus.js.map +1 -0
  37. package/dist/tools/listDossiers.d.ts +13 -4
  38. package/dist/tools/listDossiers.d.ts.map +1 -1
  39. package/dist/tools/listDossiers.js +28 -89
  40. package/dist/tools/listDossiers.js.map +1 -1
  41. package/dist/tools/readDossier.d.ts +5 -15
  42. package/dist/tools/readDossier.d.ts.map +1 -1
  43. package/dist/tools/readDossier.js +53 -33
  44. package/dist/tools/readDossier.js.map +1 -1
  45. package/dist/tools/resolveGraph.d.ts +25 -0
  46. package/dist/tools/resolveGraph.d.ts.map +1 -0
  47. package/dist/tools/resolveGraph.js +67 -0
  48. package/dist/tools/resolveGraph.js.map +1 -0
  49. package/dist/tools/searchDossiers.d.ts +28 -0
  50. package/dist/tools/searchDossiers.d.ts.map +1 -0
  51. package/dist/tools/searchDossiers.js +38 -0
  52. package/dist/tools/searchDossiers.js.map +1 -0
  53. package/dist/tools/startJourney.d.ts +26 -0
  54. package/dist/tools/startJourney.d.ts.map +1 -0
  55. package/dist/tools/startJourney.js +90 -0
  56. package/dist/tools/startJourney.js.map +1 -0
  57. package/dist/tools/stepComplete.d.ts +28 -0
  58. package/dist/tools/stepComplete.d.ts.map +1 -0
  59. package/dist/tools/stepComplete.js +101 -0
  60. package/dist/tools/stepComplete.js.map +1 -0
  61. package/dist/tools/verifyDossier.d.ts +14 -6
  62. package/dist/tools/verifyDossier.d.ts.map +1 -1
  63. package/dist/tools/verifyDossier.js +16 -89
  64. package/dist/tools/verifyDossier.js.map +1 -1
  65. package/dist/tools/verifyGraph.d.ts +33 -0
  66. package/dist/tools/verifyGraph.d.ts.map +1 -0
  67. package/dist/tools/verifyGraph.js +175 -0
  68. package/dist/tools/verifyGraph.js.map +1 -0
  69. package/dist/utils/cli-wrapper.d.ts +25 -0
  70. package/dist/utils/cli-wrapper.d.ts.map +1 -0
  71. package/dist/utils/cli-wrapper.js +83 -0
  72. package/dist/utils/cli-wrapper.js.map +1 -0
  73. package/dist/utils/graphStore.d.ts +9 -0
  74. package/dist/utils/graphStore.d.ts.map +1 -0
  75. package/dist/utils/graphStore.js +21 -0
  76. package/dist/utils/graphStore.js.map +1 -0
  77. package/dist/utils/paths.d.ts +8 -0
  78. package/dist/utils/paths.d.ts.map +1 -0
  79. package/dist/utils/paths.js +19 -0
  80. package/dist/utils/paths.js.map +1 -0
  81. package/dist/utils/resourceLoader.d.ts.map +1 -1
  82. package/dist/utils/resourceLoader.js +2 -3
  83. package/dist/utils/resourceLoader.js.map +1 -1
  84. package/package.json +23 -9
  85. package/dist/parsers/signatureVerifier.d.ts +0 -10
  86. package/dist/parsers/signatureVerifier.d.ts.map +0 -1
  87. package/dist/parsers/signatureVerifier.js +0 -85
  88. package/dist/parsers/signatureVerifier.js.map +0 -1
  89. package/dist/utils/errors.d.ts +0 -35
  90. package/dist/utils/errors.d.ts.map +0 -1
  91. package/dist/utils/errors.js +0 -68
  92. package/dist/utils/errors.js.map +0 -1
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * Dossier reference resolver.
4
+ * Resolves dossier names to their metadata by:
5
+ * 1. Local file lookup (*.ds.md in project)
6
+ * 2. Registry lookup via `ai-dossier get --json <name>`
7
+ * Caches resolved dossiers for the lifetime of a resolution run.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DossierResolver = exports.ResolveError = void 0;
11
+ const node_path_1 = require("node:path");
12
+ const cli_wrapper_1 = require("../utils/cli-wrapper");
13
+ const logger_1 = require("../utils/logger");
14
+ class ResolveError extends Error {
15
+ dossierName;
16
+ constructor(dossierName, message) {
17
+ super(`Failed to resolve "${dossierName}": ${message}`);
18
+ this.dossierName = dossierName;
19
+ this.name = 'ResolveError';
20
+ }
21
+ }
22
+ exports.ResolveError = ResolveError;
23
+ class DossierResolver {
24
+ basePath;
25
+ cache = new Map();
26
+ localIndex = null;
27
+ constructor(basePath = process.cwd()) {
28
+ this.basePath = basePath;
29
+ }
30
+ /**
31
+ * Resolve a dossier reference by name.
32
+ * Tries local files first, then falls back to the registry.
33
+ */
34
+ async resolve(name) {
35
+ const cached = this.cache.get(name);
36
+ if (cached)
37
+ return cached;
38
+ // Try local resolution first
39
+ const local = await this.resolveLocal(name);
40
+ if (local) {
41
+ this.cache.set(name, local);
42
+ return local;
43
+ }
44
+ // Fall back to registry
45
+ const registry = await this.resolveFromRegistry(name);
46
+ if (registry) {
47
+ this.cache.set(name, registry);
48
+ return registry;
49
+ }
50
+ throw new ResolveError(name, 'Not found locally or in registry');
51
+ }
52
+ /**
53
+ * Resolve a dossier from a local file path (for the entry dossier).
54
+ */
55
+ async resolveFromPath(filePath) {
56
+ const resolvedPath = (0, node_path_1.resolve)(filePath);
57
+ logger_1.logger.info('Resolving dossier from path', { path: resolvedPath });
58
+ try {
59
+ const metadata = await (0, cli_wrapper_1.execCli)('info', [resolvedPath, '--json']);
60
+ const name = metadata.name || resolvedPath.split('/').pop()?.replace('.ds.md', '') || filePath;
61
+ const resolved = {
62
+ name,
63
+ source: 'local',
64
+ path: resolvedPath,
65
+ metadata: metadata,
66
+ relationships: metadata.relationships,
67
+ };
68
+ this.cache.set(name, resolved);
69
+ return resolved;
70
+ }
71
+ catch (error) {
72
+ if (error instanceof cli_wrapper_1.CliNotFoundError) {
73
+ throw new Error(error.message);
74
+ }
75
+ throw new ResolveError(filePath, error instanceof Error ? error.message : String(error));
76
+ }
77
+ }
78
+ /**
79
+ * Recursively resolve all dossiers in the dependency graph
80
+ * starting from an entry dossier.
81
+ */
82
+ async resolveGraph(entryDossier) {
83
+ const nodes = new Map();
84
+ const queue = [entryDossier];
85
+ const visited = new Set();
86
+ while (queue.length > 0) {
87
+ const current = queue.shift();
88
+ if (visited.has(current.name))
89
+ continue;
90
+ visited.add(current.name);
91
+ nodes.set(current.name, {
92
+ name: current.name,
93
+ source: current.source,
94
+ path: current.path,
95
+ riskLevel: current.metadata.risk_level ?? current.metadata.riskLevel,
96
+ status: current.metadata.status,
97
+ relationships: current.relationships,
98
+ });
99
+ // Queue all referenced dossiers for resolution
100
+ const refs = this.collectReferences(current.relationships);
101
+ for (const ref of refs) {
102
+ if (visited.has(ref))
103
+ continue;
104
+ try {
105
+ const resolved = await this.resolve(ref);
106
+ queue.push(resolved);
107
+ }
108
+ catch (error) {
109
+ logger_1.logger.warn('Could not resolve referenced dossier', {
110
+ dossier: ref,
111
+ from: current.name,
112
+ error: error instanceof Error ? error.message : String(error),
113
+ });
114
+ }
115
+ }
116
+ }
117
+ return nodes;
118
+ }
119
+ collectReferences(relationships) {
120
+ if (!relationships)
121
+ return [];
122
+ const refs = new Set();
123
+ for (const dep of relationships.preceded_by ?? []) {
124
+ refs.add(dep.dossier);
125
+ }
126
+ for (const dep of relationships.followed_by ?? []) {
127
+ refs.add(dep.dossier);
128
+ }
129
+ for (const dep of relationships.conflicts_with ?? []) {
130
+ refs.add(dep.dossier);
131
+ }
132
+ for (const name of relationships.can_run_parallel_with ?? []) {
133
+ refs.add(name);
134
+ }
135
+ return [...refs];
136
+ }
137
+ /**
138
+ * Build a local index of dossiers by scanning the base path.
139
+ */
140
+ async buildLocalIndex() {
141
+ if (this.localIndex)
142
+ return this.localIndex;
143
+ try {
144
+ const result = await (0, cli_wrapper_1.execCli)('list', [
145
+ this.basePath,
146
+ '--format',
147
+ 'json',
148
+ '--recursive',
149
+ ]);
150
+ this.localIndex = new Map();
151
+ for (const item of result) {
152
+ // Index by name field if available, otherwise by filename
153
+ const name = item.name || item.path.split('/').pop()?.replace('.ds.md', '') || item.path;
154
+ this.localIndex.set(name, item);
155
+ }
156
+ return this.localIndex;
157
+ }
158
+ catch {
159
+ this.localIndex = new Map();
160
+ return this.localIndex;
161
+ }
162
+ }
163
+ async resolveLocal(name) {
164
+ const index = await this.buildLocalIndex();
165
+ const item = index.get(name);
166
+ if (!item)
167
+ return null;
168
+ logger_1.logger.info('Resolved dossier locally', { name, path: item.path });
169
+ // Get full metadata including relationships
170
+ try {
171
+ const metadata = await (0, cli_wrapper_1.execCli)('info', [item.path, '--json']);
172
+ return {
173
+ name,
174
+ source: 'local',
175
+ path: item.path,
176
+ metadata: metadata,
177
+ relationships: metadata.relationships,
178
+ };
179
+ }
180
+ catch {
181
+ // Fallback to list item data
182
+ return {
183
+ name,
184
+ source: 'local',
185
+ path: item.path,
186
+ metadata: item,
187
+ relationships: item.relationships,
188
+ };
189
+ }
190
+ }
191
+ async resolveFromRegistry(name) {
192
+ logger_1.logger.info('Attempting registry resolution', { name });
193
+ try {
194
+ const metadata = await (0, cli_wrapper_1.execCli)('get', [name, '--json']);
195
+ return {
196
+ name,
197
+ source: 'registry',
198
+ metadata: metadata,
199
+ relationships: metadata.relationships,
200
+ };
201
+ }
202
+ catch {
203
+ return null;
204
+ }
205
+ }
206
+ }
207
+ exports.DossierResolver = DossierResolver;
208
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/orchestration/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Journey session state and in-memory store.
3
+ * Tracks multi-dossier execution from start to finish.
4
+ */
5
+ import type { PhaseEntry } from './types';
6
+ export interface JourneyStep {
7
+ dossier: string;
8
+ source: 'local' | 'registry';
9
+ path?: string;
10
+ condition: 'required' | 'optional' | 'suggested';
11
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
12
+ injectedContext?: string;
13
+ collectedOutputs?: Record<string, unknown>;
14
+ }
15
+ export interface JourneySession {
16
+ id: string;
17
+ graphId: string;
18
+ steps: JourneyStep[];
19
+ currentStepIndex: number;
20
+ status: 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
21
+ outputs: Record<string, Record<string, unknown>>;
22
+ startedAt: Date;
23
+ completedAt?: Date;
24
+ cancelReason?: string;
25
+ }
26
+ export declare function stepsFromPhases(entries: PhaseEntry[]): JourneyStep[];
27
+ export declare function createSession(graphId: string, steps: JourneyStep[]): JourneySession;
28
+ export declare function getSession(id: string): JourneySession | undefined;
29
+ export declare function updateSession(session: JourneySession): void;
30
+ export declare function buildOutputContext(outputs: Record<string, Record<string, unknown>>): string;
31
+ export interface JourneySummary {
32
+ journey_id: string;
33
+ status: JourneySession['status'];
34
+ total_steps: number;
35
+ completed_steps: number;
36
+ failed_steps: number;
37
+ outputs: Record<string, Record<string, unknown>>;
38
+ started_at: string;
39
+ completed_at?: string;
40
+ cancel_reason?: string;
41
+ }
42
+ export declare function buildSummary(session: JourneySession): JourneySummary;
43
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/orchestration/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACjD,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAChF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAQpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,cAAc,CAYnF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAQ3F;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAcpE"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Journey session state and in-memory store.
4
+ * Tracks multi-dossier execution from start to finish.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.stepsFromPhases = stepsFromPhases;
8
+ exports.createSession = createSession;
9
+ exports.getSession = getSession;
10
+ exports.updateSession = updateSession;
11
+ exports.buildOutputContext = buildOutputContext;
12
+ exports.buildSummary = buildSummary;
13
+ const node_crypto_1 = require("node:crypto");
14
+ const sessions = new Map();
15
+ function stepsFromPhases(entries) {
16
+ return entries.map((entry) => ({
17
+ dossier: entry.name,
18
+ source: entry.source,
19
+ path: entry.path,
20
+ condition: entry.condition,
21
+ status: 'pending',
22
+ }));
23
+ }
24
+ function createSession(graphId, steps) {
25
+ const session = {
26
+ id: (0, node_crypto_1.randomUUID)(),
27
+ graphId,
28
+ steps,
29
+ currentStepIndex: 0,
30
+ status: 'pending',
31
+ outputs: {},
32
+ startedAt: new Date(),
33
+ };
34
+ sessions.set(session.id, session);
35
+ return session;
36
+ }
37
+ function getSession(id) {
38
+ return sessions.get(id);
39
+ }
40
+ function updateSession(session) {
41
+ sessions.set(session.id, session);
42
+ }
43
+ function buildOutputContext(outputs) {
44
+ const parts = [];
45
+ for (const [dossierName, dossierOutputs] of Object.entries(outputs)) {
46
+ for (const [key, value] of Object.entries(dossierOutputs)) {
47
+ parts.push(`${key}=${String(value)} (from ${dossierName})`);
48
+ }
49
+ }
50
+ return parts.length > 0 ? `Available from previous steps: ${parts.join(', ')}` : '';
51
+ }
52
+ function buildSummary(session) {
53
+ const completed = session.steps.filter((s) => s.status === 'completed').length;
54
+ const failed = session.steps.filter((s) => s.status === 'failed').length;
55
+ return {
56
+ journey_id: session.id,
57
+ status: session.status,
58
+ total_steps: session.steps.length,
59
+ completed_steps: completed,
60
+ failed_steps: failed,
61
+ outputs: session.outputs,
62
+ started_at: session.startedAt.toISOString(),
63
+ completed_at: session.completedAt?.toISOString(),
64
+ cancel_reason: session.cancelReason,
65
+ };
66
+ }
67
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/orchestration/session.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA6BH,0CAQC;AAED,sCAYC;AAED,gCAEC;AAED,sCAEC;AAED,gDAQC;AAcD,oCAcC;AA/FD,6CAAyC;AAyBzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEnD,SAAgB,eAAe,CAAC,OAAqB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,IAAI;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,SAAkB;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe,EAAE,KAAoB;IACjE,MAAM,OAAO,GAAmB;QAC9B,EAAE,EAAE,IAAA,wBAAU,GAAE;QAChB,OAAO;QACP,KAAK;QACL,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,UAAU,CAAC,EAAU;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,aAAa,CAAC,OAAuB;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAgD;IACjF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,WAAW,GAAG,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC;AAcD,SAAgB,YAAY,CAAC,OAAuB;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACzE,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;QACjC,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;QAC3C,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE;QAChD,aAAa,EAAE,OAAO,CAAC,YAAY;KACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Types for the dependency graph resolver and execution planner.
3
+ */
4
+ export interface PrecededByRelation {
5
+ dossier: string;
6
+ condition?: 'required' | 'optional' | 'suggested';
7
+ reason?: string;
8
+ }
9
+ export interface FollowedByRelation {
10
+ dossier: string;
11
+ condition?: 'required' | 'suggested';
12
+ purpose?: string;
13
+ }
14
+ export interface ConflictsWithRelation {
15
+ dossier: string;
16
+ reason: string;
17
+ }
18
+ export interface DossierRelationships {
19
+ preceded_by?: PrecededByRelation[];
20
+ followed_by?: FollowedByRelation[];
21
+ conflicts_with?: ConflictsWithRelation[];
22
+ can_run_parallel_with?: string[];
23
+ alternatives?: Array<{
24
+ dossier: string;
25
+ when_to_use?: string;
26
+ }>;
27
+ }
28
+ export interface DossierNode {
29
+ name: string;
30
+ source: 'local' | 'registry';
31
+ path?: string;
32
+ riskLevel?: string;
33
+ status?: string;
34
+ relationships?: DossierRelationships;
35
+ }
36
+ export interface GraphEdge {
37
+ from: string;
38
+ to: string;
39
+ condition: 'required' | 'optional' | 'suggested';
40
+ reason?: string;
41
+ }
42
+ export interface DependencyGraph {
43
+ nodes: Map<string, DossierNode>;
44
+ edges: GraphEdge[];
45
+ }
46
+ export interface PhaseEntry {
47
+ name: string;
48
+ source: 'local' | 'registry';
49
+ path?: string;
50
+ condition: 'required' | 'optional' | 'suggested';
51
+ riskLevel?: string;
52
+ }
53
+ export interface ExecutionPhase {
54
+ phase: number;
55
+ dossiers: PhaseEntry[];
56
+ }
57
+ export interface ConflictWarning {
58
+ dossierA: string;
59
+ dossierB: string;
60
+ reason: string;
61
+ }
62
+ export interface ExecutionPlan {
63
+ entryDossier: string;
64
+ totalDossiers: number;
65
+ phases: ExecutionPhase[];
66
+ conflicts: ConflictWarning[];
67
+ warnings: string[];
68
+ }
69
+ export interface ResolvedDossier {
70
+ name: string;
71
+ source: 'local' | 'registry';
72
+ path?: string;
73
+ metadata: Record<string, unknown>;
74
+ relationships?: DossierRelationships;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACzC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChC,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Types for the dependency graph resolver and execution planner.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * dossier://orchestration resource
3
+ * Provides the orchestration tool reference to LLM context
4
+ */
5
+ /** Get ORCHESTRATION.md content */
6
+ export declare const getOrchestrationResource: () => string;
7
+ //# sourceMappingURL=orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../src/resources/orchestration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,cAA4D,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * dossier://orchestration resource
4
+ * Provides the orchestration tool reference to LLM context
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getOrchestrationResource = void 0;
8
+ const resourceLoader_1 = require("../utils/resourceLoader");
9
+ /** Get ORCHESTRATION.md content */
10
+ exports.getOrchestrationResource = (0, resourceLoader_1.createResourceLoader)('ORCHESTRATION.md', 'orchestration');
11
+ //# sourceMappingURL=orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/resources/orchestration.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4DAA+D;AAE/D,mCAAmC;AACtB,QAAA,wBAAwB,GAAG,IAAA,qCAAoB,EAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * cancel_journey tool - Cancel an active journey session.
3
+ * Returns a summary of what completed before cancellation.
4
+ */
5
+ import type { JourneySummary } from '../orchestration/session';
6
+ export interface CancelJourneyInput {
7
+ journey_id: string;
8
+ reason?: string;
9
+ }
10
+ export interface CancelJourneyOutput {
11
+ summary: JourneySummary;
12
+ }
13
+ export interface CancelJourneyError {
14
+ error: {
15
+ type: 'not_found' | 'invalid_state' | 'unknown';
16
+ message: string;
17
+ };
18
+ }
19
+ export declare function cancelJourney(input: CancelJourneyInput): CancelJourneyOutput | CancelJourneyError;
20
+ //# sourceMappingURL=cancelJourney.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelJourney.d.ts","sourceRoot":"","sources":["../../src/tools/cancelJourney.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE;QACL,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,CAAC;QAChD,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB,CA+CjG"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * cancel_journey tool - Cancel an active journey session.
4
+ * Returns a summary of what completed before cancellation.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.cancelJourney = cancelJourney;
8
+ const session_1 = require("../orchestration/session");
9
+ const logger_1 = require("../utils/logger");
10
+ function cancelJourney(input) {
11
+ const { journey_id, reason } = input;
12
+ if (!journey_id) {
13
+ return { error: { type: 'unknown', message: 'journey_id is required' } };
14
+ }
15
+ const session = (0, session_1.getSession)(journey_id);
16
+ if (!session) {
17
+ return { error: { type: 'not_found', message: `No journey found with id: ${journey_id}` } };
18
+ }
19
+ if (session.status === 'completed' || session.status === 'cancelled') {
20
+ return {
21
+ error: {
22
+ type: 'invalid_state',
23
+ message: `Journey is already ${session.status}`,
24
+ },
25
+ };
26
+ }
27
+ // Mark the current running step as skipped if it was in progress
28
+ const currentStep = session.steps[session.currentStepIndex];
29
+ if (currentStep?.status === 'running') {
30
+ currentStep.status = 'skipped';
31
+ }
32
+ // Mark all remaining pending steps as skipped
33
+ for (let i = session.currentStepIndex + 1; i < session.steps.length; i++) {
34
+ if (session.steps[i].status === 'pending') {
35
+ session.steps[i].status = 'skipped';
36
+ }
37
+ }
38
+ session.status = 'cancelled';
39
+ session.completedAt = new Date();
40
+ session.cancelReason = reason;
41
+ (0, session_1.updateSession)(session);
42
+ logger_1.logger.info('Journey cancelled', {
43
+ journeyId: journey_id,
44
+ reason,
45
+ completedSteps: session.steps.filter((s) => s.status === 'completed').length,
46
+ totalSteps: session.steps.length,
47
+ });
48
+ return { summary: (0, session_1.buildSummary)(session) };
49
+ }
50
+ //# sourceMappingURL=cancelJourney.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelJourney.js","sourceRoot":"","sources":["../../src/tools/cancelJourney.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsBH,sCA+CC;AAlED,sDAAmF;AACnF,4CAAyC;AAkBzC,SAAgB,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAErC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,UAAU,EAAE,EAAE,EAAE,CAAC;IAC9F,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACrE,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,sBAAsB,OAAO,CAAC,MAAM,EAAE;aAChD;SACF,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,IAAI,WAAW,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;IACjC,CAAC;IAED,8CAA8C;IAC9C,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;IAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;IAC9B,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IAEvB,eAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,SAAS,EAAE,UAAU;QACrB,MAAM;QACN,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;QAC5E,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;KACjC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,IAAA,sBAAY,EAAC,OAAO,CAAC,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * get_journey_status tool - Return current state of a journey session.
3
+ */
4
+ import type { JourneySummary } from '../orchestration/session';
5
+ export interface GetJourneyStatusInput {
6
+ journey_id: string;
7
+ }
8
+ export interface GetJourneyStatusOutput {
9
+ summary: JourneySummary;
10
+ current_step?: {
11
+ index: number;
12
+ dossier: string;
13
+ status: string;
14
+ context?: string;
15
+ };
16
+ steps: Array<{
17
+ index: number;
18
+ dossier: string;
19
+ status: string;
20
+ }>;
21
+ }
22
+ export interface GetJourneyStatusError {
23
+ error: {
24
+ type: 'not_found' | 'unknown';
25
+ message: string;
26
+ };
27
+ }
28
+ export declare function getJourneyStatus(input: GetJourneyStatusInput): GetJourneyStatusOutput | GetJourneyStatusError;
29
+ //# sourceMappingURL=getJourneyStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJourneyStatus.d.ts","sourceRoot":"","sources":["../../src/tools/getJourneyStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,sBAAsB,GAAG,qBAAqB,CAoChD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * get_journey_status tool - Return current state of a journey session.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getJourneyStatus = getJourneyStatus;
7
+ const session_1 = require("../orchestration/session");
8
+ const logger_1 = require("../utils/logger");
9
+ function getJourneyStatus(input) {
10
+ const { journey_id } = input;
11
+ if (!journey_id) {
12
+ return { error: { type: 'unknown', message: 'journey_id is required' } };
13
+ }
14
+ const session = (0, session_1.getSession)(journey_id);
15
+ if (!session) {
16
+ return { error: { type: 'not_found', message: `No journey found with id: ${journey_id}` } };
17
+ }
18
+ logger_1.logger.info('Journey status requested', { journeyId: journey_id, status: session.status });
19
+ const steps = session.steps.map((step, index) => ({
20
+ index,
21
+ dossier: step.dossier,
22
+ status: step.status,
23
+ }));
24
+ const currentIndex = session.currentStepIndex;
25
+ const currentStep = session.status === 'running' && currentIndex < session.steps.length
26
+ ? {
27
+ index: currentIndex,
28
+ dossier: session.steps[currentIndex].dossier,
29
+ status: session.steps[currentIndex].status,
30
+ context: session.steps[currentIndex].injectedContext,
31
+ }
32
+ : undefined;
33
+ return {
34
+ summary: (0, session_1.buildSummary)(session),
35
+ current_step: currentStep,
36
+ steps,
37
+ };
38
+ }
39
+ //# sourceMappingURL=getJourneyStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJourneyStatus.js","sourceRoot":"","sources":["../../src/tools/getJourneyStatus.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgCH,4CAsCC;AAnED,sDAAoE;AACpE,4CAAyC;AA4BzC,SAAgB,gBAAgB,CAC9B,KAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,UAAU,EAAE,EAAE,EAAE,CAAC;IAC9F,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC9C,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;QACjE,CAAC,CAAC;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO;YAC5C,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM;YAC1C,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,eAAe;SACrD;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,IAAA,sBAAY,EAAC,OAAO,CAAC;QAC9B,YAAY,EAAE,WAAW;QACzB,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1,19 +1,28 @@
1
1
  /**
2
2
  * list_dossiers tool - Discover dossiers in a directory
3
- * Scans for *.ds.md files and returns metadata
3
+ * Thin wrapper around `ai-dossier list --format json [path]`
4
4
  */
5
- import { type DossierListItem } from '@ai-dossier/core';
6
5
  export interface ListDossiersInput {
7
6
  path?: string;
8
7
  recursive?: boolean;
9
8
  }
9
+ export interface DossierListItem {
10
+ path: string;
11
+ filename: string;
12
+ title: string;
13
+ version?: string;
14
+ risk_level?: string;
15
+ status?: string;
16
+ signed?: boolean;
17
+ objective?: string;
18
+ }
10
19
  export interface ListDossiersOutput {
11
20
  dossiers: DossierListItem[];
12
21
  scannedPath: string;
13
22
  count: number;
14
23
  }
15
24
  /**
16
- * List all dossiers in a directory
25
+ * List all dossiers in a directory via CLI
17
26
  */
18
- export declare function listDossiers(input: ListDossiersInput): ListDossiersOutput;
27
+ export declare function listDossiers(input: ListDossiersInput): Promise<ListDossiersOutput>;
19
28
  //# sourceMappingURL=listDossiers.d.ts.map