@pathmode/mcp-server 1.20.2 → 1.22.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
@@ -102,12 +104,14 @@ Your implementation MUST satisfy ALL of these:
102
104
 
103
105
  ## Skill Pack for Claude Code
104
106
 
105
- The package also ships 8 Claude Code skills that auto-trigger based on what you ask — no slash commands required.
107
+ The package also ships 9 Claude Code skills that auto-trigger based on what you ask — no slash commands required.
106
108
 
107
109
  | Skill | Use when |
108
110
  |-------|----------|
109
111
  | `setup-pathmode-workflow` | First-time project setup (test commands, issue tracker, status conventions) |
110
112
  | `compile-intent` | Building a structured spec for what to ship |
113
+ | `preflight` | Running the deterministic six-gate readiness verdict before implementation |
114
+ | `implement-intent` | Implementing a repository intent only after Preflight and required human authorization |
111
115
  | `verify-intent` | Designing the executable feedback loop for a spec |
112
116
  | `grill-intent` | Stress-testing an existing spec for weaknesses |
113
117
  | `split-intent-to-issues` | Breaking a spec into Linear / Jira / GitHub Issues tickets |
@@ -242,6 +246,18 @@ Pass `--local` only to force local mode when an API key *is* configured:
242
246
  | `update_intent_status` | Update intent status (draft > validated > approved > shipped > verified) |
243
247
  | `log_implementation_note` | Record a technical decision or implementation note |
244
248
 
249
+ #### PM-to-Repository Change Requests
250
+
251
+ | Tool | Description |
252
+ |------|-------------|
253
+ | `list_intent_change_requests` | Discover structured PM requests workspace-wide, or narrow to one repository-authority intent; reading records agent consumption |
254
+ | `get_intent_change_request` | Read one request with its exact base revision, operation, proposed value, and reason |
255
+ | `reject_intent_change_request` | Report an unworkable request with an API-key-attributed reason |
256
+
257
+ Apply a request by editing `intent.md`, then call `intent_save` with both `changeRequestId` and
258
+ `baseRepoBodyRevision`. Pathmode compares immutable snapshots and closes the request itself; an
259
+ agent cannot submit a success flag or diff.
260
+
245
261
  #### Strategic Analysis
246
262
 
247
263
  | Tool | Description |
