@agenticprimitives/orchestration 0.0.0-alpha.4 → 0.0.0-alpha.6
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/README.md +2 -0
- package/dist/admission.d.ts +50 -10
- package/dist/admission.d.ts.map +1 -1
- package/dist/admission.js +170 -8
- package/dist/admission.js.map +1 -1
- package/dist/answer-quality.d.ts +80 -0
- package/dist/answer-quality.d.ts.map +1 -0
- package/dist/answer-quality.js +97 -0
- package/dist/answer-quality.js.map +1 -0
- package/dist/authority.d.ts +34 -0
- package/dist/authority.d.ts.map +1 -1
- package/dist/conformance.d.ts +66 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +140 -0
- package/dist/conformance.js.map +1 -0
- package/dist/derivation.d.ts +21 -0
- package/dist/derivation.d.ts.map +1 -0
- package/dist/derivation.js +31 -0
- package/dist/derivation.js.map +1 -0
- package/dist/export-port.d.ts +13 -0
- package/dist/export-port.d.ts.map +1 -0
- package/dist/export-port.js +2 -0
- package/dist/export-port.js.map +1 -0
- package/dist/index.d.ts +20 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -4
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +37 -0
- package/dist/intent.d.ts.map +1 -0
- package/dist/intent.js +46 -0
- package/dist/intent.js.map +1 -0
- package/dist/judgment.d.ts +131 -0
- package/dist/judgment.d.ts.map +1 -0
- package/dist/judgment.js +249 -0
- package/dist/judgment.js.map +1 -0
- package/dist/loop.d.ts +44 -7
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +310 -63
- package/dist/loop.js.map +1 -1
- package/dist/metrics.js +8 -8
- package/dist/metrics.js.map +1 -1
- package/dist/outcome.d.ts +223 -0
- package/dist/outcome.d.ts.map +1 -0
- package/dist/outcome.js +325 -0
- package/dist/outcome.js.map +1 -0
- package/dist/plan-digest.d.ts +6 -0
- package/dist/plan-digest.d.ts.map +1 -0
- package/dist/plan-digest.js +35 -0
- package/dist/plan-digest.js.map +1 -0
- package/dist/planner.d.ts +18 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +74 -0
- package/dist/planner.js.map +1 -1
- package/dist/reconcile.d.ts +41 -0
- package/dist/reconcile.d.ts.map +1 -0
- package/dist/reconcile.js +20 -0
- package/dist/reconcile.js.map +1 -0
- package/dist/record.d.ts +98 -21
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +45 -1
- package/dist/record.js.map +1 -1
- package/dist/regression.d.ts +109 -0
- package/dist/regression.d.ts.map +1 -0
- package/dist/regression.js +97 -0
- package/dist/regression.js.map +1 -0
- package/dist/selection.d.ts +334 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +481 -0
- package/dist/selection.js.map +1 -0
- package/dist/spans.d.ts +62 -0
- package/dist/spans.d.ts.map +1 -1
- package/dist/spans.js +78 -11
- package/dist/spans.js.map +1 -1
- package/dist/tool-invoker.d.ts +54 -3
- package/dist/tool-invoker.d.ts.map +1 -1
- package/dist/tool-invoker.js +26 -1
- package/dist/tool-invoker.js.map +1 -1
- package/dist/trace-facts.d.ts +84 -0
- package/dist/trace-facts.d.ts.map +1 -0
- package/dist/trace-facts.js +82 -0
- package/dist/trace-facts.js.map +1 -0
- package/dist/types.d.ts +74 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/package.json +16 -7
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @agenticprimitives/orchestration
|
|
2
2
|
|
|
3
|
+
> Part of **[Agentic Primitives](https://agenticprimitives.dev)** — the open-source trust substrate for agentic applications: identity that can sign, authority checked at act time, evidence the owner carries. [Developer kit](https://github.com/agentictrustlabs/agentic-primitives) · [All packages](https://agenticprimitives.dev/developers)
|
|
4
|
+
|
|
3
5
|
The Ring-0 **agentic orchestration core**: the intent → plan → execute → observe loop, the `Planner` and
|
|
4
6
|
`ToolInvoker` ports, and a deterministic rule-based planner. A first-party app expresses a **goal**; this
|
|
5
7
|
package plans which tools compose to satisfy it and runs them through an injected invoker — the web never
|
package/dist/admission.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Intent, Plan, ToolSpec } from './types.js';
|
|
2
2
|
/** Spec 367 §4 — the violation codes. Each names the field at fault and the recovery it allows. */
|
|
3
|
-
export type AdmissionCode = 'REQUIRED_ROLE_UNRESOLVED' | 'RESOURCE_SCOPE_MISMATCH' | 'CAPABILITY_UNAVAILABLE' | 'UNSUPPORTED_BINDING_SOURCE' | 'DEPENDENCY_NOT_SATISFIED' | 'OUTCOME_NOT_ESTABLISHED' | 'BRANCH_UNDECIDABLE' | 'QUESTION_NOT_ANSWERED' | 'EXTERNAL_EXECUTOR_ACT';
|
|
3
|
+
export type AdmissionCode = 'REQUIRED_ROLE_UNRESOLVED' | 'RESOURCE_SCOPE_MISMATCH' | 'CAPABILITY_UNAVAILABLE' | 'UNSUPPORTED_BINDING_SOURCE' | 'DEPENDENCY_NOT_SATISFIED' | 'OUTCOME_NOT_ESTABLISHED' | 'BRANCH_UNDECIDABLE' | 'QUESTION_NOT_ANSWERED' | 'EXTERNAL_EXECUTOR_ACT' | 'OUTCOME_NOT_ENTAILED' | 'OUTCOME_BOUND_EXCEEDED' | 'OUTCOME_DISCLOSURE';
|
|
4
4
|
export interface AdmissionViolation {
|
|
5
5
|
code: AdmissionCode;
|
|
6
6
|
/** The sentence a planner is re-planned with, and a person is refused with. */
|
|
@@ -10,7 +10,8 @@ export interface AdmissionViolation {
|
|
|
10
10
|
/** The argument or plan field at fault, when there is one. */
|
|
11
11
|
field?: string;
|
|
12
12
|
/** What may fix it: re-plan the means, ask the person, resolve the binding, or refuse. */
|
|
13
|
-
|
|
13
|
+
/** `continue` (spec 421 W1): the plan read what the act needs and stopped — the loop appends `plan.continue` itself. */
|
|
14
|
+
recovery: 'replan' | 'ask' | 'resolve' | 'refuse' | 'continue';
|
|
14
15
|
}
|
|
15
16
|
export type AdmissionVerdict = {
|
|
16
17
|
admitted: true;
|
|
@@ -53,19 +54,58 @@ export declare const dependenciesProvided: AdmissionRule;
|
|
|
53
54
|
* be decided by absence — which is a guess dressed as a condition — and an edge to a later step is a cycle.
|
|
54
55
|
*/
|
|
55
56
|
export declare const branchesDecidable: AdmissionRule;
|
|
56
|
-
/**
|
|
57
|
-
* Spec 371 — THE QUESTION MUST BE ANSWERED BY THE READ THAT ANSWERS IT. A read declares the fact words a
|
|
58
|
-
* question uses to name what it establishes (`answers`: "balance", "how much"). When the sentence names
|
|
59
|
-
* such a fact and an exposed tool answers it, a plan without that tool is answering something else — a
|
|
60
|
-
* survey of receipts for a balance question. The rule reads declarations only, and it says which tool.
|
|
61
|
-
*/
|
|
62
57
|
export declare const questionAnsweredByRead: AdmissionRule;
|
|
63
|
-
/** A step naming a tool this agent does not expose.
|
|
64
|
-
*
|
|
58
|
+
/** A step naming a tool this agent does not expose. Without this rule the loop hard-throws `unknown_tool` and the
|
|
59
|
+
* run dies with a raw error and no recovery. As an admission rule it is a RE-PLAN, not a refusal: a missing
|
|
60
|
+
* capability is exactly what one more planning round — told which tools the agent has — can fix (the model that
|
|
61
|
+
* named `calendar.events.list` on a game persona recovers to a tool it offers, or to an honest "I don't have a
|
|
62
|
+
* calendar"). If the re-plan names an unexposed tool again, the loop's second-admission path makes it terminal
|
|
63
|
+
* with this same sentence. Recovery `refuse` would skip that round and is wrong here — a missing capability is
|
|
64
|
+
* not something no re-plan can fix. */
|
|
65
65
|
export declare const capabilitiesAvailable: AdmissionRule;
|
|
66
66
|
/** A PLACEHOLDER IS NOT AN ARGUMENT. "<UNKNOWN>", "TBD", "n/a" inside a step is a value the person would be
|
|
67
67
|
* asked to sign over. Omit the argument and it is asked for; a placeholder is refused. */
|
|
68
68
|
export declare const noPlaceholders: AdmissionRule;
|
|
69
|
+
/** The numbers a sentence states: digits (1,250.50 · 12.5 · $3) and the plain number words. */
|
|
70
|
+
export declare function numbersSaid(sentence: string): number[];
|
|
71
|
+
/**
|
|
72
|
+
* AN ACT NEVER CARRIES A NUMBER THE PERSON DID NOT SAY. "Pay nathan.treasury back for the hymnals" names no amount; the
|
|
73
|
+
* planner wrote 12.50, and only the balance check stopped a mandate for a sum she never said (act laboratory,
|
|
74
|
+
* 2026-09-28). A numeric argument of an ACT step whose value is not among the sentence's numbers is dropped — and the
|
|
75
|
+
* step then asks for it, as a missing argument always does. Reads are not held to this (a limit on a listing is not
|
|
76
|
+
* something anyone signs). Deterministic: numbers are compared by value, never by a model.
|
|
77
|
+
*/
|
|
78
|
+
export declare const numbersFromTheWords: AdmissionRule;
|
|
79
|
+
/**
|
|
80
|
+
* ONE PARTY IS NOT BOTH SIDES OF AN ACT. "Pay nathan.treasury back for the hymnals" was planned with nathan.treasury as
|
|
81
|
+
* payee AND payer (act laboratory, 2026-09-28) — a mandate for the payee's own authority. The ontology declares each
|
|
82
|
+
* party argument's side (`PARTY_ROLES`: acting · counterparty · context); an acting argument that names the same party as
|
|
83
|
+
* a counterparty argument of the same step came from nowhere the person said. The ACTING one is dropped (recovery `ask`):
|
|
84
|
+
* the declared default then fills it and says why, or the person is asked. `sideOf` is the ontology's, supplied by the app.
|
|
85
|
+
*/
|
|
86
|
+
export declare function partiesDistinct(sideOf: (capability: string, arg: string) => 'acting' | 'counterparty' | 'context' | undefined): AdmissionRule;
|
|
87
|
+
/**
|
|
88
|
+
* THE ACTING PARTY IS THE PERSON'S TO NAME. When she names no paying account the declared default decides it and says why
|
|
89
|
+
* (spec 363); a planner that writes one anyway ("my treasury", the payee itself) replaces that decision with words she
|
|
90
|
+
* never said — and the harness then asks her which treasury she meant by words that were not hers (act laboratory,
|
|
91
|
+
* 2026-09-28). An ACTING argument (the ontology's side, `sideOf`) with no word of its own in the sentence — words inside
|
|
92
|
+
* the counterparty's value do not count, nor filler like "my" — is dropped (recovery `ask`): decided or asked for.
|
|
93
|
+
* An address is left alone (it arrives from a surface or a resolved turn, never from a planner's paraphrase).
|
|
94
|
+
*/
|
|
95
|
+
export declare function actingPartyFromTheWords(sideOf: (capability: string, arg: string) => 'acting' | 'counterparty' | 'context' | undefined): AdmissionRule;
|
|
96
|
+
/**
|
|
97
|
+
* THE KIND THE PERSON NAMED IS THE KIND CHARTERED. Asked to "start a team … under Missio Nexus" where no team tool was
|
|
98
|
+
* offered, the planner chartered an ORGANIZATION (act laboratory, 2026-09-28) — the nearest kind, which the tool's own
|
|
99
|
+
* description forbids in prose. Here it is a rule: `kinds` (the app's chartering capabilities and the words for each —
|
|
100
|
+
* its noun and its name suffix) — a step chartering kind A when the sentence names kind B and never A is re-planned
|
|
101
|
+
* with the reason; if nothing charters B, the plan says so rather than making the nearest thing. Dotted names
|
|
102
|
+
* ("missio-nexus.org") are not words the person used for a kind.
|
|
103
|
+
*/
|
|
104
|
+
export declare function kindNamedIsChartered(kinds: ReadonlyArray<{
|
|
105
|
+
capability: string;
|
|
106
|
+
noun: string;
|
|
107
|
+
words: readonly string[];
|
|
108
|
+
}>): AdmissionRule;
|
|
69
109
|
/**
|
|
70
110
|
* THE SUBJECT THE SENTENCE NAMES MUST BE IN THE STEP. A tool that declares a `subject` argument (spec 366)
|
|
71
111
|
* is answered by the agent that argument names. When the sentence contains the name of an agent the asker
|
package/dist/admission.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
|
package/dist/admission.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CONTINUE_STEP_ID } from './types.js';
|
|
1
2
|
/** Compose rules into the port. Every rule runs; the verdict carries every violation, so a re-plan is
|
|
2
3
|
* told everything at once rather than one thing per round. */
|
|
3
4
|
export function planAdmission(rules) {
|
|
@@ -31,7 +32,13 @@ export function outcomeClassOf(t) {
|
|
|
31
32
|
export const instructionNeedsAct = ({ intent, plan, tools }) => {
|
|
32
33
|
const opening = imperativeOf(intent.goal);
|
|
33
34
|
const acts = tools.filter((t) => t.capability && t.verbs?.length);
|
|
34
|
-
|
|
35
|
+
// "TELL ME about…" / "message me when…" is the person asking HER OWN AGENT, not an instruction to reach someone: the
|
|
36
|
+
// verb's object is the speaker. A question in that form was refused as an unperformed act ("Tell me about the
|
|
37
|
+
// articles in my library" → plan messaging.direct.send — live 2026-09-21). "tell melissa" still claims the verb.
|
|
38
|
+
const selfDirected = (v) => new RegExp(`^${lc(v).replace(/[.*+?^${}()|[\]\\]/g, '\\$&')} (me|us)\\b`).test(opening);
|
|
39
|
+
// A clause may carry the verb too (spec 421): "read my latest message AND REPLY to whoever sent it" instructs a reply.
|
|
40
|
+
const clauses = [opening, ...opening.split(/\s*[—–;:,]\s*|\s+(?:and then|then|and)\s+/).slice(1)];
|
|
41
|
+
const claims = (t) => !!t.verbs?.some((v) => clauses.some((c) => (c === lc(v) || c.startsWith(`${lc(v)} `)) && !new RegExp(`^${lc(v).replace(/[.*+?^${}()|[\]\\]/g, '\\$&')} (me|us)\\b`).test(c)));
|
|
35
42
|
const named = acts.filter(claims);
|
|
36
43
|
if (!named.length)
|
|
37
44
|
return [];
|
|
@@ -47,9 +54,17 @@ export const instructionNeedsAct = ({ intent, plan, tools }) => {
|
|
|
47
54
|
const canDischarge = plan.steps.some((s) => { const t = byId.get(s.toolId); return !!t && outcomeClassOf(t) !== 'lookup'; });
|
|
48
55
|
if (canDischarge)
|
|
49
56
|
return [];
|
|
57
|
+
// Spec 421 W1 — A PLAN THAT READS AND THEN CONTINUES has deferred the act, not skipped it: the act is planned from what
|
|
58
|
+
// the reads return, and that continuation plan is admitted by this same rule before anything in it runs.
|
|
59
|
+
if (plan.steps[plan.steps.length - 1]?.toolId === CONTINUE_STEP_ID)
|
|
60
|
+
return [];
|
|
61
|
+
const canContinue = tools.some((t) => t.id === CONTINUE_STEP_ID);
|
|
62
|
+
// With continuation on and something READ, the plan has gathered what the act needs and stopped short: the recovery is to
|
|
63
|
+
// continue from what it reads (deterministic — the harness does not wait for a model to notice the option).
|
|
64
|
+
const readSomething = plan.steps.some((s) => { const t = byId.get(s.toolId); return !!t && !t.capability; });
|
|
50
65
|
return [{
|
|
51
|
-
code: 'OUTCOME_NOT_ESTABLISHED', recovery: 'replan',
|
|
52
|
-
message: `"${intent.goal}" is an instruction (it opens with ${named.map((t) => `"${t.verbs[0]}"`).join(' / ')}) and every step in the plan only looks something up (${plan.steps.map((s) => s.toolId).join(', ') || 'nothing'}) — a lookup cannot establish that it was done. Plan the capability that performs it — ${named.map((t) => t.id).join(' or ')} — and pass the person's words as its arguments; it resolves who is meant itself
|
|
66
|
+
code: 'OUTCOME_NOT_ESTABLISHED', recovery: canContinue && readSomething ? 'continue' : 'replan',
|
|
67
|
+
message: `"${intent.goal}" is an instruction (it opens with ${named.map((t) => `"${t.verbs[0]}"`).join(' / ')}) and every step in the plan only looks something up (${plan.steps.map((s) => s.toolId).join(', ') || 'nothing'}) — a lookup cannot establish that it was done. Plan the capability that performs it — ${named.map((t) => t.id).join(' or ')} — and pass the person's words as its arguments; it resolves who is meant itself.${canContinue ? ` If its arguments are in something you must read first (a message, a record), plan that read and end the plan with ${CONTINUE_STEP_ID}: you will be shown what it returned and plan the act from it.` : ''}`,
|
|
53
68
|
}];
|
|
54
69
|
};
|
|
55
70
|
/** A step that consumes `{ $ref: name }` must follow a step that provides `ref: name` (spec 367 §4:
|
|
@@ -116,8 +131,46 @@ export const branchesDecidable = ({ plan }) => {
|
|
|
116
131
|
* such a fact and an exposed tool answers it, a plan without that tool is answering something else — a
|
|
117
132
|
* survey of receipts for a balance question. The rule reads declarations only, and it says which tool.
|
|
118
133
|
*/
|
|
134
|
+
/**
|
|
135
|
+
* WHAT SOMEBODY SAID, NOT WHAT WAS ATTACHED TO IT. An ask on the A2A surface carries its material in the
|
|
136
|
+
* same string as its sentence — a card table sends the seat's view, a mystery sends the character's whole
|
|
137
|
+
* night — and this rule strips punctuation before matching, so `"holds":["the register key"]` inside that
|
|
138
|
+
* payload reads exactly like the word "holds" in a question about money.
|
|
139
|
+
*
|
|
140
|
+
* Live, that cost a murder mystery 39% of its moments: `treasury.balance.read` answers "holds", a character
|
|
141
|
+
* carrying a clue has `holds` in her view, and every such ask was refused with "use treasury.balance.read
|
|
142
|
+
* for that" — a balance tool demanded of a woman in mourning in a hotel. The plan was right, the sentence
|
|
143
|
+
* never mentioned money, and `replanning: false` made it terminal, so the character simply went quiet.
|
|
144
|
+
*
|
|
145
|
+
* A tool's `answers` words are how a PERSON names what they want. A serialized object is not something
|
|
146
|
+
* anyone said, so it is removed before the sentence is read.
|
|
147
|
+
*/
|
|
148
|
+
const SENTENCE_ONLY = (goal) => {
|
|
149
|
+
let out = '';
|
|
150
|
+
let depth = 0;
|
|
151
|
+
for (const ch of goal) {
|
|
152
|
+
if (ch === '{' || ch === '[') {
|
|
153
|
+
depth++;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (ch === '}' || ch === ']') {
|
|
157
|
+
if (depth > 0)
|
|
158
|
+
depth--;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (depth === 0)
|
|
162
|
+
out += ch;
|
|
163
|
+
}
|
|
164
|
+
return out;
|
|
165
|
+
};
|
|
119
166
|
export const questionAnsweredByRead = ({ intent, plan, tools }) => {
|
|
120
|
-
|
|
167
|
+
// An INSTRUCTION names the thing it acts on: "add dave to my contacts" names "my contacts" because the contact invite
|
|
168
|
+
// changes them — refusing it for "a survey" (act laboratory, 2026-09-28) turned a valid act into a refusal. The rule
|
|
169
|
+
// guards a QUESTION answered by the wrong read; a plan that ACTS is not answering a question.
|
|
170
|
+
const byId = new Map(tools.map((t) => [t.id, t]));
|
|
171
|
+
if (plan.steps.some((s) => byId.get(s.toolId)?.capability))
|
|
172
|
+
return [];
|
|
173
|
+
const goal = ` ${lc(SENTENCE_ONLY(intent.goal)).replace(/[^a-z0-9]+/g, ' ')} `;
|
|
121
174
|
const out = [];
|
|
122
175
|
const inPlan = new Set(plan.steps.map((s) => s.toolId));
|
|
123
176
|
for (const t of tools) {
|
|
@@ -130,17 +183,123 @@ export const questionAnsweredByRead = ({ intent, plan, tools }) => {
|
|
|
130
183
|
}
|
|
131
184
|
return out;
|
|
132
185
|
};
|
|
133
|
-
/** A step naming a tool this agent does not expose.
|
|
134
|
-
*
|
|
186
|
+
/** A step naming a tool this agent does not expose. Without this rule the loop hard-throws `unknown_tool` and the
|
|
187
|
+
* run dies with a raw error and no recovery. As an admission rule it is a RE-PLAN, not a refusal: a missing
|
|
188
|
+
* capability is exactly what one more planning round — told which tools the agent has — can fix (the model that
|
|
189
|
+
* named `calendar.events.list` on a game persona recovers to a tool it offers, or to an honest "I don't have a
|
|
190
|
+
* calendar"). If the re-plan names an unexposed tool again, the loop's second-admission path makes it terminal
|
|
191
|
+
* with this same sentence. Recovery `refuse` would skip that round and is wrong here — a missing capability is
|
|
192
|
+
* not something no re-plan can fix. */
|
|
135
193
|
export const capabilitiesAvailable = ({ plan, tools }) => {
|
|
136
194
|
const ids = new Set(tools.map((t) => t.id));
|
|
137
|
-
return plan.steps.flatMap((s, i) => ids.has(s.toolId) ? [] : [{ code: 'CAPABILITY_UNAVAILABLE', recovery: '
|
|
195
|
+
return plan.steps.flatMap((s, i) => ids.has(s.toolId) ? [] : [{ code: 'CAPABILITY_UNAVAILABLE', recovery: 'replan', stepIndex: i, toolId: s.toolId, message: `step ${i + 1} names "${s.toolId}", which this agent does not offer — choose among: ${[...ids].join(', ')}.` }]);
|
|
138
196
|
};
|
|
139
197
|
/** A PLACEHOLDER IS NOT AN ARGUMENT. "<UNKNOWN>", "TBD", "n/a" inside a step is a value the person would be
|
|
140
198
|
* asked to sign over. Omit the argument and it is asked for; a placeholder is refused. */
|
|
141
199
|
export const noPlaceholders = ({ plan }) => plan.steps.flatMap((s, i) => Object.entries(s.args)
|
|
142
200
|
.filter(([, v]) => typeof v === 'string' && /^<.*>$|^(unknown|tbd|n\/a|null|undefined|placeholder)$/i.test(v.trim()))
|
|
143
201
|
.map(([k, v]) => ({ code: 'UNSUPPORTED_BINDING_SOURCE', recovery: 'ask', stepIndex: i, toolId: s.toolId, field: k, message: `step ${i + 1} (${s.toolId}) carries a placeholder for "${k}" (${String(v)}); omit an argument the sentence did not give, and it will be asked for.` })));
|
|
202
|
+
const NUMBER_WORDS = { zero: 0, one: 1, a: 1, an: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10, eleven: 11, twelve: 12, fifteen: 15, twenty: 20, thirty: 30, forty: 40, fifty: 50, hundred: 100 };
|
|
203
|
+
/** The numbers a sentence states: digits (1,250.50 · 12.5 · $3) and the plain number words. */
|
|
204
|
+
export function numbersSaid(sentence) {
|
|
205
|
+
const out = [...sentence.replace(/(\d),(\d{3})/g, '$1$2').matchAll(/\d+(?:\.\d+)?/g)].map((m) => Number(m[0]));
|
|
206
|
+
for (const w of lc(sentence).split(/[^a-z]+/))
|
|
207
|
+
if (w in NUMBER_WORDS && w !== 'a' && w !== 'an')
|
|
208
|
+
out.push(NUMBER_WORDS[w]);
|
|
209
|
+
// "a dollar", "an usdc" — one, only where a unit follows.
|
|
210
|
+
if (/\ban?\s+(?:dollar|buck|usdc)\b/i.test(sentence))
|
|
211
|
+
out.push(1);
|
|
212
|
+
return out;
|
|
213
|
+
}
|
|
214
|
+
const NUMERIC = /^\s*\$?\d+(?:\.\d+)?\s*$/;
|
|
215
|
+
/**
|
|
216
|
+
* AN ACT NEVER CARRIES A NUMBER THE PERSON DID NOT SAY. "Pay nathan.treasury back for the hymnals" names no amount; the
|
|
217
|
+
* planner wrote 12.50, and only the balance check stopped a mandate for a sum she never said (act laboratory,
|
|
218
|
+
* 2026-09-28). A numeric argument of an ACT step whose value is not among the sentence's numbers is dropped — and the
|
|
219
|
+
* step then asks for it, as a missing argument always does. Reads are not held to this (a limit on a listing is not
|
|
220
|
+
* something anyone signs). Deterministic: numbers are compared by value, never by a model.
|
|
221
|
+
*/
|
|
222
|
+
export const numbersFromTheWords = ({ intent, plan, tools }) => {
|
|
223
|
+
const byId = new Map(tools.map((t) => [t.id, t]));
|
|
224
|
+
const said = numbersSaid(SENTENCE_ONLY(intent.goal));
|
|
225
|
+
return plan.steps.flatMap((s, i) => (byId.get(s.toolId)?.capability ? Object.entries(s.args) : [])
|
|
226
|
+
.filter(([, v]) => (typeof v === 'number' && Number.isFinite(v)) || (typeof v === 'string' && NUMERIC.test(v)))
|
|
227
|
+
.filter(([, v]) => { const n = Number(String(v).replace(/[$\s]/g, '')); return !said.some((x) => Math.abs(x - n) < 1e-9); })
|
|
228
|
+
.map(([k, v]) => ({ code: 'UNSUPPORTED_BINDING_SOURCE', recovery: 'ask', stepIndex: i, toolId: s.toolId, field: k, message: `step ${i + 1} (${s.toolId}) carries ${k} = ${String(v)}, a number the sentence does not state; omit it and it will be asked for.` })));
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* ONE PARTY IS NOT BOTH SIDES OF AN ACT. "Pay nathan.treasury back for the hymnals" was planned with nathan.treasury as
|
|
232
|
+
* payee AND payer (act laboratory, 2026-09-28) — a mandate for the payee's own authority. The ontology declares each
|
|
233
|
+
* party argument's side (`PARTY_ROLES`: acting · counterparty · context); an acting argument that names the same party as
|
|
234
|
+
* a counterparty argument of the same step came from nowhere the person said. The ACTING one is dropped (recovery `ask`):
|
|
235
|
+
* the declared default then fills it and says why, or the person is asked. `sideOf` is the ontology's, supplied by the app.
|
|
236
|
+
*/
|
|
237
|
+
export function partiesDistinct(sideOf) {
|
|
238
|
+
return ({ plan, tools }) => {
|
|
239
|
+
const byId = new Map(tools.map((t) => [t.id, t]));
|
|
240
|
+
return plan.steps.flatMap((s, i) => {
|
|
241
|
+
const cap = byId.get(s.toolId)?.capability?.id;
|
|
242
|
+
if (!cap)
|
|
243
|
+
return [];
|
|
244
|
+
const named = Object.entries(s.args).filter(([, v]) => typeof v === 'string' && v.trim()).map(([k, v]) => ({ k, v: squash(String(v)), side: sideOf(cap, k) }));
|
|
245
|
+
return named.filter((a) => a.side === 'acting' && named.some((b) => b.side === 'counterparty' && b.v === a.v))
|
|
246
|
+
.map((a) => ({ code: 'UNSUPPORTED_BINDING_SOURCE', recovery: 'ask', stepIndex: i, toolId: s.toolId, field: a.k, message: `step ${i + 1} (${s.toolId}) names the same party as ${a.k} and as its counterparty; the ${a.k} was not said — omit it and it will be decided or asked for.` }));
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
const FILLER = new Set(['my', 'our', 'the', 'a', 'an', 'your', 'his', 'her', 'their', 'from', 'of', 'account', 'me', 'mine']);
|
|
251
|
+
/** Words that name THE ROOM (the agent asked) — a planner writing them for an acting party is not inventing one; the resolver
|
|
252
|
+
* turns them into the room (spec 418 §12 "us"). */
|
|
253
|
+
const ROOM_WORDS = new Set(['us', 'we', 'our', 'ours', 'ourselves', 'self', 'itself', 'this agent', 'the agent', 'this organization', 'this org', 'the organization', 'the org', 'this team', 'the team', 'this household', 'this workspace']);
|
|
254
|
+
const wordsOf = (v) => lc(v).split(/[^a-z0-9]+/).filter((w) => w && !FILLER.has(w));
|
|
255
|
+
/**
|
|
256
|
+
* THE ACTING PARTY IS THE PERSON'S TO NAME. When she names no paying account the declared default decides it and says why
|
|
257
|
+
* (spec 363); a planner that writes one anyway ("my treasury", the payee itself) replaces that decision with words she
|
|
258
|
+
* never said — and the harness then asks her which treasury she meant by words that were not hers (act laboratory,
|
|
259
|
+
* 2026-09-28). An ACTING argument (the ontology's side, `sideOf`) with no word of its own in the sentence — words inside
|
|
260
|
+
* the counterparty's value do not count, nor filler like "my" — is dropped (recovery `ask`): decided or asked for.
|
|
261
|
+
* An address is left alone (it arrives from a surface or a resolved turn, never from a planner's paraphrase).
|
|
262
|
+
*/
|
|
263
|
+
export function actingPartyFromTheWords(sideOf) {
|
|
264
|
+
return ({ intent, plan, tools }) => {
|
|
265
|
+
const byId = new Map(tools.map((t) => [t.id, t]));
|
|
266
|
+
return plan.steps.flatMap((s, i) => {
|
|
267
|
+
const cap = byId.get(s.toolId)?.capability?.id;
|
|
268
|
+
if (!cap)
|
|
269
|
+
return [];
|
|
270
|
+
const strArgs = Object.entries(s.args).filter((e) => typeof e[1] === 'string' && !!e[1].trim());
|
|
271
|
+
let sentence = ` ${lc(SENTENCE_ONLY(intent.goal))} `;
|
|
272
|
+
for (const [k, v] of strArgs)
|
|
273
|
+
if (sideOf(cap, k) === 'counterparty')
|
|
274
|
+
sentence = sentence.split(lc(v)).join(' ');
|
|
275
|
+
const said = new Set(wordsOf(sentence));
|
|
276
|
+
return strArgs.filter(([k, v]) => sideOf(cap, k) === 'acting' && !/^0x[0-9a-f]{40}$/i.test(v.trim()) && !ROOM_WORDS.has(lc(v).trim()) && !wordsOf(v).some((w) => said.has(w)))
|
|
277
|
+
.map(([k, v]) => ({ code: 'UNSUPPORTED_BINDING_SOURCE', recovery: 'ask', stepIndex: i, toolId: s.toolId, field: k, message: `step ${i + 1} (${s.toolId}) names ${k} "${v}", which the sentence does not; omit it and it will be decided or asked for.` }));
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* THE KIND THE PERSON NAMED IS THE KIND CHARTERED. Asked to "start a team … under Missio Nexus" where no team tool was
|
|
283
|
+
* offered, the planner chartered an ORGANIZATION (act laboratory, 2026-09-28) — the nearest kind, which the tool's own
|
|
284
|
+
* description forbids in prose. Here it is a rule: `kinds` (the app's chartering capabilities and the words for each —
|
|
285
|
+
* its noun and its name suffix) — a step chartering kind A when the sentence names kind B and never A is re-planned
|
|
286
|
+
* with the reason; if nothing charters B, the plan says so rather than making the nearest thing. Dotted names
|
|
287
|
+
* ("missio-nexus.org") are not words the person used for a kind.
|
|
288
|
+
*/
|
|
289
|
+
export function kindNamedIsChartered(kinds) {
|
|
290
|
+
const byCap = new Map(kinds.map((k) => [k.capability, k]));
|
|
291
|
+
return ({ intent, plan }) => {
|
|
292
|
+
const sentence = ` ${lc(SENTENCE_ONLY(intent.goal)).replace(/\S+\.[a-z0-9-]+\S*/g, ' ').replace(/[^a-z0-9]+/g, ' ')} `;
|
|
293
|
+
const said = (k) => k.words.some((w) => sentence.includes(` ${lc(w)} `) || sentence.includes(` ${lc(w)}s `));
|
|
294
|
+
return plan.steps.flatMap((s, i) => {
|
|
295
|
+
const mine = byCap.get(s.toolId);
|
|
296
|
+
if (!mine || said(mine))
|
|
297
|
+
return [];
|
|
298
|
+
const named = kinds.filter((k) => k.capability !== mine.capability && said(k));
|
|
299
|
+
return named.length ? [{ code: 'OUTCOME_NOT_ESTABLISHED', recovery: 'replan', stepIndex: i, toolId: s.toolId, message: `the sentence asks for a ${named[0].noun}; ${s.toolId} charters a ${mine.noun}. Use the tool that charters a ${named[0].noun}; if none is offered here, say this agent cannot — never charter the nearest kind.` }] : [];
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
}
|
|
144
303
|
/**
|
|
145
304
|
* THE SUBJECT THE SENTENCE NAMES MUST BE IN THE STEP. A tool that declares a `subject` argument (spec 366)
|
|
146
305
|
* is answered by the agent that argument names. When the sentence contains the name of an agent the asker
|
|
@@ -161,7 +320,10 @@ export function subjectNamedInAsk(knownNames) {
|
|
|
161
320
|
const full = squash(n.name);
|
|
162
321
|
const label = squash(n.name.split('.')[0] ?? '');
|
|
163
322
|
return (full.length >= 4 && goal.includes(full)) || (label.length >= 4 && goal.includes(label));
|
|
164
|
-
})
|
|
323
|
+
})
|
|
324
|
+
// The agent BEING ASKED is the room: an empty subject there already means it ("what is Missio Nexus's balance", asked
|
|
325
|
+
// at missio-nexus.org, was refused for leaving the account empty — 2026-09-28).
|
|
326
|
+
.filter((n) => String(n.agent).toLowerCase() !== String(intent.context?.addressee ?? '').toLowerCase());
|
|
165
327
|
if (!named.length)
|
|
166
328
|
return [];
|
|
167
329
|
return candidates.map(({ s, i, tool }) => ({
|
package/dist/admission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../src/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { StructuredCallLike } from './selection.js';
|
|
2
|
+
export declare const ANSWER_QUALITY_JUDGE: {
|
|
3
|
+
name: string;
|
|
4
|
+
kind: "model";
|
|
5
|
+
};
|
|
6
|
+
/** The rubric: each a statement the judge gives P(true) for. Stable ids — a changed rubric is a new judge name (J5). */
|
|
7
|
+
export declare const ANSWER_QUALITY_RUBRIC: ReadonlyArray<{
|
|
8
|
+
id: string;
|
|
9
|
+
statement: string;
|
|
10
|
+
}>;
|
|
11
|
+
export interface AnswerQualityV1 {
|
|
12
|
+
judge: typeof ANSWER_QUALITY_JUDGE;
|
|
13
|
+
/** P(true) per rubric question. */
|
|
14
|
+
scores: Record<string, number>;
|
|
15
|
+
/** Their mean — the quality number a comparison reads. */
|
|
16
|
+
score: number;
|
|
17
|
+
ms: number;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Judge one answer. The answer is truncated to `maxChars` (the judge reads a bounded state). */
|
|
21
|
+
export declare function judgeAnswerQuality(input: {
|
|
22
|
+
request: string;
|
|
23
|
+
skillCard: string;
|
|
24
|
+
answer: string;
|
|
25
|
+
maxChars?: number;
|
|
26
|
+
}, call: StructuredCallLike): Promise<AnswerQualityV1>;
|
|
27
|
+
export declare const ANSWER_PREFERENCE_JUDGE: {
|
|
28
|
+
name: string;
|
|
29
|
+
kind: "model";
|
|
30
|
+
};
|
|
31
|
+
export interface AnswerPreferenceV1 {
|
|
32
|
+
judge: typeof ANSWER_PREFERENCE_JUDGE;
|
|
33
|
+
preference: Record<string, number>;
|
|
34
|
+
permutations: {
|
|
35
|
+
asked: number;
|
|
36
|
+
answered: number;
|
|
37
|
+
};
|
|
38
|
+
ms: number;
|
|
39
|
+
error?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function judgeAnswerPreference(input: {
|
|
42
|
+
request: string;
|
|
43
|
+
skillCard: string;
|
|
44
|
+
answers: Record<string, string>;
|
|
45
|
+
maxChars?: number;
|
|
46
|
+
}, call: StructuredCallLike): Promise<AnswerPreferenceV1>;
|
|
47
|
+
export declare const OUTCOME_CHECK_JUDGE: {
|
|
48
|
+
name: string;
|
|
49
|
+
kind: "model";
|
|
50
|
+
};
|
|
51
|
+
/** One scoring unit: a single class (`id` = its IRI), or an alternative group (`id` = `alternative:<group>`). */
|
|
52
|
+
export interface OutcomeUnitV1 {
|
|
53
|
+
id: string;
|
|
54
|
+
members: string[];
|
|
55
|
+
requested: number;
|
|
56
|
+
delivered: number;
|
|
57
|
+
counted: boolean;
|
|
58
|
+
required?: true;
|
|
59
|
+
}
|
|
60
|
+
export interface OutcomeCheckV1 {
|
|
61
|
+
judge: typeof OUTCOME_CHECK_JUDGE;
|
|
62
|
+
classes: Record<string, number>;
|
|
63
|
+
requested: Record<string, number>;
|
|
64
|
+
units?: OutcomeUnitV1[];
|
|
65
|
+
score: number;
|
|
66
|
+
ms: number;
|
|
67
|
+
error?: string;
|
|
68
|
+
}
|
|
69
|
+
export declare function judgeOutcomeDelivered(input: {
|
|
70
|
+
request: string;
|
|
71
|
+
answer: string;
|
|
72
|
+
expected: ReadonlyArray<{
|
|
73
|
+
iri: string;
|
|
74
|
+
label: string;
|
|
75
|
+
required?: boolean;
|
|
76
|
+
alternative?: string;
|
|
77
|
+
}>;
|
|
78
|
+
maxChars?: number;
|
|
79
|
+
}, call: StructuredCallLike): Promise<OutcomeCheckV1>;
|
|
80
|
+
//# sourceMappingURL=answer-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-quality.d.ts","sourceRoot":"","sources":["../src/answer-quality.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,oBAAoB;;;CAAiE,CAAC;AAEnG,wHAAwH;AACxH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMlF,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,oBAAoB,CAAC;IACnC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAS7K;AAKD,eAAO,MAAM,uBAAuB;;;CAAoE,CAAC;AACzG,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAE,OAAO,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAEhM,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpM;AAkBD,eAAO,MAAM,mBAAmB;;;CAAgE,CAAC;AACjG,iHAAiH;AACjH,MAAM,WAAW,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE;AACzI,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,OAAO,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAE7M,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAoC/P"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// ANSWER QUALITY, JUDGED — spec 416 §4h. An instruction skill's answer is scored by typed yes-no questions (J9) over one
|
|
2
|
+
// frozen state — the request, the skill's ontology card, the answer — so a faster or cheaper way of answering can be
|
|
3
|
+
// traded against quality with evidence, not taste. Numbers only leave (J7): the per-question probabilities and their
|
|
4
|
+
// mean. Evidence, never authority (J1): nothing reads the score to permit or refuse anything.
|
|
5
|
+
import { judgeQuestions, judgeQuestionsAveraged, structuredCallDecisionModel } from './judgment.js';
|
|
6
|
+
export const ANSWER_QUALITY_JUDGE = { name: 'ap.answer-quality-judge.v1', kind: 'model' };
|
|
7
|
+
/** The rubric: each a statement the judge gives P(true) for. Stable ids — a changed rubric is a new judge name (J5). */
|
|
8
|
+
export const ANSWER_QUALITY_RUBRIC = [
|
|
9
|
+
{ id: 'answers', statement: 'The answer addresses what the request actually asks for, not a neighbouring task.' },
|
|
10
|
+
{ id: 'method', statement: 'The answer follows the skill\'s method and produces what the skill says it produces.' },
|
|
11
|
+
{ id: 'grounded', statement: 'The answer states no specific facts about the organization (names, figures, dates) that the request did not give, or marks each such fact as a placeholder to confirm.' },
|
|
12
|
+
{ id: 'asks', statement: 'Where the request lacks information the skill needs, the answer says what is needed instead of inventing it (true if nothing was missing).' },
|
|
13
|
+
{ id: 'usable', statement: 'A person could act on this answer as it stands, without rewriting it.' },
|
|
14
|
+
];
|
|
15
|
+
/** Judge one answer. The answer is truncated to `maxChars` (the judge reads a bounded state). */
|
|
16
|
+
export async function judgeAnswerQuality(input, call) {
|
|
17
|
+
const t0 = Date.now();
|
|
18
|
+
const max = input.maxChars ?? 8000;
|
|
19
|
+
const answer = input.answer.length > max ? `${input.answer.slice(0, max)}\n…(truncated)` : input.answer;
|
|
20
|
+
const questions = ANSWER_QUALITY_RUBRIC.map((q) => ({ id: q.id, kind: 'yes-no', statement: q.statement }));
|
|
21
|
+
const j = await judgeQuestions(`The skill: ${input.skillCard}\n\nThe request:\n${input.request}\n\nThe answer:\n${answer}`, questions, structuredCallDecisionModel(call, { name: ANSWER_QUALITY_JUDGE.name, stablePrefix: true }));
|
|
22
|
+
const scores = Object.fromEntries(Object.entries(j.answers).map(([id, a]) => [id, Number((a.distribution['true'] ?? 0).toFixed(4))]));
|
|
23
|
+
const vals = Object.values(scores);
|
|
24
|
+
return { judge: ANSWER_QUALITY_JUDGE, scores, score: vals.length ? Number((vals.reduce((a, b) => a + b, 0) / vals.length).toFixed(4)) : 0, ms: Date.now() - t0, ...(j.error !== undefined ? { error: j.error } : {}) };
|
|
25
|
+
}
|
|
26
|
+
// ── PAIRWISE PREFERENCE — a rubric scored in isolation saturates (0.97–1.00 for everything, 2026-09-27); two answers to
|
|
27
|
+
// the same request, judged side by side in BOTH orders under neutral labels and averaged (position bias cancelled), is
|
|
28
|
+
// the comparison that discriminates. Numbers only: P(first better), P(second better), P(no real difference).
|
|
29
|
+
export const ANSWER_PREFERENCE_JUDGE = { name: 'ap.answer-preference-judge.v1', kind: 'model' };
|
|
30
|
+
export async function judgeAnswerPreference(input, call) {
|
|
31
|
+
const t0 = Date.now();
|
|
32
|
+
const max = input.maxChars ?? 6000;
|
|
33
|
+
const cut = (a) => (a.length > max ? `${a.slice(0, max)}\n…(truncated)` : a);
|
|
34
|
+
const q = { id: 'better', kind: 'choice', question: 'Which answer better serves this request under this skill — more correct, more complete, better grounded, more usable?', options: Object.entries(input.answers).map(([id, a]) => ({ id, describe: cut(a).replace(/\s+/g, ' ') })), alsoOutcomes: [{ id: 'tie', describe: 'No real difference in quality.' }] };
|
|
35
|
+
const j = await judgeQuestionsAveraged(`The skill: ${input.skillCard}\n\nThe request:\n${input.request}`, [q], structuredCallDecisionModel(call, { name: ANSWER_PREFERENCE_JUDGE.name }), { permutations: 2 });
|
|
36
|
+
const a = j.answers['better'];
|
|
37
|
+
return { judge: ANSWER_PREFERENCE_JUDGE, preference: a ? { ...a.distribution } : {}, permutations: j.permutations, ms: Date.now() - t0, ...(j.error !== undefined ? { error: j.error } : {}) };
|
|
38
|
+
}
|
|
39
|
+
// ── THE OUTCOME CHECK — spec 418 / gap register A2. Not "was the right skill chosen" but "did the answer DELIVER what the
|
|
40
|
+
// request asked for". The ontology says what each skill PRODUCES; the request says WHICH of those it wants. So one call asks,
|
|
41
|
+
// per candidate class of the terminal skill, "does the request ask for a <class>?" and, per class, "does the answer deliver
|
|
42
|
+
// it — or, where the request lacks the facts it needs, its structure with the missing facts named?". Intermediate artifacts
|
|
43
|
+
// the plan was built on are always required. The score is delivery over the REQUESTED classes (those asked with P ≥ 0.5;
|
|
44
|
+
// the most-asked one when none is). v2 (2026-09-28): v1 required every product, and scored a correct letter of inquiry
|
|
45
|
+
// 0.24 because the drafter also produces proposals, and a structured pipeline with its gaps named ~0.
|
|
46
|
+
// v3 (2026-10-02) — ALTERNATIVE OUTPUTS ARE SCORED ONCE. A skill can produce EITHER one class OR another (the drafter: a
|
|
47
|
+
// Letter of Inquiry or a Grant Proposal, two entries to one application; its body picks one). v2 still asked about each
|
|
48
|
+
// and, when a request read as asking for both, averaged in the one the skill was never meant to write: on chain panels
|
|
49
|
+
// 1–4 (3 repeats, Claude Haiku judging) 51 of 68 grant runs delivered exactly one and lost about a third of the score.
|
|
50
|
+
// The ontology now says which produced classes are alternatives (`alternative`, a group name from the data graph's
|
|
51
|
+
// `skills:alternativeGroup`), and the score counts UNITS: an ungrouped class is its own unit, exactly as in v2; a group
|
|
52
|
+
// is one unit, requested = the most-asked member, delivered = the best-delivered member, required if any member is. The
|
|
53
|
+
// per-class `classes` / `requested` maps keep their shape; `units` says what was scored.
|
|
54
|
+
// Numbers only; evidence, never authority (J1).
|
|
55
|
+
export const OUTCOME_CHECK_JUDGE = { name: 'ap.outcome-check-judge.v3', kind: 'model' };
|
|
56
|
+
export async function judgeOutcomeDelivered(input, call) {
|
|
57
|
+
const t0 = Date.now();
|
|
58
|
+
const max = input.maxChars ?? 9000;
|
|
59
|
+
const answer = input.answer.length > max ? `${input.answer.slice(0, max)}\n…(truncated)` : input.answer;
|
|
60
|
+
const cands = input.expected.slice(0, 8);
|
|
61
|
+
if (!cands.length)
|
|
62
|
+
return { judge: OUTCOME_CHECK_JUDGE, classes: {}, requested: {}, score: 0, ms: 0, error: 'no expected classes' };
|
|
63
|
+
const qs = [
|
|
64
|
+
// Two plain questions per class, never one compound one: a judge reading "X, or else Y" anchored on X and scored a
|
|
65
|
+
// correct template-with-gaps 0.02 (validation, 2026-09-28). Delivered = the higher of the two.
|
|
66
|
+
...cands.map((c, i) => ({ id: `d${i + 1}`, kind: 'yes-no', statement: `The answer contains a complete ${c.label}.` })),
|
|
67
|
+
...cands.map((c, i) => ({ id: `s${i + 1}`, kind: 'yes-no', statement: `The answer lays out a ${c.label}'s full structure, filled in wherever the request gave the facts, and names the facts still needed to finish it.` })),
|
|
68
|
+
...cands.flatMap((c, i) => (c.required ? [] : [{ id: `r${i + 1}`, kind: 'yes-no', statement: `The request asks for a ${c.label}.` }])),
|
|
69
|
+
];
|
|
70
|
+
const j = await judgeQuestions(`The request:\n${input.request}\n\nThe answer:\n${answer}`, qs, structuredCallDecisionModel(call, { name: OUTCOME_CHECK_JUDGE.name, stablePrefix: true }));
|
|
71
|
+
const p = (id) => Number((j.answers[id]?.distribution['true'] ?? 0).toFixed(4));
|
|
72
|
+
const classes = Object.fromEntries(cands.map((c, i) => [c.iri, Math.max(p(`d${i + 1}`), p(`s${i + 1}`))]));
|
|
73
|
+
const requested = Object.fromEntries(cands.map((c, i) => [c.iri, c.required ? 1 : p(`r${i + 1}`)]));
|
|
74
|
+
// Fold each alternative group into ONE unit (v3); an ungrouped class is its own unit, so v2's arithmetic is unchanged.
|
|
75
|
+
const byId = new Map();
|
|
76
|
+
for (const c of cands) {
|
|
77
|
+
const id = c.alternative ? `alternative:${c.alternative}` : c.iri;
|
|
78
|
+
const u = byId.get(id) ?? (byId.set(id, { id, members: [], requested: 0, delivered: 0, counted: false }).get(id));
|
|
79
|
+
u.members.push(c.iri);
|
|
80
|
+
u.requested = Math.max(u.requested, requested[c.iri]);
|
|
81
|
+
u.delivered = Math.max(u.delivered, classes[c.iri]);
|
|
82
|
+
if (c.required)
|
|
83
|
+
u.required = true;
|
|
84
|
+
}
|
|
85
|
+
const units = [...byId.values()];
|
|
86
|
+
let counted = units.filter((u) => u.requested >= 0.5);
|
|
87
|
+
if (!counted.some((u) => !u.required)) {
|
|
88
|
+
const optional = units.filter((u) => !u.required).sort((a, b) => b.requested - a.requested);
|
|
89
|
+
if (optional[0])
|
|
90
|
+
counted = [...counted, optional[0]];
|
|
91
|
+
}
|
|
92
|
+
for (const u of counted)
|
|
93
|
+
u.counted = true;
|
|
94
|
+
const vals = counted.map((u) => u.delivered);
|
|
95
|
+
return { judge: OUTCOME_CHECK_JUDGE, classes, requested, units, score: vals.length ? Number((vals.reduce((a, b) => a + b, 0) / vals.length).toFixed(4)) : 0, ms: Date.now() - t0, ...(j.error !== undefined ? { error: j.error } : {}) };
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=answer-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-quality.js","sourceRoot":"","sources":["../src/answer-quality.ts"],"names":[],"mappings":"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"}
|