@noesis-brain/mcp-server 2.0.1 → 2.1.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.
Files changed (45) hide show
  1. package/README.md +91 -3
  2. package/dist/agent/runner.d.ts +29 -0
  3. package/dist/agent/runner.d.ts.map +1 -0
  4. package/dist/agent/runner.js +306 -0
  5. package/dist/agent/runner.js.map +1 -0
  6. package/dist/api/NoesisClient.d.ts +119 -0
  7. package/dist/api/NoesisClient.d.ts.map +1 -1
  8. package/dist/api/NoesisClient.js +130 -6
  9. package/dist/api/NoesisClient.js.map +1 -1
  10. package/dist/cli/setup.d.ts.map +1 -1
  11. package/dist/cli/setup.js +409 -35
  12. package/dist/cli/setup.js.map +1 -1
  13. package/dist/index.js +31 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/resolve/noteRef.d.ts +101 -0
  16. package/dist/resolve/noteRef.d.ts.map +1 -0
  17. package/dist/resolve/noteRef.js +186 -0
  18. package/dist/resolve/noteRef.js.map +1 -0
  19. package/dist/resolve/rootsFormat.d.ts +12 -0
  20. package/dist/resolve/rootsFormat.d.ts.map +1 -0
  21. package/dist/resolve/rootsFormat.js +63 -0
  22. package/dist/resolve/rootsFormat.js.map +1 -0
  23. package/dist/tools/backlog.d.ts +4 -0
  24. package/dist/tools/backlog.d.ts.map +1 -0
  25. package/dist/tools/backlog.js +161 -0
  26. package/dist/tools/backlog.js.map +1 -0
  27. package/dist/tools/index.d.ts +92 -1
  28. package/dist/tools/index.d.ts.map +1 -1
  29. package/dist/tools/index.js +529 -207
  30. package/dist/tools/index.js.map +1 -1
  31. package/dist/tools/navis.d.ts.map +1 -1
  32. package/dist/tools/navis.js +4 -0
  33. package/dist/tools/navis.js.map +1 -1
  34. package/package.json +8 -3
  35. package/scripts/agent-e2e.mjs +69 -0
  36. package/scripts/noesis-capture-session-end.mjs +94 -0
  37. package/scripts/noesis-capture-watcher.mjs +953 -0
  38. package/skill-templates/noesis-capture.md +166 -0
  39. package/skill-templates/noesis-create-study-note.md +149 -0
  40. package/skill-templates/noesis-find-related.md +89 -0
  41. package/skill-templates/noesis-investigate.md +90 -0
  42. package/skill-templates/noesis-manage-news.md +80 -0
  43. package/skill-templates/noesis-skim-read.md +72 -0
  44. package/templates/claude-md-block.md +5 -1
  45. package/templates/claude-md-restructure-on-sync.md +10 -0
package/dist/cli/setup.js CHANGED
@@ -7,6 +7,7 @@
7
7
  import * as fs from 'fs';
8
8
  import * as os from 'os';
9
9
  import * as path from 'path';
10
+ import * as readline from 'node:readline/promises';
10
11
  import { fileURLToPath } from 'url';
11
12
  const __filename = fileURLToPath(import.meta.url);
12
13
  const __dirname = path.dirname(__filename);
@@ -18,60 +19,171 @@ const SCRIPTS_DIR = path.join(PACKAGE_ROOT, 'scripts');
18
19
  const CLAUDE_DIR = path.join(os.homedir(), '.claude');
19
20
  const CLAUDE_MD_PATH = path.join(CLAUDE_DIR, 'CLAUDE.md');
20
21
  const COMMANDS_DIR = path.join(CLAUDE_DIR, 'commands');
