@pathmode/mcp-server 1.11.0 → 1.12.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 +3 -0
- package/dist/index.js +36 -3
- package/dist/intent-compiler.d.ts +4 -0
- package/dist/intent-compiler.d.ts.map +1 -1
- package/dist/readiness.d.ts +7 -0
- package/dist/readiness.d.ts.map +1 -1
- package/package.json +1 -1
- package/skills/preflight/SKILL.md +2 -0
package/README.md
CHANGED
|
@@ -61,6 +61,7 @@ That's it. No API key needed.
|
|
|
61
61
|
id: "intent_17291..."
|
|
62
62
|
version: 1
|
|
63
63
|
status: "draft"
|
|
64
|
+
readiness: "passed 6/6"
|
|
64
65
|
---
|
|
65
66
|
# Fix Checkout Payment Timeout
|
|
66
67
|
|
|
@@ -78,6 +79,8 @@ timeouts exceeding 3 seconds.
|
|
|
78
79
|
- **Unknown provider status**: Hold order, notify user within 30s
|
|
79
80
|
```
|
|
80
81
|
|
|
82
|
+
The `readiness` line is the deterministic preflight verdict, stamped on every save — "passed 6/6", or "failed N/6" naming the blocking gates — so any agent reading the file knows whether the spec cleared the gate without re-running it. Specs exported from a Pathmode workspace also carry `source:` (the canonical intent URL — the file is a working copy of that record) and `evidence:` (how many linked evidence items back it).
|
|
83
|
+
|
|
81
84
|
**.cursorrules** — Agent-directive format for Cursor:
|
|
82
85
|
```
|
|
83
86
|
# CURRENT OBJECTIVE
|
package/dist/index.js
CHANGED
|
@@ -34165,6 +34165,8 @@ function formatIntentMd(spec, opts = {}) {
|
|
|
34165
34165
|
id: spec.id || `intent_${Date.now()}`,
|
|
34166
34166
|
version: opts.version && opts.version >= 1 ? opts.version : 1,
|
|
34167
34167
|
status: opts.status || 'draft',
|
|
34168
|
+
...(opts.readiness ? { readiness: opts.readiness } : {}),
|
|
34169
|
+
...(opts.source ? { source: opts.source } : {}),
|
|
34168
34170
|
created: opts.created || now,
|
|
34169
34171
|
updated: now,
|
|
34170
34172
|
};
|
|
@@ -35034,6 +35036,7 @@ exports.isVerificationCheckSubstantive = isVerificationCheckSubstantive;
|
|
|
35034
35036
|
exports.isObjectiveSpecific = isObjectiveSpecific;
|
|
35035
35037
|
exports.isOutcomeMeasurable = isOutcomeMeasurable;
|
|
35036
35038
|
exports.computeReadinessVerdict = computeReadinessVerdict;
|
|
35039
|
+
exports.formatReadinessFrontmatter = formatReadinessFrontmatter;
|
|
35037
35040
|
exports.formatReadinessVerdict = formatReadinessVerdict;
|
|
35038
35041
|
// ── Text/shape coercion (mirrors lib/intentReadiness coerceText/asArray) ───
|
|
35039
35042
|
function coerceText(value) {
|
|
@@ -35205,6 +35208,29 @@ const GATE_LABELS = {
|
|
|
35205
35208
|
edgeCases: 'Edge cases',
|
|
35206
35209
|
verification: 'Verification',
|
|
35207
35210
|
};
|
|
35211
|
+
/** Gate keys → short labels for the frontmatter blocking list. */
|
|
35212
|
+
const FRONTMATTER_GATE_LABELS = {
|
|
35213
|
+
goal: 'title',
|
|
35214
|
+
objective: 'objective',
|
|
35215
|
+
outcomes: 'outcomes',
|
|
35216
|
+
constraints: 'constraints',
|
|
35217
|
+
edgeCases: 'edge-cases',
|
|
35218
|
+
verification: 'verification',
|
|
35219
|
+
};
|
|
35220
|
+
/**
|
|
35221
|
+
* Single-line readiness value stamped into intent.md frontmatter, so the verdict travels
|
|
35222
|
+
* with the file: "passed 6/6" or "failed 4/6 — blocking: constraints, verification".
|
|
35223
|
+
* Deterministic and greppable. Mirrored in lib/intentReadiness.formatReadinessFrontmatter;
|
|
35224
|
+
* lib/preflightReadinessParity.test.ts fails CI if the two drift.
|
|
35225
|
+
*/
|
|
35226
|
+
function formatReadinessFrontmatter(verdict) {
|
|
35227
|
+
const total = exports.READINESS_GATE_ORDER.length;
|
|
35228
|
+
const passed = exports.READINESS_GATE_ORDER.filter((k) => verdict.signals[k]).length;
|
|
35229
|
+
if (verdict.ready)
|
|
35230
|
+
return `passed ${passed}/${total}`;
|
|
35231
|
+
const blocking = exports.READINESS_GATE_ORDER.filter((k) => !verdict.signals[k]).map((k) => FRONTMATTER_GATE_LABELS[k]);
|
|
35232
|
+
return `failed ${passed}/${total} — blocking: ${blocking.join(', ')}`;
|
|
35233
|
+
}
|
|
35208
35234
|
/** Human/agent-readable verdict block, stable enough to parse by line prefix. */
|
|
35209
35235
|
function formatReadinessVerdict(verdict, specTitle) {
|
|
35210
35236
|
const lines = [];
|
|
@@ -65155,7 +65181,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$schema":"http://json-schema.org/dra
|
|
|
65155
65181
|
/***/ ((module) => {
|
|
65156
65182
|
|
|
65157
65183
|
"use strict";
|
|
65158
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.
|
|
65184
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.12.0","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Pathmode MCP Server — Build structured intent specs through Socratic AI conversation (zero-config), or connect to your Intent Layer for strategic context, dependency graphs, and implementation prompts.","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"},"repository":{"type":"git","url":"git+https://github.com/pathmodeio/mcp-server.git","directory":"packages/mcp-server"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
|
|
65159
65185
|
|
|
65160
65186
|
/***/ })
|
|
65161
65187
|
|
|
@@ -66354,13 +66380,20 @@ function startMcpServer() {
|
|
|
66354
66380
|
};
|
|
66355
66381
|
}
|
|
66356
66382
|
const { id, version, status, created } = decision;
|
|
66357
|
-
|
|
66383
|
+
// The preflight verdict travels with the file: stamped into frontmatter on every save,
|
|
66384
|
+
// recomputed from the spec alone (deterministic). A failing verdict never blocks the
|
|
66385
|
+
// save — the gate reports, the user decides.
|
|
66386
|
+
const verdict = (0, readiness_1.computeReadinessVerdict)(spec);
|
|
66387
|
+
const content = (0, intent_compiler_1.formatIntentMd)({ ...spec, id }, { version, status, created, readiness: (0, readiness_1.formatReadinessFrontmatter)(verdict) });
|
|
66358
66388
|
(0, fs_1.writeFileSync)(filePath, content, 'utf-8');
|
|
66359
66389
|
const action = decision.action === 'update' ? `Updated intent spec (v${version})` : 'Saved intent spec';
|
|
66390
|
+
const readinessNote = verdict.ready
|
|
66391
|
+
? ''
|
|
66392
|
+
: `\n\n${(0, readiness_1.formatReadinessVerdict)(verdict, spec.title)}`;
|
|
66360
66393
|
return {
|
|
66361
66394
|
content: [{
|
|
66362
66395
|
type: 'text',
|
|
66363
|
-
text: `✓ ${action} at ${filePath}\n id: ${id} · status: ${status}\n\nTo connect this to Pathmode for dependency tracking and team collaboration, visit pathmode.io`,
|
|
66396
|
+
text: `✓ ${action} at ${filePath}\n id: ${id} · status: ${status} · readiness: ${(0, readiness_1.formatReadinessFrontmatter)(verdict)}${readinessNote}\n\nTo connect this to Pathmode for dependency tracking and team collaboration, visit pathmode.io`,
|
|
66364
66397
|
}],
|
|
66365
66398
|
};
|
|
66366
66399
|
});
|
|
@@ -83,6 +83,10 @@ export interface IntentMdOptions {
|
|
|
83
83
|
status?: string;
|
|
84
84
|
/** Original `created` timestamp. Preserved across updates; defaults to now. */
|
|
85
85
|
created?: string;
|
|
86
|
+
/** Preflight verdict line ("passed 6/6" / "failed 4/6 — blocking: …"), recomputed at save time. */
|
|
87
|
+
readiness?: string;
|
|
88
|
+
/** Canonical record URL (cloud intents). Omitted when this file is the only copy. */
|
|
89
|
+
source?: string;
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
88
92
|
* Generate intent.md content with YAML frontmatter.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,cAAc;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAC1G,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACxE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAsDD,MAAM,WAAW,YAAY;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB;;iCAE6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC,EAAE,CAAC;IAC7F,6GAA6G;IAC7G,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,YAAY,CAAC,EAAE;QACX,8GAA8G;QAC9G,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;QAC7B,kDAAkD;QAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF;sFACkF;IAClF,qBAAqB,CAAC,EAAE;QACpB,aAAa,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACnD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;KACtC,GAAG,IAAI,CAAC;CACZ;AAwDD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA4D/C;AAoBD,kGAAkG;AAClG,MAAM,WAAW,eAAe;IAC5B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"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"}
|
package/dist/readiness.d.ts
CHANGED
|
@@ -42,5 +42,12 @@ export interface ReadinessVerdict {
|
|
|
42
42
|
* (the legacy phase-engagement signal never gates the verdict here).
|
|
43
43
|
*/
|
|
44
44
|
export declare function computeReadinessVerdict(spec: ReadinessSpecInput): ReadinessVerdict;
|
|
45
|
+
/**
|
|
46
|
+
* Single-line readiness value stamped into intent.md frontmatter, so the verdict travels
|
|
47
|
+
* with the file: "passed 6/6" or "failed 4/6 — blocking: constraints, verification".
|
|
48
|
+
* Deterministic and greppable. Mirrored in lib/intentReadiness.formatReadinessFrontmatter;
|
|
49
|
+
* lib/preflightReadinessParity.test.ts fails CI if the two drift.
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatReadinessFrontmatter(verdict: ReadinessVerdict): string;
|
|
45
52
|
/** Human/agent-readable verdict block, stable enough to parse by line prefix. */
|
|
46
53
|
export declare function formatReadinessVerdict(verdict: ReadinessVerdict, specTitle?: string): string;
|
package/dist/readiness.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,CAIjE;AAoCD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQ3E;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI5D;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAI9F;AAQD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAOjF;AAQD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAID,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjE,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,wFAAyF,CAAC;AAK3H,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAoBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,CAkBlF;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,CAIjE;AAoCD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQ3E;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI5D;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAI9F;AAQD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAOjF;AAQD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAID,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjE,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,wFAAyF,CAAC;AAK3H,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAoBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,CAkBlF;AAqBD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAM5E;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB5F"}
|
package/package.json
CHANGED
|
@@ -30,6 +30,8 @@ If the verdict passes: say so and stop. Do not invent extra requirements beyond
|
|
|
30
30
|
|
|
31
31
|
The gate is pure functions over the spec text: no model call, no network. Re-running never changes the verdict unless the spec changed. That makes it a floor you can put in front of any implementation work — and it means a passing verdict is reproducible evidence, not an opinion. The same gate runs live at preflight.pathmode.io.
|
|
32
32
|
|
|
33
|
+
Every `intent_save` also stamps the verdict into the file's frontmatter as `readiness:` ("passed 6/6", or "failed N/6" with the blocking gates named), so anyone reading intent.md — human or agent — sees the gate state without re-running anything. A failing verdict never blocks the save; the gate reports, the user decides.
|
|
34
|
+
|
|
33
35
|
## Division of labor with the other skills
|
|
34
36
|
|
|
35
37
|
- `preflight` — deterministic verdict: IS the spec ready? Cheap, run it first and often.
|