@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 +1 -1
- package/dist/api-client.d.ts +0 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/index.js +197 -69
- package/dist/intent-compiler.d.ts.map +1 -1
- package/dist/local-reader.d.ts +4 -0
- package/dist/local-reader.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +4 -1
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
|
-
- [
|
|
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
|
|
package/dist/api-client.d.ts
CHANGED
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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
|
-
|
|
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}: ${
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
64238
|
+
const cloud = requireCloudClient();
|
|
64239
|
+
const intents = await cloud.listIntents(status || 'approved');
|
|
64145
64240
|
if (intents.length === 0) {
|
|
64146
|
-
const allIntents = await
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
64315
|
-
|
|
64316
|
-
|
|
64317
|
-
|
|
64318
|
-
|
|
64319
|
-
|
|
64320
|
-
|
|
64321
|
-
|
|
64322
|
-
|
|
64323
|
-
|
|
64324
|
-
|
|
64325
|
-
|
|
64326
|
-
|
|
64327
|
-
|
|
64328
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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('
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
64888
|
-
|
|
64889
|
-
|
|
64890
|
-
|
|
64891
|
-
|
|
64892
|
-
|
|
64893
|
-
|
|
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
|
-
|
|
64908
|
-
|
|
64909
|
-
|
|
64910
|
-
|
|
64911
|
-
|
|
64912
|
-
|
|
64913
|
-
|
|
64914
|
-
|
|
64915
|
-
|
|
64916
|
-
|
|
64917
|
-
|
|
64918
|
-
|
|
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
|
|
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,
|
|
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"}
|
package/dist/local-reader.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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",
|