@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 +18 -2
- package/dist/index.js +261 -16
- package/dist/packages/mcp-server/src/api-client.d.ts +44 -0
- package/dist/packages/mcp-server/src/api-client.d.ts.map +1 -1
- package/dist/packages/mcp-server/src/measurement-schema.d.ts +22 -22
- package/dist/packages/mcp-server/src/push-spec.d.ts +11 -0
- package/dist/packages/mcp-server/src/push-spec.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/README.md +1 -0
- package/skills/implement-intent/SKILL.md +40 -0
- package/skills/preflight/SKILL.md +3 -1
- package/skills/review-against-intent/SKILL.md +3 -1
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
|
|
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
|
-
- [
|
|
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, {
|
|
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({ ...
|
|
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, {
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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,
|
|
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
|
|
74170
|
-
if (
|
|
74171
|
-
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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
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
|
|
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
|
|