21
- const BLOCK_VERSION = 'v1';
22
- const BLOCK_START = `<!-- noesis-mcp-server:start ${BLOCK_VERSION} -->`;
23
- const BLOCK_END = `<!-- noesis-mcp-server:end -->`;
24
- // Loose start marker (any version) used to find existing blocks during upgrade.
25
- const BLOCK_START_RE = /<!-- noesis-mcp-server:start [^>]*-->/;
22
+ const SETTINGS_PATH = path.join(CLAUDE_DIR, 'settings.json');
23
+ // Copilot targets a per-repo instructions file, not a global profile — VS Code
24
+ // Copilot has no established global-instructions equivalent to ~/.claude/CLAUDE.md.
25
+ const COPILOT_INSTRUCTIONS_PATH = path.join(process.cwd(), '.github', 'copilot-instructions.md');
26
+ // Core conventions — always installed (unless --skills-only).
27
+ const CORE_BLOCK_VERSION = 'v1';
28
+ const CORE_BLOCK = {
29
+ templateFile: 'claude-md-block.md',
30
+ startMarker: `<!-- noesis-mcp-server:start ${CORE_BLOCK_VERSION} -->`,
31
+ endMarker: `<!-- noesis-mcp-server:end -->`,
32
+ startRe: /<!-- noesis-mcp-server:start [^>]*-->/,
33
+ };
34
+ // Optional "restructure notes on sync" rule — opt-in (off by default).
35
+ const RESTRUCTURE_BLOCK_VERSION = 'v1';
36
+ const RESTRUCTURE_BLOCK = {
37
+ templateFile: 'claude-md-restructure-on-sync.md',
38
+ startMarker: `<!-- noesis-mcp-server:restructure-on-sync:start ${RESTRUCTURE_BLOCK_VERSION} -->`,
39
+ endMarker: `<!-- noesis-mcp-server:restructure-on-sync:end -->`,
40
+ startRe: /<!-- noesis-mcp-server:restructure-on-sync:start [^>]*-->/,
41
+ };
26
42
  function parseArgs(argv) {
43
+ const clientArg = argv.find((a) => a.startsWith('--client='));
44
+ const client = clientArg ? clientArg.slice('--client='.length) : 'claude';
45
+ if (client !== 'claude' && client !== 'copilot') {
46
+ throw new Error(`Unknown --client "${client}" (expected "claude" or "copilot").`);
47
+ }
27
48
  return {
49
+ client,
28
50
  claudeMdOnly: argv.includes('--claude-md-only'),
29
51
  skillsOnly: argv.includes('--skills-only'),
30
52
  dryRun: argv.includes('--dry-run'),
53
+ withRestructure: argv.includes('--with-restructure-rule'),
54
+ noRestructure: argv.includes('--no-restructure-rule'),
55
+ withCapture: argv.includes('--with-capture'),
56
+ noCapture: argv.includes('--no-capture'),
31
57
  };
32
58
  }
