@pathmode/mcp-server 1.14.0 → 1.14.1

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/dist/index.js CHANGED
@@ -65652,7 +65652,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$schema":"http://json-schema.org/dra
65652
65652
  /***/ ((module) => {
65653
65653
 
65654
65654
  "use strict";
65655
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.14.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"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
65655
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.14.1","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"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
65656
65656
 
65657
65657
  /***/ })
65658
65658
 
@@ -65994,7 +65994,13 @@ function startMcpServer() {
65994
65994
  return { content: [{ type: 'text', text: 'No intents found in workspace.' }] };
65995
65995
  }
65996
65996
  }
65997
- const current = pickCurrentIntent(intents);
65997
+ const listed = pickCurrentIntent(intents);
65998
+ // The list projection omits intent_spec_edge_cases. Serving it as "the full IntentSpec"
65999
+ // hands the implementing agent a spec with every failure mode silently missing — the
66000
+ // one part of a spec it would not have invented on its own. Re-read the whole record.
66001
+ const current = listed?.id
66002
+ ? (await cloud.getIntent(listed.id).catch(() => listed))
66003
+ : listed;
65998
66004
  // Default: a fetch-free coverage summary (no extra API call). On request: the cited
65999
66005
  // evidence content, fetched once for the product and filtered to this intent's citations.
66000
66006
  const evidenceSummary = summarizeCitedEvidence(current);
@@ -66356,7 +66362,12 @@ function startMcpServer() {
66356
66362
  const cloud = requireCloudClient();
66357
66363
  const intent = intentId
66358
66364
  ? await cloud.getIntent(intentId)
66359
- : (pickCurrentIntent(await cloud.listIntents('approved')) || pickCurrentIntent(await cloud.listIntents()));
66365
+ : await (async () => {
66366
+ // Same list-projection caveat: the rubric must be derived from the whole
66367
+ // spec, edge cases included, or it grades against a partial contract.
66368
+ const listed = pickCurrentIntent(await cloud.listIntents('approved')) || pickCurrentIntent(await cloud.listIntents());
66369
+ return listed?.id ? await cloud.getIntent(listed.id).catch(() => listed) : listed;
66370
+ })();
66360
66371
  if (!intent) {
66361
66372
  return { content: [{ type: 'text', text: 'No intent found to export. Pass an intentId, or create an approved intent first.' }] };
66362
66373
  }
@@ -66990,8 +67001,15 @@ function startMcpServer() {
66990
67001
  }
66991
67002
  else {
66992
67003
  const cloud = requireCloudClient();
66993
- const intents = await cloud.listIntents();
66994
- subject = intentId ? intents.find((i) => i.id === intentId) : pickCurrentIntent(intents);
67004
+ // The list projection (INTENT_LIST_SELECT) omits intent_spec_edge_cases, so
67005
+ // grading a listed row fails the edge-case gate unconditionally — no saved
67006
+ // cloud intent could ever pass its own preflight. Re-read the full record
67007
+ // before grading; readiness is only deterministic over the whole spec.
67008
+ const listed = intentId ? undefined : pickCurrentIntent(await cloud.listIntents());
67009
+ const targetId = intentId || listed?.id;
67010
+ subject = targetId
67011
+ ? await cloud.getIntent(targetId).catch(() => undefined)
67012
+ : undefined;
66995
67013
  sourceNote = intentId ? `intent ${intentId}` : 'current intent';
66996
67014
  if (!subject) {
66997
67015
  return {
@@ -67204,7 +67222,9 @@ function startMcpServer() {
67204
67222
  try {
67205
67223
  const cloud = requireCloudClient();
67206
67224
  const intents = await cloud.listIntents('approved');
67207
- const current = intents[0] || (await cloud.listIntents())[0] || null;
67225
+ const listed = intents[0] || (await cloud.listIntents())[0] || null;
67226
+ // List projection omits edge cases; this resource is read as the whole spec.
67227
+ const current = listed?.id ? await cloud.getIntent(listed.id).catch(() => listed) : listed;
67208
67228
  return {
67209
67229
  contents: [{
67210
67230
  uri: uri.href,
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.14.0",
5
+ "version": "1.14.1",
6
6
  "description": "Deterministic preflight for the intent you hand to a coding agent: six calibrated gates, the exact blockers named, no model call, no key needed.",
7
7
  "long_description": "Pathmode MCP Server runs a deterministic preflight before your coding agent builds: check_intent_readiness scores an intent spec against six calibrated gates (title, objective, outcomes, constraints, edge cases, verification) and names the exact blockers, with no model call and no account. Keyless local mode works out of the box; specs live in intent.md in your repo, plain markdown you own, and skills for drafting, pressure-testing, and handing off intent ride along. Connect a Pathmode workspace with an API key to sync intent and evidence across a team, analyze dependency graphs, and verify pull requests against the outcomes you agreed to.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathmode/mcp-server",
3
- "version": "1.14.0",
3
+ "version": "1.14.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },