@ai-dossier/cli 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -12,6 +12,7 @@ const checksum_1 = require("./commands/checksum");
12
12
  const commands_1 = require("./commands/commands");
13
13
  const config_cmd_1 = require("./commands/config-cmd");
14
14
  const create_1 = require("./commands/create");
15
+ const doctor_1 = require("./commands/doctor");
15
16
  const export_1 = require("./commands/export");
16
17
  const format_1 = require("./commands/format");
17
18
  const from_file_1 = require("./commands/from-file");
@@ -89,6 +90,7 @@ Agent-friendly: Run \`ai-dossier --agent\` for machine-readable capabilities.`);
89
90
  (0, config_cmd_1.registerConfigCommand)(commander_1.program);
90
91
  (0, cache_1.registerCacheCommand)(commander_1.program);
91
92
  (0, history_1.registerHistoryCommand)(commander_1.program);
93
+ (0, doctor_1.registerDoctorCommand)(commander_1.program);
92
94
  // Hidden
93
95
  (0, prompt_hook_1.registerPromptHookCommand)(commander_1.program);
94
96
  (0, reset_hooks_1.registerResetHooksCommand)(commander_1.program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,yCAAoC;AAEpC,eAAe;AACf,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,4CAAwD;AACxD,kDAA8D;AAC9D,kDAA8D;AAC9D,sDAA8D;AAC9D,8CAA0D;AAC1D,8CAA0D;AAC1D,8CAA0D;AAC1D,8CAA0D;AAC1D,oDAA+D;AAC/D,wCAAoD;AACpD,gDAA4D;AAC5D,0CAAsD;AACtD,0CAAsD;AACtD,4DAAuE;AACvE,0CAAsD;AACtD,0CAAsD;AACtD,0CAAsD;AACtD,4CAAwD;AACxD,8CAA0D;AAC1D,wDAAmE;AACnE,gDAA4D;AAC5D,0CAAsD;AACtD,8CAA0D;AAC1D,wDAAmE;AACnE,wCAAoD;AACpD,8CAA0D;AAC1D,0CAAsD;AACtD,0DAAqE;AACrE,kDAA8D;AAC9D,8CAA0D;AAC1D,8CAA0D;AAC1D,iCAA2C;AAE3C,gBAAgB;AAChB,mBAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,qJAAqJ,CACtJ;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,SAAS,EAAE,iEAAiE,CAAC;KACpF,aAAa,CAAC,EAAE,UAAU,EAAE,wBAAiB,EAAE,CAAC;KAChD,WAAW,CACV,OAAO,EACP;;;;;;;;;8EAS0E,CAC3E,CAAC;AAEJ,8CAA8C;AAE9C,kBAAkB;AAClB,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,mCAAuB,EAAC,mBAAO,CAAC,CAAC;AAEjC,eAAe;AACf,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,wBAAkB,EAAC,mBAAO,CAAC,CAAC;AAC5B,IAAA,kCAAuB,EAAC,mBAAO,CAAC,CAAC;AACjC,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAE/B,WAAW;AACX,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,wBAAkB,EAAC,mBAAO,CAAC,CAAC;AAC5B,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,gCAAsB,EAAC,mBAAO,CAAC,CAAC;AAChC,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAE/B,SAAS;AACT,IAAA,2CAA2B,EAAC,mBAAO,CAAC,CAAC;AACrC,IAAA,yCAA0B,EAAC,mBAAO,CAAC,CAAC;AAEpC,WAAW;AACX,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,kCAAuB,EAAC,mBAAO,CAAC,CAAC;AACjC,IAAA,0BAAmB,EAAC,mBAAO,CAAC,CAAC;AAE7B,gBAAgB;AAChB,IAAA,4BAAoB,EAAC,mBAAO,CAAC,CAAC;AAC9B,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,kCAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,4BAAoB,EAAC,mBAAO,CAAC,CAAC;AAC9B,IAAA,gCAAsB,EAAC,mBAAO,CAAC,CAAC;AAChC,IAAA,8BAAqB,EAAC,mBAAO,CAAC,CAAC;AAE/B,SAAS;AACT,IAAA,uCAAyB,EAAC,mBAAO,CAAC,CAAC;AACnC,IAAA,uCAAyB,EAAC,mBAAO,CAAC,CAAC;AACnC,IAAA,kCAAuB,EAAC,mBAAO,CAAC,CAAC;AAEjC,4CAA4C;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,KAAK;QACrB,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,iBAAiB,EAAE,qBAAqB;QACxC,YAAY,EAAE;YACZ,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,IAAI;SACrB;QACD,QAAQ,EAAE;YACR,WAAW,EACT,mIAAmI;YACrI,QAAQ,EAAE;gBACR,SAAS,EAAE,qDAAqD;gBAChE,eAAe,EAAE,4CAA4C;gBAC7D,WAAW,EAAE,iDAAiD;aAC/D;YACD,QAAQ,EAAE;gBACR,sBAAsB;gBACtB,wBAAwB;gBACxB,uBAAuB;gBACvB,uBAAuB;aACxB;YACD,cAAc,EAAE,iBAAiB;SAClC;QACD,WAAW,EAAE;YACX,0EAA0E;YAC1E,4DAA4D;YAC5D,wDAAwD;YACxD,wEAAwE;YACxE,0EAA0E;YAC1E,6FAA6F;SAC9F;KACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,oBAAoB;AACpB,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,mBAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `ai-dossier doctor` — diagnostic command that checks the user's setup.
3
+ *
4
+ * Reports pass/fail/warning for:
5
+ * - Node.js version (>=20 required)
6
+ * - Package installation (@ai-dossier/cli, core, mcp-server)
7
+ * - MCP configuration (~/.claude/mcp.json has dossier entry)
8
+ * - Dossier files in the current project (*.ds.md)
9
+ * - Claude Code CLI availability
10
+ */
11
+ import type { Command } from 'commander';
12
+ export interface CheckResult {
13
+ name: string;
14
+ status: 'pass' | 'fail' | 'warn';
15
+ message: string;
16
+ detail?: string;
17
+ }
18
+ export declare function checkNodeVersion(): CheckResult;
19
+ export declare function checkPackageInstalled(packageName: string): CheckResult;
20
+ export declare function checkMcpConfig(): CheckResult;
21
+ export declare function checkDossierFiles(cwd: string): CheckResult;
22
+ export declare function checkClaudeCli(): CheckResult;
23
+ export declare function runAllChecks(cwd: string): CheckResult[];
24
+ export declare function formatResults(results: CheckResult[]): string;
25
+ export declare function registerDoctorCommand(program: Command): void;
26
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,gBAAgB,IAAI,WAAW,CAe9C;AAsCD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAgBtE;AAED,wBAAgB,cAAc,IAAI,WAAW,CAuC5C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAgB1D;AAyBD,wBAAgB,cAAc,IAAI,WAAW,CAgB5C;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAUvD;AAwBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CA6B5D;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB5D"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ /**
3
+ * `ai-dossier doctor` — diagnostic command that checks the user's setup.
4
+ *
5
+ * Reports pass/fail/warning for:
6
+ * - Node.js version (>=20 required)
7
+ * - Package installation (@ai-dossier/cli, core, mcp-server)
8
+ * - MCP configuration (~/.claude/mcp.json has dossier entry)
9
+ * - Dossier files in the current project (*.ds.md)
10
+ * - Claude Code CLI availability
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.checkNodeVersion = checkNodeVersion;
17
+ exports.checkPackageInstalled = checkPackageInstalled;
18
+ exports.checkMcpConfig = checkMcpConfig;
19
+ exports.checkDossierFiles = checkDossierFiles;
20
+ exports.checkClaudeCli = checkClaudeCli;
21
+ exports.runAllChecks = runAllChecks;
22
+ exports.formatResults = formatResults;
23
+ exports.registerDoctorCommand = registerDoctorCommand;
24
+ const node_child_process_1 = require("node:child_process");
25
+ const node_fs_1 = __importDefault(require("node:fs"));
26
+ const node_path_1 = __importDefault(require("node:path"));
27
+ // ── Individual checks ────────────────────────────────────────────────────────
28
+ function checkNodeVersion() {
29
+ const [major] = process.versions.node.split('.').map(Number);
30
+ if (major >= 20) {
31
+ return {
32
+ name: 'Node.js version',
33
+ status: 'pass',
34
+ message: `v${process.versions.node} (>=20 required)`,
35
+ };
36
+ }
37
+ return {
38
+ name: 'Node.js version',
39
+ status: 'fail',
40
+ message: `v${process.versions.node} — Node.js >=20 is required`,
41
+ detail: 'Upgrade Node.js: https://nodejs.org/',
42
+ };
43
+ }
44
+ /**
45
+ * Check whether an npm package is resolvable from the CLI's own node_modules.
46
+ */
47
+ function isPackageInstalled(packageName) {
48
+ try {
49
+ require.resolve(packageName);
50
+ return true;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ /**
57
+ * Try to read a package's version from its package.json.
58
+ */
59
+ function getPackageVersion(packageName) {
60
+ try {
61
+ const entryPath = require.resolve(packageName);
62
+ // Walk up to find the package.json
63
+ let dir = node_path_1.default.dirname(entryPath);
64
+ for (let i = 0; i < 10; i++) {
65
+ const pkgFile = node_path_1.default.join(dir, 'package.json');
66
+ if (node_fs_1.default.existsSync(pkgFile)) {
67
+ const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgFile, 'utf8'));
68
+ if (pkg.name === packageName) {
69
+ return pkg.version ?? null;
70
+ }
71
+ }
72
+ dir = node_path_1.default.dirname(dir);
73
+ }
74
+ }
75
+ catch {
76
+ // not installed
77
+ }
78
+ return null;
79
+ }
80
+ function checkPackageInstalled(packageName) {
81
+ const installed = isPackageInstalled(packageName);
82
+ const version = installed ? getPackageVersion(packageName) : null;
83
+ if (installed) {
84
+ return {
85
+ name: packageName,
86
+ status: 'pass',
87
+ message: version ? `v${version} installed` : 'installed',
88
+ };
89
+ }
90
+ return {
91
+ name: packageName,
92
+ status: 'fail',
93
+ message: 'not installed',
94
+ detail: `Install with: npm install -g ${packageName}`,
95
+ };
96
+ }
97
+ function checkMcpConfig() {
98
+ const mcpPath = node_path_1.default.join(process.env.HOME || process.env.USERPROFILE || '~', '.claude', 'mcp.json');
99
+ if (!node_fs_1.default.existsSync(mcpPath)) {
100
+ return {
101
+ name: 'MCP configuration',
102
+ status: 'warn',
103
+ message: `${mcpPath} not found`,
104
+ detail: 'Run: ai-dossier init',
105
+ };
106
+ }
107
+ try {
108
+ const config = JSON.parse(node_fs_1.default.readFileSync(mcpPath, 'utf8'));
109
+ if (config.mcpServers?.dossier) {
110
+ return {
111
+ name: 'MCP configuration',
112
+ status: 'pass',
113
+ message: 'dossier server configured in mcp.json',
114
+ };
115
+ }
116
+ return {
117
+ name: 'MCP configuration',
118
+ status: 'warn',
119
+ message: 'mcp.json exists but dossier server not configured',
120
+ detail: 'Run: ai-dossier init',
121
+ };
122
+ }
123
+ catch {
124
+ return {
125
+ name: 'MCP configuration',
126
+ status: 'warn',
127
+ message: 'mcp.json exists but could not be parsed',
128
+ detail: 'Check file for JSON syntax errors',
129
+ };
130
+ }
131
+ }
132
+ function checkDossierFiles(cwd) {
133
+ const files = findDsMdFiles(cwd);
134
+ if (files.length > 0) {
135
+ const noun = files.length === 1 ? 'dossier file' : 'dossier files';
136
+ return {
137
+ name: 'Dossier files',
138
+ status: 'pass',
139
+ message: `${files.length} ${noun} found in current project`,
140
+ };
141
+ }
142
+ return {
143
+ name: 'Dossier files',
144
+ status: 'warn',
145
+ message: 'no .ds.md files found in current directory',
146
+ detail: 'Create one with: ai-dossier create my-task',
147
+ };
148
+ }
149
+ /**
150
+ * Non-recursive search for .ds.md files in a directory (skips node_modules and dot-dirs).
151
+ */
152
+ function findDsMdFiles(dir, maxDepth = 3, currentDepth = 0) {
153
+ if (currentDepth > maxDepth)
154
+ return [];
155
+ const results = [];
156
+ try {
157
+ const entries = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
158
+ for (const entry of entries) {
159
+ if (entry.name === 'node_modules' || entry.name.startsWith('.'))
160
+ continue;
161
+ const fullPath = node_path_1.default.join(dir, entry.name);
162
+ if (entry.isFile() && entry.name.endsWith('.ds.md')) {
163
+ results.push(fullPath);
164
+ }
165
+ else if (entry.isDirectory() && currentDepth < maxDepth) {
166
+ results.push(...findDsMdFiles(fullPath, maxDepth, currentDepth + 1));
167
+ }
168
+ }
169
+ }
170
+ catch {
171
+ // permission error or similar — skip silently
172
+ }
173
+ return results;
174
+ }
175
+ function checkClaudeCli() {
176
+ try {
177
+ (0, node_child_process_1.execFileSync)('which', ['claude'], { stdio: 'pipe' });
178
+ return {
179
+ name: 'Claude Code CLI',
180
+ status: 'pass',
181
+ message: 'claude command found on PATH',
182
+ };
183
+ }
184
+ catch {
185
+ return {
186
+ name: 'Claude Code CLI',
187
+ status: 'warn',
188
+ message: 'claude command not found on PATH',
189
+ detail: 'Install Claude Code: https://docs.anthropic.com/en/docs/claude-code',
190
+ };
191
+ }
192
+ }
193
+ // ── Main runner ──────────────────────────────────────────────────────────────
194
+ function runAllChecks(cwd) {
195
+ return [
196
+ checkNodeVersion(),
197
+ checkPackageInstalled('@ai-dossier/cli'),
198
+ checkPackageInstalled('@ai-dossier/core'),
199
+ checkPackageInstalled('@ai-dossier/mcp-server'),
200
+ checkMcpConfig(),
201
+ checkDossierFiles(cwd),
202
+ checkClaudeCli(),
203
+ ];
204
+ }
205
+ function statusIcon(status) {
206
+ switch (status) {
207
+ case 'pass':
208
+ return '\u2713'; // checkmark
209
+ case 'fail':
210
+ return '\u2717'; // cross
211
+ case 'warn':
212
+ return '!'; // exclamation
213
+ }
214
+ }
215
+ function statusLabel(status) {
216
+ switch (status) {
217
+ case 'pass':
218
+ return 'pass';
219
+ case 'fail':
220
+ return 'FAIL';
221
+ case 'warn':
222
+ return 'warn';
223
+ }
224
+ }
225
+ function formatResults(results) {
226
+ const lines = [];
227
+ lines.push('');
228
+ lines.push('ai-dossier doctor');
229
+ lines.push('');
230
+ for (const r of results) {
231
+ lines.push(` ${statusIcon(r.status)} [${statusLabel(r.status)}] ${r.name}: ${r.message}`);
232
+ if (r.detail) {
233
+ lines.push(` ${r.detail}`);
234
+ }
235
+ }
236
+ const passes = results.filter((r) => r.status === 'pass').length;
237
+ const fails = results.filter((r) => r.status === 'fail').length;
238
+ const warns = results.filter((r) => r.status === 'warn').length;
239
+ lines.push('');
240
+ lines.push(`${passes} passed, ${warns} warnings, ${fails} failed`);
241
+ if (fails > 0) {
242
+ lines.push('');
243
+ lines.push('Fix the failures above to ensure ai-dossier works correctly.');
244
+ }
245
+ lines.push('');
246
+ return lines.join('\n');
247
+ }
248
+ // ── Command registration ────────────────────────────────────────────────────
249
+ function registerDoctorCommand(program) {
250
+ program
251
+ .command('doctor')
252
+ .description('Check your environment for common ai-dossier setup issues')
253
+ .option('--json', 'Output results as JSON')
254
+ .action((options) => {
255
+ const results = runAllChecks(process.cwd());
256
+ if (options.json) {
257
+ console.log(JSON.stringify(results, null, 2));
258
+ }
259
+ else {
260
+ console.log(formatResults(results));
261
+ }
262
+ const hasFails = results.some((r) => r.status === 'fail');
263
+ if (hasFails) {
264
+ process.exit(1);
265
+ }
266
+ });
267
+ }
268
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF1D"}
@@ -44,8 +44,9 @@ const hooks = __importStar(require("../hooks"));
44
44
  function registerInitCommand(program) {
45
45
  program
46
46
  .command('init')
47
- .description('Initialize ~/.dossier/ directory and install Claude Code hook')
47
+ .description('Initialize ~/.dossier/ directory, install Claude Code hook and MCP server')
48
48
  .option('--skip-hooks', 'Skip installing the Claude Code hook')
49
+ .option('--skip-mcp', 'Skip configuring the MCP server for Claude Code')
49
50
  .action((options) => {
50
51
  const dossierDir = config.CONFIG_DIR;
51
52
  const cacheDir = node_path_1.default.join(dossierDir, 'cache');
@@ -92,7 +93,34 @@ function registerInitCommand(program) {
92
93
  console.log(' ✓ Claude Code discovery hook already installed');
93
94
  }
94
95
  }
96
+ if (options.skipMcp) {
97
+ console.log(' - Skipped MCP server configuration (--skip-mcp)');
98
+ }
99
+ else {
100
+ const result = hooks.installMcpServer();
101
+ if (result === 'installed') {
102
+ console.log(' ✓ Configured MCP server for Claude Code');
103
+ }
104
+ else if (result === 'already') {
105
+ console.log(' ✓ MCP server already configured');
106
+ }
107
+ else {
108
+ console.log(' ⚠ Could not configure MCP server automatically');
109
+ console.log(' Run manually: claude mcp add dossier -- npx @ai-dossier/mcp-server');
110
+ }
111
+ }
95
112
  console.log('\n✅ Dossier initialized successfully\n');
113
+ // What's next? summary
114
+ console.log("📋 What's next?\n");
115
+ console.log(' Try these commands:');
116
+ console.log(' $ ai-dossier search deploy Search for dossiers');
117
+ console.log(' $ ai-dossier list List local dossiers');
118
+ console.log(' $ ai-dossier create my-task Create a new dossier');
119
+ console.log('');
120
+ if (!options.skipMcp) {
121
+ console.log(' Claude Code can now discover and run dossiers automatically.');
122
+ console.log(' Start a Claude Code session and ask it to list available dossiers.\n');
123
+ }
96
124
  });
97
125
  }
