@clien-ai/mcp 0.13.0 → 0.13.2
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/hypothesis-semantics.js +334 -11
- package/dist/hypothesis-semantics.js.map +1 -1
- package/dist/lib/excerpt-suitability.js +46 -0
- package/dist/lib/excerpt-suitability.js.map +1 -0
- package/dist/tools/collections.js +7 -3
- package/dist/tools/collections.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/market-sizing-proof.js +3 -1
- package/dist/tools/market-sizing-proof.js.map +1 -1
- package/dist/tools/receipt-children.js +4 -1
- package/dist/tools/receipt-children.js.map +1 -1
- package/dist/tools/report-digest.js +145 -47
- 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 +372 -17
- package/dist/types/report.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,271 @@ 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)|tam|sam|som|unit volume|sales volume|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
|
+
const MARKET_GROWTH_PATTERN = /(?:\b(?:compound annual growth rate|growth rate)\b|\b(?:market|category|industry|sector)\b[^.!?\n]{0,80}\b(?:grow|grows|grew|grown|growing)\b|\b(?:grow|grows|grew|grown|growing)\b[^.!?\n]{0,40}(?:\d+(?:\.\d+)?\s*%|\bannually\b|\bper year\b|\byear(?:[- ]over[- ]year| on year)\b|\byoy\b))/i;
|
|
59
|
+
export function reportClaimNeedsIndependentMarketAuthority(section, text) {
|
|
60
|
+
if (section === 'market')
|
|
61
|
+
return true;
|
|
62
|
+
return typeof text === 'string' &&
|
|
63
|
+
(EXTERNAL_ECONOMIC_PATTERN.test(text) || MARKET_GROWTH_PATTERN.test(text) || MEASURED_POPULATION_PATTERN.test(text));
|
|
64
|
+
}
|
|
65
|
+
export function sourceAuthenticatesMarketEconomics(source) {
|
|
66
|
+
if (typeof source !== 'object' || source === null || Array.isArray(source))
|
|
67
|
+
return false;
|
|
68
|
+
const row = source;
|
|
69
|
+
return row.contentType === 'report_evidence' &&
|
|
70
|
+
row.publisherSubjectRelationship === 'independent' &&
|
|
71
|
+
row.marketEconomicsAuthority === 'independent';
|
|
72
|
+
}
|
|
73
|
+
function classifyEvidenceClaimKind(text, category) {
|
|
74
|
+
if (EXTERNAL_ECONOMIC_PATTERN.test(text) || MARKET_GROWTH_PATTERN.test(text) || MEASURED_POPULATION_PATTERN.test(text))
|
|
75
|
+
return 'market_fact';
|
|
76
|
+
if (category === 'market' || category === 'willingness_to_pay')
|
|
77
|
+
return 'market_fact';
|
|
78
|
+
return category === 'problem' ? 'lived_problem' : 'vendor_capability';
|
|
79
|
+
}
|
|
80
|
+
function normalizedContains(container, span) {
|
|
81
|
+
if (typeof container !== 'string' || typeof span !== 'string' || !span.trim())
|
|
82
|
+
return false;
|
|
83
|
+
const normalize = (value) => value.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
|
|
84
|
+
const needle = normalize(span);
|
|
85
|
+
return needle.length > 0 && normalize(container).includes(needle);
|
|
86
|
+
}
|
|
87
|
+
export function resolveHypothesisReceipt(rawEvidence, rawReport) {
|
|
88
|
+
const evidence = asRecord(rawEvidence);
|
|
89
|
+
const receipt = asRecord(evidence?.receipt);
|
|
90
|
+
const report = asRecord(rawReport);
|
|
91
|
+
const match = typeof receipt?.sourceId === 'string' ? /^RRCP-s(0|[1-9]\d*)$/.exec(receipt.sourceId) : null;
|
|
92
|
+
const sources = report?.reportEvidence;
|
|
93
|
+
const source = match && Array.isArray(sources) ? asRecord(sources[Number(match[1])]) : null;
|
|
94
|
+
return source?.section === 'hypothesis' && normalizedContains(source.quote, receipt?.quoteSpan) ? source : null;
|
|
95
|
+
}
|
|
96
|
+
function hostKey(value) {
|
|
97
|
+
if (typeof value !== 'string')
|
|
98
|
+
return null;
|
|
99
|
+
try {
|
|
100
|
+
return new URL(value).hostname.toLocaleLowerCase().replace(/^www\./, '') || null;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function sameNamedVendor(clauseText, source, rawReport) {
|
|
107
|
+
const report = asRecord(rawReport);
|
|
108
|
+
const web = asRecord(report?.webResearch);
|
|
109
|
+
const competitors = Array.isArray(web?.competitors) ? web.competitors : [];
|
|
110
|
+
const normalizedClause = clauseText.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
|
|
111
|
+
const namedHosts = new Set();
|
|
112
|
+
for (const rawCompetitor of competitors) {
|
|
113
|
+
const competitor = asRecord(rawCompetitor);
|
|
114
|
+
const name = typeof competitor?.name === 'string'
|
|
115
|
+
? competitor.name.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, ' ').trim()
|
|
116
|
+
: '';
|
|
117
|
+
const host = hostKey(competitor?.url);
|
|
118
|
+
if (name && host && ` ${normalizedClause} `.includes(` ${name} `))
|
|
119
|
+
namedHosts.add(host);
|
|
120
|
+
}
|
|
121
|
+
const sourceHost = hostKey(source.url);
|
|
122
|
+
return sourceHost !== null && namedHosts.size === 1 && [...namedHosts].some(host => sourceHost === host || sourceHost.endsWith(`.${host}`));
|
|
123
|
+
}
|
|
124
|
+
function sourceSuitsClaim(kind, source, clauseText, rawReport) {
|
|
125
|
+
const role = source.contentType ?? 'unknown';
|
|
126
|
+
const relationship = source.publisherSubjectRelationship ?? 'unknown';
|
|
127
|
+
if (relationship === 'unknown')
|
|
128
|
+
return false;
|
|
129
|
+
if (kind === 'market_fact') {
|
|
130
|
+
return role === 'report_evidence' && relationship === 'independent' &&
|
|
131
|
+
source.marketEconomicsAuthority === 'independent';
|
|
132
|
+
}
|
|
133
|
+
if (kind === 'lived_problem')
|
|
134
|
+
return role === 'user_voice' && relationship === 'independent';
|
|
135
|
+
if (role === 'user_voice')
|
|
136
|
+
return relationship === 'independent';
|
|
137
|
+
if (relationship === 'independent')
|
|
138
|
+
return role === 'report_evidence';
|
|
139
|
+
return relationship === 'self' && sameNamedVendor(clauseText, source, rawReport) &&
|
|
140
|
+
(role === 'report_evidence' || role === 'marketing_seo');
|
|
141
|
+
}
|
|
142
|
+
function spanStatesClaim(claimText, span) {
|
|
143
|
+
if (typeof span !== 'string')
|
|
144
|
+
return false;
|
|
145
|
+
const claim = new Set(materialTokens(claimText));
|
|
146
|
+
const evidence = new Set(materialTokens(span));
|
|
147
|
+
if (claim.size === 0)
|
|
148
|
+
return false;
|
|
149
|
+
return [...claim].filter(token => evidence.has(token)).length / claim.size >= 0.5;
|
|
150
|
+
}
|
|
151
|
+
/** Authenticate one web evidence receipt against the exact clause and cited span it supports. */
|
|
152
|
+
export function hypothesisWebReceiptAuthenticates(rawEvidence, clauseText, rawCategory, rawReport) {
|
|
153
|
+
const evidence = asRecord(rawEvidence);
|
|
154
|
+
const receipt = asRecord(evidence?.receipt);
|
|
155
|
+
const reportSource = resolveHypothesisReceipt(evidence, rawReport);
|
|
156
|
+
const category = asMember(rawCategory, HYPOTHESIS_CATEGORIES);
|
|
157
|
+
if (!receipt || !reportSource || !category)
|
|
158
|
+
return false;
|
|
159
|
+
const kind = classifyEvidenceClaimKind(clauseText, category);
|
|
160
|
+
return sourceSuitsClaim(kind, reportSource, clauseText, rawReport) &&
|
|
161
|
+
spanStatesClaim(clauseText, receipt.quoteSpan);
|
|
162
|
+
}
|
|
163
|
+
function economicKinds(value) {
|
|
164
|
+
return Object.entries(ECONOMIC_PATTERNS)
|
|
165
|
+
.filter(([, pattern]) => pattern.test(value))
|
|
166
|
+
.map(([kind]) => kind);
|
|
167
|
+
}
|
|
168
|
+
function materialTokens(value) {
|
|
169
|
+
return (value.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []).filter(token => !BOILERPLATE.has(token));
|
|
170
|
+
}
|
|
171
|
+
/** Keep this conservative classifier identical to the producer's no-paid-stage backstop. */
|
|
172
|
+
function isUnderDecomposed(text) {
|
|
173
|
+
if (CONDITION_PATTERN.test(text))
|
|
174
|
+
return true;
|
|
175
|
+
if (economicKinds(text).length > 1 || (economicKinds(text).length > 0 && REACHABILITY_PATTERN.test(text)))
|
|
176
|
+
return true;
|
|
177
|
+
const connective = /\b(?:as well as|along with|in addition to|and|or|but|plus)\b|&/gi;
|
|
178
|
+
for (const match of text.matchAll(connective)) {
|
|
179
|
+
const index = match.index ?? 0;
|
|
180
|
+
if (materialTokens(text.slice(0, index)).length >= 1 && materialTokens(text.slice(index + match[0].length)).length >= 1)
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
for (const match of text.matchAll(/(?<!\d),(?!\d)|[;—]/g)) {
|
|
184
|
+
const index = match.index ?? 0;
|
|
185
|
+
if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + 1)).length > 0)
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
for (const match of text.matchAll(/(?<!\d)[.!?](?!\d)\s+/g)) {
|
|
189
|
+
const index = match.index ?? 0;
|
|
190
|
+
if (materialTokens(text.slice(0, index)).length > 0 && materialTokens(text.slice(index + match[0].length)).length > 0)
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
function evidenceRefAuthenticates(row, rawRef, expectedSide, clauseText, category, rawReport) {
|
|
196
|
+
const ref = asRecord(rawRef);
|
|
197
|
+
if (ref?.side !== expectedSide || typeof ref.index !== 'number' ||
|
|
198
|
+
!Number.isInteger(ref.index) || ref.index < 0)
|
|
199
|
+
return false;
|
|
200
|
+
const evidenceRows = expectedSide === 'contradicting' ? row.contradictingEvidence : row.supportingEvidence;
|
|
201
|
+
if (!Array.isArray(evidenceRows))
|
|
202
|
+
return false;
|
|
203
|
+
const evidence = asRecord(evidenceRows[ref.index]);
|
|
204
|
+
const source = asMember(evidence?.source, EVIDENCE_SOURCES);
|
|
205
|
+
const summary = typeof evidence?.summary === 'string' ? evidence.summary : null;
|
|
206
|
+
if (!evidence || !source || summary === null)
|
|
207
|
+
return false;
|
|
208
|
+
if (source === 'web_research') {
|
|
209
|
+
if (!hypothesisWebReceiptAuthenticates(evidence, clauseText, category, rawReport))
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
const clauseEconomicKinds = economicKinds(clauseText);
|
|
213
|
+
if ((clauseEconomicKinds.length > 0 || category === 'willingness_to_pay' ||
|
|
214
|
+
MEASURED_POPULATION_PATTERN.test(clauseText)) && source === 'synthetic_interview')
|
|
215
|
+
return false;
|
|
216
|
+
if (expectedSide === 'supporting' && NEGATION_PATTERN.test(summary) !== NEGATION_PATTERN.test(clauseText))
|
|
217
|
+
return false;
|
|
218
|
+
if (clauseEconomicKinds.length > 0) {
|
|
219
|
+
const evidenceKinds = new Set(economicKinds(summary));
|
|
220
|
+
return clauseEconomicKinds.every(kind => evidenceKinds.has(kind)) &&
|
|
221
|
+
materialTokens(clauseText).every(token => materialTokens(summary).includes(token));
|
|
222
|
+
}
|
|
223
|
+
const evidenceTokens = materialTokens(summary);
|
|
224
|
+
return materialTokens(clauseText).every(token => evidenceTokens.includes(token));
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Authenticate the current final coverage summary against the producer-owned clause result.
|
|
228
|
+
* Both fields are code-derived from the same resolved clauses, so absence, malformed values, or
|
|
229
|
+
* disagreement means neither reader may preserve the final block as current-contract truth.
|
|
230
|
+
*/
|
|
231
|
+
export function finalClauseCoverageMatchesIntegrity(rawRow, rawReport) {
|
|
232
|
+
const row = asRecord(rawRow);
|
|
233
|
+
if (!row)
|
|
234
|
+
return false;
|
|
235
|
+
const final = asRecord(row.final);
|
|
236
|
+
const integrity = asRecord(row.clauseIntegrity);
|
|
237
|
+
const finalCoverage = asMember(final?.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES);
|
|
238
|
+
const integrityOutcome = asMember(integrity?.outcome, CLAUSE_COVERAGE_OUTCOMES);
|
|
239
|
+
const clauses = integrity?.clauses;
|
|
240
|
+
const statement = typeof row.statement === 'string' ? row.statement : '';
|
|
241
|
+
const category = asMember(row.category, HYPOTHESIS_CATEGORIES);
|
|
242
|
+
if (!statement.trim() || !category || !Array.isArray(clauses) || clauses.length < 1 || clauses.length > 4)
|
|
243
|
+
return false;
|
|
244
|
+
const clauseIds = new Set();
|
|
245
|
+
const clauseTexts = new Set();
|
|
246
|
+
const coveredRanges = [];
|
|
247
|
+
const refOwners = new Set();
|
|
248
|
+
const statuses = [];
|
|
249
|
+
let cursor = 0;
|
|
250
|
+
for (const [position, rawClause] of clauses.entries()) {
|
|
251
|
+
const clause = asRecord(rawClause);
|
|
252
|
+
const clauseId = typeof clause?.clauseId === 'string' ? clause.clauseId.trim() : '';
|
|
253
|
+
const text = typeof clause?.text === 'string' ? clause.text.trim() : '';
|
|
254
|
+
const status = asMember(clause?.status, ['supported', 'contradicted', 'uncovered']);
|
|
255
|
+
const start = statement.indexOf(text, cursor);
|
|
256
|
+
if (clauseId !== `C${position + 1}` || clauseIds.has(clauseId) || clauseTexts.has(text) ||
|
|
257
|
+
!text || clause?.text !== text || isUnderDecomposed(text) || start < 0 ||
|
|
258
|
+
!status || !Array.isArray(clause?.evidenceRefs) || clause.evidenceRefs.length > 16)
|
|
259
|
+
return false;
|
|
260
|
+
if (status === 'uncovered' && clause.evidenceRefs.length !== 0)
|
|
261
|
+
return false;
|
|
262
|
+
if (status !== 'uncovered' && clause.evidenceRefs.length === 0)
|
|
263
|
+
return false;
|
|
264
|
+
const expectedSide = status === 'contradicted' ? 'contradicting' : 'supporting';
|
|
265
|
+
for (const rawRef of clause.evidenceRefs) {
|
|
266
|
+
const ref = asRecord(rawRef);
|
|
267
|
+
if (!evidenceRefAuthenticates(row, ref, expectedSide, text, category, rawReport))
|
|
268
|
+
return false;
|
|
269
|
+
const refKey = `${String(ref?.side)}:${String(ref?.index)}`;
|
|
270
|
+
if (refOwners.has(refKey))
|
|
271
|
+
return false;
|
|
272
|
+
refOwners.add(refKey);
|
|
273
|
+
}
|
|
274
|
+
clauseIds.add(clauseId);
|
|
275
|
+
clauseTexts.add(text);
|
|
276
|
+
coveredRanges.push([start, start + text.length]);
|
|
277
|
+
cursor = start + text.length;
|
|
278
|
+
statuses.push(status);
|
|
279
|
+
}
|
|
280
|
+
let uncovered = '';
|
|
281
|
+
cursor = 0;
|
|
282
|
+
for (const [start, end] of coveredRanges) {
|
|
283
|
+
uncovered += ` ${statement.slice(cursor, start)}`;
|
|
284
|
+
cursor = end;
|
|
285
|
+
}
|
|
286
|
+
uncovered += ` ${statement.slice(cursor)}`;
|
|
287
|
+
if (materialTokens(uncovered).length > 0)
|
|
288
|
+
return false;
|
|
289
|
+
const derivedOutcome = statuses.some(status => status === 'contradicted')
|
|
290
|
+
? 'contradicted'
|
|
291
|
+
: statuses.some(status => status === 'uncovered') ? 'uncovered' : 'complete';
|
|
292
|
+
const integrityIsCoherent = integrityOutcome === 'invalid'
|
|
293
|
+
? statuses.every(status => status === 'uncovered')
|
|
294
|
+
: integrityOutcome === derivedOutcome;
|
|
295
|
+
return final?.version === HYPOTHESIS_SEMANTICS_VERSION &&
|
|
296
|
+
finalCoverage !== null &&
|
|
297
|
+
integrityIsCoherent &&
|
|
298
|
+
finalCoverage === integrityOutcome;
|
|
299
|
+
}
|
|
33
300
|
/** The weaker of the original and candidate verdicts; an attempted upgrade is ignored. */
|
|
34
301
|
export function resolveMonotoneVerdict(rawOriginal, rawCandidate) {
|
|
35
302
|
const original = asMember(rawOriginal, VERDICT_STATUSES);
|
|
@@ -173,14 +440,59 @@ export function readLegacyRobustnessOutcome(value) {
|
|
|
173
440
|
}
|
|
174
441
|
function finalAxesAreCoherent(final) {
|
|
175
442
|
const confidence = final.confidence ?? null;
|
|
443
|
+
if (final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidenceBasis === 'evidence' && final.clauseCoverage !== 'complete')
|
|
444
|
+
return false;
|
|
176
445
|
if (final.confidenceBasis === 'withheld_no_evidence') {
|
|
177
446
|
return confidence === null && final.sufficiency === 'none';
|
|
178
447
|
}
|
|
179
448
|
if (final.confidenceBasis === 'recomputed_after_flip') {
|
|
180
|
-
return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped'
|
|
449
|
+
return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped' &&
|
|
450
|
+
(final.version === LEGACY_HYPOTHESIS_SEMANTICS_VERSION || final.clauseCoverage === 'complete');
|
|
451
|
+
}
|
|
452
|
+
if (final.confidenceBasis === 'recomputed_after_clause_gap') {
|
|
453
|
+
return final.version === HYPOTHESIS_SEMANTICS_VERSION && final.confidence === 'low' &&
|
|
454
|
+
final.sufficiency !== 'none' && final.clauseCoverage !== undefined && final.clauseCoverage !== 'complete';
|
|
181
455
|
}
|
|
182
456
|
return confidence !== null && final.sufficiency !== 'none' && final.robustness !== 'flipped';
|
|
183
457
|
}
|
|
458
|
+
function failClosedCurrentState(row) {
|
|
459
|
+
const originalVerdict = asMember(row.status, VERDICT_STATUSES);
|
|
460
|
+
if (!originalVerdict)
|
|
461
|
+
return null;
|
|
462
|
+
const rawRobustness = asRecord(row.robustness);
|
|
463
|
+
const weakestRecorded = resolveMonotoneVerdict(originalVerdict, rawRobustness?.downgradedStatus);
|
|
464
|
+
const verdict = resolveMonotoneVerdict(weakestRecorded, 'inconclusive');
|
|
465
|
+
const evidence = [
|
|
466
|
+
...(Array.isArray(row.supportingEvidence) ? row.supportingEvidence : []),
|
|
467
|
+
...(Array.isArray(row.contradictingEvidence) ? row.contradictingEvidence : []),
|
|
468
|
+
].filter(item => asRecord(item) !== null);
|
|
469
|
+
const methods = new Set(evidence.flatMap((item) => {
|
|
470
|
+
const source = asRecord(item)?.source;
|
|
471
|
+
return typeof source === 'string' ? [source] : [];
|
|
472
|
+
}));
|
|
473
|
+
const sufficiency = evidence.length === 0
|
|
474
|
+
? 'none'
|
|
475
|
+
: evidence.length >= 5 && methods.size >= 3
|
|
476
|
+
? 'substantial'
|
|
477
|
+
: evidence.length >= 3 && methods.size >= 2 ? 'moderate' : 'thin';
|
|
478
|
+
const robustness = readRowRobustnessOutcome(row);
|
|
479
|
+
if (robustness === null)
|
|
480
|
+
return null;
|
|
481
|
+
return {
|
|
482
|
+
version: HYPOTHESIS_SEMANTICS_VERSION,
|
|
483
|
+
verdict,
|
|
484
|
+
originalVerdict,
|
|
485
|
+
...(sufficiency === 'none' ? {} : { confidence: 'low' }),
|
|
486
|
+
confidenceBasis: sufficiency === 'none'
|
|
487
|
+
? 'withheld_no_evidence'
|
|
488
|
+
: 'recomputed_after_clause_gap',
|
|
489
|
+
sufficiency,
|
|
490
|
+
// An unreadable re-test cannot be called held; the conservative current-contract fallback
|
|
491
|
+
// treats it as not authenticated while retaining any separately recorded weaker verdict.
|
|
492
|
+
robustness,
|
|
493
|
+
clauseCoverage: 'invalid',
|
|
494
|
+
};
|
|
495
|
+
}
|
|
184
496
|
/**
|
|
185
497
|
* Authenticate and normalize a producer-owned `final` block against its raw row.
|
|
186
498
|
*
|
|
@@ -192,39 +504,50 @@ function finalAxesAreCoherent(final) {
|
|
|
192
504
|
export function normalizeFinalHypothesisState(rawRow) {
|
|
193
505
|
const row = asRecord(rawRow);
|
|
194
506
|
const block = asRecord(row?.final);
|
|
195
|
-
if (!row || !block || block.version !== HYPOTHESIS_SEMANTICS_VERSION)
|
|
507
|
+
if (!row || !block || (block.version !== LEGACY_HYPOTHESIS_SEMANTICS_VERSION && block.version !== HYPOTHESIS_SEMANTICS_VERSION))
|
|
196
508
|
return null;
|
|
509
|
+
const currentFallback = block.version === HYPOTHESIS_SEMANTICS_VERSION
|
|
510
|
+
? failClosedCurrentState(row)
|
|
511
|
+
: null;
|
|
197
512
|
const rowVerdict = asMember(row.status, VERDICT_STATUSES);
|
|
198
513
|
const originalVerdict = asMember(block.originalVerdict, VERDICT_STATUSES);
|
|
199
514
|
const verdict = asMember(block.verdict, VERDICT_STATUSES);
|
|
200
515
|
if (!rowVerdict || originalVerdict !== rowVerdict || !verdict)
|
|
201
|
-
return
|
|
516
|
+
return currentFallback;
|
|
202
517
|
const rawRobustness = asRecord(row.robustness);
|
|
203
518
|
const weakestRecorded = resolveMonotoneVerdict(rowVerdict, rawRobustness?.downgradedStatus);
|
|
204
519
|
if (resolveMonotoneVerdict(weakestRecorded, verdict) !== verdict)
|
|
205
|
-
return
|
|
520
|
+
return currentFallback;
|
|
206
521
|
const confidence = asMember(block.confidence, CONFIDENCE_LEVELS);
|
|
207
522
|
if (block.confidence !== undefined && confidence === null)
|
|
208
|
-
return
|
|
523
|
+
return currentFallback;
|
|
209
524
|
const confidenceBasis = asMember(block.confidenceBasis, CONFIDENCE_BASES);
|
|
210
525
|
const sufficiency = asMember(block.sufficiency, EVIDENCE_SUFFICIENCY_LEVELS);
|
|
211
526
|
const robustness = asMember(block.robustness, ROBUSTNESS_OUTCOMES);
|
|
527
|
+
const clauseCoverage = block.version === HYPOTHESIS_SEMANTICS_VERSION
|
|
528
|
+
? asMember(block.clauseCoverage, CLAUSE_COVERAGE_OUTCOMES)
|
|
529
|
+
: null;
|
|
212
530
|
if (!confidenceBasis || !sufficiency || !robustness)
|
|
213
|
-
return
|
|
531
|
+
return currentFallback;
|
|
532
|
+
if (block.version === HYPOTHESIS_SEMANTICS_VERSION && !clauseCoverage)
|
|
533
|
+
return currentFallback;
|
|
534
|
+
if (block.version === HYPOTHESIS_SEMANTICS_VERSION && verdict === 'validated' && clauseCoverage !== 'complete')
|
|
535
|
+
return currentFallback;
|
|
214
536
|
if (readRowRobustnessOutcome(row) !== robustness)
|
|
215
|
-
return
|
|
537
|
+
return currentFallback;
|
|
216
538
|
const normalized = {
|
|
217
|
-
version:
|
|
539
|
+
version: block.version,
|
|
218
540
|
verdict,
|
|
219
541
|
originalVerdict,
|
|
220
542
|
...(confidence ? { confidence } : {}),
|
|
221
543
|
confidenceBasis,
|
|
222
544
|
sufficiency,
|
|
223
545
|
robustness,
|
|
546
|
+
...(clauseCoverage ? { clauseCoverage } : {}),
|
|
224
547
|
};
|
|
225
548
|
const priority = asMember(block.priority, HYPOTHESIS_PRIORITIES);
|
|
226
549
|
if (priority)
|
|
227
550
|
normalized.priority = priority;
|
|
228
|
-
return finalAxesAreCoherent(normalized) ? normalized :
|
|
551
|
+
return finalAxesAreCoherent(normalized) ? normalized : currentFallback;
|
|
229
552
|
}
|
|
230
553
|
//# 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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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Display-only predicate. Safe strings retain their exact source bytes; unsafe strings vanish. */
|
|
2
|
+
export const UNSUITABLE_EXCERPT_TERMS = [
|
|
3
|
+
'fuck', 'fucked', 'fucker', 'fucking', 'motherfucker', 'shit', 'shitty', 'bullshit',
|
|
4
|
+
'bitch', 'bastard', 'asshole', 'arsehole', 'cunt', 'dickhead', 'prick', 'twat', 'wanker',
|
|
5
|
+
'dumbass', 'shithead', 'slut', 'whore',
|
|
6
|
+
'idiot', 'moron', 'imbecile', 'retard', 'retarded', 'scumbag', 'blowjob', 'handjob',
|
|
7
|
+
'pornography', 'pornographic', 'nigger', 'nigga', 'chink', 'kike', 'spic', 'faggot',
|
|
8
|
+
];
|
|
9
|
+
export const UNSUITABLE_EXCERPT_PHRASES = [
|
|
10
|
+
'piece of shit', 'go fuck yourself', 'fuck you', 'suck my dick', 'suck my cock', 'anal sex',
|
|
11
|
+
'oral sex', 'kill you', 'kill yourself', 'murder you', 'hurt you', 'beat you', 'shoot you',
|
|
12
|
+
'stab you', 'burn you alive', 'rape you', 'death threat', 'strangle you', 'choke you',
|
|
13
|
+
'slit your throat', 'break your neck', 'worthless loser', 'you are worthless', 'you are useless',
|
|
14
|
+
'you are pathetic', 'piece of garbage', 'piece of trash', 'send nudes', 'explicit nude',
|
|
15
|
+
'nude photo', 'nude photos', 'nude picture', 'nude pictures', 'naked photo', 'naked photos',
|
|
16
|
+
'sex video', 'sex videos', 'sexually explicit',
|
|
17
|
+
];
|
|
18
|
+
const BETWEEN_CHARACTERS = String.raw `[\p{Z}\p{P}\p{S}\p{M}\p{Cc}\p{Cf}\p{Default_Ignorable_Code_Point}_]`;
|
|
19
|
+
function policyFold(value) {
|
|
20
|
+
return value.normalize('NFKC').toLocaleLowerCase('en-US').normalize('NFKD');
|
|
21
|
+
}
|
|
22
|
+
function escapeRegex(value) {
|
|
23
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
24
|
+
}
|
|
25
|
+
function obfuscatedWord(value) {
|
|
26
|
+
return Array.from(policyFold(value)).map(escapeRegex).join(`${BETWEEN_CHARACTERS}*`);
|
|
27
|
+
}
|
|
28
|
+
function obfuscationAwarePattern(value) {
|
|
29
|
+
const words = policyFold(value).trim().split(/\s+/gu).map(obfuscatedWord);
|
|
30
|
+
const body = words.join(`${BETWEEN_CHARACTERS}+`);
|
|
31
|
+
return new RegExp(`(?:^|[^\\p{L}\\p{N}])${body}(?=$|[^\\p{L}\\p{N}])`, 'u');
|
|
32
|
+
}
|
|
33
|
+
const UNSUITABLE_PATTERNS = [
|
|
34
|
+
...UNSUITABLE_EXCERPT_TERMS,
|
|
35
|
+
...UNSUITABLE_EXCERPT_PHRASES,
|
|
36
|
+
].map(obfuscationAwarePattern);
|
|
37
|
+
export function isDisplaySuitableExcerpt(value) {
|
|
38
|
+
if (typeof value !== 'string')
|
|
39
|
+
return false;
|
|
40
|
+
const folded = policyFold(value);
|
|
41
|
+
return folded.trim().length > 0 && !UNSUITABLE_PATTERNS.some((pattern) => pattern.test(folded));
|
|
42
|
+
}
|
|
43
|
+
export function displaySuitableExcerpts(values) {
|
|
44
|
+
return values.filter(isDisplaySuitableExcerpt);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=excerpt-suitability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excerpt-suitability.js","sourceRoot":"","sources":["../../src/lib/excerpt-suitability.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,7 @@ import { ToolError } from './errors.js';
|
|
|
60
60
|
import { formatEngagement } from './engagement-display.js';
|
|
61
61
|
import { canonicalContentType, contentTypeProvenanceLine } from './content-type-display.js';
|
|
62
62
|
import { publicationDateLine } from './publication-date-display.js';
|
|
63
|
+
import { displaySuitableExcerpts } from '../lib/excerpt-suitability.js';
|
|
63
64
|
import { apiCall, categorizeFetchError, } from './research.js';
|
|
64
65
|
import { truncate, collapseWhitespace, safeInline, safeId, firstQuoteWithCount, } from './render-safety.js';
|
|
65
66
|
const COLLECTIONS_FETCH_TIMEOUT_MS = 30_000;
|
|
@@ -782,7 +783,10 @@ export async function listCommunitySignals(input, deps) {
|
|
|
782
783
|
}
|
|
783
784
|
const { project_id: projectId, limit, offset } = parsed.data;
|
|
784
785
|
const { rows, pagination } = await fetchCollection(deps, '/api/community', 'communitySignals', projectId, limit, offset, 'list community signals');
|
|
785
|
-
const signals = rows.map(
|
|
786
|
+
const signals = rows.map((row) => {
|
|
787
|
+
const signal = toCommunitySignalSummary(row);
|
|
788
|
+
return { ...signal, relevantQuotes: displaySuitableExcerpts(signal.relevantQuotes) };
|
|
789
|
+
});
|
|
786
790
|
const total = pagination.total ?? signals.length;
|
|
787
791
|
let text;
|
|
788
792
|
if (signals.length === 0) {
|
|
@@ -843,8 +847,8 @@ export async function listCommunitySignals(input, deps) {
|
|
|
843
847
|
`${lines.join('\n\n')}${moreLine(offset, signals.length, total)}\n\n` +
|
|
844
848
|
// FUL-243: same as `list_competitors` above — `structuredContent` first,
|
|
845
849
|
// `_meta` named only as the mirror.
|
|
846
|
-
'Full records —
|
|
847
|
-
'(also mirrored in `_meta.communitySignals`).';
|
|
850
|
+
'Full records — with unsuitable cached excerpts withheld — are in ' +
|
|
851
|
+
'`structuredContent.communitySignals` (also mirrored in `_meta.communitySignals`).';
|
|
848
852
|
}
|
|
849
853
|
return {
|
|
850
854
|
content: [{ type: 'text', text }],
|