@sentropic/llm-mesh 0.27.1 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -0
- package/dist/capabilities.d.ts +4 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/catalog.d.ts +135 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +16 -0
- package/dist/catalog.js.map +1 -1
- package/dist/decision/adapter-result.d.ts +6 -0
- package/dist/decision/adapter-result.d.ts.map +1 -0
- package/dist/decision/adapter-result.js +148 -0
- package/dist/decision/adapter-result.js.map +1 -0
- package/dist/decision/adapter.d.ts +58 -0
- package/dist/decision/adapter.d.ts.map +1 -0
- package/dist/decision/adapter.js +70 -0
- package/dist/decision/adapter.js.map +1 -0
- package/dist/decision/admission.d.ts +23 -0
- package/dist/decision/admission.d.ts.map +1 -0
- package/dist/decision/admission.js +115 -0
- package/dist/decision/admission.js.map +1 -0
- package/dist/decision/budget.d.ts +60 -0
- package/dist/decision/budget.d.ts.map +1 -0
- package/dist/decision/budget.js +2 -0
- package/dist/decision/budget.js.map +1 -0
- package/dist/decision/client.d.ts +23 -0
- package/dist/decision/client.d.ts.map +1 -0
- package/dist/decision/client.js +836 -0
- package/dist/decision/client.js.map +1 -0
- package/dist/decision/criterion.d.ts +5 -0
- package/dist/decision/criterion.d.ts.map +1 -0
- package/dist/decision/criterion.js +54 -0
- package/dist/decision/criterion.js.map +1 -0
- package/dist/decision/deadline.d.ts +8 -0
- package/dist/decision/deadline.d.ts.map +1 -0
- package/dist/decision/deadline.js +56 -0
- package/dist/decision/deadline.js.map +1 -0
- package/dist/decision/descriptor-validation.d.ts +5 -0
- package/dist/decision/descriptor-validation.d.ts.map +1 -0
- package/dist/decision/descriptor-validation.js +99 -0
- package/dist/decision/descriptor-validation.js.map +1 -0
- package/dist/decision/descriptor.d.ts +81 -0
- package/dist/decision/descriptor.d.ts.map +1 -0
- package/dist/decision/descriptor.js +36 -0
- package/dist/decision/descriptor.js.map +1 -0
- package/dist/decision/dispatch.d.ts +11 -0
- package/dist/decision/dispatch.d.ts.map +1 -0
- package/dist/decision/dispatch.js +56 -0
- package/dist/decision/dispatch.js.map +1 -0
- package/dist/decision/errors.d.ts +43 -0
- package/dist/decision/errors.d.ts.map +1 -0
- package/dist/decision/errors.js +47 -0
- package/dist/decision/errors.js.map +1 -0
- package/dist/decision/execution.d.ts +31 -0
- package/dist/decision/execution.d.ts.map +1 -0
- package/dist/decision/execution.js +79 -0
- package/dist/decision/execution.js.map +1 -0
- package/dist/decision/host-options.d.ts +26 -0
- package/dist/decision/host-options.d.ts.map +1 -0
- package/dist/decision/host-options.js +2 -0
- package/dist/decision/host-options.js.map +1 -0
- package/dist/decision/host.d.ts +14 -0
- package/dist/decision/host.d.ts.map +1 -0
- package/dist/decision/host.js +6 -0
- package/dist/decision/host.js.map +1 -0
- package/dist/decision/index.d.ts +12 -0
- package/dist/decision/index.d.ts.map +1 -0
- package/dist/decision/index.js +3 -0
- package/dist/decision/index.js.map +1 -0
- package/dist/decision/jev-codec.d.ts +30 -0
- package/dist/decision/jev-codec.d.ts.map +1 -0
- package/dist/decision/jev-codec.js +51 -0
- package/dist/decision/jev-codec.js.map +1 -0
- package/dist/decision/jev-response.d.ts +7 -0
- package/dist/decision/jev-response.d.ts.map +1 -0
- package/dist/decision/jev-response.js +42 -0
- package/dist/decision/jev-response.js.map +1 -0
- package/dist/decision/jev-verdict.d.ts +14 -0
- package/dist/decision/jev-verdict.d.ts.map +1 -0
- package/dist/decision/jev-verdict.js +71 -0
- package/dist/decision/jev-verdict.js.map +1 -0
- package/dist/decision/policy.d.ts +11 -0
- package/dist/decision/policy.d.ts.map +1 -0
- package/dist/decision/policy.js +33 -0
- package/dist/decision/policy.js.map +1 -0
- package/dist/decision/pricing.d.ts +40 -0
- package/dist/decision/pricing.d.ts.map +1 -0
- package/dist/decision/pricing.js +65 -0
- package/dist/decision/pricing.js.map +1 -0
- package/dist/decision/raw.d.ts +7 -0
- package/dist/decision/raw.d.ts.map +1 -0
- package/dist/decision/raw.js +53 -0
- package/dist/decision/raw.js.map +1 -0
- package/dist/decision/receipt.d.ts +120 -0
- package/dist/decision/receipt.d.ts.map +1 -0
- package/dist/decision/receipt.js +58 -0
- package/dist/decision/receipt.js.map +1 -0
- package/dist/decision/request-policy.d.ts +3 -0
- package/dist/decision/request-policy.d.ts.map +1 -0
- package/dist/decision/request-policy.js +19 -0
- package/dist/decision/request-policy.js.map +1 -0
- package/dist/decision/request.d.ts +85 -0
- package/dist/decision/request.d.ts.map +1 -0
- package/dist/decision/request.js +49 -0
- package/dist/decision/request.js.map +1 -0
- package/dist/decision/service.d.ts +39 -0
- package/dist/decision/service.d.ts.map +1 -0
- package/dist/decision/service.js +138 -0
- package/dist/decision/service.js.map +1 -0
- package/dist/decision/structured.d.ts +125 -0
- package/dist/decision/structured.d.ts.map +1 -0
- package/dist/decision/structured.js +250 -0
- package/dist/decision/structured.js.map +1 -0
- package/dist/decision/validate-result.d.ts +8 -0
- package/dist/decision/validate-result.d.ts.map +1 -0
- package/dist/decision/validate-result.js +91 -0
- package/dist/decision/validate-result.js.map +1 -0
- package/dist/decision/validation-context.d.ts +55 -0
- package/dist/decision/validation-context.d.ts.map +1 -0
- package/dist/decision/validation-context.js +134 -0
- package/dist/decision/validation-context.js.map +1 -0
- package/dist/decision/validation.d.ts +19 -0
- package/dist/decision/validation.d.ts.map +1 -0
- package/dist/decision/validation.js +86 -0
- package/dist/decision/validation.js.map +1 -0
- package/dist/decision/verdict.d.ts +81 -0
- package/dist/decision/verdict.d.ts.map +1 -0
- package/dist/decision/verdict.js +140 -0
- package/dist/decision/verdict.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +4 -3
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +2 -1
- package/dist/providers.js.map +1 -1
- package/dist/registry.d.ts +6 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/speech/capabilities.d.ts +48 -0
- package/dist/speech/capabilities.d.ts.map +1 -0
- package/dist/speech/capabilities.js +41 -0
- package/dist/speech/capabilities.js.map +1 -0
- package/dist/speech/catalog.d.ts +8 -0
- package/dist/speech/catalog.d.ts.map +1 -0
- package/dist/speech/catalog.js +5 -0
- package/dist/speech/catalog.js.map +1 -0
- package/dist/speech/contracts.d.ts +196 -0
- package/dist/speech/contracts.d.ts.map +1 -0
- package/dist/speech/contracts.js +39 -0
- package/dist/speech/contracts.js.map +1 -0
- package/dist/speech/index.d.ts +4 -0
- package/dist/speech/index.d.ts.map +1 -0
- package/dist/speech/index.js +4 -0
- package/dist/speech/index.js.map +1 -0
- package/dist/transport/jev.d.ts +23 -0
- package/dist/transport/jev.d.ts.map +1 -0
- package/dist/transport/jev.js +107 -0
- package/dist/transport/jev.js.map +1 -0
- package/package.json +17 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { isDecisionRule, scoreDirections } from './criterion.js';
|
|
2
|
+
import { has, hasOnlyKeys, isRecord, isText, snapshotBoundedJson } from './validation.js';
|
|
3
|
+
/** Preserve native values and direction; normalization is relative position, not accuracy. */
|
|
4
|
+
export function parseDecisionScore(candidate) {
|
|
5
|
+
const snapshot = snapshotBoundedJson(candidate);
|
|
6
|
+
if (!snapshot.ok)
|
|
7
|
+
return null;
|
|
8
|
+
const value = snapshot.value;
|
|
9
|
+
if (!isRecord(value) || !hasOnlyKeys(value, ['value', 'scale', 'meaning', 'normalized'])
|
|
10
|
+
|| typeof value.value !== 'number' || !Number.isFinite(value.value) || !isRecord(value.scale)
|
|
11
|
+
|| !['rubric-grade', 'probability-true', 'support', 'provider-defined'].some((v) => v === value.meaning))
|
|
12
|
+
return null;
|
|
13
|
+
const scale = value.scale;
|
|
14
|
+
let position;
|
|
15
|
+
if (scale.kind === 'unknown') {
|
|
16
|
+
if (!hasOnlyKeys(scale, ['kind', 'reason']) || scale.reason !== 'unknown (source-gap)' || has(value, 'normalized'))
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
else if (scale.kind === 'bounded') {
|
|
20
|
+
if (!hasOnlyKeys(scale, ['kind', 'min', 'max', 'direction'])
|
|
21
|
+
|| typeof scale.min !== 'number' || typeof scale.max !== 'number'
|
|
22
|
+
|| !Number.isFinite(scale.min) || !Number.isFinite(scale.max) || scale.max < scale.min
|
|
23
|
+
|| value.value < scale.min || value.value > scale.max
|
|
24
|
+
|| !scoreDirections.some((direction) => direction === scale.direction))
|
|
25
|
+
return null;
|
|
26
|
+
const span = scale.max - scale.min;
|
|
27
|
+
if (span > 0 && Number.isFinite(span))
|
|
28
|
+
position = (value.value - scale.min) / span;
|
|
29
|
+
}
|
|
30
|
+
else
|
|
31
|
+
return null;
|
|
32
|
+
if (has(value, 'normalized') && (!isRecord(value.normalized)
|
|
33
|
+
|| !hasOnlyKeys(value.normalized, ['value', 'transform']) || position === undefined
|
|
34
|
+
|| value.normalized.transform !== 'linear-min-max' || typeof value.normalized.value !== 'number'
|
|
35
|
+
|| !Number.isFinite(value.normalized.value) || value.normalized.value !== position))
|
|
36
|
+
return null;
|
|
37
|
+
return { value: value.value, scale: { ...scale }, meaning: value.meaning,
|
|
38
|
+
...(position === undefined ? {} : { normalized: { value: position, transform: 'linear-min-max' } }) };
|
|
39
|
+
}
|
|
40
|
+
/** A descriptor supplies the documented meaning; this never derives confidence from score. */
|
|
41
|
+
export function parseDecisionConfidence(candidate) {
|
|
42
|
+
const snapshot = snapshotBoundedJson(candidate);
|
|
43
|
+
if (!snapshot.ok)
|
|
44
|
+
return null;
|
|
45
|
+
const value = snapshot.value;
|
|
46
|
+
if (!isRecord(value)
|
|
47
|
+
|| !hasOnlyKeys(value, ['value', 'min', 'max', 'meaning', 'meaningRef', 'origin'])
|
|
48
|
+
|| typeof value.value !== 'number' || typeof value.min !== 'number' || typeof value.max !== 'number'
|
|
49
|
+
|| !Number.isFinite(value.value) || !Number.isFinite(value.min) || !Number.isFinite(value.max)
|
|
50
|
+
|| value.max < value.min || value.value < value.min || value.value > value.max
|
|
51
|
+
|| (value.meaning !== 'provider-confidence' && value.meaning !== 'decision-confidence')
|
|
52
|
+
|| !isText(value.meaningRef) || value.origin !== 'provider')
|
|
53
|
+
return null;
|
|
54
|
+
return { value: value.value, min: value.min, max: value.max, meaning: value.meaning,
|
|
55
|
+
meaningRef: value.meaningRef, origin: 'provider' };
|
|
56
|
+
}
|
|
57
|
+
/** Map an exact, descriptor-owned native key set, preserving order and probabilities. */
|
|
58
|
+
export function mapDecisionDistribution(candidate, declared) {
|
|
59
|
+
const snapshot = snapshotBoundedJson(candidate);
|
|
60
|
+
const outcomeSnapshot = snapshotBoundedJson(declared);
|
|
61
|
+
if (!snapshot.ok || !outcomeSnapshot.ok || !Array.isArray(outcomeSnapshot.value))
|
|
62
|
+
return null;
|
|
63
|
+
const probabilities = snapshot.value;
|
|
64
|
+
const outcomes = outcomeSnapshot.value;
|
|
65
|
+
if (!isRecord(probabilities) || !outcomes.length || Object.keys(probabilities).length !== outcomes.length)
|
|
66
|
+
return null;
|
|
67
|
+
let sum = 0;
|
|
68
|
+
const outcomeIds = new Set();
|
|
69
|
+
const nativeIds = new Set();
|
|
70
|
+
const entries = [];
|
|
71
|
+
for (const item of outcomes) {
|
|
72
|
+
if (!isRecord(item) || !hasOnlyKeys(item, ['outcome', 'nativeOutcome']))
|
|
73
|
+
return null;
|
|
74
|
+
const { outcome, nativeOutcome } = item;
|
|
75
|
+
if (!isText(outcome) || !isText(nativeOutcome) || outcomeIds.has(outcome) || nativeIds.has(nativeOutcome))
|
|
76
|
+
return null;
|
|
77
|
+
const probability = probabilities[nativeOutcome];
|
|
78
|
+
if (!has(probabilities, nativeOutcome)
|
|
79
|
+
|| typeof probability !== 'number' || !Number.isFinite(probability)
|
|
80
|
+
|| probability < 0 || probability > 1)
|
|
81
|
+
return null;
|
|
82
|
+
sum += probability;
|
|
83
|
+
outcomeIds.add(outcome);
|
|
84
|
+
nativeIds.add(nativeOutcome);
|
|
85
|
+
entries.push({ outcome, nativeOutcome, probability });
|
|
86
|
+
}
|
|
87
|
+
if (Math.abs(sum - 1) > 1e-4)
|
|
88
|
+
return null;
|
|
89
|
+
return entries;
|
|
90
|
+
}
|
|
91
|
+
export function deriveDecision(input) {
|
|
92
|
+
const { rule, score, label, providerDecision } = input;
|
|
93
|
+
if (rule !== undefined && !isDecisionRule(rule))
|
|
94
|
+
return { ok: false, code: 'REQUEST_INVALID' };
|
|
95
|
+
if (providerDecision !== null) {
|
|
96
|
+
if (typeof providerDecision !== 'boolean')
|
|
97
|
+
return { ok: false, code: 'VERDICT_INVALID' };
|
|
98
|
+
if (rule && rule.kind !== 'provider')
|
|
99
|
+
return { ok: false, code: 'CAPABILITY_UNSUPPORTED' };
|
|
100
|
+
return { ok: true, decision: { pass: providerDecision, origin: 'provider' } };
|
|
101
|
+
}
|
|
102
|
+
if (!rule)
|
|
103
|
+
return { ok: true, decision: null };
|
|
104
|
+
if (rule.kind === 'provider')
|
|
105
|
+
return { ok: false, code: 'CAPABILITY_UNSUPPORTED' };
|
|
106
|
+
if (rule.kind === 'threshold') {
|
|
107
|
+
if (score === null)
|
|
108
|
+
return { ok: false, code: 'CAPABILITY_UNSUPPORTED' };
|
|
109
|
+
const checked = parseDecisionScore(score);
|
|
110
|
+
if (checked === null)
|
|
111
|
+
return { ok: false, code: 'VERDICT_INVALID' };
|
|
112
|
+
if (checked.scale.kind === 'unknown')
|
|
113
|
+
return { ok: false, code: 'CAPABILITY_UNSUPPORTED' };
|
|
114
|
+
if (rule.value < checked.scale.min || rule.value > checked.scale.max)
|
|
115
|
+
return { ok: false, code: 'REQUEST_INVALID' };
|
|
116
|
+
return { ok: true, decision: { pass: rule.op === 'gte' ? checked.value >= rule.value : checked.value <= rule.value,
|
|
117
|
+
origin: 'threshold', rule: { ...rule } } };
|
|
118
|
+
}
|
|
119
|
+
const declared = input.declaredLabels ?? [];
|
|
120
|
+
if (label === null || !declared.length)
|
|
121
|
+
return { ok: false, code: 'CAPABILITY_UNSUPPORTED' };
|
|
122
|
+
if (!declared.includes(label))
|
|
123
|
+
return { ok: false, code: 'VERDICT_INVALID' };
|
|
124
|
+
if (!rule.passing.every((v) => declared.includes(v)))
|
|
125
|
+
return { ok: false, code: 'REQUEST_INVALID' };
|
|
126
|
+
return { ok: true, decision: { pass: rule.passing.includes(label), origin: 'labels',
|
|
127
|
+
rule: { kind: 'labels', passing: [...rule.passing] } } };
|
|
128
|
+
}
|
|
129
|
+
/** Primary values must be meaningful; false and zero are valid evidence. */
|
|
130
|
+
export function hasDecisionVerdictValue(value) {
|
|
131
|
+
if (value.score !== null && parseDecisionScore(value.score) === null)
|
|
132
|
+
return false;
|
|
133
|
+
if (value.decision !== null && (!isRecord(value.decision) || typeof value.decision.pass !== 'boolean'
|
|
134
|
+
|| !['provider', 'threshold', 'labels'].includes(value.decision.origin)))
|
|
135
|
+
return false;
|
|
136
|
+
if (value.label !== null && (!isRecord(value.label) || !isText(value.label.value) || value.label.origin !== 'provider'))
|
|
137
|
+
return false;
|
|
138
|
+
return value.score !== null || value.decision !== null || value.label !== null;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=verdict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/decision/verdict.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,5 +30,6 @@ export * from './transport/claude-code-runtime-client.js';
|
|
|
30
30
|
export * from './transport/muse-runtime-client.js';
|
|
31
31
|
export * from './transport/mistral-runtime-client.js';
|
|
32
32
|
export * from './streaming.js';
|
|
33
|
+
export * from './speech/index.js';
|
|
33
34
|
export * from './tools.js';
|
|
34
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,iBAAiB,GAChF,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,iBAAiB,GAChF,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -30,5 +30,6 @@ export * from './transport/claude-code-runtime-client.js';
|
|
|
30
30
|
export * from './transport/muse-runtime-client.js';
|
|
31
31
|
export * from './transport/mistral-runtime-client.js';
|
|
32
32
|
export * from './streaming.js';
|
|
33
|
+
export * from './speech/index.js';
|
|
33
34
|
export * from './tools.js';
|
|
34
35
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,0BAA0B,EAAE,eAAe,EAAE,UAAU,GACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,0BAA0B,EAAE,eAAe,EAAE,UAAU,GACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
|
package/dist/providers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const providerIds: readonly ["openai", "gemini", "anthropic", "mistral", "cohere", "gcp", "local", "muse"];
|
|
1
|
+
export declare const providerIds: readonly ["openai", "gemini", "anthropic", "mistral", "cohere", "gcp", "local", "muse", "typesafe"];
|
|
2
2
|
export type ProviderId = (typeof providerIds)[number];
|
|
3
3
|
export type ProviderStatus = 'ready' | 'planned';
|
|
4
|
-
export type ProviderFamily = 'openai' | 'google' | 'anthropic' | 'mistral' | 'cohere' | 'meta';
|
|
4
|
+
export type ProviderFamily = 'openai' | 'google' | 'anthropic' | 'mistral' | 'cohere' | 'meta' | 'typesafe';
|
|
5
5
|
export type ReasoningTier = 'none' | 'light' | 'standard' | 'advanced';
|
|
6
6
|
export type ModelTaskHint = 'chat' | 'structured' | 'summary' | 'doc';
|
|
7
7
|
export declare const knownModelIds: readonly ["gpt-5.6-sol", "gpt-6-sol", "gpt-6.1-sol", "gpt-6-astra", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-6-luna", "gpt-5.5", "gpt-5.4-nano", "gpt-4.1-nano", "gemini-3.7-flash", "gemini-3.8-flash", "gemini-4-argon", "gemini-3.5-flash", "gemini-3.1-flash-lite", "claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-fable-5", "claude-fable-5-1", "mistral-small-2603", "magistral-medium-2509", "mistral-large-4", "mistral-medium-3.5", "zai-glm-5-3", "command-a-03-2025", "command-a-reasoning-08-2025", "google/gemini-3.5-flash@gcp", "google/gemini-3.1-flash-lite@gcp", "anthropic/claude-sonnet-4-6@gcp", "anthropic/claude-opus-4-6@gcp", "laneformer-2b-it", "muse-spark-1.3", "muse-spark-1.3-contributor", "muse-wonder-1.0", "muse-wonder-full-1.0"];
|
|
@@ -17,6 +17,7 @@ export declare const knownModelIdsByProvider: {
|
|
|
17
17
|
readonly gcp: readonly ["google/gemini-3.5-flash@gcp", "google/gemini-3.1-flash-lite@gcp", "anthropic/claude-sonnet-4-6@gcp", "anthropic/claude-opus-4-6@gcp"];
|
|
18
18
|
readonly local: readonly ["laneformer-2b-it"];
|
|
19
19
|
readonly muse: readonly ["muse-spark-1.3", "muse-spark-1.3-contributor", "muse-wonder-1.0", "muse-wonder-full-1.0"];
|
|
20
|
+
readonly typesafe: readonly [];
|
|
20
21
|
};
|
|
21
22
|
export interface ModelReference {
|
|
22
23
|
providerId: ProviderId;
|
|
@@ -25,6 +26,6 @@ export interface ModelReference {
|
|
|
25
26
|
export declare const toQualifiedModelId: (model: ModelReference) => QualifiedModelId;
|
|
26
27
|
export declare const antigravityModelFleet: readonly ["claude-sonnet-4-6", "claude-opus-4-6-thinking", "gemini-3-pro-high", "gemini-3-pro-low", "gpt-oss-120b-medium"];
|
|
27
28
|
export type AntigravityFleetModelId = (typeof antigravityModelFleet)[number];
|
|
28
|
-
export declare const isProviderId: (value: string) => value is "openai" | "gemini" | "anthropic" | "mistral" | "cohere" | "gcp" | "local" | "muse";
|
|
29
|
+
export declare const isProviderId: (value: string) => value is "openai" | "gemini" | "anthropic" | "mistral" | "cohere" | "gcp" | "local" | "muse" | "typesafe";
|
|
29
30
|
export declare const isKnownModelId: (value: string) => value is "gpt-5.6-sol" | "gpt-6-sol" | "gpt-6.1-sol" | "gpt-6-astra" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-6-luna" | "gpt-5.5" | "gpt-5.4-nano" | "gpt-4.1-nano" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-4-argon" | "gemini-3.5-flash" | "gemini-3.1-flash-lite" | "claude-sonnet-5" | "claude-opus-5" | "claude-opus-4-8" | "claude-fable-5" | "claude-fable-5-1" | "mistral-small-2603" | "magistral-medium-2509" | "mistral-large-4" | "mistral-medium-3.5" | "zai-glm-5-3" | "command-a-03-2025" | "command-a-reasoning-08-2025" | "google/gemini-3.5-flash@gcp" | "google/gemini-3.1-flash-lite@gcp" | "anthropic/claude-sonnet-4-6@gcp" | "anthropic/claude-opus-4-6@gcp" | "laneformer-2b-it" | "muse-spark-1.3" | "muse-spark-1.3-contributor" | "muse-wonder-1.0" | "muse-wonder-full-1.0";
|
|
30
31
|
//# sourceMappingURL=providers.d.ts.map
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,qGAAsG,CAAC;AAE/H,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5G,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAEtE,eAAO,MAAM,aAAa,ovBAiEhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;;;;;;CAqB4B,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,UAAW,cAAc,KAAG,gBAE1D,CAAC;AAUF,eAAO,MAAM,qBAAqB,4HAMxB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,eAAO,MAAM,YAAY,UAAW,MAAM,8GAEzC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,wxBAE3C,CAAC"}
|
package/dist/providers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const providerIds = ['openai', 'gemini', 'anthropic', 'mistral', 'cohere', 'gcp', 'local', 'muse'];
|
|
1
|
+
export const providerIds = ['openai', 'gemini', 'anthropic', 'mistral', 'cohere', 'gcp', 'local', 'muse', 'typesafe'];
|
|
2
2
|
export const knownModelIds = [
|
|
3
3
|
'gpt-5.6-sol',
|
|
4
4
|
'gpt-6-sol',
|
|
@@ -85,6 +85,7 @@ export const knownModelIdsByProvider = {
|
|
|
85
85
|
gcp: ['google/gemini-3.5-flash@gcp', 'google/gemini-3.1-flash-lite@gcp', 'anthropic/claude-sonnet-4-6@gcp', 'anthropic/claude-opus-4-6@gcp'],
|
|
86
86
|
local: ['laneformer-2b-it'],
|
|
87
87
|
muse: ['muse-spark-1.3', 'muse-spark-1.3-contributor', 'muse-wonder-1.0', 'muse-wonder-full-1.0'],
|
|
88
|
+
typesafe: [],
|
|
88
89
|
};
|
|
89
90
|
export const toQualifiedModelId = (model) => {
|
|
90
91
|
return `${model.providerId}:${model.modelId}`;
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import type { GenerateRequest, GenerateResponse, StreamRequest, StreamResult } f
|
|
|
3
3
|
import type { ModelProfile, ProviderDescriptor } from './catalog.js';
|
|
4
4
|
import type { ProviderId } from './providers.js';
|
|
5
5
|
import type { NormalizedProviderError } from './errors.js';
|
|
6
|
+
import type { EvaluatorRef, DecisionRequest } from './decision/request.js';
|
|
7
|
+
import type { DecisionAdapterResult } from './decision/adapter.js';
|
|
6
8
|
export interface CredentialValidationResult {
|
|
7
9
|
ok: boolean;
|
|
8
10
|
message?: string;
|
|
@@ -14,6 +16,10 @@ export interface ProviderRuntimeContext {
|
|
|
14
16
|
export interface ProviderAdapter {
|
|
15
17
|
readonly provider: ProviderDescriptor;
|
|
16
18
|
listModels(): readonly ModelProfile[];
|
|
19
|
+
listEvaluators?(): readonly EvaluatorRef[];
|
|
20
|
+
decision?(request: DecisionRequest, context?: ProviderRuntimeContext & {
|
|
21
|
+
signal?: AbortSignal;
|
|
22
|
+
}): Promise<DecisionAdapterResult>;
|
|
17
23
|
generate(request: GenerateRequest, context?: ProviderRuntimeContext): Promise<GenerateResponse>;
|
|
18
24
|
stream(request: StreamRequest, context?: ProviderRuntimeContext): Promise<StreamResult>;
|
|
19
25
|
validateAuth(source?: AuthInput): CredentialValidationResult;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,UAAU,IAAI,SAAS,YAAY,EAAE,CAAC;IACtC,cAAc,CAAC,IAAI,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjI,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChG,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,0BAA0B,CAAC;IAC7D,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAC/C,UAAU,IAAI,SAAS,YAAY,EAAE,CAAC;IACtC,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC;IAC5D,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC;CAC1D;AAED,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;gBAEzD,QAAQ,EAAE,SAAS,eAAe,EAAE;IAIhD,aAAa,IAAI,SAAS,kBAAkB,EAAE;IAI9C,UAAU,IAAI,SAAS,YAAY,EAAE;IAIrC,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;IAI3D,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe;CAOzD;AAED,eAAO,MAAM,sBAAsB,aACvB,SAAS,eAAe,EAAE,KACnC,gBAEF,CAAC"}
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAoCA,MAAM,OAAO,sBAAsB;IAChB,SAAS,CAA2C;IAErE,YAAY,QAAoC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,WAAW,CAAC,UAAsB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,UAAsB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAAoC,EAClB,EAAE;IACpB,OAAO,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { CapabilitySupport } from '../capabilities.js';
|
|
2
|
+
import type { SpeechAudioFormat, SpeechBinding, SpeechEngineIdentity } from './contracts.js';
|
|
3
|
+
export declare const speechCapabilityNames: readonly ["streamingStt", "partialTranscript", "nativeDuplex", "tts", "serverVad", "clientVad", "manualCommit", "playoutTruncate", "toolCancellation", "resume"];
|
|
4
|
+
export type SpeechCapabilityName = (typeof speechCapabilityNames)[number];
|
|
5
|
+
export type SpeechUsageUnit = 'audio-seconds' | 'audio-tokens' | 'text-tokens' | 'characters' | 'session-seconds';
|
|
6
|
+
/** Evidence is specific to this adapter/model/placement tuple, never inherited. */
|
|
7
|
+
export interface SpeechCapabilities {
|
|
8
|
+
readonly binding: SpeechEngineIdentity;
|
|
9
|
+
/** Missing sets are unqualified; explicit selectors require membership evidence. */
|
|
10
|
+
readonly languages?: readonly string[];
|
|
11
|
+
readonly voices?: readonly string[];
|
|
12
|
+
readonly regions?: readonly string[];
|
|
13
|
+
readonly features: Readonly<Record<SpeechCapabilityName, CapabilitySupport>>;
|
|
14
|
+
readonly inputFormats: readonly SpeechAudioFormat[];
|
|
15
|
+
readonly outputFormats: readonly SpeechAudioFormat[];
|
|
16
|
+
readonly usageUnits: readonly SpeechUsageUnit[];
|
|
17
|
+
}
|
|
18
|
+
export interface SpeechNegotiationRequest {
|
|
19
|
+
readonly binding: SpeechBinding;
|
|
20
|
+
readonly required: readonly SpeechCapabilityName[];
|
|
21
|
+
readonly inputFormats?: readonly SpeechAudioFormat[];
|
|
22
|
+
readonly outputFormats?: readonly SpeechAudioFormat[];
|
|
23
|
+
}
|
|
24
|
+
export type SpeechNegotiationResult = {
|
|
25
|
+
readonly ok: true;
|
|
26
|
+
readonly binding: SpeechBinding;
|
|
27
|
+
readonly inputFormat?: SpeechAudioFormat;
|
|
28
|
+
readonly outputFormat?: SpeechAudioFormat;
|
|
29
|
+
} | {
|
|
30
|
+
readonly ok: false;
|
|
31
|
+
readonly reason: 'unavailable' | 'identity';
|
|
32
|
+
} | {
|
|
33
|
+
readonly ok: false;
|
|
34
|
+
readonly reason: 'selector';
|
|
35
|
+
readonly selector: 'language' | 'voice' | 'region';
|
|
36
|
+
} | {
|
|
37
|
+
readonly ok: false;
|
|
38
|
+
readonly reason: 'capability';
|
|
39
|
+
readonly capability: SpeechCapabilityName;
|
|
40
|
+
readonly support: CapabilitySupport;
|
|
41
|
+
} | {
|
|
42
|
+
readonly ok: false;
|
|
43
|
+
readonly reason: 'format';
|
|
44
|
+
readonly direction: 'input' | 'output';
|
|
45
|
+
};
|
|
46
|
+
/** Pure tuple/media check. Gateway admission and cluster configuration remain authoritative. */
|
|
47
|
+
export declare const negotiateSpeech: (capabilities: SpeechCapabilities | undefined, request: SpeechNegotiationRequest) => SpeechNegotiationResult;
|
|
48
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/speech/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE7F,eAAO,MAAM,qBAAqB,kKAGxB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAElH,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACvD;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;CAAE,GACvF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;CAAE,GACvG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,CAAC;AAc9F,gGAAgG;AAChG,eAAO,MAAM,eAAe,iBACZ,kBAAkB,GAAG,SAAS,WAAW,wBAAwB,KAC9E,uBAuBF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const speechCapabilityNames = [
|
|
2
|
+
'streamingStt', 'partialTranscript', 'nativeDuplex', 'tts', 'serverVad',
|
|
3
|
+
'clientVad', 'manualCommit', 'playoutTruncate', 'toolCancellation', 'resume',
|
|
4
|
+
];
|
|
5
|
+
const bindingKeys = [
|
|
6
|
+
'providerId', 'modelId', 'modelRevision', 'adapterId', 'adapterRevision', 'placement',
|
|
7
|
+
];
|
|
8
|
+
const selectFormat = (offered, requested) => requested.find((wanted) => wanted.channels === 1 && [16000, 24000, 48000].includes(wanted.sampleRateHz)
|
|
9
|
+
&& ['pcm16-le', 'opus'].includes(wanted.codec)
|
|
10
|
+
&& offered.some((format) => format.codec === wanted.codec
|
|
11
|
+
&& format.sampleRateHz === wanted.sampleRateHz && format.channels === wanted.channels));
|
|
12
|
+
/** Pure tuple/media check. Gateway admission and cluster configuration remain authoritative. */
|
|
13
|
+
export const negotiateSpeech = (capabilities, request) => {
|
|
14
|
+
if (!capabilities)
|
|
15
|
+
return { ok: false, reason: 'unavailable' };
|
|
16
|
+
if (bindingKeys.some((key) => capabilities.binding[key] !== request.binding[key])) {
|
|
17
|
+
return { ok: false, reason: 'identity' };
|
|
18
|
+
}
|
|
19
|
+
for (const [selector, supported] of [
|
|
20
|
+
['language', capabilities.languages], ['voice', capabilities.voices], ['region', capabilities.regions],
|
|
21
|
+
]) {
|
|
22
|
+
const selected = request.binding[selector];
|
|
23
|
+
if (selected !== undefined && !supported?.includes(selected)) {
|
|
24
|
+
return { ok: false, reason: 'selector', selector };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (const capability of request.required) {
|
|
28
|
+
const support = capabilities.features[capability] ?? 'unknown';
|
|
29
|
+
if (support !== 'supported')
|
|
30
|
+
return { ok: false, reason: 'capability', capability, support };
|
|
31
|
+
}
|
|
32
|
+
const inputFormat = request.inputFormats && selectFormat(capabilities.inputFormats, request.inputFormats);
|
|
33
|
+
if (request.inputFormats && !inputFormat)
|
|
34
|
+
return { ok: false, reason: 'format', direction: 'input' };
|
|
35
|
+
const outputFormat = request.outputFormats && selectFormat(capabilities.outputFormats, request.outputFormats);
|
|
36
|
+
if (request.outputFormats && !outputFormat)
|
|
37
|
+
return { ok: false, reason: 'format', direction: 'output' };
|
|
38
|
+
return { ok: true, binding: request.binding,
|
|
39
|
+
...(inputFormat ? { inputFormat } : {}), ...(outputFormat ? { outputFormat } : {}) };
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/speech/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SpeechCapabilities } from './capabilities.js';
|
|
2
|
+
/** Each entry qualifies a full engine tuple. STT/TTS engines need no chat profile. */
|
|
3
|
+
export type SpeechEngineCatalogue = readonly SpeechCapabilities[];
|
|
4
|
+
/** L1 supplies the contract; engine qualification populates this catalogue later. */
|
|
5
|
+
export declare const speechEngineCatalogue: SpeechEngineCatalogue;
|
|
6
|
+
/** Return all adapters, revisions and placements; never choose an implicit default. */
|
|
7
|
+
export declare const getModelSpeechCapabilities: (providerId: string, modelId: string, catalogue?: SpeechEngineCatalogue) => readonly SpeechCapabilities[];
|
|
8
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/speech/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,sFAAsF;AACtF,MAAM,MAAM,qBAAqB,GAAG,SAAS,kBAAkB,EAAE,CAAC;AAElE,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,qBAA0B,CAAC;AAE/D,uFAAuF;AACvF,eAAO,MAAM,0BAA0B,eACzB,MAAM,WACT,MAAM,wCAEd,SAAS,kBAAkB,EACiD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** L1 supplies the contract; engine qualification populates this catalogue later. */
|
|
2
|
+
export const speechEngineCatalogue = [];
|
|
3
|
+
/** Return all adapters, revisions and placements; never choose an implicit default. */
|
|
4
|
+
export const getModelSpeechCapabilities = (providerId, modelId, catalogue = speechEngineCatalogue) => catalogue.filter((entry) => entry.binding.providerId === providerId && entry.binding.modelId === modelId);
|
|
5
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/speech/catalog.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAA0B,EAAE,CAAC;AAE/D,uFAAuF;AACvF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,OAAe,EACf,YAAmC,qBAAqB,EACzB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7D,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import type { SpeechCapabilities, SpeechCapabilityName } from './capabilities.js';
|
|
2
|
+
export declare const speechPlacements: readonly ["endpoint-native", "browser-wasm", "local-companion", "cluster-hosted", "cloud-relay"];
|
|
3
|
+
export type SpeechPlacement = (typeof speechPlacements)[number];
|
|
4
|
+
export type SpeechPipeline = 'chained' | 'native-duplex';
|
|
5
|
+
export type SpeechMicMode = 'key' | 'open-mic';
|
|
6
|
+
export type SpeechStage = 'stt' | 'tts' | 'duplex';
|
|
7
|
+
/** Exact engine tuple, independent of the existing agent model/route. No secrets. */
|
|
8
|
+
export interface SpeechEngineIdentity {
|
|
9
|
+
readonly providerId: string;
|
|
10
|
+
readonly modelId: string;
|
|
11
|
+
readonly modelRevision: string;
|
|
12
|
+
readonly adapterId: string;
|
|
13
|
+
readonly adapterRevision: string;
|
|
14
|
+
readonly placement: SpeechPlacement;
|
|
15
|
+
}
|
|
16
|
+
/** Session selectors are independent of the engine's catalogue identity. */
|
|
17
|
+
export interface SpeechBinding extends SpeechEngineIdentity {
|
|
18
|
+
readonly language?: string;
|
|
19
|
+
readonly voice?: string;
|
|
20
|
+
readonly region?: string;
|
|
21
|
+
readonly accountRef?: string;
|
|
22
|
+
readonly resourceRef?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SpeechConfigurationReference {
|
|
25
|
+
readonly profileId: string;
|
|
26
|
+
readonly configRevision: string;
|
|
27
|
+
readonly policyRef: string;
|
|
28
|
+
}
|
|
29
|
+
export interface SpeechTarget {
|
|
30
|
+
readonly sessionId: string;
|
|
31
|
+
readonly sourceGeneration: string;
|
|
32
|
+
readonly controllerEpoch: number;
|
|
33
|
+
readonly consentRevision: string;
|
|
34
|
+
}
|
|
35
|
+
export interface SpeechAudioFormat {
|
|
36
|
+
readonly codec: 'pcm16-le' | 'opus';
|
|
37
|
+
readonly sampleRateHz: 16000 | 24000 | 48000;
|
|
38
|
+
readonly channels: 1;
|
|
39
|
+
}
|
|
40
|
+
/** Timestamps are comparable only within the named monotonic clock domain. */
|
|
41
|
+
export interface SpeechEventMetadata {
|
|
42
|
+
readonly schemaVersion: 1;
|
|
43
|
+
readonly speechSessionId: string;
|
|
44
|
+
readonly connectionEpoch: number;
|
|
45
|
+
readonly eventId: string;
|
|
46
|
+
readonly sequence: number;
|
|
47
|
+
readonly causalCommandId?: string;
|
|
48
|
+
readonly clock: {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly monotonicMs: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
interface SpeechAudioFrame extends SpeechEventMetadata {
|
|
54
|
+
readonly streamId: string;
|
|
55
|
+
readonly sampleCount: number;
|
|
56
|
+
readonly format: SpeechAudioFormat;
|
|
57
|
+
/** Binary media is transient; never persist it in control/usage event logs. */
|
|
58
|
+
readonly payload: Uint8Array;
|
|
59
|
+
}
|
|
60
|
+
export interface SpeechInputFrame extends SpeechAudioFrame {
|
|
61
|
+
readonly type: 'audio.input';
|
|
62
|
+
readonly utteranceId: string;
|
|
63
|
+
readonly capturedAtMs: number;
|
|
64
|
+
}
|
|
65
|
+
export interface SpeechOutputFrame extends SpeechAudioFrame {
|
|
66
|
+
readonly type: 'audio.output';
|
|
67
|
+
readonly responseId: string;
|
|
68
|
+
readonly outputItemId: string;
|
|
69
|
+
readonly turnId: string;
|
|
70
|
+
readonly turnEpoch: number;
|
|
71
|
+
readonly sampleOffset: number;
|
|
72
|
+
}
|
|
73
|
+
export interface SpeechPlaybackProgress extends SpeechEventMetadata {
|
|
74
|
+
readonly type: 'playback.progress';
|
|
75
|
+
readonly outputItemId: string;
|
|
76
|
+
readonly playedSamples: number;
|
|
77
|
+
readonly uncertaintySamples: number;
|
|
78
|
+
}
|
|
79
|
+
interface SpeechTranscriptBase extends SpeechEventMetadata {
|
|
80
|
+
readonly binding: SpeechBinding;
|
|
81
|
+
readonly utteranceId: string;
|
|
82
|
+
readonly revision: number;
|
|
83
|
+
readonly text: string;
|
|
84
|
+
}
|
|
85
|
+
export interface SpeechTranscriptPartial extends SpeechTranscriptBase {
|
|
86
|
+
readonly type: 'transcript.partial';
|
|
87
|
+
/** Replace a UTF-16 range of the previous hypothesis; display only. */
|
|
88
|
+
readonly replaces: {
|
|
89
|
+
readonly start: number;
|
|
90
|
+
readonly end: number;
|
|
91
|
+
};
|
|
92
|
+
readonly confidence?: number;
|
|
93
|
+
}
|
|
94
|
+
export interface SpeechTranscriptFinal extends SpeechTranscriptBase {
|
|
95
|
+
readonly type: 'transcript.final';
|
|
96
|
+
readonly replaces?: never;
|
|
97
|
+
readonly audioInterval: {
|
|
98
|
+
readonly startMs: number;
|
|
99
|
+
readonly endMs: number;
|
|
100
|
+
};
|
|
101
|
+
readonly language: string;
|
|
102
|
+
}
|
|
103
|
+
/** Finals are immutable; a correction is a separate user edit, never a new submission. */
|
|
104
|
+
export type SpeechTranscript = SpeechTranscriptPartial | SpeechTranscriptFinal;
|
|
105
|
+
/** Pure display projection for one utterance. L2 owns stream ordering and durable submission. */
|
|
106
|
+
export declare const reviseSpeechTranscript: (previous: SpeechTranscript | undefined, next: SpeechTranscript) => SpeechTranscript | undefined;
|
|
107
|
+
export interface SpeechSessionRequest {
|
|
108
|
+
readonly protocolVersion: 1;
|
|
109
|
+
readonly configuration: SpeechConfigurationReference;
|
|
110
|
+
readonly target: SpeechTarget;
|
|
111
|
+
readonly pipeline: SpeechPipeline;
|
|
112
|
+
readonly micMode: SpeechMicMode;
|
|
113
|
+
readonly bindings: Readonly<Partial<Record<SpeechStage, SpeechBinding>>>;
|
|
114
|
+
readonly requiredCapabilities: readonly SpeechCapabilityName[];
|
|
115
|
+
readonly inputFormats: readonly SpeechAudioFormat[];
|
|
116
|
+
readonly outputFormats: readonly SpeechAudioFormat[];
|
|
117
|
+
readonly maxDurationMs: number;
|
|
118
|
+
readonly maxCostUsd: number;
|
|
119
|
+
readonly budgetRef: string;
|
|
120
|
+
readonly allowedPlacements: readonly SpeechPlacement[];
|
|
121
|
+
readonly egressPolicyRef: string;
|
|
122
|
+
}
|
|
123
|
+
/** Trusted admission pins the effective tuple before any audio is transmitted. */
|
|
124
|
+
export interface SpeechSessionReceipt {
|
|
125
|
+
readonly protocolVersion: 1;
|
|
126
|
+
readonly speechSessionId: string;
|
|
127
|
+
readonly connectionEpoch: number;
|
|
128
|
+
readonly configuration: SpeechConfigurationReference;
|
|
129
|
+
readonly target: SpeechTarget;
|
|
130
|
+
readonly pipeline: SpeechPipeline;
|
|
131
|
+
readonly micMode: SpeechMicMode;
|
|
132
|
+
readonly stages: Readonly<Partial<Record<SpeechStage, SpeechCapabilities>>>;
|
|
133
|
+
readonly inputFormat?: SpeechAudioFormat;
|
|
134
|
+
readonly outputFormat?: SpeechAudioFormat;
|
|
135
|
+
}
|
|
136
|
+
export type SpeechSessionState = 'opening' | 'ready' | 'closing' | 'closed' | 'failed';
|
|
137
|
+
export type SpeechCommand = SpeechEventMetadata & ({
|
|
138
|
+
readonly type: 'input.commit' | 'input.clear';
|
|
139
|
+
readonly utteranceId: string;
|
|
140
|
+
} | {
|
|
141
|
+
readonly type: 'session.mute';
|
|
142
|
+
readonly muted: boolean;
|
|
143
|
+
} | {
|
|
144
|
+
readonly type: 'session.close';
|
|
145
|
+
} | {
|
|
146
|
+
readonly type: 'playback.clear';
|
|
147
|
+
readonly turnEpoch: number;
|
|
148
|
+
} | {
|
|
149
|
+
readonly type: 'response.cancel';
|
|
150
|
+
readonly responseId: string;
|
|
151
|
+
readonly turnEpoch: number;
|
|
152
|
+
});
|
|
153
|
+
export type SpeechEvent = SpeechInputFrame | SpeechOutputFrame | SpeechTranscript | SpeechPlaybackProgress | (SpeechEventMetadata & ({
|
|
154
|
+
readonly type: 'vad.speech_started' | 'vad.speech_stopped';
|
|
155
|
+
readonly utteranceId: string;
|
|
156
|
+
readonly audioOffsetMs: number;
|
|
157
|
+
readonly detector: 'client' | 'server';
|
|
158
|
+
readonly confidence?: number;
|
|
159
|
+
} | {
|
|
160
|
+
readonly type: 'audio.output_done';
|
|
161
|
+
readonly responseId: string;
|
|
162
|
+
readonly outputItemId: string;
|
|
163
|
+
readonly turnId: string;
|
|
164
|
+
readonly turnEpoch: number;
|
|
165
|
+
} | {
|
|
166
|
+
readonly type: 'provider.cancelled';
|
|
167
|
+
readonly responseId: string;
|
|
168
|
+
} | {
|
|
169
|
+
readonly type: 'session.state';
|
|
170
|
+
readonly state: SpeechSessionState;
|
|
171
|
+
} | {
|
|
172
|
+
readonly type: 'audio.gap';
|
|
173
|
+
readonly streamId: string;
|
|
174
|
+
readonly startMs: number;
|
|
175
|
+
readonly endMs: number;
|
|
176
|
+
} | {
|
|
177
|
+
readonly type: 'session.degraded' | 'error';
|
|
178
|
+
readonly reason: string;
|
|
179
|
+
readonly retryable: boolean;
|
|
180
|
+
}));
|
|
181
|
+
/** Duplex provider port, not the agent-control authority. Writes must honor backpressure. */
|
|
182
|
+
export interface SpeechSession {
|
|
183
|
+
readonly receipt: SpeechSessionReceipt;
|
|
184
|
+
readonly events: AsyncIterable<SpeechEvent>;
|
|
185
|
+
write(frame: SpeechInputFrame, signal?: AbortSignal): Promise<void>;
|
|
186
|
+
command(command: SpeechCommand, signal?: AbortSignal): Promise<void>;
|
|
187
|
+
close(): Promise<void>;
|
|
188
|
+
}
|
|
189
|
+
export interface SpeechAdapter {
|
|
190
|
+
readonly capabilities: SpeechCapabilities;
|
|
191
|
+
open(request: SpeechSessionRequest, signal: AbortSignal): Promise<SpeechSession>;
|
|
192
|
+
}
|
|
193
|
+
/** Validate frame-local metadata; epoch/order/queue enforcement belongs to L2. */
|
|
194
|
+
export declare const isValidSpeechAudioFrame: (frame: SpeechInputFrame | SpeechOutputFrame) => boolean;
|
|
195
|
+
export {};
|
|
196
|
+
//# sourceMappingURL=contracts.d.ts.map
|