@pathmode/mcp-server 1.18.0 → 1.19.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/dist/index.js CHANGED
@@ -39170,6 +39170,398 @@ module.exports = function(str) {
39170
39170
  };
39171
39171
 
39172
39172
 
39173
+ /***/ }),
39174
+
39175
+ /***/ 229:
39176
+ /***/ ((__unused_webpack_module, exports) => {
39177
+
39178
+ "use strict";
39179
+
39180
+ /**
39181
+ * serializeIntentMd — the one implementation of the intent.md file format.
39182
+ *
39183
+ * Two writers used to exist: `lib/agentPromptGenerator.ts` (cloud exports, browser downloads) and
39184
+ * `packages/mcp-server/src/intent-compiler.ts` (every local, keyless write). They diverged in BOTH
39185
+ * directions, and the divergence cost more than tidiness:
39186
+ *
39187
+ * - the cloud writer emitted no `## Confirmations`, so a human's authenticated confirmation died
39188
+ * at the boundary and never reached the repo;
39189
+ * - the local writer emitted no authorization gate, so an agent proposal still pending human
39190
+ * judgment lost its DO-NOT-IMPLEMENT banner on the next local save.
39191
+ *
39192
+ * Both are the same failure: judgment recorded in one place not travelling to the other. This
39193
+ * module emits the union, and `serializer-parity.test.ts` holds the two callers to it.
39194
+ *
39195
+ * ZERO IMPORTS, deliberately. The local writer is bundled by ncc into a published npm package that
39196
+ * must run keyless and offline, and the cloud writer is reached from `'use client'` components — so
39197
+ * a single node builtin here (`crypto`, say) would break the browser bundle. Callers compute their
39198
+ * own environment-specific values (id minting, readiness verdicts, evidence resolution) and hand
39199
+ * the results in as plain data.
39200
+ */
39201
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
39202
+ exports.toSerializableChecks = toSerializableChecks;
39203
+ exports.renderAuthorizationGateText = renderAuthorizationGateText;
39204
+ exports.renderConfirmationsBody = renderConfirmationsBody;
39205
+ exports.serializeIntentMd = serializeIntentMd;
39206
+ // ── Small helpers ───────────────────────────────────────────────────────────
39207
+ const VERIFICATION_KIND_LABELS = {
39208
+ fastest: 'Fastest check',
39209
+ 'shipped-signal': 'Shipped signal',
39210
+ 'regression-guard': 'Regression guard',
39211
+ manual: 'Manual check',
39212
+ test: 'Automated test',
39213
+ };
39214
+ const VERIFICATION_KIND_ORDER = ['fastest', 'shipped-signal', 'regression-guard', 'manual', 'test'];
39215
+ const VERIFICATION_KIND_SET = new Set(VERIFICATION_KIND_ORDER);
39216
+ function nonEmpty(v) {
39217
+ return typeof v === 'string' && v.trim().length > 0;
39218
+ }
39219
+ /** YAML double-quoted scalars. Both writers used to interpolate raw, so a product named `The "Real"
39220
+ * One` produced a file gray-matter could not parse. */
39221
+ function yamlScalar(value) {
39222
+ if (typeof value === 'number')
39223
+ return String(value);
39224
+ return `"${String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
39225
+ }
39226
+ function outcomeOf(o) {
39227
+ return typeof o === 'string' ? { text: o } : o;
39228
+ }
39229
+ function constraintOf(c) {
39230
+ return typeof c === 'string' ? { text: c } : c;
39231
+ }
39232
+ /** `backed by:` suffix on its own indented bullet. Empty when nothing resolved, so callers append
39233
+ * unconditionally. */
39234
+ function backedBySuffix(refs, indent = ' ') {
39235
+ const clean = (refs || []).filter(nonEmpty);
39236
+ if (!clean.length)
39237
+ return '';
39238
+ return `\n${indent}- backed by: ${clean.join('; ')}`;
39239
+ }
39240
+ /** Read verification uniformly as a check collection: canonical `checks[]` plus the legacy
39241
+ * {manual,unit,e2e} buckets, which are adapted rather than dropped. */
39242
+ function toSerializableChecks(v) {
39243
+ if (!v || typeof v !== 'object')
39244
+ return [];
39245
+ const out = [];
39246
+ for (const c of Array.isArray(v.checks) ? v.checks : []) {
39247
+ if (!nonEmpty(c?.description))
39248
+ continue;
39249
+ out.push({
39250
+ kind: VERIFICATION_KIND_SET.has(String(c.kind)) ? String(c.kind) : 'test',
39251
+ description: c.description.trim(),
39252
+ status: c.status,
39253
+ verifies: c.verifies,
39254
+ });
39255
+ }
39256
+ for (const d of Array.isArray(v.manualChecks) ? v.manualChecks : []) {
39257
+ if (nonEmpty(d))
39258
+ out.push({ kind: 'manual', description: d.trim() });
39259
+ }
39260
+ for (const d of Array.isArray(v.unitTests) ? v.unitTests : []) {
39261
+ if (nonEmpty(d))
39262
+ out.push({ kind: 'test', description: d.trim() });
39263
+ }
39264
+ for (const d of Array.isArray(v.e2eTests) ? v.e2eTests : []) {
39265
+ if (nonEmpty(d))
39266
+ out.push({ kind: 'test', description: d.trim() });
39267
+ }
39268
+ return out;
39269
+ }
39270
+ function groupChecks(v) {
39271
+ const checks = toSerializableChecks(v);
39272
+ return VERIFICATION_KIND_ORDER
39273
+ .map(kind => ({ kind, label: VERIFICATION_KIND_LABELS[kind], checks: checks.filter(c => c.kind === kind) }))
39274
+ .filter(g => g.checks.length > 0);
39275
+ }
39276
+ function checkLine(c) {
39277
+ const verifies = nonEmpty(c.verifies) ? ` (verifies: ${c.verifies})` : '';
39278
+ const status = nonEmpty(c.status) && c.status !== 'unknown' ? ` [${c.status}]` : '';
39279
+ return `${c.description}${verifies}${status}`;
39280
+ }
39281
+ // ── The authorization gate ──────────────────────────────────────────────────
39282
+ /**
39283
+ * The DO-NOT-IMPLEMENT banner for an agent proposal a human has not authorized.
39284
+ *
39285
+ * Lives here, not in either caller, because the local writer used to omit it entirely: a pending
39286
+ * proposal pulled into a repo and re-saved came back without its gate, which is the one thing in
39287
+ * the file an agent must not be able to lose.
39288
+ *
39289
+ * Trailing blank line included, so callers can prepend unconditionally.
39290
+ */
39291
+ function renderAuthorizationGateText(opts) {
39292
+ if (opts.origin !== 'agent' || opts.authorization === 'authorized')
39293
+ return '';
39294
+ if (opts.authorization === 'rejected') {
39295
+ const note = nonEmpty(opts.authorizationNote) ? ` The human's note: "${opts.authorizationNote}".` : '';
39296
+ return `> **REJECTED BY HUMAN REVIEW — DO NOT IMPLEMENT.** This spec was proposed by an agent and a human rejected it.${note} Revise the proposal per the note, or ask your operator before proceeding.\n\n`;
39297
+ }
39298
+ return `> **PENDING HUMAN AUTHORIZATION — DO NOT IMPLEMENT YET.** This spec was proposed by an agent and no human has authorized it. Ask your operator to review it in Pathmode before building against it.\n\n`;
39299
+ }
39300
+ // ── Confirmations ───────────────────────────────────────────────────────────
39301
+ /**
39302
+ * Render confirmation records as the `## Confirmations` section body.
39303
+ *
39304
+ * Derived fields (`assurance`, `source`) are NOT written: anything read back out of a file is
39305
+ * local-unverified by definition, so persisting a trust level would let a record vouch for itself.
39306
+ * Records outside the dimensions the readiness gate can resolve are dropped rather than emitted,
39307
+ * so an unwaivable dimension never leaves an empty section behind.
39308
+ */
39309
+ function renderConfirmationsBody(records) {
39310
+ const emittable = (records || []).filter(c => {
39311
+ const dim = String(c?.dimension ?? '').toLowerCase();
39312
+ const kind = String(c?.kind ?? '').toLowerCase();
39313
+ const by = String(c?.by ?? '').toLowerCase();
39314
+ return ['objective', 'outcomes'].includes(dim)
39315
+ && ['confirmed', 'waived'].includes(kind)
39316
+ && ['agent', 'human'].includes(by);
39317
+ });
39318
+ if (!emittable.length)
39319
+ return '';
39320
+ const out = ['## Confirmations'];
39321
+ for (const c of emittable) {
39322
+ out.push('');
39323
+ out.push(`**${String(c.dimension).toLowerCase()}** — ${String(c.kind).toLowerCase()} by ${String(c.by).toLowerCase()}`);
39324
+ for (const key of ['actor', 'problem', 'outcome', 'observable', 'reason', 'anchor', 'at']) {
39325
+ const v = c[key];
39326
+ if (!nonEmpty(v))
39327
+ continue;
39328
+ out.push(`- ${key}: ${v.replace(/\s+/g, ' ').trim()}`);
39329
+ }
39330
+ }
39331
+ return out.join('\n');
39332
+ }
39333
+ // ── The serializer ──────────────────────────────────────────────────────────
39334
+ /**
39335
+ * Frontmatter key order. Fixed so a file rewritten by the other implementation produces a clean
39336
+ * diff instead of a reordering churn that hides the real change.
39337
+ */
39338
+ const FRONTMATTER_ORDER = [
39339
+ 'id', 'version', 'status', 'readiness', 'source', 'specVersion',
39340
+ 'origin', 'authorization', 'authorizationNote', 'evidence', 'space', 'severity', 'created', 'updated',
39341
+ ];
39342
+ function serializeIntentMd(spec, opts = {}) {
39343
+ const values = {
39344
+ id: spec.id,
39345
+ version: opts.version && opts.version >= 1 ? opts.version : 1,
39346
+ status: opts.status || 'draft',
39347
+ readiness: opts.readiness,
39348
+ source: opts.source,
39349
+ specVersion: opts.specVersion,
39350
+ origin: opts.origin,
39351
+ // Only meaningful for agent-originated specs; human-authored ones are authorized by
39352
+ // authorship and carrying a key here would imply a gate that does not exist.
39353
+ authorization: opts.origin === 'agent' ? (opts.authorization ?? 'pending') : undefined,
39354
+ // The banner renders the note as prose, but prose is not recoverable: a reader cannot tell
39355
+ // the reviewer's words from the sentence around them. Persisting it here is what stops a
39356
+ // local rewrite from keeping the REJECTED verdict while erasing the correction it asked
39357
+ // for. Single-line by contract, like a confirmation value; flattened rather than escaped.
39358
+ authorizationNote: opts.origin === 'agent' && nonEmpty(opts.authorizationNote)
39359
+ ? opts.authorizationNote.replace(/\s+/g, ' ').trim()
39360
+ : undefined,
39361
+ evidence: opts.evidence?.length || undefined,
39362
+ space: opts.space?.name,
39363
+ severity: opts.severity,
39364
+ created: opts.created,
39365
+ updated: opts.updated,
39366
+ };
39367
+ // null, not just undefined: the cloud mapper reads absent columns as null (`problemSeverity`,
39368
+ // `currentState`, a product with no name), and an unguarded null reached the quoter as a
39369
+ // crash rather than an omitted key.
39370
+ const yamlLines = FRONTMATTER_ORDER
39371
+ .filter(key => values[key] !== undefined && values[key] !== null && values[key] !== '')
39372
+ .map(key => `${key}: ${yamlScalar(values[key])}`)
39373
+ .join('\n');
39374
+ const sections = ['---', yamlLines, '---', ''];
39375
+ // Directly under the frontmatter: the `authorization` key is machine-readable, but the body
39376
+ // must also say DO NOT IMPLEMENT before any instruction an agent might act on.
39377
+ const gate = renderAuthorizationGateText(opts).trim();
39378
+ if (gate) {
39379
+ sections.push(gate);
39380
+ sections.push('');
39381
+ }
39382
+ sections.push(`# ${spec.title || 'Untitled Intent'}`);
39383
+ const space = opts.space;
39384
+ if (space && (nonEmpty(space.productVision) || nonEmpty(space.northStar) || nonEmpty(space.targetAudience)
39385
+ || space.constraints?.length || space.principles?.length)) {
39386
+ sections.push('');
39387
+ sections.push('## Space Context');
39388
+ if (nonEmpty(space.productVision))
39389
+ sections.push(`**Product Vision**: ${space.productVision}`);
39390
+ if (nonEmpty(space.northStar))
39391
+ sections.push(`**North Star**: ${space.northStar}`);
39392
+ if (nonEmpty(space.targetAudience))
39393
+ sections.push(`**Target Audience**: ${space.targetAudience}`);
39394
+ if (space.constraints?.length)
39395
+ sections.push('**Constraints**: ' + space.constraints.join(', '));
39396
+ if (space.principles?.length)
39397
+ sections.push('**Principles**: ' + space.principles.join(', '));
39398
+ }
39399
+ if (nonEmpty(spec.objective)) {
39400
+ sections.push('');
39401
+ sections.push('## Objective');
39402
+ sections.push(spec.objective);
39403
+ }
39404
+ // Heading text is the round-trip key (the reader keys sections by exact heading) — keep it
39405
+ // plain, exactly like Objective above.
39406
+ if (nonEmpty(spec.currentState)) {
39407
+ sections.push('');
39408
+ sections.push('## Current State');
39409
+ sections.push(spec.currentState.trim());
39410
+ }
39411
+ // Sits next to Current State on purpose: one is what the author says is true today, the other
39412
+ // is what the repo says. Same heading in both modes, so a handoff reads identically either way.
39413
+ const icBody = implementationContextBody(spec);
39414
+ if (icBody.length) {
39415
+ sections.push('');
39416
+ sections.push('## Implementation Context');
39417
+ sections.push(...icBody);
39418
+ }
39419
+ const decisions = (spec.decisions || []).filter(d => d && nonEmpty(d.choice) && typeof d.reason === 'string');
39420
+ if (decisions.length) {
39421
+ sections.push('');
39422
+ sections.push('## Decisions & Ruled-Out Alternatives');
39423
+ for (const d of decisions) {
39424
+ sections.push(`- **${d.choice}**${nonEmpty(d.ruledOut) ? ` (instead of: ${d.ruledOut})` : ''} — ${d.reason}`);
39425
+ if (nonEmpty(d.reopenTrigger))
39426
+ sections.push(` - reopen if: ${d.reopenTrigger.trim()}`);
39427
+ }
39428
+ }
39429
+ const outcomes = (spec.outcomes || []).map(outcomeOf).filter(o => nonEmpty(o.text));
39430
+ if (outcomes.length) {
39431
+ sections.push('');
39432
+ sections.push('## Outcomes');
39433
+ // No priority prefix. The writer used to emit `[MUST] `, which is in neither SPEC.md nor the
39434
+ // normalization corpus, and neither parser strips it — so it read back as part of the
39435
+ // outcome text. Emitting a label the format cannot read back is worse than omitting it.
39436
+ for (const o of outcomes) {
39437
+ sections.push(`- [ ] ${o.text}${backedBySuffix(o.backedBy)}`);
39438
+ }
39439
+ }
39440
+ if (spec.scope?.inScope?.length || spec.scope?.outOfScope?.length) {
39441
+ sections.push('');
39442
+ sections.push('## Scope');
39443
+ if (spec.scope.inScope?.length) {
39444
+ sections.push('**In scope:**');
39445
+ for (const s of spec.scope.inScope)
39446
+ sections.push(`- ${s}`);
39447
+ }
39448
+ if (spec.scope.outOfScope?.length) {
39449
+ sections.push('**Out of scope:**');
39450
+ for (const s of spec.scope.outOfScope)
39451
+ sections.push(`- ${s}`);
39452
+ }
39453
+ }
39454
+ const constraints = (spec.constraints || []).map(constraintOf).filter(c => nonEmpty(c.text));
39455
+ if (constraints.length) {
39456
+ sections.push('');
39457
+ sections.push('## Constraints');
39458
+ for (const c of constraints)
39459
+ sections.push(`- ${c.text}${backedBySuffix(c.backedBy)}`);
39460
+ }
39461
+ const edgeCases = (spec.edgeCases || []).filter(ec => ec && nonEmpty(ec.scenario));
39462
+ if (edgeCases.length) {
39463
+ sections.push('');
39464
+ sections.push('## Edge Cases');
39465
+ for (const ec of edgeCases) {
39466
+ sections.push(`- **${ec.scenario}**: ${ec.expectedBehavior}${backedBySuffix(ec.backedBy)}`);
39467
+ }
39468
+ }
39469
+ const evidenceBody = renderCompactEvidence(opts.evidence);
39470
+ if (evidenceBody.length) {
39471
+ sections.push('');
39472
+ sections.push('## Supporting Evidence');
39473
+ sections.push(...evidenceBody);
39474
+ }
39475
+ if (spec.healthMetrics?.length) {
39476
+ sections.push('');
39477
+ sections.push('## Health Metrics');
39478
+ for (const metric of spec.healthMetrics)
39479
+ sections.push(`- ${metric}`);
39480
+ }
39481
+ const checkGroups = groupChecks(spec.verification);
39482
+ if (checkGroups.length) {
39483
+ sections.push('');
39484
+ sections.push('## Verification');
39485
+ sections.push('_A feedback loop, not just a test list._');
39486
+ for (const g of checkGroups) {
39487
+ sections.push(`**${g.label}**:`);
39488
+ for (const c of g.checks)
39489
+ sections.push(`- [ ] ${checkLine(c)}`);
39490
+ }
39491
+ }
39492
+ // `## Confirmations` is emitted LAST so it never sits between the fields a reader is comparing,
39493
+ // and so appending one cannot shift any other section's parse.
39494
+ const confirmationsBody = renderConfirmationsBody(spec.confirmations);
39495
+ if (confirmationsBody) {
39496
+ sections.push('');
39497
+ sections.push(confirmationsBody);
39498
+ }
39499
+ return sections.join('\n');
39500
+ }
39501
+ /**
39502
+ * The body of `## Implementation Context`.
39503
+ *
39504
+ * Two sources, one section. Local mode carries prose the agent gathered; cloud intents carry the
39505
+ * analyzer's structured object. Rendering both under the same heading is what lets a spec move
39506
+ * between modes without the section disappearing on the way through.
39507
+ */
39508
+ function implementationContextBody(spec) {
39509
+ if (nonEmpty(spec.implementationContextText))
39510
+ return [spec.implementationContextText.trim()];
39511
+ const ic = spec.implementationContext;
39512
+ if (!ic)
39513
+ return [];
39514
+ const lines = [];
39515
+ if (ic.relevantAreas?.length) {
39516
+ lines.push('### Relevant areas');
39517
+ for (const a of ic.relevantAreas) {
39518
+ if (nonEmpty(a?.path))
39519
+ lines.push(`- \`${a.path}\`${nonEmpty(a.reason) ? ` — ${a.reason}` : ''}`);
39520
+ }
39521
+ }
39522
+ if (nonEmpty(ic.currentBehavior)) {
39523
+ if (lines.length)
39524
+ lines.push('');
39525
+ lines.push('### Current behavior');
39526
+ lines.push(ic.currentBehavior.trim());
39527
+ }
39528
+ if (ic.risks?.length) {
39529
+ if (lines.length)
39530
+ lines.push('');
39531
+ lines.push('### Risks');
39532
+ for (const r of ic.risks)
39533
+ if (nonEmpty(r))
39534
+ lines.push(`- ${r.trim()}`);
39535
+ }
39536
+ if (ic.verificationSuggestions?.length) {
39537
+ if (lines.length)
39538
+ lines.push('');
39539
+ lines.push('### Verification suggestions');
39540
+ for (const v of ic.verificationSuggestions)
39541
+ if (nonEmpty(v))
39542
+ lines.push(`- ${v.trim()}`);
39543
+ }
39544
+ return lines;
39545
+ }
39546
+ /** Compact evidence list — one truncated line per item, quotes as blockquotes. Lighter than the
39547
+ * execution prompt's full rendering so a committed intent.md stays readable. */
39548
+ function renderCompactEvidence(evidence) {
39549
+ const items = (evidence || []).filter(e => nonEmpty(e?.content));
39550
+ if (!items.length)
39551
+ return [];
39552
+ const lines = [];
39553
+ const truncate = (s) => (s.length > 160 ? `${s.slice(0, 160)}…` : s);
39554
+ for (const q of items.filter(e => e.type === 'quote')) {
39555
+ lines.push(`> "${truncate(q.content)}"${nonEmpty(q.source) ? ` — ${q.source}` : ''}`);
39556
+ }
39557
+ for (const e of items.filter(e => e.type !== 'quote')) {
39558
+ const severity = nonEmpty(e.severity) ? ` (${e.severity})` : '';
39559
+ lines.push(`- [${e.type}]${severity} ${truncate(e.content)}${nonEmpty(e.source) ? ` — ${e.source}` : ''}`);
39560
+ }
39561
+ return lines;
39562
+ }
39563
+
39564
+
39173
39565
  /***/ }),