@@ -332,7 +348,7 @@ Full privacy policy: [pathmode.io/privacy](https://pathmode.io/privacy)
332
348
 
333
349
  - [IntentSpec](https://intentspec.org/spec) — the open specification for the `intent.md` files this server writes
334
350
  - [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
351
+ - [Preflight](https://pathmode.io/preflight) — interactive readiness check and local workflow setup
336
352
  - [Pathmode](https://pathmode.io) — full platform for teams
337
353
  - [Issues](https://github.com/pathmodeio/mcp-server/issues)
338
354
 
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.22.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
 
@@ -72963,10 +73044,10 @@ function startMcpServer() {
72963
73044
  const LOCAL_MODE_INSTRUCTIONS = 'Pathmode is running in keyless local mode: specs live in intent.md in this repo and nothing leaves the machine. ' +
72964
73045
  'First move: call check_intent_readiness. With no arguments it reads intent.md; pass a spec inline to preflight a draft. ' +
72965
73046
  'If no intent exists yet, draft one from the conversation, mark inferred fields as assumptions, preflight the draft, then offer intent_save. ' +
72966
- 'A failing verdict names the exact blockers; repair them one targeted question at a time. Never block work on a failing verdict. ' +
73047
+ 'A failing verdict names the exact blockers; repair them one targeted question at a time. Never block saving a failing spec, but do not silently start implementation from one: the user must explicitly accept the named risk. ' +
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. Do not silently implement from a failing spec: repair it or get the user\'s explicit acceptance of the named risk. ' +
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
  });
@@ -74040,12 +74222,31 @@ function startMcpServer() {
74040
74222
  server.prompt('implement-intent', 'Get full implementation context for a specific intent, including objective, outcomes, constraints, edge cases, and verification steps.', {
74041
74223
  intentId: zod_1.z.string().describe('The intent ID to implement'),
74042
74224
  }, async ({ intentId }) => {
74225
+ const localSteps = `I need to implement the repository intent ${intentId}. Please:
74226
+ 1. Read intent.md as the repository authority and call check_intent_readiness with no arguments before changing product code
74227
+ 2. If Preflight has unresolved blockers, show its exact verdict and repair one blocker at a time. Do not begin implementation unless I explicitly accept the named blockers in this conversation
74228
+ 3. If I explicitly accept unresolved blockers, preserve that judgment in intent.md with intent_save as a decision: "Proceed despite preflight blockers: <names>", the alternative "Repair every blocker before implementation", and my reason. This is accepted risk, not a waiver: re-run Preflight and keep the failing verdict visible
74229
+ 4. Review the intent, repository instructions, and implementation context, then make a plan mapped to its outcomes
74230
+ 5. Implement only the authorized scope and run the intent's verification checks
74231
+ 6. Review the diff against the outcomes, constraints, and edge cases
74232
+ 7. Use handoff-intent to preserve material decisions, discoveries, and blockers. Do not call cloud-only tools in keyless mode`;
74233
+ const cloudSteps = `I need to implement intent ${intentId}. Please:
74234
+ 1. Call check_intent_readiness for intent ${intentId} before changing product code
74235
+ 2. If Preflight has unresolved blockers, show its exact verdict and repair one blocker at a time. Do not begin implementation unless I explicitly accept the named blockers in this conversation
74236
+ 3. If I explicitly accept unresolved blockers, preserve that judgment with intent_save as a decision: "Proceed despite preflight blockers: <names>", the alternative "Repair every blocker before implementation", and my reason. This is accepted risk, not a waiver. The changed repository revision requires fresh human authorization; STOP until a signed-in product owner authorizes it
74237
+ 4. Once Preflight passes (or I have explicitly accepted its still-visible blockers), use get_agent_prompt to fetch the full context. Use mode "execute" for a passing verdict and mode "draft" for explicitly accepted blockers; both include authorization state and open PM change requests
74238
+ 5. If a change request is open, apply it to intent.md with intent_save using its exact changeRequestId and baseRepoBodyRevision, or reject it with a concrete reason. STOP until the resulting revision is authorized
74239
+ 6. Stop on a pending, rejected, or stale authorization banner. Use get_constitution and implement only after the exact current revision is authorized
74240
+ 7. Plan against the outcomes, implement, and use verify_implementation against the real diff
74241
+ 8. Name the work so the merge can find it: branch intent/${intentId}, or put pathmode:${intentId} in the pull request body
74242
+ 9. If a pull request is involved, do not call update_intent_status; the merge owns the diff-backed transition. Otherwise mark shipped only after the outcome is observable
74243
+ 10. Use handoff-intent to preserve material decisions, discoveries, and blockers`;
74043
74244
  return {
74044
74245
  messages: [{
74045
74246
  role: 'user',
74046
74247
  content: {
74047
74248
  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`,
74249
+ text: isLocalMode ? localSteps : cloudSteps,
74049
74250
  },
74050
74251
  }],
74051
74252
  };
@@ -74113,6 +74314,7 @@ function startMcpServer() {
74113
74314
  }).optional().describe('Scope boundaries — what to build and what to avoid'),
74114
74315
  verification: zod_1.z.object({
74115
74316
  checks: zod_1.z.array(zod_1.z.object({
74317
+ id: zod_1.z.string().trim().min(1).optional(),
74116
74318
  kind: zod_1.z.enum(['fastest', 'manual', 'shipped-signal', 'regression-guard', 'test']),
74117
74319
  description: zod_1.z.string(),
74118
74320
  status: zod_1.z.enum(['unknown', 'passing', 'failing']).optional(),
@@ -74152,9 +74354,9 @@ function startMcpServer() {
74152
74354
  }
74153
74355
  server.registerTool('check_intent_readiness', {
74154
74356
  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.',
74357
+ 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
74358
  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.'),
74359
+ 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
74360
  intentId: zod_1.z.string().optional().describe('Check a specific saved intent by id. Ignored when spec is passed.'),
74159
74361
  },
74160
74362
  annotations: READ_ONLY,
@@ -74166,9 +74368,18 @@ function startMcpServer() {
74166
74368
  // "current" intent is only a heuristic, so it must not outrank the repo binding.
74167
74369
  // An explicit different id still wins: the caller deliberately selected another
74168
74370
  // 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;
74371
+ const repoResolution = await resolveRepoBoundIntent(intentId);
74372
+ if (repoResolution.kind === 'ambiguous') {
74373
+ return {
74374
+ content: [{
74375
+ type: 'text',
74376
+ 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.`,
74377
+ }],
74378
+ isError: true,
74379
+ };
74380
+ }
74381
+ if (repoResolution.kind === 'found') {
74382
+ subject = repoResolution.intent;
74172
74383
  sourceNote = 'repo-bound intent.md';
74173
74384
  }
74174
74385
  else if (isLocalMode) {
@@ -74187,6 +74398,15 @@ function startMcpServer() {
74187
74398
  }
74188
74399
  }
74189
74400
  else {
74401
+ if (!intentId && !repoResolution.rootsInspected) {
74402
+ return {
74403
+ content: [{
74404
+ type: 'text',
74405
+ 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.',
74406
+ }],
74407
+ isError: true,
74408
+ };
74409
+ }
74190
74410
  const cloud = requireCloudClient();
74191
74411
  // The list projection (INTENT_LIST_SELECT) omits intent_spec_edge_cases, so
74192
74412
  // grading a listed row fails the edge-case gate unconditionally — no saved
@@ -74221,7 +74441,11 @@ function startMcpServer() {
74221
74441
  spec: zod_1.z.object(intentSpecSchema),
74222
74442
  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
74443
  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));
74444
+ changeRequestId: zod_1.z.string().uuid().optional().describe('Structured PM request this save deliberately applies. Requires baseRepoBodyRevision.'),
74445
+ baseRepoBodyRevision: zod_1.z.string().regex(/^[a-f0-9]{64}$/i).optional().describe('Exact base revision carried by the change request. Requires changeRequestId.'),
74446
+ }, async ({ spec, path, overwrite, changeRequestId, baseRepoBodyRevision }) => performIntentSave(spec, path, overwrite, 'intent_save', changeRequestId || baseRepoBodyRevision
74447
+ ? { id: changeRequestId, baseRepoBodyRevision }
74448
+ : undefined));
74225
74449
  /**
74226
74450
  * The whole save path — collision policy, verdict stamp, confirmation carry-forward, cloud push
74227
74451
  * with identity settlement — extracted so intent_import can reuse it EXACTLY. Import must not be
@@ -74229,8 +74453,17 @@ function startMcpServer() {
74229
74453
  * write path costs, and the confirmation carry-forward here is load-bearing (M1's tool boundary
74230
74454
  * assumes every writer goes through this).
74231
74455
  */
74232
- async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save') {
74456
+ async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save', changeRequest) {
74233
74457
  {
74458
+ if (changeRequest && (!changeRequest.id || !changeRequest.baseRepoBodyRevision)) {
74459
+ return {
74460
+ content: [{
74461
+ type: 'text',
74462
+ text: '✗ changeRequestId and baseRepoBodyRevision are required together. Re-read the open request and pass both exact values.',
74463
+ }],
74464
+ isError: true,
74465
+ };
74466
+ }
74234
74467
  const filePath = resolveWithinProject(path || 'intent.md');
74235
74468
  const existing = (0, local_reader_1.readIntentMeta)(filePath);
74236
74469
  const decision = (0, save_policy_1.decideSave)({
@@ -74253,6 +74486,15 @@ function startMcpServer() {
74253
74486
  }],
74254
74487
  };
74255
74488
  }
74489
+ if (changeRequest && decision.action !== 'update') {
74490
+ return {
74491
+ content: [{
74492
+ type: 'text',
74493
+ 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.',
74494
+ }],
74495
+ isError: true,
74496
+ };
74497
+ }
74256
74498
  const { id, version, status, created } = decision;
74257
74499
  // The preflight verdict travels with the file: stamped into frontmatter on every save,
74258
74500
  // recomputed from the spec alone (deterministic). A failing verdict never blocks the
@@ -74335,6 +74577,9 @@ function startMcpServer() {
74335
74577
  },
74336
74578
  decisions: spec.decisions,
74337
74579
  implementationContext: spec.implementationContext,
74580
+ changeRequest: changeRequest?.id && changeRequest.baseRepoBodyRevision
74581
+ ? { id: changeRequest.id, baseRepoBodyRevision: changeRequest.baseRepoBodyRevision }
74582
+ : undefined,
74338
74583
  onIdentitySettled: writeSpecFile,
74339
74584
  });
74340
74585
  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.22.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.22.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/skills/README.md CHANGED
@@ -13,6 +13,7 @@ Listed in lifecycle order — most projects use them in roughly this sequence.
13
13
  | `setup-pathmode-workflow` | First-time setup — capturing test commands, issue tracker, status conventions |
14
14
  | `compile-intent` | Building a structured spec for what to ship |
15
15
  | `preflight` | Deterministic readiness verdict before an agent builds — six gates, exact blockers, no model call |
16
+ | `implement-intent` | Build from the repository intent only after Preflight and any required human authorization |
16
17
  | `verify-intent` | Designing the executable feedback loop for a spec (fastest check, manual fallback, shipped signal) |
17
18
  | `grill-intent` | Stress-testing an existing spec for weaknesses before code is written |
18
19
  | `split-intent-to-issues` | Breaking a spec into paste-ready Linear / Jira / GitHub Issues tickets |
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: implement-intent
3
+ description: Implement the repository's active intent only after running its deterministic preflight. Use when the user asks to build, implement, fix, or change product code under an intent.md. Works in keyless local mode and connected team mode.
4
+ ---
5
+
6
+ <what-to-do>
7
+
8
+ Read `intent.md` from the project root first. It is the repository-bound authority. Call `check_intent_readiness` before changing product code: with no arguments for that file, or with `intentId` only when the user explicitly selected a cloud-only intent.
9
+
10
+ If Preflight has unresolved blockers, show its exact verdict and work through the `preflight` repair loop one targeted question at a time. Do not silently begin implementation from a failing spec.
11
+
12
+ The user may explicitly accept named blockers and ask you to proceed. That is **accepted risk**, not a waiver: a waiver says a dimension does not apply, while accepted risk says the gap is real. Preserve the judgment by calling `intent_save` with the complete current spec and an added decision:
13
+
14
+ - `choice`: `Proceed despite preflight blockers: <exact gate names>`
15
+ - `ruledOut`: `Repair every blocker before implementation`
16
+ - `reason`: the user's stated reason, without embellishment
17
+
18
+ Re-run Preflight afterward and show the still-failing verdict. Never turn accepted risk into a green check. The acceptance authorizes only this implementation conversation; a later agent must ask again unless it has fresh human authorization for the exact revision.
19
+
20
+ In connected mode, a save changes the repository-body revision. Stop until a signed-in product owner authorizes that exact revision. Then call `get_agent_prompt`: use `mode: execute` when Preflight passes, or `mode: draft` when the user explicitly accepted still-visible blockers. Stop on an open change request or a pending, rejected, or stale authorization banner. Fetch `get_constitution` before implementation.
21
+
22
+ In keyless mode, do not call `get_agent_prompt`, `get_constitution`, or other cloud-only tools. Use `intent.md`, the repository instructions, and the codebase itself as the implementation context.
23
+
24
+ Create a small implementation plan mapped to the outcomes. Make only the changes needed for the authorized scope. Run the spec's verification checks, review the diff against outcomes, constraints, and edge cases, and finish with `handoff-intent` so material decisions and discoveries survive the session.
25
+
26
+ </what-to-do>
27
+
28
+ <supporting-info>
29
+
30
+ ## Three independent judgments
31
+
32
+ - **Preflight** asks whether the spec is concrete enough to build and verify.
33
+ - **Accepted risk** records a human decision to proceed while a known gap remains. It never changes the Preflight verdict.
34
+ - **Authorization** confirms that a human permits an agent-originated repository revision to be implemented. It does not make a failing gate pass.
35
+
36
+ ## Pull-request delivery
37
+
38
+ In connected mode, name the intent where the merge can find it: branch `intent/<intent-id>`, or `pathmode:<intent-id>` in the pull-request body. When a pull request is involved, do not call `update_intent_status`; the merge grades the real diff and owns the transition to Shipped. Without a pull request, mark Shipped only when the outcome is observable.
39
+
40
+ </supporting-info>
@@ -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