98
126
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,kDAsDC;AA5DD,sDAAyB;AACzB,0DAA6B;AAE7B,kDAAoC;AACpC,gDAAkC;AAElC,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;SAC9D,MAAM,CAAC,CAAC,OAAgC,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAElE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,IAAI,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,iBAAiB,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,iBAAiB,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,iBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,iBAAiB,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,iBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,eAAe,iBAAiB,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,iBAAE,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D3D"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E3D"}
@@ -15,7 +15,12 @@ For non-interactive environments (CI/CD), use environment variables instead:
15
15
  DOSSIER_REGISTRY_URL Registry URL (creates virtual "env" registry)
16
16
  `)
17
17
  .action(async (options) => {
18
- if (!process.stdin.isTTY) {
18
+ // Non-interactive sessions can't complete the OAuth copy/paste flow.
19
+ // Surface the env-var alternative early — before opening a browser or
20
+ // printing the auth URL — to keep CI logs clean. Smoke tests bypass
21
+ // this with DOSSIER_LOGIN_ALLOW_NONINTERACTIVE=1 to exercise the full
22
+ // login path with piped stdin.
23
+ if (!process.stdin.isTTY && !process.env.DOSSIER_LOGIN_ALLOW_NONINTERACTIVE) {
19
24
  console.error('\n❌ Non-interactive session detected. Cannot run OAuth flow.');
20
25
  console.error(' Set the DOSSIER_REGISTRY_TOKEN environment variable instead:\n');
21
26
  console.error(' export DOSSIER_REGISTRY_TOKEN=<your-token>\n');
@@ -54,6 +59,15 @@ For non-interactive environments (CI/CD), use environment variables instead:
54
59
  console.error(`\n❌ Login failed: ${err.message}\n`);
55
60
  process.exit(1);
56
61
  }
62
+ // Force exit on the success path. stdin is already unref'd by prompt()
63
+ // (PR #386), but when stdio is fully piped (CI smoke tests, scripted
64
+ // callers) stdout/stderr remain referenced and keep the event loop
65
+ // alive. Unref'ing them is unreliable because Node may re-ref on
66
+ // pending kernel writes; an explicit exit is the most robust signal
67
+ // that this command has completed all its synchronous work.
68
+ // Placed outside the try block so the catch can't intercept it —
69
+ // anything async added on the success path MUST be awaited inside try.
70
+ process.exit(0);
57
71
  });
58
72
  }
59
73
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;AAKA,oDA8DC;AAlED,sCAAqE;AACrE,gDAAiD;AACjD,oCAAwC;AAExC,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,kGAAkG,CACnG;SACA,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;SAC5D,WAAW,CACV,OAAO,EACP;;;;CAIL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,OAA8B,EAAE,EAAE;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAA,0BAAiB,GAAE,CAAC;YAC1C,IAAI,YAAoB,CAAC;YACzB,IAAI,WAAmB,CAAC;YAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAA,8BAAqB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpD,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;gBACxB,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACrC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAY,EAAC,WAAW,CAAC,CAAC;YAE/C,IAAA,6BAAe,EACb;gBACE,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,EACD,YAAY,CACb,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,qBAAsB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;AAKA,oDA4EC;AAhFD,sCAAqE;AACrE,gDAAiD;AACjD,oCAAwC;AAExC,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,kGAAkG,CACnG;SACA,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;SAC5D,WAAW,CACV,OAAO,EACP;;;;CAIL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,OAA8B,EAAE,EAAE;QAC/C,qEAAqE;QACrE,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAA,0BAAiB,GAAE,CAAC;YAC1C,IAAI,YAAoB,CAAC;YACzB,IAAI,WAAmB,CAAC;YAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAA,8BAAqB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpD,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;gBACxB,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACrC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAY,EAAC,WAAW,CAAC,CAAC;YAE/C,IAAA,6BAAe,EACb;gBACE,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,EACD,YAAY,CACb,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,qBAAsB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,uEAAuE;QACvE,qEAAqE;QACrE,mEAAmE;QACnE,iEAAiE;QACjE,oEAAoE;QACpE,4DAA4D;QAC5D,iEAAiE;QACjE,uEAAuE;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/help.js CHANGED
@@ -14,7 +14,7 @@ const CATEGORIES = [
14
14
  },
15
15
  { name: 'Skills', commands: ['install-skill', 'skill-export'] },
16
16
  { name: 'Security', commands: ['sign', 'checksum', 'keys'] },
17
- { name: 'Auth & Config', commands: ['login', 'logout', 'whoami', 'config', 'cache'] },
17
+ { name: 'Auth & Config', commands: ['login', 'logout', 'whoami', 'config', 'cache', 'doctor'] },
18
18
  ];
19
19
  function formatHelpGrouped(cmd, helper) {
20
20
  const termWidth = helper.padWidth(cmd, helper);
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
package/dist/hooks.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Claude Code hook integration for Dossier CLI.
3
- * Manages the UserPromptSubmit hook that triggers automatic dossier discovery.
3
+ * Manages the UserPromptSubmit hook that triggers automatic dossier discovery,
4
+ * and MCP server configuration for Claude Code.
4
5
  */
5
6
  export interface DossierEntry {
6
7
  name: string;
@@ -34,5 +35,32 @@ declare function getCachedDossierList(): DossierEntry[] | null;
34
35
  * Write dossier list to cache file.
35
36
  */
36
37
  declare function saveDossierListCache(dossiers: DossierEntry[]): void;
37
- export { DOSSIER_HOOK_ID, DOSSIER_HOOK_COMMAND, DOSSIER_HOOK_PATTERN, CLAUDE_SETTINGS_FILE, DOSSIER_LIST_CACHE_FILE, CACHE_TTL_MS, installClaudeHook, removeClaudeHook, matchesHookPattern, getCachedDossierList, saveDossierListCache, };
38
+ declare const CLAUDE_MCP_CONFIG_FILE: string;
39
+ declare const MCP_SERVER_NAME = "dossier";
40
+ declare const MCP_SERVER_PACKAGE = "@ai-dossier/mcp-server";
41
+ /**
42
+ * Check whether the `claude` CLI is available on PATH.
43
+ */
44
+ declare function isClaudeCliAvailable(): boolean;
45
+ /**
46
+ * Check if the dossier MCP server is already configured.
47
+ * Checks both `claude mcp list` output (if CLI available) and the JSON config file.
48
+ */
49
+ declare function isMcpServerConfigured(): boolean;
50
+ /**
51
+ * Configure the dossier MCP server for Claude Code.
52
+ *
53
+ * Strategy:
54
+ * 1. If `claude` CLI is on PATH, use `claude mcp add` (canonical approach)
55
+ * 2. Otherwise, fall back to writing ~/.claude/mcp.json directly
56
+ *
57
+ * Returns 'installed' | 'already' | 'error'
58
+ */
59
+ declare function installMcpServer(): 'installed' | 'already' | 'error';
60
+ /**
61
+ * Write the MCP server config directly to ~/.claude/mcp.json.
62
+ * Merges safely with existing config.
63
+ */
64
+ declare function installMcpServerViaJson(): 'installed' | 'already';
65
+ export { DOSSIER_HOOK_ID, DOSSIER_HOOK_COMMAND, DOSSIER_HOOK_PATTERN, CLAUDE_SETTINGS_FILE, CLAUDE_MCP_CONFIG_FILE, MCP_SERVER_NAME, MCP_SERVER_PACKAGE, DOSSIER_LIST_CACHE_FILE, CACHE_TTL_MS, installClaudeHook, removeClaudeHook, matchesHookPattern, getCachedDossierList, saveDossierListCache, isClaudeCliAvailable, isMcpServerConfigured, installMcpServer, installMcpServerViaJson, };
38
66
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,QAAA,MAAM,eAAe,2BAA2B,CAAC;AACjD,QAAA,MAAM,oBAAoB,wBAAwB,CAAC;AAEnD,QAAA,MAAM,oBAAoB,QAC0H,CAAC;AAErJ,QAAA,MAAM,oBAAoB,QAAsD,CAAC;AACjF,QAAA,MAAM,uBAAuB,QAAmD,CAAC;AACjF,QAAA,MAAM,YAAY,SAAU,CAAC;AAE7B;;;GAGG;AACH,iBAAS,iBAAiB,IAAI,OAAO,CAoDpC;AAED;;;GAGG;AACH,iBAAS,gBAAgB,IAAI,OAAO,CAkCnC;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAOD;;GAEG;AACH,iBAAS,oBAAoB,IAAI,YAAY,EAAE,GAAG,IAAI,CAerD;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAO5D;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,QAAA,MAAM,eAAe,2BAA2B,CAAC;AACjD,QAAA,MAAM,oBAAoB,wBAAwB,CAAC;AAEnD,QAAA,MAAM,oBAAoB,QAC0H,CAAC;AAErJ,QAAA,MAAM,oBAAoB,QAAsD,CAAC;AACjF,QAAA,MAAM,uBAAuB,QAAmD,CAAC;AACjF,QAAA,MAAM,YAAY,SAAU,CAAC;AAE7B;;;GAGG;AACH,iBAAS,iBAAiB,IAAI,OAAO,CAoDpC;AAED;;;GAGG;AACH,iBAAS,gBAAgB,IAAI,OAAO,CAkCnC;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAOD;;GAEG;AACH,iBAAS,oBAAoB,IAAI,YAAY,EAAE,GAAG,IAAI,CAerD;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAO5D;AAID,QAAA,MAAM,sBAAsB,QAAiD,CAAC;AAC9E,QAAA,MAAM,eAAe,YAAY,CAAC;AAClC,QAAA,MAAM,kBAAkB,2BAA2B,CAAC;AAapD;;GAEG;AACH,iBAAS,oBAAoB,IAAI,OAAO,CAOvC;AAED;;;GAGG;AACH,iBAAS,qBAAqB,IAAI,OAAO,CAcxC;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,IAAI,WAAW,GAAG,SAAS,GAAG,OAAO,CAyB7D;AAED;;;GAGG;AACH,iBAAS,uBAAuB,IAAI,WAAW,GAAG,SAAS,CA+B1D;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,GACxB,CAAC"}
package/dist/hooks.js CHANGED
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Claude Code hook integration for Dossier CLI.
4
- * Manages the UserPromptSubmit hook that triggers automatic dossier discovery.
4
+ * Manages the UserPromptSubmit hook that triggers automatic dossier discovery,
5
+ * and MCP server configuration for Claude Code.
5
6
  */
6
7
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
9
  };
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CACHE_TTL_MS = exports.DOSSIER_LIST_CACHE_FILE = exports.CLAUDE_SETTINGS_FILE = exports.DOSSIER_HOOK_PATTERN = exports.DOSSIER_HOOK_COMMAND = exports.DOSSIER_HOOK_ID = void 0;
11
+ exports.CACHE_TTL_MS = exports.DOSSIER_LIST_CACHE_FILE = exports.MCP_SERVER_PACKAGE = exports.MCP_SERVER_NAME = exports.CLAUDE_MCP_CONFIG_FILE = exports.CLAUDE_SETTINGS_FILE = exports.DOSSIER_HOOK_PATTERN = exports.DOSSIER_HOOK_COMMAND = exports.DOSSIER_HOOK_ID = void 0;
11
12
  exports.installClaudeHook = installClaudeHook;
12
13
  exports.removeClaudeHook = removeClaudeHook;
13
14
  exports.matchesHookPattern = matchesHookPattern;
14
15
  exports.getCachedDossierList = getCachedDossierList;
15
16
  exports.saveDossierListCache = saveDossierListCache;
17
+ exports.isClaudeCliAvailable = isClaudeCliAvailable;
18
+ exports.isMcpServerConfigured = isMcpServerConfigured;
19
+ exports.installMcpServer = installMcpServer;
20
+ exports.installMcpServerViaJson = installMcpServerViaJson;
21
+ const node_child_process_1 = require("node:child_process");
16
22
  const node_fs_1 = __importDefault(require("node:fs"));
17
23
  const node_os_1 = __importDefault(require("node:os"));
18
24
  const node_path_1 = __importDefault(require("node:path"));
@@ -152,4 +158,104 @@ function saveDossierListCache(dossiers) {
152
158
  // Best-effort caching — ignore write errors
153
159
  }
154
160
  }
161
+ // ─── MCP Server Configuration ───────────────────────────────────────────────
162
+ const CLAUDE_MCP_CONFIG_FILE = node_path_1.default.join(node_os_1.default.homedir(), '.claude', 'mcp.json');
163
+ exports.CLAUDE_MCP_CONFIG_FILE = CLAUDE_MCP_CONFIG_FILE;
164
+ const MCP_SERVER_NAME = 'dossier';
165
+ exports.MCP_SERVER_NAME = MCP_SERVER_NAME;
166
+ const MCP_SERVER_PACKAGE = '@ai-dossier/mcp-server';
167
+ exports.MCP_SERVER_PACKAGE = MCP_SERVER_PACKAGE;
168
+ /**
169
+ * Check whether the `claude` CLI is available on PATH.
170
+ */
171
+ function isClaudeCliAvailable() {
172
+ try {
173
+ (0, node_child_process_1.execFileSync)('which', ['claude'], { stdio: 'pipe' });
174
+ return true;
175
+ }
176
+ catch {
177
+ return false;
178
+ }
179
+ }
180
+ /**
181
+ * Check if the dossier MCP server is already configured.
182
+ * Checks both `claude mcp list` output (if CLI available) and the JSON config file.
183
+ */
184
+ function isMcpServerConfigured() {
185
+ // Check JSON config file
186
+ if (node_fs_1.default.existsSync(CLAUDE_MCP_CONFIG_FILE)) {
187
+ try {
188
+ const config = JSON.parse(node_fs_1.default.readFileSync(CLAUDE_MCP_CONFIG_FILE, 'utf8'));
189
+ if (config.mcpServers?.[MCP_SERVER_NAME]) {
190
+ return true;
191
+ }
192
+ }
193
+ catch {
194
+ // Corrupted file — continue to check other methods
195
+ }
196
+ }
197
+ return false;
198
+ }
199
+ /**
200
+ * Configure the dossier MCP server for Claude Code.
201
+ *
202
+ * Strategy:
203
+ * 1. If `claude` CLI is on PATH, use `claude mcp add` (canonical approach)
204
+ * 2. Otherwise, fall back to writing ~/.claude/mcp.json directly
205
+ *
206
+ * Returns 'installed' | 'already' | 'error'
207
+ */
208
+ function installMcpServer() {
209
+ if (isMcpServerConfigured()) {
210
+ return 'already';
211
+ }
212
+ // Try claude CLI first
213
+ if (isClaudeCliAvailable()) {
214
+ try {
215
+ (0, node_child_process_1.execFileSync)('claude', ['mcp', 'add', MCP_SERVER_NAME, '--scope', 'user', '--', 'npx', MCP_SERVER_PACKAGE], { stdio: 'pipe' });
216
+ return 'installed';
217
+ }
218
+ catch {
219
+ // CLI approach failed — fall back to JSON config
220
+ }
221
+ }
222
+ // Fall back to writing JSON config
223
+ try {
224
+ return installMcpServerViaJson();
225
+ }
226
+ catch {
227
+ return 'error';
228
+ }
229
+ }
230
+ /**
231
+ * Write the MCP server config directly to ~/.claude/mcp.json.
232
+ * Merges safely with existing config.
233
+ */
234
+ function installMcpServerViaJson() {
235
+ let config = {};
236
+ const claudeDir = node_path_1.default.dirname(CLAUDE_MCP_CONFIG_FILE);
237
+ if (!node_fs_1.default.existsSync(claudeDir)) {
238
+ node_fs_1.default.mkdirSync(claudeDir, { recursive: true, mode: 0o700 });
239
+ }
240
+ if (node_fs_1.default.existsSync(CLAUDE_MCP_CONFIG_FILE)) {
241
+ try {
242
+ config = JSON.parse(node_fs_1.default.readFileSync(CLAUDE_MCP_CONFIG_FILE, 'utf8'));
243
+ }
244
+ catch {
245
+ config = {};
246
+ }
247
+ }
248
+ if (!config.mcpServers) {
249
+ config.mcpServers = {};
250
+ }
251
+ if (config.mcpServers[MCP_SERVER_NAME]) {
252
+ return 'already';
253
+ }
254
+ config.mcpServers[MCP_SERVER_NAME] = {
255
+ command: 'npx',
256
+ args: [MCP_SERVER_PACKAGE],
257
+ };
258
+ node_fs_1.default.writeFileSync(CLAUDE_MCP_CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8');
259
+ return 'installed';
260
+ }
155
261
  //# sourceMappingURL=hooks.js.map
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
package/dist/oauth.d.ts CHANGED
@@ -13,6 +13,17 @@ export interface OAuthResult {
13
13
  declare class OAuthError extends Error {
14
14
  constructor(message: string);
15
15
  }
16
+ /**
17
+ * Exact prompt string the user sees when login is awaiting the OAuth code.
18
+ * Exported so smoke tests can wait for it on stderr without duplicating the
19
+ * literal — keeps the test from silently breaking if the copy is reworded.
20
+ */
21
+ export declare const LOGIN_CODE_PROMPT = "Enter the code from your browser: ";
22
+ /**
23
+ * Prompt the user for input via the given readable stream (default: process.stdin).
24
+ * Exported for tests; production callers omit `input` and get process.stdin.
25
+ */
26
+ export declare function prompt(question: string, input?: NodeJS.ReadableStream): Promise<string>;
16
27
  /**
17
28
  * Run the OAuth flow using copy/paste method.
18
29
  * Opens a browser for GitHub authentication. The registry displays a code
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AASD,cAAM,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAI5B;AAuDD;;;;GAIG;AACH,iBAAe,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+CrE;AAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AASD,cAAM,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,uCAAuC,CAAC;AAyCtE;;;GAGG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAM,CAAC,cAA8B,GAC3C,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;;GAIG;AACH,iBAAe,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoDrE;AAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
package/dist/oauth.js CHANGED
@@ -8,7 +8,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
9
  };
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.OAuthError = void 0;
11
+ exports.OAuthError = exports.LOGIN_CODE_PROMPT = void 0;
12
+ exports.prompt = prompt;
12
13
  exports.runOAuthFlow = runOAuthFlow;
13
14
  const node_child_process_1 = require("node:child_process");
14
15
  const node_readline_1 = __importDefault(require("node:readline"));
@@ -19,6 +20,12 @@ class OAuthError extends Error {
19
20
  }
20
21
  }
21
22
  exports.OAuthError = OAuthError;
23
+ /**
24
+ * Exact prompt string the user sees when login is awaiting the OAuth code.
25
+ * Exported so smoke tests can wait for it on stderr without duplicating the
26
+ * literal — keeps the test from silently breaking if the copy is reworded.
27
+ */
28
+ exports.LOGIN_CODE_PROMPT = 'Enter the code from your browser: ';
22
29
  /**
23
30
  * Decode a base64url-encoded string, adding padding if needed.
24
31
  */
@@ -51,21 +58,30 @@ function openBrowser(url) {
51
58
  cmd = 'xdg-open';
52
59
  args = [url];
53
60
  }
54
- (0, node_child_process_1.execFile)(cmd, args, (_err) => {
61
+ const child = (0, node_child_process_1.execFile)(cmd, args, (_err) => {
55
62
  // Browser failed to open — URL is already printed for the user
56
63
  });
64
+ // Don't keep the parent alive while the browser process lingers.
65
+ child.unref();
57
66
  }
58
67
  /**
59
- * Prompt the user for input via stdin.
68
+ * Prompt the user for input via the given readable stream (default: process.stdin).
69
+ * Exported for tests; production callers omit `input` and get process.stdin.
60
70
  */
61
- function prompt(question) {
71
+ function prompt(question, input = process.stdin) {
62
72
  const rl = node_readline_1.default.createInterface({
63
- input: process.stdin,
73
+ input,
64
74
  output: process.stderr,
65
75
  });
66
76
  return new Promise((resolve) => {
67
77
  rl.question(question, (answer) => {
68
78
  rl.close();
79
+ // Without this, readline's reference on stdin keeps the event loop alive
80
+ // and the CLI hangs after a successful login instead of exiting.
81
+ // Only applies to process.stdin; other streams manage their own refs.
82
+ if (input === process.stdin) {
83
+ process.stdin.unref();
84
+ }
69
85
  resolve(answer);
70
86
  });
71
87
  });
@@ -80,8 +96,11 @@ async function runOAuthFlow(registryUrl) {
80
96
  console.log(`\n🔐 Opening browser for GitHub authentication...`);
81
97
  console.log(` If it doesn't open automatically, visit:\n ${authUrl}\n`);
