@clien-ai/mcp 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +25 -7
- package/dist/hypothesis-semantics.js +230 -0
- package/dist/hypothesis-semantics.js.map +1 -0
- package/dist/tools/hypothesis-final.js +55 -0
- package/dist/tools/hypothesis-final.js.map +1 -0
- package/dist/tools/interview-scripts.js +50 -21
- package/dist/tools/interview-scripts.js.map +1 -1
- package/dist/tools/registry.js +13 -7
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/report-digest.js +116 -28
- package/dist/tools/report-digest.js.map +1 -1
- package/dist/tools/research.js +28 -3
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/scoped-research.js +11 -3
- package/dist/tools/scoped-research.js.map +1 -1
- package/dist/tools/status.js +46 -2
- package/dist/tools/status.js.map +1 -1
- package/dist/types/report.js +141 -9
- package/dist/types/report.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,56 @@ 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.12.0
|
|
17
|
+
|
|
18
|
+
**Hypothesis confidence now means how reliable the final verdict is, not the
|
|
19
|
+
probability that the hypothesis is true.** The report and interview-script
|
|
20
|
+
tools expose the same effective verdict after robustness checks, with separate
|
|
21
|
+
evidence sufficiency and robustness outcomes. This is a minor release because
|
|
22
|
+
the `structuredContent.interviewScripts[].confidence` field changes from a
|
|
23
|
+
number to `low` / `medium` / `high`; integrations reading structured output
|
|
24
|
+
must handle the new categorical shape.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **Interview scripts rank what most needs a real answer.** Product priority,
|
|
29
|
+
lower verdict reliability, and thinner evidence replace the old distance from
|
|
30
|
+
0.5 ordering, which incorrectly treated a model-written score as a posterior
|
|
31
|
+
probability.
|
|
32
|
+
- **Every report-facing MCP reader resolves one final hypothesis result.** A
|
|
33
|
+
robustness downgrade or flip cannot retain contradictory high confidence,
|
|
34
|
+
and malformed robustness output cannot upgrade a result.
|
|
35
|
+
- **Legacy numeric confidence remains explicit and non-comparable.** In
|
|
36
|
+
`list_interview_scripts`, an older app response's 0–1 or 0–100 value moves to
|
|
37
|
+
`legacyConfidence` rather than mixing with the categorical measure. Report
|
|
38
|
+
data keeps that compatibility value at `hypothesisResults[].confidence` and
|
|
39
|
+
treats it as legacy beside `hypothesisResults[].final.confidence`.
|
|
40
|
+
- **Research tools drain every terminal event page before returning.** Full and
|
|
41
|
+
scoped runs no longer stop at the first bounded snapshot when later terminal
|
|
42
|
+
events carry the authoritative outcome.
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- **Final hypothesis semantics in structured report output:** categorical
|
|
47
|
+
verdict reliability, evidence sufficiency, robustness outcome, and preserved
|
|
48
|
+
original/final state for audit.
|
|
49
|
+
- **Literal trust states and denominators.** Successful checks that found
|
|
50
|
+
nothing now say so, while report-prose and digest claim populations are
|
|
51
|
+
labelled separately instead of appearing to contradict one another.
|
|
52
|
+
- **Bounded status-snapshot disclosure.** `clien_research_status` adds
|
|
53
|
+
`_meta.snapshot_truncated` when newer events exist beyond the returned page.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- **Markdown and digest readers no longer disagree with stored or visible
|
|
58
|
+
hypothesis outcomes.** Shared resolution and position-specific escaping keep
|
|
59
|
+
the final verdict coherent without corrupting receipt text.
|
|
60
|
+
- **Failed and cancelled runs surface the latest observed refund status with
|
|
61
|
+
bounded guidance.** Full and scoped research now use the drained terminal
|
|
62
|
+
events for error, refunded-credit, and refund-pending guidance.
|
|
63
|
+
`refund_pending` means the run is refund-eligible but no refund is visible
|
|
64
|
+
yet; it is not a guarantee that a refund will occur.
|
|
65
|
+
|
|
16
66
|
## 0.11.0
|
|
17
67
|
|
|
18
68
|
**A claim grounded on the second excerpt of a discussion now shows the second
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ competitors, and key findings) with a typed
|
|
|
8
8
|
[trust layer](#trust-signals) — per-claim GROUNDED/SPECULATION/NO_RECEIPT
|
|
9
9
|
classifications, source receipts, and robustness survival counts.
|
|
10
10
|
|
|
11
|
-
Alongside it, [
|
|
11
|
+
Alongside it, [the rest of the toolset](#tools) lets an agent read and edit what a project
|
|
12
12
|
already holds — projects, personas, interviews, reports, competitors, and
|
|
13
13
|
community signals — most of them free.
|
|
14
14
|
|
|
@@ -86,7 +86,24 @@ Restart Claude Code. First call triggers OAuth.
|
|
|
86
86
|
{ "name": "...", "sources": [{ "url": "...", "platform": "Hacker News", "quote": "...", "retrievedAt": "..." }] }
|
|
87
87
|
],
|
|
88
88
|
"hypothesisResults": [
|
|
89
|
-
{
|
|
89
|
+
{
|
|
90
|
+
"hypothesisId": "h1",
|
|
91
|
+
// Legacy compatibility fields: preserve, but do not rank or compare them.
|
|
92
|
+
"status": "validated", "confidence": 0.82,
|
|
93
|
+
// The authoritative effective result on current reports.
|
|
94
|
+
"final": {
|
|
95
|
+
"version": 1, "verdict": "validated", "originalVerdict": "validated",
|
|
96
|
+
"confidence": "high", "confidenceBasis": "evidence",
|
|
97
|
+
"sufficiency": "substantial", "robustness": "held", "priority": "high"
|
|
98
|
+
},
|
|
99
|
+
// Raw re-ask detail retained for audit; `final` above owns the effective result.
|
|
100
|
+
"robustness": {
|
|
101
|
+
"originalStatus": "validated", "survived": 1, "total": 1, "flipped": false,
|
|
102
|
+
"variants": [
|
|
103
|
+
{ "framing": "...", "returnedStatus": "validated", "returnedConfidence": 0.84, "agreed": true, "reasoning": "..." }
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
90
107
|
],
|
|
91
108
|
"sycophancySignals": { "lowDiscriminationCount": 0, "totalRejections": 2, "personaSignals": [...], "disagreements": [...] },
|
|
92
109
|
"openQuestions": [
|
|
@@ -184,7 +201,8 @@ a finding is, rather than taking the prose at face value:
|
|
|
184
201
|
| `personas[].sources[].receipts[]` | Present only when **one discussion yielded several excerpts**. Each child is `{ receiptId, excerpt, retrievedAt }`, and `receiptId` is content-addressed from the normalized URL plus the exact excerpt. A claim addressing one shows a second id after `·` on its digest line, and the receipt pool hangs that excerpt off the source's single row on its own `↳` line — read that, not the row's first excerpt, as what the claim was checked against. The source still counts as **one** discussion; several excerpts never inflate the breadth. A `receiptId` that does not resolve under its own source loses the receipt arrow entirely rather than falling back. |
|
|
185
202
|
| `methodology.redditRetrieval` | Present only on runs that recorded it. The frozen, code-stamped outcome of the Reddit community-evidence pass: `completed`, `completed_empty`, `completed_partial`, `failed` or `not_run`, with a bounded reason code and accepted discussion / excerpt counts. **Absent means unrecorded** — not disabled, not empty, not failed. The digest renders a sentence for the four states a reader has to act on and says nothing for `not_run` or unrecorded. |
|
|
186
203
|
| `personas[].qaFlagged` / `insufficientEvidence` / `sourcesFound` | Per-persona quality flags: `qaFlagged` means the persona failed a QA check; `insufficientEvidence` / `sourcesFound` tell you whether a `NO_RECEIPT` reflects a weak claim or just a thin evidence base. |
|
|
187
|
-
| `hypothesisResults[].
|
|
204
|
+
| `hypothesisResults[].final` | The authoritative effective result on current reports: `verdict`, categorical reliability in `confidence`, evidence coverage in `sufficiency`, and the `robustness` outcome. `confidence` may be absent when reliability was withheld; read `confidenceBasis`. Raw top-level `status` and numeric `confidence` are legacy compatibility fields and must not be ranked, trended, or compared with `final.confidence`. |
|
|
205
|
+
| `hypothesisResults[].robustness` | Raw re-ask detail retained for audit, including survival counts. Read `final.verdict` and `final.robustness` for the effective result; never independently promote `downgradedStatus` or the top-level `status`. |
|
|
188
206
|
| `sycophancySignals` | Anti-sycophancy readout: broken-persona flags (`lowDiscrimination`), per-hypothesis disagreement splits, and explicit `totalRejections`. |
|
|
189
207
|
| `openQuestions[]` | What the run did **not** settle. Each row carries the hypothesis and a `status` telling you why it's open — `never_asked`, `nobody_answered`, or `voices_disagreed` — plus `personasAsked`, how many distinct personas it was put to. Deterministically derived, never model-opined. Reaches the result text via the report's own `## Open Questions` section (see above), not via the trust digest; absent on reports from before this field shipped, an empty array means nothing was left open. |
|
|
190
208
|
|
|
@@ -196,7 +214,7 @@ simply omits them. The full Zod schema lives in
|
|
|
196
214
|
|
|
197
215
|
## Tools
|
|
198
216
|
|
|
199
|
-
|
|
217
|
+
`clien_research` is the hero — the recommended default for
|
|
200
218
|
validating an idea end to end. Everything else is either a **free read** for
|
|
201
219
|
orienting on what a project already holds, or a **targeted primitive** for a
|
|
202
220
|
narrow, cheaper probe.
|
|
@@ -267,9 +285,9 @@ name — the aliases exist for callers written before the rename.
|
|
|
267
285
|
| `list_reports` | — | free | Past `clien_research` runs, newest first. Optionally scoped to one `project_id`. |
|
|
268
286
|
| `get_report` | `job_id` | free | A past run's full report + `report_data`, same shape `clien_research` returns. Use this instead of re-running. |
|
|
269
287
|
| `list_competitors` | `project_id` | free | The project's deduped, accumulated competitor set, most-recently-seen first. Each of the four company facts carries a sibling `<fact>Grounding` — key on its `state`. |
|
|
270
|
-
| `list_community_signals` | `project_id` | free | The project's deduped, accumulated thread set, newest-**discovered** first (a stable order — a thread seen again does not move back to page one). Carries the
|
|
288
|
+
| `list_community_signals` | `project_id` | free | The project's deduped, accumulated thread set, newest-**discovered** first (a stable order — a thread seen again does not move back to page one). Carries the cached `relevantQuotes[]` excerpts captured at collection; they are user-voice evidence but are not guaranteed to preserve a speaker's exact words. |
|
|
271
289
|
| `get_market` | `project_id` | free | The project's market snapshot — size, growth trend, key trends, positioning gaps. A **singleton**, not a page: every field was written together by the one run named in `sourceRunId`. No snapshot is reported as "no run has produced market data", never as an empty or unmeasured market. The figures carry no trust state here; read the source run with `get_report` for their claim states. |
|
|
272
|
-
| `list_interview_scripts` | `project_id` | free | The interview scripts a research run wrote for the project — one per hypothesis, ranked
|
|
290
|
+
| `list_interview_scripts` | `project_id` | free | The interview scripts a research run wrote for the project — one per hypothesis, ranked by product priority, then lower verdict reliability, then thinner evidence. Each carries its `hypothesisId`, statement, verdict, questions, categorical `confidence`, `sufficiency`, and `robustness`; older runs expose the retired numeric measure as `legacyConfidence`, which is not comparable with `low` / `medium` / `high`. **Stored output of one run, never generated on read.** Call it before `interview_persona` so the answers anchor to a hypothesis; no scripts is reported as "no run has written any", never as "nothing worth asking". |
|
|
273
291
|
|
|
274
292
|
### Account
|
|
275
293
|
|
|
@@ -325,7 +343,7 @@ same payload as `structuredContent`; see
|
|
|
325
343
|
| `job_id` | UUID | The validation job's ID |
|
|
326
344
|
| `status` | string | Terminal status: `complete`, `failed`, or `cancelled` |
|
|
327
345
|
| `project_id` | UUID \| `null` | The project this run is attached to. Pass back as `project_id` on follow-up runs. |
|
|
328
|
-
| `report_data` | object \| `null`| Structured report framing + findings, including typed `personasSynthesis`, `researchBrief`, `methodology`, safe `interviewHighlights[]`, competitors, hypotheses, and the trust layer — `claims[]`, `personas[].sources[]`, `hypothesisResults[].robustness`, `sycophancySignals`, `openQuestions[]` (see [Trust signals](#trust-signals)) |
|
|
346
|
+
| `report_data` | object \| `null`| Structured report framing + findings, including typed `personasSynthesis`, `researchBrief`, `methodology`, safe `interviewHighlights[]`, competitors, hypotheses, and the trust layer — `claims[]`, `personas[].sources[]`, authoritative `hypothesisResults[].final`, raw `hypothesisResults[].robustness`, `sycophancySignals`, `openQuestions[]` (see [Trust signals](#trust-signals)) |
|
|
329
347
|
| `total_cost_cents` | number | Optional. Total cost of the run, in cents. |
|
|
330
348
|
|
|
331
349
|
---
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure FUL-358 hypothesis semantics for the published MCP package.
|
|
3
|
+
*
|
|
4
|
+
* This module deliberately has no Zod or tool imports. Both the transport projection and the
|
|
5
|
+
* human-readable digest call the same normalizer, so a raw-drift payload cannot be trusted by one
|
|
6
|
+
* exit and rejected by another. The returned object is an allowlist: producer-private or future
|
|
7
|
+
* fields never cross the current contract boundary merely because an enclosing schema is
|
|
8
|
+
* passthrough-compatible.
|
|
9
|
+
*/
|
|
10
|
+
export const VERDICT_STATUSES = ['validated', 'invalidated', 'inconclusive'];
|
|
11
|
+
export const CONFIDENCE_LEVELS = ['low', 'medium', 'high'];
|
|
12
|
+
export const EVIDENCE_SUFFICIENCY_LEVELS = ['none', 'thin', 'moderate', 'substantial'];
|
|
13
|
+
export const ROBUSTNESS_OUTCOMES = ['held', 'flipped', 'not_retested'];
|
|
14
|
+
export const CONFIDENCE_BASES = ['evidence', 'recomputed_after_flip', 'withheld_no_evidence'];
|
|
15
|
+
export const HYPOTHESIS_PRIORITIES = ['high', 'medium', 'low'];
|
|
16
|
+
/** The semantics contract version this MCP build knows how to read. */
|
|
17
|
+
export const HYPOTHESIS_SEMANTICS_VERSION = 1;
|
|
18
|
+
const VERDICT_STRENGTH = {
|
|
19
|
+
validated: 2,
|
|
20
|
+
inconclusive: 1,
|
|
21
|
+
invalidated: 0,
|
|
22
|
+
};
|
|
23
|
+
function asRecord(value) {
|
|
24
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
25
|
+
? value
|
|
26
|
+
: null;
|
|
27
|
+
}
|
|
28
|
+
function asMember(value, members) {
|
|
29
|
+
return typeof value === 'string' && members.includes(value)
|
|
30
|
+
? value
|
|
31
|
+
: null;
|
|
32
|
+
}
|
|
33
|
+
/** The weaker of the original and candidate verdicts; an attempted upgrade is ignored. */
|
|
34
|
+
export function resolveMonotoneVerdict(rawOriginal, rawCandidate) {
|
|
35
|
+
const original = asMember(rawOriginal, VERDICT_STATUSES);
|
|
36
|
+
const candidate = asMember(rawCandidate, VERDICT_STATUSES);
|
|
37
|
+
if (!candidate)
|
|
38
|
+
return original;
|
|
39
|
+
if (!original)
|
|
40
|
+
return candidate;
|
|
41
|
+
return VERDICT_STRENGTH[candidate] < VERDICT_STRENGTH[original] ? candidate : original;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read a rephrasing ratio only when it can describe a real finite count whose `flipped` flag
|
|
45
|
+
* agrees with whether every framing survived. A malformed ratio still cannot erase a separately
|
|
46
|
+
* readable weaker recorded verdict.
|
|
47
|
+
*/
|
|
48
|
+
export function readRobustnessCounts(value) {
|
|
49
|
+
const robustness = asRecord(value);
|
|
50
|
+
if (!robustness)
|
|
51
|
+
return null;
|
|
52
|
+
const survived = robustness.survived;
|
|
53
|
+
const total = robustness.total;
|
|
54
|
+
const flipped = robustness.flipped;
|
|
55
|
+
if (typeof survived !== 'number' ||
|
|
56
|
+
!Number.isInteger(survived) ||
|
|
57
|
+
survived < 0 ||
|
|
58
|
+
typeof total !== 'number' ||
|
|
59
|
+
!Number.isInteger(total) ||
|
|
60
|
+
total <= 0 ||
|
|
61
|
+
survived > total ||
|
|
62
|
+
typeof flipped !== 'boolean' ||
|
|
63
|
+
flipped !== (survived < total)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return { survived, total };
|
|
67
|
+
}
|
|
68
|
+
/** A typed robustness block is trustworthy only when its detailed working proves its summary. */
|
|
69
|
+
export function hasCoherentRobustnessWorking(value) {
|
|
70
|
+
const robustness = asRecord(value);
|
|
71
|
+
const counts = readRobustnessCounts(robustness);
|
|
72
|
+
const originalStatus = asMember(robustness?.originalStatus, VERDICT_STATUSES);
|
|
73
|
+
const variants = robustness?.variants;
|
|
74
|
+
if (!robustness || !counts || !originalStatus || !Array.isArray(variants))
|
|
75
|
+
return false;
|
|
76
|
+
if (variants.length !== counts.total)
|
|
77
|
+
return false;
|
|
78
|
+
let agreedCount = 0;
|
|
79
|
+
for (const raw of variants) {
|
|
80
|
+
const variant = asRecord(raw);
|
|
81
|
+
const returnedStatus = asMember(variant?.returnedStatus, VERDICT_STATUSES);
|
|
82
|
+
if (!variant || !returnedStatus || typeof variant.agreed !== 'boolean')
|
|
83
|
+
return false;
|
|
84
|
+
if (variant.agreed !== (returnedStatus === originalStatus))
|
|
85
|
+
return false;
|
|
86
|
+
if (variant.agreed)
|
|
87
|
+
agreedCount += 1;
|
|
88
|
+
}
|
|
89
|
+
return agreedCount === counts.survived;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Whether present working positively disproves its own summary. Absent working and individually
|
|
93
|
+
* unreadable variant rows do not by themselves disprove a separately valid count. A present
|
|
94
|
+
* non-array `variants` container does: it is an attempted shape that cannot authenticate dependent
|
|
95
|
+
* final semantics or cross the raw projection boundary.
|
|
96
|
+
*/
|
|
97
|
+
export function robustnessWorkingContradictsSummary(value) {
|
|
98
|
+
const robustness = asRecord(value);
|
|
99
|
+
if (!robustness)
|
|
100
|
+
return false;
|
|
101
|
+
const counts = readRobustnessCounts(robustness);
|
|
102
|
+
const originalStatus = asMember(robustness.originalStatus, VERDICT_STATUSES);
|
|
103
|
+
const variants = robustness.variants;
|
|
104
|
+
if (!Object.prototype.hasOwnProperty.call(robustness, 'variants'))
|
|
105
|
+
return false;
|
|
106
|
+
if (!Array.isArray(variants))
|
|
107
|
+
return true;
|
|
108
|
+
if (!originalStatus)
|
|
109
|
+
return true;
|
|
110
|
+
let readableCount = 0;
|
|
111
|
+
let agreedCount = 0;
|
|
112
|
+
let disagreedCount = 0;
|
|
113
|
+
for (const raw of variants) {
|
|
114
|
+
const variant = asRecord(raw);
|
|
115
|
+
const returnedStatus = asMember(variant?.returnedStatus, VERDICT_STATUSES);
|
|
116
|
+
if (!variant || !returnedStatus || typeof variant.agreed !== 'boolean')
|
|
117
|
+
continue;
|
|
118
|
+
readableCount += 1;
|
|
119
|
+
if (variant.agreed !== (returnedStatus === originalStatus))
|
|
120
|
+
return true;
|
|
121
|
+
if (variant.agreed)
|
|
122
|
+
agreedCount += 1;
|
|
123
|
+
else
|
|
124
|
+
disagreedCount += 1;
|
|
125
|
+
}
|
|
126
|
+
if (!counts)
|
|
127
|
+
return false;
|
|
128
|
+
if (variants.length > counts.total)
|
|
129
|
+
return true;
|
|
130
|
+
if (agreedCount > counts.survived || disagreedCount > counts.total - counts.survived)
|
|
131
|
+
return true;
|
|
132
|
+
return (readableCount === variants.length &&
|
|
133
|
+
variants.length === counts.total &&
|
|
134
|
+
agreedCount !== counts.survived);
|
|
135
|
+
}
|
|
136
|
+
/** Read robustness in the context of its owning row, including parent-verdict coherence. */
|
|
137
|
+
export function readRowRobustnessOutcome(rawRow) {
|
|
138
|
+
const row = asRecord(rawRow);
|
|
139
|
+
if (!row)
|
|
140
|
+
return null;
|
|
141
|
+
if (row.robustness === undefined || row.robustness === null)
|
|
142
|
+
return 'not_retested';
|
|
143
|
+
const robustness = asRecord(row.robustness);
|
|
144
|
+
if (!robustness || !readRobustnessCounts(robustness))
|
|
145
|
+
return null;
|
|
146
|
+
const rowStatus = asMember(row.status, VERDICT_STATUSES);
|
|
147
|
+
if (!rowStatus)
|
|
148
|
+
return null;
|
|
149
|
+
if (Object.prototype.hasOwnProperty.call(robustness, 'originalStatus') &&
|
|
150
|
+
asMember(robustness.originalStatus, VERDICT_STATUSES) !== rowStatus)
|
|
151
|
+
return null;
|
|
152
|
+
if (Object.prototype.hasOwnProperty.call(robustness, 'variants') &&
|
|
153
|
+
robustnessWorkingContradictsSummary(robustness))
|
|
154
|
+
return null;
|
|
155
|
+
return robustness.flipped ? 'flipped' : 'held';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Read a legacy robustness outcome without treating a contradicted measurement as truth.
|
|
159
|
+
* Old rows may carry only `flipped`; once either count is present, the whole measured triple
|
|
160
|
+
* must agree before its outcome can be rendered.
|
|
161
|
+
*/
|
|
162
|
+
export function readLegacyRobustnessOutcome(value) {
|
|
163
|
+
if (value === undefined || value === null)
|
|
164
|
+
return 'not_retested';
|
|
165
|
+
const robustness = asRecord(value);
|
|
166
|
+
if (!robustness || typeof robustness.flipped !== 'boolean')
|
|
167
|
+
return null;
|
|
168
|
+
const carriesMeasuredCounts = Object.prototype.hasOwnProperty.call(robustness, 'survived') ||
|
|
169
|
+
Object.prototype.hasOwnProperty.call(robustness, 'total');
|
|
170
|
+
if (carriesMeasuredCounts && readRobustnessCounts(robustness) === null)
|
|
171
|
+
return null;
|
|
172
|
+
return robustness.flipped ? 'flipped' : 'held';
|
|
173
|
+
}
|
|
174
|
+
function finalAxesAreCoherent(final) {
|
|
175
|
+
const confidence = final.confidence ?? null;
|
|
176
|
+
if (final.confidenceBasis === 'withheld_no_evidence') {
|
|
177
|
+
return confidence === null && final.sufficiency === 'none';
|
|
178
|
+
}
|
|
179
|
+
if (final.confidenceBasis === 'recomputed_after_flip') {
|
|
180
|
+
return confidence === 'low' && final.sufficiency !== 'none' && final.robustness === 'flipped';
|
|
181
|
+
}
|
|
182
|
+
return confidence !== null && final.sufficiency !== 'none' && final.robustness !== 'flipped';
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Authenticate and normalize a producer-owned `final` block against its raw row.
|
|
186
|
+
*
|
|
187
|
+
* A readable row status is mandatory: it is the original verdict the code-derived block claims
|
|
188
|
+
* to reconcile. The final robustness outcome must also agree with the raw pass (or its absence),
|
|
189
|
+
* otherwise a stale pre-flip reliability block could caption a flipped row. Optional priority
|
|
190
|
+
* degrades field-locally; every unknown key is removed from the returned current-version block.
|
|
191
|
+
*/
|
|
192
|
+
export function normalizeFinalHypothesisState(rawRow) {
|
|
193
|
+
const row = asRecord(rawRow);
|
|
194
|
+
const block = asRecord(row?.final);
|
|
195
|
+
if (!row || !block || block.version !== HYPOTHESIS_SEMANTICS_VERSION)
|
|
196
|
+
return null;
|
|
197
|
+
const rowVerdict = asMember(row.status, VERDICT_STATUSES);
|
|
198
|
+
const originalVerdict = asMember(block.originalVerdict, VERDICT_STATUSES);
|
|
199
|
+
const verdict = asMember(block.verdict, VERDICT_STATUSES);
|
|
200
|
+
if (!rowVerdict || originalVerdict !== rowVerdict || !verdict)
|
|
201
|
+
return null;
|
|
202
|
+
const rawRobustness = asRecord(row.robustness);
|
|
203
|
+
const weakestRecorded = resolveMonotoneVerdict(rowVerdict, rawRobustness?.downgradedStatus);
|
|
204
|
+
if (resolveMonotoneVerdict(weakestRecorded, verdict) !== verdict)
|
|
205
|
+
return null;
|
|
206
|
+
const confidence = asMember(block.confidence, CONFIDENCE_LEVELS);
|
|
207
|
+
if (block.confidence !== undefined && confidence === null)
|
|
208
|
+
return null;
|
|
209
|
+
const confidenceBasis = asMember(block.confidenceBasis, CONFIDENCE_BASES);
|
|
210
|
+
const sufficiency = asMember(block.sufficiency, EVIDENCE_SUFFICIENCY_LEVELS);
|
|
211
|
+
const robustness = asMember(block.robustness, ROBUSTNESS_OUTCOMES);
|
|
212
|
+
if (!confidenceBasis || !sufficiency || !robustness)
|
|
213
|
+
return null;
|
|
214
|
+
if (readRowRobustnessOutcome(row) !== robustness)
|
|
215
|
+
return null;
|
|
216
|
+
const normalized = {
|
|
217
|
+
version: HYPOTHESIS_SEMANTICS_VERSION,
|
|
218
|
+
verdict,
|
|
219
|
+
originalVerdict,
|
|
220
|
+
...(confidence ? { confidence } : {}),
|
|
221
|
+
confidenceBasis,
|
|
222
|
+
sufficiency,
|
|
223
|
+
robustness,
|
|
224
|
+
};
|
|
225
|
+
const priority = asMember(block.priority, HYPOTHESIS_PRIORITIES);
|
|
226
|
+
if (priority)
|
|
227
|
+
normalized.priority = priority;
|
|
228
|
+
return finalAxesAreCoherent(normalized) ? normalized : null;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=hypothesis-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hypothesis-semantics.js","sourceRoot":"","sources":["../src/hypothesis-semantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defensive reader for the versioned FUL-358 hypothesis result.
|
|
3
|
+
*
|
|
4
|
+
* The MCP package cannot import the app or agent resolver, so this is its local mirror of the
|
|
5
|
+
* same contract: recognise only the semantics version this build understands, preserve every
|
|
6
|
+
* legacy number verbatim, and never let either a `final.verdict` or a raw robustness downgrade
|
|
7
|
+
* strengthen the hypothesis's original status.
|
|
8
|
+
*/
|
|
9
|
+
import { VERDICT_STATUSES, } from '../types/report.js';
|
|
10
|
+
import { readRowRobustnessOutcome, normalizeFinalHypothesisState, resolveMonotoneVerdict, } from '../hypothesis-semantics.js';
|
|
11
|
+
function asRecord(value) {
|
|
12
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
13
|
+
? value
|
|
14
|
+
: null;
|
|
15
|
+
}
|
|
16
|
+
function asMember(value, members) {
|
|
17
|
+
return typeof value === 'string' && members.includes(value)
|
|
18
|
+
? value
|
|
19
|
+
: null;
|
|
20
|
+
}
|
|
21
|
+
export { resolveMonotoneVerdict } from '../hypothesis-semantics.js';
|
|
22
|
+
/** Read one raw `hypothesisResults[]` row without assuming its Zod parse succeeded. */
|
|
23
|
+
export function readFinalHypothesisState(rawHypothesis) {
|
|
24
|
+
const row = asRecord(rawHypothesis) ?? {};
|
|
25
|
+
const originalVerdict = asMember(row.status, VERDICT_STATUSES);
|
|
26
|
+
const legacyConfidence = typeof row.confidence === 'number' && Number.isFinite(row.confidence)
|
|
27
|
+
? row.confidence
|
|
28
|
+
: null;
|
|
29
|
+
const robustness = asRecord(row.robustness);
|
|
30
|
+
const weakestRecordedVerdict = resolveMonotoneVerdict(originalVerdict, robustness?.downgradedStatus);
|
|
31
|
+
const final = normalizeFinalHypothesisState(row);
|
|
32
|
+
if (final) {
|
|
33
|
+
return {
|
|
34
|
+
verdict: final.verdict,
|
|
35
|
+
originalVerdict: final.originalVerdict,
|
|
36
|
+
confidence: final.confidence ?? null,
|
|
37
|
+
confidenceBasis: final.confidenceBasis,
|
|
38
|
+
sufficiency: final.sufficiency,
|
|
39
|
+
robustness: final.robustness,
|
|
40
|
+
legacyConfidence,
|
|
41
|
+
fromContract: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
verdict: weakestRecordedVerdict,
|
|
46
|
+
originalVerdict,
|
|
47
|
+
confidence: null,
|
|
48
|
+
confidenceBasis: null,
|
|
49
|
+
sufficiency: null,
|
|
50
|
+
robustness: readRowRobustnessOutcome(row),
|
|
51
|
+
legacyConfidence,
|
|
52
|
+
fromContract: false,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=hypothesis-final.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hypothesis-final.js","sourceRoot":"","sources":["../../src/tools/hypothesis-final.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,GAMjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AAanC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,QAAQ,CAAmB,KAAc,EAAE,OAAqB;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChF,CAAC,CAAE,KAAW;QACd,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,aAAsB;IAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACzC,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC9D,MAAM,gBAAgB,GACpB,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QACnE,CAAC,CAAC,GAAG,CAAC,UAAU;QAChB,CAAC,CAAC,IAAI,CAAA;IACV,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,sBAAsB,GAAG,sBAAsB,CACnD,eAAe,EACf,UAAU,EAAE,gBAAgB,CAC7B,CAAA;IAED,MAAM,KAAK,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAA;IAChD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,gBAAgB;YAChB,YAAY,EAAE,IAAI;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,sBAAsB;QAC/B,eAAe;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,wBAAwB,CAAC,GAAG,CAAC;QACzC,gBAAgB;QAChB,YAAY,EAAE,KAAK;KACpB,CAAA;AACH,CAAC"}
|
|
@@ -33,7 +33,9 @@
|
|
|
33
33
|
*
|
|
34
34
|
* ⚠️ RANKING AND SELECTION ARE THE SERVER'S. Which run owns a project's scripts
|
|
35
35
|
* (`latestScriptedRunQuery` — newest non-scoped run that actually wrote an array)
|
|
36
|
-
* and what order they come in (`buildRankedScripts` — least-
|
|
36
|
+
* and what order they come in (`buildRankedScripts` — priority, then least-reliable verdict,
|
|
37
|
+
* then thinnest evidence: FUL-358 retired the old `|confidence − 0.5|` ordering, which read a
|
|
38
|
+
* model-written number as a posterior probability it was never written as)
|
|
37
39
|
* are decided once, app-side, by the same functions the web screen renders from.
|
|
38
40
|
* Re-sorting here is what would let the two surfaces disagree about which
|
|
39
41
|
* hypothesis is most worth a real answer.
|
|
@@ -55,7 +57,8 @@ export const ListInterviewScriptsInputSchema = z.object({
|
|
|
55
57
|
.describe('UUID of the project whose interview scripts to read. Get it from ' +
|
|
56
58
|
'`list_projects` (or `create_project`). Rejected with a 404 if you do not own the ' +
|
|
57
59
|
'project. Returns the STORED OUTPUT OF ONE SPECIFIC RESEARCH RUN — the scripts that ' +
|
|
58
|
-
'run wrote when it ran, one per hypothesis, ranked
|
|
60
|
+
'run wrote when it ran, one per hypothesis, ranked by what most needs a real answer — ' +
|
|
61
|
+
'not a live ' +
|
|
59
62
|
'suggestion and not something generated when you call this. The run is named in the ' +
|
|
60
63
|
'result; pass its id to `get_report` for the hypotheses behind the questions. A ' +
|
|
61
64
|
'project can legitimately have NO scripts; that is reported as "no run has written ' +
|
|
@@ -64,26 +67,39 @@ export const ListInterviewScriptsInputSchema = z.object({
|
|
|
64
67
|
function asText(value) {
|
|
65
68
|
return typeof value === 'string' && value.trim().length > 0 ? value : null;
|
|
66
69
|
}
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
*
|
|
70
|
-
* Out-of-range and non-finite numbers become null rather than being printed. The
|
|
71
|
-
* app drops them for the same reason at its own render seam: a percentage derived
|
|
72
|
-
* from 999 reads as a measurement, and this tool has no way to caption it as
|
|
73
|
-
* nonsense in the one line it gets.
|
|
74
|
-
*/
|
|
75
|
-
function asFraction(value) {
|
|
70
|
+
/** A historical stored confidence on either legacy scale (0–1 or 0–100), verbatim. */
|
|
71
|
+
function asStoredConfidence(value) {
|
|
76
72
|
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
77
73
|
return null;
|
|
78
|
-
return value >= 0 && value <=
|
|
74
|
+
return value >= 0 && value <= 100 ? value : null;
|
|
75
|
+
}
|
|
76
|
+
/** Display a historical stored confidence without changing which legacy scale it used. */
|
|
77
|
+
function legacyConfidencePercent(value) {
|
|
78
|
+
return Math.round(value <= 1 ? value * 100 : value);
|
|
79
|
+
}
|
|
80
|
+
/** A value from a closed set, or null. Closed enums cannot forge a line and need no escaping. */
|
|
81
|
+
function asEnum(value, members) {
|
|
82
|
+
return typeof value === 'string' && members.includes(value)
|
|
83
|
+
? value
|
|
84
|
+
: null;
|
|
79
85
|
}
|
|
86
|
+
const CONFIDENCE_LEVELS = ['low', 'medium', 'high'];
|
|
87
|
+
const SUFFICIENCY_LEVELS = ['none', 'thin', 'moderate', 'substantial'];
|
|
88
|
+
const ROBUSTNESS_OUTCOMES = ['held', 'flipped', 'not_retested'];
|
|
80
89
|
export function toInterviewScriptEntry(row) {
|
|
81
90
|
return {
|
|
82
91
|
hypothesisId: asText(row.hypothesisId),
|
|
83
92
|
statement: asText(row.statement),
|
|
84
93
|
status: asText(row.status),
|
|
85
94
|
verdictLabel: asText(row.verdictLabel),
|
|
86
|
-
confidence:
|
|
95
|
+
confidence: asEnum(row.confidence, CONFIDENCE_LEVELS),
|
|
96
|
+
sufficiency: asEnum(row.sufficiency, SUFFICIENCY_LEVELS),
|
|
97
|
+
robustness: asEnum(row.robustness, ROBUSTNESS_OUTCOMES),
|
|
98
|
+
// ⚠️ TWO SOURCES, one field. A current app deploy sends the retired number under
|
|
99
|
+
// `legacyConfidence`; an OLDER one still sends it as a number under `confidence`. This
|
|
100
|
+
// client ships on its own npm cadence and routinely meets both, so it accepts either and
|
|
101
|
+
// never prints a number under the new vocabulary's key.
|
|
102
|
+
legacyConfidence: asStoredConfidence(row.legacyConfidence) ?? asStoredConfidence(row.confidence),
|
|
87
103
|
whoToAsk: asText(row.whoToAsk),
|
|
88
104
|
// A drifted null (or a string where an array belongs) costs the questions,
|
|
89
105
|
// never the script: the hypothesis it names is still worth reporting.
|
|
@@ -231,18 +247,31 @@ const LINKAGE_LINE = 'LINKAGE: each script names the `hypothesisId` it was writt
|
|
|
231
247
|
* states live in the source run's claim spine, which this separately released
|
|
232
248
|
* client cannot reconstruct.
|
|
233
249
|
*/
|
|
234
|
-
const SCRIPTS_TRUST_LINE = 'TRUST: the verdict
|
|
235
|
-
'
|
|
236
|
-
'
|
|
237
|
-
'
|
|
250
|
+
const SCRIPTS_TRUST_LINE = 'TRUST: the verdict on each script is the source run\'s reading of that hypothesis, not a ' +
|
|
251
|
+
'graded claim. Nothing here carries a GROUNDED / SPECULATION / NO_RECEIPT state — read the ' +
|
|
252
|
+
'source run with `get_report` for those. `confidence in this verdict` is low/medium/high and ' +
|
|
253
|
+
'says how RELIABLE that reading is — how much evidence sits behind it and whether it survived ' +
|
|
254
|
+
'being re-asked in different words. It is NEVER the probability the hypothesis is true, and a ' +
|
|
255
|
+
'high value is a reason to ask a different question, never a reason to skip asking.';
|
|
238
256
|
const CHANNEL_NOTE = 'The full record is in `structuredContent.interviewScripts` (also mirrored in `_meta`).';
|
|
239
257
|
/** `Weak signal (inconclusive), confidence 52%` — or the honest partial forms. */
|
|
240
258
|
function verdictClause(script) {
|
|
241
259
|
const label = safeInline(script.verdictLabel, VERDICT_MAX);
|
|
242
260
|
const status = safeInline(script.status, VERDICT_MAX);
|
|
243
|
-
const confidence = script.confidence === null ? null : `confidence ${Math.round(script.confidence * 100)}%`;
|
|
244
261
|
const verdict = label && status ? `${label} (${status})` : label ?? status ?? 'verdict not recorded';
|
|
245
|
-
|
|
262
|
+
// FUL-358 — the reliability WORD, never a percentage. A legacy run keeps the number it
|
|
263
|
+
// actually recorded, explicitly labelled: dropping it would remove information the run has,
|
|
264
|
+
// and printing it bare beside `low`/`medium`/`high` rows would invite an agent to compare two
|
|
265
|
+
// measures that were never on one scale. Both come from closed sets or a bounded number, so
|
|
266
|
+
// neither can forge a line.
|
|
267
|
+
const reliability = script.confidence !== null
|
|
268
|
+
? `confidence in this verdict: ${script.confidence}`
|
|
269
|
+
: script.legacyConfidence !== null
|
|
270
|
+
? `legacy confidence ${legacyConfidencePercent(script.legacyConfidence)}% (retired stored 0–1/0–100 measure, NOT comparable with low/medium/high)`
|
|
271
|
+
: 'confidence not recorded';
|
|
272
|
+
const coverage = script.sufficiency ? `, evidence ${script.sufficiency}` : '';
|
|
273
|
+
const retested = script.robustness === 'not_retested' ? ', NOT re-tested under rephrasing' : '';
|
|
274
|
+
return `${verdict}, ${reliability}${coverage}${retested}`;
|
|
246
275
|
}
|
|
247
276
|
/** The question list for one script, capped and — when capped — saying so. */
|
|
248
277
|
function questionBlock(questions) {
|
|
@@ -344,8 +373,8 @@ export async function listInterviewScripts(input, deps) {
|
|
|
344
373
|
`${runId ? ` from research run ${runId}` : ''}${when ? ` (recorded ${when})` : ''}.\n\n` +
|
|
345
374
|
'These are the STORED output of that run, written when it ran. Nothing was generated to ' +
|
|
346
375
|
'answer this call.\n\n' +
|
|
347
|
-
'RANKED
|
|
348
|
-
'
|
|
376
|
+
'RANKED by what most needs a real answer: product priority first, then the least ' +
|
|
377
|
+
'reliable verdicts, then the thinnest evidence. That order is the run\'s, not this ' +
|
|
349
378
|
'client\'s.\n\n' +
|
|
350
379
|
shown.map((script, i) => renderScript(script, i + 1)).join('\n\n') +
|
|
351
380
|
capNote +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interview-scripts.js","sourceRoot":"","sources":["../../src/tools/interview-scripts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interview-scripts.js","sourceRoot":"","sources":["../../src/tools/interview-scripts.ts"],"names":[],"mappings":"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"}
|