39174
39566
 
39175
39567
  /***/ 7475:
@@ -39792,6 +40184,10 @@ exports.writeConfirmationRecord = writeConfirmationRecord;
39792
40184
  // Verification check collection. Mirrors lib/verification in the main app — this package is
39793
40185
  // standalone (own ncc build) and can't import it, so the type + adapter live here. `kind` is the
39794
40186
  const crypto_1 = __nccwpck_require__(6982);
40187
+ // The intent.md file format itself. Shared verbatim with the cloud writer
40188
+ // (lib/agentPromptGenerator.ts) so a spec crossing between local and connected mode keeps every
40189
+ // section — notably `## Confirmations` and the authorization gate, which each side used to drop.
40190
+ const serializeIntentMd_1 = __nccwpck_require__(229);
39795
40191
  const VERIFICATION_KIND_LABELS = {
39796
40192
  fastest: 'Fastest check',
39797
40193
  'shipped-signal': 'Shipped signal',
@@ -39984,185 +40380,27 @@ function decisionLines(decisions, heading) {
39984
40380
  * is saved twice must keep its identity and its lifecycle state. Only a genuinely new intent
39985
40381
  * (no id) gets a minted id, version 1, and status 'draft'.
39986
40382
  */
39987
- /**
39988
- * The body of `## Implementation Context` in intent.md.
39989
- *
39990
- * Two sources, one section. Local mode carries prose the agent gathered; cloud intents carry the
39991
- * analyzer's structured object. Rendering both under the same heading is what lets a spec move
39992
- * between modes without the section disappearing on the way through.
39993
- */
39994
- function implementationContextBody(spec) {
39995
- const text = spec.implementationContextText?.trim();
39996
- if (text)
39997
- return [text];
39998
- const ic = spec.implementationContext;
39999
- if (!ic)
40000
- return [];
40001
- const lines = [];
40002
- if (ic.relevantAreas?.length) {
40003
- lines.push('### Relevant areas');
40004
- for (const a of ic.relevantAreas) {
40005
- if (a?.path?.trim())
40006
- lines.push(`- \`${a.path}\`${a.reason?.trim() ? ` — ${a.reason}` : ''}`);
40007
- }
40008
- }
40009
- if (ic.currentBehavior?.trim()) {
40010
- if (lines.length)
40011
- lines.push('');
40012
- lines.push('### Current behavior');
40013
- lines.push(ic.currentBehavior.trim());
40014
- }
40015
- if (ic.risks?.length) {
40016
- if (lines.length)
40017
- lines.push('');
40018
- lines.push('### Risks');
40019
- for (const r of ic.risks)
40020
- if (r?.trim())
40021
- lines.push(`- ${r.trim()}`);
40022
- }
40023
- if (ic.verificationSuggestions?.length) {
40024
- if (lines.length)
40025
- lines.push('');
40026
- lines.push('### Verification suggestions');
40027
- for (const v of ic.verificationSuggestions)
40028
- if (v?.trim())
40029
- lines.push(`- ${v.trim()}`);
40030
- }
40031
- return lines;
40032
- }
40033
40383
  function formatIntentMd(spec, opts = {}) {
40034
40384
  const now = new Date().toISOString();
40035
- const frontmatter = {
40385
+ // The only thing this wrapper still owns is id minting, which needs `crypto` and therefore
40386
+ // cannot live in the shared serializer (it is imported from browser bundles too).
40387
+ return (0, serializeIntentMd_1.serializeIntentMd)({
40388
+ ...spec,
40389
+ // Only a genuinely new intent gets a minted id; a re-save keeps its identity.
40036
40390
  id: spec.id || (0, crypto_1.randomUUID)(),
40037
- version: opts.version && opts.version >= 1 ? opts.version : 1,
40038
- status: opts.status || 'draft',
40039
- ...(opts.readiness ? { readiness: opts.readiness } : {}),
40040
- ...(opts.source ? { source: opts.source } : {}),
40041
- ...(opts.specVersion ? { specVersion: opts.specVersion } : {}),
40391
+ confirmations: spec.confirmations,
40392
+ }, {
40393
+ version: opts.version,
40394
+ status: opts.status,
40395
+ readiness: opts.readiness,
40396
+ source: opts.source,
40397
+ specVersion: opts.specVersion,
40042
40398
  created: opts.created || now,
40043
40399
  updated: now,
40044
- };
40045
- const yamlLines = Object.entries(frontmatter)
40046
- .map(([key, value]) => `${key}: ${typeof value === 'string' ? `"${value}"` : value}`)
40047
- .join('\n');
40048
- const sections = [];
40049
- sections.push('---');
40050
- sections.push(yamlLines);
40051
- sections.push('---');
40052
- sections.push('');
40053
- sections.push(`# ${spec.title || 'Untitled Intent'}`);
40054
- if (spec.objective) {
40055
- sections.push('');
40056
- sections.push('## Objective');
40057
- sections.push(spec.objective);
40058
- }
40059
- // Heading text is the round-trip key (readIntentFile keys sections by exact
40060
- // heading) — keep it plain, exactly like Objective above.
40061
- if (spec.currentState?.trim()) {
40062
- sections.push('');
40063
- sections.push('## Current State');
40064
- sections.push(spec.currentState.trim());
40065
- }
40066
- // Sits next to Current State on purpose: one is what the author says is true today, the other is
40067
- // what the repo says. Same heading the cloud agent prompt emits, so a handoff reads identically
40068
- // in either mode.
40069
- const icBody = implementationContextBody(spec);
40070
- if (icBody.length) {
40071
- sections.push('');
40072
- sections.push('## Implementation Context');
40073
- sections.push(...icBody);
40074
- }
40075
- sections.push(...decisionLines(spec.decisions, '## Decisions & Ruled-Out Alternatives'));
40076
- if (spec.outcomes?.length) {
40077
- sections.push('');
40078
- sections.push('## Outcomes');
40079
- for (const outcome of spec.outcomes) {
40080
- sections.push(`- [ ] ${getPriorityLabel(outcome)}${getOutcomeText(outcome)}`);
40081
- }
40082
- }
40083
- if (spec.scope?.inScope?.length || spec.scope?.outOfScope?.length) {
40084
- sections.push('');
40085
- sections.push('## Scope');
40086
- if (spec.scope.inScope?.length) {
40087
- sections.push('**In scope:**');
40088
- for (const s of spec.scope.inScope)
40089
- sections.push(`- ${s}`);
40090
- }
40091
- if (spec.scope.outOfScope?.length) {
40092
- sections.push('**Out of scope:**');
40093
- for (const s of spec.scope.outOfScope)
40094
- sections.push(`- ${s}`);
40095
- }
40096
- }
40097
- if (spec.constraints?.length) {
40098
- sections.push('');
40099
- sections.push('## Constraints');
40100
- for (const constraint of spec.constraints) {
40101
- sections.push(`- ${constraint}`);
40102
- }
40103
- }
40104
- if (spec.edgeCases?.length) {
40105
- sections.push('');
40106
- sections.push('## Edge Cases');
40107
- for (const ec of spec.edgeCases) {
40108
- sections.push(`- **${ec.scenario}**: ${ec.expectedBehavior}`);
40109
- }
40110
- }
40111
- if (spec.healthMetrics?.length) {
40112
- sections.push('');
40113
- sections.push('## Health Metrics');
40114
- for (const metric of spec.healthMetrics) {
40115
- sections.push(`- ${metric}`);
40116
- }
40117
- }
40118
- const intentMdChecks = groupVerificationChecks(spec.verification);
40119
- if (intentMdChecks.length) {
40120
- sections.push('');
40121
- sections.push('## Verification');
40122
- sections.push('_A feedback loop, not just a test list._');
40123
- for (const g of intentMdChecks) {
40124
- sections.push(`**${g.label}**:`);
40125
- for (const c of g.checks)
40126
- sections.push(`- [ ] ${renderCheckLine(c)}`);
40127
- }
40128
- }
40129
- // `## Confirmations` is emitted LAST so it never sits between the fields a reader is
40130
- // comparing, and so appending one cannot shift any other section's parse. Derived fields
40131
- // (assurance, source) are NOT written: anything read from a file is local-unverified.
40132
- const rawConfirmations = spec.confirmations;
40133
- const confirmations = Array.isArray(rawConfirmations)
40134
- ? rawConfirmations
40135
- : [];
40136
- // Filter BEFORE emitting the heading: a spec whose only confirmation targets an
40137
- // unwaivable dimension must not leave an empty `## Confirmations` section behind.
40138
- const emittable = confirmations.filter((c) => {
40139
- const dim = String(c.dimension ?? '').toLowerCase();
40140
- const kind = String(c.kind ?? '').toLowerCase();
40141
- const by = String(c.by ?? '').toLowerCase();
40142
- return ['objective', 'outcomes'].includes(dim)
40143
- && ['confirmed', 'waived'].includes(kind)
40144
- && ['agent', 'human'].includes(by);
40145
- });
40146
- if (emittable.length) {
40147
- sections.push('');
40148
- sections.push('## Confirmations');
40149
- for (const c of emittable) {
40150
- const dim = String(c.dimension ?? '').toLowerCase();
40151
- const kind = String(c.kind ?? '').toLowerCase();
40152
- const by = String(c.by ?? '').toLowerCase();
40153
- sections.push('');
40154
- sections.push(`**${dim}** — ${kind} by ${by}`);
40155
- for (const key of ['actor', 'problem', 'outcome', 'observable', 'reason', 'anchor', 'at']) {
40156
- const v = c[key];
40157
- if (typeof v !== 'string' || !v.trim())
40158
- continue;
40159
- // Values are single-line by contract; the writer flattens rather than escaping.
40160
- sections.push(`- ${key}: ${v.replace(/\s+/g, ' ').trim()}`);
40161
- }
40162
- }
40163
- }
40164
- sections.push('');
40165
- return sections.join('\n');
40400
+ origin: opts.origin,
40401
+ authorization: opts.authorization,
40402
+ authorizationNote: opts.authorizationNote,
40403
+ }) + '\n';
40166
40404
  }
40167
40405
  // ============================================================
40168
40406
  // Format: .cursorrules
@@ -40576,30 +40814,10 @@ function spliceConfirmationsSection(original, section) {
40576
40814
  const after = lines.slice(end).join('\n').replace(/^\s*/, '');
40577
40815
  return `${before}\n\n${section.trim()}\n${after ? `\n${after}` : ''}`;
40578
40816
  }
40579
- /** Render confirmation records as the `## Confirmations` section body. */
40817
+ /** Render confirmation records as the `## Confirmations` section body. Thin wrapper over the
40818
+ * shared serializer so the splice path and the full-file write cannot format records differently. */
40580
40819
  function renderConfirmationsSection(records) {
40581
- const emittable = records.filter((c) => {
40582
- const dim = String(c.dimension ?? '').toLowerCase();
40583
- const kind = String(c.kind ?? '').toLowerCase();
40584
- const by = String(c.by ?? '').toLowerCase();
40585
- return ['objective', 'outcomes'].includes(dim)
40586
- && ['confirmed', 'waived'].includes(kind)
40587
- && ['agent', 'human'].includes(by);
40588
- });
40589
- if (!emittable.length)
40590
- return '';
40591
- const out = ['## Confirmations'];
40592
- for (const c of emittable) {
40593
- out.push('');
40594
- out.push(`**${String(c.dimension).toLowerCase()}** — ${String(c.kind).toLowerCase()} by ${String(c.by).toLowerCase()}`);
40595
- for (const key of ['actor', 'problem', 'outcome', 'observable', 'reason', 'anchor', 'at']) {
40596
- const v = c[key];
40597
- if (typeof v !== 'string' || !v.trim())
40598
- continue;
40599
- out.push(`- ${key}: ${v.replace(/\s+/g, ' ').trim()}`);
40600
- }
40601
- }
40602
- return out.join('\n');
40820
+ return (0, serializeIntentMd_1.renderConfirmationsBody)(records);
40603
40821
  }
40604
40822
  function writeConfirmationRecord(opts) {
40605
40823
  let raw = opts.read();
@@ -40734,6 +40952,9 @@ function readIntentMeta(filePath) {
40734
40952
  status: typeof data.status === 'string' && data.status.trim() ? data.status.trim() : 'draft',
40735
40953
  created: typeof data.created === 'string' ? data.created : undefined,
40736
40954
  specVersion: typeof data.specVersion === 'string' && data.specVersion.trim() ? data.specVersion.trim() : undefined,
40955
+ origin: typeof data.origin === 'string' && data.origin.trim() ? data.origin.trim() : undefined,
40956
+ authorization: typeof data.authorization === 'string' && data.authorization.trim() ? data.authorization.trim() : undefined,
40957
+ authorizationNote: typeof data.authorizationNote === 'string' && data.authorizationNote.trim() ? data.authorizationNote.trim() : undefined,
40737
40958
  };
40738
40959
  }
40739
40960
  catch {
@@ -41836,6 +42057,9 @@ async function pushSpec(input) {
41836
42057
  let canonicalId;
41837
42058
  let specVersion;
41838
42059
  let sourceUrl;
42060
+ let origin;
42061
+ let authorization;
42062
+ let authorizationNote;
41839
42063
  try {
41840
42064
  // On create the local id travels with the spec. Promotion must not change identity: a
41841
42065
  // keyless author may already have stamped `intent/<uuid>` on a branch, and a new id would
@@ -41863,6 +42087,9 @@ async function pushSpec(input) {
41863
42087
  }
41864
42088
  canonicalId = saved.id || id;
41865
42089
  specVersion = saved.specVersion;
42090
+ origin = saved.origin;
42091
+ authorization = saved.authorization;
42092
+ authorizationNote = saved.authorizationNote;
41866
42093
  sourceUrl = `https://www.pathmode.io/intent/${canonicalId}`;
41867
42094
  }
41868
42095
  catch (e) {
@@ -41876,7 +42103,7 @@ async function pushSpec(input) {
41876
42103
  ...(products ? { products } : {}),
41877
42104
  };
41878
42105
  }
41879
- input.onIdentitySettled({ canonicalId, specVersion, sourceUrl });
42106
+ input.onIdentitySettled({ canonicalId, specVersion, sourceUrl, origin, authorization, authorizationNote });
41880
42107
  const didNotTravel = [];
41881
42108
  for (const d of input.decisions ?? []) {
41882
42109
  try {
@@ -71463,7 +71690,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$schema":"http://json-schema.org/dra
71463
71690
  /***/ ((module) => {
71464
71691
 
71465
71692
  "use strict";
71466
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.18.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"}}');
71693
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.19.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"}}');
71467
71694
 
71468
71695
  /***/ })
71469
71696
 
@@ -72932,6 +73159,24 @@ function startMcpServer() {
72932
73159
  readiness: (0, readiness_1.formatReadinessFrontmatter)(verdict),
72933
73160
  specVersion: opts.specVersion,
72934
73161
  source: opts.sourceUrl,
73162
+ // The gate is carried, never inferred. Two sources, and the order matters:
73163
+ //
73164
+ // - CLOUD: whatever identity just settled to. A v1 create is stamped
73165
+ // origin='agent' + pending by the API, so a create that took the file's
73166
+ // value (there is none) wrote an UNGATED file for a spec the workspace
73167
+ // considers unauthorized. The server is the authority in this mode; it
73168
+ // also means a human authorizing in the workspace clears the local banner
73169
+ // on the next save instead of leaving a stale one.
73170
+ // - LOCAL: the file being replaced, and only on an update. Without it, an
73171
+ // agent editing a pending proposal cleared its own gate.
73172
+ //
73173
+ // The note follows the same rule, and the distinction that makes it work is
73174
+ // `undefined` (the server did not speak) versus `null` (the server says there
73175
+ // is none now). `??` would collapse the two and keep showing a rejection note
73176
+ // after the reviewer authorized the spec, or after they rewrote the note.
73177
+ origin: opts.origin !== undefined ? opts.origin : (decision.action === 'update' ? existing?.origin : undefined),
73178
+ authorization: opts.authorization !== undefined ? opts.authorization : (decision.action === 'update' ? existing?.authorization : undefined),
73179
+ authorizationNote: opts.authorizationNote !== undefined ? opts.authorizationNote : existing?.authorizationNote,
72935
73180
  });
72936
73181
  // Carry existing confirmations across the rewrite. intent_save builds its content from
72937
73182
  // the incoming spec, which by design has no `confirmations` field (that absence is what
@@ -0,0 +1,164 @@
1
+ /**
2
+ * serializeIntentMd — the one implementation of the intent.md file format.
3
+ *
4
+ * Two writers used to exist: `lib/agentPromptGenerator.ts` (cloud exports, browser downloads) and
5
+ * `packages/mcp-server/src/intent-compiler.ts` (every local, keyless write). They diverged in BOTH
6
+ * directions, and the divergence cost more than tidiness:
7
+ *
8
+ * - the cloud writer emitted no `## Confirmations`, so a human's authenticated confirmation died
9
+ * at the boundary and never reached the repo;
10
+ * - the local writer emitted no authorization gate, so an agent proposal still pending human
11
+ * judgment lost its DO-NOT-IMPLEMENT banner on the next local save.
12
+ *
13
+ * Both are the same failure: judgment recorded in one place not travelling to the other. This
14
+ * module emits the union, and `serializer-parity.test.ts` holds the two callers to it.
15
+ *
16
+ * ZERO IMPORTS, deliberately. The local writer is bundled by ncc into a published npm package that
17
+ * must run keyless and offline, and the cloud writer is reached from `'use client'` components — so
18
+ * a single node builtin here (`crypto`, say) would break the browser bundle. Callers compute their
19
+ * own environment-specific values (id minting, readiness verdicts, evidence resolution) and hand
20
+ * the results in as plain data.
21
+ */
22
+ /** Evidence refs are PRE-RESOLVED by the caller. Resolution needs an evidence store; formatting
23
+ * does not, and only formatting belongs here. */
24
+ export interface SerializableOutcome {
25
+ id?: string;
26
+ text: string;
27
+ /** Formatted inline evidence references, e.g. `complaint: "checkout times out"`. */
28
+ backedBy?: string[];
29
+ }
30
+ export interface SerializableConstraint {
31
+ text: string;
32
+ backedBy?: string[];
33
+ }
34
+ export interface SerializableEdgeCase {
35
+ scenario: string;
36
+ expectedBehavior: string;
37
+ backedBy?: string[];
38
+ }
39
+ export interface SerializableDecision {
40
+ choice?: string;
41
+ ruledOut?: string;
42
+ reason?: string;
43
+ /** What would justify reopening a settled decision. Cloud-side only today. */
44
+ reopenTrigger?: string;
45
+ }
46
+ export interface SerializableVerificationCheck {
47
+ kind?: string;
48
+ description?: string;
49
+ status?: string;
50
+ verifies?: string;
51
+ }
52
+ export interface SerializableEvidence {
53
+ type?: string;
54
+ content?: string;
55
+ source?: string;
56
+ severity?: string;
57
+ }
58
+ /** Product/space framing. Cloud-only today: keyless mode has no product record to draw it from. */
59
+ export interface SerializableSpaceContext {
60
+ name?: string;
61
+ productVision?: string;
62
+ northStar?: string;
63
+ targetAudience?: string;
64
+ constraints?: string[];
65
+ principles?: string[];
66
+ }
67
+ export interface SerializableConfirmation {
68
+ dimension?: string;
69
+ kind?: string;
70
+ by?: string;
71
+ actor?: string;
72
+ problem?: string;
73
+ outcome?: string;
74
+ observable?: string;
75
+ reason?: string;
76
+ anchor?: string;
77
+ at?: string;
78
+ }
79
+ export interface SerializableIntent {
80
+ id?: string;
81
+ title?: string;
82
+ objective?: string;
83
+ currentState?: string;
84
+ outcomes?: (string | SerializableOutcome)[];
85
+ decisions?: SerializableDecision[];
86
+ constraints?: (string | SerializableConstraint)[];
87
+ edgeCases?: SerializableEdgeCase[];
88
+ healthMetrics?: string[];
89
+ scope?: {
90
+ inScope?: string[];
91
+ outOfScope?: string[];
92
+ } | null;
93
+ verification?: {
94
+ checks?: SerializableVerificationCheck[];
95
+ manualChecks?: string[];
96
+ unitTests?: string[];
97
+ e2eTests?: string[];
98
+ } | null;
99
+ /** Agent-gathered repo context, as prose. Wins over the structured object when both exist. */
100
+ implementationContextText?: string;
101
+ implementationContext?: {
102
+ relevantAreas?: {
103
+ path?: string;
104
+ reason?: string;
105
+ }[];
106
+ currentBehavior?: string;
107
+ risks?: string[];
108
+ verificationSuggestions?: string[];
109
+ } | null;
110
+ /** Readiness judgments recorded against this spec's text. Emitted last; see below. */
111
+ confirmations?: SerializableConfirmation[];
112
+ }
113
+ export interface SerializeIntentMdOptions {
114
+ version?: number;
115
+ status?: string;
116
+ /** ISO timestamps. Emitted only when the caller supplies them. */
117
+ created?: string;
118
+ updated?: string;
119
+ /** Preflight verdict line ("passed 6/6" / "failed 4/6 — blocking: …"), recomputed at write. */
120
+ readiness?: string;
121
+ /** Canonical record URL. Omitted when this file is the only copy. */
122
+ source?: string;
123
+ /** The server's opaque content token, carried verbatim. See IntentMdOptions in intent-compiler. */
124
+ specVersion?: string;
125
+ /** How this spec came to exist. Only 'agent' changes what is rendered (the gate). */
126
+ origin?: string | null;
127
+ /** Human verdict on an agent proposal: 'authorized' | 'rejected' | undefined (pending). */
128
+ authorization?: string | null;
129
+ /** The reviewer's note. `null` clears it: the key is simply not emitted, which is what lets an
130
+ * authorized spec stop carrying the rejection note it used to have. */
131
+ authorizationNote?: string | null;
132
+ severity?: string;
133
+ space?: SerializableSpaceContext | null;
134
+ /** Rendered as `## Supporting Evidence` and counted into the `evidence:` frontmatter key. */
135
+ evidence?: SerializableEvidence[];
136
+ }
137
+ /** Read verification uniformly as a check collection: canonical `checks[]` plus the legacy
138
+ * {manual,unit,e2e} buckets, which are adapted rather than dropped. */
139
+ export declare function toSerializableChecks(v: SerializableIntent['verification']): SerializableVerificationCheck[];
140
+ /**
141
+ * The DO-NOT-IMPLEMENT banner for an agent proposal a human has not authorized.
142
+ *
143
+ * Lives here, not in either caller, because the local writer used to omit it entirely: a pending
144
+ * proposal pulled into a repo and re-saved came back without its gate, which is the one thing in
145
+ * the file an agent must not be able to lose.
146
+ *
147
+ * Trailing blank line included, so callers can prepend unconditionally.
148
+ */
149
+ export declare function renderAuthorizationGateText(opts: {
150
+ origin?: string | null;
151
+ authorization?: string | null;
152
+ authorizationNote?: string | null;
153
+ }): string;
154
+ /**
155
+ * Render confirmation records as the `## Confirmations` section body.
156
+ *
157
+ * Derived fields (`assurance`, `source`) are NOT written: anything read back out of a file is
158
+ * local-unverified by definition, so persisting a trust level would let a record vouch for itself.
159
+ * Records outside the dimensions the readiness gate can resolve are dropped rather than emitted,
160
+ * so an unwaivable dimension never leaves an empty section behind.
161
+ */
162
+ export declare function renderConfirmationsBody(records: SerializableConfirmation[] | undefined): string;
163
+ export declare function serializeIntentMd(spec: SerializableIntent, opts?: SerializeIntentMdOptions): string;
164
+ //# sourceMappingURL=serializeIntentMd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeIntentMd.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/intentspec-format/serializeIntentMd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH;kDACkD;AAClD,MAAM,WAAW,mBAAmB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mGAAmG;AACnG,MAAM,WAAW,wBAAwB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAClD,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACnC,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,GAAG,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,6BAA6B,EAAE,CAAC;QACzC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,IAAI,CAAC;IACT,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,qBAAqB,CAAC,EAAE;QACpB,aAAa,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACrD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;KACtC,GAAG,IAAI,CAAC;IACT,sFAAsF;IACtF,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;4EACwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACxC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAyCD;wEACwE;AACxE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,6BAA6B,EAAE,CAsB3G;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,MAAM,CAOT;AAID;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,SAAS,GAAG,MAAM,CAqB/F;AAaD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,GAAE,wBAA6B,GAAG,MAAM,CAqKvG"}
@@ -47,6 +47,12 @@ export interface ApiIntent {
47
47
  verification: Record<string, any>;
48
48
  externalLinks: any[];
49
49
  evidenceAnchors: Record<string, string[]>;
50
+ /** How the spec came to exist. A v1-API create is stamped 'agent' server-side. */
51
+ origin?: string | null;
52
+ /** Human verdict on an agent proposal. 'pending' until someone authorizes or rejects. */
53
+ authorization?: 'pending' | 'authorized' | 'rejected' | null;
54
+ /** The reviewer's note. Null means there is none NOW, which is not the same as unknown. */
55
+ authorizationNote?: string | null;
50
56
  /** Readiness confirmations and waivers. Present since mcp-server 1.16.0 / the confirmations column. */
51
57
  confirmations?: Record<string, unknown>[];
52
58
  decisions?: IntentDecision[];
@@ -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;AAQH,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;CAC1C;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,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,CAAA;KAAE,CAAC,EAAE,CAAC;IAC5D,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,CAAA;KAAE,CAAC,EAAE,CAAC;IAC5D,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,CAsBlD;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,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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"}
@@ -104,7 +104,24 @@ export interface IntentMdOptions {
104
104
  * `expectedVersion` on the next push, which is what makes a concurrent edit a 409 instead of a
105
105
  * silent overwrite. Absent means this file has never been in the cloud. */
106
106
  specVersion?: string;
107
+ /** How the spec came to exist. Only 'agent' renders a gate. Carried from frontmatter on a
108
+ * re-save so a local write cannot silently strip a pending proposal's DO-NOT-IMPLEMENT
109
+ * banner — the one thing in the file an agent must not be able to lose. */
110
+ origin?: string | null;
111
+ /** Human verdict on an agent proposal: 'authorized' | 'rejected' | undefined (pending). */
112
+ authorization?: string | null;
113
+ /** `null` is meaningful: it clears a note the file currently holds, which is what stops an
114
+ * authorized spec from still displaying the rejection note it was given earlier. */
115
+ authorizationNote?: string | null;
107
116
  }
117
+ /**
118
+ * Generate intent.md content with YAML frontmatter.
119
+ * Adapted from lib/agentPromptGenerator.ts generateIntentMd().
120
+ *
121
+ * `spec.id`, `opts.version`, and `opts.status` are preserved rather than reset — an intent that
122
+ * is saved twice must keep its identity and its lifecycle state. Only a genuinely new intent
123
+ * (no id) gets a minted id, version 1, and status 'draft'.
124
+ */
108
125
  export declare function formatIntentMd(spec: IntentFields, opts?: IntentMdOptions): string;
109
126
  /**
110
127
  * Generate .cursorrules content for a single intent.
@@ -152,7 +169,8 @@ export declare function formatOutcomeRubric(spec: IntentFields, opts?: OutcomeRu
152
169
  * appends one at the end, and touches nothing else in the file.
153
170
  */
154
171
  export declare function spliceConfirmationsSection(original: string, section: string): string;
155
- /** Render confirmation records as the `## Confirmations` section body. */
172
+ /** Render confirmation records as the `## Confirmations` section body. Thin wrapper over the
173
+ * shared serializer so the splice path and the full-file write cannot format records differently. */
156
174
  export declare function renderConfirmationsSection(records: Record<string, unknown>[]): string;
157
175
  /**
158
176
  * Write one confirmation record into a file's `## Confirmations` section, under a
@@ -1 +1 @@
1
- {"version":3,"file":"intent-compiler.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intent-compiler.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/intent-compiler.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,14 @@ export interface LocalIntentMeta {
90
90
  /** The server's token as of the last sync. Present only on cloud-backed files; its presence is
91
91
  * what tells a save whether this spec already exists in a workspace. */
92
92
  specVersion?: string;
93
+ /** Provenance and human verdict, carried so a local re-save cannot strip the DO-NOT-IMPLEMENT
94
+ * gate off a proposal no human has authorized. Read here rather than from the body because
95
+ * the banner is prose an agent could edit; the frontmatter key is the machine-readable one. */
96
+ origin?: string;
97
+ authorization?: string;
98
+ /** The reviewer's requested correction. Only ever known from the file: the v1 API does not
99
+ * expose it (mapIntentRowToApiIntent omits it), so the file is its only carrier. */
100
+ authorizationNote?: string;
93
101
  }
94
102
  /**
95
103
  * Read all intent.md files from the current directory and subdirectories (1 level deep).
@@ -1 +1 @@
1
- {"version":3,"file":"local-reader.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/local-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-reader.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/local-reader.ts"],"names":[],"mappings":"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"}
@@ -22,20 +22,24 @@
22
22
  * A failed enrichment leg is recoverable by saving again: its content is already in the local file,
23
23
  * and the retry is an update.
24
24
  */
25
+ /** What identity settles to. `origin`/`authorization` ride along because the file's gate has to
26
+ * come from the server rather than be inferred locally: a v1 create is stamped agent-authored and
27
+ * pending by the API, and a client that guessed would drift the day that policy changed. */
28
+ export interface SettledIdentity {
29
+ id: string;
30
+ specVersion?: string;
31
+ origin?: string | null;
32
+ authorization?: string | null;
33
+ /** The reviewer's note. `null` is meaningful and distinct from absent: it means the workspace
34
+ * currently holds no note, so a mirror must CLEAR the one it has. Absent means the server did
35
+ * not speak (local mode, or an older API), and the file's own value stands. */
36
+ authorizationNote?: string | null;
37
+ }
25
38
  export interface PushClient {
26
- createIntent(input: any): Promise<{
27
- id: string;
28
- specVersion?: string;
29
- }>;
39
+ createIntent(input: any): Promise<SettledIdentity>;
30
40
  /** Used to recover when a create commits but its response is lost. */
31
- getIntent?(id: string): Promise<{
32
- id: string;
33
- specVersion?: string;
34
- }>;
35
- updateIntent(id: string, input: any): Promise<{
36
- id: string;
37
- specVersion?: string;
38
- }>;
41
+ getIntent?(id: string): Promise<SettledIdentity>;
42
+ updateIntent(id: string, input: any): Promise<SettledIdentity>;
39
43
  recordDecision(intentId: string, input: any): Promise<unknown>;
40
44
  saveImplementationContext(intentId: string, input: any): Promise<unknown>;
41
45
  }
@@ -57,6 +61,9 @@ export interface PushSpecInput {
57
61
  canonicalId: string;
58
62
  specVersion?: string;
59
63
  sourceUrl: string;
64
+ origin?: string | null;
65
+ authorization?: string | null;
66
+ authorizationNote?: string | null;
60
67
  }) => void;
61
68
  }
62
69
  export type PushSpecResult = {
@@ -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,MAAM,WAAW,UAAU;IACvB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,sEAAsE;IACtE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,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,CAAA;KAAE,KAAK,IAAI,CAAC;CACzG;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,CAsE5E"}
1
+ {"version":3,"file":"push-spec.d.ts","sourceRoot":"","sources":["file:///Users/jannelammi/code/Pathmode/packages/mcp-server/src/push-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;6FAE6F;AAC7F,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;oFAEgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,sEAAsE;IACtE,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sFAAsF;IACtF,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACnM;AAED,MAAM,MAAM,cAAc,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAElH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA4E5E"}
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.18.0",
5
+ "version": "1.19.0",
6
6
  "description": "Deterministic preflight for the intent you hand to a coding agent: six calibrated gates, the exact blockers named, no model call, no key needed.",
7
7
  "long_description": "Pathmode MCP Server runs a deterministic preflight before your coding agent builds: check_intent_readiness scores an intent spec against six calibrated gates (title, objective, outcomes, constraints, edge cases, verification) and names the exact blockers, with no model call and no account. Keyless local mode works out of the box; specs live in intent.md in your repo, plain markdown you own, and skills for drafting, pressure-testing, and handing off intent ride along. Connect a Pathmode workspace with an API key to sync intent and evidence across a team, analyze dependency graphs, and verify pull requests against the outcomes you agreed to.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathmode/mcp-server",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },