@clien-ai/mcp 0.12.3 → 0.13.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/CHANGELOG.md CHANGED
@@ -13,6 +13,33 @@ upgrade here does not imply the deployed app speaks the same shape, and the
13
13
  client strips unknown fields by construction — so a field described below only
14
14
  reaches you once both sides have shipped.
15
15
 
16
+ ## 0.13.0
17
+
18
+ **Adds four project-context tools, so an agent can read and extend the material a
19
+ project is built on rather than only its research output.** Until now the server
20
+ could read what a run produced; it could not see the documents the user attached,
21
+ read one, or add another.
22
+
23
+ ### Added
24
+
25
+ - **`update_project`** — rename a project or change its description.
26
+ - **`list_project_files`** — the files attached to a project, as metadata only. No
27
+ body text and no storage path appear in a listing.
28
+ - **`get_project_file_text`** — one file's extracted text, in server-bounded pages
29
+ behind an opaque cursor that carries no authority. ⚠️ **A page is not the
30
+ document.** The response carries `done` and `nextCursor`, and the rendered text
31
+ says so in words when a read is incomplete: treating page one as the whole file
32
+ is the mistake this tool is shaped to prevent. Every returned page is recorded in
33
+ a body-free audit row before the text is returned.
34
+ - **`add_project_text`** — attach pasted text to a project. Takes a required
35
+ `idempotency_key` on this transport: a retry after a lost response replays the
36
+ file that was already created rather than minting a duplicate, and the same key
37
+ sent with different content is refused with `IDEMPOTENCY_CONFLICT` rather than
38
+ silently overwriting or duplicating.
39
+
40
+ The app-side routes these wrap are already deployed. As always, the client strips
41
+ unknown fields by construction, so a field reaches you only once both sides ship.
42
+
16
43
  ## 0.12.3
17
44
 
18
45
  **Fixes a 400 that broke every prompt in a session with this server loaded, not
package/README.md CHANGED
@@ -242,7 +242,7 @@ name — the aliases exist for callers written before the rename.
242
242
 
243
243
  <!-- BEGIN:generated-mcp-capabilities -->
244
244
 
245
- ### Complete capability inventory (26 tools)
245
+ ### Complete capability inventory (30 tools)
246
246
 
247
247
  | Tool | Summary | Advertised inputs |
248
248
  |------|---------|-------------------|
@@ -254,6 +254,10 @@ name — the aliases exist for callers written before the rename.
254
254
  | `list_projects` | List the authenticated account's projects. | `limit` (optional), `offset` (optional) |
255
255
  | `create_project` | Create a project for research, personas, and reports. | `name` (required), `description` (optional) |
256
256
  | `get_project` | Read one project and its related research records. | `project_id` (required), `include` (optional), `limit` (optional) |
257
+ | `update_project` | Update a project name and/or description. | `project_id` (required), `name` (optional), `description` (optional) |
258
+ | `list_project_files` | List files attached to a project. | `project_id` (required) |
259
+ | `get_project_file_text` | Read the extracted text of a project file, with pagination. | `file_id` (required), `project_id` (required), `cursor` (optional) |
260
+ | `add_project_text` | Add pasted text as a file to a project. | `project_id` (required), `title` (required), `content` (required), `idempotency_key` (required) |
257
261
  | `create_persona` | Create a persona from supplied fields without AI generation. | `project_id` (optional), `name` (required), `role` (required), `company` (optional), `description` (optional), `company_size` (optional), `industry` (optional), `location` (optional), `ephemeral` (optional), `projectId` (optional), `companySize` (optional) |
258
262
  | `generate_persona` | Generate a research-grounded persona from a short brief. | `project_id` (optional), `name` (required), `role` (required), `company` (optional), `industry` (optional), `company_size` (optional), `additional_context` (optional), `ephemeral` (optional), `ground_in_evidence` (optional), `projectId` (optional), `companySize` (optional), `additionalContext` (optional), `groundInEvidence` (optional) |
259
263
  | `enrich_persona` | Fill blank or selected fields on an existing persona with AI. | `persona_id` (optional), `refresh` (optional), `additional_context` (optional), `personaId` (optional), `additionalContext` (optional) |
@@ -11,10 +11,12 @@ export const VERDICT_STATUSES = ['validated', 'invalidated', 'inconclusive'];
11
11
  export const CONFIDENCE_LEVELS = ['low', 'medium', 'high'];
12
12
  export const EVIDENCE_SUFFICIENCY_LEVELS = ['none', 'thin', 'moderate', 'substantial'];
13
13
  export const ROBUSTNESS_OUTCOMES = ['held', 'flipped', 'not_retested'];
14
- export const CONFIDENCE_BASES = ['evidence', 'recomputed_after_flip', 'withheld_no_evidence'];
14
+ export const CONFIDENCE_BASES = ['evidence', 'recomputed_after_flip', 'recomputed_after_clause_gap', 'withheld_no_evidence'];
15
+ export const CLAUSE_COVERAGE_OUTCOMES = ['complete', 'uncovered', 'contradicted', 'invalid'];
15
16
  export const HYPOTHESIS_PRIORITIES = ['high', 'medium', 'low'];