82
98
  openBrowser(authUrl);
83
- const code = (await prompt('Enter the code from your browser: ')).trim();
99
+ const code = (await prompt(exports.LOGIN_CODE_PROMPT)).trim();
84
100
  if (!code) {
101
+ if (!process.stdin.isTTY) {
102
+ throw new OAuthError('No code provided. Non-interactive session detected — set DOSSIER_REGISTRY_TOKEN instead.');
103
+ }
85
104
  throw new OAuthError('No code provided');
86
105
  }
87
106
  // The code is a base64url-encoded JWT
package/dist/oauth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dossier/cli",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Command-line tool for creating, verifying, and executing dossiers",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {
@@ -15,7 +15,8 @@
15
15
  "build": "tsc",
16
16
  "test": "vitest run",
17
17
  "test:watch": "vitest",
18
- "test:coverage": "vitest run --coverage"
18
+ "test:coverage": "vitest run --coverage",
19
+ "test:smoke": "node test/smoke/login.smoke.mjs ./bin/ai-dossier"
19
20
  },
20
21
  "keywords": [
21
22
  "dossier",
@@ -45,13 +46,13 @@
45
46
  "registry": "https://registry.npmjs.org"
46
47
  },
47
48
  "dependencies": {
48
- "@ai-dossier/core": "^1.2.0",
49
+ "@ai-dossier/core": "^1.3.1",
49
50
  "commander": "^12.1.0"
50
51
  },
51
52
  "devDependencies": {
52
- "typescript": "^5.9.3",
53
53
  "@types/node": "^24.10.0",
54
- "vitest": "^4.0.9",
55
- "@vitest/coverage-v8": "^4.0.9"
54
+ "@vitest/coverage-v8": "^4.0.9",
55
+ "typescript": "^5.9.3",
56
+ "vitest": "^4.0.9"
56
57
  }
57
58
  }