33
- function installClaudeMd(dryRun) {
34
- const blockContent = fs.readFileSync(path.join(TEMPLATES_DIR, 'claude-md-block.md'), 'utf-8').trimEnd();
35
- const wrappedBlock = `${BLOCK_START}\n${blockContent}\n${BLOCK_END}`;
36
- if (!fs.existsSync(CLAUDE_DIR)) {
37
- if (!dryRun)
38
- fs.mkdirSync(CLAUDE_DIR, { recursive: true });
59
+ function readTargetFile(targetPath) {
60
+ return fs.existsSync(targetPath) ? fs.readFileSync(targetPath, 'utf-8') : null;
61
+ }
62
+ /** Whether the given block is currently present in the target file. */
63
+ function blockExists(spec, targetPath) {
64
+ const current = readTargetFile(targetPath);
65
+ return current !== null && spec.startRe.test(current);
66
+ }
67
+ function buildWrappedBlock(spec) {
68
+ const blockContent = fs.readFileSync(path.join(TEMPLATES_DIR, spec.templateFile), 'utf-8').trimEnd();
69
+ return `${spec.startMarker}\n${blockContent}\n${spec.endMarker}`;
70
+ }
71
+ /** Find an existing block's [start, end) byte range, or null. Throws if the start marker has no matching end. */
72
+ function locateBlock(current, spec) {
73
+ const startMatch = current.match(spec.startRe);
74
+ if (!startMatch)
75
+ return null;
76
+ const startIdx = current.indexOf(startMatch[0]);
77
+ const endIdx = current.indexOf(spec.endMarker, startIdx);
78
+ if (endIdx === -1) {
79
+ throw new Error(`Found ${startMatch[0]} but no matching ${spec.endMarker} in ${CLAUDE_MD_PATH}. Fix manually or remove the start marker and re-run.`);
39
80
  }
40
- if (!fs.existsSync(CLAUDE_MD_PATH)) {
81
+ return { start: startIdx, end: endIdx + spec.endMarker.length };
82
+ }
83
+ /**
84
+ * Install (install=true) or remove (install=false) a block in the target file, idempotently.
85
+ * User content outside the markers is preserved.
86
+ */
87
+ function applyBlock(spec, install, dryRun, targetPath) {
88
+ const current = readTargetFile(targetPath);
89
+ // Removal path — strip the marker pair and its content, collapsing the surrounding blank lines.
90
+ if (!install) {
91
+ if (current === null)
92
+ return 'absent';
93
+ const loc = locateBlock(current, spec);
94
+ if (!loc)
95
+ return 'absent';
96
+ const before = current.slice(0, loc.start).replace(/\n+$/, '\n');
97
+ const after = current.slice(loc.end).replace(/^\n+/, '');
98
+ let next = before + after;
99
+ if (next.length > 0 && !next.endsWith('\n'))
100
+ next += '\n';
41
101
  if (!dryRun)
42
- fs.writeFileSync(CLAUDE_MD_PATH, wrappedBlock + '\n', 'utf-8');
43
- return { action: 'created', path: CLAUDE_MD_PATH };
102
+ fs.writeFileSync(targetPath, next, 'utf-8');
103
+ return 'removed';
104
+ }
105
+ // Install path.
106
+ const wrappedBlock = buildWrappedBlock(spec);
107
+ if (current === null) {
108
+ if (!dryRun) {
109
+ const targetDir = path.dirname(targetPath);
110
+ if (!fs.existsSync(targetDir))
111
+ fs.mkdirSync(targetDir, { recursive: true });
112
+ fs.writeFileSync(targetPath, wrappedBlock + '\n', 'utf-8');
113
+ }
114
+ return 'created';
44
115
  }
45
- const current = fs.readFileSync(CLAUDE_MD_PATH, 'utf-8');
46
- const startMatch = current.match(BLOCK_START_RE);
47
- if (!startMatch) {
116
+ const loc = locateBlock(current, spec);
117
+ if (!loc) {
48
118
  // No existing block — append.
49
119
  const sep = current.endsWith('\n') ? '\n' : '\n\n';
50
120
  const next = current + sep + wrappedBlock + '\n';
51
121
  if (!dryRun)
52
- fs.writeFileSync(CLAUDE_MD_PATH, next, 'utf-8');
53
- return { action: 'inserted', path: CLAUDE_MD_PATH };
54
- }
55
- const startIdx = current.indexOf(startMatch[0]);
56
- const endIdx = current.indexOf(BLOCK_END, startIdx);
57
- if (endIdx === -1) {
58
- throw new Error(`Found ${startMatch[0]} but no matching ${BLOCK_END} in ${CLAUDE_MD_PATH}. Fix manually or remove the start marker and re-run.`);
122
+ fs.writeFileSync(targetPath, next, 'utf-8');
123
+ return 'inserted';
59
124
  }
60
- const existingBlock = current.substring(startIdx, endIdx + BLOCK_END.length);
125
+ const existingBlock = current.substring(loc.start, loc.end);
61
126
  if (existingBlock === wrappedBlock) {
62
- return { action: 'unchanged', path: CLAUDE_MD_PATH };
127
+ return 'unchanged';
63
128
  }
64
- const next = current.substring(0, startIdx) + wrappedBlock + current.substring(endIdx + BLOCK_END.length);
129
+ const next = current.substring(0, loc.start) + wrappedBlock + current.substring(loc.end);
65
130
  if (!dryRun)
66
- fs.writeFileSync(CLAUDE_MD_PATH, next, 'utf-8');
67
- return { action: 'upgraded', path: CLAUDE_MD_PATH };
131
+ fs.writeFileSync(targetPath, next, 'utf-8');
132
+ return 'upgraded';
133
+ }
134
+ async function promptYesNo(question, defaultYes) {
135
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
136
+ try {
137
+ const answer = (await rl.question(question)).trim().toLowerCase();
138
+ if (answer === '')
139
+ return defaultYes;
140
+ return answer === 'y' || answer === 'yes';
141
+ }
142
+ finally {
143
+ rl.close();
144
+ }
145
+ }
146
+ /**
147
+ * Decide what to do with the optional restructure-on-sync rule.
148
+ * Returns true (install), false (remove/skip), or undefined (leave current state untouched).
149
+ *
150
+ * Precedence: explicit flags > interactive prompt > leave-as-is (non-TTY / dry-run).
151
+ */
152
+ async function resolveRestructureChoice(options, alreadyInstalled) {
153
+ if (options.noRestructure)
154
+ return false;
155
+ if (options.withRestructure)
156
+ return true;
157
+ if (options.dryRun)
158
+ return undefined;
159
+ if (!process.stdin.isTTY)
160
+ return undefined;
161
+ console.log('');
162
+ console.log('Optional rule — "Restructure notes on sync":');
163
+ console.log(' When you sync a note that grew by accretion (bolt-on sections, duplicated');
164
+ console.log(' passages, a chronological patch-log), Claude first restructures it into one');
165
+ console.log(' coherent narrative led by the root cause — preserving diagrams, inventories,');
166
+ console.log(' and snippets — instead of pushing the sprawl as-is.');
167
+ console.log(' This rewrites note *body* text on sync (broader than /noesis-refine-note).');
168
+ const suffix = alreadyInstalled ? ' [Y/n] ' : ' [y/N] ';
169
+ return promptYesNo(`Install this optional rule?${suffix}`, alreadyInstalled);
68
170
  }
171
+ // Commands a prior version installed that have since been renamed or retired.
172
+ // Any stale copy under ~/.claude/commands/ is deleted on setup so users don't
173
+ // end up with both the old and the new command. (installSkills only ever wrote
174
+ // files, so without this a rename orphans the old one.) The `signature` guards
175
+ // against nuking an unrelated user file that happens to share the basename —
176
+ // we only delete a file that still contains a string unique to our old skill.
177
+ const RETIRED_SKILLS = [
178
+ { name: 'skim-read', signature: 'apply_note_skim_read' },
179
+ ];
69
180
  function installSkills(dryRun) {
70
181
  if (!fs.existsSync(COMMANDS_DIR)) {
71
182
  if (!dryRun)
72
183
  fs.mkdirSync(COMMANDS_DIR, { recursive: true });
73
184
  }
74
185
  const scriptPath = path.join(SCRIPTS_DIR, 'noesis-sync.mjs').replace(/\\/g, '/');
186
+ const captureWatcherPath = path.join(SCRIPTS_DIR, 'noesis-capture-watcher.mjs').replace(/\\/g, '/');
75
187
  const templates = fs.readdirSync(SKILL_TEMPLATES_DIR).filter((f) => f.endsWith('.md'));
76
188
  const results = [];
77
189
  for (const filename of templates) {
@@ -79,6 +191,7 @@ function installSkills(dryRun) {
79
191
  const targetPath = path.join(COMMANDS_DIR, filename);
80
192
  let content = fs.readFileSync(templatePath, 'utf-8');
81
193
  content = content.replace(/\{\{NOESIS_MCP_SCRIPT_PATH\}\}/g, scriptPath);
194
+ content = content.replace(/\{\{NOESIS_CAPTURE_WATCHER_PATH\}\}/g, captureWatcherPath);
82
195
  let action;
83
196
  if (!fs.existsSync(targetPath)) {
84
197
  action = 'created';
@@ -92,8 +205,166 @@ function installSkills(dryRun) {
92
205
  }
93
206
  results.push({ name: filename.replace(/\.md$/, ''), action, path: targetPath });
94
207
  }
208
+ // Remove any retired command left behind by an earlier install (only if the
209
+ // file is still recognizably ours — see RETIRED_SKILLS).
210
+ for (const { name, signature } of RETIRED_SKILLS) {
211
+ const stalePath = path.join(COMMANDS_DIR, `${name}.md`);
212
+ if (fs.existsSync(stalePath) && fs.readFileSync(stalePath, 'utf-8').includes(signature)) {
213
+ if (!dryRun)
214
+ fs.unlinkSync(stalePath);
215
+ results.push({ name, action: 'removed', path: stalePath });
216
+ }
217
+ }
95
218
  return results;
96
219
  }
220
+ // ---------------------------------------------------------------------------
221
+ // Optional /noesis-capture SessionEnd hook (opt-in).
222
+ //
223
+ // Registers a SessionEnd hook in ~/.claude/settings.json so that when a capture
224
+ // controller session ends, its background watchers are marked stopped and killed.
225
+ // The /noesis-capture skill itself is always installed (it's a normal skill
226
+ // template); only this hook — which touches settings.json and runs on every
227
+ // session exit — is gated behind opt-in, mirroring the restructure-on-sync rule.
228
+ // ---------------------------------------------------------------------------
229
+ const CAPTURE_HOOK_MARKER = 'noesis-capture-session-end';
230
+ /** The exact command we register for the SessionEnd hook (packaged script). */
231
+ function captureHookCommand() {
232
+ const script = path.join(SCRIPTS_DIR, 'noesis-capture-session-end.mjs').replace(/\\/g, '/');
233
+ return `node "${script}"`;
234
+ }
235
+ /** A non-null, non-array object. */
236
+ function isPlainObject(v) {
237
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
238
+ }
239
+ /** Parse settings.json, or null if absent. Throws on malformed JSON (never clobber it). */
240
+ function readSettings() {
241
+ if (!fs.existsSync(SETTINGS_PATH))
242
+ return null;
243
+ try {
244
+ return JSON.parse(fs.readFileSync(SETTINGS_PATH, 'utf-8'));
245
+ }
246
+ catch {
247
+ throw new Error(`Could not parse ${SETTINGS_PATH} as JSON. Fix it manually and re-run.`);
248
+ }
249
+ }
250
+ /** Whether any SessionEnd hook command is ours. */
251
+ function settingsHasCaptureHook(settings) {
252
+ const arr = settings?.hooks?.SessionEnd;
253
+ if (!Array.isArray(arr))
254
+ return false;
255
+ return arr.some((e) => Array.isArray(e?.hooks) &&
256
+ e.hooks.some((h) => typeof h?.command === 'string' && h.command.includes(CAPTURE_HOOK_MARKER)));
257
+ }
258
+ /** Tolerant presence check for the interactive prompt default (never throws). */
259
+ function captureHookInstalled() {
260
+ try {
261
+ const s = readSettings();
262
+ return s !== null && settingsHasCaptureHook(s);
263
+ }
264
+ catch {
265
+ return false;
266
+ }
267
+ }
268
+ /**
269
+ * Install or remove the capture SessionEnd hook in settings.json, idempotently.
270
+ * Other hooks and settings are preserved. Returns the action taken.
271
+ */
272
+ function registerCaptureHook(install, dryRun) {
273
+ let settings = readSettings();
274
+ const existed = settings !== null;
275
+ const command = captureHookCommand();
276
+ // Removal path.
277
+ if (!install) {
278
+ if (!settings || !settingsHasCaptureHook(settings))
279
+ return 'absent';
280
+ const arr = settings.hooks.SessionEnd;
281
+ settings.hooks.SessionEnd = arr
282
+ .map((e) => {
283
+ if (Array.isArray(e?.hooks)) {
284
+ e.hooks = e.hooks.filter((h) => !(typeof h?.command === 'string' && h.command.includes(CAPTURE_HOOK_MARKER)));
285
+ }
286
+ return e;
287
+ })
288
+ .filter((e) => !Array.isArray(e?.hooks) || e.hooks.length > 0);
289
+ if (settings.hooks.SessionEnd.length === 0)
290
+ delete settings.hooks.SessionEnd;
291
+ if (settings.hooks && Object.keys(settings.hooks).length === 0)
292
+ delete settings.hooks;
293
+ if (!dryRun)
294
+ fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
295
+ return 'removed';
296
+ }
297
+ // Install path. Refuse to touch a settings.json with an unexpected shape rather
298
+ // than silently discarding data or reporting a write that JSON.stringify drops
299
+ // (e.g. a named prop set on an array).
300
+ if (!settings)
301
+ settings = {};
302
+ if (!isPlainObject(settings)) {
303
+ throw new Error(`Unexpected JSON root in ${SETTINGS_PATH} (expected an object). Fix it manually and re-run.`);
304
+ }
305
+ if (settings.hooks == null) {
306
+ settings.hooks = {};
307
+ }
308
+ else if (!isPlainObject(settings.hooks)) {
309
+ throw new Error(`"hooks" in ${SETTINGS_PATH} is not an object. Fix it manually and re-run.`);
310
+ }
311
+ if (settings.hooks.SessionEnd == null) {
312
+ settings.hooks.SessionEnd = [];
313
+ }
314
+ else if (!Array.isArray(settings.hooks.SessionEnd)) {
315
+ throw new Error(`"hooks.SessionEnd" in ${SETTINGS_PATH} is not an array. Fix it manually and re-run.`);
316
+ }
317
+ const arr = settings.hooks.SessionEnd;
318
+ let found = false;
319
+ let changed = false;
320
+ for (const e of arr) {
321
+ if (!Array.isArray(e?.hooks))
322
+ continue;
323
+ for (const h of e.hooks) {
324
+ if (typeof h?.command === 'string' && h.command.includes(CAPTURE_HOOK_MARKER)) {
325
+ found = true;
326
+ if (h.command !== command) {
327
+ h.command = command; // upgrade a stale path (e.g. package moved)
328
+ changed = true;
329
+ }
330
+ }
331
+ }
332
+ }
333
+ if (!found) {
334
+ arr.push({ matcher: '', hooks: [{ type: 'command', command }] });
335
+ }
336
+ if (found && !changed)
337
+ return 'unchanged';
338
+ if (!dryRun) {
339
+ if (!fs.existsSync(CLAUDE_DIR))
340
+ fs.mkdirSync(CLAUDE_DIR, { recursive: true });
341
+ fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
342
+ }
343
+ return existed ? (found ? 'upgraded' : 'inserted') : 'created';
344
+ }
345
+ /**
346
+ * Decide what to do with the optional capture SessionEnd hook.
347
+ * Returns true (install), false (remove/skip), or undefined (leave current state).
348
+ * Precedence: explicit flags > interactive prompt > leave-as-is (non-TTY / dry-run).
349
+ */
350
+ async function resolveCaptureChoice(options, alreadyInstalled) {
351
+ if (options.noCapture)
352
+ return false;
353
+ if (options.withCapture)
354
+ return true;
355
+ if (options.dryRun)
356
+ return undefined;
357
+ if (!process.stdin.isTTY)
358
+ return undefined;
359
+ console.log('');
360
+ console.log('Optional feature — "/noesis-capture" session-capture auto-cleanup:');
361
+ console.log(' The /noesis-capture skill mirrors live Claude Code sessions into Noesis notes.');
362
+ console.log(' This optional SessionEnd hook auto-stops a capture\'s background watchers when');
363
+ console.log(' the controller session ends (otherwise you run "/noesis-capture stop" yourself).');
364
+ console.log(' It adds a fast, fail-safe hook to ~/.claude/settings.json that runs on session exit.');
365
+ const suffix = alreadyInstalled ? ' [Y/n] ' : ' [y/N] ';
366
+ return promptYesNo(`Install this optional hook?${suffix}`, alreadyInstalled);
367
+ }
97
368
  function printMcpRegistrationHint() {
98
369
  // Resolve the absolute path to the running MCP server entry.
99
370
  const entry = path.join(PACKAGE_ROOT, 'dist', 'index.js').replace(/\\/g, '/');
@@ -114,16 +385,60 @@ function printMcpRegistrationHint() {
114
385
  console.log('After that, restart Claude Code so the new system prompt and MCP server load.');
115
386
  console.log('');
116
387
  }
117
- export async function runSetup(argv) {
118
- const options = parseArgs(argv);
119
- const note = options.dryRun ? ' (dry-run)' : '';
120
- console.log(`noesis-mcp setup${note}`);
388
+ /**
389
+ * Registration hint for VS Code Copilot. Unlike `claude mcp add`, Copilot has no
390
+ * CLI for this — it's a JSON file edited via the Command Palette. The root key is
391
+ * "servers" (not "mcpServers" like Claude/Cursor), and secrets go through an
392
+ * "inputs" promptString reference rather than a literal value in the file.
393
+ */
394
+ function printCopilotMcpRegistrationHint() {
395
+ const entry = path.join(PACKAGE_ROOT, 'dist', 'index.js').replace(/\\/g, '/');
396
+ console.log('');
397
+ console.log('───────────────────────────────────────────────────────────────');
398
+ console.log('Final step: register the Noesis MCP server with Copilot.');
399
+ console.log('───────────────────────────────────────────────────────────────');
400
+ console.log('');
401
+ console.log('In VS Code, open the Command Palette → "MCP: Open User Configuration"');
402
+ console.log('(or "MCP: Add Server" for a guided flow), and add:');
403
+ console.log('');
404
+ console.log(' {');
405
+ console.log(' "inputs": [');
406
+ console.log(' { "type": "promptString", "id": "noesis-token", "description": "Noesis API Token", "password": true }');
407
+ console.log(' ],');
408
+ console.log(' "servers": {');
409
+ console.log(' "noesis": {');
410
+ console.log(' "type": "stdio",');
411
+ console.log(' "command": "node",');
412
+ console.log(` "args": ["${entry}"],`);
413
+ console.log(' "env": {');
414
+ console.log(' "NOESIS_API_TOKEN": "${input:noesis-token}",');
415
+ console.log(' "NOESIS_API_URL": "https://noesisbrain.com"');
416
+ console.log(' }');
417
+ console.log(' }');
418
+ console.log(' }');
419
+ console.log(' }');
420
+ console.log('');
421
+ console.log('VS Code will prompt for the token on first use and store it securely.');
422
+ console.log('');
423
+ }
424
+ async function runClaudeSetup(options) {
121
425
  console.log(` CLAUDE.md target: ${CLAUDE_MD_PATH}`);
122
426
  console.log(` Commands target: ${COMMANDS_DIR}`);
123
427
  console.log('');
124
428
  if (!options.skillsOnly) {
125
- const result = installClaudeMd(options.dryRun);
126
- console.log(` CLAUDE.md: ${result.action}`);
429
+ const coreAction = applyBlock(CORE_BLOCK, true, options.dryRun, CLAUDE_MD_PATH);
430
+ console.log(` CLAUDE.md: ${coreAction}`);
431
+ // Optional opt-in rule. State is persisted as the block's presence in CLAUDE.md,
432
+ // so re-runs default the prompt to the current state and never lose the user's choice.
433
+ const alreadyInstalled = blockExists(RESTRUCTURE_BLOCK, CLAUDE_MD_PATH);
434
+ const choice = await resolveRestructureChoice(options, alreadyInstalled);
435
+ if (choice === undefined) {
436
+ console.log(` Restructure-on-sync rule: ${alreadyInstalled ? 'kept (installed)' : 'not installed'}`);
437
+ }
438
+ else {
439
+ const action = applyBlock(RESTRUCTURE_BLOCK, choice, options.dryRun, CLAUDE_MD_PATH);
440
+ console.log(` Restructure-on-sync rule: ${action}`);
441
+ }
127
442
  }
128
443
  else {
129
444
  console.log(' CLAUDE.md: skipped (--skills-only)');
@@ -133,6 +448,18 @@ export async function runSetup(argv) {
133
448
  for (const r of skillResults) {
134
449
  console.log(` Skill /${r.name}: ${r.action}`);
135
450
  }
451
+ // Optional opt-in SessionEnd hook for /noesis-capture. State is persisted as
452
+ // the hook's presence in settings.json, so re-runs default the prompt to the
453
+ // current state and never lose the user's choice.
454
+ const captureAlready = captureHookInstalled();
455
+ const captureChoice = await resolveCaptureChoice(options, captureAlready);
456
+ if (captureChoice === undefined) {
457
+ console.log(` Capture SessionEnd hook: ${captureAlready ? 'kept (installed)' : 'not installed'}`);
458
+ }
459
+ else {
460
+ const action = registerCaptureHook(captureChoice, options.dryRun);
461
+ console.log(` Capture SessionEnd hook: ${action}`);
462
+ }
136
463
  }
137
464
  else {
138
465
  console.log(' Skills: skipped (--claude-md-only)');
@@ -145,4 +472,51 @@ export async function runSetup(argv) {
145
472
  console.log('Dry-run complete. Re-run without --dry-run to apply.');
146
473
  }
147
474
  }
475
+ /**
476
+ * Copilot support is instructions-only: it installs the same portable conventions
477
+ * blocks into a per-repo .github/copilot-instructions.md instead of the global
478
+ * ~/.claude/CLAUDE.md. Skills (slash-commands) and the capture SessionEnd hook are
479
+ * Claude-Code-specific mechanisms with no Copilot analog, so they're not offered here.
480
+ */
481
+ async function runCopilotSetup(options) {
482
+ if (options.skillsOnly || options.claudeMdOnly) {
483
+ throw new Error('--skills-only and --claude-md-only are not applicable with --client=copilot: ' +
484
+ 'Copilot setup only installs the conventions blocks (no skills/commands exist for Copilot yet).');
485
+ }
486
+ console.log(` Instructions target: ${COPILOT_INSTRUCTIONS_PATH}`);
487
+ console.log('');
488
+ const coreAction = applyBlock(CORE_BLOCK, true, options.dryRun, COPILOT_INSTRUCTIONS_PATH);
489
+ console.log(` copilot-instructions.md: ${coreAction}`);
490
+ const alreadyInstalled = blockExists(RESTRUCTURE_BLOCK, COPILOT_INSTRUCTIONS_PATH);
491
+ const choice = await resolveRestructureChoice(options, alreadyInstalled);
492
+ if (choice === undefined) {
493
+ console.log(` Restructure-on-sync rule: ${alreadyInstalled ? 'kept (installed)' : 'not installed'}`);
494
+ }
495
+ else {
496
+ const action = applyBlock(RESTRUCTURE_BLOCK, choice, options.dryRun, COPILOT_INSTRUCTIONS_PATH);
497
+ console.log(` Restructure-on-sync rule: ${action}`);
498
+ }
499
+ console.log('');
500
+ console.log('Note: .github/copilot-instructions.md is typically committed to the repo so');
501
+ console.log('teammates share these conventions in Copilot Chat — unlike the personal, global');
502
+ console.log('~/.claude/CLAUDE.md used for Claude Code.');
503
+ if (!options.dryRun) {
504
+ printCopilotMcpRegistrationHint();
505
+ }
506
+ else {
507
+ console.log('');
508
+ console.log('Dry-run complete. Re-run without --dry-run to apply.');
509
+ }
510
+ }
511
+ export async function runSetup(argv) {
512
+ const options = parseArgs(argv);
513
+ const note = options.dryRun ? ' (dry-run)' : '';
514
+ console.log(`noesis-mcp setup${note} [--client=${options.client}]`);
515
+ if (options.client === 'copilot') {
516
+ await runCopilotSetup(options);
517
+ }
518
+ else {
519
+ await runClaudeSetup(options);
520
+ }
521
+ }
148
522
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -79,7 +79,31 @@ async function main() {
79
79
  const subcommand = process.argv[2];
80
80
  if (subcommand === 'setup' || subcommand === 'upgrade') {
81
81
  const { runSetup } = await import('./cli/setup.js');
82
- await runSetup(process.argv.slice(3));
82
+ try {
83
+ await runSetup(process.argv.slice(3));
84
+ }
85
+ catch (err) {
86
+ console.error(`\nnoesis-mcp setup failed: ${err instanceof Error ? err.message : String(err)}`);
87
+ process.exit(1);
88
+ }
89
+ return;
90
+ }
91
+ // `noesis-mcp agent` runs the Local Agent daemon (ai_mode = claude-subscription):
92
+ // it polls the Noesis agent-job queue and runs jobs on your own Claude subscription.
93
+ if (subcommand === 'agent') {
94
+ const { runAgentDaemon, resolveAgentConfig } = await import('./agent/runner.js');
95
+ try {
96
+ const cfg = resolveAgentConfig();
97
+ const controller = new AbortController();
98
+ for (const sig of ['SIGINT', 'SIGTERM']) {
99
+ process.on(sig, () => { console.error(`\n[noesis-agent] ${sig} — shutting down`); controller.abort(); });
100
+ }
101
+ await runAgentDaemon(cfg, controller.signal);
102
+ }
103
+ catch (err) {
104
+ console.error(`\nnoesis-mcp agent failed: ${err instanceof Error ? err.message : String(err)}`);
105
+ process.exit(1);
106
+ }
83
107
  return;
84
108
  }
85
109
  // Get API configuration
@@ -96,6 +120,12 @@ async function main() {
96
120
  }
97
121
  // Initialize API client (replaces direct database access)
98
122
  const client = new NoesisClient(apiBaseUrl, apiToken);
123
+ // Phase 50: fire-and-forget device-home report. Lets the web UI resolve
124
+ // stored `~/Noesis/...` paths to this machine's absolute form for display.
125
+ // Failures (offline, server down) just leave the cache as-is; next startup retries.
126
+ client.reportDeviceHomeDir().catch((err) => {
127
+ console.error(`[noesis-mcp] reportDeviceHomeDir failed (non-fatal): ${err?.message || err}`);
128
+ });
99
129
  // Create MCP server
100
130
  const server = new McpServer({
101
131
  name: 'noesis',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}