16
17
  /** The semantics contract version this MCP build knows how to read. */
17
- export const HYPOTHESIS_SEMANTICS_VERSION = 1;
18
+ export const LEGACY_HYPOTHESIS_SEMANTICS_VERSION = 1;
19
+ export const HYPOTHESIS_SEMANTICS_VERSION = 2;
18
20
  const VERDICT_STRENGTH = {
19
21
  validated: 2,
20
22
  inconclusive: 1,
@@ -30,6 +32,254 @@ function asMember(value, members) {
30
32
  ? value
31
33
  : null;
32
34
  }
35
+ const BOILERPLATE = new Set([
36
+ 'a', 'an', 'and', 'are', 'as', 'at', 'be', 'but', 'by', 'can', 'could', 'for', 'from',
37
+ 'if', 'in', 'is', 'of', 'on', 'or', 'should', 'that', 'the', 'this', 'through', 'to',
38
+ 'was', 'were', 'when', 'will', 'with', 'without', 'would',
39
+ ]);
40
+ const ECONOMIC_PATTERNS = {
41
+ acquisition: /\b(?:(?:(?:customer|user|client) )?acquisition costs?|cac|costs? per (?:acquisition|(?:(?:customers?|users?|clients?) acquired|acquired (?:customers?|users?|clients?)))|cpa|payback(?: period)?|costs? to acquire (?:(?:an?|the|each|every) )?(?:customers?|users?|clients?)|acquir(?:e|es|ed|ing) (?:(?:an?|the|each|every) )?(?:customers?|users?|clients?)(?!\s+feedback\b)(?: for)?)\b/i,
42
+ conversion: /\b(?:conversion|convert|converted)\b/i,
43
+ market_size: /\b(?:market size|tam|sam|som|unit volume|sales volume)\b/i,
44
+ pricing: /(?:\b(?:price|pricing|pay|paid|afford|affordable|willingness to pay)\b|[$£€¥])/i,
45
+ revenue: /\b(?:revenue|arpu|average revenue per user|ltv|lifetime value)\b/i,
46
+ profitability: /\b(?:break[ -]?even|breakeven|margin|profit|profitable|unit economics|roi|return on investment)\b/i,
47
+ retention: /\b(?:churn|retention|renewal)\b/i,
48
+ frequency: /\b(?:daily|weekly|monthly|quarterly|annually|every (?:day|week|month|quarter|year))\b/i,
49
+ rate: /(?:\b(?:percent|percentage)\b|\d+\s*%)/i,
50
+ };
51
+ const CONDITION_PATTERN = /\b(?:if|when|whenever|provided that|as long as|unless|while)\b/i;
52
+ const REACHABILITY_PATTERN = /\b(?:reach|reached|reachable|access|accessible|target|targetable|addressable|discoverable|recruit|recruitable)\b/i;
53
+ const NEGATION_PATTERN = /\b(?:no|not|never|false|fails?|failed|without|cannot|can't|doesn't|isn't|aren't|won't|disproves?|disproven|unsupported|contradicts?|refutes?|refuted)\b/i;
54
+ const MEASURED_POPULATION_PATTERN = /(?:\b(?:\d[\d,]*(?:\.\d+)?(?:k|m|bn|million|billion)?|(?:one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|dozens?|scores?|hundreds?|thousands?|millions?|billions?)(?:\s+(?:of|hundred|thousand|million|billion))?)\s+(?:[\p{L}-]+\s+){0,3}(?:people|users|customers|teams|designers|freelancers|businesses|companies|studios|agencies|households|professionals|workers|organisations|organizations)\b|\b(?:prevalence|adoption rate)\b)/iu;
55
+ const EVIDENCE_SOURCES = ['synthetic_interview', 'web_research', 'forum_research'];
56
+ const HYPOTHESIS_CATEGORIES = ['problem', 'solution', 'market', 'willingness_to_pay'];
57
+ const EXTERNAL_ECONOMIC_PATTERN = /\b(?:market (?:size|growth)|cagr|demand|prevalence|adoption(?: rate)?|benchmark|customer acquisition|user acquisition|cac|cpa|conversion(?: rate)?|unit economics|revenue|arpu|ltv|lifetime value|retention|churn|profit(?:ability)?|margin)\b/i;
58
+ function classifyEvidenceClaimKind(text, category) {
59
+ if (EXTERNAL_ECONOMIC_PATTERN.test(text) || MEASURED_POPULATION_PATTERN.test(text))
60
+ return 'market_fact';
61
+ if (category === 'market' || category === 'willingness_to_pay')
62
+ return 'market_fact';
63
+ return category === 'problem' ? 'lived_problem' : 'vendor_capability';
64
+ }
65
+ function normalizedContains(container, span) {
66
+ if (typeof container !== 'string' || typeof span !== 'string' || !span.trim())
67
+ return false;
68
+ const normalize = (value) => value.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
69
+ const needle = normalize(span);
70
+ return needle.length > 0 && normalize(container).includes(needle);
71
+ }
72
+ export function resolveHypothesisReceipt(rawEvidence, rawReport) {
73
+ const evidence = asRecord(rawEvidence);
74
+ const receipt = asRecord(evidence?.receipt);
75
+ const report = asRecord(rawReport);
76
+ const match = typeof receipt?.sourceId === 'string' ? /^RRCP-s(0|[1-9]\d*)$/.exec(receipt.sourceId) : null;
77
+ const sources = report?.reportEvidence;
78
+ const source = match && Array.isArray(sources) ? asRecord(sources[Number(match[1])]) : null;
79
+ return source?.section === 'hypothesis' && normalizedContains(source.quote, receipt?.quoteSpan) ? source : null;
80
+ }
81
+ function hostKey(value) {
82
+ if (typeof value !== 'string')
83
+ return null;
84
+ try {
85
+ return new URL(value).hostname.toLocaleLowerCase().replace(/^www\./, '') || null;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ function sameNamedVendor(clauseText, source, rawReport) {
92
+ const report = asRecord(rawReport);
93
+ const web = asRecord(report?.webResearch);
94
+ const competitors = Array.isArray(web?.competitors) ? web.competitors : [];
95
+ const normalizedClause = clauseText.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
96
+ const namedHosts = new Set();
97
+ for (const rawCompetitor of competitors) {
98
+ const competitor = asRecord(rawCompetitor);
99
+ const name = typeof competitor?.name === 'string'
100
+ ? competitor.name.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim()
101
+ : '';
102
+ const host = hostKey(competitor?.url);
103
+ if (name && host && ` ${normalizedClause} `.includes(` ${name} `))
104
+ namedHosts.add(host);
105
+ }
106
+ const sourceHost = hostKey(source.url);
107
+ return sourceHost !== null && namedHosts.size === 1 && [...namedHosts].some(host => sourceHost === host || sourceHost.endsWith(`.${host}`));
108
+ }
109
+ function sourceSuitsClaim(kind, source, clauseText, rawReport) {
110
+ const role = source.contentType ?? 'unknown';
111
+ const relationship = source.publisherSubjectRelationship ?? 'unknown';
112
+ if (relationship === 'unknown')
113
+ return false;
114
+ if (kind === 'market_fact')
115
+ return role === 'report_evidence' && relationship === 'independent';
116
+ if (kind === 'lived_problem')
117
+ return role === 'user_voice' && relationship === 'independent';
118
+ if (role === 'user_voice')
119
+ return relationship === 'independent';
120
+ if (relationship === 'independent')
121
+ return role === 'report_evidence';
122
+ return relationship === 'self' && sameNamedVendor(clauseText, source, rawReport) &&
123
+ (role === 'report_evidence' || role === 'marketing_seo');
124
+ }
125
+ function spanStatesClaim(claimText, span) {
126
+ if (typeof span !== 'string')
127
+ return false;
128
+ const claim = new Set(materialTokens(claimText));
129
+ const evidence = new Set(materialTokens(span));
130
+ if (claim.size === 0)
131
+ return false;
132
+ return [...claim].filter(token => evidence.has(token)).length / claim.size >= 0.5;
133
+ }
134
+ /** Authenticate one web evidence receipt against the exact clause and cited span it supports. */
135
+ export function hypothesisWebReceiptAuthenticates(rawEvidence, clauseText, rawCategory, rawReport) {
136
+ const evidence = asRecord(rawEvidence);
137
+ const receipt = asRecord(evidence?.receipt);
138
+ const reportSource = resolveHypothesisReceipt(evidence, rawReport);
139
+ const category = asMember(rawCategory, HYPOTHESIS_CATEGORIES);
140
+ if (!receipt || !reportSource || !category)
141
+ return false;
142
+ const kind = classifyEvidenceClaimKind(clauseText, category);
143
+ return sourceSuitsClaim(kind, reportSource, clauseText, rawReport) &&
144
+ spanStatesClaim(clauseText, receipt.quoteSpan);
145
+ }
146
+ function economicKinds(value) {
147
+ return Object.entries(ECONOMIC_PATTERNS)
148
+ .filter(([, pattern]) => pattern.test(value))
149
+ .map(([kind]) => kind);
150
+ }
151
+ function materialTokens(value) {
152
+ return (value.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []).filter(token => !BOILERPLATE.has(token));
153
+ }
154
+ /** Keep this conservative classifier identical to the producer's no-paid-stage backstop. */
155
+ function isUnderDecomposed(text) {
156
+ if (CONDITION_PATTERN.test(text))
157
+ return true;
158
+ if (economicKinds(text).length > 1 || (economicKinds(text).length > 0 && REACHABILITY_PATTERN.test(text)))
159
+ return true;
160
+ const connective = /\b(?:as well as|along with|in addition to|and|or|but|plus)\b|&/gi;
161
+ for (const match of text.matchAll(connective)) {
162
+ const index = match.index ?? 0;
163
+ if (materialTokens(text.slice(0, index)).length >= 1 && materialTokens(text.slice(index + match[0].length)).length >= 1)
164
+ return true;
165
+ }
166
+ for (const match of text.matchAll(/(?<!\d),(?!\d)|[;—]/g)) {
167
+ const index = match.index ?? 0;
168
+ if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + 1)).length > 0)
169
+ return true;
170
+ }
171
+ for (const match of text.matchAll(/(?<!\d)[.!?](?!\d)\s+/g)) {
172
+ const index = match.index ?? 0;
173
+ if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + match[0].length)).length > 0)
174
+ return true;
175
+ }
176
+ return false;
177
+ }
178
+ function evidenceRefAuthenticates(row, rawRef, expectedSide, clauseText, category, rawReport) {
179
+ const ref = asRecord(rawRef);
180
+ if (ref?.side !== expectedSide || typeof ref.index !== 'number' ||
181
+ !Number.isInteger(ref.index) || ref.index < 0)
182
+ return false;
183
+ const evidenceRows = expectedSide === 'contradicting' ? row.contradictingEvidence : row.supportingEvidence;
184
+ if (!Array.isArray(evidenceRows))
185
+ return false;
186
+ const evidence = asRecord(evidenceRows[ref.index]);
187
+ const source = asMember(evidence?.source, EVIDENCE_SOURCES);
188
+ const summary = typeof evidence?.summary === 'string' ? evidence.summary : null;
189
+ if (!evidence || !source || summary === null)
190
+ return false;
191
+ if (source === 'web_research') {
192
+ if (!hypothesisWebReceiptAuthenticates(evidence, clauseText, category, rawReport))
193
+ return false;
194
+ }
195
+ const clauseEconomicKinds = economicKinds(clauseText);
196
+ if ((clauseEconomicKinds.length > 0 || category === 'willingness_to_pay' ||
197
+ MEASURED_POPULATION_PATTERN.test(clauseText)) && source === 'synthetic_interview')
198
+ return false;
199
+ if (expectedSide === 'supporting' && NEGATION_PATTERN.test(summary) !== NEGATION_PATTERN.test(clauseText))
200
+ return false;
201
+ if (clauseEconomicKinds.length > 0) {
202
+ const evidenceKinds = new Set(economicKinds(summary));
203
+ return clauseEconomicKinds.every(kind => evidenceKinds.has(kind)) &&
204
+ materialTokens(clauseText).every(token => materialTokens(summary).includes(token));
205
+ }
206
+ const evidenceTokens = materialTokens(summary);
207
+ return materialTokens(clauseText).every(token => evidenceTokens.includes(token));
208
+ }
209
+ /**
210
+ * Authenticate the current final coverage summary against the producer-owned clause result.
211
+ * Both fields are code-derived from the same resolved clauses, so absence, malformed values, or
212
+ * disagreement means neither reader may preserve the final block as current-contract truth.
213
+ */
214
+ export function finalClauseCoverageMatchesIntegrity(rawRow, rawReport) {
215
+ const row = asRecord(rawRow);
216
+ if (!row)
217
+ return false;
218
+ const final = asRecord(row.final);
219
+ const integrity = asRecord(row.clauseIntegrity);
220
+ const finalCoverage = asMember(final?.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES);
221
+ const integrityOutcome = asMember(integrity?.outcome, CLAUSE_COVERAGE_OUTCOMES);
222
+ const clauses = integrity?.clauses;
223
+ const statement = typeof row.statement === 'string' ? row.statement : '';
224
+ const category = asMember(row.category, HYPOTHESIS_CATEGORIES);
225
+ if (!statement.trim() || !category || !Array.isArray(clauses) || clauses.length < 1 || clauses.length > 4)
226
+ return false;
227
+ const clauseIds = new Set();
228
+ const clauseTexts = new Set();
229
+ const coveredRanges = [];
230
+ const refOwners = new Set();
231
+ const statuses = [];
232
+ let cursor = 0;
233
+ for (const [position, rawClause] of clauses.entries()) {
234
+ const clause = asRecord(rawClause);
235
+ const clauseId = typeof clause?.clauseId === 'string' ? clause.clauseId.trim() : '';
236
+ const text = typeof clause?.text === 'string' ? clause.text.trim() : '';
237
+ const status = asMember(clause?.status, ['supported', 'contradicted', 'uncovered']);
238
+ const start = statement.indexOf(text, cursor);
239
+ if (clauseId !== `C${position + 1}` || clauseIds.has(clauseId) || clauseTexts.has(text) ||
240
+ !text || clause?.text !== text || isUnderDecomposed(text) || start < 0 ||
241
+ !status || !Array.isArray(clause?.evidenceRefs) || clause.evidenceRefs.length > 16)
242
+ return false;
243
+ if (status === 'uncovered' && clause.evidenceRefs.length !== 0)
244
+ return false;
245
+ if (status !== 'uncovered' && clause.evidenceRefs.length === 0)
246
+ return false;
247
+ const expectedSide = status === 'contradicted' ? 'contradicting' : 'supporting';
248
+ for (const rawRef of clause.evidenceRefs) {
249
+ const ref = asRecord(rawRef);
250
+ if (!evidenceRefAuthenticates(row, ref, expectedSide, text, category, rawReport))
251
+ return false;
252
+ const refKey = `${String(ref?.side)}:${String(ref?.index)}`;
253
+ if (refOwners.has(refKey))
254
+ return false;
255
+ refOwners.add(refKey);
256
+ }
257
+ clauseIds.add(clauseId);
258
+ clauseTexts.add(text);
259
+ coveredRanges.push([start, start + text.length]);
260
+ cursor = start + text.length;
261
+ statuses.push(status);
262
+ }
263
+ let uncovered = '';
264
+ cursor = 0;
265
+ for (const [start, end] of coveredRanges) {
266
+ uncovered += ` ${statement.slice(cursor, start)}`;
267
+ cursor = end;
268
+ }
269
+ uncovered += ` ${statement.slice(cursor)}`;
270
+ if (materialTokens(uncovered).length > 0)
271
+ return false;
272
+ const derivedOutcome = statuses.some(status => status === 'contradicted')
273
+ ? 'contradicted'
274
+ : statuses.some(status => status === 'uncovered') ? 'uncovered' : 'complete';
275
+ const integrityIsCoherent = integrityOutcome === 'invalid'
276
+ ? statuses.every(status => status === 'uncovered')
277
+ : integrityOutcome === derivedOutcome;
278
+ return final?.version === HYPOTHESIS_SEMANTICS_VERSION &&
279
+ finalCoverage !== null &&
280
+ integrityIsCoherent &&
281
+ finalCoverage === integrityOutcome;
282
+ }
33
283
  /** The weaker of the original and candidate verdicts; an attempted upgrade is ignored. */
