kiokuko-dsh 0.1.76 → 0.1.78
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/PERMISSIONS.md +8 -0
- package/README.ja.md +1 -0
- package/dist/client.cjs +418 -0
- package/dist/client.d.ts +9 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/diff-review/analyzer.d.ts +15 -0
- package/dist/diff-review/analyzer.d.ts.map +1 -0
- package/dist/diff-review/analyzer.js +180 -0
- package/dist/diff-review/analyzer.js.map +1 -0
- package/dist/diff-review/controller.d.ts +66 -0
- package/dist/diff-review/controller.d.ts.map +1 -0
- package/dist/diff-review/controller.js +264 -0
- package/dist/diff-review/controller.js.map +1 -0
- package/dist/diff-review/current-git-source.d.ts +77 -0
- package/dist/diff-review/current-git-source.d.ts.map +1 -0
- package/dist/diff-review/current-git-source.js +300 -0
- package/dist/diff-review/current-git-source.js.map +1 -0
- package/dist/diff-review/markdown.d.ts +3 -0
- package/dist/diff-review/markdown.d.ts.map +1 -0
- package/dist/diff-review/markdown.js +48 -0
- package/dist/diff-review/markdown.js.map +1 -0
- package/dist/diff-review/native-turn-source.d.ts +38 -0
- package/dist/diff-review/native-turn-source.d.ts.map +1 -0
- package/dist/diff-review/native-turn-source.js +43 -0
- package/dist/diff-review/native-turn-source.js.map +1 -0
- package/dist/diff-review/redaction.d.ts +5 -0
- package/dist/diff-review/redaction.d.ts.map +1 -0
- package/dist/diff-review/redaction.js +26 -0
- package/dist/diff-review/redaction.js.map +1 -0
- package/dist/diff-review/schema.d.ts +191 -0
- package/dist/diff-review/schema.d.ts.map +1 -0
- package/dist/diff-review/schema.js +45 -0
- package/dist/diff-review/schema.js.map +1 -0
- package/dist/dsh/answer-review/evidence.d.ts +24 -2
- package/dist/dsh/answer-review/evidence.d.ts.map +1 -1
- package/dist/dsh/composition.d.ts +2 -0
- package/dist/dsh/composition.d.ts.map +1 -1
- package/dist/dsh/composition.js +3 -0
- package/dist/dsh/composition.js.map +1 -1
- package/dist/dsh/config.d.ts +43 -0
- package/dist/dsh/config.d.ts.map +1 -1
- package/dist/dsh/config.js +14 -0
- package/dist/dsh/config.js.map +1 -1
- package/dist/dsh/core/host.d.ts +16 -0
- package/dist/dsh/core/host.d.ts.map +1 -1
- package/dist/dsh/core/index.d.ts +33 -1
- package/dist/dsh/core/index.d.ts.map +1 -1
- package/dist/dsh/decisions/config.d.ts +16 -0
- package/dist/dsh/decisions/config.d.ts.map +1 -1
- package/dist/dsh/decisions/config.js +10 -0
- package/dist/dsh/decisions/config.js.map +1 -1
- package/dist/dsh/decisions/contracts.d.ts +86 -8
- package/dist/dsh/decisions/contracts.d.ts.map +1 -1
- package/dist/dsh/decisions/contracts.js +41 -7
- package/dist/dsh/decisions/contracts.js.map +1 -1
- package/dist/dsh/decisions/laya-coreml.d.ts.map +1 -1
- package/dist/dsh/decisions/laya-coreml.js +5 -4
- package/dist/dsh/decisions/laya-coreml.js.map +1 -1
- package/dist/dsh/decisions/laya-v1.d.ts.map +1 -1
- package/dist/dsh/decisions/laya-v1.js +2 -2
- package/dist/dsh/decisions/laya-v1.js.map +1 -1
- package/dist/dsh/decisions/memory-batches.d.ts.map +1 -1
- package/dist/dsh/decisions/memory-batches.js +70 -10
- package/dist/dsh/decisions/memory-batches.js.map +1 -1
- package/dist/dsh/decisions/providers.d.ts +6 -2
- package/dist/dsh/decisions/providers.d.ts.map +1 -1
- package/dist/dsh/decisions/providers.js +64 -7
- package/dist/dsh/decisions/providers.js.map +1 -1
- package/dist/dsh/decisions/readiness.d.ts.map +1 -1
- package/dist/dsh/decisions/readiness.js +10 -5
- package/dist/dsh/decisions/readiness.js.map +1 -1
- package/dist/dsh/decisions/score-consistency.d.ts +3 -0
- package/dist/dsh/decisions/score-consistency.d.ts.map +1 -0
- package/dist/dsh/decisions/score-consistency.js +6 -0
- package/dist/dsh/decisions/score-consistency.js.map +1 -0
- package/dist/dsh/decisions/service.d.ts +31 -2
- package/dist/dsh/decisions/service.d.ts.map +1 -1
- package/dist/dsh/decisions/service.js +80 -10
- package/dist/dsh/decisions/service.js.map +1 -1
- package/dist/dsh/decisions/workflows.d.ts.map +1 -1
- package/dist/dsh/decisions/workflows.js +26 -1
- package/dist/dsh/decisions/workflows.js.map +1 -1
- package/dist/dsh/diff-review-surface.d.ts +6 -0
- package/dist/dsh/diff-review-surface.d.ts.map +1 -0
- package/dist/dsh/diff-review-surface.js +93 -0
- package/dist/dsh/diff-review-surface.js.map +1 -0
- package/dist/dsh/host-adapter.d.ts +2 -0
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +14 -0
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.js +1 -1
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/memory-reuse.d.ts.map +1 -1
- package/dist/dsh/memory-reuse.js +32 -5
- package/dist/dsh/memory-reuse.js.map +1 -1
- package/dist/dsh/session-review-context.d.ts +30 -0
- package/dist/dsh/session-review-context.d.ts.map +1 -0
- package/dist/dsh/session-review-context.js +102 -0
- package/dist/dsh/session-review-context.js.map +1 -0
- package/dist/dsh/typesafe/contracts.d.ts.map +1 -1
- package/dist/dsh/typesafe/contracts.js +3 -1
- package/dist/dsh/typesafe/contracts.js.map +1 -1
- package/docs/diff-review.ja.md +16 -0
- package/docs/memory-reuse.md +24 -8
- package/docs/typed-decisions.md +46 -0
- package/dsh/cordis.patch.yml +1 -1
- package/package.json +7 -2
|
@@ -2,17 +2,74 @@ import { z } from 'zod';
|
|
|
2
2
|
import { abortable } from '../http-json.js';
|
|
3
3
|
import { DecisionError, parseDecisionResult } from './contracts.js';
|
|
4
4
|
export const MemoryDecisionState = z.object({ task: z.string(), constraints: z.string(), memories: z.record(z.string(), z.string()) }).strict();
|
|
5
|
+
const NoulMemoryState = MemoryDecisionState.safeExtend({ questionMemory: z.record(z.string(), z.string()) });
|
|
5
6
|
/** Bound each wire request to its own complete evidence. A failed part never becomes partial success. */
|
|
6
7
|
export async function evaluateMemoryBatches(provider, batch, kind, signal) {
|
|
7
|
-
const
|
|
8
|
-
|
|
8
|
+
const noul = batch.questions.every(q => 'type' in q && q.type === 'noul');
|
|
9
|
+
const parsed = (noul ? NoulMemoryState : MemoryDecisionState).safeParse(batch.state);
|
|
10
|
+
if (!parsed.success)
|
|
9
11
|
throw new DecisionError('INVALID_INPUT');
|
|
10
|
-
const state = parsed.data
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const state = parsed.data;
|
|
13
|
+
const mapped = noul ? NoulMemoryState.parse(state) : undefined;
|
|
14
|
+
const groups = [];
|
|
15
|
+
if (mapped) {
|
|
16
|
+
if (Object.keys(mapped.questionMemory).length !== batch.questions.length)
|
|
17
|
+
throw new DecisionError('INVALID_INPUT');
|
|
18
|
+
if (batch.questions.some(q => !/^memory_(0|[1-9]\d*):(applicability|constraints|prerequisites)$/.test(q.id)
|
|
19
|
+
|| mapped.questionMemory[q.id] !== q.id.slice(0, q.id.indexOf(':'))))
|
|
20
|
+
throw new DecisionError('INVALID_INPUT');
|
|
21
|
+
for (const [memoryId] of Object.entries(mapped.memories)) {
|
|
22
|
+
const questions = batch.questions.filter(q => mapped.questionMemory[q.id] === memoryId);
|
|
23
|
+
if (questions.length !== 3 || !['applicability', 'constraints', 'prerequisites'].every(name => questions.some(q => q.id === `${memoryId}:${name}`)))
|
|
24
|
+
throw new DecisionError('INVALID_INPUT');
|
|
25
|
+
groups.push(questions);
|
|
26
|
+
}
|
|
27
|
+
if (groups.flat().length !== batch.questions.length || batch.questions.some(q => !Object.hasOwn(mapped.questionMemory, q.id)))
|
|
28
|
+
throw new DecisionError('INVALID_INPUT');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
if (Object.keys(state.memories).length !== batch.questions.length || batch.questions.some(q => !Object.hasOwn(state.memories, q.id)))
|
|
32
|
+
throw new DecisionError('INVALID_INPUT');
|
|
33
|
+
groups.push(...batch.questions.map(q => [q]));
|
|
15
34
|
}
|
|
35
|
+
const groupSize = kind === 'typesafe' ? Math.min(8, Math.floor(provider.capabilities.maxQuestions / (noul ? 3 : 1))) : 1;
|
|
36
|
+
if (groupSize < 1)
|
|
37
|
+
throw new DecisionError('UNSUPPORTED');
|
|
38
|
+
const makePart = (chunk) => {
|
|
39
|
+
const questions = chunk.flat();
|
|
40
|
+
const memoryIds = mapped ? [...new Set(questions.map(q => mapped.questionMemory[q.id]))] : questions.map(q => q.id);
|
|
41
|
+
const memories = Object.fromEntries(memoryIds.map(id => [id, state.memories[id]]));
|
|
42
|
+
return { ...batch, questions, state: mapped
|
|
43
|
+
? { task: state.task, constraints: state.constraints, memories, questionMemory: Object.fromEntries(questions.map(q => [q.id, mapped.questionMemory[q.id]])) }
|
|
44
|
+
: { task: state.task, constraints: state.constraints, memories } };
|
|
45
|
+
};
|
|
46
|
+
const chunks = [];
|
|
47
|
+
for (let offset = 0; offset < groups.length; offset += groupSize)
|
|
48
|
+
chunks.push(groups.slice(offset, offset + groupSize));
|
|
49
|
+
const batches = chunks.map(makePart);
|
|
50
|
+
const skipped = new Set();
|
|
51
|
+
if (provider.preflight)
|
|
52
|
+
for (let index = 0; index < batches.length; index++) {
|
|
53
|
+
const part = batches[index];
|
|
54
|
+
try {
|
|
55
|
+
await abortable(provider.preflight(part, signal), signal);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof DecisionError && error.kind === 'TOO_LARGE') {
|
|
59
|
+
const chunk = chunks[index];
|
|
60
|
+
if (chunk.length === 1) {
|
|
61
|
+
skipped.add(part);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const middle = Math.floor(chunk.length / 2), halves = [chunk.slice(0, middle), chunk.slice(middle)];
|
|
65
|
+
chunks.splice(index, 1, ...halves);
|
|
66
|
+
batches.splice(index, 1, ...halves.map(makePart));
|
|
67
|
+
index--;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
16
73
|
const parts = new Array(batches.length).fill(null);
|
|
17
74
|
const controller = new AbortController(), combined = AbortSignal.any([signal, controller.signal]);
|
|
18
75
|
let next = 0, failure;
|
|
@@ -21,12 +78,14 @@ export async function evaluateMemoryBatches(provider, batch, kind, signal) {
|
|
|
21
78
|
while (next < batches.length) {
|
|
22
79
|
combined.throwIfAborted();
|
|
23
80
|
const index = next++, part = batches[index];
|
|
81
|
+
if (skipped.has(part))
|
|
82
|
+
continue;
|
|
24
83
|
try {
|
|
25
84
|
parts[index] = parseDecisionResult(await abortable(provider.evaluate(part, combined), combined), part);
|
|
26
85
|
}
|
|
27
86
|
catch (error) {
|
|
28
87
|
// A single complete record that the endpoint cannot admit remains unassessed.
|
|
29
|
-
if (error instanceof DecisionError && error.kind === 'TOO_LARGE' && part.questions.length === 1)
|
|
88
|
+
if (error instanceof DecisionError && error.kind === 'TOO_LARGE' && part.questions.length === (noul ? 3 : 1))
|
|
30
89
|
continue;
|
|
31
90
|
throw error;
|
|
32
91
|
}
|
|
@@ -42,10 +101,11 @@ export async function evaluateMemoryBatches(provider, batch, kind, signal) {
|
|
|
42
101
|
throw failure;
|
|
43
102
|
const completed = parts.filter((part) => part !== null), first = completed[0];
|
|
44
103
|
if (!first)
|
|
45
|
-
|
|
104
|
+
return parseDecisionResult({ provider: kind, requestedModel: 'unassessed', policyVersion: 'memory-reuse-unassessed-v1',
|
|
105
|
+
answers: batch.questions.map(q => ({ id: q.id, status: 'abstained', reason: 'unassessed' })) }, batch);
|
|
46
106
|
if (completed.some(p => p.provider !== first.provider || p.requestedModel !== first.requestedModel || p.returnedModel !== first.returnedModel || p.revision !== first.revision || p.policyVersion !== first.policyVersion))
|
|
47
107
|
throw new DecisionError('MALFORMED_RESPONSE');
|
|
48
|
-
const result = { ...first, answers: parts.flatMap((p, i) => p?.answers ?? batches[i].questions.map(q => ({ id: q.id, status: 'abstained', reason: '
|
|
108
|
+
const result = { ...first, answers: parts.flatMap((p, i) => p?.answers ?? batches[i].questions.map(q => ({ id: q.id, status: 'abstained', reason: 'unassessed' }))) };
|
|
49
109
|
delete result.usage;
|
|
50
110
|
if (completed.every(p => p.usage))
|
|
51
111
|
result.usage = completed.reduce((sum, p) => ({ input_tokens: sum.input_tokens + p.usage.input_tokens, output_tokens: sum.output_tokens + p.usage.output_tokens }), { input_tokens: 0, output_tokens: 0 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-batches.js","sourceRoot":"","sources":["../../../src/dsh/decisions/memory-batches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAuE,MAAM,gBAAgB,CAAA;AAExI,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"memory-batches.js","sourceRoot":"","sources":["../../../src/dsh/decisions/memory-batches.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,10 @@ import { type DecisionConfiguration } from './config.js';
|
|
|
3
3
|
export declare const POLICY_VERSION = "finite-choice-v1";
|
|
4
4
|
export declare const TYPESAFE_LIMITS: Readonly<{
|
|
5
5
|
maxQuestions: 64;
|
|
6
|
-
maxChoices:
|
|
6
|
+
maxChoices: 255;
|
|
7
7
|
maxBytes: number;
|
|
8
|
+
questionTypes: readonly ["choice", "noul", "score"];
|
|
9
|
+
maxScoreLevels: 10;
|
|
8
10
|
}>;
|
|
9
11
|
export declare const NIMBLE_LIMITS: Readonly<{
|
|
10
12
|
maxQuestions: 64;
|
|
@@ -20,8 +22,10 @@ export declare class TypeSafeDecisionProvider implements DecisionProvider {
|
|
|
20
22
|
private readonly request;
|
|
21
23
|
readonly capabilities: Readonly<{
|
|
22
24
|
maxQuestions: 64;
|
|
23
|
-
maxChoices:
|
|
25
|
+
maxChoices: 255;
|
|
24
26
|
maxBytes: number;
|
|
27
|
+
questionTypes: readonly ["choice", "noul", "score"];
|
|
28
|
+
maxScoreLevels: 10;
|
|
25
29
|
}>;
|
|
26
30
|
constructor(config: DecisionConfiguration['typesafe'], credential: () => Promise<string>, request?: typeof fetch);
|
|
27
31
|
evaluate(batch: DecisionBatch, signal: AbortSignal): Promise<DecisionBatchResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/providers.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuG,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzM,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAQ1E,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAChD,eAAO,MAAM,eAAe;;;;;;EAA0J,CAAA;AACtL,eAAO,MAAM,aAAa;;;;;EAAuG,CAAA;AAEjI,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtE;AAuFD,qBAAa,wBAAyB,YAAW,gBAAgB;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAqC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAyB,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpJ,QAAQ,CAAC,YAAY;;;;;;OAAkB;gBACV,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAAmB,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAAmB,OAAO,GAAE,OAAO,KAAa;IACpK,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAMxF;AACD,qBAAa,sBAAuB,YAAW,gBAAgB;IAEjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAmC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAqC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAD9J,QAAQ,CAAC,YAAY;;;;;OAAgB;gBACR,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAmB,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EAAmB,OAAO,GAAE,OAAO,KAAa;IAC9K,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAQxF"}
|
|
@@ -1,20 +1,73 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { abortable, readBoundedJson } from '../http-json.js';
|
|
3
|
-
import { DECISION_BYTES, DecisionError, parseDecisionBatch, parseDecisionResult } from './contracts.js';
|
|
3
|
+
import { DECISION_BYTES, DecisionError, parseDecisionBatch, parseDecisionResult, requireChoice, questionType } from './contracts.js';
|
|
4
4
|
import { decisionEndpoint } from './config.js';
|
|
5
|
+
import { consistentScore } from './score-consistency.js';
|
|
5
6
|
const probability = z.number().finite().min(0).max(1);
|
|
6
7
|
const responseSchema = z.object({ model: z.string().min(1).max(256).optional(),
|
|
7
8
|
answers: z.record(z.string(), z.object({ type: z.literal('choice'), choice: z.string(), probabilities: z.record(z.string(), probability), confidence: probability }).strict()),
|
|
8
9
|
usage: z.object({ input_tokens: z.number().int().nonnegative(), output_tokens: z.number().int().nonnegative() }).strict().optional(),
|
|
9
10
|
}).strict();
|
|
10
11
|
export const POLICY_VERSION = 'finite-choice-v1';
|
|
11
|
-
export const TYPESAFE_LIMITS = Object.freeze({ maxQuestions: 64, maxChoices:
|
|
12
|
+
export const TYPESAFE_LIMITS = Object.freeze({ maxQuestions: 64, maxChoices: 255, maxBytes: DECISION_BYTES, questionTypes: ['choice', 'noul', 'score'], maxScoreLevels: 10 });
|
|
12
13
|
export const NIMBLE_LIMITS = Object.freeze({ maxQuestions: 64, maxChoices: 26, maxBytes: DECISION_BYTES, maxPromptTokens: 2048 });
|
|
13
14
|
/** Serialize from ordered arrays; even numeric-looking IDs must retain caller order. */
|
|
14
15
|
export function choiceBody(batch, model) {
|
|
15
|
-
const questions = batch.questions.map(
|
|
16
|
+
const questions = batch.questions.map(question => { const q = requireChoice(question); return `${JSON.stringify(q.id)}:{"type":"choice","instructions":${JSON.stringify(q.instructions)},"criteria":{${q.choices.map(c => `${JSON.stringify(c.id)}:${JSON.stringify(c.description)}`).join(',')}}}`; }).join(',');
|
|
16
17
|
return `{"state":${JSON.stringify(batch.state)},"model":${JSON.stringify(model)},"questions":{${questions}}}`;
|
|
17
18
|
}
|
|
19
|
+
function typedBody(batch, model) {
|
|
20
|
+
const questions = batch.questions.map(q => {
|
|
21
|
+
if ('choices' in q)
|
|
22
|
+
return `${JSON.stringify(q.id)}:{"type":"choice","instructions":${JSON.stringify(q.instructions)},"criteria":{${q.choices.map(c => `${JSON.stringify(c.id)}:${JSON.stringify(c.description)}`).join(',')}}}`;
|
|
23
|
+
return `${JSON.stringify(q.id)}:${JSON.stringify({ type: q.type, instructions: q.instructions, ...('criteria' in q ? { criteria: q.criteria } : {}) })}`;
|
|
24
|
+
}).join(',');
|
|
25
|
+
return `{"state":${JSON.stringify(batch.state)},"model":${JSON.stringify(model)},"questions":{${questions}}}`;
|
|
26
|
+
}
|
|
27
|
+
const typedResponse = z.object({ model: z.string().min(1).max(256).optional(),
|
|
28
|
+
answers: z.record(z.string(), z.discriminatedUnion('type', [
|
|
29
|
+
z.object({ type: z.literal('noul'), noul: probability }).strict(),
|
|
30
|
+
z.object({ type: z.literal('choice'), choice: z.string(), probabilities: z.record(z.string(), probability), confidence: probability }).strict(),
|
|
31
|
+
z.object({ type: z.literal('score'), score: z.number().finite(), legend: z.record(z.string(), z.string()), probabilities: z.record(z.string(), probability), confidence: probability }).strict(),
|
|
32
|
+
])), usage: z.object({ input_tokens: z.number().int().nonnegative(), output_tokens: z.number().int().nonnegative() }).strict().optional(),
|
|
33
|
+
}).strict();
|
|
34
|
+
function decodeTyped(value, batch, model, minConfidence) {
|
|
35
|
+
const parsed = typedResponse.safeParse(value);
|
|
36
|
+
if (!parsed.success || Object.keys(parsed.data.answers).length !== batch.questions.length)
|
|
37
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
38
|
+
const response = parsed.data;
|
|
39
|
+
const answers = batch.questions.map(q => {
|
|
40
|
+
const a = response.answers[q.id];
|
|
41
|
+
if (!a || a.type !== questionType(q))
|
|
42
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
43
|
+
if (a.type === 'noul')
|
|
44
|
+
return { id: q.id, status: 'measured', type: 'noul', probability: a.noul };
|
|
45
|
+
const keys = 'choices' in q ? q.choices.map(c => c.id) : 'type' in q && q.type === 'score' ? q.criteria.map((_, i) => String(i)) : [];
|
|
46
|
+
if (Object.keys(a.probabilities).length !== keys.length || keys.some(k => !Object.hasOwn(a.probabilities, k))
|
|
47
|
+
|| Math.abs(Object.values(a.probabilities).reduce((n, p) => n + p, 0) - 1) > .001)
|
|
48
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
49
|
+
if (a.type === 'score') {
|
|
50
|
+
if (!('type' in q) || q.type !== 'score' || a.score < 0 || a.score > q.criteria.length - 1 || Object.keys(a.legend).length !== keys.length
|
|
51
|
+
|| keys.some((k, i) => a.legend[k] !== q.criteria[i]))
|
|
52
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
53
|
+
if (!consistentScore(a.score, keys.map(k => a.probabilities[k])))
|
|
54
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
55
|
+
return { id: q.id, status: 'measured', type: 'score', score: a.score,
|
|
56
|
+
probabilities: keys.map(k => a.probabilities[k]), confidence: a.confidence };
|
|
57
|
+
}
|
|
58
|
+
const choice = requireChoice(q), values = Object.values(a.probabilities).sort((x, y) => y - x);
|
|
59
|
+
if (!keys.includes(a.choice) || a.probabilities[a.choice] !== values[0])
|
|
60
|
+
throw new DecisionError('MALFORMED_RESPONSE');
|
|
61
|
+
if (a.choice === choice.abstainId)
|
|
62
|
+
return { id: q.id, status: 'abstained', reason: 'insufficient' };
|
|
63
|
+
if (values[0] === values[1])
|
|
64
|
+
return { id: q.id, status: 'abstained', reason: 'tie' };
|
|
65
|
+
return a.confidence >= minConfidence ? { id: q.id, status: 'selected', choiceId: a.choice } : { id: q.id, status: 'abstained', reason: 'uncertain' };
|
|
66
|
+
});
|
|
67
|
+
return parseDecisionResult({ answers, provider: 'typesafe', requestedModel: model,
|
|
68
|
+
...(response.model ? { returnedModel: response.model } : {}), policyVersion: 'typed-decisions-v1',
|
|
69
|
+
...(response.usage ? { usage: response.usage } : {}) }, batch);
|
|
70
|
+
}
|
|
18
71
|
function decode(value, batch, provider, model, accept) {
|
|
19
72
|
const parsed = responseSchema.safeParse(value);
|
|
20
73
|
if (!parsed.success)
|
|
@@ -22,7 +75,8 @@ function decode(value, batch, provider, model, accept) {
|
|
|
22
75
|
const response = parsed.data;
|
|
23
76
|
if (Object.keys(response.answers).length !== batch.questions.length)
|
|
24
77
|
throw new DecisionError('MALFORMED_RESPONSE');
|
|
25
|
-
const answers = batch.questions.map(
|
|
78
|
+
const answers = batch.questions.map(question => {
|
|
79
|
+
const q = requireChoice(question);
|
|
26
80
|
const a = response.answers[q.id];
|
|
27
81
|
if (!a || Object.keys(a.probabilities).length !== q.choices.length || q.choices.some(c => !Object.hasOwn(a.probabilities, c.id))
|
|
28
82
|
|| !q.choices.some(c => c.id === a.choice) || Math.abs(Object.values(a.probabilities).reduce((n, p) => n + p, 0) - 1) > .001)
|
|
@@ -43,7 +97,8 @@ function decode(value, batch, provider, model, accept) {
|
|
|
43
97
|
...(response.usage ? { usage: response.usage } : {}) }, batch);
|
|
44
98
|
}
|
|
45
99
|
async function evaluateHttp(settings, batch, signal, mapStatus) {
|
|
46
|
-
const
|
|
100
|
+
const parsed = parseDecisionBatch(batch);
|
|
101
|
+
const body = parsed.contractVersion ? typedBody(parsed, settings.model) : choiceBody(parsed, settings.model);
|
|
47
102
|
if (Buffer.byteLength(body) > DECISION_BYTES)
|
|
48
103
|
throw new DecisionError('TOO_LARGE');
|
|
49
104
|
try {
|
|
@@ -84,8 +139,10 @@ export class TypeSafeDecisionProvider {
|
|
|
84
139
|
this.request = request;
|
|
85
140
|
}
|
|
86
141
|
async evaluate(batch, signal) {
|
|
142
|
+
if (batch.questions.some(q => 'choices' in q ? q.choices.length > 255 : q.type === 'score' && q.criteria.length > 10))
|
|
143
|
+
throw new DecisionError('TOO_LARGE');
|
|
87
144
|
const value = await evaluateHttp({ endpoint: 'https://api.typesafe.ai/v1/systemone', model: this.config.model, credential: this.credential, request: this.request }, batch, signal, s => new DecisionError(s === 401 || s === 403 ? 'AUTH' : s === 413 ? 'TOO_LARGE' : s === 422 ? 'INVALID_INPUT' : 'UNAVAILABLE'));
|
|
88
|
-
return decode(value, batch, 'typesafe', this.config.model, confidence => confidence >= this.config.acceptance.minConfidence);
|
|
145
|
+
return batch.contractVersion || batch.questions.some(q => questionType(q) !== 'choice') ? decodeTyped(value, batch, this.config.model, this.config.acceptance.minConfidence) : decode(value, batch, 'typesafe', this.config.model, confidence => confidence >= this.config.acceptance.minConfidence);
|
|
89
146
|
}
|
|
90
147
|
}
|
|
91
148
|
export class NimbleDecisionProvider {
|
|
@@ -101,7 +158,7 @@ export class NimbleDecisionProvider {
|
|
|
101
158
|
async evaluate(batch, signal) {
|
|
102
159
|
if (!this.config.endpoint || !this.config.model)
|
|
103
160
|
throw new DecisionError('UNAVAILABLE');
|
|
104
|
-
if (batch.questions.length > 64 || batch.questions.some(q => q.choices.length > 26))
|
|
161
|
+
if (batch.questions.length > 64 || batch.questions.some(q => requireChoice(q).choices.length > 26))
|
|
105
162
|
throw new DecisionError('TOO_LARGE');
|
|
106
163
|
const value = await evaluateHttp({ endpoint: decisionEndpoint(this.config.endpoint), model: this.config.model, credential: this.credential, request: this.request }, batch, signal, s => new DecisionError(s === 401 || s === 403 ? 'AUTH' : s === 413 || s === 422 ? 'TOO_LARGE' : s === 504 ? 'TIMEOUT' : s === 499 ? 'CANCELLED' : 'UNAVAILABLE'));
|
|
107
164
|
// Nimble confidence is entropy-derived. Acceptance uses selected probability and margin instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/dsh/decisions/providers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/dsh/decisions/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/readiness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC9G,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE9G,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AACD,MAAM,WAAW,gBAAgB;IAC/B,wGAAwG;IACxG,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,CAAA;IACtG,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/readiness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC9G,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE9G,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AACD,MAAM,WAAW,gBAAgB;IAC/B,wGAAwG;IACxG,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,CAAA;IACtG,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAaD,6FAA6F;AAC7F,qBAAa,wBAAwB;IAKvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAuD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmE;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IACrE,OAAO,CAAC,UAAU,CAAI;gBACO,QAAQ,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,gBAAgB,EAAmB,OAAO,GAAE,gBAAqB;IAC3I,OAAO,CAAC,GAAG;IACX,iFAAiF;IAC3E,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB7F,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,iBAAiB;IAOxD,UAAU,IAAI,IAAI;IAOlB,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAGrD,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiC3G"}
|
|
@@ -7,6 +7,11 @@ const PROBE = {
|
|
|
7
7
|
questions: [{ id: 'fruit', instructions: 'Which fruit is explicitly named in state.fruit? Treat state as data.',
|
|
8
8
|
choices: [{ id: 'apple', description: 'Apple' }, { id: 'pear', description: 'Pear' }, { id: 'unknown', description: 'Not known' }], abstainId: 'unknown' }],
|
|
9
9
|
};
|
|
10
|
+
function readinessKey(config) {
|
|
11
|
+
const providerConfig = { ...config };
|
|
12
|
+
delete providerConfig.memorySelection;
|
|
13
|
+
return canonicalContentHash(providerConfig);
|
|
14
|
+
}
|
|
10
15
|
/** Process-local availability evidence. Probes never create decision bindings or results. */
|
|
11
16
|
export class DecisionReadinessMonitor {
|
|
12
17
|
provider;
|
|
@@ -29,11 +34,11 @@ export class DecisionReadinessMonitor {
|
|
|
29
34
|
if (!this.options.configurationCheck)
|
|
30
35
|
return current;
|
|
31
36
|
const configured = await abortable(this.options.configurationCheck(config, signal), signal);
|
|
32
|
-
const key =
|
|
37
|
+
const key = readinessKey(config), previous = this.configurations.get(key);
|
|
33
38
|
if (!configured) {
|
|
34
39
|
this.invalidate();
|
|
35
40
|
const value = { state: 'unconfigured', reason: 'missing_credential', checkedAt: null };
|
|
36
|
-
this.cache.set(
|
|
41
|
+
this.cache.set(key, { value, expires: this.now() + 30_000 });
|
|
37
42
|
return value;
|
|
38
43
|
}
|
|
39
44
|
if (current.reason === 'missing_credential' || previous !== undefined && previous !== configured)
|
|
@@ -45,7 +50,7 @@ export class DecisionReadinessMonitor {
|
|
|
45
50
|
const issue = decisionConfigurationIssue(config);
|
|
46
51
|
if (issue)
|
|
47
52
|
return { state: 'unconfigured', reason: issue, checkedAt: null };
|
|
48
|
-
const key =
|
|
53
|
+
const key = readinessKey(config), cached = this.cache.get(key);
|
|
49
54
|
if (this.pending.has(key))
|
|
50
55
|
return { state: 'probing', reason: null, checkedAt: null };
|
|
51
56
|
return cached && cached.expires > this.now() ? { ...cached.value } : { state: 'unverified', reason: null, checkedAt: cached?.value.checkedAt ?? null };
|
|
@@ -59,11 +64,11 @@ export class DecisionReadinessMonitor {
|
|
|
59
64
|
this.pending.clear();
|
|
60
65
|
}
|
|
61
66
|
failed(config, reason) {
|
|
62
|
-
this.cache.set(
|
|
67
|
+
this.cache.set(readinessKey(config), { value: { state: 'unavailable', reason, checkedAt: new Date(this.now()).toISOString() }, expires: this.now() + 30_000 });
|
|
63
68
|
}
|
|
64
69
|
async probe(config, signal, force = false) {
|
|
65
70
|
signal.throwIfAborted();
|
|
66
|
-
const current = await this.inspect(config, signal), key =
|
|
71
|
+
const current = await this.inspect(config, signal), key = readinessKey(config);
|
|
67
72
|
if (current.state === 'unconfigured')
|
|
68
73
|
return current;
|
|
69
74
|
if (!force && ['ready', 'unavailable'].includes(current.state))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/dsh/decisions/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAA8B,MAAM,aAAa,CAAA;AAC9G,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAA6C,MAAM,gBAAgB,CAAA;AAY9G,MAAM,KAAK,GAAkB;IAC3B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;IACjE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,sEAAsE;YAC7G,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;CAC9J,CAAA;
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../src/dsh/decisions/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAA8B,MAAM,aAAa,CAAA;AAC9G,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAA6C,MAAM,gBAAgB,CAAA;AAY9G,MAAM,KAAK,GAAkB;IAC3B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;IACjE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,sEAAsE;YAC7G,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;CAC9J,CAAA;AAED,SAAS,YAAY,CAAC,MAA6B;IACjD,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IACpC,OAAO,cAAc,CAAC,eAAe,CAAA;IACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAA;AAC7C,CAAC;AAED,6FAA6F;AAC7F,MAAM,OAAO,wBAAwB;IAKN;IAAgF;IAJ5F,KAAK,GAAG,IAAI,GAAG,EAAyD,CAAA;IACxE,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;IACpC,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAA;IAC7D,UAAU,GAAG,CAAC,CAAA;IACtB,YAA6B,QAA6D,EAAmB,UAA4B,EAAE;QAA9G,aAAQ,GAAR,QAAQ,CAAqD;QAAmB,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IACvI,GAAG,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;IACnE,iFAAiF;IACjF,KAAK,CAAC,OAAO,CAAC,MAA6B,EAAE,MAAmB;QAC9D,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,IAAI,OAAO,CAAC,MAAM,KAAK,oBAAoB;YAAE,OAAO,OAAO,CAAA;QAC/F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAAE,OAAO,OAAO,CAAA;QACpD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3F,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,MAAM,KAAK,GAAsB,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;YACzG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;YAC5D,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,oBAAoB,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU;YAAE,IAAI,CAAC,UAAU,EAAE,CAAA;QACnH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,CAAC,MAA6B;QAClC,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QAC3E,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QACrF,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,CAAA;IACxJ,CAAC;IACD,UAAU;QACR,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IACD,MAAM,CAAC,MAA6B,EAAE,MAAc;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAChK,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,MAA6B,EAAE,MAAmB,EAAE,KAAK,GAAG,KAAK;QAC3E,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9E,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO,OAAO,CAAA;QACpD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAA;QAC9E,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;YACtE,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,CAAA;YAC5H,MAAM,SAAS,GAAG,CAAC,KAAK,IAAgC,EAAE;gBACxD,IAAI,KAAwB,CAAA;gBAC5B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;oBACxJ,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;oBACjC,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;wBACpG,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;gBAClJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC;wBAAE,MAAM,KAAK,CAAA;oBAChF,KAAK,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAE,KAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;gBACzK,CAAC;wBAAS,CAAC;oBAAC,YAAY,CAAC,KAAK,CAAC,CAAA;gBAAC,CAAC;gBACjC,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAClL,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,EAAE,CAAA;YACJ,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;YACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9B,MAAM,QAAQ,GAAG,OAAO,CAAA;YACxB,KAAK,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACpH,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,IAAI,CAAC;YAAC,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAAC,CAAC;gBAC/C,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAAC,CAAC;IACxG,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-consistency.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/score-consistency.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGxF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** TypeSafe Score is the probability-weighted rubric index, subject to wire rounding. */
|
|
2
|
+
export function consistentScore(score, probabilities) {
|
|
3
|
+
const expected = probabilities.reduce((sum, probability, index) => sum + index * probability, 0);
|
|
4
|
+
return Number.isFinite(score) && Math.abs(score - expected) <= 0.001 * probabilities.length;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=score-consistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-consistency.js","sourceRoot":"","sources":["../../../src/dsh/decisions/score-consistency.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,aAAgC;IAC7E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,CAAC,CAAA;IAChG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,CAAA;AAC7F,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SemanticCompactionConfiguration, type CompactionOutcome } from '../semantic-compaction/contracts.js';
|
|
2
2
|
import type { SqliteDatabase } from '../../db/adapter.js';
|
|
3
|
-
import { type DecisionProvider, type DecisionBatchResult } from './contracts.js';
|
|
3
|
+
import { type DecisionProvider, type DecisionBatchResult, type DecisionBatch } from './contracts.js';
|
|
4
4
|
import { type DecisionConfiguration } from './config.js';
|
|
5
5
|
import { type ReadinessOptions } from './readiness.js';
|
|
6
6
|
import { type MemoryReuseConfiguration } from '../../memory/reuse.js';
|
|
@@ -12,6 +12,31 @@ export type DecisionOutcome = {
|
|
|
12
12
|
status: 'fallback';
|
|
13
13
|
reason: string;
|
|
14
14
|
};
|
|
15
|
+
export interface DecisionObservation {
|
|
16
|
+
purpose: DecisionBatch['purpose'];
|
|
17
|
+
questionTypes: Record<string, number>;
|
|
18
|
+
provider: string;
|
|
19
|
+
requestedModel: string | null;
|
|
20
|
+
returnedModel: string | null;
|
|
21
|
+
policyVersion: string;
|
|
22
|
+
cacheHit: boolean;
|
|
23
|
+
selected: number;
|
|
24
|
+
measured: number;
|
|
25
|
+
abstained: number;
|
|
26
|
+
fallbackReason: string | null;
|
|
27
|
+
elapsedMs: number;
|
|
28
|
+
inputBytes: number;
|
|
29
|
+
inputTokens: number | null;
|
|
30
|
+
outputTokens: number | null;
|
|
31
|
+
memoryCandidates?: {
|
|
32
|
+
policy: string;
|
|
33
|
+
attempted: number;
|
|
34
|
+
applicable: number;
|
|
35
|
+
excluded: number;
|
|
36
|
+
uncertain: number;
|
|
37
|
+
unassessed: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
15
40
|
export interface DecisionStore {
|
|
16
41
|
binding?(id: string): Promise<DecisionConfiguration | undefined>;
|
|
17
42
|
bind(id: string, config: DecisionConfiguration): Promise<DecisionConfiguration>;
|
|
@@ -34,6 +59,7 @@ export declare class DecisionService {
|
|
|
34
59
|
readonly memoryReuse: MemoryReuseConfiguration;
|
|
35
60
|
readonly semanticCompaction: SemanticCompactionConfiguration;
|
|
36
61
|
private readonly compactionMetrics;
|
|
62
|
+
private readonly decisionObservations;
|
|
37
63
|
private observationStatus;
|
|
38
64
|
private answerReviewStatus;
|
|
39
65
|
private modelHandoffStatus;
|
|
@@ -59,6 +85,7 @@ export declare class DecisionService {
|
|
|
59
85
|
repositoryRoot?: string;
|
|
60
86
|
selectionStore?: DecisionSelectionStore;
|
|
61
87
|
resolveConfiguration?: (config: DecisionConfiguration, signal: AbortSignal) => Promise<DecisionConfiguration>;
|
|
88
|
+
onEvaluation?: (observation: DecisionObservation) => void;
|
|
62
89
|
});
|
|
63
90
|
private memoryProvider;
|
|
64
91
|
initialize(): Promise<void>;
|
|
@@ -69,9 +96,11 @@ export declare class DecisionService {
|
|
|
69
96
|
selectProvider(provider: DecisionConfiguration['provider'] | 'default', signal: AbortSignal): Promise<void>;
|
|
70
97
|
invalidateReadiness(): void;
|
|
71
98
|
configurationDigest(): string;
|
|
99
|
+
skillSelection(requestId: string, signal: AbortSignal): Promise<DecisionConfiguration['skillSelection']>;
|
|
100
|
+
private observe;
|
|
72
101
|
bind(requestId: string, signal?: AbortSignal): Promise<DecisionConfiguration>;
|
|
73
102
|
alias(requestId: string, sourceId: string): Promise<void>;
|
|
74
103
|
status(): unknown;
|
|
75
|
-
evaluate(requestId: string, input: unknown, signal: AbortSignal, catalogDigest?: string): Promise<DecisionOutcome>;
|
|
104
|
+
evaluate(requestId: string, input: unknown, signal: AbortSignal, catalogDigest?: string, memoryCandidateTotal?: number): Promise<DecisionOutcome>;
|
|
76
105
|
}
|
|
77
106
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,+BAA+B,EAAE,KAAK,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAG5I,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/dsh/decisions/service.ts"],"names":[],"mappings":"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"}
|