@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 +27 -0
- package/README.md +5 -1
- package/dist/hypothesis-semantics.js +317 -11
- package/dist/hypothesis-semantics.js.map +1 -1
- package/dist/tools/content-type-display.js +11 -3
- package/dist/tools/content-type-display.js.map +1 -1
- package/dist/tools/failure-guidance.js +53 -5
- package/dist/tools/failure-guidance.js.map +1 -1
- package/dist/tools/output-schemas.js +35 -0
- package/dist/tools/output-schemas.js.map +1 -1
- package/dist/tools/projects.js +334 -0
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/registry.js +69 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/report-digest.js +47 -11
- package/dist/tools/report-digest.js.map +1 -1
- package/dist/tools/research.js +4 -0
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/scoped-research.js +23 -4
- package/dist/tools/scoped-research.js.map +1 -1
- package/dist/tools/status.js +4 -0
- package/dist/tools/status.js.map +1 -1
- package/dist/types/report.js +152 -10
- package/dist/types/report.js.map +1 -1
- package/package.json +1 -1
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 (
|
|
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
|
|
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
|
|
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
|
|
503
|
+
return currentFallback;
|
|
206
504
|
const confidence = asMember(block.confidence, CONFIDENCE_LEVELS);
|
|
207
505
|
if (block.confidence !== undefined && confidence === null)
|
|
208
|
-
return
|
|
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
|
|
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
|
|
520
|
+
return currentFallback;
|
|
216
521
|
const normalized = {
|
|
217
|
-
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 :
|
|
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
|
|
72
|
-
'
|
|
73
|
-
'
|
|
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,
|
|
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
|
-
:
|
|
27
|
-
? ' This was
|
|
28
|
-
: ''
|
|
29
|
-
|
|
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,
|
|
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"}
|