34
284
  export function resolveMonotoneVerdict(rawOriginal, rawCandidate) {
35
285
  const original = asMember(rawOriginal, VERDICT_STATUSES);
@@ -173,14 +423,59 @@ export function readLegacyRobustnessOutcome(value) {
173
423
  }
174
424
  function finalAxesAreCoherent(final) {
175
425
  const confidence = final.confidence ?? null;
426
+ if (final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidenceBasis === 'evidence' && final.clauseCoverage !== 'complete')
427
+ return false;
176
428
  if (final.confidenceBasis === 'withheld_no_evidence') {
177
429
  return confidence === null && final.sufficiency === 'none';
178
430
  }
179
431
  if (final.confidenceBasis === 'recomputed_after_flip') {
180
- return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped';
432
+ return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped' &&
433
+ (final.version === LEGACY_HYPOTHESIS_SEMANTICS_VERSION || final.clauseCoverage === 'complete');
434
+ }
435
+ if (final.confidenceBasis === 'recomputed_after_clause_gap') {
436
+ return final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidence === 'low' &&
437
+ final.sufficiency !== 'none' && final.clauseCoverage !== undefined && final.clauseCoverage !== 'complete';
181
438
  }
182
439
  return confidence !== null && final.sufficiency !== 'none' && final.robustness !== 'flipped';
183
440
  }
441
+ function failClosedCurrentState(row) {
442
+ const originalVerdict = asMember(row.status, VERDICT_STATUSES);
443
+ if (!originalVerdict)
444
+ return null;
445
+ const rawRobustness = asRecord(row.robustness);
446
+ const weakestRecorded = resolveMonotoneVerdict(originalVerdict, rawRobustness?.downgradedStatus);
447
+ const verdict = resolveMonotoneVerdict(weakestRecorded, 'inconclusive');
448
+ const evidence = [
449
+ ...(Array.isArray(row.supportingEvidence) ? row.supportingEvidence : []),
450
+ ...(Array.isArray(row.contradictingEvidence) ? row.contradictingEvidence : []),
451
+ ].filter(item => asRecord(item) !== null);
452
+ const methods = new Set(evidence.flatMap((item) => {
453
+ const source = asRecord(item)?.source;
454
+ return typeof source === 'string' ? [source] : [];
455
+ }));
456
+ const sufficiency = evidence.length === 0
457
+ ? 'none'
458
+ : evidence.length >= 5 && methods.size >= 3
459
+ ? 'substantial'
460
+ : evidence.length >= 3 && methods.size >= 2 ? 'moderate' : 'thin';
461
+ const robustness = readRowRobustnessOutcome(row);
462
+ if (robustness === null)
463
+ return null;
464
+ return {
465
+ version: HYPOTHESIS_SEMANTICS_VERSION,
466
+ verdict,
467
+ originalVerdict,
468
+ ...(sufficiency === 'none' ? {} : { confidence: 'low' }),
469
+ confidenceBasis: sufficiency === 'none'
470
+ ? 'withheld_no_evidence'
471
+ : 'recomputed_after_clause_gap',
472
+ sufficiency,
473
+ // An unreadable re-test cannot be called held; the conservative current-contract fallback
474
+ // treats it as not authenticated while retaining any separately recorded weaker verdict.
475
+ robustness,
476
+ clauseCoverage: 'invalid',
477
+ };
478
+ }
184
479
  /**
185
480
  * Authenticate and normalize a producer-owned `final` block against its raw row.
186
481
  *
@@ -192,39 +487,50 @@ function finalAxesAreCoherent(final) {
192
487
  export function normalizeFinalHypothesisState(rawRow) {
193
488
  const row = asRecord(rawRow);
194
489
  const block = asRecord(row?.final);
195
- if (!row || !block || block.version !== HYPOTHESIS_SEMANTICS_VERSION)
490
+ if (!row || !block || (block.version !== LEGACY_HYPOTHESIS_SEMANTICS_VERSION && block.version !== HYPOTHESIS_SEMANTICS_VERSION))
196
491
  return null;
492
+ const currentFallback = block.version === HYPOTHESIS_SEMANTICS_VERSION
493
+ ? failClosedCurrentState(row)
494
+ : null;
197
495
  const rowVerdict = asMember(row.status, VERDICT_STATUSES);
198
496
  const originalVerdict = asMember(block.originalVerdict, VERDICT_STATUSES);
199
497
  const verdict = asMember(block.verdict, VERDICT_STATUSES);
200
498
  if (!rowVerdict || originalVerdict !== rowVerdict || !verdict)
201
- return null;
499
+ return currentFallback;
202
500
  const rawRobustness = asRecord(row.robustness);
203
501
  const weakestRecorded = resolveMonotoneVerdict(rowVerdict, rawRobustness?.downgradedStatus);
204
502
  if (resolveMonotoneVerdict(weakestRecorded, verdict) !== verdict)
205
- return null;
503
+ return currentFallback;
206
504
  const confidence = asMember(block.confidence, CONFIDENCE_LEVELS);
207
505
  if (block.confidence !== undefined && confidence === null)
208
- return null;
506
+ return currentFallback;
209
507
  const confidenceBasis = asMember(block.confidenceBasis, CONFIDENCE_BASES);
210
508
  const sufficiency = asMember(block.sufficiency, EVIDENCE_SUFFICIENCY_LEVELS);
211
509
  const robustness = asMember(block.robustness, ROBUSTNESS_OUTCOMES);
510
+ const clauseCoverage = block.version === HYPOTHESIS_SEMANTICS_VERSION
511
+ ? asMember(block.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES)
512
+ : null;
212
513
  if (!confidenceBasis || !sufficiency || !robustness)
213
- return null;
514
+ return currentFallback;
515
+ if (block.version === HYPOTHESIS_SEMANTICS_VERSION && !clauseCoverage)
516
+ return currentFallback;
517
+ if (block.version === HYPOTHESIS_SEMANTICS_VERSION && verdict === 'validated' && clauseCoverage !== 'complete')
518
+ return currentFallback;
214
519
  if (readRowRobustnessOutcome(row) !== robustness)
215
- return null;
520
+ return currentFallback;
216
521
  const normalized = {
217
- version: HYPOTHESIS_SEMANTICS_VERSION,
522
+ version: block.version,
218
523
  verdict,
219
524
  originalVerdict,
220
525
  ...(confidence ? { confidence } : {}),
221
526
  confidenceBasis,
222
527
  sufficiency,
223
528
  robustness,
529
+ ...(clauseCoverage ? { clauseCoverage } : {}),
224
530
  };
225
531
  const priority = asMember(block.priority, HYPOTHESIS_PRIORITIES);
226
532
  if (priority)
227
533
  normalized.priority = priority;
228
- return finalAxesAreCoherent(normalized) ? normalized : null;
534
+ return finalAxesAreCoherent(normalized) ? normalized : currentFallback;
229
535
  }
230
536
  //# sourceMappingURL=hypothesis-semantics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hypothesis-semantics.js","sourceRoot":"","sources":["../src/hypothesis-semantics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hypothesis-semantics.js","sourceRoot":"","sources":["../src/hypothesis-semantics.ts"],"names":[],"mappings":"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"}
@@ -68,9 +68,11 @@ export const CONTENT_TYPE_STATES = '`user_voice` (a real person\'s first-hand ac
68
68
  * constant, pinned across every surface by `content-type-display.test.ts`. No leading or trailing
69
69
  * space; each caller joins it.
70
70
  */
71
- export const CONTENT_TYPE_EXCLUSIONS = '`marketing_seo` is shown for awareness but is EXCLUDED from grounding AND from automatic ' +
72
- 'community synthesis — it is vendor marketing or SEO content, never cite it as user ' +
73
- 'evidence. `unclassified` is EXCLUDED from both as well, and means the classification is ' +
71
+ export const CONTENT_TYPE_EXCLUSIONS = '`marketing_seo` is shown for awareness and is EXCLUDED from automatic community synthesis. ' +
72
+ 'It is also excluded from grounding except that a producer-resolved hypothesis receipt may ' +
73
+ 'support only a capability about that same named vendor; never cite it as user evidence or ' +
74
+ 'independent market evidence. `unclassified` is EXCLUDED from both grounding and automatic ' +
75
+ 'community synthesis, and means the classification is ' +
74
76
  'genuinely unknown, NOT that the source was checked and found benign.';
75
77
  /**
76
78
  * FUL-575 — the exact trust paragraph shared by the two community-tool descriptions.
@@ -158,6 +160,12 @@ function contentTypeSentence(value) {
158
160
  export function contentTypeProvenanceLine(value) {
159
161
  return `${CONTINUATION}${contentTypeSentence(value)}`;
160
162
  }
163
+ /** The narrow hypothesis exception: self-published copy may prove only its named vendor's capability. */
164
+ export function hypothesisContentTypeProvenanceLine(value, relationship) {
165
+ return canonicalContentType(value) === 'marketing_seo' && relationship === 'self'
166
+ ? `${CONTINUATION}source type: marketing_seo - vendor marketing, eligible only for a same-vendor capability hypothesis; excluded from market grounding and community synthesis`
167
+ : contentTypeProvenanceLine(value);
168
+ }
161
169
  /**
162
170
  * FUL-560 — the same sentence, marked as a DEVIATION from a pool's stated invariant.
163
171
  *
@@ -1 +1 @@
1
- {"version":3,"file":"content-type-display.js","sourceRoot":"","sources":["../../src/tools/content-type-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAU,CAAA;AAElG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,wEAAwE;IACxE,gGAAgG;IAChG,iBAAiB,CAAA;AAEnB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,2FAA2F;IAC3F,qFAAqF;IACrF,0FAA0F;IAC1F,sEAAsE,CAAA;AAExE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,4EAA4E;IAC5E,mBAAmB;IACnB,GAAG;IACH,uBAAuB,CAAA;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,qCAAqC;IACrC,mBAAmB;IACnB,mGAAmG;IACnG,mGAAmG;IACnG,2BAA2B;IAC3B,uBAAuB,CAAA;AAEzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,uBAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChG,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,CAAA;AAE5B;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,CAAC,WAAW;QACjB,CAAC,CAAC,6EAA6E;QAC/E,CAAC,CAAC,WAAW,KAAK,eAAe;YAC/B,CAAC,CAAC,gGAAgG;YAClG,CAAC,CAAC,gBAAgB,WAAW,EAAE,CAAA;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,OAAO,GAAG,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAA;AACvD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,GAAG,YAAY,UAAU,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"content-type-display.js","sourceRoot":"","sources":["../../src/tools/content-type-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAU,CAAA;AAElG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,wEAAwE;IACxE,gGAAgG;IAChG,iBAAiB,CAAA;AAEnB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,6FAA6F;IAC7F,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,uDAAuD;IACvD,sEAAsE,CAAA;AAExE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,4EAA4E;IAC5E,mBAAmB;IACnB,GAAG;IACH,uBAAuB,CAAA;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,qCAAqC;IACrC,mBAAmB;IACnB,mGAAmG;IACnG,mGAAmG;IACnG,2BAA2B;IAC3B,uBAAuB,CAAA;AAEzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,uBAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChG,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,CAAA;AAE5B;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,CAAC,WAAW;QACjB,CAAC,CAAC,6EAA6E;QAC/E,CAAC,CAAC,WAAW,KAAK,eAAe;YAC/B,CAAC,CAAC,gGAAgG;YAClG,CAAC,CAAC,gBAAgB,WAAW,EAAE,CAAA;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,OAAO,GAAG,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,mCAAmC,CAAC,KAAc,EAAE,YAAqB;IACvF,OAAO,oBAAoB,CAAC,KAAK,CAAC,KAAK,eAAe,IAAI,YAAY,KAAK,MAAM;QAC/E,CAAC,CAAC,GAAG,YAAY,8JAA8J;QAC/K,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,GAAG,YAAY,UAAU,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9D,CAAC"}
@@ -15,17 +15,65 @@
15
15
  * coming. It says: check your balance, don't re-run just to recover credits.
16
16
  */
17
17
  export function buildFailureGuidance(opts) {
18
- const { errorCategory, refundedCredits, refundPending } = opts;
18
+ const { errorCategory, refundedCredits, refundPending, startedSandbox } = opts;
19
19
  const refundNote = refundedCredits !== undefined && refundedCredits > 0
20
20
  ? ` ${refundedCredits} credit${refundedCredits === 1 ? '' : 's'} refunded.`
21
21
  : refundPending
22
22
  ? ' This failure type is normally eligible for an automatic refund — check your credit balance; do not re-run this job just to recover credits.'
23
23
  : '';
24
+ /**
25
+ * ⚠️ THE DO-NOT-RETRY SENTENCE IS GATED ON A PAIR, NOT ON `our_fault`
26
+ * (FUL-845 review F3/F5, corrected in round 3).
27
+ *
28
+ * ⚠️ `our_fault` ALONE IS WRONG, and round 2 shipped it that way. The agent
29
+ * uses `OUR_FAULT` as its CATCH-ALL for every unmodelled in-sandbox crash
30
+ * (`agent/src/error-utils.ts` — "Anything else → OUR_FAULT"), reached from
31
+ * eleven terminal-failure sites. Two of them write an `error_message` that
32
+ * says, in those words, *"Please re-run the validation."* Those runs DID
33
+ * start, and a retry is exactly right. Told "retrying will not help", an
34
+ * autonomous caller abandons a job a retry would have completed — and it is
35
+ * the LARGER population: case (a) below is three enumerated deploy-time
36
+ * conditions, case (b) grows with every new unhandled throw.
37
+ *
38
+ * So the sentence fires only on the pair `our_fault` AND the run never
39
+ * reached a sandbox — a `/start` the sandbox refused, a stale E2B template, a
40
+ * deployment missing a key. That is the same discriminator the web's
41
+ * `runOffersRestart` uses to withhold its retry button, and `/events` now
42
+ * carries the second half of it as `job.startedSandbox`.
43
+ *
44
+ * ⚠️ UNKNOWN IS SILENCE, not a guess. A published MCP client talks to
45
+ * whatever is deployed; against a deployment older than `startedSandbox` the
46
+ * field is absent, and this says nothing rather than making a claim it cannot
47
+ * support. Silence is the pre-FUL-845 behaviour, so no caller regresses.
48
+ *
49
+ * ⚠️ NOT "the only do-not-retry signal" — round 2's comment said that and it
50
+ * is false. `GET /api/validate` carries `errorMessage`
51
+ * (`JOB_SUMMARY_COLUMNS` → `mapJobSummaryRow`), and `list_reports` returns
52
+ * that array RAW into `_meta`, so the web prose does reach an agent on that
53
+ * path — without the pair beside it, since that summary shape carries neither
54
+ * `errorCategory` nor `sandboxId`.
55
+ *
56
+ * ⚠️ ROUND 3's REASON FOR THAT IS NOW STALE, corrected in round 5: it said
57
+ * *"`/events` carries no `errorMessage`"*, and the SAME round-3 commit added
58
+ * one (`app/api/validate/[jobId]/events/route.ts`, `errorMessage:
59
+ * jobResult.errorMessage`). The conclusion still holds for these tools —
60
+ * none of them puts that string in front of the model, so this structured
61
+ * hint remains the do-not-retry signal a poll actually gets — but it holds
62
+ * because of what the TOOLS emit, not because of what the route omits.
63
+ *
64
+ * It is also why the `third_party_fault` branch can keep saying "retrying is
65
+ * reasonable": `classifySpawnFailure` no longer files our own configuration
66
+ * failures under it (review F2), so the category now means what the sentence
67
+ * claims.
68
+ */
69
+ const retryPointless = errorCategory === 'our_fault' && startedSandbox === false;
24
70
  const retryHint = errorCategory === 'third_party_fault'
25
71
  ? ' This was a transient upstream failure — retrying is reasonable.'
26
- : errorCategory === 'user_fault'
27
- ? ' This was caused by the request itself — fix the request before retrying.'
28
- : '';
29
- return { refundNote, retryHint };
72
+ : retryPointless
73
+ ? ' This run never started — it was a fault in our own configuration, not a transient one, and retrying will not help until it is fixed.'
74
+ : errorCategory === 'user_fault'
75
+ ? ' This was caused by the request itself — fix the request before retrying.'
76
+ : '';
77
+ return { refundNote, retryHint, retryPointless };
30
78
  }
31
79
  //# sourceMappingURL=failure-guidance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"failure-guidance.js","sourceRoot":"","sources":["../../src/tools/failure-guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAIpC;IACC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAE9D,MAAM,UAAU,GACd,eAAe,KAAK,SAAS,IAAI,eAAe,GAAG,CAAC;QAClD,CAAC,CAAC,IAAI,eAAe,UAAU,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY;QAC3E,CAAC,CAAC,aAAa;YACb,CAAC,CAAC,8IAA8I;YAChJ,CAAC,CAAC,EAAE,CAAA;IAEV,MAAM,SAAS,GACb,aAAa,KAAK,mBAAmB;QACnC,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,aAAa,KAAK,YAAY;YAC9B,CAAC,CAAC,2EAA2E;YAC7E,CAAC,CAAC,EAAE,CAAA;IAEV,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"failure-guidance.js","sourceRoot":"","sources":["../../src/tools/failure-guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAWpC;IAgBC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IAE9E,MAAM,UAAU,GACd,eAAe,KAAK,SAAS,IAAI,eAAe,GAAG,CAAC;QAClD,CAAC,CAAC,IAAI,eAAe,UAAU,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY;QAC3E,CAAC,CAAC,aAAa;YACb,CAAC,CAAC,8IAA8I;YAChJ,CAAC,CAAC,EAAE,CAAA;IAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,MAAM,cAAc,GAAG,aAAa,KAAK,WAAW,IAAI,cAAc,KAAK,KAAK,CAAA;IAEhF,MAAM,SAAS,GACb,aAAa,KAAK,mBAAmB;QACnC,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,cAAc;YACd,CAAC,CAAC,uIAAuI;YACzI,CAAC,CAAC,aAAa,KAAK,YAAY;gBAC9B,CAAC,CAAC,2EAA2E;gBAC7E,CAAC,CAAC,EAAE,CAAA;IAEZ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AAClD,CAAC"}