@effect-uai/core 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AiError-CBuPHVKA.d.mts → AiError-CAX_48RU.d.mts} +27 -5
- package/dist/{AiError-CBuPHVKA.d.mts.map → AiError-CAX_48RU.d.mts.map} +1 -1
- package/dist/Audio-BfCTGnH3.d.mts +61 -0
- package/dist/Audio-BfCTGnH3.d.mts.map +1 -0
- package/dist/{Image-BZmKfIdq.d.mts → Image-HNmMpMTh.d.mts} +1 -1
- package/dist/{Image-BZmKfIdq.d.mts.map → Image-HNmMpMTh.d.mts.map} +1 -1
- package/dist/{Items-CB8Bo3FI.d.mts → Items-DqbaJoz7.d.mts} +5 -5
- package/dist/{Items-CB8Bo3FI.d.mts.map → Items-DqbaJoz7.d.mts.map} +1 -1
- package/dist/{StructuredFormat-BWq5Hd1O.d.mts → StructuredFormat-BbN4dosH.d.mts} +11 -4
- package/dist/StructuredFormat-BbN4dosH.d.mts.map +1 -0
- package/dist/{Tool-DjVufH7i.d.mts → Tool-Y0__Py1H.d.mts} +20 -4
- package/dist/Tool-Y0__Py1H.d.mts.map +1 -0
- package/dist/Turn-ChbL2foc.d.mts +388 -0
- package/dist/Turn-ChbL2foc.d.mts.map +1 -0
- package/dist/domain/AiError.d.mts +2 -2
- package/dist/domain/AiError.mjs +19 -3
- package/dist/domain/AiError.mjs.map +1 -1
- package/dist/domain/Audio.d.mts +2 -0
- package/dist/domain/Audio.mjs +14 -0
- package/dist/domain/Audio.mjs.map +1 -0
- package/dist/domain/Image.d.mts +1 -1
- package/dist/domain/Items.d.mts +1 -1
- package/dist/domain/Items.mjs +1 -1
- package/dist/domain/Items.mjs.map +1 -1
- package/dist/domain/Music.d.mts +116 -0
- package/dist/domain/Music.d.mts.map +1 -0
- package/dist/domain/Music.mjs +29 -0
- package/dist/domain/Music.mjs.map +1 -0
- package/dist/domain/Transcript.d.mts +95 -0
- package/dist/domain/Transcript.d.mts.map +1 -0
- package/dist/domain/Transcript.mjs +22 -0
- package/dist/domain/Transcript.mjs.map +1 -0
- package/dist/domain/Turn.d.mts +2 -2
- package/dist/domain/Turn.mjs +22 -4
- package/dist/domain/Turn.mjs.map +1 -1
- package/dist/domain/Turn.test.d.mts +1 -0
- package/dist/domain/Turn.test.mjs +136 -0
- package/dist/domain/Turn.test.mjs.map +1 -0
- package/dist/embedding-model/Embedding.d.mts +15 -3
- package/dist/embedding-model/Embedding.d.mts.map +1 -1
- package/dist/embedding-model/Embedding.mjs.map +1 -1
- package/dist/embedding-model/EmbeddingModel.d.mts +33 -17
- package/dist/embedding-model/EmbeddingModel.d.mts.map +1 -1
- package/dist/embedding-model/EmbeddingModel.mjs.map +1 -1
- package/dist/embedding-model/EmbeddingModel.test.d.mts +1 -0
- package/dist/embedding-model/EmbeddingModel.test.mjs +59 -0
- package/dist/embedding-model/EmbeddingModel.test.mjs.map +1 -0
- package/dist/index.d.mts +13 -7
- package/dist/index.mjs +7 -1
- package/dist/language-model/LanguageModel.d.mts +30 -8
- package/dist/language-model/LanguageModel.d.mts.map +1 -1
- package/dist/language-model/LanguageModel.mjs +33 -3
- package/dist/language-model/LanguageModel.mjs.map +1 -1
- package/dist/language-model/LanguageModel.test.d.mts +1 -0
- package/dist/language-model/LanguageModel.test.mjs +143 -0
- package/dist/language-model/LanguageModel.test.mjs.map +1 -0
- package/dist/loop/Loop.d.mts +94 -11
- package/dist/loop/Loop.d.mts.map +1 -1
- package/dist/loop/Loop.mjs +92 -26
- package/dist/loop/Loop.mjs.map +1 -1
- package/dist/loop/Loop.test.mjs +171 -3
- package/dist/loop/Loop.test.mjs.map +1 -1
- package/dist/music-generator/MusicGenerator.d.mts +77 -0
- package/dist/music-generator/MusicGenerator.d.mts.map +1 -0
- package/dist/music-generator/MusicGenerator.mjs +51 -0
- package/dist/music-generator/MusicGenerator.mjs.map +1 -0
- package/dist/music-generator/MusicGenerator.test.d.mts +1 -0
- package/dist/music-generator/MusicGenerator.test.mjs +154 -0
- package/dist/music-generator/MusicGenerator.test.mjs.map +1 -0
- package/dist/observability/Metrics.d.mts +1 -1
- package/dist/observability/Metrics.mjs +1 -1
- package/dist/observability/Metrics.mjs.map +1 -1
- package/dist/speech-synthesizer/SpeechSynthesizer.d.mts +96 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.d.mts.map +1 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.mjs +48 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.mjs.map +1 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.test.d.mts +1 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.test.mjs +112 -0
- package/dist/speech-synthesizer/SpeechSynthesizer.test.mjs.map +1 -0
- package/dist/streaming/JSONL.d.mts +10 -3
- package/dist/streaming/JSONL.d.mts.map +1 -1
- package/dist/streaming/JSONL.mjs +15 -9
- package/dist/streaming/JSONL.mjs.map +1 -1
- package/dist/structured-format/StructuredFormat.d.mts +2 -2
- package/dist/structured-format/StructuredFormat.mjs +9 -1
- package/dist/structured-format/StructuredFormat.mjs.map +1 -1
- package/dist/structured-format/StructuredFormat.test.d.mts +1 -0
- package/dist/structured-format/StructuredFormat.test.mjs +70 -0
- package/dist/structured-format/StructuredFormat.test.mjs.map +1 -0
- package/dist/testing/MockMusicGenerator.d.mts +39 -0
- package/dist/testing/MockMusicGenerator.d.mts.map +1 -0
- package/dist/testing/MockMusicGenerator.mjs +96 -0
- package/dist/testing/MockMusicGenerator.mjs.map +1 -0
- package/dist/testing/MockProvider.d.mts +23 -18
- package/dist/testing/MockProvider.d.mts.map +1 -1
- package/dist/testing/MockProvider.mjs +56 -72
- package/dist/testing/MockProvider.mjs.map +1 -1
- package/dist/testing/MockSpeechSynthesizer.d.mts +37 -0
- package/dist/testing/MockSpeechSynthesizer.d.mts.map +1 -0
- package/dist/testing/MockSpeechSynthesizer.mjs +95 -0
- package/dist/testing/MockSpeechSynthesizer.mjs.map +1 -0
- package/dist/testing/MockTranscriber.d.mts +37 -0
- package/dist/testing/MockTranscriber.d.mts.map +1 -0
- package/dist/testing/MockTranscriber.mjs +77 -0
- package/dist/testing/MockTranscriber.mjs.map +1 -0
- package/dist/tool/HistoryCheck.d.mts +1 -1
- package/dist/tool/Outcome.d.mts +1 -1
- package/dist/tool/Resolvers.d.mts +65 -8
- package/dist/tool/Resolvers.d.mts.map +1 -1
- package/dist/tool/Resolvers.mjs +8 -12
- package/dist/tool/Resolvers.mjs.map +1 -1
- package/dist/tool/Resolvers.test.mjs +6 -5
- package/dist/tool/Resolvers.test.mjs.map +1 -1
- package/dist/tool/Tool.d.mts +2 -2
- package/dist/tool/Tool.mjs +18 -1
- package/dist/tool/Tool.mjs.map +1 -1
- package/dist/tool/Tool.test.d.mts +1 -0
- package/dist/tool/Tool.test.mjs +66 -0
- package/dist/tool/Tool.test.mjs.map +1 -0
- package/dist/tool/Toolkit.d.mts +4 -6
- package/dist/tool/Toolkit.d.mts.map +1 -1
- package/dist/tool/Toolkit.mjs +14 -43
- package/dist/tool/Toolkit.mjs.map +1 -1
- package/dist/transcriber/Transcriber.d.mts +101 -0
- package/dist/transcriber/Transcriber.d.mts.map +1 -0
- package/dist/transcriber/Transcriber.mjs +49 -0
- package/dist/transcriber/Transcriber.mjs.map +1 -0
- package/dist/transcriber/Transcriber.test.d.mts +1 -0
- package/dist/transcriber/Transcriber.test.mjs +130 -0
- package/dist/transcriber/Transcriber.test.mjs.map +1 -0
- package/package.json +37 -1
- package/src/domain/AiError.ts +22 -1
- package/src/domain/Audio.ts +88 -0
- package/src/domain/Items.ts +1 -1
- package/src/domain/Music.ts +121 -0
- package/src/domain/Transcript.ts +83 -0
- package/src/domain/Turn.test.ts +141 -0
- package/src/domain/Turn.ts +50 -43
- package/src/embedding-model/Embedding.ts +23 -0
- package/src/embedding-model/EmbeddingModel.test.ts +92 -0
- package/src/embedding-model/EmbeddingModel.ts +30 -20
- package/src/index.ts +6 -0
- package/src/language-model/LanguageModel.test.ts +170 -0
- package/src/language-model/LanguageModel.ts +64 -1
- package/src/loop/Loop.test.ts +256 -3
- package/src/loop/Loop.ts +225 -49
- package/src/music-generator/MusicGenerator.test.ts +170 -0
- package/src/music-generator/MusicGenerator.ts +123 -0
- package/src/observability/Metrics.ts +1 -1
- package/src/speech-synthesizer/SpeechSynthesizer.test.ts +141 -0
- package/src/speech-synthesizer/SpeechSynthesizer.ts +131 -0
- package/src/streaming/JSONL.ts +16 -13
- package/src/structured-format/StructuredFormat.test.ts +105 -0
- package/src/structured-format/StructuredFormat.ts +14 -1
- package/src/testing/MockMusicGenerator.ts +168 -0
- package/src/testing/MockProvider.ts +126 -105
- package/src/testing/MockSpeechSynthesizer.ts +163 -0
- package/src/testing/MockTranscriber.ts +137 -0
- package/src/tool/Resolvers.test.ts +8 -5
- package/src/tool/Resolvers.ts +17 -19
- package/src/tool/Tool.test.ts +105 -0
- package/src/tool/Tool.ts +20 -0
- package/src/tool/Toolkit.ts +49 -50
- package/src/transcriber/Transcriber.test.ts +125 -0
- package/src/transcriber/Transcriber.ts +127 -0
- package/dist/StructuredFormat-BWq5Hd1O.d.mts.map +0 -1
- package/dist/Tool-DjVufH7i.d.mts.map +0 -1
- package/dist/Turn-OPaILVIB.d.mts +0 -194
- package/dist/Turn-OPaILVIB.d.mts.map +0 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Context, Effect, Function, Stream } from "effect"
|
|
2
|
+
import * as AiError from "../domain/AiError.js"
|
|
3
|
+
import type { AudioFormat, AudioSource } from "../domain/Audio.js"
|
|
4
|
+
import type { TranscriptEvent, TranscriptResult } from "../domain/Transcript.js"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Cross-provider sync transcription request. Provider-specific
|
|
8
|
+
* extensions (Deepgram `keyterm[]`, ElevenLabs `diarize`, Google
|
|
9
|
+
* `adaptation`, …) live on each provider's typed request which extends
|
|
10
|
+
* this and narrows `model`.
|
|
11
|
+
*/
|
|
12
|
+
export type CommonTranscribeRequest = {
|
|
13
|
+
readonly audio: AudioSource
|
|
14
|
+
/** Model identifier. Each provider narrows to its typed literal union. */
|
|
15
|
+
readonly model: string
|
|
16
|
+
/** ISO-639-1 / BCP-47. Omit for autodetection (where supported). */
|
|
17
|
+
readonly language?: string
|
|
18
|
+
/**
|
|
19
|
+
* Vocab biasing. Single-string covers OpenAI/Whisper-style prompts;
|
|
20
|
+
* `terms[]` covers Deepgram `keyterm`, Google adaptation phrases, AWS
|
|
21
|
+
* `vocabularyName`. Providers ignore what they don't support.
|
|
22
|
+
*/
|
|
23
|
+
readonly prompt?: string | { readonly terms: ReadonlyArray<string> }
|
|
24
|
+
readonly diarization?: boolean
|
|
25
|
+
readonly wordTimestamps?: boolean
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Streaming-transcription request. `inputFormat` declares what the
|
|
30
|
+
* bytes in the input stream will look like — providers reject
|
|
31
|
+
* mismatches at stream startup with `AiError.InvalidRequest`.
|
|
32
|
+
*/
|
|
33
|
+
export type CommonStreamTranscribeRequest = Omit<CommonTranscribeRequest, "audio"> & {
|
|
34
|
+
readonly inputFormat: AudioFormat
|
|
35
|
+
readonly interimResults?: boolean
|
|
36
|
+
readonly vadEvents?: boolean
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type TranscriberService = {
|
|
40
|
+
/**
|
|
41
|
+
* One-shot transcription. Universal — AWS Transcribe (which has no
|
|
42
|
+
* native sync endpoint) emulates this by draining a streaming session
|
|
43
|
+
* internally.
|
|
44
|
+
*/
|
|
45
|
+
readonly transcribe: (
|
|
46
|
+
request: CommonTranscribeRequest,
|
|
47
|
+
) => Effect.Effect<TranscriptResult, AiError.AiError>
|
|
48
|
+
/**
|
|
49
|
+
* Live transcription as a Stream transformer. Consumes audio bytes
|
|
50
|
+
* from `audioIn`; emits `TranscriptEvent`s as they arrive. The
|
|
51
|
+
* underlying WS / gRPC connection is acquired on first pull and
|
|
52
|
+
* released when the output stream is finalized (success, failure, or
|
|
53
|
+
* interruption) via `Stream.scoped` — no explicit Scope handling at
|
|
54
|
+
* the call site.
|
|
55
|
+
*
|
|
56
|
+
* Gated by the `SttStreaming` capability marker on the top-level
|
|
57
|
+
* helper — providers without streaming-STT support don't ship the
|
|
58
|
+
* marker, so calls fail at `Effect.provide` with a type error.
|
|
59
|
+
*/
|
|
60
|
+
readonly streamTranscriptionFrom: <E, R>(
|
|
61
|
+
audioIn: Stream.Stream<Uint8Array, E, R>,
|
|
62
|
+
request: CommonStreamTranscribeRequest,
|
|
63
|
+
) => Stream.Stream<TranscriptEvent, AiError.AiError | E, R>
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export class Transcriber extends Context.Service<Transcriber, TranscriberService>()(
|
|
67
|
+
"@betalyra/effect-uai/Transcriber",
|
|
68
|
+
) {}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Capability marker — provided by provider layers whose
|
|
72
|
+
* `streamTranscriptionFrom` is wired up at the wire level. Azure does
|
|
73
|
+
* not ship it (streaming-STT is SDK-internal). Calling
|
|
74
|
+
* `streamTranscriptionFrom` while only Azure's Layer is in scope fails
|
|
75
|
+
* at `Effect.provide` with a type error, not at runtime.
|
|
76
|
+
*
|
|
77
|
+
* Phantom — the value is `void`; providers register with
|
|
78
|
+
* `Layer.succeed(SttStreaming, undefined)`.
|
|
79
|
+
*/
|
|
80
|
+
export class SttStreaming extends Context.Service<SttStreaming, void>()(
|
|
81
|
+
"@betalyra/effect-uai/capability/SttStreaming",
|
|
82
|
+
) {}
|
|
83
|
+
|
|
84
|
+
/** One-shot transcription. */
|
|
85
|
+
export const transcribe = (
|
|
86
|
+
request: CommonTranscribeRequest,
|
|
87
|
+
): Effect.Effect<TranscriptResult, AiError.AiError, Transcriber> =>
|
|
88
|
+
Effect.flatMap(Transcriber.asEffect(), (t) => t.transcribe(request))
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Live transcription. Dual-arity: pipeable (data-last) and direct
|
|
92
|
+
* (data-first). Requires `SttStreaming` in R — providers without
|
|
93
|
+
* streaming support are a type error at provide time.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* // Pipeable — composes with other Stream operators
|
|
98
|
+
* mic.frames.pipe(
|
|
99
|
+
* Transcriber.streamTranscriptionFrom(req),
|
|
100
|
+
* Stream.filter((e) => e._tag === "final"),
|
|
101
|
+
* )
|
|
102
|
+
*
|
|
103
|
+
* // Direct
|
|
104
|
+
* Transcriber.streamTranscriptionFrom(mic.frames, req)
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export const streamTranscriptionFrom: {
|
|
108
|
+
(
|
|
109
|
+
request: CommonStreamTranscribeRequest,
|
|
110
|
+
): <E, R>(
|
|
111
|
+
audioIn: Stream.Stream<Uint8Array, E, R>,
|
|
112
|
+
) => Stream.Stream<TranscriptEvent, AiError.AiError | E, R | Transcriber | SttStreaming>
|
|
113
|
+
<E, R>(
|
|
114
|
+
audioIn: Stream.Stream<Uint8Array, E, R>,
|
|
115
|
+
request: CommonStreamTranscribeRequest,
|
|
116
|
+
): Stream.Stream<TranscriptEvent, AiError.AiError | E, R | Transcriber | SttStreaming>
|
|
117
|
+
} = Function.dual(
|
|
118
|
+
2,
|
|
119
|
+
<E, R>(audioIn: Stream.Stream<Uint8Array, E, R>, request: CommonStreamTranscribeRequest) =>
|
|
120
|
+
Stream.unwrap(
|
|
121
|
+
Effect.gen(function* () {
|
|
122
|
+
const t = yield* Transcriber.asEffect()
|
|
123
|
+
yield* SttStreaming.asEffect()
|
|
124
|
+
return t.streamTranscriptionFrom(audioIn, request)
|
|
125
|
+
}),
|
|
126
|
+
),
|
|
127
|
+
)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredFormat-BWq5Hd1O.d.mts","names":[],"sources":["../src/structured-format/StructuredFormat.ts"],"mappings":";;;;;;;;;;;;;;;KAaY,gBAAA,qBAAqC,gBAAA,UAA0B,MAAA,IACzE,oBAAA,UAA8B,MAAA;;;;;;KAOpB,gBAAA;EAAA,SACD,IAAA;EAAA,SACA,WAAA;EAAA,SACA,MAAA,EAAQ,gBAAA,CAAiB,CAAA;EAXxB;;;;EAAA,SAgBD,MAAA;AAAA;;KAIC,WAAA;EAAA,SACD,IAAA,EAAM,aAAA;EAAA,SACN,OAAA;AAAA;AAAA,cACV,0BAAA;;;;;AAfD;;cAyBa,qBAAA,SAA8B,0BAAA;EAAA,SAChC,GAAA;EAAA,SACA,MAAA,EAAQ,aAAA,CAAc,WAAA;AAAA;AAAA,cAC5B,mBAAA;;;;;;AAhBL;cAsBa,cAAA,SAAuB,mBAAA;EAAA,SACzB,GAAA;EAAA,SACA,KAAA;AAAA;;;;AArBV;;cAiCY,gBAAA,aAA8B,MAAA,CAAO,KAAA,wBAChD,MAAA,EAAQ,CAAA,EACR,OAAA;EAAA,SACW,IAAA;EAAA,SACA,WAAA;EAAA,SACA,MAAA;AAAA,MAEV,gBAAA,CAAiB,CAAA;;;;;;cAyCP,MAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,OAC5B,GAAA,cAAe,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,qBAAA;;;;;;cAoBtB,SAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,OAC5B,GAAA,aAAc,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,cAAA,GAAiB,qBAAA;;;;;cAatC,eAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,aAE3B,IAAA,EAAM,MAAA,CAAO,MAAA,SAAe,CAAA,EAAG,CAAA,MAC9B,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,GAAI,cAAA,GAAiB,qBAAA,EAAuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool-DjVufH7i.d.mts","names":[],"sources":["../src/tool/Tool.ts"],"mappings":";;;;;;;;;cAE0E,cAAA;;;;;;cAG7D,SAAA,SAAkB,cAAA;;;;;;;;;;KAmBnB,eAAA,oBAAmC,gBAAA,UAA0B,KAAA,IACvE,oBAAA,UAA8B,KAAA;;;AAvB0C;;;cA8B7D,gBAAA,aAA8B,MAAA,CAAO,KAAA,wBAChD,MAAA,EAAQ,CAAA,KACP,CAAA,GAAI,eAAA,CAAgB,CAAA;AAAA,KAIX,IAAA;EAAA,SACD,IAAA,EAAM,IAAA;EAAA,SACN,WAAA;EAAA,SACA,WAAA,EAAa,eAAA,CAAgB,KAAA;EAAA,SAC7B,GAAA,GAAM,KAAA,EAAO,KAAA,KAAU,MAAA,CAAO,MAAA,CAAO,MAAA,WAAiB,CAAA;;;;;;;WAOtD,MAAA;AAAA;;;;;;KAQC,cAAA;EAAA,SACD,IAAA;EAAA,SACA,WAAA;EAAA,SACA,WAAA,EAAa,MAAA;EAAA,SACb,MAAA;AAAA;AAAA,cAGE,IAAA,kDACX,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA,MAC/B,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA;AAAA,KAWjB,aAAA;EAAA,SACD,KAAA;EAAA,SACA,IAAA,EAAM,IAAA;EAAA,SACN,WAAA;EAAA,SACA,WAAA,EAAa,eAAA,CAAgB,KAAA;EAAA,SAC7B,GAAA,GAAM,KAAA,EAAO,KAAA,KAAU,MAAA,CAAO,MAAA,CAAO,KAAA,WAAgB,CAAA;EAAA,SACrD,QAAA,GAAW,MAAA,EAAQ,aAAA,CAAc,KAAA,MAAW,MAAA;EAAA,SAC5C,MAAA;AAAA;AAAA,cAGE,SAAA,yDACX,IAAA,EAAM,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAA,gBACpD,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAA;AAAA,KAEjC,gBAAA,YAA4B,aAAA,wBAAqC,CAAA;AAAA,KACjE,YAAA,YAAwB,IAAA,mBAAuB,CAAA;AAAA,KAC/C,WAAA,YAAuB,gBAAA,CAAiB,CAAA,IAAK,YAAA,CAAa,CAAA;AAAA,cAEzD,eAAA,MAAsB,CAAA,EAAG,WAAA,CAAY,CAAA,MAAK,CAAA,IAAK,gBAAA,CAAiB,CAAA;;;;;;cAQhE,aAAA,MACX,KAAA,EAAO,aAAA,CAAc,WAAA,CAAY,CAAA,OAChC,aAAA,CAAc,cAAA;;;;;;cAkBJ,OAAA,0CACX,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA,GAChC,IAAA,EAAM,YAAA,KACL,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB,SAAA,EAAW,CAAA"}
|
package/dist/Turn-OPaILVIB.d.mts
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { i as ImageSource } from "./Image-BZmKfIdq.mjs";
|
|
2
|
-
import { d as Item, g as Reasoning, o as FunctionCall, p as Message, s as FunctionCallOutput, x as Usage } from "./Items-CB8Bo3FI.mjs";
|
|
3
|
-
import { i as StructuredFormat, n as JsonParseError, r as StructuredDecodeError } from "./StructuredFormat-BWq5Hd1O.mjs";
|
|
4
|
-
import { Effect, Schema, Stream } from "effect";
|
|
5
|
-
import * as _$effect_Types0 from "effect/Types";
|
|
6
|
-
import * as _$effect_Cause0 from "effect/Cause";
|
|
7
|
-
|
|
8
|
-
//#region src/domain/Turn.d.ts
|
|
9
|
-
declare namespace Turn_d_exports {
|
|
10
|
-
export { InteractionEvent, RefusalRejected, Turn, TurnEvent, appendTurn, assistantMessages, functionCalls, isTurnComplete, reasonings, textDeltas, toStructured };
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* The result of a single LLM generation. A turn produces zero or more items
|
|
14
|
-
* (typically one assistant message and zero or more function_call items)
|
|
15
|
-
* and reports usage + a stop reason.
|
|
16
|
-
*/
|
|
17
|
-
declare const Turn: Schema.Struct<{
|
|
18
|
-
readonly items: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
19
|
-
readonly type: Schema.Literal<"message">;
|
|
20
|
-
readonly role: Schema.Literals<readonly ["user", "assistant", "system"]>;
|
|
21
|
-
readonly content: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
22
|
-
readonly type: Schema.Literal<"input_text">;
|
|
23
|
-
readonly text: Schema.String;
|
|
24
|
-
}>, Schema.Struct<{
|
|
25
|
-
readonly type: Schema.Literal<"input_image">;
|
|
26
|
-
readonly source: Schema.Schema<ImageSource>;
|
|
27
|
-
}>, Schema.Struct<{
|
|
28
|
-
readonly type: Schema.Literal<"output_text">;
|
|
29
|
-
readonly text: Schema.String;
|
|
30
|
-
readonly annotations: Schema.optional<Schema.$Array<Schema.Union<readonly [Schema.Struct<{
|
|
31
|
-
readonly type: Schema.Literal<"url_citation">;
|
|
32
|
-
readonly url: Schema.String;
|
|
33
|
-
readonly start_index: Schema.Number;
|
|
34
|
-
readonly end_index: Schema.Number;
|
|
35
|
-
readonly title: Schema.String;
|
|
36
|
-
}>, Schema.Struct<{
|
|
37
|
-
readonly type: Schema.Literal<"file_citation">;
|
|
38
|
-
readonly file_id: Schema.String;
|
|
39
|
-
readonly index: Schema.Number;
|
|
40
|
-
}>, Schema.Struct<{
|
|
41
|
-
readonly type: Schema.Literal<"container_file_citation">;
|
|
42
|
-
readonly container_id: Schema.String;
|
|
43
|
-
readonly file_id: Schema.String;
|
|
44
|
-
readonly start_index: Schema.Number;
|
|
45
|
-
readonly end_index: Schema.Number;
|
|
46
|
-
}>, Schema.Struct<{
|
|
47
|
-
readonly type: Schema.Literal<"file_path">;
|
|
48
|
-
readonly file_id: Schema.String;
|
|
49
|
-
readonly index: Schema.Number;
|
|
50
|
-
}>]>>>;
|
|
51
|
-
}>, Schema.Struct<{
|
|
52
|
-
readonly type: Schema.Literal<"refusal">;
|
|
53
|
-
readonly text: Schema.String;
|
|
54
|
-
}>]>>;
|
|
55
|
-
readonly providerData: Schema.optional<Schema.Unknown>;
|
|
56
|
-
}>, Schema.Struct<{
|
|
57
|
-
readonly type: Schema.Literal<"function_call">;
|
|
58
|
-
readonly call_id: Schema.String;
|
|
59
|
-
readonly name: Schema.String;
|
|
60
|
-
readonly arguments: Schema.String;
|
|
61
|
-
readonly providerData: Schema.optional<Schema.Unknown>;
|
|
62
|
-
}>, Schema.Struct<{
|
|
63
|
-
readonly type: Schema.Literal<"function_call_output">;
|
|
64
|
-
readonly call_id: Schema.String;
|
|
65
|
-
readonly output: Schema.String;
|
|
66
|
-
readonly providerData: Schema.optional<Schema.Unknown>;
|
|
67
|
-
}>, Schema.Struct<{
|
|
68
|
-
readonly type: Schema.Literal<"reasoning">;
|
|
69
|
-
readonly id: Schema.optional<Schema.String>;
|
|
70
|
-
readonly summary: Schema.optional<Schema.String>;
|
|
71
|
-
readonly signature: Schema.optional<Schema.String>;
|
|
72
|
-
readonly providerData: Schema.optional<Schema.Unknown>;
|
|
73
|
-
}>]>>;
|
|
74
|
-
readonly usage: Schema.Struct<{
|
|
75
|
-
readonly input_tokens: Schema.optional<Schema.Number>;
|
|
76
|
-
readonly output_tokens: Schema.optional<Schema.Number>;
|
|
77
|
-
readonly total_tokens: Schema.optional<Schema.Number>;
|
|
78
|
-
readonly input_tokens_details: Schema.optional<Schema.Struct<{
|
|
79
|
-
readonly cached_tokens: Schema.optional<Schema.Number>;
|
|
80
|
-
}>>;
|
|
81
|
-
readonly output_tokens_details: Schema.optional<Schema.Struct<{
|
|
82
|
-
readonly reasoning_tokens: Schema.optional<Schema.Number>;
|
|
83
|
-
}>>;
|
|
84
|
-
}>;
|
|
85
|
-
readonly stop_reason: Schema.Literals<readonly ["stop", "tool_calls", "max_tokens", "refusal", "content_filter", "max_tool_calls"]>;
|
|
86
|
-
}>;
|
|
87
|
-
type Turn = typeof Turn.Type;
|
|
88
|
-
/**
|
|
89
|
-
* Canonical events emitted while a single turn is being generated. Most
|
|
90
|
-
* variants are streaming deltas (text, reasoning, tool-call args); the
|
|
91
|
-
* terminal `turn_complete` carries the assembled `Turn`. Lifecycle members
|
|
92
|
-
* aren't deltas, hence the union name.
|
|
93
|
-
*/
|
|
94
|
-
type TurnEvent = {
|
|
95
|
-
readonly type: "text_delta";
|
|
96
|
-
readonly text: string;
|
|
97
|
-
} | {
|
|
98
|
-
readonly type: "reasoning_delta";
|
|
99
|
-
readonly text: string;
|
|
100
|
-
/**
|
|
101
|
-
* `trace` is the model's raw chain-of-thought; `summary` is a
|
|
102
|
-
* model-written summary intended for display. OpenAI Responses emits
|
|
103
|
-
* both as separate wire events; Anthropic and Gemini only emit
|
|
104
|
-
* `trace`. Consumers who just want any reasoning text match once;
|
|
105
|
-
* those who want only summaries filter `kind === "summary"`.
|
|
106
|
-
*/
|
|
107
|
-
readonly kind: "trace" | "summary";
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* The model declined to answer. `text` is the (streamed) explanation.
|
|
111
|
-
* Distinct from the failure channel: a refusal is normal model output and
|
|
112
|
-
* the stream still completes with `turn_complete`. OpenAI Responses emits
|
|
113
|
-
* this; Anthropic surfaces refusals via `stop_reason`, and Gemini collapses
|
|
114
|
-
* them into `finishReason: SAFETY` - both go without a `refusal_delta`.
|
|
115
|
-
*/
|
|
116
|
-
| {
|
|
117
|
-
readonly type: "refusal_delta";
|
|
118
|
-
readonly text: string;
|
|
119
|
-
} | {
|
|
120
|
-
readonly type: "tool_call_start";
|
|
121
|
-
readonly call_id: string;
|
|
122
|
-
readonly name: string;
|
|
123
|
-
} | {
|
|
124
|
-
readonly type: "tool_call_args_delta";
|
|
125
|
-
readonly call_id: string;
|
|
126
|
-
readonly delta: string;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Mid-stream cumulative usage. Carries the full `Usage` (including cache
|
|
130
|
-
* token fields when the provider surfaces them) so consumers can drive
|
|
131
|
-
* live budget / cost tracking without waiting for `turn_complete`.
|
|
132
|
-
* Anthropic emits this on `message_start` and `message_delta`; other
|
|
133
|
-
* providers may not emit any `usage_update` and only deliver usage via
|
|
134
|
-
* `turn_complete.turn.usage`.
|
|
135
|
-
*/
|
|
136
|
-
| {
|
|
137
|
-
readonly type: "usage_update";
|
|
138
|
-
readonly usage: Usage;
|
|
139
|
-
} | {
|
|
140
|
-
readonly type: "turn_complete";
|
|
141
|
-
readonly turn: Turn;
|
|
142
|
-
};
|
|
143
|
-
/**
|
|
144
|
-
* What flows out of an agent loop body to its consumer per turn: every
|
|
145
|
-
* `TurnEvent` the provider emits (including the terminal `turn_complete`
|
|
146
|
-
* carrying the assembled `Turn`), plus the output of any tool the loop ran.
|
|
147
|
-
* Both variants carry a `type` discriminator.
|
|
148
|
-
*/
|
|
149
|
-
type InteractionEvent = TurnEvent | FunctionCallOutput;
|
|
150
|
-
declare const isTurnComplete: (d: TurnEvent) => d is Extract<TurnEvent, {
|
|
151
|
-
type: "turn_complete";
|
|
152
|
-
}>;
|
|
153
|
-
declare const functionCalls: (turn: Turn) => ReadonlyArray<FunctionCall>;
|
|
154
|
-
declare const reasonings: (turn: Turn) => ReadonlyArray<Reasoning>;
|
|
155
|
-
declare const assistantMessages: (turn: Turn) => ReadonlyArray<Message>;
|
|
156
|
-
/**
|
|
157
|
-
* Append a completed turn and optional follow-up items to a state record's
|
|
158
|
-
* history. Recipes use this at the point where structured tool results are
|
|
159
|
-
* converted to model-facing `FunctionCallOutput`s.
|
|
160
|
-
*/
|
|
161
|
-
declare const appendTurn: <S extends {
|
|
162
|
-
readonly history: ReadonlyArray<Item>;
|
|
163
|
-
}>(state: S, turn: Turn, items?: ReadonlyArray<Item>) => S;
|
|
164
|
-
/**
|
|
165
|
-
* Project a `TurnEvent` stream onto its `text_delta` payloads. Other
|
|
166
|
-
* variants are dropped. Composes with `Lines.lines` +
|
|
167
|
-
* `decodeJsonLines` for prompted-JSONL streaming.
|
|
168
|
-
*/
|
|
169
|
-
declare const textDeltas: <E, R>(self: Stream.Stream<TurnEvent, E, R>) => Stream.Stream<string, E, R>;
|
|
170
|
-
declare const RefusalRejected_base: new <A extends Record<string, any> = {}>(args: _$effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => _$effect_Cause0.YieldableError & {
|
|
171
|
-
readonly _tag: "RefusalRejected";
|
|
172
|
-
} & Readonly<A>;
|
|
173
|
-
/**
|
|
174
|
-
* The assistant message on the just-completed turn was a refusal block,
|
|
175
|
-
* not an `output_text` payload. Returned by `toStructured` to short-circuit
|
|
176
|
-
* decoding before `JSON.parse` / schema validation runs.
|
|
177
|
-
*/
|
|
178
|
-
declare class RefusalRejected extends RefusalRejected_base<{
|
|
179
|
-
readonly turn: Turn;
|
|
180
|
-
}> {}
|
|
181
|
-
/**
|
|
182
|
-
* Validate a completed `Turn` against a `StructuredFormat`. Concatenates
|
|
183
|
-
* `output_text` blocks on the last assistant message, then runs
|
|
184
|
-
* `JSON.parse` + the format's schema validation.
|
|
185
|
-
*
|
|
186
|
-
* Three failure modes:
|
|
187
|
-
* - `RefusalRejected` — the assistant emitted a refusal block.
|
|
188
|
-
* - `JsonParseError` — the assembled text wasn't valid JSON.
|
|
189
|
-
* - `StructuredDecodeError` — the JSON didn't match the schema.
|
|
190
|
-
*/
|
|
191
|
-
declare const toStructured: <A>(turn: Turn, format: StructuredFormat<A>) => Effect.Effect<A, RefusalRejected | JsonParseError | StructuredDecodeError>;
|
|
192
|
-
//#endregion
|
|
193
|
-
export { Turn_d_exports as a, functionCalls as c, textDeltas as d, toStructured as f, TurnEvent as i, isTurnComplete as l, RefusalRejected as n, appendTurn as o, Turn as r, assistantMessages as s, InteractionEvent as t, reasonings as u };
|
|
194
|
-
//# sourceMappingURL=Turn-OPaILVIB.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Turn-OPaILVIB.d.mts","names":[],"sources":["../src/domain/Turn.ts"],"mappings":";;;;;;;;;;;;;;;;cAmBa,IAAA,EAAI,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAKL,IAAA,UAAc,IAAA,CAAK,IAAA;;;;;;;KAQnB,SAAA;EAAA,SACG,IAAA;EAAA,SAA6B,IAAA;AAAA;EAAA,SAE7B,IAAA;EAAA,SACA,IAAA;;;;;;;;WAQA,IAAA;AAAA;;;;;;;;;WASA,IAAA;EAAA,SAAgC,IAAA;AAAA;EAAA,SAChC,IAAA;EAAA,SAAkC,OAAA;EAAA,SAA0B,IAAA;AAAA;EAAA,SAC5D,IAAA;EAAA,SAAuC,OAAA;EAAA,SAA0B,KAAA;AAAA;;;;;;;;;;WASjE,IAAA;EAAA,SAA+B,KAAA,EAAO,KAAA;AAAA;EAAA,SACtC,IAAA;EAAA,SAAgC,IAAA,EAAM,IAAA;AAAA;;;;;;;KAQzC,gBAAA,GAAmB,SAAA,GAAY,kBAAA;AAAA,cAE9B,cAAA,GAAkB,CAAA,EAAG,SAAA,KAAY,CAAA,IAAK,OAAA,CAAQ,SAAA;EAAa,IAAA;AAAA;AAAA,cAG3D,aAAA,GAAiB,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,YAAA;AAAA,cAG5C,UAAA,GAAc,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,SAAA;AAAA,cAGzC,iBAAA,GAAqB,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,OAAA;;;;;;cAQhD,UAAA;EAAA,SAAmC,OAAA,EAAS,aAAA,CAAc,IAAA;AAAA,GACrE,KAAA,EAAO,CAAA,EACP,IAAA,EAAM,IAAA,EACN,KAAA,GAAO,aAAA,CAAc,IAAA,MACpB,CAAA;;;;;;cAcU,UAAA,SACX,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,CAAA,EAAG,CAAA,MACjC,MAAA,CAAO,MAAA,SAAe,CAAA,EAAG,CAAA;AAAA,cAKzB,oBAAA;;;;;;;;cAWU,eAAA,SAAwB,oBAAA;EAAA,SAC1B,IAAA,EAAM,IAAA;AAAA;;;;;;;;;;;cAyBJ,YAAA,MACX,IAAA,EAAM,IAAA,EACN,MAAA,EAAQ,gBAAA,CAAkC,CAAA,MACzC,MAAA,CAAO,MAAA,CACR,CAAA,EACA,eAAA,GAAkB,cAAA,GAAkC,qBAAA"}
|