@agimon-ai/po-voice 0.0.0-alpha.0 → 0.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -15
- package/dist/apiContracts.cjs +11 -3
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs +11 -3
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/browserClientMediaUrl-CF3HiKG2.cjs +16 -0
- package/dist/browserClientMediaUrl-CF3HiKG2.cjs.map +1 -0
- package/dist/browserClientMediaUrl-CJGaGD6J.d.mts +6 -0
- package/dist/browserClientMediaUrl-CJGaGD6J.d.mts.map +1 -0
- package/dist/browserClientMediaUrl-CW2lmHl4.mjs +11 -0
- package/dist/browserClientMediaUrl-CW2lmHl4.mjs.map +1 -0
- package/dist/{clientMedia-DuA4aYhD.cjs → clientMedia-DMBtzBH2.cjs} +21 -6
- package/dist/clientMedia-DMBtzBH2.cjs.map +1 -0
- package/dist/{clientCaptureActivity-DN4xQtmw.d.mts → clientMedia-DOJRBEkI.d.mts} +55 -38
- package/dist/clientMedia-DOJRBEkI.d.mts.map +1 -0
- package/dist/{clientMedia-CfTfc9_4.mjs → clientMedia-DZ_-WG5x.mjs} +14 -5
- package/dist/clientMedia-DZ_-WG5x.mjs.map +1 -0
- package/dist/clientMedia.cjs +804 -2
- package/dist/clientMedia.cjs.map +1 -1
- package/dist/clientMedia.d.mts +182 -2
- package/dist/clientMedia.d.mts.map +1 -0
- package/dist/clientMedia.mjs +802 -2
- package/dist/clientMedia.mjs.map +1 -1
- package/dist/extensions/native.mjs +1424 -0
- package/dist/extensions/native.mjs.map +1 -0
- package/dist/extensions/server.cjs +342 -945
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +312 -915
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/extensions/web.mjs +2771 -2421
- package/dist/extensions/web.mjs.map +1 -1
- package/dist/{index-C95HCjmT.d.mts → index-CwEfrh0r.d.mts} +2 -2
- package/dist/{index-C95HCjmT.d.mts.map → index-CwEfrh0r.d.mts.map} +1 -1
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/realtime-CdAlhPoo.mjs +24 -0
- package/dist/realtime-CdAlhPoo.mjs.map +1 -0
- package/dist/realtime-DwExEu8q.cjs +35 -0
- package/dist/realtime-DwExEu8q.cjs.map +1 -0
- package/dist/voiceWorker.d.mts +1 -1
- package/package.json +44 -13
- package/src/types/clientMedia.ts +7 -4
- package/src/types/manualTranscription.ts +1 -1
- package/dist/clientCaptureActivity-DN4xQtmw.d.mts.map +0 -1
- package/dist/clientMedia-CfTfc9_4.mjs.map +0 -1
- package/dist/clientMedia-DuA4aYhD.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -7,6 +7,17 @@ config API, including file hashes, atomic saves, numeric values, and scope valid
|
|
|
7
7
|
remain global settings. Browser input selection is separate from the host ffmpeg
|
|
8
8
|
`voice.recorder.device` option.
|
|
9
9
|
|
|
10
|
+
`voice.mode` is what new sessions start with: `legacy` (daily work: transcription, auto-capture and
|
|
11
|
+
narration) or `live` (the Live conversation). `voice.live.voice` and `voice.live.model` pick the Live
|
|
12
|
+
voice and realtime model; unset fields use the realtime defaults. `voice.mode` and `voice.live` are
|
|
13
|
+
global-only, so repository settings show them locked.
|
|
14
|
+
|
|
15
|
+
While voice runs, the Voice group in the session's activity rail switches that session between Live
|
|
16
|
+
and Daily work. Only the session holding voice can switch; another session sees the running mode
|
|
17
|
+
read-only with "route Live here" or "move daily work here". Switching while muted stops voice and
|
|
18
|
+
lands idle on the picked mode. Picking Live while signed out shows a sign-in hint and keeps daily
|
|
19
|
+
work running. When nothing runs, the group is hidden and `v e` starts the session's mode.
|
|
20
|
+
|
|
10
21
|
The composer Voice button records on whatever input the browser is already using; there is no
|
|
11
22
|
device picker. Autonomous voice asks which input to open only when the browser reports more than
|
|
12
23
|
one, and remembers the answer in that browser's local storage until the set of inputs changes.
|
|
@@ -15,16 +26,19 @@ connection lease. Manual dictation appends to the draft until Send.
|
|
|
15
26
|
|
|
16
27
|
Voice owns these authenticated server endpoints:
|
|
17
28
|
|
|
18
|
-
| Mount
|
|
19
|
-
|
|
|
20
|
-
| `/api/plugins/voice`
|
|
21
|
-
| `/api/sessions/:sessionId/
|
|
22
|
-
| same
|
|
29
|
+
| Mount | Endpoint | Purpose |
|
|
30
|
+
| ---------------------------------------------------------------- | ---------------- | -------------------------------------------------------- |
|
|
31
|
+
| `/api/plugins/voice` | `GET /readiness` | Check configuration and local transcription dependencies |
|
|
32
|
+
| `/api/workspaces/:workspaceId/sessions/:sessionId/plugins/voice` | `GET /status` | Read lifecycle and media readiness |
|
|
33
|
+
| same | `POST /control` | Send `{action, mode?, target?, revision?}` |
|
|
23
34
|
|
|
24
|
-
Control actions are `status`, `manual`, `activate`, `deactivate`, `mute`, `unmute`, `interrupt`,
|
|
25
|
-
and `transfer` (with a target catalog order and its catalog revision).
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
Control actions are `status`, `manual`, `activate`, `deactivate`, `switch`, `mute`, `unmute`, `interrupt`,
|
|
36
|
+
and `transfer` (with a target catalog order and its catalog revision). `activate` takes an optional `mode`
|
|
37
|
+
(`legacy` for daily work, `live` for the Live conversation) and stops the other mode in this session first.
|
|
38
|
+
`switch` requires `mode`: running and unmuted, it checks the target can start, stops, then starts it; muted, it
|
|
39
|
+
stops and lands idle on the target; idle, it only records the session's pick. The typed session method
|
|
40
|
+
`voice.control` uses the same operations as minor-mode actions. Browser recording uploads continue to use
|
|
41
|
+
`/api/workspaces/:workspaceId/sessions/:sessionId/plugins/voice-media/manual/transcribe`.
|
|
28
42
|
|
|
29
43
|
The native server composes Voice controllers with one session media broker. Workers receive PCM
|
|
30
44
|
on a dedicated media port. No terminal editor or Pi ExtensionContext is emulated. Live voice
|
|
@@ -47,7 +61,7 @@ agent or for half-duplex Voice. Pi keeps its selected model, reasoning, tools, a
|
|
|
47
61
|
Team and Workflow. The companion handles speech and forwards fresh action requests to Pi;
|
|
48
62
|
it does not execute tools or launch a second coding agent.
|
|
49
63
|
|
|
50
|
-
The experimental live path connects browser WebRTC, Po
|
|
64
|
+
The experimental live path connects browser WebRTC, Po's shared ChatGPT subscription sign-in,
|
|
51
65
|
the exclusive media lease, bounded session context, and main-agent requests/results.
|
|
52
66
|
Subscription connectivity and a synthetic echo roundtrip have been exercised. Physical
|
|
53
67
|
playback, echo safety, interruption recovery and microphone usability remain **unqualified**.
|
|
@@ -55,12 +69,11 @@ playback, echo safety, interruption recovery and microphone usability remain **u
|
|
|
55
69
|
For a separately approved trial:
|
|
56
70
|
|
|
57
71
|
1. Select `voice.mode: live` in global configuration. Repository configuration cannot enable it.
|
|
58
|
-
2.
|
|
59
|
-
in
|
|
60
|
-
separate from Codex and Pi OAuth. `/voice-auto login-cancel` cancels the attempt.
|
|
72
|
+
2. Sign in to **ChatGPT for Po features** under Settings > Providers (or with `/login`).
|
|
73
|
+
Voice reads that shared sign-in from Pi's `auth.json`; Image generation and Web search use it too.
|
|
61
74
|
3. With separate provider and microphone consent, explicitly activate Voice with a connected
|
|
62
75
|
WebRTC-capable browser. Selecting live or signing in does not activate capture.
|
|
63
|
-
4. Use
|
|
76
|
+
4. Use the rail controls, `v e`, or the session `voice.control` API (`switch`, `mute`, `unmute`, `interrupt`, `deactivate`).
|
|
64
77
|
|
|
65
78
|
Pi's settled final text is returned as a correlated companion result, separately from the
|
|
66
79
|
initial submission acknowledgement. Later Pi turns, including turns responding to Team or
|
|
@@ -170,7 +183,7 @@ For server-streamed narration, the browser uses the exact 16 kHz PCM as a local
|
|
|
170
183
|
|
|
171
184
|
## Commands and tools
|
|
172
185
|
|
|
173
|
-
-
|
|
186
|
+
- `mute` pauses microphone capture without disabling narration; `unmute` resumes capture. Both are `voice.control` actions and rail controls.
|
|
174
187
|
- While autonomous capture is active, say `hey doom` at the beginning of a segment to open a long composed prompt. Later finalized segments are buffered until `that's it` submits the combined text or `scratch that` discards it in the example configuration.
|
|
175
188
|
- `describe_voice_tools` returns the active session's spoken capability catalog.
|
|
176
189
|
- `use_voice_tools` executes a bounded ordered batch against that catalog.
|
package/dist/apiContracts.cjs
CHANGED
|
@@ -16,11 +16,14 @@ const voiceControlMethod = (0, require("@agimon-ai/po-core/pluginProtocol").defi
|
|
|
16
16
|
"manual",
|
|
17
17
|
"activate",
|
|
18
18
|
"deactivate",
|
|
19
|
+
"switch",
|
|
19
20
|
"mute",
|
|
20
21
|
"unmute",
|
|
21
22
|
"interrupt",
|
|
22
23
|
"transfer"
|
|
23
24
|
].map((value) => typebox.Type.Literal(value))),
|
|
25
|
+
/** The voice to start (`activate`) or move to (`switch`). `switch` requires it. */
|
|
26
|
+
mode: typebox.Type.Optional(typebox.Type.Union([typebox.Type.Literal("legacy"), typebox.Type.Literal("live")])),
|
|
24
27
|
target: typebox.Type.Optional(typebox.Type.Integer({ minimum: 1 })),
|
|
25
28
|
revision: typebox.Type.Optional(typebox.Type.String({
|
|
26
29
|
minLength: 1,
|
|
@@ -178,7 +181,8 @@ const GlobalLiveStatus = typebox.Type.Object({
|
|
|
178
181
|
media: typebox.Type.Object({
|
|
179
182
|
client: B,
|
|
180
183
|
realtime: B
|
|
181
|
-
})
|
|
184
|
+
}),
|
|
185
|
+
signedIn: O(B)
|
|
182
186
|
});
|
|
183
187
|
const Version = { version: typebox.Type.Literal(3) };
|
|
184
188
|
const Targets = typebox.Type.Array(typebox.Type.Object({
|
|
@@ -476,7 +480,7 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
|
|
|
476
480
|
path: "/manual/transcribe",
|
|
477
481
|
method: "POST",
|
|
478
482
|
authentication: "owner",
|
|
479
|
-
description: "Transcribe at most 4 MiB of WebM/Opus
|
|
483
|
+
description: "Transcribe at most 4 MiB of WebM/Opus, MP4/AAC, or WAV audio, at most 300000 milliseconds.",
|
|
480
484
|
parameters: [{
|
|
481
485
|
name: "x-doom-audio-duration-ms",
|
|
482
486
|
in: "header",
|
|
@@ -489,7 +493,11 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
|
|
|
489
493
|
body: {
|
|
490
494
|
required: true,
|
|
491
495
|
contentType: "audio/webm",
|
|
492
|
-
contentTypes: [
|
|
496
|
+
contentTypes: [
|
|
497
|
+
"audio/webm",
|
|
498
|
+
"audio/mp4",
|
|
499
|
+
"audio/wav"
|
|
500
|
+
],
|
|
493
501
|
schema: S
|
|
494
502
|
},
|
|
495
503
|
responses: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.cjs","names":["defineDoomPluginMethod","Type","Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/voiceControl.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineDoomPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { Type } from 'typebox';\n\nexport const voiceControlMethod = defineDoomPluginMethod({\n service: 'voice',\n method: 'control',\n scope: 'session',\n direction: 'client-to-server',\n input: Type.Object(\n {\n action: Type.Union(\n ['status', 'manual', 'activate', 'deactivate', 'mute', 'unmute', 'interrupt', 'transfer'].map((value) =>\n Type.Literal(value),\n ),\n ),\n target: Type.Optional(Type.Integer({ minimum: 1 })),\n revision: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n },\n { additionalProperties: false },\n ),\n output: Type.Object(\n {\n state: Type.String(),\n mode: Type.String(),\n manual: Type.String(),\n muted: Type.Boolean(),\n error: Type.Optional(Type.String()),\n },\n { additionalProperties: false },\n ),\n});\n","import { defineApiContract, jsonApiResponses, type DoomHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport { voiceControlMethod } from './voiceControl';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Client = { clientId: S, connectionId: S };\nconst Configuration = Type.Object({\n mode: values(['manual', 'autonomous']),\n activityControl: values(['host', 'client']),\n endpointSilenceMs: O(Type.Integer({ minimum: 250 })),\n});\nconst Playback = { playbackId: S, outcome: values(['completed', 'stopped', 'aborted', 'failed']), error: O(S) };\nconst Sequence = { sequence: N };\nconst Control = values(['mute', 'unmute', 'interrupt']);\nconst Browser = Type.Object({\n connection: values(['connecting', 'connected', 'closed', 'failed']),\n listening: B,\n speaking: B,\n muted: B,\n error: O(S),\n});\nexport const VoiceMediaEventSchema = Type.Union([\n Type.Object({\n ...Sequence,\n type: Type.Literal('capture-start'),\n captureId: S,\n sampleRate: Type.Literal(16000),\n channels: Type.Literal(1),\n bitsPerSample: Type.Literal(16),\n configuration: Configuration,\n }),\n Type.Object({ ...Sequence, type: values(['capture-stop', 'capture-abort']), captureId: S }),\n Type.Object({\n ...Sequence,\n type: Type.Literal('playback-start'),\n playbackId: S,\n text: S,\n delivery: O(values(['client', 'streamed'])),\n voice: O(S),\n rate: O(N),\n }),\n Type.Object({ ...Sequence, type: values(['playback-stop', 'playback-abort']), playbackId: S }),\n Type.Object({ ...Sequence, type: values(['realtime-start', 'realtime-stop']), activationId: S }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-control'), activationId: S, action: Control }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-send'), activationId: S, messages: Type.Array(S) }),\n]);\nconst RealtimeEvent = Type.Union([\n Type.Object({ type: Type.Literal('ready') }),\n Type.Object({ type: Type.Literal('transcript'), role: values(['user', 'assistant']), text: S, complete: B }),\n Type.Object({ type: Type.Literal('request'), requestId: S, text: S }),\n Type.Object({ type: Type.Literal('error'), code: S }),\n]);\nconst RealtimeSnapshot = Type.Object({\n activationId: S,\n state: values(['connecting', 'active', 'closed', 'failed']),\n cursor: N,\n events: Type.Array(Type.Object({ sequence: N, event: RealtimeEvent })),\n browser: O(Browser),\n});\nconst Wake = Type.Object({ eventEpoch: S, sequence: N });\nconst GlobalLiveStatus = Type.Object({\n version: Type.Literal(1),\n state: values(['disabled', 'starting', 'active', 'draining', 'shuttingDown']),\n activeSessionId: Type.Union([S, Type.Null()]),\n muted: B,\n error: O(S),\n media: Type.Object({ client: B, realtime: B }),\n});\nconst Version = { version: Type.Literal(3) };\nconst Targets = Type.Array(Type.Object({ handle: S, label: S, order: N }), { maxItems: 32 });\nconst OwnershipAction = values(['catalog', 'prepare', 'activate', 'deactivate', 'readiness', 'fence']);\nconst Acknowledgement = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n ok: B,\n active: B,\n error: O(S),\n});\nconst Command = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n targets: O(Targets),\n catalogRevision: O(S),\n handoffId: O(S),\n controllerId: O(S),\n leaseId: O(S),\n revision: O(N),\n});\nconst Snapshot = Type.Object({\n registration: O(Type.Object({ ...Version, leaseId: S, revision: N, label: S, eligible: B, active: B })),\n targets: Targets,\n catalogRevision: O(S),\n activation: O(Type.Object({ ...Version, requestId: S })),\n handoff: O(Type.Object({ ...Version, requestId: S, handle: S, catalogRevision: S })),\n acknowledgement: O(Acknowledgement),\n});\nconst Errors = Object.fromEntries(\n [400, 404, 409, 410, 413, 415, 429, 500, 502, 503, 504].map((status) => [\n status,\n { description: 'Voice request failed.', schema: Type.Object({ error: S, code: O(S) }) },\n ]),\n);\nconst route = (\n path: string,\n method: 'GET' | 'POST',\n output?: object,\n input?: object,\n query: string[] = [],\n status = 200,\n): DoomHttpContract => ({\n id: `voice.${path.slice(1).replaceAll('/', '.')}`,\n scope: 'session',\n basePath: 'voice-media',\n path,\n method,\n authentication: 'owner',\n description: `Voice media ${path}.`,\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? { availability: 'Internal broker route; requires the host-issued bearer token for this route namespace.' }\n : {}),\n parameters: [\n ...query.map((name) => ({ name, in: 'query' as const, required: !['after', 'wait'].includes(name), schema: S })),\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? [\n {\n name: 'Authorization',\n in: 'header' as const,\n required: true,\n schema: Type.String({ pattern: '^Bearer .+' }),\n },\n ]\n : []),\n ],\n ...(input ? { body: { required: true, contentType: 'application/json', schema: input } } : {}),\n responses: {\n ...Errors,\n [output ? status : 204]: {\n description: output ? 'Voice response.' : 'Accepted with no response body.',\n ...(output ? { schema: output } : {}),\n },\n },\n});\nconst pcm = (path: string, method: 'GET' | 'POST', query: string[]): DoomHttpContract => {\n const result = route(path, method, undefined, undefined, query);\n result.description =\n 'PCM signed 16-bit little-endian, 16000 Hz, mono. Chunks contain complete samples. Activity headers carry state, level, elapsed time, epoch and speech duration. A 204 response carries x-po-capture-state or x-po-playback-state when applicable.';\n if (method === 'POST') result.body = { required: true, contentType: 'application/vnd.po.pcm-s16le', schema: S };\n else result.responses['200'] = { description: 'PCM bytes.', contentType: 'application/vnd.po.pcm-s16le', schema: S };\n return result;\n};\nexport const apiContracts = defineApiContract({\n version: 1,\n protocols: { 'voice-media': '6', 'voice-ownership': '3' },\n dynamic: ['Realtime event strings and SDP are provider-defined protocol documents passed through the media broker.'],\n http: [\n {\n id: 'voice.status',\n scope: 'session',\n basePath: 'voice',\n path: '/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Voice session status and media readiness.',\n responses: jsonApiResponses(\n Type.Object({\n ...voiceControlMethod.output.properties,\n media: Type.Object({ closed: B, capture: B, playback: B, realtime: B }),\n readiness: Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n }),\n ),\n },\n {\n id: 'voice.control.http',\n scope: 'session',\n basePath: 'voice',\n path: '/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Control the voice session.',\n body: { required: true, contentType: 'application/json', schema: voiceControlMethod.input },\n responses: jsonApiResponses(voiceControlMethod.output),\n },\n route(\n '/client/connect',\n 'POST',\n Type.Object({ version: Type.Literal(6), cursor: N, eventEpoch: O(S), heartbeatMs: O(N) }),\n Type.Object({\n version: Type.Literal(6),\n ...Client,\n clientKind: values(['browser', 'native']),\n controlLocation: values(['local', 'remote']),\n capabilities: Type.Object({\n capture: B,\n playback: B,\n captureActivity: B,\n autonomousOrchestration: B,\n playbackDucking: O(B),\n realtime: O(B),\n }),\n }),\n ),\n route('/client/disconnect', 'POST', undefined, Type.Object(Client)),\n route('/client/heartbeat', 'POST', Wake, Type.Object(Client)),\n {\n ...route('/client/events', 'GET', VoiceMediaEventSchema, undefined, [\n 'clientId',\n 'connectionId',\n 'after',\n 'wait',\n ]),\n responses: {\n ...Errors,\n '200': { description: 'Next event.', schema: VoiceMediaEventSchema },\n '204': { description: 'No pending event.' },\n },\n },\n pcm('/client/audio', 'POST', ['clientId', 'connectionId', 'captureId']),\n route('/client/capture-stopped', 'POST', undefined, Type.Object({ ...Client, captureId: S, error: O(S) })),\n pcm('/client/playback-audio', 'GET', ['clientId', 'connectionId', 'playbackId']),\n route('/client/playback-result', 'POST', undefined, Type.Object({ ...Client, ...Playback })),\n route(\n '/host/capture/start',\n 'POST',\n Type.Object({ configuration: Configuration }),\n Type.Object({ captureId: S, configuration: O(Configuration) }),\n [],\n 201,\n ),\n pcm('/host/capture/audio', 'GET', ['captureId']),\n ...['stop', 'abort'].map((action) =>\n route(`/host/capture/${action}`, 'POST', undefined, Type.Object({ captureId: S })),\n ),\n route(\n '/host/playback/start',\n 'POST',\n Type.Object({ delivery: values(['client', 'streamed']) }),\n Type.Object({ playbackId: S, text: S, voice: O(S), rate: O(N) }),\n [],\n 201,\n ),\n pcm('/host/playback/audio', 'POST', ['playbackId']),\n route('/host/playback/audio-end', 'POST', undefined, Type.Object({ playbackId: S, error: O(S) })),\n {\n ...route('/host/playback/result', 'GET', Type.Object(Playback), undefined, ['playbackId']),\n responses: {\n ...Errors,\n '200': { description: 'Playback outcome.', schema: Type.Object(Playback) },\n '204': { description: 'Playback is pending.' },\n },\n },\n ...['stop', 'abort'].map((action) =>\n route(`/host/playback/${action}`, 'POST', undefined, Type.Object({ playbackId: S })),\n ),\n route('/hub/ownership/state', 'GET', Snapshot),\n route('/hub/ownership/command', 'POST', Acknowledgement, Command),\n route('/host/ownership/sync', 'POST', Type.Object({ command: O(Command) }), Snapshot),\n route(\n '/host/realtime/start',\n 'POST',\n Type.Object({}),\n Type.Object({ activationId: S, instructions: Type.String({ maxLength: 16384 }) }),\n [],\n 201,\n ),\n route('/host/realtime/stop', 'POST', undefined, Type.Object({ activationId: S })),\n route('/host/realtime/poll', 'GET', RealtimeSnapshot, undefined, ['activationId', 'after']),\n route(\n '/host/realtime/send',\n 'POST',\n undefined,\n Type.Object({ activationId: S, messages: Type.Array(S, { maxItems: 64 }) }),\n ),\n route('/host/realtime/control', 'POST', undefined, Type.Object({ activationId: S, action: Control })),\n route(\n '/client/realtime/negotiate',\n 'POST',\n Type.Object({ sdp: S }),\n Type.Object({ ...Client, activationId: S, sdp: S }),\n ),\n route('/client/realtime/event', 'POST', undefined, Type.Object({ ...Client, activationId: S, event: S })),\n route('/client/realtime/state', 'POST', undefined, Type.Object({ ...Client, activationId: S, state: Browser })),\n {\n id: 'voice.manual',\n scope: 'session',\n basePath: 'voice-media',\n path: '/manual/transcribe',\n method: 'POST',\n authentication: 'owner',\n description: 'Transcribe at most 4 MiB of WebM/Opus or MP4/AAC audio, at most 300000 milliseconds.',\n parameters: [\n {\n name: 'x-doom-audio-duration-ms',\n in: 'header',\n required: true,\n schema: Type.Integer({ minimum: 0, maximum: 300000 }),\n },\n ],\n body: { required: true, contentType: 'audio/webm', contentTypes: ['audio/webm', 'audio/mp4'], schema: S },\n responses: { ...Errors, '200': { description: 'Transcript.', schema: Type.Object({ transcript: S }) } },\n },\n ...(\n [\n ['readiness', '/live/agent', 'GET'],\n ['prepare', '/live/agent/prepare', 'POST'],\n ['admit', '/live/agent/admit', 'POST'],\n ['results', '/live/agent/results', 'GET'],\n ['ack', '/live/agent/results/ack', 'POST'],\n ['fence', '/live/agent/fence', 'POST'],\n ['select', '/live/agent/select', 'POST'],\n ['revoke', '/live/agent/revoke', 'POST'],\n ] as const\n ).map(([name, path, method]): DoomHttpContract => ({\n id: `voice.agent.${name}`,\n scope: 'session',\n basePath: 'voice',\n path,\n method,\n authentication: 'owner',\n description: `Native Voice agent ${name}. Only the host-issued hub bearer can access this route.`,\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ...(name === 'results'\n ? ['activationId', 'routeGeneration', 'sessionIncarnation', 'after'].map((key) => ({\n name: key,\n in: 'query' as const,\n required: key !== 'after',\n schema: S,\n }))\n : []),\n ],\n ...(method === 'POST'\n ? {\n body: {\n required: true,\n contentType: 'application/json',\n schema:\n name === 'select'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n nativeTransferAllowed: B,\n catalog: Type.Object({\n revision: S,\n targets: Type.Array(Type.Object({ order: Type.Integer({ minimum: 1 }), label: S }), {\n maxItems: 256,\n }),\n }),\n })\n : name === 'revoke'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n })\n : Type.Unknown(),\n },\n }\n : {}),\n responses: {\n ...jsonApiResponses(Type.Unknown()),\n '204': { description: 'Agent result acknowledged or route fenced.' },\n },\n })),\n {\n id: 'voice.peer',\n scope: 'global',\n basePath: 'voice',\n path: '/peer',\n method: 'POST',\n authentication: 'none',\n description: 'Accept an HMAC-authenticated bounded Voice media relay request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerOwnership',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-ownership',\n method: 'POST',\n authentication: 'none',\n description: 'Discover and stage Voice ownership through an HMAC-authenticated paired host.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerAgent',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-agent',\n method: 'POST',\n authentication: 'none',\n description: 'Accept a signed, replay-guarded, grant-scoped native Voice agent request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.relayBinding',\n scope: 'global',\n basePath: 'voice',\n path: '/relay-binding',\n method: 'POST',\n authentication: 'owner',\n description: 'Issue an expiring controller-bound handle for a granted paired Voice session.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ target: S, connectionId: S }) },\n responses: jsonApiResponses(Type.Object({ binding: S, expiresAt: N })),\n },\n {\n id: 'voice.relay',\n scope: 'global',\n basePath: 'voice',\n path: '/relay',\n method: 'POST',\n authentication: 'owner',\n description: 'Relay a browser Voice media operation through an expiring controller-bound handle.',\n parameters: [{ name: 'binding', in: 'query', required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.nativeTransfer',\n scope: 'global',\n basePath: 'voice',\n path: '/live/native-transfer',\n method: 'POST',\n authentication: 'owner',\n description: 'Host-only revision-bound native Live transfer. Requires the host hub bearer.',\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ],\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n sourceSessionId: S,\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 0 }),\n sessionIncarnation: S,\n ordinal: Type.Integer({ minimum: 1 }),\n catalogRevision: S,\n }),\n },\n responses: {\n ...Errors,\n '202': {\n description: 'Transfer requested; source work drains before commit.',\n schema: Type.Object({ requested: Type.Literal(true) }),\n },\n },\n },\n {\n id: 'voice.liveStatus',\n scope: 'global',\n basePath: 'voice',\n path: '/live/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the host-global live companion state without activating media.',\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.liveControl',\n scope: 'global',\n basePath: 'voice',\n path: '/live/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Explicitly activate, transfer, mute, interrupt or end the host-global live companion.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n action: values(['activate', 'transfer', 'mute', 'unmute', 'interrupt', 'end']),\n sessionId: O(S),\n expectedSourceSessionId: O(S),\n }),\n },\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.readiness',\n scope: 'global',\n basePath: 'voice',\n path: '/readiness',\n method: 'GET',\n authentication: 'owner',\n description: 'Read configured voice readiness.',\n responses: jsonApiResponses(\n Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n ),\n },\n ],\n sockets: [\n {\n id: 'voice.control',\n scope: 'session',\n service: voiceControlMethod.service,\n member: voiceControlMethod.method,\n kind: 'method',\n direction: 'client-to-server',\n description: 'Voice session control through the scoped plugin service.',\n input: voiceControlMethod.input,\n output: voiceControlMethod.output,\n },\n ...(['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'voice.wake',\n scope,\n service: 'po.hub.v1',\n member: 'voice_media_wake',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Voice media wake channel payload.',\n input: Wake,\n },\n {\n id: 'voice.ownership',\n scope,\n service: 'po.hub.v1',\n member: 'voice_ownership',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Browser media ownership channel payload.',\n input: Type.Object({\n type: Type.Literal('browser-media-session'),\n ...Version,\n activeSessionId: Type.Union([S, Type.Null()]),\n }),\n },\n ]),\n ],\n});\nexport default apiContracts;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiContracts.cjs","names":["defineDoomPluginMethod","Type","Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/voiceControl.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineDoomPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { Type } from 'typebox';\n\nexport const voiceControlMethod = defineDoomPluginMethod({\n service: 'voice',\n method: 'control',\n scope: 'session',\n direction: 'client-to-server',\n input: Type.Object(\n {\n action: Type.Union(\n ['status', 'manual', 'activate', 'deactivate', 'switch', 'mute', 'unmute', 'interrupt', 'transfer'].map(\n (value) => Type.Literal(value),\n ),\n ),\n /** The voice to start (`activate`) or move to (`switch`). `switch` requires it. */\n mode: Type.Optional(Type.Union([Type.Literal('legacy'), Type.Literal('live')])),\n target: Type.Optional(Type.Integer({ minimum: 1 })),\n revision: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n },\n { additionalProperties: false },\n ),\n output: Type.Object(\n {\n state: Type.String(),\n mode: Type.String(),\n manual: Type.String(),\n muted: Type.Boolean(),\n error: Type.Optional(Type.String()),\n },\n { additionalProperties: false },\n ),\n});\n","import { defineApiContract, jsonApiResponses, type DoomHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport { voiceControlMethod } from './voiceControl';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Client = { clientId: S, connectionId: S };\nconst Configuration = Type.Object({\n mode: values(['manual', 'autonomous']),\n activityControl: values(['host', 'client']),\n endpointSilenceMs: O(Type.Integer({ minimum: 250 })),\n});\nconst Playback = { playbackId: S, outcome: values(['completed', 'stopped', 'aborted', 'failed']), error: O(S) };\nconst Sequence = { sequence: N };\nconst Control = values(['mute', 'unmute', 'interrupt']);\nconst Browser = Type.Object({\n connection: values(['connecting', 'connected', 'closed', 'failed']),\n listening: B,\n speaking: B,\n muted: B,\n error: O(S),\n});\nexport const VoiceMediaEventSchema = Type.Union([\n Type.Object({\n ...Sequence,\n type: Type.Literal('capture-start'),\n captureId: S,\n sampleRate: Type.Literal(16000),\n channels: Type.Literal(1),\n bitsPerSample: Type.Literal(16),\n configuration: Configuration,\n }),\n Type.Object({ ...Sequence, type: values(['capture-stop', 'capture-abort']), captureId: S }),\n Type.Object({\n ...Sequence,\n type: Type.Literal('playback-start'),\n playbackId: S,\n text: S,\n delivery: O(values(['client', 'streamed'])),\n voice: O(S),\n rate: O(N),\n }),\n Type.Object({ ...Sequence, type: values(['playback-stop', 'playback-abort']), playbackId: S }),\n Type.Object({ ...Sequence, type: values(['realtime-start', 'realtime-stop']), activationId: S }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-control'), activationId: S, action: Control }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-send'), activationId: S, messages: Type.Array(S) }),\n]);\nconst RealtimeEvent = Type.Union([\n Type.Object({ type: Type.Literal('ready') }),\n Type.Object({ type: Type.Literal('transcript'), role: values(['user', 'assistant']), text: S, complete: B }),\n Type.Object({ type: Type.Literal('request'), requestId: S, text: S }),\n Type.Object({ type: Type.Literal('error'), code: S }),\n]);\nconst RealtimeSnapshot = Type.Object({\n activationId: S,\n state: values(['connecting', 'active', 'closed', 'failed']),\n cursor: N,\n events: Type.Array(Type.Object({ sequence: N, event: RealtimeEvent })),\n browser: O(Browser),\n});\nconst Wake = Type.Object({ eventEpoch: S, sequence: N });\nconst GlobalLiveStatus = Type.Object({\n version: Type.Literal(1),\n state: values(['disabled', 'starting', 'active', 'draining', 'shuttingDown']),\n activeSessionId: Type.Union([S, Type.Null()]),\n muted: B,\n error: O(S),\n media: Type.Object({ client: B, realtime: B }),\n signedIn: O(B),\n});\nconst Version = { version: Type.Literal(3) };\nconst Targets = Type.Array(Type.Object({ handle: S, label: S, order: N }), { maxItems: 32 });\nconst OwnershipAction = values(['catalog', 'prepare', 'activate', 'deactivate', 'readiness', 'fence']);\nconst Acknowledgement = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n ok: B,\n active: B,\n error: O(S),\n});\nconst Command = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n targets: O(Targets),\n catalogRevision: O(S),\n handoffId: O(S),\n controllerId: O(S),\n leaseId: O(S),\n revision: O(N),\n});\nconst Snapshot = Type.Object({\n registration: O(Type.Object({ ...Version, leaseId: S, revision: N, label: S, eligible: B, active: B })),\n targets: Targets,\n catalogRevision: O(S),\n activation: O(Type.Object({ ...Version, requestId: S })),\n handoff: O(Type.Object({ ...Version, requestId: S, handle: S, catalogRevision: S })),\n acknowledgement: O(Acknowledgement),\n});\nconst Errors = Object.fromEntries(\n [400, 404, 409, 410, 413, 415, 429, 500, 502, 503, 504].map((status) => [\n status,\n { description: 'Voice request failed.', schema: Type.Object({ error: S, code: O(S) }) },\n ]),\n);\nconst route = (\n path: string,\n method: 'GET' | 'POST',\n output?: object,\n input?: object,\n query: string[] = [],\n status = 200,\n): DoomHttpContract => ({\n id: `voice.${path.slice(1).replaceAll('/', '.')}`,\n scope: 'session',\n basePath: 'voice-media',\n path,\n method,\n authentication: 'owner',\n description: `Voice media ${path}.`,\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? { availability: 'Internal broker route; requires the host-issued bearer token for this route namespace.' }\n : {}),\n parameters: [\n ...query.map((name) => ({ name, in: 'query' as const, required: !['after', 'wait'].includes(name), schema: S })),\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? [\n {\n name: 'Authorization',\n in: 'header' as const,\n required: true,\n schema: Type.String({ pattern: '^Bearer .+' }),\n },\n ]\n : []),\n ],\n ...(input ? { body: { required: true, contentType: 'application/json', schema: input } } : {}),\n responses: {\n ...Errors,\n [output ? status : 204]: {\n description: output ? 'Voice response.' : 'Accepted with no response body.',\n ...(output ? { schema: output } : {}),\n },\n },\n});\nconst pcm = (path: string, method: 'GET' | 'POST', query: string[]): DoomHttpContract => {\n const result = route(path, method, undefined, undefined, query);\n result.description =\n 'PCM signed 16-bit little-endian, 16000 Hz, mono. Chunks contain complete samples. Activity headers carry state, level, elapsed time, epoch and speech duration. A 204 response carries x-po-capture-state or x-po-playback-state when applicable.';\n if (method === 'POST') result.body = { required: true, contentType: 'application/vnd.po.pcm-s16le', schema: S };\n else result.responses['200'] = { description: 'PCM bytes.', contentType: 'application/vnd.po.pcm-s16le', schema: S };\n return result;\n};\nexport const apiContracts = defineApiContract({\n version: 1,\n protocols: { 'voice-media': '6', 'voice-ownership': '3' },\n dynamic: ['Realtime event strings and SDP are provider-defined protocol documents passed through the media broker.'],\n http: [\n {\n id: 'voice.status',\n scope: 'session',\n basePath: 'voice',\n path: '/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Voice session status and media readiness.',\n responses: jsonApiResponses(\n Type.Object({\n ...voiceControlMethod.output.properties,\n media: Type.Object({ closed: B, capture: B, playback: B, realtime: B }),\n readiness: Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n }),\n ),\n },\n {\n id: 'voice.control.http',\n scope: 'session',\n basePath: 'voice',\n path: '/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Control the voice session.',\n body: { required: true, contentType: 'application/json', schema: voiceControlMethod.input },\n responses: jsonApiResponses(voiceControlMethod.output),\n },\n route(\n '/client/connect',\n 'POST',\n Type.Object({ version: Type.Literal(6), cursor: N, eventEpoch: O(S), heartbeatMs: O(N) }),\n Type.Object({\n version: Type.Literal(6),\n ...Client,\n clientKind: values(['browser', 'native']),\n controlLocation: values(['local', 'remote']),\n capabilities: Type.Object({\n capture: B,\n playback: B,\n captureActivity: B,\n autonomousOrchestration: B,\n playbackDucking: O(B),\n realtime: O(B),\n }),\n }),\n ),\n route('/client/disconnect', 'POST', undefined, Type.Object(Client)),\n route('/client/heartbeat', 'POST', Wake, Type.Object(Client)),\n {\n ...route('/client/events', 'GET', VoiceMediaEventSchema, undefined, [\n 'clientId',\n 'connectionId',\n 'after',\n 'wait',\n ]),\n responses: {\n ...Errors,\n '200': { description: 'Next event.', schema: VoiceMediaEventSchema },\n '204': { description: 'No pending event.' },\n },\n },\n pcm('/client/audio', 'POST', ['clientId', 'connectionId', 'captureId']),\n route('/client/capture-stopped', 'POST', undefined, Type.Object({ ...Client, captureId: S, error: O(S) })),\n pcm('/client/playback-audio', 'GET', ['clientId', 'connectionId', 'playbackId']),\n route('/client/playback-result', 'POST', undefined, Type.Object({ ...Client, ...Playback })),\n route(\n '/host/capture/start',\n 'POST',\n Type.Object({ configuration: Configuration }),\n Type.Object({ captureId: S, configuration: O(Configuration) }),\n [],\n 201,\n ),\n pcm('/host/capture/audio', 'GET', ['captureId']),\n ...['stop', 'abort'].map((action) =>\n route(`/host/capture/${action}`, 'POST', undefined, Type.Object({ captureId: S })),\n ),\n route(\n '/host/playback/start',\n 'POST',\n Type.Object({ delivery: values(['client', 'streamed']) }),\n Type.Object({ playbackId: S, text: S, voice: O(S), rate: O(N) }),\n [],\n 201,\n ),\n pcm('/host/playback/audio', 'POST', ['playbackId']),\n route('/host/playback/audio-end', 'POST', undefined, Type.Object({ playbackId: S, error: O(S) })),\n {\n ...route('/host/playback/result', 'GET', Type.Object(Playback), undefined, ['playbackId']),\n responses: {\n ...Errors,\n '200': { description: 'Playback outcome.', schema: Type.Object(Playback) },\n '204': { description: 'Playback is pending.' },\n },\n },\n ...['stop', 'abort'].map((action) =>\n route(`/host/playback/${action}`, 'POST', undefined, Type.Object({ playbackId: S })),\n ),\n route('/hub/ownership/state', 'GET', Snapshot),\n route('/hub/ownership/command', 'POST', Acknowledgement, Command),\n route('/host/ownership/sync', 'POST', Type.Object({ command: O(Command) }), Snapshot),\n route(\n '/host/realtime/start',\n 'POST',\n Type.Object({}),\n Type.Object({ activationId: S, instructions: Type.String({ maxLength: 16384 }) }),\n [],\n 201,\n ),\n route('/host/realtime/stop', 'POST', undefined, Type.Object({ activationId: S })),\n route('/host/realtime/poll', 'GET', RealtimeSnapshot, undefined, ['activationId', 'after']),\n route(\n '/host/realtime/send',\n 'POST',\n undefined,\n Type.Object({ activationId: S, messages: Type.Array(S, { maxItems: 64 }) }),\n ),\n route('/host/realtime/control', 'POST', undefined, Type.Object({ activationId: S, action: Control })),\n route(\n '/client/realtime/negotiate',\n 'POST',\n Type.Object({ sdp: S }),\n Type.Object({ ...Client, activationId: S, sdp: S }),\n ),\n route('/client/realtime/event', 'POST', undefined, Type.Object({ ...Client, activationId: S, event: S })),\n route('/client/realtime/state', 'POST', undefined, Type.Object({ ...Client, activationId: S, state: Browser })),\n {\n id: 'voice.manual',\n scope: 'session',\n basePath: 'voice-media',\n path: '/manual/transcribe',\n method: 'POST',\n authentication: 'owner',\n description: 'Transcribe at most 4 MiB of WebM/Opus, MP4/AAC, or WAV audio, at most 300000 milliseconds.',\n parameters: [\n {\n name: 'x-doom-audio-duration-ms',\n in: 'header',\n required: true,\n schema: Type.Integer({ minimum: 0, maximum: 300000 }),\n },\n ],\n body: {\n required: true,\n contentType: 'audio/webm',\n contentTypes: ['audio/webm', 'audio/mp4', 'audio/wav'],\n schema: S,\n },\n responses: { ...Errors, '200': { description: 'Transcript.', schema: Type.Object({ transcript: S }) } },\n },\n ...(\n [\n ['readiness', '/live/agent', 'GET'],\n ['prepare', '/live/agent/prepare', 'POST'],\n ['admit', '/live/agent/admit', 'POST'],\n ['results', '/live/agent/results', 'GET'],\n ['ack', '/live/agent/results/ack', 'POST'],\n ['fence', '/live/agent/fence', 'POST'],\n ['select', '/live/agent/select', 'POST'],\n ['revoke', '/live/agent/revoke', 'POST'],\n ] as const\n ).map(([name, path, method]): DoomHttpContract => ({\n id: `voice.agent.${name}`,\n scope: 'session',\n basePath: 'voice',\n path,\n method,\n authentication: 'owner',\n description: `Native Voice agent ${name}. Only the host-issued hub bearer can access this route.`,\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ...(name === 'results'\n ? ['activationId', 'routeGeneration', 'sessionIncarnation', 'after'].map((key) => ({\n name: key,\n in: 'query' as const,\n required: key !== 'after',\n schema: S,\n }))\n : []),\n ],\n ...(method === 'POST'\n ? {\n body: {\n required: true,\n contentType: 'application/json',\n schema:\n name === 'select'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n nativeTransferAllowed: B,\n catalog: Type.Object({\n revision: S,\n targets: Type.Array(Type.Object({ order: Type.Integer({ minimum: 1 }), label: S }), {\n maxItems: 256,\n }),\n }),\n })\n : name === 'revoke'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n })\n : Type.Unknown(),\n },\n }\n : {}),\n responses: {\n ...jsonApiResponses(Type.Unknown()),\n '204': { description: 'Agent result acknowledged or route fenced.' },\n },\n })),\n {\n id: 'voice.peer',\n scope: 'global',\n basePath: 'voice',\n path: '/peer',\n method: 'POST',\n authentication: 'none',\n description: 'Accept an HMAC-authenticated bounded Voice media relay request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerOwnership',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-ownership',\n method: 'POST',\n authentication: 'none',\n description: 'Discover and stage Voice ownership through an HMAC-authenticated paired host.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerAgent',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-agent',\n method: 'POST',\n authentication: 'none',\n description: 'Accept a signed, replay-guarded, grant-scoped native Voice agent request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.relayBinding',\n scope: 'global',\n basePath: 'voice',\n path: '/relay-binding',\n method: 'POST',\n authentication: 'owner',\n description: 'Issue an expiring controller-bound handle for a granted paired Voice session.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ target: S, connectionId: S }) },\n responses: jsonApiResponses(Type.Object({ binding: S, expiresAt: N })),\n },\n {\n id: 'voice.relay',\n scope: 'global',\n basePath: 'voice',\n path: '/relay',\n method: 'POST',\n authentication: 'owner',\n description: 'Relay a browser Voice media operation through an expiring controller-bound handle.',\n parameters: [{ name: 'binding', in: 'query', required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.nativeTransfer',\n scope: 'global',\n basePath: 'voice',\n path: '/live/native-transfer',\n method: 'POST',\n authentication: 'owner',\n description: 'Host-only revision-bound native Live transfer. Requires the host hub bearer.',\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ],\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n sourceSessionId: S,\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 0 }),\n sessionIncarnation: S,\n ordinal: Type.Integer({ minimum: 1 }),\n catalogRevision: S,\n }),\n },\n responses: {\n ...Errors,\n '202': {\n description: 'Transfer requested; source work drains before commit.',\n schema: Type.Object({ requested: Type.Literal(true) }),\n },\n },\n },\n {\n id: 'voice.liveStatus',\n scope: 'global',\n basePath: 'voice',\n path: '/live/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the host-global live companion state without activating media.',\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.liveControl',\n scope: 'global',\n basePath: 'voice',\n path: '/live/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Explicitly activate, transfer, mute, interrupt or end the host-global live companion.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n action: values(['activate', 'transfer', 'mute', 'unmute', 'interrupt', 'end']),\n sessionId: O(S),\n expectedSourceSessionId: O(S),\n }),\n },\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.readiness',\n scope: 'global',\n basePath: 'voice',\n path: '/readiness',\n method: 'GET',\n authentication: 'owner',\n description: 'Read configured voice readiness.',\n responses: jsonApiResponses(\n Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n ),\n },\n ],\n sockets: [\n {\n id: 'voice.control',\n scope: 'session',\n service: voiceControlMethod.service,\n member: voiceControlMethod.method,\n kind: 'method',\n direction: 'client-to-server',\n description: 'Voice session control through the scoped plugin service.',\n input: voiceControlMethod.input,\n output: voiceControlMethod.output,\n },\n ...(['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'voice.wake',\n scope,\n service: 'po.hub.v1',\n member: 'voice_media_wake',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Voice media wake channel payload.',\n input: Wake,\n },\n {\n id: 'voice.ownership',\n scope,\n service: 'po.hub.v1',\n member: 'voice_ownership',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Browser media ownership channel payload.',\n input: Type.Object({\n type: Type.Literal('browser-media-session'),\n ...Version,\n activeSessionId: Type.Union([S, Type.Null()]),\n }),\n },\n ]),\n ],\n});\nexport default apiContracts;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../src/schemas/apiContracts.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../src/schemas/apiContracts.ts"],"mappings":";;qBA8Ja"}
|
package/dist/apiContracts.mjs
CHANGED
|
@@ -13,11 +13,14 @@ const voiceControlMethod = defineDoomPluginMethod({
|
|
|
13
13
|
"manual",
|
|
14
14
|
"activate",
|
|
15
15
|
"deactivate",
|
|
16
|
+
"switch",
|
|
16
17
|
"mute",
|
|
17
18
|
"unmute",
|
|
18
19
|
"interrupt",
|
|
19
20
|
"transfer"
|
|
20
21
|
].map((value) => Type.Literal(value))),
|
|
22
|
+
/** The voice to start (`activate`) or move to (`switch`). `switch` requires it. */
|
|
23
|
+
mode: Type.Optional(Type.Union([Type.Literal("legacy"), Type.Literal("live")])),
|
|
21
24
|
target: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
22
25
|
revision: Type.Optional(Type.String({
|
|
23
26
|
minLength: 1,
|
|
@@ -175,7 +178,8 @@ const GlobalLiveStatus = Type.Object({
|
|
|
175
178
|
media: Type.Object({
|
|
176
179
|
client: B,
|
|
177
180
|
realtime: B
|
|
178
|
-
})
|
|
181
|
+
}),
|
|
182
|
+
signedIn: O(B)
|
|
179
183
|
});
|
|
180
184
|
const Version = { version: Type.Literal(3) };
|
|
181
185
|
const Targets = Type.Array(Type.Object({
|
|
@@ -473,7 +477,7 @@ const apiContracts = defineApiContract({
|
|
|
473
477
|
path: "/manual/transcribe",
|
|
474
478
|
method: "POST",
|
|
475
479
|
authentication: "owner",
|
|
476
|
-
description: "Transcribe at most 4 MiB of WebM/Opus
|
|
480
|
+
description: "Transcribe at most 4 MiB of WebM/Opus, MP4/AAC, or WAV audio, at most 300000 milliseconds.",
|
|
477
481
|
parameters: [{
|
|
478
482
|
name: "x-doom-audio-duration-ms",
|
|
479
483
|
in: "header",
|
|
@@ -486,7 +490,11 @@ const apiContracts = defineApiContract({
|
|
|
486
490
|
body: {
|
|
487
491
|
required: true,
|
|
488
492
|
contentType: "audio/webm",
|
|
489
|
-
contentTypes: [
|
|
493
|
+
contentTypes: [
|
|
494
|
+
"audio/webm",
|
|
495
|
+
"audio/mp4",
|
|
496
|
+
"audio/wav"
|
|
497
|
+
],
|
|
490
498
|
schema: S
|
|
491
499
|
},
|
|
492
500
|
responses: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/voiceControl.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineDoomPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { Type } from 'typebox';\n\nexport const voiceControlMethod = defineDoomPluginMethod({\n service: 'voice',\n method: 'control',\n scope: 'session',\n direction: 'client-to-server',\n input: Type.Object(\n {\n action: Type.Union(\n ['status', 'manual', 'activate', 'deactivate', 'mute', 'unmute', 'interrupt', 'transfer'].map((value) =>\n Type.Literal(value),\n ),\n ),\n target: Type.Optional(Type.Integer({ minimum: 1 })),\n revision: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n },\n { additionalProperties: false },\n ),\n output: Type.Object(\n {\n state: Type.String(),\n mode: Type.String(),\n manual: Type.String(),\n muted: Type.Boolean(),\n error: Type.Optional(Type.String()),\n },\n { additionalProperties: false },\n ),\n});\n","import { defineApiContract, jsonApiResponses, type DoomHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport { voiceControlMethod } from './voiceControl';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Client = { clientId: S, connectionId: S };\nconst Configuration = Type.Object({\n mode: values(['manual', 'autonomous']),\n activityControl: values(['host', 'client']),\n endpointSilenceMs: O(Type.Integer({ minimum: 250 })),\n});\nconst Playback = { playbackId: S, outcome: values(['completed', 'stopped', 'aborted', 'failed']), error: O(S) };\nconst Sequence = { sequence: N };\nconst Control = values(['mute', 'unmute', 'interrupt']);\nconst Browser = Type.Object({\n connection: values(['connecting', 'connected', 'closed', 'failed']),\n listening: B,\n speaking: B,\n muted: B,\n error: O(S),\n});\nexport const VoiceMediaEventSchema = Type.Union([\n Type.Object({\n ...Sequence,\n type: Type.Literal('capture-start'),\n captureId: S,\n sampleRate: Type.Literal(16000),\n channels: Type.Literal(1),\n bitsPerSample: Type.Literal(16),\n configuration: Configuration,\n }),\n Type.Object({ ...Sequence, type: values(['capture-stop', 'capture-abort']), captureId: S }),\n Type.Object({\n ...Sequence,\n type: Type.Literal('playback-start'),\n playbackId: S,\n text: S,\n delivery: O(values(['client', 'streamed'])),\n voice: O(S),\n rate: O(N),\n }),\n Type.Object({ ...Sequence, type: values(['playback-stop', 'playback-abort']), playbackId: S }),\n Type.Object({ ...Sequence, type: values(['realtime-start', 'realtime-stop']), activationId: S }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-control'), activationId: S, action: Control }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-send'), activationId: S, messages: Type.Array(S) }),\n]);\nconst RealtimeEvent = Type.Union([\n Type.Object({ type: Type.Literal('ready') }),\n Type.Object({ type: Type.Literal('transcript'), role: values(['user', 'assistant']), text: S, complete: B }),\n Type.Object({ type: Type.Literal('request'), requestId: S, text: S }),\n Type.Object({ type: Type.Literal('error'), code: S }),\n]);\nconst RealtimeSnapshot = Type.Object({\n activationId: S,\n state: values(['connecting', 'active', 'closed', 'failed']),\n cursor: N,\n events: Type.Array(Type.Object({ sequence: N, event: RealtimeEvent })),\n browser: O(Browser),\n});\nconst Wake = Type.Object({ eventEpoch: S, sequence: N });\nconst GlobalLiveStatus = Type.Object({\n version: Type.Literal(1),\n state: values(['disabled', 'starting', 'active', 'draining', 'shuttingDown']),\n activeSessionId: Type.Union([S, Type.Null()]),\n muted: B,\n error: O(S),\n media: Type.Object({ client: B, realtime: B }),\n});\nconst Version = { version: Type.Literal(3) };\nconst Targets = Type.Array(Type.Object({ handle: S, label: S, order: N }), { maxItems: 32 });\nconst OwnershipAction = values(['catalog', 'prepare', 'activate', 'deactivate', 'readiness', 'fence']);\nconst Acknowledgement = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n ok: B,\n active: B,\n error: O(S),\n});\nconst Command = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n targets: O(Targets),\n catalogRevision: O(S),\n handoffId: O(S),\n controllerId: O(S),\n leaseId: O(S),\n revision: O(N),\n});\nconst Snapshot = Type.Object({\n registration: O(Type.Object({ ...Version, leaseId: S, revision: N, label: S, eligible: B, active: B })),\n targets: Targets,\n catalogRevision: O(S),\n activation: O(Type.Object({ ...Version, requestId: S })),\n handoff: O(Type.Object({ ...Version, requestId: S, handle: S, catalogRevision: S })),\n acknowledgement: O(Acknowledgement),\n});\nconst Errors = Object.fromEntries(\n [400, 404, 409, 410, 413, 415, 429, 500, 502, 503, 504].map((status) => [\n status,\n { description: 'Voice request failed.', schema: Type.Object({ error: S, code: O(S) }) },\n ]),\n);\nconst route = (\n path: string,\n method: 'GET' | 'POST',\n output?: object,\n input?: object,\n query: string[] = [],\n status = 200,\n): DoomHttpContract => ({\n id: `voice.${path.slice(1).replaceAll('/', '.')}`,\n scope: 'session',\n basePath: 'voice-media',\n path,\n method,\n authentication: 'owner',\n description: `Voice media ${path}.`,\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? { availability: 'Internal broker route; requires the host-issued bearer token for this route namespace.' }\n : {}),\n parameters: [\n ...query.map((name) => ({ name, in: 'query' as const, required: !['after', 'wait'].includes(name), schema: S })),\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? [\n {\n name: 'Authorization',\n in: 'header' as const,\n required: true,\n schema: Type.String({ pattern: '^Bearer .+' }),\n },\n ]\n : []),\n ],\n ...(input ? { body: { required: true, contentType: 'application/json', schema: input } } : {}),\n responses: {\n ...Errors,\n [output ? status : 204]: {\n description: output ? 'Voice response.' : 'Accepted with no response body.',\n ...(output ? { schema: output } : {}),\n },\n },\n});\nconst pcm = (path: string, method: 'GET' | 'POST', query: string[]): DoomHttpContract => {\n const result = route(path, method, undefined, undefined, query);\n result.description =\n 'PCM signed 16-bit little-endian, 16000 Hz, mono. Chunks contain complete samples. Activity headers carry state, level, elapsed time, epoch and speech duration. A 204 response carries x-po-capture-state or x-po-playback-state when applicable.';\n if (method === 'POST') result.body = { required: true, contentType: 'application/vnd.po.pcm-s16le', schema: S };\n else result.responses['200'] = { description: 'PCM bytes.', contentType: 'application/vnd.po.pcm-s16le', schema: S };\n return result;\n};\nexport const apiContracts = defineApiContract({\n version: 1,\n protocols: { 'voice-media': '6', 'voice-ownership': '3' },\n dynamic: ['Realtime event strings and SDP are provider-defined protocol documents passed through the media broker.'],\n http: [\n {\n id: 'voice.status',\n scope: 'session',\n basePath: 'voice',\n path: '/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Voice session status and media readiness.',\n responses: jsonApiResponses(\n Type.Object({\n ...voiceControlMethod.output.properties,\n media: Type.Object({ closed: B, capture: B, playback: B, realtime: B }),\n readiness: Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n }),\n ),\n },\n {\n id: 'voice.control.http',\n scope: 'session',\n basePath: 'voice',\n path: '/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Control the voice session.',\n body: { required: true, contentType: 'application/json', schema: voiceControlMethod.input },\n responses: jsonApiResponses(voiceControlMethod.output),\n },\n route(\n '/client/connect',\n 'POST',\n Type.Object({ version: Type.Literal(6), cursor: N, eventEpoch: O(S), heartbeatMs: O(N) }),\n Type.Object({\n version: Type.Literal(6),\n ...Client,\n clientKind: values(['browser', 'native']),\n controlLocation: values(['local', 'remote']),\n capabilities: Type.Object({\n capture: B,\n playback: B,\n captureActivity: B,\n autonomousOrchestration: B,\n playbackDucking: O(B),\n realtime: O(B),\n }),\n }),\n ),\n route('/client/disconnect', 'POST', undefined, Type.Object(Client)),\n route('/client/heartbeat', 'POST', Wake, Type.Object(Client)),\n {\n ...route('/client/events', 'GET', VoiceMediaEventSchema, undefined, [\n 'clientId',\n 'connectionId',\n 'after',\n 'wait',\n ]),\n responses: {\n ...Errors,\n '200': { description: 'Next event.', schema: VoiceMediaEventSchema },\n '204': { description: 'No pending event.' },\n },\n },\n pcm('/client/audio', 'POST', ['clientId', 'connectionId', 'captureId']),\n route('/client/capture-stopped', 'POST', undefined, Type.Object({ ...Client, captureId: S, error: O(S) })),\n pcm('/client/playback-audio', 'GET', ['clientId', 'connectionId', 'playbackId']),\n route('/client/playback-result', 'POST', undefined, Type.Object({ ...Client, ...Playback })),\n route(\n '/host/capture/start',\n 'POST',\n Type.Object({ configuration: Configuration }),\n Type.Object({ captureId: S, configuration: O(Configuration) }),\n [],\n 201,\n ),\n pcm('/host/capture/audio', 'GET', ['captureId']),\n ...['stop', 'abort'].map((action) =>\n route(`/host/capture/${action}`, 'POST', undefined, Type.Object({ captureId: S })),\n ),\n route(\n '/host/playback/start',\n 'POST',\n Type.Object({ delivery: values(['client', 'streamed']) }),\n Type.Object({ playbackId: S, text: S, voice: O(S), rate: O(N) }),\n [],\n 201,\n ),\n pcm('/host/playback/audio', 'POST', ['playbackId']),\n route('/host/playback/audio-end', 'POST', undefined, Type.Object({ playbackId: S, error: O(S) })),\n {\n ...route('/host/playback/result', 'GET', Type.Object(Playback), undefined, ['playbackId']),\n responses: {\n ...Errors,\n '200': { description: 'Playback outcome.', schema: Type.Object(Playback) },\n '204': { description: 'Playback is pending.' },\n },\n },\n ...['stop', 'abort'].map((action) =>\n route(`/host/playback/${action}`, 'POST', undefined, Type.Object({ playbackId: S })),\n ),\n route('/hub/ownership/state', 'GET', Snapshot),\n route('/hub/ownership/command', 'POST', Acknowledgement, Command),\n route('/host/ownership/sync', 'POST', Type.Object({ command: O(Command) }), Snapshot),\n route(\n '/host/realtime/start',\n 'POST',\n Type.Object({}),\n Type.Object({ activationId: S, instructions: Type.String({ maxLength: 16384 }) }),\n [],\n 201,\n ),\n route('/host/realtime/stop', 'POST', undefined, Type.Object({ activationId: S })),\n route('/host/realtime/poll', 'GET', RealtimeSnapshot, undefined, ['activationId', 'after']),\n route(\n '/host/realtime/send',\n 'POST',\n undefined,\n Type.Object({ activationId: S, messages: Type.Array(S, { maxItems: 64 }) }),\n ),\n route('/host/realtime/control', 'POST', undefined, Type.Object({ activationId: S, action: Control })),\n route(\n '/client/realtime/negotiate',\n 'POST',\n Type.Object({ sdp: S }),\n Type.Object({ ...Client, activationId: S, sdp: S }),\n ),\n route('/client/realtime/event', 'POST', undefined, Type.Object({ ...Client, activationId: S, event: S })),\n route('/client/realtime/state', 'POST', undefined, Type.Object({ ...Client, activationId: S, state: Browser })),\n {\n id: 'voice.manual',\n scope: 'session',\n basePath: 'voice-media',\n path: '/manual/transcribe',\n method: 'POST',\n authentication: 'owner',\n description: 'Transcribe at most 4 MiB of WebM/Opus or MP4/AAC audio, at most 300000 milliseconds.',\n parameters: [\n {\n name: 'x-doom-audio-duration-ms',\n in: 'header',\n required: true,\n schema: Type.Integer({ minimum: 0, maximum: 300000 }),\n },\n ],\n body: { required: true, contentType: 'audio/webm', contentTypes: ['audio/webm', 'audio/mp4'], schema: S },\n responses: { ...Errors, '200': { description: 'Transcript.', schema: Type.Object({ transcript: S }) } },\n },\n ...(\n [\n ['readiness', '/live/agent', 'GET'],\n ['prepare', '/live/agent/prepare', 'POST'],\n ['admit', '/live/agent/admit', 'POST'],\n ['results', '/live/agent/results', 'GET'],\n ['ack', '/live/agent/results/ack', 'POST'],\n ['fence', '/live/agent/fence', 'POST'],\n ['select', '/live/agent/select', 'POST'],\n ['revoke', '/live/agent/revoke', 'POST'],\n ] as const\n ).map(([name, path, method]): DoomHttpContract => ({\n id: `voice.agent.${name}`,\n scope: 'session',\n basePath: 'voice',\n path,\n method,\n authentication: 'owner',\n description: `Native Voice agent ${name}. Only the host-issued hub bearer can access this route.`,\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ...(name === 'results'\n ? ['activationId', 'routeGeneration', 'sessionIncarnation', 'after'].map((key) => ({\n name: key,\n in: 'query' as const,\n required: key !== 'after',\n schema: S,\n }))\n : []),\n ],\n ...(method === 'POST'\n ? {\n body: {\n required: true,\n contentType: 'application/json',\n schema:\n name === 'select'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n nativeTransferAllowed: B,\n catalog: Type.Object({\n revision: S,\n targets: Type.Array(Type.Object({ order: Type.Integer({ minimum: 1 }), label: S }), {\n maxItems: 256,\n }),\n }),\n })\n : name === 'revoke'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n })\n : Type.Unknown(),\n },\n }\n : {}),\n responses: {\n ...jsonApiResponses(Type.Unknown()),\n '204': { description: 'Agent result acknowledged or route fenced.' },\n },\n })),\n {\n id: 'voice.peer',\n scope: 'global',\n basePath: 'voice',\n path: '/peer',\n method: 'POST',\n authentication: 'none',\n description: 'Accept an HMAC-authenticated bounded Voice media relay request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerOwnership',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-ownership',\n method: 'POST',\n authentication: 'none',\n description: 'Discover and stage Voice ownership through an HMAC-authenticated paired host.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerAgent',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-agent',\n method: 'POST',\n authentication: 'none',\n description: 'Accept a signed, replay-guarded, grant-scoped native Voice agent request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.relayBinding',\n scope: 'global',\n basePath: 'voice',\n path: '/relay-binding',\n method: 'POST',\n authentication: 'owner',\n description: 'Issue an expiring controller-bound handle for a granted paired Voice session.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ target: S, connectionId: S }) },\n responses: jsonApiResponses(Type.Object({ binding: S, expiresAt: N })),\n },\n {\n id: 'voice.relay',\n scope: 'global',\n basePath: 'voice',\n path: '/relay',\n method: 'POST',\n authentication: 'owner',\n description: 'Relay a browser Voice media operation through an expiring controller-bound handle.',\n parameters: [{ name: 'binding', in: 'query', required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.nativeTransfer',\n scope: 'global',\n basePath: 'voice',\n path: '/live/native-transfer',\n method: 'POST',\n authentication: 'owner',\n description: 'Host-only revision-bound native Live transfer. Requires the host hub bearer.',\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ],\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n sourceSessionId: S,\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 0 }),\n sessionIncarnation: S,\n ordinal: Type.Integer({ minimum: 1 }),\n catalogRevision: S,\n }),\n },\n responses: {\n ...Errors,\n '202': {\n description: 'Transfer requested; source work drains before commit.',\n schema: Type.Object({ requested: Type.Literal(true) }),\n },\n },\n },\n {\n id: 'voice.liveStatus',\n scope: 'global',\n basePath: 'voice',\n path: '/live/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the host-global live companion state without activating media.',\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.liveControl',\n scope: 'global',\n basePath: 'voice',\n path: '/live/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Explicitly activate, transfer, mute, interrupt or end the host-global live companion.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n action: values(['activate', 'transfer', 'mute', 'unmute', 'interrupt', 'end']),\n sessionId: O(S),\n expectedSourceSessionId: O(S),\n }),\n },\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.readiness',\n scope: 'global',\n basePath: 'voice',\n path: '/readiness',\n method: 'GET',\n authentication: 'owner',\n description: 'Read configured voice readiness.',\n responses: jsonApiResponses(\n Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n ),\n },\n ],\n sockets: [\n {\n id: 'voice.control',\n scope: 'session',\n service: voiceControlMethod.service,\n member: voiceControlMethod.method,\n kind: 'method',\n direction: 'client-to-server',\n description: 'Voice session control through the scoped plugin service.',\n input: voiceControlMethod.input,\n output: voiceControlMethod.output,\n },\n ...(['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'voice.wake',\n scope,\n service: 'po.hub.v1',\n member: 'voice_media_wake',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Voice media wake channel payload.',\n input: Wake,\n },\n {\n id: 'voice.ownership',\n scope,\n service: 'po.hub.v1',\n member: 'voice_ownership',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Browser media ownership channel payload.',\n input: Type.Object({\n type: Type.Literal('browser-media-session'),\n ...Version,\n activeSessionId: Type.Union([S, Type.Null()]),\n }),\n },\n ]),\n ],\n});\nexport default apiContracts;\n"],"mappings":";;;;AAGA,MAAa,qBAAqB,uBAAuB;CACvD,SAAS;CACT,QAAQ;CACR,OAAO;CACP,WAAW;CACX,OAAO,KAAK,OACV;EACE,QAAQ,KAAK,MACX;GAAC;GAAU;GAAU;GAAY;GAAc;GAAQ;GAAU;GAAa;EAAU,CAAC,CAAC,KAAK,UAC7F,KAAK,QAAQ,KAAK,CACpB,CACF;EACA,QAAQ,KAAK,SAAS,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;EAClD,UAAU,KAAK,SAAS,KAAK,OAAO;GAAE,WAAW;GAAG,WAAW;EAAI,CAAC,CAAC;CACvE,GACA,EAAE,sBAAsB,MAAM,CAChC;CACA,QAAQ,KAAK,OACX;EACE,OAAO,KAAK,OAAO;EACnB,MAAM,KAAK,OAAO;EAClB,QAAQ,KAAK,OAAO;EACpB,OAAO,KAAK,QAAQ;EACpB,OAAO,KAAK,SAAS,KAAK,OAAO,CAAC;CACpC,GACA,EAAE,sBAAsB,MAAM,CAChC;AACF,CAAC;;;ACzBD,MAAM,IAAI,KAAK,OAAO;AACtB,MAAM,IAAI,KAAK,OAAO;AACtB,MAAM,IAAI,KAAK,QAAQ;AACvB,MAAM,IAAI,KAAK;AACf,MAAM,UAA4B,UAAe,KAAK,MAAM,MAAM,KAAK,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC;AACnG,MAAM,SAAS;CAAE,UAAU;CAAG,cAAc;AAAE;AAC9C,MAAM,gBAAgB,KAAK,OAAO;CAChC,MAAM,OAAO,CAAC,UAAU,YAAY,CAAC;CACrC,iBAAiB,OAAO,CAAC,QAAQ,QAAQ,CAAC;CAC1C,mBAAmB,EAAE,KAAK,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,WAAW;CAAE,YAAY;CAAG,SAAS,OAAO;EAAC;EAAa;EAAW;EAAW;CAAQ,CAAC;CAAG,OAAO,EAAE,CAAC;AAAE;AAC9G,MAAM,WAAW,EAAE,UAAU,EAAE;AAC/B,MAAM,UAAU,OAAO;CAAC;CAAQ;CAAU;AAAW,CAAC;AACtD,MAAM,UAAU,KAAK,OAAO;CAC1B,YAAY,OAAO;EAAC;EAAc;EAAa;EAAU;CAAQ,CAAC;CAClE,WAAW;CACX,UAAU;CACV,OAAO;CACP,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,MAAa,wBAAwB,KAAK,MAAM;CAC9C,KAAK,OAAO;EACV,GAAG;EACH,MAAM,KAAK,QAAQ,eAAe;EAClC,WAAW;EACX,YAAY,KAAK,QAAQ,IAAK;EAC9B,UAAU,KAAK,QAAQ,CAAC;EACxB,eAAe,KAAK,QAAQ,EAAE;EAC9B,eAAe;CACjB,CAAC;CACD,KAAK,OAAO;EAAE,GAAG;EAAU,MAAM,OAAO,CAAC,gBAAgB,eAAe,CAAC;EAAG,WAAW;CAAE,CAAC;CAC1F,KAAK,OAAO;EACV,GAAG;EACH,MAAM,KAAK,QAAQ,gBAAgB;EACnC,YAAY;EACZ,MAAM;EACN,UAAU,EAAE,OAAO,CAAC,UAAU,UAAU,CAAC,CAAC;EAC1C,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;CACX,CAAC;CACD,KAAK,OAAO;EAAE,GAAG;EAAU,MAAM,OAAO,CAAC,iBAAiB,gBAAgB,CAAC;EAAG,YAAY;CAAE,CAAC;CAC7F,KAAK,OAAO;EAAE,GAAG;EAAU,MAAM,OAAO,CAAC,kBAAkB,eAAe,CAAC;EAAG,cAAc;CAAE,CAAC;CAC/F,KAAK,OAAO;EAAE,GAAG;EAAU,MAAM,KAAK,QAAQ,kBAAkB;EAAG,cAAc;EAAG,QAAQ;CAAQ,CAAC;CACrG,KAAK,OAAO;EAAE,GAAG;EAAU,MAAM,KAAK,QAAQ,eAAe;EAAG,cAAc;EAAG,UAAU,KAAK,MAAM,CAAC;CAAE,CAAC;AAC5G,CAAC;AACD,MAAM,gBAAgB,KAAK,MAAM;CAC/B,KAAK,OAAO,EAAE,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC;CAC3C,KAAK,OAAO;EAAE,MAAM,KAAK,QAAQ,YAAY;EAAG,MAAM,OAAO,CAAC,QAAQ,WAAW,CAAC;EAAG,MAAM;EAAG,UAAU;CAAE,CAAC;CAC3G,KAAK,OAAO;EAAE,MAAM,KAAK,QAAQ,SAAS;EAAG,WAAW;EAAG,MAAM;CAAE,CAAC;CACpE,KAAK,OAAO;EAAE,MAAM,KAAK,QAAQ,OAAO;EAAG,MAAM;CAAE,CAAC;AACtD,CAAC;AACD,MAAM,mBAAmB,KAAK,OAAO;CACnC,cAAc;CACd,OAAO,OAAO;EAAC;EAAc;EAAU;EAAU;CAAQ,CAAC;CAC1D,QAAQ;CACR,QAAQ,KAAK,MAAM,KAAK,OAAO;EAAE,UAAU;EAAG,OAAO;CAAc,CAAC,CAAC;CACrE,SAAS,EAAE,OAAO;AACpB,CAAC;AACD,MAAM,OAAO,KAAK,OAAO;CAAE,YAAY;CAAG,UAAU;AAAE,CAAC;AACvD,MAAM,mBAAmB,KAAK,OAAO;CACnC,SAAS,KAAK,QAAQ,CAAC;CACvB,OAAO,OAAO;EAAC;EAAY;EAAY;EAAU;EAAY;CAAc,CAAC;CAC5E,iBAAiB,KAAK,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;CAC5C,OAAO;CACP,OAAO,EAAE,CAAC;CACV,OAAO,KAAK,OAAO;EAAE,QAAQ;EAAG,UAAU;CAAE,CAAC;AAC/C,CAAC;AACD,MAAM,UAAU,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE;AAC3C,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO;CAAE,QAAQ;CAAG,OAAO;CAAG,OAAO;AAAE,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC;AAC3F,MAAM,kBAAkB,OAAO;CAAC;CAAW;CAAW;CAAY;CAAc;CAAa;AAAO,CAAC;AACrG,MAAM,kBAAkB,KAAK,OAAO;CAClC,GAAG;CACH,WAAW;CACX,QAAQ;CACR,IAAI;CACJ,QAAQ;CACR,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,MAAM,UAAU,KAAK,OAAO;CAC1B,GAAG;CACH,WAAW;CACX,QAAQ;CACR,SAAS,EAAE,OAAO;CAClB,iBAAiB,EAAE,CAAC;CACpB,WAAW,EAAE,CAAC;CACd,cAAc,EAAE,CAAC;CACjB,SAAS,EAAE,CAAC;CACZ,UAAU,EAAE,CAAC;AACf,CAAC;AACD,MAAM,WAAW,KAAK,OAAO;CAC3B,cAAc,EAAE,KAAK,OAAO;EAAE,GAAG;EAAS,SAAS;EAAG,UAAU;EAAG,OAAO;EAAG,UAAU;EAAG,QAAQ;CAAE,CAAC,CAAC;CACtG,SAAS;CACT,iBAAiB,EAAE,CAAC;CACpB,YAAY,EAAE,KAAK,OAAO;EAAE,GAAG;EAAS,WAAW;CAAE,CAAC,CAAC;CACvD,SAAS,EAAE,KAAK,OAAO;EAAE,GAAG;EAAS,WAAW;EAAG,QAAQ;EAAG,iBAAiB;CAAE,CAAC,CAAC;CACnF,iBAAiB,EAAE,eAAe;AACpC,CAAC;AACD,MAAM,SAAS,OAAO,YACpB;CAAC;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;AAAG,CAAC,CAAC,KAAK,WAAW,CACtE,QACA;CAAE,aAAa;CAAyB,QAAQ,KAAK,OAAO;EAAE,OAAO;EAAG,MAAM,EAAE,CAAC;CAAE,CAAC;AAAE,CACxF,CAAC,CACH;AACA,MAAM,SACJ,MACA,QACA,QACA,OACA,QAAkB,CAAC,GACnB,SAAS,SACa;CACtB,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG;CAC9C,OAAO;CACP,UAAU;CACV;CACA;CACA,gBAAgB;CAChB,aAAa,eAAe,KAAK;CACjC,GAAI,KAAK,WAAW,QAAQ,KAAK,KAAK,WAAW,OAAO,IACpD,EAAE,cAAc,yFAAyF,IACzG,CAAC;CACL,YAAY,CACV,GAAG,MAAM,KAAK,UAAU;EAAE;EAAM,IAAI;EAAkB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,SAAS,IAAI;EAAG,QAAQ;CAAE,EAAE,GAC/G,GAAI,KAAK,WAAW,QAAQ,KAAK,KAAK,WAAW,OAAO,IACpD,CACE;EACE,MAAM;EACN,IAAI;EACJ,UAAU;EACV,QAAQ,KAAK,OAAO,EAAE,SAAS,aAAa,CAAC;CAC/C,CACF,IACA,CAAC,CACP;CACA,GAAI,QAAQ,EAAE,MAAM;EAAE,UAAU;EAAM,aAAa;EAAoB,QAAQ;CAAM,EAAE,IAAI,CAAC;CAC5F,WAAW;EACT,GAAG;GACF,SAAS,SAAS,MAAM;GACvB,aAAa,SAAS,oBAAoB;GAC1C,GAAI,SAAS,EAAE,QAAQ,OAAO,IAAI,CAAC;EACrC;CACF;AACF;AACA,MAAM,OAAO,MAAc,QAAwB,UAAsC;CACvF,MAAM,SAAS,MAAM,MAAM,QAAQ,KAAA,GAAW,KAAA,GAAW,KAAK;CAC9D,OAAO,cACL;CACF,IAAI,WAAW,QAAQ,OAAO,OAAO;EAAE,UAAU;EAAM,aAAa;EAAgC,QAAQ;CAAE;MACzG,OAAO,UAAU,SAAS;EAAE,aAAa;EAAc,aAAa;EAAgC,QAAQ;CAAE;CACnH,OAAO;AACT;AACA,MAAa,eAAe,kBAAkB;CAC5C,SAAS;CACT,WAAW;EAAE,eAAe;EAAK,mBAAmB;CAAI;CACxD,SAAS,CAAC,yGAAyG;CACnH,MAAM;EACJ;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,WAAW,iBACT,KAAK,OAAO;IACV,GAAG,mBAAmB,OAAO;IAC7B,OAAO,KAAK,OAAO;KAAE,QAAQ;KAAG,SAAS;KAAG,UAAU;KAAG,UAAU;IAAE,CAAC;IACtE,WAAW,KAAK,OAAO;KACrB,YAAY;KACZ,eAAe;KACf,OAAO,EAAE,CAAC;KACV,QAAQ,EAAE,CAAC;KACX,MAAM,EAAE,CAAC;KACT,iBAAiB,EAAE,CAAC;IACtB,CAAC;GACH,CAAC,CACH;EACF;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,mBAAmB;GAAM;GAC1F,WAAW,iBAAiB,mBAAmB,MAAM;EACvD;EACA,MACE,mBACA,QACA,KAAK,OAAO;GAAE,SAAS,KAAK,QAAQ,CAAC;GAAG,QAAQ;GAAG,YAAY,EAAE,CAAC;GAAG,aAAa,EAAE,CAAC;EAAE,CAAC,GACxF,KAAK,OAAO;GACV,SAAS,KAAK,QAAQ,CAAC;GACvB,GAAG;GACH,YAAY,OAAO,CAAC,WAAW,QAAQ,CAAC;GACxC,iBAAiB,OAAO,CAAC,SAAS,QAAQ,CAAC;GAC3C,cAAc,KAAK,OAAO;IACxB,SAAS;IACT,UAAU;IACV,iBAAiB;IACjB,yBAAyB;IACzB,iBAAiB,EAAE,CAAC;IACpB,UAAU,EAAE,CAAC;GACf,CAAC;EACH,CAAC,CACH;EACA,MAAM,sBAAsB,QAAQ,KAAA,GAAW,KAAK,OAAO,MAAM,CAAC;EAClE,MAAM,qBAAqB,QAAQ,MAAM,KAAK,OAAO,MAAM,CAAC;EAC5D;GACE,GAAG,MAAM,kBAAkB,OAAO,uBAAuB,KAAA,GAAW;IAClE;IACA;IACA;IACA;GACF,CAAC;GACD,WAAW;IACT,GAAG;IACH,OAAO;KAAE,aAAa;KAAe,QAAQ;IAAsB;IACnE,OAAO,EAAE,aAAa,oBAAoB;GAC5C;EACF;EACA,IAAI,iBAAiB,QAAQ;GAAC;GAAY;GAAgB;EAAW,CAAC;EACtE,MAAM,2BAA2B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,GAAG;GAAQ,WAAW;GAAG,OAAO,EAAE,CAAC;EAAE,CAAC,CAAC;EACzG,IAAI,0BAA0B,OAAO;GAAC;GAAY;GAAgB;EAAY,CAAC;EAC/E,MAAM,2BAA2B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,GAAG;GAAQ,GAAG;EAAS,CAAC,CAAC;EAC3F,MACE,uBACA,QACA,KAAK,OAAO,EAAE,eAAe,cAAc,CAAC,GAC5C,KAAK,OAAO;GAAE,WAAW;GAAG,eAAe,EAAE,aAAa;EAAE,CAAC,GAC7D,CAAC,GACD,GACF;EACA,IAAI,uBAAuB,OAAO,CAAC,WAAW,CAAC;EAC/C,GAAG,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,WACxB,MAAM,iBAAiB,UAAU,QAAQ,KAAA,GAAW,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CACnF;EACA,MACE,wBACA,QACA,KAAK,OAAO,EAAE,UAAU,OAAO,CAAC,UAAU,UAAU,CAAC,EAAE,CAAC,GACxD,KAAK,OAAO;GAAE,YAAY;GAAG,MAAM;GAAG,OAAO,EAAE,CAAC;GAAG,MAAM,EAAE,CAAC;EAAE,CAAC,GAC/D,CAAC,GACD,GACF;EACA,IAAI,wBAAwB,QAAQ,CAAC,YAAY,CAAC;EAClD,MAAM,4BAA4B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,YAAY;GAAG,OAAO,EAAE,CAAC;EAAE,CAAC,CAAC;EAChG;GACE,GAAG,MAAM,yBAAyB,OAAO,KAAK,OAAO,QAAQ,GAAG,KAAA,GAAW,CAAC,YAAY,CAAC;GACzF,WAAW;IACT,GAAG;IACH,OAAO;KAAE,aAAa;KAAqB,QAAQ,KAAK,OAAO,QAAQ;IAAE;IACzE,OAAO,EAAE,aAAa,uBAAuB;GAC/C;EACF;EACA,GAAG,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,WACxB,MAAM,kBAAkB,UAAU,QAAQ,KAAA,GAAW,KAAK,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CACrF;EACA,MAAM,wBAAwB,OAAO,QAAQ;EAC7C,MAAM,0BAA0B,QAAQ,iBAAiB,OAAO;EAChE,MAAM,wBAAwB,QAAQ,KAAK,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ;EACpF,MACE,wBACA,QACA,KAAK,OAAO,CAAC,CAAC,GACd,KAAK,OAAO;GAAE,cAAc;GAAG,cAAc,KAAK,OAAO,EAAE,WAAW,MAAM,CAAC;EAAE,CAAC,GAChF,CAAC,GACD,GACF;EACA,MAAM,uBAAuB,QAAQ,KAAA,GAAW,KAAK,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;EAChF,MAAM,uBAAuB,OAAO,kBAAkB,KAAA,GAAW,CAAC,gBAAgB,OAAO,CAAC;EAC1F,MACE,uBACA,QACA,KAAA,GACA,KAAK,OAAO;GAAE,cAAc;GAAG,UAAU,KAAK,MAAM,GAAG,EAAE,UAAU,GAAG,CAAC;EAAE,CAAC,CAC5E;EACA,MAAM,0BAA0B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,cAAc;GAAG,QAAQ;EAAQ,CAAC,CAAC;EACpG,MACE,8BACA,QACA,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,GACtB,KAAK,OAAO;GAAE,GAAG;GAAQ,cAAc;GAAG,KAAK;EAAE,CAAC,CACpD;EACA,MAAM,0BAA0B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,GAAG;GAAQ,cAAc;GAAG,OAAO;EAAE,CAAC,CAAC;EACxG,MAAM,0BAA0B,QAAQ,KAAA,GAAW,KAAK,OAAO;GAAE,GAAG;GAAQ,cAAc;GAAG,OAAO;EAAQ,CAAC,CAAC;EAC9G;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,CACV;IACE,MAAM;IACN,IAAI;IACJ,UAAU;IACV,QAAQ,KAAK,QAAQ;KAAE,SAAS;KAAG,SAAS;IAAO,CAAC;GACtD,CACF;GACA,MAAM;IAAE,UAAU;IAAM,aAAa;IAAc,cAAc,CAAC,cAAc,WAAW;IAAG,QAAQ;GAAE;GACxG,WAAW;IAAE,GAAG;IAAQ,OAAO;KAAE,aAAa;KAAe,QAAQ,KAAK,OAAO,EAAE,YAAY,EAAE,CAAC;IAAE;GAAE;EACxG;EACA,GACE;GACE;IAAC;IAAa;IAAe;GAAK;GAClC;IAAC;IAAW;IAAuB;GAAM;GACzC;IAAC;IAAS;IAAqB;GAAM;GACrC;IAAC;IAAW;IAAuB;GAAK;GACxC;IAAC;IAAO;IAA2B;GAAM;GACzC;IAAC;IAAS;IAAqB;GAAM;GACrC;IAAC;IAAU;IAAsB;GAAM;GACvC;IAAC;IAAU;IAAsB;GAAM;EACzC,CAAC,CACD,KAAK,CAAC,MAAM,MAAM,aAA+B;GACjD,IAAI,eAAe;GACnB,OAAO;GACP,UAAU;GACV;GACA;GACA,gBAAgB;GAChB,aAAa,sBAAsB,KAAK;GACxC,YAAY,CACV;IAAE,MAAM;IAAiB,IAAI;IAAU,UAAU;IAAM,QAAQ,KAAK,OAAO,EAAE,SAAS,aAAa,CAAC;GAAE,GACtG,GAAI,SAAS,YACT;IAAC;IAAgB;IAAmB;IAAsB;GAAO,CAAC,CAAC,KAAK,SAAS;IAC/E,MAAM;IACN,IAAI;IACJ,UAAU,QAAQ;IAClB,QAAQ;GACV,EAAE,IACF,CAAC,CACP;GACA,GAAI,WAAW,SACX,EACE,MAAM;IACJ,UAAU;IACV,aAAa;IACb,QACE,SAAS,WACL,KAAK,OAAO;KACV,cAAc;KACd,iBAAiB,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;KAC5C,eAAe;KACf,oBAAoB;KACpB,uBAAuB;KACvB,SAAS,KAAK,OAAO;MACnB,UAAU;MACV,SAAS,KAAK,MAAM,KAAK,OAAO;OAAE,OAAO,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;OAAG,OAAO;MAAE,CAAC,GAAG,EAClF,UAAU,IACZ,CAAC;KACH,CAAC;IACH,CAAC,IACD,SAAS,WACP,KAAK,OAAO;KACV,cAAc;KACd,iBAAiB,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;KAC5C,eAAe;KACf,oBAAoB;IACtB,CAAC,IACD,KAAK,QAAQ;GACvB,EACF,IACA,CAAC;GACL,WAAW;IACT,GAAG,iBAAiB,KAAK,QAAQ,CAAC;IAClC,OAAO,EAAE,aAAa,6CAA6C;GACrE;EACF,EAAE;EACF;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,KAAK,QAAQ;GAAE;GAChF,WAAW,iBAAiB,KAAK,QAAQ,CAAC;EAC5C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,KAAK,QAAQ;GAAE;GAChF,WAAW,iBAAiB,KAAK,QAAQ,CAAC;EAC5C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,KAAK,QAAQ;GAAE;GAChF,WAAW,iBAAiB,KAAK,QAAQ,CAAC;EAC5C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,KAAK,OAAO;KAAE,QAAQ;KAAG,cAAc;IAAE,CAAC;GAAE;GAC7G,WAAW,iBAAiB,KAAK,OAAO;IAAE,SAAS;IAAG,WAAW;GAAE,CAAC,CAAC;EACvE;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,CAAC;IAAE,MAAM;IAAW,IAAI;IAAS,UAAU;IAAM,QAAQ;GAAE,CAAC;GACxE,MAAM;IAAE,UAAU;IAAM,aAAa;IAAoB,QAAQ,KAAK,QAAQ;GAAE;GAChF,WAAW,iBAAiB,KAAK,QAAQ,CAAC;EAC5C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAY,CACV;IAAE,MAAM;IAAiB,IAAI;IAAU,UAAU;IAAM,QAAQ,KAAK,OAAO,EAAE,SAAS,aAAa,CAAC;GAAE,CACxG;GACA,MAAM;IACJ,UAAU;IACV,aAAa;IACb,QAAQ,KAAK,OAAO;KAClB,iBAAiB;KACjB,cAAc;KACd,iBAAiB,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;KAC5C,oBAAoB;KACpB,SAAS,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;KACpC,iBAAiB;IACnB,CAAC;GACH;GACA,WAAW;IACT,GAAG;IACH,OAAO;KACL,aAAa;KACb,QAAQ,KAAK,OAAO,EAAE,WAAW,KAAK,QAAQ,IAAI,EAAE,CAAC;IACvD;GACF;EACF;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,WAAW,iBAAiB,gBAAgB;EAC9C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,MAAM;IACJ,UAAU;IACV,aAAa;IACb,QAAQ,KAAK,OAAO;KAClB,QAAQ,OAAO;MAAC;MAAY;MAAY;MAAQ;MAAU;MAAa;KAAK,CAAC;KAC7E,WAAW,EAAE,CAAC;KACd,yBAAyB,EAAE,CAAC;IAC9B,CAAC;GACH;GACA,WAAW,iBAAiB,gBAAgB;EAC9C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,WAAW,iBACT,KAAK,OAAO;IACV,YAAY;IACZ,eAAe;IACf,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,iBAAiB,EAAE,CAAC;GACtB,CAAC,CACH;EACF;CACF;CACA,SAAS,CACP;EACE,IAAI;EACJ,OAAO;EACP,SAAS,mBAAmB;EAC5B,QAAQ,mBAAmB;EAC3B,MAAM;EACN,WAAW;EACX,aAAa;EACb,OAAO,mBAAmB;EAC1B,QAAQ,mBAAmB;CAC7B,GACA,GAAI,CAAC,UAAU,WAAW,CAAC,CAAW,SAAS,UAAU,CACvD;EACE,IAAI;EACJ;EACA,SAAS;EACT,QAAQ;EACR,MAAM;EACN,WAAW;EACX,aAAa;EACb,OAAO;CACT,GACA;EACE,IAAI;EACJ;EACA,SAAS;EACT,QAAQ;EACR,MAAM;EACN,WAAW;EACX,aAAa;EACb,OAAO,KAAK,OAAO;GACjB,MAAM,KAAK,QAAQ,uBAAuB;GAC1C,GAAG;GACH,iBAAiB,KAAK,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;EAC9C,CAAC;CACH,CACF,CAAC,CACH;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/voiceControl.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineDoomPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { Type } from 'typebox';\n\nexport const voiceControlMethod = defineDoomPluginMethod({\n service: 'voice',\n method: 'control',\n scope: 'session',\n direction: 'client-to-server',\n input: Type.Object(\n {\n action: Type.Union(\n ['status', 'manual', 'activate', 'deactivate', 'switch', 'mute', 'unmute', 'interrupt', 'transfer'].map(\n (value) => Type.Literal(value),\n ),\n ),\n /** The voice to start (`activate`) or move to (`switch`). `switch` requires it. */\n mode: Type.Optional(Type.Union([Type.Literal('legacy'), Type.Literal('live')])),\n target: Type.Optional(Type.Integer({ minimum: 1 })),\n revision: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n },\n { additionalProperties: false },\n ),\n output: Type.Object(\n {\n state: Type.String(),\n mode: Type.String(),\n manual: Type.String(),\n muted: Type.Boolean(),\n error: Type.Optional(Type.String()),\n },\n { additionalProperties: false },\n ),\n});\n","import { defineApiContract, jsonApiResponses, type DoomHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport { voiceControlMethod } from './voiceControl';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Client = { clientId: S, connectionId: S };\nconst Configuration = Type.Object({\n mode: values(['manual', 'autonomous']),\n activityControl: values(['host', 'client']),\n endpointSilenceMs: O(Type.Integer({ minimum: 250 })),\n});\nconst Playback = { playbackId: S, outcome: values(['completed', 'stopped', 'aborted', 'failed']), error: O(S) };\nconst Sequence = { sequence: N };\nconst Control = values(['mute', 'unmute', 'interrupt']);\nconst Browser = Type.Object({\n connection: values(['connecting', 'connected', 'closed', 'failed']),\n listening: B,\n speaking: B,\n muted: B,\n error: O(S),\n});\nexport const VoiceMediaEventSchema = Type.Union([\n Type.Object({\n ...Sequence,\n type: Type.Literal('capture-start'),\n captureId: S,\n sampleRate: Type.Literal(16000),\n channels: Type.Literal(1),\n bitsPerSample: Type.Literal(16),\n configuration: Configuration,\n }),\n Type.Object({ ...Sequence, type: values(['capture-stop', 'capture-abort']), captureId: S }),\n Type.Object({\n ...Sequence,\n type: Type.Literal('playback-start'),\n playbackId: S,\n text: S,\n delivery: O(values(['client', 'streamed'])),\n voice: O(S),\n rate: O(N),\n }),\n Type.Object({ ...Sequence, type: values(['playback-stop', 'playback-abort']), playbackId: S }),\n Type.Object({ ...Sequence, type: values(['realtime-start', 'realtime-stop']), activationId: S }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-control'), activationId: S, action: Control }),\n Type.Object({ ...Sequence, type: Type.Literal('realtime-send'), activationId: S, messages: Type.Array(S) }),\n]);\nconst RealtimeEvent = Type.Union([\n Type.Object({ type: Type.Literal('ready') }),\n Type.Object({ type: Type.Literal('transcript'), role: values(['user', 'assistant']), text: S, complete: B }),\n Type.Object({ type: Type.Literal('request'), requestId: S, text: S }),\n Type.Object({ type: Type.Literal('error'), code: S }),\n]);\nconst RealtimeSnapshot = Type.Object({\n activationId: S,\n state: values(['connecting', 'active', 'closed', 'failed']),\n cursor: N,\n events: Type.Array(Type.Object({ sequence: N, event: RealtimeEvent })),\n browser: O(Browser),\n});\nconst Wake = Type.Object({ eventEpoch: S, sequence: N });\nconst GlobalLiveStatus = Type.Object({\n version: Type.Literal(1),\n state: values(['disabled', 'starting', 'active', 'draining', 'shuttingDown']),\n activeSessionId: Type.Union([S, Type.Null()]),\n muted: B,\n error: O(S),\n media: Type.Object({ client: B, realtime: B }),\n signedIn: O(B),\n});\nconst Version = { version: Type.Literal(3) };\nconst Targets = Type.Array(Type.Object({ handle: S, label: S, order: N }), { maxItems: 32 });\nconst OwnershipAction = values(['catalog', 'prepare', 'activate', 'deactivate', 'readiness', 'fence']);\nconst Acknowledgement = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n ok: B,\n active: B,\n error: O(S),\n});\nconst Command = Type.Object({\n ...Version,\n commandId: S,\n action: OwnershipAction,\n targets: O(Targets),\n catalogRevision: O(S),\n handoffId: O(S),\n controllerId: O(S),\n leaseId: O(S),\n revision: O(N),\n});\nconst Snapshot = Type.Object({\n registration: O(Type.Object({ ...Version, leaseId: S, revision: N, label: S, eligible: B, active: B })),\n targets: Targets,\n catalogRevision: O(S),\n activation: O(Type.Object({ ...Version, requestId: S })),\n handoff: O(Type.Object({ ...Version, requestId: S, handle: S, catalogRevision: S })),\n acknowledgement: O(Acknowledgement),\n});\nconst Errors = Object.fromEntries(\n [400, 404, 409, 410, 413, 415, 429, 500, 502, 503, 504].map((status) => [\n status,\n { description: 'Voice request failed.', schema: Type.Object({ error: S, code: O(S) }) },\n ]),\n);\nconst route = (\n path: string,\n method: 'GET' | 'POST',\n output?: object,\n input?: object,\n query: string[] = [],\n status = 200,\n): DoomHttpContract => ({\n id: `voice.${path.slice(1).replaceAll('/', '.')}`,\n scope: 'session',\n basePath: 'voice-media',\n path,\n method,\n authentication: 'owner',\n description: `Voice media ${path}.`,\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? { availability: 'Internal broker route; requires the host-issued bearer token for this route namespace.' }\n : {}),\n parameters: [\n ...query.map((name) => ({ name, in: 'query' as const, required: !['after', 'wait'].includes(name), schema: S })),\n ...(path.startsWith('/host/') || path.startsWith('/hub/')\n ? [\n {\n name: 'Authorization',\n in: 'header' as const,\n required: true,\n schema: Type.String({ pattern: '^Bearer .+' }),\n },\n ]\n : []),\n ],\n ...(input ? { body: { required: true, contentType: 'application/json', schema: input } } : {}),\n responses: {\n ...Errors,\n [output ? status : 204]: {\n description: output ? 'Voice response.' : 'Accepted with no response body.',\n ...(output ? { schema: output } : {}),\n },\n },\n});\nconst pcm = (path: string, method: 'GET' | 'POST', query: string[]): DoomHttpContract => {\n const result = route(path, method, undefined, undefined, query);\n result.description =\n 'PCM signed 16-bit little-endian, 16000 Hz, mono. Chunks contain complete samples. Activity headers carry state, level, elapsed time, epoch and speech duration. A 204 response carries x-po-capture-state or x-po-playback-state when applicable.';\n if (method === 'POST') result.body = { required: true, contentType: 'application/vnd.po.pcm-s16le', schema: S };\n else result.responses['200'] = { description: 'PCM bytes.', contentType: 'application/vnd.po.pcm-s16le', schema: S };\n return result;\n};\nexport const apiContracts = defineApiContract({\n version: 1,\n protocols: { 'voice-media': '6', 'voice-ownership': '3' },\n dynamic: ['Realtime event strings and SDP are provider-defined protocol documents passed through the media broker.'],\n http: [\n {\n id: 'voice.status',\n scope: 'session',\n basePath: 'voice',\n path: '/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Voice session status and media readiness.',\n responses: jsonApiResponses(\n Type.Object({\n ...voiceControlMethod.output.properties,\n media: Type.Object({ closed: B, capture: B, playback: B, realtime: B }),\n readiness: Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n }),\n ),\n },\n {\n id: 'voice.control.http',\n scope: 'session',\n basePath: 'voice',\n path: '/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Control the voice session.',\n body: { required: true, contentType: 'application/json', schema: voiceControlMethod.input },\n responses: jsonApiResponses(voiceControlMethod.output),\n },\n route(\n '/client/connect',\n 'POST',\n Type.Object({ version: Type.Literal(6), cursor: N, eventEpoch: O(S), heartbeatMs: O(N) }),\n Type.Object({\n version: Type.Literal(6),\n ...Client,\n clientKind: values(['browser', 'native']),\n controlLocation: values(['local', 'remote']),\n capabilities: Type.Object({\n capture: B,\n playback: B,\n captureActivity: B,\n autonomousOrchestration: B,\n playbackDucking: O(B),\n realtime: O(B),\n }),\n }),\n ),\n route('/client/disconnect', 'POST', undefined, Type.Object(Client)),\n route('/client/heartbeat', 'POST', Wake, Type.Object(Client)),\n {\n ...route('/client/events', 'GET', VoiceMediaEventSchema, undefined, [\n 'clientId',\n 'connectionId',\n 'after',\n 'wait',\n ]),\n responses: {\n ...Errors,\n '200': { description: 'Next event.', schema: VoiceMediaEventSchema },\n '204': { description: 'No pending event.' },\n },\n },\n pcm('/client/audio', 'POST', ['clientId', 'connectionId', 'captureId']),\n route('/client/capture-stopped', 'POST', undefined, Type.Object({ ...Client, captureId: S, error: O(S) })),\n pcm('/client/playback-audio', 'GET', ['clientId', 'connectionId', 'playbackId']),\n route('/client/playback-result', 'POST', undefined, Type.Object({ ...Client, ...Playback })),\n route(\n '/host/capture/start',\n 'POST',\n Type.Object({ configuration: Configuration }),\n Type.Object({ captureId: S, configuration: O(Configuration) }),\n [],\n 201,\n ),\n pcm('/host/capture/audio', 'GET', ['captureId']),\n ...['stop', 'abort'].map((action) =>\n route(`/host/capture/${action}`, 'POST', undefined, Type.Object({ captureId: S })),\n ),\n route(\n '/host/playback/start',\n 'POST',\n Type.Object({ delivery: values(['client', 'streamed']) }),\n Type.Object({ playbackId: S, text: S, voice: O(S), rate: O(N) }),\n [],\n 201,\n ),\n pcm('/host/playback/audio', 'POST', ['playbackId']),\n route('/host/playback/audio-end', 'POST', undefined, Type.Object({ playbackId: S, error: O(S) })),\n {\n ...route('/host/playback/result', 'GET', Type.Object(Playback), undefined, ['playbackId']),\n responses: {\n ...Errors,\n '200': { description: 'Playback outcome.', schema: Type.Object(Playback) },\n '204': { description: 'Playback is pending.' },\n },\n },\n ...['stop', 'abort'].map((action) =>\n route(`/host/playback/${action}`, 'POST', undefined, Type.Object({ playbackId: S })),\n ),\n route('/hub/ownership/state', 'GET', Snapshot),\n route('/hub/ownership/command', 'POST', Acknowledgement, Command),\n route('/host/ownership/sync', 'POST', Type.Object({ command: O(Command) }), Snapshot),\n route(\n '/host/realtime/start',\n 'POST',\n Type.Object({}),\n Type.Object({ activationId: S, instructions: Type.String({ maxLength: 16384 }) }),\n [],\n 201,\n ),\n route('/host/realtime/stop', 'POST', undefined, Type.Object({ activationId: S })),\n route('/host/realtime/poll', 'GET', RealtimeSnapshot, undefined, ['activationId', 'after']),\n route(\n '/host/realtime/send',\n 'POST',\n undefined,\n Type.Object({ activationId: S, messages: Type.Array(S, { maxItems: 64 }) }),\n ),\n route('/host/realtime/control', 'POST', undefined, Type.Object({ activationId: S, action: Control })),\n route(\n '/client/realtime/negotiate',\n 'POST',\n Type.Object({ sdp: S }),\n Type.Object({ ...Client, activationId: S, sdp: S }),\n ),\n route('/client/realtime/event', 'POST', undefined, Type.Object({ ...Client, activationId: S, event: S })),\n route('/client/realtime/state', 'POST', undefined, Type.Object({ ...Client, activationId: S, state: Browser })),\n {\n id: 'voice.manual',\n scope: 'session',\n basePath: 'voice-media',\n path: '/manual/transcribe',\n method: 'POST',\n authentication: 'owner',\n description: 'Transcribe at most 4 MiB of WebM/Opus, MP4/AAC, or WAV audio, at most 300000 milliseconds.',\n parameters: [\n {\n name: 'x-doom-audio-duration-ms',\n in: 'header',\n required: true,\n schema: Type.Integer({ minimum: 0, maximum: 300000 }),\n },\n ],\n body: {\n required: true,\n contentType: 'audio/webm',\n contentTypes: ['audio/webm', 'audio/mp4', 'audio/wav'],\n schema: S,\n },\n responses: { ...Errors, '200': { description: 'Transcript.', schema: Type.Object({ transcript: S }) } },\n },\n ...(\n [\n ['readiness', '/live/agent', 'GET'],\n ['prepare', '/live/agent/prepare', 'POST'],\n ['admit', '/live/agent/admit', 'POST'],\n ['results', '/live/agent/results', 'GET'],\n ['ack', '/live/agent/results/ack', 'POST'],\n ['fence', '/live/agent/fence', 'POST'],\n ['select', '/live/agent/select', 'POST'],\n ['revoke', '/live/agent/revoke', 'POST'],\n ] as const\n ).map(([name, path, method]): DoomHttpContract => ({\n id: `voice.agent.${name}`,\n scope: 'session',\n basePath: 'voice',\n path,\n method,\n authentication: 'owner',\n description: `Native Voice agent ${name}. Only the host-issued hub bearer can access this route.`,\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ...(name === 'results'\n ? ['activationId', 'routeGeneration', 'sessionIncarnation', 'after'].map((key) => ({\n name: key,\n in: 'query' as const,\n required: key !== 'after',\n schema: S,\n }))\n : []),\n ],\n ...(method === 'POST'\n ? {\n body: {\n required: true,\n contentType: 'application/json',\n schema:\n name === 'select'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n nativeTransferAllowed: B,\n catalog: Type.Object({\n revision: S,\n targets: Type.Array(Type.Object({ order: Type.Integer({ minimum: 1 }), label: S }), {\n maxItems: 256,\n }),\n }),\n })\n : name === 'revoke'\n ? Type.Object({\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 1 }),\n transactionId: S,\n sessionIncarnation: S,\n })\n : Type.Unknown(),\n },\n }\n : {}),\n responses: {\n ...jsonApiResponses(Type.Unknown()),\n '204': { description: 'Agent result acknowledged or route fenced.' },\n },\n })),\n {\n id: 'voice.peer',\n scope: 'global',\n basePath: 'voice',\n path: '/peer',\n method: 'POST',\n authentication: 'none',\n description: 'Accept an HMAC-authenticated bounded Voice media relay request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerOwnership',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-ownership',\n method: 'POST',\n authentication: 'none',\n description: 'Discover and stage Voice ownership through an HMAC-authenticated paired host.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.peerAgent',\n scope: 'global',\n basePath: 'voice',\n path: '/peer-agent',\n method: 'POST',\n authentication: 'none',\n description: 'Accept a signed, replay-guarded, grant-scoped native Voice agent request from a configured peer.',\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.relayBinding',\n scope: 'global',\n basePath: 'voice',\n path: '/relay-binding',\n method: 'POST',\n authentication: 'owner',\n description: 'Issue an expiring controller-bound handle for a granted paired Voice session.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ target: S, connectionId: S }) },\n responses: jsonApiResponses(Type.Object({ binding: S, expiresAt: N })),\n },\n {\n id: 'voice.relay',\n scope: 'global',\n basePath: 'voice',\n path: '/relay',\n method: 'POST',\n authentication: 'owner',\n description: 'Relay a browser Voice media operation through an expiring controller-bound handle.',\n parameters: [{ name: 'binding', in: 'query', required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: Type.Unknown() },\n responses: jsonApiResponses(Type.Unknown()),\n },\n {\n id: 'voice.nativeTransfer',\n scope: 'global',\n basePath: 'voice',\n path: '/live/native-transfer',\n method: 'POST',\n authentication: 'owner',\n description: 'Host-only revision-bound native Live transfer. Requires the host hub bearer.',\n parameters: [\n { name: 'Authorization', in: 'header', required: true, schema: Type.String({ pattern: '^Bearer .+' }) },\n ],\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n sourceSessionId: S,\n activationId: S,\n routeGeneration: Type.Integer({ minimum: 0 }),\n sessionIncarnation: S,\n ordinal: Type.Integer({ minimum: 1 }),\n catalogRevision: S,\n }),\n },\n responses: {\n ...Errors,\n '202': {\n description: 'Transfer requested; source work drains before commit.',\n schema: Type.Object({ requested: Type.Literal(true) }),\n },\n },\n },\n {\n id: 'voice.liveStatus',\n scope: 'global',\n basePath: 'voice',\n path: '/live/status',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the host-global live companion state without activating media.',\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.liveControl',\n scope: 'global',\n basePath: 'voice',\n path: '/live/control',\n method: 'POST',\n authentication: 'owner',\n description: 'Explicitly activate, transfer, mute, interrupt or end the host-global live companion.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({\n action: values(['activate', 'transfer', 'mute', 'unmute', 'interrupt', 'end']),\n sessionId: O(S),\n expectedSourceSessionId: O(S),\n }),\n },\n responses: jsonApiResponses(GlobalLiveStatus),\n },\n {\n id: 'voice.readiness',\n scope: 'global',\n basePath: 'voice',\n path: '/readiness',\n method: 'GET',\n authentication: 'owner',\n description: 'Read configured voice readiness.',\n responses: jsonApiResponses(\n Type.Object({\n configured: B,\n transcription: B,\n error: O(S),\n engine: O(S),\n mode: O(S),\n correctionModel: O(S),\n }),\n ),\n },\n ],\n sockets: [\n {\n id: 'voice.control',\n scope: 'session',\n service: voiceControlMethod.service,\n member: voiceControlMethod.method,\n kind: 'method',\n direction: 'client-to-server',\n description: 'Voice session control through the scoped plugin service.',\n input: voiceControlMethod.input,\n output: voiceControlMethod.output,\n },\n ...(['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'voice.wake',\n scope,\n service: 'po.hub.v1',\n member: 'voice_media_wake',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Voice media wake channel payload.',\n input: Wake,\n },\n {\n id: 'voice.ownership',\n scope,\n service: 'po.hub.v1',\n member: 'voice_ownership',\n kind: 'channel' as const,\n direction: 'server-to-client' as const,\n description: 'Browser media ownership channel payload.',\n input: Type.Object({\n type: Type.Literal('browser-media-session'),\n ...Version,\n activeSessionId: Type.Union([S, Type.Null()]),\n }),\n },\n ]),\n ],\n});\nexport default apiContracts;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const require_clientMedia = require("./clientMedia-DMBtzBH2.cjs");
|
|
2
|
+
let _agimon_ai_po_core_web = require("@agimon-ai/po-core/web");
|
|
3
|
+
//#region src/types/browserClientMediaUrl.ts
|
|
4
|
+
/** Browser compatibility API. Native callers supply their SDK-owned session root. */
|
|
5
|
+
function voiceMediaClientUrl(sessionId, route, params = {}) {
|
|
6
|
+
return require_clientMedia.voiceMediaUrl((0, _agimon_ai_po_core_web.sessionApiPath)(sessionId), sessionId, route, params);
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
Object.defineProperty(exports, "voiceMediaClientUrl", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return voiceMediaClientUrl;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=browserClientMediaUrl-CF3HiKG2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserClientMediaUrl-CF3HiKG2.cjs","names":["voiceMediaUrl","sessionApiPath"],"sources":["../src/types/browserClientMediaUrl.ts"],"sourcesContent":["import { sessionApiPath } from '@agimon-ai/po-core/web';\n\nimport { voiceMediaUrl } from './clientMedia';\n\n/** Browser compatibility API. Native callers supply their SDK-owned session root. */\nexport function voiceMediaClientUrl(sessionId: string, route: string, params: Record<string, string> = {}): string {\n return voiceMediaUrl(sessionApiPath(sessionId), sessionId, route, params);\n}\n"],"mappings":";;;;AAKA,SAAgB,oBAAoB,WAAmB,OAAe,SAAiC,CAAC,GAAW;CACjH,OAAOA,oBAAAA,eAAAA,GAAcC,uBAAAA,eAAAA,CAAe,SAAS,GAAG,WAAW,OAAO,MAAM;AAC1E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/types/browserClientMediaUrl.d.ts
|
|
2
|
+
/** Browser compatibility API. Native callers supply their SDK-owned session root. */
|
|
3
|
+
declare function voiceMediaClientUrl(sessionId: string, route: string, params?: Record<string, string>): string;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { voiceMediaClientUrl as t };
|
|
6
|
+
//# sourceMappingURL=browserClientMediaUrl-CJGaGD6J.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserClientMediaUrl-CJGaGD6J.d.mts","names":[],"sources":["../src/types/browserClientMediaUrl.ts"],"mappings":";;iBAKgB,oBAAoB,mBAAmB,eAAe,SAAQ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { y as voiceMediaUrl } from "./clientMedia-DZ_-WG5x.mjs";
|
|
2
|
+
import { sessionApiPath } from "@agimon-ai/po-core/web";
|
|
3
|
+
//#region src/types/browserClientMediaUrl.ts
|
|
4
|
+
/** Browser compatibility API. Native callers supply their SDK-owned session root. */
|
|
5
|
+
function voiceMediaClientUrl(sessionId, route, params = {}) {
|
|
6
|
+
return voiceMediaUrl(sessionApiPath(sessionId), sessionId, route, params);
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { voiceMediaClientUrl as t };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=browserClientMediaUrl-CW2lmHl4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserClientMediaUrl-CW2lmHl4.mjs","names":[],"sources":["../src/types/browserClientMediaUrl.ts"],"sourcesContent":["import { sessionApiPath } from '@agimon-ai/po-core/web';\n\nimport { voiceMediaUrl } from './clientMedia';\n\n/** Browser compatibility API. Native callers supply their SDK-owned session root. */\nexport function voiceMediaClientUrl(sessionId: string, route: string, params: Record<string, string> = {}): string {\n return voiceMediaUrl(sessionApiPath(sessionId), sessionId, route, params);\n}\n"],"mappings":";;;;AAKA,SAAgB,oBAAoB,WAAmB,OAAe,SAAiC,CAAC,GAAW;CACjH,OAAO,cAAc,eAAe,SAAS,GAAG,WAAW,OAAO,MAAM;AAC1E"}
|