@pathmode/mcp-server 1.20.2 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/dist/index.js +240 -15
- 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/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
|
|
@@ -242,6 +244,18 @@ Pass `--local` only to force local mode when an API key *is* configured:
|
|
|
242
244
|
| `update_intent_status` | Update intent status (draft > validated > approved > shipped > verified) |
|
|
243
245
|
| `log_implementation_note` | Record a technical decision or implementation note |
|
|
244
246
|
|
|
247
|
+
#### PM-to-Repository Change Requests
|
|
248
|
+
|
|
249
|
+
| Tool | Description |
|
|
250
|
+
|------|-------------|
|
|
251
|
+
| `list_intent_change_requests` | Discover structured PM requests workspace-wide, or narrow to one repository-authority intent; reading records agent consumption |
|
|
252
|
+
| `get_intent_change_request` | Read one request with its exact base revision, operation, proposed value, and reason |
|
|
253
|
+
| `reject_intent_change_request` | Report an unworkable request with an API-key-attributed reason |
|
|
254
|
+
|
|
255
|
+
Apply a request by editing `intent.md`, then call `intent_save` with both `changeRequestId` and
|
|
256
|
+
`baseRepoBodyRevision`. Pathmode compares immutable snapshots and closes the request itself; an
|
|
257
|
+
agent cannot submit a success flag or diff.
|
|
258
|
+
|
|
245
259
|
#### Strategic Analysis
|
|
246
260
|
|
|
247
261
|
| Tool | Description |
|
|
@@ -332,7 +346,7 @@ Full privacy policy: [pathmode.io/privacy](https://pathmode.io/privacy)
|
|
|
332
346
|
|
|
333
347
|
- [IntentSpec](https://intentspec.org/spec) — the open specification for the `intent.md` files this server writes
|
|
334
348
|
- [The intent.md profile](https://intentspec.org/intent-md) — the six checks `check_intent_readiness` scores against
|
|
335
|
-
- [
|
|
349
|
+
- [Preflight](https://pathmode.io/preflight) — interactive readiness check and local workflow setup
|
|
336
350
|
- [Pathmode](https://pathmode.io) — full platform for teams
|
|
337
351
|
- [Issues](https://github.com/pathmodeio/mcp-server/issues)
|
|
338
352
|
|
package/dist/index.js
CHANGED
|
@@ -40103,6 +40103,25 @@ class PathmodeClient {
|
|
|
40103
40103
|
});
|
|
40104
40104
|
return res.json();
|
|
40105
40105
|
}
|
|
40106
|
+
async listIntentChangeRequests(intentId, status = 'open') {
|
|
40107
|
+
const res = await this.fetch(`/intents/${intentId}/change-requests?status=${encodeURIComponent(status)}`);
|
|
40108
|
+
return res.json();
|
|
40109
|
+
}
|
|
40110
|
+
async listWorkspaceIntentChangeRequests(status = 'open') {
|
|
40111
|
+
const res = await this.fetch(`/change-requests?status=${encodeURIComponent(status)}`);
|
|
40112
|
+
return res.json();
|
|
40113
|
+
}
|
|
40114
|
+
async getIntentChangeRequest(intentId, requestId) {
|
|
40115
|
+
const res = await this.fetch(`/intents/${intentId}/change-requests/${requestId}`);
|
|
40116
|
+
return res.json();
|
|
40117
|
+
}
|
|
40118
|
+
async rejectIntentChangeRequest(intentId, requestId, reason) {
|
|
40119
|
+
const res = await this.fetch(`/intents/${intentId}/change-requests/${requestId}`, {
|
|
40120
|
+
method: 'PATCH',
|
|
40121
|
+
body: JSON.stringify({ action: 'reject', reason }),
|
|
40122
|
+
});
|
|
40123
|
+
return res.json();
|
|
40124
|
+
}
|
|
40106
40125
|
async queryEvidence(filters = {}) {
|
|
40107
40126
|
const params = new URLSearchParams();
|
|
40108
40127
|
for (const [key, val] of Object.entries(filters)) {
|
|
@@ -42468,6 +42487,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
42468
42487
|
exports.pushSpec = pushSpec;
|
|
42469
42488
|
async function pushSpec(input) {
|
|
42470
42489
|
const { client, id, existingSpecVersion, payload } = input;
|
|
42490
|
+
// Confirmations are cloud-authored judgment. They are deliberately absent from the
|
|
42491
|
+
// intent_save tool shape, and this last boundary keeps a future caller from accidentally
|
|
42492
|
+
// turning a repo push into a replace-all confirmation import.
|
|
42493
|
+
const identityPayload = { ...payload };
|
|
42494
|
+
delete identityPayload.confirmations;
|
|
42471
42495
|
let canonicalId;
|
|
42472
42496
|
let specVersion;
|
|
42473
42497
|
let sourceUrl;
|
|
@@ -42480,11 +42504,18 @@ async function pushSpec(input) {
|
|
|
42480
42504
|
// quietly break the merge resolution that stamp exists for.
|
|
42481
42505
|
let saved;
|
|
42482
42506
|
if (existingSpecVersion) {
|
|
42483
|
-
saved = await client.updateIntent(id, {
|
|
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.21.0","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Deterministic intent preflight before your agent builds: six calibrated gates, keyless, no model call. Draft and sharpen specs in conversation, or connect a Pathmode workspace to sync intent and evidence across a team.","main":"dist/index.js","bin":{"pathmode-mcp":"dist/index.js"},"files":["dist/","manifest.json","icon.svg","README.md","skills/"],"scripts":{"build":"rm -rf dist && ncc build src/index.ts -o dist","dev":"ts-node src/index.ts","prepublishOnly":"npm run build"},"keywords":["pathmode","mcp","model-context-protocol","claude-code","claude-code-skills","agent-skills","cursor","windsurf","intent-engineering","intent-compiler","ai-agents","product-development","dependency-graph","strategic-planning"],"author":"Pathmode","license":"MIT","type":"commonjs","engines":{"node":">=18.0.0"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"overrides":{"@hono/node-server":"^1.19.17","body-parser":"^2.3.0","fast-uri":"^3.1.6","hono":"^4.13.5","ip-address":"^10.7.0","js-yaml":"^3.15.2"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
|
|
72789
72870
|
|
|
72790
72871
|
/***/ })
|
|
72791
72872
|
|
|
@@ -72966,7 +73047,7 @@ function startMcpServer() {
|
|
|
72966
73047
|
'A failing verdict names the exact blockers; repair them one targeted question at a time. Never block work on a failing verdict. ' +
|
|
72967
73048
|
'To sync with a shared Pathmode workspace later, run: npx @pathmode/mcp-server setup pm_live_xxx';
|
|
72968
73049
|
const CLOUD_MODE_INSTRUCTIONS = 'Pathmode is connected to a workspace (cloud mode). ' +
|
|
72969
|
-
'First move: call check_intent_readiness before implementation starts. With no arguments it
|
|
73050
|
+
'First move: call check_intent_readiness before implementation starts. With no arguments it resolves this repo\'s intent.md from MCP workspace roots or the server launch directory. It falls back to the workspace current intent only after client-declared roots show that no repo-bound file exists; when the repository cannot be identified it refuses to guess. A failing verdict names the exact blockers to repair. ' +
|
|
72970
73051
|
'If tools fail with API error (401), the configured key is invalid: re-run npx @pathmode/mcp-server setup with a fresh key from your workspace settings at https://pathmode.io, ' +
|
|
72971
73052
|
'or remove PATHMODE_API_KEY and restart to fall back to free keyless local mode (specs live in intent.md, no account needed).';
|
|
72972
73053
|
const server = new mcp_js_1.McpServer({
|
|
@@ -73110,6 +73191,39 @@ function startMcpServer() {
|
|
|
73110
73191
|
return anyReady;
|
|
73111
73192
|
return intents[0];
|
|
73112
73193
|
}
|
|
73194
|
+
/**
|
|
73195
|
+
* Resolve the intent bound to the repository the MCP client says it is working in.
|
|
73196
|
+
*
|
|
73197
|
+
* Global MCP configurations launch the server from an arbitrary directory, so cwd is only a
|
|
73198
|
+
* fallback for clients that do not advertise roots. Declared roots win even when cwd happens to
|
|
73199
|
+
* contain a different intent.md. If roots cannot be resolved and cwd has no intent.md, callers
|
|
73200
|
+
* must not silently substitute the workspace's heuristic "current" intent — that is how a
|
|
73201
|
+
* preflight for one repository graded the demo shoe-return intent instead.
|
|
73202
|
+
*/
|
|
73203
|
+
async function resolveRepoBoundIntent(intentId) {
|
|
73204
|
+
const canListRoots = !!server.server.getClientCapabilities()?.roots;
|
|
73205
|
+
if (canListRoots) {
|
|
73206
|
+
const dirs = await (0, repo_id_1.resolveWorkspaceDirs)(() => server.server.listRoots(undefined, { timeout: 2000 }), {});
|
|
73207
|
+
if (dirs.length > 0) {
|
|
73208
|
+
const candidates = Array.from(new Set(dirs.map(dir => (0, path_1.resolve)(dir, 'intent.md'))))
|
|
73209
|
+
.map(path => ({ path, intent: (0, local_reader_1.readIntentFile)(path) }))
|
|
73210
|
+
.filter((candidate) => !!candidate.intent);
|
|
73211
|
+
const matching = intentId
|
|
73212
|
+
? candidates.filter(candidate => candidate.intent.id === intentId)
|
|
73213
|
+
: candidates;
|
|
73214
|
+
if (matching.length === 1)
|
|
73215
|
+
return { kind: 'found', ...matching[0] };
|
|
73216
|
+
if (matching.length > 1)
|
|
73217
|
+
return { kind: 'ambiguous', paths: matching.map(candidate => candidate.path) };
|
|
73218
|
+
return { kind: 'absent', rootsInspected: true };
|
|
73219
|
+
}
|
|
73220
|
+
}
|
|
73221
|
+
const path = (0, path_1.resolve)(process.cwd(), 'intent.md');
|
|
73222
|
+
const intent = (0, local_reader_1.readIntentFile)(path);
|
|
73223
|
+
if (intent && (!intentId || intent.id === intentId))
|
|
73224
|
+
return { kind: 'found', intent, path };
|
|
73225
|
+
return { kind: 'absent', rootsInspected: false };
|
|
73226
|
+
}
|
|
73113
73227
|
/** The union of evidence IDs an intent cites: directly linked + section anchors + decision-cited.
|
|
73114
73228
|
* Mirrors lib/intentSpecHelpers.collectSpecEvidenceIds (the MCP package can't import app/lib). */
|
|
73115
73229
|
function collectCitedEvidenceIds(intent) {
|
|
@@ -73245,6 +73359,51 @@ function startMcpServer() {
|
|
|
73245
73359
|
return { content: [{ type: 'text', text: `Failed to fetch intent: ${e.message}` }] };
|
|
73246
73360
|
}
|
|
73247
73361
|
});
|
|
73362
|
+
cloudOnly.registerTool('list_intent_change_requests', {
|
|
73363
|
+
title: 'List Intent Change Requests',
|
|
73364
|
+
description: 'List structured PM requests waiting on this repository. Omit intentId to discover open requests across the connected workspace; pass it to narrow to one intent. Read these before editing intent.md. Each open request is bound to one baseRepoBodyRevision; pass its id and base revision to intent_save when you deliberately apply it.',
|
|
73365
|
+
inputSchema: {
|
|
73366
|
+
intentId: zod_1.z.string().optional().describe('Repository-authority intent to inspect. Omit to list workspace-wide.'),
|
|
73367
|
+
status: zod_1.z.enum(['open', 'applied', 'rejected', 'withdrawn', 'superseded', 'all']).optional().describe('Lifecycle filter; defaults to open'),
|
|
73368
|
+
},
|
|
73369
|
+
annotations: READ_ONLY,
|
|
73370
|
+
}, async ({ intentId, status }) => {
|
|
73371
|
+
const cloud = requireCloudClient();
|
|
73372
|
+
const result = intentId
|
|
73373
|
+
? await cloud.listIntentChangeRequests(intentId, status ?? 'open')
|
|
73374
|
+
: await cloud.listWorkspaceIntentChangeRequests(status ?? 'open');
|
|
73375
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
73376
|
+
});
|
|
73377
|
+
cloudOnly.registerTool('get_intent_change_request', {
|
|
73378
|
+
title: 'Get Intent Change Request',
|
|
73379
|
+
description: 'Read one structured PM request with its exact base revision, operation, expected old value, proposed value, and reason. Reading records agent consumption; it does not claim the request was applied.',
|
|
73380
|
+
inputSchema: {
|
|
73381
|
+
intentId: zod_1.z.string().describe('The request intent'),
|
|
73382
|
+
requestId: zod_1.z.string().describe('The change-request ID'),
|
|
73383
|
+
},
|
|
73384
|
+
annotations: READ_ONLY,
|
|
73385
|
+
}, async ({ intentId, requestId }) => {
|
|
73386
|
+
const result = await requireCloudClient().getIntentChangeRequest(intentId, requestId);
|
|
73387
|
+
return { content: [{ type: 'text', text: JSON.stringify(result.changeRequest, null, 2) }] };
|
|
73388
|
+
});
|
|
73389
|
+
cloudOnly.registerTool('reject_intent_change_request', {
|
|
73390
|
+
title: 'Reject Intent Change Request',
|
|
73391
|
+
description: 'Report that an open PM request cannot or should not be applied. This records the API-key principal and requires a concrete reason. Do not use this for a stale base; re-read the current request instead.',
|
|
73392
|
+
inputSchema: {
|
|
73393
|
+
intentId: zod_1.z.string().describe('The request intent'),
|
|
73394
|
+
requestId: zod_1.z.string().describe('The change-request ID'),
|
|
73395
|
+
reason: zod_1.z.string().trim().min(1).describe('Why the repository agent cannot apply it'),
|
|
73396
|
+
},
|
|
73397
|
+
annotations: WRITE_OP,
|
|
73398
|
+
}, async ({ intentId, requestId, reason }) => {
|
|
73399
|
+
const result = await requireCloudClient().rejectIntentChangeRequest(intentId, requestId, reason);
|
|
73400
|
+
return {
|
|
73401
|
+
content: [{
|
|
73402
|
+
type: 'text',
|
|
73403
|
+
text: `Change request ${requestId} rejected: ${result.changeRequest.resolutionReason ?? reason}`,
|
|
73404
|
+
}],
|
|
73405
|
+
};
|
|
73406
|
+
});
|
|
73248
73407
|
const outcomeInputShape = zod_1.z.union([
|
|
73249
73408
|
zod_1.z.string().trim().min(1),
|
|
73250
73409
|
zod_1.z.object({
|
|
@@ -73621,11 +73780,34 @@ function startMcpServer() {
|
|
|
73621
73780
|
if (isLocalMode) {
|
|
73622
73781
|
return { content: [{ type: 'text', text: 'Agent prompts require cloud mode for full context generation.' }] };
|
|
73623
73782
|
}
|
|
73624
|
-
const
|
|
73783
|
+
const cloud = requireCloudClient();
|
|
73784
|
+
const [result, openRequests] = await Promise.all([
|
|
73785
|
+
cloud.getIntentPrompt(intentId, 'claude-code', mode || 'execute'),
|
|
73786
|
+
cloud.listIntentChangeRequests(intentId, 'open').catch(() => ({ changeRequests: [], count: 0 })),
|
|
73787
|
+
]);
|
|
73788
|
+
const requestBlock = openRequests.changeRequests.length > 0
|
|
73789
|
+
? [
|
|
73790
|
+
'# OPEN PM CHANGE REQUESTS — HANDLE BEFORE IMPLEMENTATION',
|
|
73791
|
+
'',
|
|
73792
|
+
'These requests are judgment against one exact intent.md revision. Read each request, update intent.md deliberately, then call intent_save with that request\'s exact `changeRequestId` and `baseRepoBodyRevision`. Do not start product implementation until the resulting revision is authorized. Reject an unworkable request with reject_intent_change_request and a concrete reason.',
|
|
73793
|
+
'',
|
|
73794
|
+
...openRequests.changeRequests.flatMap((request) => [
|
|
73795
|
+
`## ${request.id}`,
|
|
73796
|
+
`- Base revision: ${request.baseRepoBodyRevision}`,
|
|
73797
|
+
`- Requested change: ${request.operation} ${request.targetField}${request.targetItemId ? ` (${request.targetItemId})` : ''}`,
|
|
73798
|
+
`- Reason: ${request.reason}`,
|
|
73799
|
+
...(request.expectedOldValue !== undefined ? [`- Expected old value: ${JSON.stringify(request.expectedOldValue)}`] : []),
|
|
73800
|
+
...(request.proposedValue !== undefined ? [`- Proposed value: ${JSON.stringify(request.proposedValue)}`] : []),
|
|
73801
|
+
'',
|
|
73802
|
+
]),
|
|
73803
|
+
'---',
|
|
73804
|
+
'',
|
|
73805
|
+
].join('\n')
|
|
73806
|
+
: '';
|
|
73625
73807
|
return {
|
|
73626
73808
|
content: [{
|
|
73627
73809
|
type: 'text',
|
|
73628
|
-
text: result.prompt
|
|
73810
|
+
text: `${requestBlock}${result.prompt}`,
|
|
73629
73811
|
}]
|
|
73630
73812
|
};
|
|
73631
73813
|
});
|
|
@@ -74045,7 +74227,7 @@ function startMcpServer() {
|
|
|
74045
74227
|
role: 'user',
|
|
74046
74228
|
content: {
|
|
74047
74229
|
type: 'text',
|
|
74048
|
-
text: `I need to implement intent ${intentId}. Please:\n1. Use
|
|
74230
|
+
text: `I need to implement intent ${intentId}. Please:\n1. Use get_agent_prompt to fetch the full execution prompt; it includes any open PM change requests\n2. If a change request is open, read it, apply it to intent.md, and call intent_save with its exact changeRequestId and baseRepoBodyRevision. If it cannot be applied, use reject_intent_change_request with a concrete reason\n3. After any requested spec change, STOP until a signed-in product owner authorizes that exact new revision. Do not implement from a pending or stale revision\n4. Use get_constitution to check for workspace constraints I must respect\n5. Review the authorized intent details and create an implementation plan\n6. Name the work so the merge can find it: branch \`intent/${intentId}\`, or put \`pathmode:${intentId}\` in the pull request body\n7. After implementation, use verify_implementation to AI-grade your work against the spec\n8. If this change goes through a pull request, STOP there — the merge grades the real diff and moves the intent to Shipped. Do NOT call update_intent_status: an intent already at shipped is skipped by the merge, so an early flip replaces a diff-backed verdict with an unverified one\n9. Only if there will be no pull request, use update_intent_status to mark it "shipped"\n10. Use log_implementation_note to document key technical decisions`,
|
|
74049
74231
|
},
|
|
74050
74232
|
}],
|
|
74051
74233
|
};
|
|
@@ -74152,9 +74334,9 @@ function startMcpServer() {
|
|
|
74152
74334
|
}
|
|
74153
74335
|
server.registerTool('check_intent_readiness', {
|
|
74154
74336
|
title: 'Check Intent Readiness (Preflight)',
|
|
74155
|
-
description: 'Run the deterministic preflight on an intent spec before handing it to an implementation agent. Six calibrated checks — title, objective, outcomes, constraints, edge cases, verification — computed by pure functions: no model call, no network, the same spec always gets the same verdict. Pass a spec inline to check before saving, pass intentId to check a specific saved intent, or pass nothing to
|
|
74337
|
+
description: 'Run the deterministic preflight on an intent spec before handing it to an implementation agent. Six calibrated checks — title, objective, outcomes, constraints, edge cases, verification — computed by pure functions: no model call, no network, the same spec always gets the same verdict. Pass a spec inline to check before saving, pass intentId to check a specific saved intent, or pass nothing to resolve the repo-bound intent.md from MCP workspace roots or the launch directory. Cloud mode falls back to the workspace current intent only after declared roots show no repo file; when the repository cannot be identified it refuses to guess. A failing verdict names the exact blockers; repair the fields and re-run. This is the gate that runs at preflight.pathmode.io.',
|
|
74156
74338
|
inputSchema: {
|
|
74157
|
-
spec: zod_1.z.object(intentSpecSchema).optional().describe('Check this spec directly (before saving). When omitted,
|
|
74339
|
+
spec: zod_1.z.object(intentSpecSchema).optional().describe('Check this spec directly (before saving). When omitted, resolve the repo-bound intent.md from MCP roots or cwd. Cloud fallback is allowed only when declared roots are known to contain no intent.md; unresolved repositories are never guessed.'),
|
|
74158
74340
|
intentId: zod_1.z.string().optional().describe('Check a specific saved intent by id. Ignored when spec is passed.'),
|
|
74159
74341
|
},
|
|
74160
74342
|
annotations: READ_ONLY,
|
|
@@ -74166,9 +74348,18 @@ function startMcpServer() {
|
|
|
74166
74348
|
// "current" intent is only a heuristic, so it must not outrank the repo binding.
|
|
74167
74349
|
// An explicit different id still wins: the caller deliberately selected another
|
|
74168
74350
|
// saved intent rather than asking us to infer the current one.
|
|
74169
|
-
const
|
|
74170
|
-
if (
|
|
74171
|
-
|
|
74351
|
+
const repoResolution = await resolveRepoBoundIntent(intentId);
|
|
74352
|
+
if (repoResolution.kind === 'ambiguous') {
|
|
74353
|
+
return {
|
|
74354
|
+
content: [{
|
|
74355
|
+
type: 'text',
|
|
74356
|
+
text: `More than one MCP workspace root contains an intent.md (${repoResolution.paths.join(', ')}). Pass intentId or spec explicitly; Pathmode will not guess which repository governs this preflight.`,
|
|
74357
|
+
}],
|
|
74358
|
+
isError: true,
|
|
74359
|
+
};
|
|
74360
|
+
}
|
|
74361
|
+
if (repoResolution.kind === 'found') {
|
|
74362
|
+
subject = repoResolution.intent;
|
|
74172
74363
|
sourceNote = 'repo-bound intent.md';
|
|
74173
74364
|
}
|
|
74174
74365
|
else if (isLocalMode) {
|
|
@@ -74187,6 +74378,15 @@ function startMcpServer() {
|
|
|
74187
74378
|
}
|
|
74188
74379
|
}
|
|
74189
74380
|
else {
|
|
74381
|
+
if (!intentId && !repoResolution.rootsInspected) {
|
|
74382
|
+
return {
|
|
74383
|
+
content: [{
|
|
74384
|
+
type: 'text',
|
|
74385
|
+
text: 'Pathmode could not resolve this repository: the MCP client declared no usable workspace roots and the server launch directory has no intent.md. Pass intentId or spec explicitly, or launch the server from the repository root. The workspace current intent was not used because it may belong to a different repository.',
|
|
74386
|
+
}],
|
|
74387
|
+
isError: true,
|
|
74388
|
+
};
|
|
74389
|
+
}
|
|
74190
74390
|
const cloud = requireCloudClient();
|
|
74191
74391
|
// The list projection (INTENT_LIST_SELECT) omits intent_spec_edge_cases, so
|
|
74192
74392
|
// grading a listed row fails the edge-case gate unconditionally — no saved
|
|
@@ -74221,7 +74421,11 @@ function startMcpServer() {
|
|
|
74221
74421
|
spec: zod_1.z.object(intentSpecSchema),
|
|
74222
74422
|
path: zod_1.z.string().optional().describe('File path relative to the project root. Must stay inside the project (absolute paths and ".." are rejected). Defaults to intent.md'),
|
|
74223
74423
|
overwrite: zod_1.z.boolean().optional().describe('Replace the file even when it already holds a DIFFERENT intent. Default false — the save is refused instead, so an unrelated spec is never clobbered.'),
|
|
74224
|
-
|
|
74424
|
+
changeRequestId: zod_1.z.string().uuid().optional().describe('Structured PM request this save deliberately applies. Requires baseRepoBodyRevision.'),
|
|
74425
|
+
baseRepoBodyRevision: zod_1.z.string().regex(/^[a-f0-9]{64}$/i).optional().describe('Exact base revision carried by the change request. Requires changeRequestId.'),
|
|
74426
|
+
}, async ({ spec, path, overwrite, changeRequestId, baseRepoBodyRevision }) => performIntentSave(spec, path, overwrite, 'intent_save', changeRequestId || baseRepoBodyRevision
|
|
74427
|
+
? { id: changeRequestId, baseRepoBodyRevision }
|
|
74428
|
+
: undefined));
|
|
74225
74429
|
/**
|
|
74226
74430
|
* The whole save path — collision policy, verdict stamp, confirmation carry-forward, cloud push
|
|
74227
74431
|
* with identity settlement — extracted so intent_import can reuse it EXACTLY. Import must not be
|
|
@@ -74229,8 +74433,17 @@ function startMcpServer() {
|
|
|
74229
74433
|
* write path costs, and the confirmation carry-forward here is load-bearing (M1's tool boundary
|
|
74230
74434
|
* assumes every writer goes through this).
|
|
74231
74435
|
*/
|
|
74232
|
-
async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save') {
|
|
74436
|
+
async function performIntentSave(spec, path, overwrite, retryTool = 'intent_save', changeRequest) {
|
|
74233
74437
|
{
|
|
74438
|
+
if (changeRequest && (!changeRequest.id || !changeRequest.baseRepoBodyRevision)) {
|
|
74439
|
+
return {
|
|
74440
|
+
content: [{
|
|
74441
|
+
type: 'text',
|
|
74442
|
+
text: '✗ changeRequestId and baseRepoBodyRevision are required together. Re-read the open request and pass both exact values.',
|
|
74443
|
+
}],
|
|
74444
|
+
isError: true,
|
|
74445
|
+
};
|
|
74446
|
+
}
|
|
74234
74447
|
const filePath = resolveWithinProject(path || 'intent.md');
|
|
74235
74448
|
const existing = (0, local_reader_1.readIntentMeta)(filePath);
|
|
74236
74449
|
const decision = (0, save_policy_1.decideSave)({
|
|
@@ -74253,6 +74466,15 @@ function startMcpServer() {
|
|
|
74253
74466
|
}],
|
|
74254
74467
|
};
|
|
74255
74468
|
}
|
|
74469
|
+
if (changeRequest && decision.action !== 'update') {
|
|
74470
|
+
return {
|
|
74471
|
+
content: [{
|
|
74472
|
+
type: 'text',
|
|
74473
|
+
text: '✗ A change request can only be applied from the already-connected intent.md that carries its cloud identity and specVersion. Pull the intent first, then retry.',
|
|
74474
|
+
}],
|
|
74475
|
+
isError: true,
|
|
74476
|
+
};
|
|
74477
|
+
}
|
|
74256
74478
|
const { id, version, status, created } = decision;
|
|
74257
74479
|
// The preflight verdict travels with the file: stamped into frontmatter on every save,
|
|
74258
74480
|
// recomputed from the spec alone (deterministic). A failing verdict never blocks the
|
|
@@ -74335,6 +74557,9 @@ function startMcpServer() {
|
|
|
74335
74557
|
},
|
|
74336
74558
|
decisions: spec.decisions,
|
|
74337
74559
|
implementationContext: spec.implementationContext,
|
|
74560
|
+
changeRequest: changeRequest?.id && changeRequest.baseRepoBodyRevision
|
|
74561
|
+
? { id: changeRequest.id, baseRepoBodyRevision: changeRequest.baseRepoBodyRevision }
|
|
74562
|
+
: undefined,
|
|
74338
74563
|
onIdentitySettled: writeSpecFile,
|
|
74339
74564
|
});
|
|
74340
74565
|
if (!result.ok) {
|
|
@@ -44,6 +44,10 @@ export interface IntentDecision {
|
|
|
44
44
|
}
|
|
45
45
|
export interface ApiIntent {
|
|
46
46
|
id: string;
|
|
47
|
+
/** Which side owns the spec body. Absent only when talking to an older server. */
|
|
48
|
+
specAuthority?: 'cloud' | 'repo';
|
|
49
|
+
/** Opaque semantic revision of the repository-owned body; never computed by the client. */
|
|
50
|
+
repoBodyRevision?: string | null;
|
|
47
51
|
/** Opaque content token. Store it, send it back as `expectedVersion`; never derive it here. */
|
|
48
52
|
specVersion?: string;
|
|
49
53
|
workspaceId: string;
|
|
@@ -75,6 +79,8 @@ export interface ApiIntent {
|
|
|
75
79
|
authorization?: 'pending' | 'authorized' | 'rejected' | null;
|
|
76
80
|
/** The reviewer's note. Null means there is none NOW, which is not the same as unknown. */
|
|
77
81
|
authorizationNote?: string | null;
|
|
82
|
+
/** Exact repoBodyRevision judged by the current verdict, when one is live. */
|
|
83
|
+
authorizedRepoBodyRevision?: string | null;
|
|
78
84
|
/** Readiness confirmations and waivers. Present since mcp-server 1.16.0 / the confirmations column. */
|
|
79
85
|
confirmations?: Record<string, unknown>[];
|
|
80
86
|
decisions?: IntentDecision[];
|
|
@@ -163,6 +169,9 @@ export interface UpdateIntentInput {
|
|
|
163
169
|
/** The specVersion this edit was based on. A mismatch is refused with 409 rather than
|
|
164
170
|
* overwriting whoever moved the spec in between. */
|
|
165
171
|
expectedVersion?: string;
|
|
172
|
+
/** Deliberately apply one PM request against the exact repo-body revision it was based on. */
|
|
173
|
+
changeRequestId?: string;
|
|
174
|
+
expectedRepoBodyRevision?: string;
|
|
166
175
|
title?: string;
|
|
167
176
|
objective?: string;
|
|
168
177
|
/** Empty string clears the as-is description. */
|
|
@@ -203,6 +212,27 @@ export interface UpdateIntentInput {
|
|
|
203
212
|
*/
|
|
204
213
|
confirmations?: Record<string, unknown>[];
|
|
205
214
|
}
|
|
215
|
+
export interface ApiIntentChangeRequest {
|
|
216
|
+
id: string;
|
|
217
|
+
intentId: string;
|
|
218
|
+
workspaceId: string;
|
|
219
|
+
baseRepoBodyRevision: string;
|
|
220
|
+
targetField: string;
|
|
221
|
+
targetItemId?: string;
|
|
222
|
+
expectedOldValue?: unknown;
|
|
223
|
+
operation: 'replace' | 'add' | 'remove';
|
|
224
|
+
proposedValue?: unknown;
|
|
225
|
+
reason: string;
|
|
226
|
+
authorUserId: string;
|
|
227
|
+
status: 'open' | 'applied' | 'rejected' | 'withdrawn' | 'superseded';
|
|
228
|
+
firstConsumedAt?: number;
|
|
229
|
+
lastConsumedAt?: number;
|
|
230
|
+
appliedRepoBodyRevision?: string;
|
|
231
|
+
serverDiff?: unknown;
|
|
232
|
+
resolutionReason?: string;
|
|
233
|
+
createdAt: number;
|
|
234
|
+
updatedAt: number;
|
|
235
|
+
}
|
|
206
236
|
export interface EvidenceQuery {
|
|
207
237
|
productId?: string;
|
|
208
238
|
type?: string;
|
|
@@ -481,6 +511,20 @@ export declare class PathmodeClient {
|
|
|
481
511
|
exportContext(format: 'claude-md' | 'agents-md' | 'cursorrules' | 'intent-md', intentId?: string, productId?: string): Promise<string>;
|
|
482
512
|
createIntent(input: CreateIntentInput): Promise<ApiIntent>;
|
|
483
513
|
updateIntent(id: string, updates: UpdateIntentInput): Promise<ApiIntent>;
|
|
514
|
+
listIntentChangeRequests(intentId: string, status?: ApiIntentChangeRequest['status'] | 'all'): Promise<{
|
|
515
|
+
changeRequests: ApiIntentChangeRequest[];
|
|
516
|
+
count: number;
|
|
517
|
+
}>;
|
|
518
|
+
listWorkspaceIntentChangeRequests(status?: ApiIntentChangeRequest['status'] | 'all'): Promise<{
|
|
519
|
+
changeRequests: ApiIntentChangeRequest[];
|
|
520
|
+
count: number;
|
|
521
|
+
}>;
|
|
522
|
+
getIntentChangeRequest(intentId: string, requestId: string): Promise<{
|
|
523
|
+
changeRequest: ApiIntentChangeRequest;
|
|
524
|
+
}>;
|
|
525
|
+
rejectIntentChangeRequest(intentId: string, requestId: string, reason: string): Promise<{
|
|
526
|
+
changeRequest: ApiIntentChangeRequest;
|
|
527
|
+
}>;
|
|
484
528
|
queryEvidence(filters?: EvidenceQuery): Promise<{
|
|
485
529
|
evidence: ApiEvidence[];
|
|
486
530
|
count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IACzC,MAAM,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE;QACT,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACJ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACL;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yFAAyF;IACzF,aAAa,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7D,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,uGAAuG;IACvG,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,qBAAqB,CAAC,EAAE;QACpB,aAAa,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAClD,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACxC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,uBAAuB,EAAE,MAAM,EAAE,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE;YAAE,QAAQ,EAAE,QAAQ,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/E,mBAAmB,EAAE,MAAM,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AAED,iGAAiG;AACjG,qBAAa,QAAS,SAAQ,KAAK;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;gBACC,OAAO,EAAE,MAAM;CAI9B;AAED,MAAM,WAAW,iBAAiB;IAC9B;;oBAEgB;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;yGACqG;IACrG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAA;KAAE,CAAC,EAAE,CAAC;IAC/G,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1L,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAC9B;yDACqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAA;KAAE,CAAC,EAAE,CAAC;IAC/G,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1L,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,8BAA8B;IAC3C,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,6FAA6F;IAC7F,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,6BAA6B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACtG,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE;YAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9F,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACL;AAED,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;QAC5C,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAChD,EAAE,CAAC;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,KAAK,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IACnC,QAAQ,CAAC,EAAE;QACP,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACL;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;KACrC,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,iBAAiB,EAAE;QACf,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;CACP;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAKD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI3E;AAED,wBAAgB,UAAU,IAAI,cAAc,GAAG,IAAI,CA4BlD;AAED,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,cAAc;YAMpB,KAAK;IAyCnB;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,UAAU,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpH;;;;;;;;;;;;;;;;;;;OAmBG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1F,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOlD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKzC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1E,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,SAAgB,EAAE,IAAI,SAAY,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAKnH,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1D,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,qBAAqB,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC7D,0BAA0B,CAAC,EAAE,MAAM,CAAC;KACvC,CAAC;IAQI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ3E;;;;;;;OAOG;IACH;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ1E,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,GAAG,CAAC;IAQhG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAQxE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,GAAG,CAAC;IAQ9F,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IAKrC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAK/B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKjC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUtI,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ1D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQxE,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAU/F,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQhE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ/I,oBAAoB,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,qBAAqB,CAAC;CAQpC"}
|
|
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.21.0",
|
|
6
6
|
"description": "Deterministic preflight for the intent you hand to a coding agent: six calibrated gates, the exact blockers named, no model call, no key needed.",
|
|
7
7
|
"long_description": "Pathmode MCP Server runs a deterministic preflight before your coding agent builds: check_intent_readiness scores an intent spec against six calibrated gates (title, objective, outcomes, constraints, edge cases, verification) and names the exact blockers, with no model call and no account. Keyless local mode works out of the box; specs live in intent.md in your repo, plain markdown you own, and skills for drafting, pressure-testing, and handing off intent ride along. Connect a Pathmode workspace with an API key to sync intent and evidence across a team, analyze dependency graphs, and verify pull requests against the outcomes you agreed to.",
|
|
8
8
|
"author": {
|
package/package.json
CHANGED
|
@@ -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
|
|