@pathmode/mcp-server 1.20.2 → 1.21.0

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
@@ -4,6 +4,8 @@ Deterministic intent preflight before your agent builds: six calibrated gates, k
4
4
 
5
5
  No signup and no API key. Specs live in `intent.md` in your repo, as plain markdown you own.
6
6
 
7
+ This repository dogfoods the same workflow: [read its intent.md](intent.md).
8
+
7
9
  `check_intent_readiness` is the first move: it scores a spec against the six gates of the
8
10
  [intent.md profile](https://intentspec.org/intent-md) and names the exact blockers, with no model
9
11
  call, so the same spec always gets the same verdict. The Intent Compiler below drafts and sharpens
@@ -242,6 +244,18 @@ Pass `--local` only to force local mode when an API key *is* configured:
242
244
  | `update_intent_status` | Update intent status (draft > validated > approved > shipped > verified) |
243
245
  | `log_implementation_note` | Record a technical decision or implementation note |
244
246
 
247
+ #### PM-to-Repository Change Requests
248
+
249
+ | Tool | Description |
250
+ |------|-------------|
251
+ | `list_intent_change_requests` | Discover structured PM requests workspace-wide, or narrow to one repository-authority intent; reading records agent consumption |
252
+ | `get_intent_change_request` | Read one request with its exact base revision, operation, proposed value, and reason |
253
+ | `reject_intent_change_request` | Report an unworkable request with an API-key-attributed reason |
254
+
255
+ Apply a request by editing `intent.md`, then call `intent_save` with both `changeRequestId` and
256
+ `baseRepoBodyRevision`. Pathmode compares immutable snapshots and closes the request itself; an
257
+ agent cannot submit a success flag or diff.
258
+
245
259
  #### Strategic Analysis
246
260
 
247
261
  | Tool | Description |
@@ -332,7 +346,7 @@ Full privacy policy: [pathmode.io/privacy](https://pathmode.io/privacy)
332
346
 
333
347
  - [IntentSpec](https://intentspec.org/spec) — the open specification for the `intent.md` files this server writes
334
348
  - [The intent.md profile](https://intentspec.org/intent-md) — the six checks `check_intent_readiness` scores against
335
- - [Intent Compiler](https://pathmode.io/intent-compiler) — interactive setup and product overview
349
+ - [Preflight](https://pathmode.io/preflight) — interactive readiness check and local workflow setup
336
350
  - [Pathmode](https://pathmode.io) — full platform for teams
337
351
  - [Issues](https://github.com/pathmodeio/mcp-server/issues)
338
352
 
package/dist/index.js CHANGED
@@ -40103,6 +40103,25 @@ class PathmodeClient {
40103
40103
  });
40104
40104
  return res.json();
40105
40105
  }
40106
+ async listIntentChangeRequests(intentId, status = 'open') {
40107
+ const res = await this.fetch(`/intents/${intentId}/change-requests?status=${encodeURIComponent(status)}`);
40108
+ return res.json();
40109
+ }
40110
+ async listWorkspaceIntentChangeRequests(status = 'open') {
40111
+ const res = await this.fetch(`/change-requests?status=${encodeURIComponent(status)}`);
40112
+ return res.json();
40113
+ }
40114
+ async getIntentChangeRequest(intentId, requestId) {
40115
+ const res = await this.fetch(`/intents/${intentId}/change-requests/${requestId}`);
40116
+ return res.json();
40117
+ }
40118
+ async rejectIntentChangeRequest(intentId, requestId, reason) {
40119
+ const res = await this.fetch(`/intents/${intentId}/change-requests/${requestId}`, {
40120
+ method: 'PATCH',
40121
+ body: JSON.stringify({ action: 'reject', reason }),
40122
+ });
40123
+ return res.json();
40124
+ }
40106
40125
  async queryEvidence(filters = {}) {
40107
40126
  const params = new URLSearchParams();
40108
40127
  for (const [key, val] of Object.entries(filters)) {
@@ -42468,6 +42487,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
42468
42487
  exports.pushSpec = pushSpec;
42469
42488
  async function pushSpec(input) {
42470
42489
  const { client, id, existingSpecVersion, payload } = input;
42490
+ // Confirmations are cloud-authored judgment. They are deliberately absent from the
42491
+ // intent_save tool shape, and this last boundary keeps a future caller from accidentally
42492
+ // turning a repo push into a replace-all confirmation import.
42493
+ const identityPayload = { ...payload };
42494
+ delete identityPayload.confirmations;
42471
42495
  let canonicalId;
42472
42496
  let specVersion;
42473
42497
  let sourceUrl;
@@ -42480,11 +42504,18 @@ async function pushSpec(input) {
42480
42504
  // quietly break the merge resolution that stamp exists for.
42481
42505
  let saved;
42482
42506
  if (existingSpecVersion) {
42483
- saved = await client.updateIntent(id, { ...payload, expectedVersion: existingSpecVersion });
42507
+ saved = await client.updateIntent(id, {
42508
+ ...identityPayload,
42509
+ expectedVersion: existingSpecVersion,
42510
+ ...(input.changeRequest ? {
42511
+ changeRequestId: input.changeRequest.id,
42512
+ expectedRepoBodyRevision: input.changeRequest.baseRepoBodyRevision,
42513
+ } : {}),
42514
+ });
42484
42515
  }
42485
42516
  else {
42486
42517
  try {
42487
- saved = await client.createIntent({ ...payload, id });
42518
+ saved = await client.createIntent({ ...identityPayload, id });
42488
42519
  }
42489
42520
  catch (e) {
42490
42521
  // The create may have COMMITTED and lost its response — a dropped connection after
@@ -42519,12 +42550,44 @@ async function pushSpec(input) {
42519
42550
  }
42520
42551
  input.onIdentitySettled({ canonicalId, specVersion, sourceUrl, origin, authorization, authorizationNote });
42521
42552
  const didNotTravel = [];
42553
+ let pendingChangeRequest = input.changeRequest;
42554
+ if (pendingChangeRequest && input.client.getIntentChangeRequest) {
42555
+ try {
42556
+ const settled = await input.client.getIntentChangeRequest(canonicalId, pendingChangeRequest.id);
42557
+ if (settled.changeRequest?.status !== 'open')
42558
+ pendingChangeRequest = undefined;
42559
+ }
42560
+ catch {
42561
+ // Keep the original context. The write endpoint still performs the authoritative lock
42562
+ // and stale-base check; a failed observation must not silently drop that guard.
42563
+ }
42564
+ }
42522
42565
  for (const d of input.decisions ?? []) {
42523
42566
  try {
42524
- await client.recordDecision(canonicalId, { choice: d.choice, reason: d.reason, ruledOut: d.ruledOut });
42567
+ await client.recordDecision(canonicalId, {
42568
+ choice: d.choice,
42569
+ reason: d.reason,
42570
+ ruledOut: d.ruledOut,
42571
+ ...(pendingChangeRequest ? {
42572
+ changeRequestId: pendingChangeRequest.id,
42573
+ expectedRepoBodyRevision: pendingChangeRequest.baseRepoBodyRevision,
42574
+ } : {}),
42575
+ });
42525
42576
  }
42526
42577
  catch {
42527
42578
  didNotTravel.push(`decision "${d.choice.slice(0, 40)}" — save again to retry`);
42579
+ continue;
42580
+ }
42581
+ if (pendingChangeRequest && input.client.getIntentChangeRequest) {
42582
+ try {
42583
+ const settled = await input.client.getIntentChangeRequest(canonicalId, pendingChangeRequest.id);
42584
+ if (settled.changeRequest?.status !== 'open')
42585
+ pendingChangeRequest = undefined;
42586
+ }
42587
+ catch {
42588
+ // The decision already persisted. A failed observation cannot turn that successful
42589
+ // write into a false enrichment failure; the final status read reports uncertainty.
42590
+ }
42528
42591
  }
42529
42592
  }
42530
42593
  if (input.implementationContext?.trim()) {
@@ -42534,12 +42597,30 @@ async function pushSpec(input) {
42534
42597
  await client.saveImplementationContext(canonicalId, {
42535
42598
  currentBehavior: input.implementationContext,
42536
42599
  ...(specVersion ? { expectedSpecVersion: specVersion } : {}),
42600
+ ...(pendingChangeRequest ? {
42601
+ changeRequestId: pendingChangeRequest.id,
42602
+ expectedRepoBodyRevision: pendingChangeRequest.baseRepoBodyRevision,
42603
+ } : {}),
42537
42604
  });
42538
42605
  }
42539
42606
  catch {
42540
42607
  didNotTravel.push('implementation context — call record_implementation_context to retry');
42541
42608
  }
42542
42609
  }
42610
+ if (pendingChangeRequest && input.client.getIntentChangeRequest) {
42611
+ try {
42612
+ const finalRequest = await input.client.getIntentChangeRequest(canonicalId, pendingChangeRequest.id);
42613
+ if (finalRequest.changeRequest?.status === 'open') {
42614
+ didNotTravel.push(`change request ${pendingChangeRequest.id} remains open — the synced revision did not satisfy it`);
42615
+ }
42616
+ else if (finalRequest.changeRequest?.status === 'superseded') {
42617
+ didNotTravel.push(`change request ${pendingChangeRequest.id} was superseded — re-read it before making another change`);
42618
+ }
42619
+ }
42620
+ catch {
42621
+ didNotTravel.push(`change request ${pendingChangeRequest.id} status could not be confirmed`);
42622
+ }
42623
+ }
42543
42624
  return { ok: true, canonicalId, specVersion, sourceUrl, didNotTravel };
42544
42625
  }
42545
42626
 
@@ -72785,7 +72866,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$schema":"http://json-schema.org/dra
72785
72866
  /***/ ((module) => {
72786
72867
 
72787
72868
  "use strict";
72788
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.20.2","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Deterministic intent preflight before your agent builds: six calibrated gates, keyless, no model call. Draft and sharpen specs in conversation, or connect a Pathmode workspace to sync intent and evidence across a team.","main":"dist/index.js","bin":{"pathmode-mcp":"dist/index.js"},"files":["dist/","manifest.json","icon.svg","README.md","skills/"],"scripts":{"build":"rm -rf dist && ncc build src/index.ts -o dist","dev":"ts-node src/index.ts","prepublishOnly":"npm run build"},"keywords":["pathmode","mcp","model-context-protocol","claude-code","claude-code-skills","agent-skills","cursor","windsurf","intent-engineering","intent-compiler","ai-agents","product-development","dependency-graph","strategic-planning"],"author":"Pathmode","license":"MIT","type":"commonjs","engines":{"node":">=18.0.0"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"overrides":{"@hono/node-server":"^1.19.17","body-parser":"^2.3.0","fast-uri":"^3.1.6","hono":"^4.13.5","ip-address":"^10.7.0","js-yaml":"^3.15.2"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
72869
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.21.0","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Deterministic intent preflight before your agent builds: six calibrated gates, keyless, no model call. Draft and sharpen specs in conversation, or connect a Pathmode workspace to sync intent and evidence across a team.","main":"dist/index.js","bin":{"pathmode-mcp":"dist/index.js"},"files":["dist/","manifest.json","icon.svg","README.md","skills/"],"scripts":{"build":"rm -rf dist && ncc build src/index.ts -o dist","dev":"ts-node src/index.ts","prepublishOnly":"npm run build"},"keywords":["pathmode","mcp","model-context-protocol","claude-code","claude-code-skills","agent-skills","cursor","windsurf","intent-engineering","intent-compiler","ai-agents","product-development","dependency-graph","strategic-planning"],"author":"Pathmode","license":"MIT","type":"commonjs","engines":{"node":">=18.0.0"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"overrides":{"@hono/node-server":"^1.19.17","body-parser":"^2.3.0","fast-uri":"^3.1.6","hono":"^4.13.5","ip-address":"^10.7.0","js-yaml":"^3.15.2"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
72789
72870
 
72790
72871
  /***/ })
72791
72872
 
@@ -72966,7 +73047,7 @@ function startMcpServer() {
72966
73047
  'A failing verdict names the exact blockers; repair them one targeted question at a time. Never block work on a failing verdict. ' +
72967
73048
  'To sync with a shared Pathmode workspace later, run: npx @pathmode/mcp-server setup pm_live_xxx';
72968
73049
  const CLOUD_MODE_INSTRUCTIONS = 'Pathmode is connected to a workspace (cloud mode). ' +
72969
- 'First move: call check_intent_readiness before implementation starts. With no arguments it prefers this repo\'s intent.md and falls back to the workspace current intent only when no repo-bound file exists; a failing verdict names the exact blockers to repair. ' +
73050
+ 'First move: call check_intent_readiness before implementation starts. With no arguments it resolves this repo\'s intent.md from MCP workspace roots or the server launch directory. It falls back to the workspace current intent only after client-declared roots show that no repo-bound file exists; when the repository cannot be identified it refuses to guess. A failing verdict names the exact blockers to repair. ' +
72970
73051
  'If tools fail with API error (401), the configured key is invalid: re-run npx @pathmode/mcp-server setup with a fresh key from your workspace settings at https://pathmode.io, ' +
72971
73052
  'or remove PATHMODE_API_KEY and restart to fall back to free keyless local mode (specs live in intent.md, no account needed).';
72972
73053
  const server = new mcp_js_1.McpServer({
@@ -73110,6 +73191,39 @@ function startMcpServer() {
73110
73191
  return anyReady;
73111
73192
  return intents[0];
73112
73193
  }
73194
+ /**
73195
+ * Resolve the intent bound to the repository the MCP client says it is working in.
73196
+ *
73197
+ * Global MCP configurations launch the server from an arbitrary directory, so cwd is only a
73198
+ * fallback for clients that do not advertise roots. Declared roots win even when cwd happens to
73199
+ * contain a different intent.md. If roots cannot be resolved and cwd has no intent.md, callers
73200
+ * must not silently substitute the workspace's heuristic "current" intent — that is how a
73201
+ * preflight for one repository graded the demo shoe-return intent instead.
73202
+ */
73203
+ async function resolveRepoBoundIntent(intentId) {
73204
+ const canListRoots = !!server.server.getClientCapabilities()?.roots;
73205
+ if (canListRoots) {
73206
+ const dirs = await (0, repo_id_1.resolveWorkspaceDirs)(() => server.server.listRoots(undefined, { timeout: 2000 }), {});
73207
+ if (dirs.length > 0) {
73208
+ const candidates = Array.from(new Set(dirs.map(dir => (0, path_1.resolve)(dir, 'intent.md'))))
73209
+ .map(path => ({ path, intent: (0, local_reader_1.readIntentFile)(path) }))
73210
+ .filter((candidate) => !!candidate.intent);
73211
+ const matching = intentId
73212
+ ? candidates.filter(candidate => candidate.intent.id === intentId)
73213
+ : candidates;
73214
+ if (matching.length === 1)
73215
+ return { kind: 'found', ...matching[0] };
73216
+ if (matching.length > 1)
73217
+ return { kind: 'ambiguous', paths: matching.map(candidate => candidate.path) };
73218
+ return { kind: 'absent', rootsInspected: true };
73219
+ }
73220
+ }
73221
+ const path = (0, path_1.resolve)(process.cwd(), 'intent.md');
73222
+ const intent = (0, local_reader_1.readIntentFile)(path);
73223
+ if (intent && (!intentId || intent.id === intentId))
73224
+ return { kind: 'found', intent, path };
73225
+ return { kind: 'absent', rootsInspected: false };
73226
+ }
73113
73227
  /** The union of evidence IDs an intent cites: directly linked + section anchors + decision-cited.
73114
73228
  * Mirrors lib/intentSpecHelpers.collectSpecEvidenceIds (the MCP package can't import app/lib). */
73115
73229
  function collectCitedEvidenceIds(intent) {
@@ -73245,6 +73359,51 @@ function startMcpServer() {
73245
73359
  return { content: [{ type: 'text', text: `Failed to fetch intent: ${e.message}` }] };
73246
73360
  }
73247
73361
  });
73362
+ cloudOnly.registerTool('list_intent_change_requests', {
73363
+ title: 'List Intent Change Requests',
73364
+ description: 'List structured PM requests waiting on this repository. Omit intentId to discover open requests across the connected workspace; pass it to narrow to one intent. Read these before editing intent.md. Each open request is bound to one baseRepoBodyRevision; pass its id and base revision to intent_save when you deliberately apply it.',
73365
+ inputSchema: {
73366
+ intentId: zod_1.z.string().optional().describe('Repository-authority intent to inspect. Omit to list workspace-wide.'),
73367
+ status: zod_1.z.enum(['open', 'applied', 'rejected', 'withdrawn', 'superseded', 'all']).optional().describe('Lifecycle filter; defaults to open'),
73368
+ },
73369
+ annotations: READ_ONLY,
73370
+ }, async ({ intentId, status }) => {
73371
+ const cloud = requireCloudClient();
73372
+ const result = intentId
73373
+ ? await cloud.listIntentChangeRequests(intentId, status ?? 'open')
73374
+ : await cloud.listWorkspaceIntentChangeRequests(status ?? 'open');
73375
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
73376
+ });
73377
+ cloudOnly.registerTool('get_intent_change_request', {
73378
+ title: 'Get Intent Change Request',
73379
+ description: 'Read one structured PM request with its exact base revision, operation, expected old value, proposed value, and reason. Reading records agent consumption; it does not claim the request was applied.',
73380
+ inputSchema: {
73381
+ intentId: zod_1.z.string().describe('The request intent'),
73382
+ requestId: zod_1.z.string().describe('The change-request ID'),
73383
+ },
73384
+ annotations: READ_ONLY,
73385
+ }, async ({ intentId, requestId }) => {
73386
+ const result = await requireCloudClient().getIntentChangeRequest(intentId, requestId);
73387
+ return { content: [{ type: 'text', text: JSON.stringify(result.changeRequest, null, 2) }] };
73388
+ });
73389
+ cloudOnly.registerTool('reject_intent_change_request', {
73390
+ title: 'Reject Intent Change Request',
73391
+ description: 'Report that an open PM request cannot or should not be applied. This records the API-key principal and requires a concrete reason. Do not use this for a stale base; re-read the current request instead.',
73392
+ inputSchema: {
73393
+ intentId: zod_1.z.string().describe('The request intent'),
73394
+ requestId: zod_1.z.string().describe('The change-request ID'),
73395
+ reason: zod_1.z.string().trim().min(1).describe('Why the repository agent cannot apply it'),
73396
+ },
73397
+ annotations: WRITE_OP,
73398
+ }, async ({ intentId, requestId, reason }) => {
73399
+ const result = await requireCloudClient().rejectIntentChangeRequest(intentId, requestId, reason);
73400
+ return {
73401
+ content: [{
73402
+ type: 'text',
73403
+ text: `Change request ${requestId} rejected: ${result.changeRequest.resolutionReason ?? reason}`,
73404
+ }],
73405
+ };
73406
+ });
73248
73407
  const outcomeInputShape = zod_1.z.union([
73249
73408
  zod_1.z.string().trim().min(1),
73250
73409
  zod_1.z.object({
@@ -73621,11 +73780,34 @@ function startMcpServer() {
73621
73780
  if (isLocalMode) {
73622
73781
  return { content: [{ type: 'text', text: 'Agent prompts require cloud mode for full context generation.' }] };
73623
73782
  }
73624
- const result = await requireCloudClient().getIntentPrompt(intentId, 'claude-code', mode || 'execute');
73783
+ const cloud = requireCloudClient();
73784
+ const [result, openRequests] = await Promise.all([
73785
+ cloud.getIntentPrompt(intentId, 'claude-code', mode || 'execute'),
73786
+ cloud.listIntentChangeRequests(intentId, 'open').catch(() => ({ changeRequests: [], count: 0 })),
73787
+ ]);
73788
+ const requestBlock = openRequests.changeRequests.length > 0
73789
+ ? [
73790
+ '# OPEN PM CHANGE REQUESTS — HANDLE BEFORE IMPLEMENTATION',
73791
+ '',
73792
+ 'These requests are judgment against one exact intent.md revision. Read each request, update intent.md deliberately, then call intent_save with that request\'s exact `changeRequestId` and `baseRepoBodyRevision`. Do not start product implementation until the resulting revision is authorized. Reject an unworkable request with reject_intent_change_request and a concrete reason.',
73793
+ '',
73794
+ ...openRequests.changeRequests.flatMap((request) => [
73795
+ `## ${request.id}`,
73796
+ `- Base revision: ${request.baseRepoBodyRevision}`,
73797
+ `- Requested change: ${request.operation} ${request.targetField}${request.targetItemId ? ` (${request.targetItemId})` : ''}`,
73798
+ `- Reason: ${request.reason}`,
73799
+ ...(request.expectedOldValue !== undefined ? [`- Expected old value: ${JSON.stringify(request.expectedOldValue)}`] : []),
73800
+ ...(request.proposedValue !== undefined ? [`- Proposed value: ${JSON.stringify(request.proposedValue)}`] : []),
73801
+ '',
73802
+ ]),
73803
+ '---',
73804
+ '',
73805
+ ].join('\n')
73806
+ : '';
73625
73807
  return {
73626
73808
  content: [{
73627
73809
  type: 'text',
73628
- text: result.prompt
73810
+ text: `${requestBlock}${result.prompt}`,
73629
73811
  }]
73630
73812
  };
73631
73813
  });
@@ -74045,7 +74227,7 @@ function startMcpServer() {
74045
74227
  role: 'user',
74046
74228
  content: {
74047
74229
  type: 'text',
74048
- text: `I need to implement intent ${intentId}. Please:\n1. Use the get_agent_prompt tool to fetch the full execution prompt for this intent\n2. Use get_constitution to check for workspace constraints I must respect\n3. Review the intent details and create an implementation plan\n4. Name the work so the merge can find it: branch \`intent/${intentId}\`, or put \`pathmode:${intentId}\` in the pull request body\n5. After implementation, use verify_implementation to AI-grade your work against the spec\n6. If this change goes through a pull request, STOP there — the merge grades the real diff and moves the intent to Shipped. Do NOT call update_intent_status: an intent already at shipped is skipped by the merge, so an early flip replaces a diff-backed verdict with an unverified one\n7. Only if there will be no pull request, use update_intent_status to mark it "shipped"\n8. Use log_implementation_note to document key technical decisions`,
74230
+ text: `I need to implement intent ${intentId}. Please:\n1. Use get_agent_prompt to fetch the full execution prompt; it includes any open PM change requests\n2. If a change request is open, read it, apply it to intent.md, and call intent_save with its exact changeRequestId and baseRepoBodyRevision. If it cannot be applied, use reject_intent_change_request with a concrete reason\n3. After any requested spec change, STOP until a signed-in product owner authorizes that exact new revision. Do not implement from a pending or stale revision\n4. Use get_constitution to check for workspace constraints I must respect\n5. Review the authorized intent details and create an implementation plan\n6. Name the work so the merge can find it: branch \`intent/${intentId}\`, or put \`pathmode:${intentId}\` in the pull request body\n7. After implementation, use verify_implementation to AI-grade your work against the spec\n8. If this change goes through a pull request, STOP there — the merge grades the real diff and moves the intent to Shipped. Do NOT call update_intent_status: an intent already at shipped is skipped by the merge, so an early flip replaces a diff-backed verdict with an unverified one\n9. Only if there will be no pull request, use update_intent_status to mark it "shipped"\n10. Use log_implementation_note to document key technical decisions`,
74049
74231
  },
74050
74232
  }],
74051
74233
  };
@@ -74152,9 +74334,9 @@ function startMcpServer() {
74152
74334
  }
74153
74335
  server.registerTool('check_intent_readiness', {
74154
74336
  title: 'Check Intent Readiness (Preflight)',
74155
- description: 'Run the deterministic preflight on an intent spec before handing it to an implementation agent. Six calibrated checks — title, objective, outcomes, constraints, edge cases, verification — computed by pure functions: no model call, no network, the same spec always gets the same verdict. Pass a spec inline to check before saving, pass intentId to check a specific saved intent, or pass nothing to prefer the repo-bound intent.md and fall back to the workspace current intent only when that file is absent. A failing verdict names the exact blockers; repair the fields and re-run. This is the gate that runs at preflight.pathmode.io.',
74337
+ description: 'Run the deterministic preflight on an intent spec before handing it to an implementation agent. Six calibrated checks — title, objective, outcomes, constraints, edge cases, verification — computed by pure functions: no model call, no network, the same spec always gets the same verdict. Pass a spec inline to check before saving, pass intentId to check a specific saved intent, or pass nothing to resolve the repo-bound intent.md from MCP workspace roots or the launch directory. Cloud mode falls back to the workspace current intent only after declared roots show no repo file; when the repository cannot be identified it refuses to guess. A failing verdict names the exact blockers; repair the fields and re-run. This is the gate that runs at preflight.pathmode.io.',
74156
74338
  inputSchema: {
74157
- spec: zod_1.z.object(intentSpecSchema).optional().describe('Check this spec directly (before saving). When omitted, prefer the repo-bound intent.md; in cloud mode, fall back to the workspace current intent only when that file is absent.'),
74339
+ spec: zod_1.z.object(intentSpecSchema).optional().describe('Check this spec directly (before saving). When omitted, resolve the repo-bound intent.md from MCP roots or cwd. Cloud fallback is allowed only when declared roots are known to contain no intent.md; unresolved repositories are never guessed.'),
74158
74340
  intentId: zod_1.z.string().optional().describe('Check a specific saved intent by id. Ignored when spec is passed.'),
74159
74341
  },
74160
74342
  annotations: READ_ONLY,
@@ -74166,9 +74348,18 @@ function startMcpServer() {
74166
74348
  // "current" intent is only a heuristic, so it must not outrank the repo binding.
74167
74349
  // An explicit different id still wins: the caller deliberately selected another
74168
74350
  // saved intent rather than asking us to infer the current one.
74169
- const repoIntent = (0, local_reader_1.readIntentFile)((0, path_1.resolve)(process.cwd(), 'intent.md'));
74170
- if (repoIntent && (!intentId || repoIntent.id === intentId)) {
74171
- subject = repoIntent;
74351
+ const repoResolution = await resolveRepoBoundIntent(intentId);
74352
+ if (repoResolution.kind === 'ambiguous') {
74353
+ return {
74354
+ content: [{
74355
+ type: 'text',
74356
+ text: `More than one MCP workspace root contains an intent.md (${repoResolution.paths.join(', ')}). Pass intentId or spec explicitly; Pathmode will not guess which repository governs this preflight.`,
74357
+ }],
74358
+ isError: true,
74359
+ };
74360
+ }
74361
+ if (repoResolution.kind === 'found') {
74362
+ subject = repoResolution.intent;
74172
74363
  sourceNote = 'repo-bound intent.md';
74173
74364
  }
74174
74365
  else if (isLocalMode) {
@@ -74187,6 +74378,15 @@ function startMcpServer() {
74187
74378
  }
74188
74379
  }
74189
74380
  else {
74381
+ if (!intentId && !repoResolution.rootsInspected) {
74382
+ return {
74383
+ content: [{
74384
+ type: 'text',
74385
+ text: 'Pathmode could not resolve this repository: the MCP client declared no usable workspace roots and the server launch directory has no intent.md. Pass intentId or spec explicitly, or launch the server from the repository root. The workspace current intent was not used because it may belong to a different repository.',
74386
+ }],
74387
+ isError: true,
74388
+ };
74389
+ }
74190
74390
  const cloud = requireCloudClient();
74191
74391
  // The list projection (INTENT_LIST_SELECT) omits intent_spec_edge_cases, so
74192
74392
  // grading a listed row fails the edge-case gate unconditionally — no saved
@@ -74221,7 +74421,11 @@ function startMcpServer() {
74221
74421
  spec: zod_1.z.object(intentSpecSchema),
74222
74422
  path: zod_1.z.string().optional().describe('File path relative to the project root. Must stay inside the project (absolute paths and ".." are rejected). Defaults to intent.md'),
74223
74423
  overwrite: zod_1.z.boolean().optional().describe('Replace the file even when it already holds a DIFFERENT intent. Default false — the save is refused instead, so an unrelated spec is never clobbered.'),
74224
- }, async ({ spec, path, overwrite }) => performIntentSave(spec, path, overwrite));
74424
+ changeRequestId: zod_1.z.string().uuid().optional().describe('Structured PM request this save deliberately applies. Requires baseRepoBodyRevision.'),
74425
+ baseRepoBodyRevision: zod_1.z.string().regex(/^[a-f0-9]{64}$/i).optional().describe('Exact base revision carried by the change request. Requires changeRequestId.'),
74426
+ }, async ({ spec, path, overwrite, changeRequestId, baseRepoBodyRevision }) => performIntentSave(spec, path, overwrite, 'intent_save', changeRequestId || baseRepoBodyRevision
74427
+ ? { id: changeRequestId, baseRepoBodyRevision }
74428
+ : undefined));
74225
74429
  /**
74226
74430
  * The whole save path — collision policy, verdict stamp, confirmation carry-forward, cloud push
74227
74431
  * with identity settlement — extracted so intent_import can reuse it EXACTLY. Import must not be
@@ -74229,8 +74433,17 @@ function startMcpServer() {
74229
74433
  * write path costs, and the confirmation carry-forward here is load-bearing (M1's tool boundary
74230
74434
  * assumes every writer goes through this).
74231
74435
  */
74232
- async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save') {
74436
+ async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save', changeRequest) {
74233
74437
  {
74438
+ if (changeRequest && (!changeRequest.id || !changeRequest.baseRepoBodyRevision)) {
74439
+ return {
74440
+ content: [{
74441
+ type: 'text',
74442
+ text: '✗ changeRequestId and baseRepoBodyRevision are required together. Re-read the open request and pass both exact values.',
74443
+ }],
74444
+ isError: true,
74445
+ };
74446
+ }
74234
74447
  const filePath = resolveWithinProject(path || 'intent.md');
74235
74448
  const existing = (0, local_reader_1.readIntentMeta)(filePath);
74236
74449
  const decision = (0, save_policy_1.decideSave)({
@@ -74253,6 +74466,15 @@ function startMcpServer() {
74253
74466
  }],
74254
74467
  };
74255
74468
  }
74469
+ if (changeRequest && decision.action !== 'update') {
74470
+ return {
74471
+ content: [{
74472
+ type: 'text',
74473
+ text: '✗ A change request can only be applied from the already-connected intent.md that carries its cloud identity and specVersion. Pull the intent first, then retry.',
74474
+ }],
74475
+ isError: true,
74476
+ };
74477
+ }
74256
74478
  const { id, version, status, created } = decision;
74257
74479
  // The preflight verdict travels with the file: stamped into frontmatter on every save,
74258
74480
  // recomputed from the spec alone (deterministic). A failing verdict never blocks the
@@ -74335,6 +74557,9 @@ function startMcpServer() {
74335
74557
  },
74336
74558
  decisions: spec.decisions,
74337
74559
  implementationContext: spec.implementationContext,
74560
+ changeRequest: changeRequest?.id && changeRequest.baseRepoBodyRevision
74561
+ ? { id: changeRequest.id, baseRepoBodyRevision: changeRequest.baseRepoBodyRevision }
74562
+ : undefined,
74338
74563
  onIdentitySettled: writeSpecFile,
74339
74564
  });
74340
74565
  if (!result.ok) {
@@ -44,6 +44,10 @@ export interface IntentDecision {
44
44
  }
45
45
  export interface ApiIntent {
46
46
  id: string;
47
+ /** Which side owns the spec body. Absent only when talking to an older server. */
48
+ specAuthority?: 'cloud' | 'repo';
49
+ /** Opaque semantic revision of the repository-owned body; never computed by the client. */
50
+ repoBodyRevision?: string | null;
47
51
  /** Opaque content token. Store it, send it back as `expectedVersion`; never derive it here. */
48
52
  specVersion?: string;
49
53
  workspaceId: string;
@@ -75,6 +79,8 @@ export interface ApiIntent {
75
79
  authorization?: 'pending' | 'authorized' | 'rejected' | null;
76
80
  /** The reviewer's note. Null means there is none NOW, which is not the same as unknown. */
77
81
  authorizationNote?: string | null;
82
+ /** Exact repoBodyRevision judged by the current verdict, when one is live. */
83
+ authorizedRepoBodyRevision?: string | null;
78
84
  /** Readiness confirmations and waivers. Present since mcp-server 1.16.0 / the confirmations column. */
79
85
  confirmations?: Record<string, unknown>[];
80
86
  decisions?: IntentDecision[];
@@ -163,6 +169,9 @@ export interface UpdateIntentInput {
163
169
  /** The specVersion this edit was based on. A mismatch is refused with 409 rather than
164
170
  * overwriting whoever moved the spec in between. */
165
171
  expectedVersion?: string;
172
+ /** Deliberately apply one PM request against the exact repo-body revision it was based on. */
173
+ changeRequestId?: string;
174
+ expectedRepoBodyRevision?: string;
166
175
  title?: string;
167
176
  objective?: string;
168
177
  /** Empty string clears the as-is description. */
@@ -203,6 +212,27 @@ export interface UpdateIntentInput {
203
212
  */
204
213
  confirmations?: Record<string, unknown>[];
205
214
  }
215
+ export interface ApiIntentChangeRequest {
216
+ id: string;
217
+ intentId: string;
218
+ workspaceId: string;
219
+ baseRepoBodyRevision: string;
220
+ targetField: string;
221
+ targetItemId?: string;
222
+ expectedOldValue?: unknown;
223
+ operation: 'replace' | 'add' | 'remove';
224
+ proposedValue?: unknown;
225
+ reason: string;
226
+ authorUserId: string;
227
+ status: 'open' | 'applied' | 'rejected' | 'withdrawn' | 'superseded';
228
+ firstConsumedAt?: number;
229
+ lastConsumedAt?: number;
230
+ appliedRepoBodyRevision?: string;
231
+ serverDiff?: unknown;
232
+ resolutionReason?: string;
233
+ createdAt: number;
234
+ updatedAt: number;
235
+ }
206
236
  export interface EvidenceQuery {
207
237
  productId?: string;
208
238
  type?: string;
@@ -481,6 +511,20 @@ export declare class PathmodeClient {
481
511
  exportContext(format: 'claude-md' | 'agents-md' | 'cursorrules' | 'intent-md', intentId?: string, productId?: string): Promise<string>;
482
512
  createIntent(input: CreateIntentInput): Promise<ApiIntent>;
483
513
  updateIntent(id: string, updates: UpdateIntentInput): Promise<ApiIntent>;
514
+ listIntentChangeRequests(intentId: string, status?: ApiIntentChangeRequest['status'] | 'all'): Promise<{
515
+ changeRequests: ApiIntentChangeRequest[];
516
+ count: number;
517
+ }>;
518
+ listWorkspaceIntentChangeRequests(status?: ApiIntentChangeRequest['status'] | 'all'): Promise<{
519
+ changeRequests: ApiIntentChangeRequest[];
520
+ count: number;
521
+ }>;
522
+ getIntentChangeRequest(intentId: string, requestId: string): Promise<{
523
+ changeRequest: ApiIntentChangeRequest;
524
+ }>;
525
+ rejectIntentChangeRequest(intentId: string, requestId: string, reason: string): Promise<{
526
+ changeRequest: ApiIntentChangeRequest;
527
+ }>;
484
528
  queryEvidence(filters?: EvidenceQuery): Promise<{
485
529
  evidence: ApiEvidence[];
486
530
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"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"}
@@ -23,11 +23,11 @@ export declare const queryRefShape: z.ZodObject<{
23
23
  kind: z.ZodString;
24
24
  id: z.ZodString;
25
25
  }, "strip", z.ZodTypeAny, {
26
- id: string;
27
26
  kind: string;
28
- }, {
29
27
  id: string;
28
+ }, {
30
29
  kind: string;
30
+ id: string;
31
31
  }>;
32
32
  /**
33
33
  * Refinements do not appear in the JSON Schema the model sees, so the requirement is also
@@ -91,23 +91,23 @@ export declare const outcomeMeasurementDefinitionShape: z.ZodObject<{
91
91
  kind: z.ZodString;
92
92
  id: z.ZodString;
93
93
  }, "strip", z.ZodTypeAny, {
94
- id: string;
95
94
  kind: string;
96
- }, {
97
95
  id: string;
96
+ }, {
98
97
  kind: string;
98
+ id: string;
99
99
  }>;
100
100
  }, "strip", z.ZodTypeAny, {
101
101
  provider: string;
102
102
  queryRef: {
103
- id: string;
104
103
  kind: string;
104
+ id: string;
105
105
  };
106
106
  }, {
107
107
  provider: string;
108
108
  queryRef: {
109
- id: string;
110
109
  kind: string;
110
+ id: string;
111
111
  };
112
112
  }>;
113
113
  resultSelector: z.ZodOptional<z.ZodString>;
@@ -164,8 +164,8 @@ export declare const outcomeMeasurementDefinitionShape: z.ZodObject<{
164
164
  source: {
165
165
  provider: string;
166
166
  queryRef: {
167
- id: string;
168
167
  kind: string;
168
+ id: string;
169
169
  };
170
170
  };
171
171
  expectation: {
@@ -184,8 +184,8 @@ export declare const outcomeMeasurementDefinitionShape: z.ZodObject<{
184
184
  source: {
185
185
  provider: string;
186
186
  queryRef: {
187
- id: string;
188
187
  kind: string;
188
+ id: string;
189
189
  };
190
190
  };
191
191
  expectation: {
@@ -208,23 +208,23 @@ export declare const outcomeMeasurementEntryShape: z.ZodObject<{
208
208
  kind: z.ZodString;
209
209
  id: z.ZodString;
210
210
  }, "strip", z.ZodTypeAny, {
211
- id: string;
212
211
  kind: string;
213
- }, {
214
212
  id: string;
213
+ }, {
215
214
  kind: string;
215
+ id: string;
216
216
  }>;
217
217
  }, "strip", z.ZodTypeAny, {
218
218
  provider: string;
219
219
  queryRef: {
220
- id: string;
221
220
  kind: string;
221
+ id: string;
222
222
  };
223
223
  }, {
224
224
  provider: string;
225
225
  queryRef: {
226
- id: string;
227
226
  kind: string;
227
+ id: string;
228
228
  };
229
229
  }>;
230
230
  resultSelector: z.ZodOptional<z.ZodString>;
@@ -283,8 +283,8 @@ export declare const outcomeMeasurementEntryShape: z.ZodObject<{
283
283
  source: {
284
284
  provider: string;
285
285
  queryRef: {
286
- id: string;
287
286
  kind: string;
287
+ id: string;
288
288
  };
289
289
  };
290
290
  expectation: {
@@ -304,8 +304,8 @@ export declare const outcomeMeasurementEntryShape: z.ZodObject<{
304
304
  source: {
305
305
  provider: string;
306
306
  queryRef: {
307
- id: string;
308
307
  kind: string;
308
+ id: string;
309
309
  };
310
310
  };
311
311
  expectation: {
@@ -328,11 +328,11 @@ export declare const provenanceShape: z.ZodObject<{
328
328
  kind: z.ZodString;
329
329
  id: z.ZodString;
330
330
  }, "strip", z.ZodTypeAny, {
331
- id: string;
332
331
  kind: string;
333
- }, {
334
332
  id: string;
333
+ }, {
335
334
  kind: string;
335
+ id: string;
336
336
  }>;
337
337
  queryVersion: z.ZodOptional<z.ZodString>;
338
338
  window: z.ZodEffects<z.ZodEffects<z.ZodObject<{
@@ -390,8 +390,8 @@ export declare const provenanceShape: z.ZodObject<{
390
390
  }, "strip", z.ZodTypeAny, {
391
391
  provider: string;
392
392
  queryRef: {
393
- id: string;
394
393
  kind: string;
394
+ id: string;
395
395
  };
396
396
  window: {
397
397
  kind: "rolling" | "fixed" | "since_ship";
@@ -411,8 +411,8 @@ export declare const provenanceShape: z.ZodObject<{
411
411
  }, {
412
412
  provider: string;
413
413
  queryRef: {
414
- id: string;
415
414
  kind: string;
415
+ id: string;
416
416
  };
417
417
  window: {
418
418
  kind: "rolling" | "fixed" | "since_ship";
@@ -447,11 +447,11 @@ export declare const recordOutcomeMeasurementInputSchema: {
447
447
  kind: z.ZodString;
448
448
  id: z.ZodString;
449
449
  }, "strip", z.ZodTypeAny, {
450
- id: string;
451
450
  kind: string;
452
- }, {
453
451
  id: string;
452
+ }, {
454
453
  kind: string;
454
+ id: string;
455
455
  }>;
456
456
  queryVersion: z.ZodOptional<z.ZodString>;
457
457
  window: z.ZodEffects<z.ZodEffects<z.ZodObject<{
@@ -509,8 +509,8 @@ export declare const recordOutcomeMeasurementInputSchema: {
509
509
  }, "strip", z.ZodTypeAny, {
510
510
  provider: string;
511
511
  queryRef: {
512
- id: string;
513
512
  kind: string;
513
+ id: string;
514
514
  };
515
515
  window: {
516
516
  kind: "rolling" | "fixed" | "since_ship";
@@ -530,8 +530,8 @@ export declare const recordOutcomeMeasurementInputSchema: {
530
530
  }, {
531
531
  provider: string;
532
532
  queryRef: {
533
- id: string;
534
533
  kind: string;
534
+ id: string;
535
535
  };
536
536
  window: {
537
537
  kind: "rolling" | "fixed" | "since_ship";
@@ -39,6 +39,11 @@ export interface PushClient {
39
39
  createIntent(input: any): Promise<SettledIdentity>;
40
40
  /** Used to recover when a create commits but its response is lost. */
41
41
  getIntent?(id: string): Promise<SettledIdentity>;
42
+ getIntentChangeRequest?(intentId: string, requestId: string): Promise<{
43
+ changeRequest?: {
44
+ status?: string;
45
+ };
46
+ }>;
42
47
  updateIntent(id: string, input: any): Promise<SettledIdentity>;
43
48
  recordDecision(intentId: string, input: any): Promise<unknown>;
44
49
  saveImplementationContext(intentId: string, input: any): Promise<unknown>;
@@ -56,6 +61,12 @@ export interface PushSpecInput {
56
61
  ruledOut?: string;
57
62
  }[];
58
63
  implementationContext?: string;
64
+ /** The exact structured PM request this save is applying. It rides on every write leg because
65
+ * the material change may live in the body, decisions, or implementation context. */
66
+ changeRequest?: {
67
+ id: string;
68
+ baseRepoBodyRevision: string;
69
+ };
59
70
  /** Called once identity is settled, before any enrichment. This is the file write. */
60
71
  onIdentitySettled: (result: {
61
72
  canonicalId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"push-spec.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/push-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;6FAE6F;AAC7F,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;oFAEgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,sEAAsE;IACtE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sFAAsF;IACtF,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACnM;AAED,MAAM,MAAM,cAAc,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAElH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA4E5E"}
1
+ {"version":3,"file":"push-spec.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/push-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;6FAE6F;AAC7F,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;oFAEgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,sEAAsE;IACtE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,sBAAsB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,aAAa,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC/G,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;0FACsF;IACtF,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,sFAAsF;IACtF,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACnM;AAED,MAAM,MAAM,cAAc,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAElH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAqI5E"}
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.20.2",
5
+ "version": "1.21.0",
6
6
  "description": "Deterministic preflight for the intent you hand to a coding agent: six calibrated gates, the exact blockers named, no model call, no key needed.",
7
7
  "long_description": "Pathmode MCP Server runs a deterministic preflight before your coding agent builds: check_intent_readiness scores an intent spec against six calibrated gates (title, objective, outcomes, constraints, edge cases, verification) and names the exact blockers, with no model call and no account. Keyless local mode works out of the box; specs live in intent.md in your repo, plain markdown you own, and skills for drafting, pressure-testing, and handing off intent ride along. Connect a Pathmode workspace with an API key to sync intent and evidence across a team, analyze dependency graphs, and verify pull requests against the outcomes you agreed to.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathmode/mcp-server",
3
- "version": "1.20.2",
3
+ "version": "1.21.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -5,7 +5,9 @@ description: Run the deterministic readiness check on an intent spec before an a
5
5
 
6
6
  <what-to-do>
7
7
 
8
- Call the `check_intent_readiness` MCP tool (Pathmode). With no arguments it prefers `intent.md` in the project root in both local and connected modes; only when that repo-bound file is absent does connected mode fall back to the workspace current intent. Pass `spec` inline to preflight a draft before saving it, or `intentId` when the user deliberately selects a different saved intent.
8
+ Call the `check_intent_readiness` MCP tool (Pathmode). With no arguments it resolves `intent.md` from the MCP client's declared workspace roots or the server launch directory. Connected mode falls back to the workspace current intent only when declared roots are known to contain no repo-bound file; if the repository cannot be identified, it refuses to guess and asks for `intentId` or an inline `spec`. Pass `spec` inline to preflight a draft before saving it, or `intentId` when the user deliberately selects a different saved intent.
9
+
10
+ In connected mode, when the repo-bound file carries a cloud id, check for PM judgment before implementation: call `list_intent_change_requests` with that id. For every open request, call `get_intent_change_request`, apply the requested field/item change deliberately to `intent.md`, and call `intent_save` with the request's exact `changeRequestId` and `baseRepoBodyRevision`. If the request is unworkable, call `reject_intent_change_request` with a concrete reason instead of pretending it was applied. After an applied request, re-run the readiness check, report that the new repository revision is pending human authorization, and STOP. Do not begin implementation until a later `get_agent_prompt` confirms that the exact current revision is authorized by a signed-in product owner.
9
11
 
10
12
  Show the user the verdict block exactly as returned — the blocker strings are the calibrated gate output, do not paraphrase them.
11
13
 
@@ -5,7 +5,9 @@ description: Review code changes against the active intent's outcomes and constr
5
5
 
6
6
  <what-to-do>
7
7
 
8
- Load the active intent. Read `intent.md` from the project root first — the file is bound to this repository, which makes it the authority on what governs this diff. If `PATHMODE_API_KEY` is set and the file's frontmatter carries a cloud id, also fetch that intent's execution bundle (`get_agent_prompt` with the id) to pick up what the file cannot hold: open findings, handoff notes, authorization state. Do not let `get_current_intent` choose the intent for you when a local file exists — "current" is a workspace heuristic, not a repo binding. Only with no local file at all, fall back to `get_current_intent`.
8
+ Load the active intent. Read `intent.md` from the project root first — the file is bound to this repository, which makes it the authority on what governs this diff. If `PATHMODE_API_KEY` is set and the file's frontmatter carries a cloud id, also fetch that intent's execution bundle (`get_agent_prompt` with the id) to pick up what the file cannot hold: open PM change requests, findings, handoff notes, and authorization state. Do not let `get_current_intent` choose the intent for you when a local file exists — "current" is a workspace heuristic, not a repo binding. Only with no local file at all, fall back to `get_current_intent`.
9
+
10
+ If the execution bundle reports an open PM change request, or says the current repository revision is pending, rejected, or stale, stop before reviewing the diff as delivered work. Name the exact request/revision blocker and direct the agent through `preflight`: a requested spec change must be applied with request-bound `intent_save`, then a signed-in product owner must authorize that exact resulting revision. Never approve code against the superseded or unauthorized spec.
9
11
 
10
12
  Identify the changed files using git diff against the base branch (or staged changes if no base specified).
11
13