@pathmode/mcp-server 1.4.4 → 1.4.5

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/README.md CHANGED
@@ -257,7 +257,7 @@ Full privacy policy: [pathmode.io/privacy](https://pathmode.io/privacy)
257
257
  ## Links
258
258
 
259
259
  - [Intent Compiler page](https://pathmode.io/intent-compiler) — Overview and setup guide
260
- - [Try in browser](https://pathmode.io/sandbox) — Interactive sandbox, no install needed
260
+ - [Intent Compiler](https://pathmode.io/intent-compiler) — Interactive setup and product overview
261
261
  - [Pathmode](https://pathmode.io) — Full platform for teams
262
262
  - [Issues](https://github.com/pathmodeio/mcp-server/issues)
263
263
 
@@ -16,8 +16,6 @@ export interface ApiIntent {
16
16
  id: string;
17
17
  workspaceId: string;
18
18
  productId?: string;
19
- journeyId?: string;
20
- stageId?: string;
21
19
  stageName?: string;
22
20
  status: string;
23
21
  version: number;
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33531,6 +33531,7 @@ exports.loadConfig = loadConfig;
33531
33531
  const fs_1 = __importDefault(__nccwpck_require__(9896));
33532
33532
  const path_1 = __importDefault(__nccwpck_require__(6928));
33533
33533
  const os_1 = __importDefault(__nccwpck_require__(857));
33534
+ const isDebug = process.env.PATHMODE_MCP_DEBUG === '1';
33534
33535
  const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.pathmode');
33535
33536
  const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'config.json');
33536
33537
  function loadConfig() {
@@ -33563,7 +33564,8 @@ class PathmodeClient {
33563
33564
  }
33564
33565
  async fetch(path, options = {}) {
33565
33566
  const url = `${this.apiUrl}/api/v1${path}`;
33566
- console.error(`[pathmode-mcp] fetch: ${url}, key prefix: ${this.apiKey.substring(0, 16)}`);
33567
+ if (isDebug)
33568
+ console.error(`[pathmode-mcp] fetch: ${url}`);
33567
33569
  const response = await fetch(url, {
33568
33570
  ...options,
33569
33571
  headers: {
@@ -33574,7 +33576,7 @@ class PathmodeClient {
33574
33576
  });
33575
33577
  if (!response.ok) {
33576
33578
  const body = await response.json().catch(() => ({ error: response.statusText }));
33577
- console.error(`[pathmode-mcp] ${response.status}: ${JSON.stringify(body)}, key length: ${this.apiKey.length}`);
33579
+ console.error(`[pathmode-mcp] API error ${response.status}: ${body.error || response.statusText}`);
33578
33580
  throw new Error(`API error (${response.status}): ${body.error || response.statusText}`);
33579
33581
  }
33580
33582
  return response;
@@ -33810,6 +33812,7 @@ IMPORTANT:
33810
33812
  - constraints: string[] (optional)
33811
33813
  - edgeCases: { scenario: string, expectedBehavior: string }[] (optional)
33812
33814
  - healthMetrics: string[] (optional)
33815
+ - scope: { inScope?: string[], outOfScope?: string[] } (optional)
33813
33816
  - verification: { manualChecks?: string[], unitTests?: string[], e2eTests?: string[] } (optional)
33814
33817
 
33815
33818
  Now, start the conversation. If they haven't provided one yet, ask for the concrete evidence (quote, metric, or ticket) driving this work.`;
@@ -34111,6 +34114,14 @@ function readIntentFile(filePath) {
34111
34114
  const constraints = extractListSection(body, 'Constraints');
34112
34115
  const healthMetrics = extractListSection(body, 'Health Metrics');
34113
34116
  const edgeCases = extractEdgeCases(body);
34117
+ const scope = extractScope(body);
34118
+ const parsedVerification = extractVerification(body);
34119
+ const frontmatterVerification = data.verification && typeof data.verification === 'object'
34120
+ ? data.verification
34121
+ : null;
34122
+ const verification = Object.keys(parsedVerification).length > 0
34123
+ ? parsedVerification
34124
+ : (frontmatterVerification || {});
34114
34125
  return {
34115
34126
  id: data.id || path_1.default.basename(filePath, '.md'),
34116
34127
  status: data.status || 'draft',
@@ -34123,7 +34134,8 @@ function readIntentFile(filePath) {
34123
34134
  constraints,
34124
34135
  edgeCases,
34125
34136
  healthMetrics,
34126
- verification: data.verification || {},
34137
+ scope: scope || undefined,
34138
+ verification,
34127
34139
  source: 'local',
34128
34140
  };
34129
34141
  }
@@ -34177,6 +34189,72 @@ function extractEdgeCases(body) {
34177
34189
  }
34178
34190
  return cases;
34179
34191
  }
34192
+ /**
34193
+ * Extract Scope section with **In scope:** and **Out of scope:** sub-lists.
34194
+ * Matches the format emitted by formatIntentMd().
34195
+ */
34196
+ function extractScope(body) {
34197
+ const section = extractSection(body, 'Scope');
34198
+ if (!section)
34199
+ return null;
34200
+ const inScope = [];
34201
+ const outOfScope = [];
34202
+ let target = null;
34203
+ for (const line of section.split('\n')) {
34204
+ if (/^\*\*In scope[:\*]*/.test(line.trim())) {
34205
+ target = inScope;
34206
+ continue;
34207
+ }
34208
+ if (/^\*\*Out of scope[:\*]*/.test(line.trim())) {
34209
+ target = outOfScope;
34210
+ continue;
34211
+ }
34212
+ if (target && line.match(/^[-*]\s/)) {
34213
+ target.push(line.replace(/^[-*]\s+/, '').trim());
34214
+ }
34215
+ }
34216
+ if (inScope.length === 0 && outOfScope.length === 0)
34217
+ return null;
34218
+ const result = {};
34219
+ if (inScope.length > 0)
34220
+ result.inScope = inScope;
34221
+ if (outOfScope.length > 0)
34222
+ result.outOfScope = outOfScope;
34223
+ return result;
34224
+ }
34225
+ /**
34226
+ * Extract Verification section with **E2E Tests**, **Unit Tests**, **Manual Checks** sub-lists.
34227
+ * Matches the format emitted by formatIntentMd().
34228
+ */
34229
+ function extractVerification(body) {
34230
+ const section = extractSection(body, 'Verification');
34231
+ if (!section)
34232
+ return {};
34233
+ const result = {};
34234
+ let currentKey = null;
34235
+ for (const line of section.split('\n')) {
34236
+ const trimmed = line.trim();
34237
+ if (/^\*\*E2E Tests?\*?\*?:?/.test(trimmed)) {
34238
+ currentKey = 'e2eTests';
34239
+ result[currentKey] = [];
34240
+ continue;
34241
+ }
34242
+ if (/^\*\*Unit Tests?\*?\*?:?/.test(trimmed)) {
34243
+ currentKey = 'unitTests';
34244
+ result[currentKey] = [];
34245
+ continue;
34246
+ }
34247
+ if (/^\*\*Manual Checks?\*?\*?:?/.test(trimmed)) {
34248
+ currentKey = 'manualChecks';
34249
+ result[currentKey] = [];
34250
+ continue;
34251
+ }
34252
+ if (currentKey && trimmed.match(/^[-*]\s/)) {
34253
+ result[currentKey].push(trimmed.replace(/^[-*]\s+(\[.\]\s+)?/, '').trim());
34254
+ }
34255
+ }
34256
+ return result;
34257
+ }
34180
34258
 
34181
34259
 
34182
34260
  /***/ }),
@@ -64105,9 +64183,12 @@ function startMcpServer() {
64105
64183
  // ─── MCP Server ───────────────────────────────────────────────
64106
64184
  const isLocalMode = process.argv.includes('--local');
64107
64185
  let client = null;
64186
+ const isDebug = process.env.PATHMODE_MCP_DEBUG === '1';
64108
64187
  if (!isLocalMode) {
64109
64188
  const config = (0, api_client_1.loadConfig)();
64110
- console.error(`[pathmode-mcp] API key present: ${!!config?.apiKey}, prefix: ${config?.apiKey?.substring(0, 16) || 'none'}, url: ${config?.apiUrl || 'none'}`);
64189
+ if (isDebug) {
64190
+ console.error(`[pathmode-mcp] API key present: ${!!config?.apiKey}, url: ${config?.apiUrl || 'none'}`);
64191
+ }
64111
64192
  if (config) {
64112
64193
  client = new api_client_1.PathmodeClient(config);
64113
64194
  }
@@ -64118,11 +64199,24 @@ function startMcpServer() {
64118
64199
  // ============================================================
64119
64200
  const server = new mcp_js_1.McpServer({
64120
64201
  name: 'pathmode',
64121
- version: '1.3.0',
64202
+ version: '1.4.4',
64122
64203
  });
64123
64204
  // Annotation presets
64124
64205
  const READ_ONLY = { readOnlyHint: true, openWorldHint: true };
64125
64206
  const WRITE_OP = { readOnlyHint: false, destructiveHint: false, openWorldHint: true };
64207
+ // Cloud-mode guard — returns a clean error instead of crashing on client!
64208
+ const CLOUD_REQUIRED_MSG = 'This tool requires a Pathmode API key. Run `npx @pathmode/mcp-server setup pm_live_xxx` to connect, or set the PATHMODE_API_KEY environment variable.';
64209
+ function requireCloudClient() {
64210
+ if (!client)
64211
+ throw new CloudClientError();
64212
+ return client;
64213
+ }
64214
+ class CloudClientError extends Error {
64215
+ constructor() { super(CLOUD_REQUIRED_MSG); this.name = 'CloudClientError'; }
64216
+ }
64217
+ // Note: The MCP SDK catches errors thrown in tool handlers and returns them as
64218
+ // error text results. CloudClientError thrown by requireCloudClient() will
64219
+ // surface its message to the client without crashing the server.
64126
64220
  // ============================================================
64127
64221
  // Tools — Read Operations
64128
64222
  // ============================================================
@@ -64141,9 +64235,10 @@ function startMcpServer() {
64141
64235
  }
64142
64236
  return { content: [{ type: 'text', text: JSON.stringify(current, null, 2) }] };
64143
64237
  }
64144
- const intents = await client.listIntents(status || 'approved');
64238
+ const cloud = requireCloudClient();
64239
+ const intents = await cloud.listIntents(status || 'approved');
64145
64240
  if (intents.length === 0) {
64146
- const allIntents = await client.listIntents();
64241
+ const allIntents = await cloud.listIntents();
64147
64242
  if (allIntents.length === 0) {
64148
64243
  return { content: [{ type: 'text', text: 'No intents found in workspace.' }] };
64149
64244
  }
@@ -64167,7 +64262,8 @@ function startMcpServer() {
64167
64262
  }]
64168
64263
  };
64169
64264
  }
64170
- const intents = await client.listIntents(status);
64265
+ const cloud = requireCloudClient();
64266
+ const intents = await cloud.listIntents(status);
64171
64267
  return {
64172
64268
  content: [{
64173
64269
  type: 'text',
@@ -64190,7 +64286,7 @@ function startMcpServer() {
64190
64286
  return { content: [{ type: 'text', text: JSON.stringify(intent, null, 2) }] };
64191
64287
  }
64192
64288
  try {
64193
- const intent = await client.getIntent(intentId);
64289
+ const intent = await requireCloudClient().getIntent(intentId);
64194
64290
  return { content: [{ type: 'text', text: JSON.stringify(intent, null, 2) }] };
64195
64291
  }
64196
64292
  catch (e) {
@@ -64206,7 +64302,7 @@ function startMcpServer() {
64206
64302
  if (isLocalMode) {
64207
64303
  return { content: [{ type: 'text', text: 'Relations are not available in local mode.' }] };
64208
64304
  }
64209
- const intent = await client.getIntent(intentId);
64305
+ const intent = await requireCloudClient().getIntent(intentId);
64210
64306
  return {
64211
64307
  content: [{
64212
64308
  type: 'text',
@@ -64237,7 +64333,7 @@ function startMcpServer() {
64237
64333
  return { content: [{ type: 'text', text: JSON.stringify({ results: matches, count: matches.length, query }, null, 2) }] };
64238
64334
  }
64239
64335
  try {
64240
- const intents = await client.listIntents(status);
64336
+ const intents = await requireCloudClient().listIntents(status);
64241
64337
  const q = query.toLowerCase();
64242
64338
  const matches = intents.filter(i => {
64243
64339
  const text = [i.title, i.objective, ...(i.outcomes || []).map((o) => typeof o === 'string' ? o : o.text), ...(i.constraints || [])].join(' ').toLowerCase();
@@ -64269,7 +64365,7 @@ function startMcpServer() {
64269
64365
  return { content: [{ type: 'text', text: 'Graph analysis requires cloud mode.' }] };
64270
64366
  }
64271
64367
  try {
64272
- const intents = await client.listIntents();
64368
+ const intents = await requireCloudClient().listIntents();
64273
64369
  if (intents.length === 0) {
64274
64370
  return { content: [{ type: 'text', text: 'No intents found in workspace.' }] };
64275
64371
  }
@@ -64297,7 +64393,7 @@ function startMcpServer() {
64297
64393
  }
64298
64394
  }
64299
64395
  }
64300
- // Detect cycles
64396
+ // Detect cycles (iterative DFS with neighbor iterators)
64301
64397
  const WHITE = 0, GRAY = 1, BLACK = 2;
64302
64398
  const color = new Map();
64303
64399
  const parent = new Map();
@@ -64307,31 +64403,36 @@ function startMcpServer() {
64307
64403
  for (const startId of forward.keys()) {
64308
64404
  if (color.get(startId) !== WHITE)
64309
64405
  continue;
64310
- const stack = [startId];
64406
+ // Each stack frame: [nodeId, iterator over its neighbors]
64407
+ const stack = [];
64408
+ color.set(startId, GRAY);
64311
64409
  parent.set(startId, null);
64410
+ stack.push([startId, (forward.get(startId) || new Set()).values()]);
64312
64411
  while (stack.length > 0) {
64313
- const id = stack[stack.length - 1];
64314
- if (color.get(id) === WHITE) {
64315
- color.set(id, GRAY);
64316
- for (const dep of forward.get(id) || new Set()) {
64317
- if (color.get(dep) === WHITE) {
64318
- parent.set(dep, id);
64319
- stack.push(dep);
64320
- }
64321
- else if (color.get(dep) === GRAY) {
64322
- const cycle = [dep];
64323
- let cur = id;
64324
- while (cur !== dep) {
64325
- cycle.push(cur);
64326
- cur = parent.get(cur);
64327
- }
64328
- cycle.push(dep);
64329
- cycle.reverse();
64330
- cycles.push(cycle);
64412
+ const [id, iter] = stack[stack.length - 1];
64413
+ const next = iter.next();
64414
+ if (!next.done) {
64415
+ const dep = next.value;
64416
+ if (color.get(dep) === WHITE) {
64417
+ color.set(dep, GRAY);
64418
+ parent.set(dep, id);
64419
+ stack.push([dep, (forward.get(dep) || new Set()).values()]);
64420
+ }
64421
+ else if (color.get(dep) === GRAY) {
64422
+ // Back edge — extract cycle from parent chain
64423
+ const cycle = [dep];
64424
+ let cur = id;
64425
+ while (cur !== dep) {
64426
+ cycle.push(cur);
64427
+ cur = parent.get(cur);
64331
64428
  }
64429
+ cycle.push(dep);
64430
+ cycle.reverse();
64431
+ cycles.push(cycle);
64332
64432
  }
64333
64433
  }
64334
64434
  else {
64435
+ // All neighbors explored — mark finished
64335
64436
  color.set(id, BLACK);
64336
64437
  stack.pop();
64337
64438
  }
@@ -64453,7 +64554,7 @@ function startMcpServer() {
64453
64554
  return { content: [{ type: 'text', text: 'Export requires cloud mode. Use PATHMODE_API_KEY to connect.' }] };
64454
64555
  }
64455
64556
  try {
64456
- const content = await client.exportContext(format, intentId, productId);
64557
+ const content = await requireCloudClient().exportContext(format, intentId, productId);
64457
64558
  return { content: [{ type: 'text', text: content }] };
64458
64559
  }
64459
64560
  catch (e) {
@@ -64472,7 +64573,7 @@ function startMcpServer() {
64472
64573
  if (isLocalMode) {
64473
64574
  return { content: [{ type: 'text', text: 'Agent prompts require cloud mode for full context generation.' }] };
64474
64575
  }
64475
- const result = await client.getIntentPrompt(intentId, 'claude-code', mode || 'execute');
64576
+ const result = await requireCloudClient().getIntentPrompt(intentId, 'claude-code', mode || 'execute');
64476
64577
  return {
64477
64578
  content: [{
64478
64579
  type: 'text',
@@ -64488,7 +64589,7 @@ function startMcpServer() {
64488
64589
  if (isLocalMode) {
64489
64590
  return { content: [{ type: 'text', text: 'Workspace details are not available in local mode.' }] };
64490
64591
  }
64491
- const workspace = await client.getWorkspace();
64592
+ const workspace = await requireCloudClient().getWorkspace();
64492
64593
  return {
64493
64594
  content: [{
64494
64595
  type: 'text',
@@ -64504,7 +64605,7 @@ function startMcpServer() {
64504
64605
  if (isLocalMode) {
64505
64606
  return { content: [{ type: 'text', text: 'Constitution rules are not available in local mode.' }] };
64506
64607
  }
64507
- const result = await client.getConstitution();
64608
+ const result = await requireCloudClient().getConstitution();
64508
64609
  return {
64509
64610
  content: [{
64510
64611
  type: 'text',
@@ -64527,7 +64628,7 @@ function startMcpServer() {
64527
64628
  if (isLocalMode) {
64528
64629
  return { content: [{ type: 'text', text: 'Status updates are not available in local mode. Use cloud mode.' }] };
64529
64630
  }
64530
- const result = await client.updateIntentStatus(intentId, status);
64631
+ const result = await requireCloudClient().updateIntentStatus(intentId, status);
64531
64632
  let responseText = `Intent ${intentId} status updated to "${status}".`;
64532
64633
  // Surface verification checklist for shipped/verified transitions
64533
64634
  if (result.verificationChecklist && result.verificationChecklist.length > 0) {
@@ -64556,7 +64657,7 @@ function startMcpServer() {
64556
64657
  if (isLocalMode) {
64557
64658
  return { content: [{ type: 'text', text: 'Notes are not available in local mode. Use cloud mode.' }] };
64558
64659
  }
64559
- const result = await client.logNote(intentId, note, 'mcp');
64660
+ const result = await requireCloudClient().logNote(intentId, note, 'mcp');
64560
64661
  return {
64561
64662
  content: [{
64562
64663
  type: 'text',
@@ -64590,7 +64691,7 @@ function startMcpServer() {
64590
64691
  if (isLocalMode) {
64591
64692
  return { content: [{ type: 'text', text: 'Creating intents requires cloud mode. Use PATHMODE_API_KEY to connect.' }] };
64592
64693
  }
64593
- const result = await client.createIntent({ productId, ...rest });
64694
+ const result = await requireCloudClient().createIntent({ productId, ...rest });
64594
64695
  return {
64595
64696
  content: [{
64596
64697
  type: 'text',
@@ -64624,7 +64725,7 @@ function startMcpServer() {
64624
64725
  if (isLocalMode) {
64625
64726
  return { content: [{ type: 'text', text: 'Updating intents requires cloud mode.' }] };
64626
64727
  }
64627
- const result = await client.updateIntent(intentId, updates);
64728
+ const result = await requireCloudClient().updateIntent(intentId, updates);
64628
64729
  const changedFields = Object.keys(updates).filter(k => updates[k] !== undefined);
64629
64730
  return {
64630
64731
  content: [{
@@ -64649,7 +64750,7 @@ function startMcpServer() {
64649
64750
  if (isLocalMode) {
64650
64751
  return { content: [{ type: 'text', text: 'Evidence queries require cloud mode.' }] };
64651
64752
  }
64652
- const result = await client.queryEvidence(filters);
64753
+ const result = await requireCloudClient().queryEvidence(filters);
64653
64754
  return {
64654
64755
  content: [{
64655
64756
  type: 'text',
@@ -64669,14 +64770,14 @@ function startMcpServer() {
64669
64770
  severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']).optional().describe('Severity level (required for friction type)'),
64670
64771
  sentiment: zod_1.z.enum(['positive', 'negative', 'neutral', 'mixed']).optional().describe('Emotional sentiment'),
64671
64772
  tags: zod_1.z.array(zod_1.z.string()).optional().describe('Category tags (e.g., ["Onboarding", "Performance"])'),
64672
- stage: zod_1.z.string().optional().describe('User journey stage (e.g., "Discovery", "Checkout")'),
64773
+ stage: zod_1.z.string().optional().describe('Workflow stage (e.g., "Discovery", "Checkout")'),
64673
64774
  },
64674
64775
  annotations: WRITE_OP,
64675
64776
  }, async ({ productId, ...rest }) => {
64676
64777
  if (isLocalMode) {
64677
64778
  return { content: [{ type: 'text', text: 'Creating evidence requires cloud mode.' }] };
64678
64779
  }
64679
- const result = await client.createEvidence({ productId, ...rest });
64780
+ const result = await requireCloudClient().createEvidence({ productId, ...rest });
64680
64781
  return {
64681
64782
  content: [{
64682
64783
  type: 'text',
@@ -64697,7 +64798,7 @@ function startMcpServer() {
64697
64798
  if (isLocalMode) {
64698
64799
  return { content: [{ type: 'text', text: 'Evidence linking requires cloud mode.' }] };
64699
64800
  }
64700
- const result = await client.linkEvidence(intentId, { link, unlink });
64801
+ const result = await requireCloudClient().linkEvidence(intentId, { link, unlink });
64701
64802
  const actions = [];
64702
64803
  if (link && link.length > 0)
64703
64804
  actions.push(`linked ${result.linked} evidence items`);
@@ -64724,7 +64825,7 @@ function startMcpServer() {
64724
64825
  return { content: [{ type: 'text', text: 'Verification requires cloud mode.' }] };
64725
64826
  }
64726
64827
  try {
64727
- const result = await client.verifyImplementation(intentId, summary, codeChanges);
64828
+ const result = await requireCloudClient().verifyImplementation(intentId, summary, codeChanges);
64728
64829
  let text = `Verification ${result.pass ? 'PASSED' : 'FAILED'} (score: ${result.score}/100)\n\n`;
64729
64830
  text += `${result.summary}\n\n`;
64730
64831
  for (const r of result.results) {
@@ -64801,6 +64902,10 @@ function startMcpServer() {
64801
64902
  expectedBehavior: zod_1.z.string(),
64802
64903
  })).optional().describe('Failure modes and boundary conditions'),
64803
64904
  healthMetrics: zod_1.z.array(zod_1.z.string()).optional().describe('What to monitor after shipping'),
64905
+ scope: zod_1.z.object({
64906
+ inScope: zod_1.z.array(zod_1.z.string()).optional().describe('What is in scope for this intent'),
64907
+ outOfScope: zod_1.z.array(zod_1.z.string()).optional().describe('What is explicitly out of scope'),
64908
+ }).optional().describe('Scope boundaries — what to build and what to avoid'),
64804
64909
  verification: zod_1.z.object({
64805
64910
  manualChecks: zod_1.z.array(zod_1.z.string()).optional(),
64806
64911
  unitTests: zod_1.z.array(zod_1.z.string()).optional(),
@@ -64884,15 +64989,27 @@ function startMcpServer() {
64884
64989
  }]
64885
64990
  };
64886
64991
  }
64887
- const intents = await client.listIntents('approved');
64888
- const current = intents[0] || (await client.listIntents())[0] || null;
64889
- return {
64890
- contents: [{
64891
- uri: uri.href,
64892
- mimeType: 'application/json',
64893
- text: JSON.stringify(current, null, 2),
64894
- }]
64895
- };
64992
+ try {
64993
+ const cloud = requireCloudClient();
64994
+ const intents = await cloud.listIntents('approved');
64995
+ const current = intents[0] || (await cloud.listIntents())[0] || null;
64996
+ return {
64997
+ contents: [{
64998
+ uri: uri.href,
64999
+ mimeType: 'application/json',
65000
+ text: JSON.stringify(current, null, 2),
65001
+ }]
65002
+ };
65003
+ }
65004
+ catch {
65005
+ return {
65006
+ contents: [{
65007
+ uri: uri.href,
65008
+ mimeType: 'application/json',
65009
+ text: JSON.stringify({ error: CLOUD_REQUIRED_MSG }),
65010
+ }]
65011
+ };
65012
+ }
64896
65013
  });
64897
65014
  server.resource('intent://graph', 'intent://graph', async (uri) => {
64898
65015
  if (isLocalMode) {
@@ -64904,20 +65021,31 @@ function startMcpServer() {
64904
65021
  }]
64905
65022
  };
64906
65023
  }
64907
- const intents = await client.listIntents();
64908
- const graph = intents.map(i => ({
64909
- id: i.id,
64910
- title: i.title,
64911
- status: i.status,
64912
- relations: i.relations,
64913
- }));
64914
- return {
64915
- contents: [{
64916
- uri: uri.href,
64917
- mimeType: 'application/json',
64918
- text: JSON.stringify(graph, null, 2),
64919
- }]
64920
- };
65024
+ try {
65025
+ const intents = await requireCloudClient().listIntents();
65026
+ const graph = intents.map(i => ({
65027
+ id: i.id,
65028
+ title: i.title,
65029
+ status: i.status,
65030
+ relations: i.relations,
65031
+ }));
65032
+ return {
65033
+ contents: [{
65034
+ uri: uri.href,
65035
+ mimeType: 'application/json',
65036
+ text: JSON.stringify(graph, null, 2),
65037
+ }]
65038
+ };
65039
+ }
65040
+ catch {
65041
+ return {
65042
+ contents: [{
65043
+ uri: uri.href,
65044
+ mimeType: 'application/json',
65045
+ text: JSON.stringify({ error: CLOUD_REQUIRED_MSG }),
65046
+ }]
65047
+ };
65048
+ }
64921
65049
  });
64922
65050
  server.resource('intent://workspace-strategy', 'intent://workspace-strategy', async (uri) => {
64923
65051
  if (isLocalMode) {
@@ -64930,7 +65058,7 @@ function startMcpServer() {
64930
65058
  };
64931
65059
  }
64932
65060
  try {
64933
- const workspace = await client.getWorkspace();
65061
+ const workspace = await requireCloudClient().getWorkspace();
64934
65062
  return {
64935
65063
  contents: [{
64936
65064
  uri: uri.href,
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,YAAY;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC,EAAE,CAAC;IAC7F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,YAAY,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACL;AAwDD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA0D/C;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+FzD;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAwF5D;AAOD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAsDhE"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,YAAY;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC,EAAE,CAAC;IAC7F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,YAAY,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACL;AAwDD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA2D/C;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+FzD;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAwF5D;AAOD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAsDhE"}
@@ -17,6 +17,10 @@ export interface LocalIntent {
17
17
  expectedBehavior: string;
18
18
  }[];
19
19
  healthMetrics: string[];
20
+ scope?: {
21
+ inScope?: string[];
22
+ outOfScope?: string[];
23
+ };
20
24
  verification: Record<string, any>;
21
25
  source: 'local';
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/local-reader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAmBhD"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/local-reader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAmBhD"}
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "pathmode",
4
4
  "display_name": "Pathmode",
5
- "version": "1.4.0",
5
+ "version": "1.4.4",
6
6
  "description": "Build structured intent specs through Socratic AI conversation, or connect to your Intent Layer for strategic context and dependency graphs.",
7
7
  "long_description": "Pathmode MCP Server includes the Intent Compiler — a zero-config Socratic conversation that helps you build structured intent specs (objectives, outcomes, constraints, edge cases) right in Claude Code. No signup needed. For teams, connect to your Pathmode workspace for dependency graph analysis (critical path, bottlenecks, cycles), workspace strategy context, and governance — so AI agents build the right thing, not just any thing.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "@pathmode/mcp-server",
3
- "version": "1.4.4",
3
+ "version": "1.4.5",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
4
7
  "mcpName": "io.github.pathmodeio/mcp-server",
5
8
  "description": "Pathmode MCP Server — Build structured intent specs through Socratic AI conversation (zero-config), or connect to your Intent Layer for strategic context, dependency graphs, and implementation prompts.",
6
9
  "main": "dist/index.js",