@bitbitpress/client 1.1.2 → 1.1.4
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/generated/openapi.d.ts +449 -7
- package/dist/react/index.d.ts +91 -12
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +146 -12
- package/dist/react/index.js.map +1 -1
- package/dist/react-native-expo/BitBitPiece.d.ts +64 -0
- package/dist/react-native-expo/BitBitPiece.d.ts.map +1 -0
- package/dist/react-native-expo/BitBitPiece.js +164 -0
- package/dist/react-native-expo/BitBitPiece.js.map +1 -0
- package/dist/react-native-expo/BitBitView.d.ts +32 -0
- package/dist/react-native-expo/BitBitView.d.ts.map +1 -0
- package/dist/react-native-expo/BitBitView.js +130 -0
- package/dist/react-native-expo/BitBitView.js.map +1 -0
- package/dist/react-native-expo/bootstrapHtml.d.ts +33 -0
- package/dist/react-native-expo/bootstrapHtml.d.ts.map +1 -0
- package/dist/react-native-expo/bootstrapHtml.js +175 -0
- package/dist/react-native-expo/bootstrapHtml.js.map +1 -0
- package/dist/react-native-expo/index.d.ts +3 -0
- package/dist/react-native-expo/index.d.ts.map +1 -1
- package/dist/react-native-expo/index.js +2 -0
- package/dist/react-native-expo/index.js.map +1 -1
- package/dist/runtime/index.d.ts +45 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +68 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/studio/BitBitMobilePreview.d.ts +33 -0
- package/dist/studio/BitBitMobilePreview.d.ts.map +1 -0
- package/dist/studio/BitBitMobilePreview.js +120 -0
- package/dist/studio/BitBitMobilePreview.js.map +1 -0
- package/dist/studio/index.d.ts +7 -0
- package/dist/studio/index.d.ts.map +1 -0
- package/dist/studio/index.js +7 -0
- package/dist/studio/index.js.map +1 -0
- package/dist/synthesisUi/context.d.ts +2 -2
- package/dist/synthesisUi/context.js +1 -1
- package/dist/synthesisUi/types.d.ts +14 -2
- package/dist/synthesisUi/types.d.ts.map +1 -1
- package/dist/user/index.d.ts +28 -1
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user/index.js +6 -1
- package/dist/user/index.js.map +1 -1
- package/dist/user/synthesisPiece.d.ts +38 -0
- package/dist/user/synthesisPiece.d.ts.map +1 -0
- package/dist/user/synthesisPiece.js +58 -0
- package/dist/user/synthesisPiece.js.map +1 -0
- package/dist/user/synthesize.d.ts +4 -0
- package/dist/user/synthesize.d.ts.map +1 -1
- package/dist/user/synthesize.js +1 -0
- package/dist/user/synthesize.js.map +1 -1
- package/dist/user/synthesizeUi.d.ts +35 -13
- package/dist/user/synthesizeUi.d.ts.map +1 -1
- package/dist/user/synthesizeUi.js +38 -9
- package/dist/user/synthesizeUi.js.map +1 -1
- package/dist/user/track-batch-manager.d.ts +10 -4
- package/dist/user/track-batch-manager.d.ts.map +1 -1
- package/dist/user/track-batch-manager.js +6 -5
- package/dist/user/track-batch-manager.js.map +1 -1
- package/dist/user/track.d.ts +9 -0
- package/dist/user/track.d.ts.map +1 -1
- package/dist/user/track.js +17 -0
- package/dist/user/track.js.map +1 -1
- package/dist/user/typeDefs.d.ts +13 -0
- package/dist/user/typeDefs.d.ts.map +1 -1
- package/package.json +11 -6
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { SynthesizeUiFetcher } from './types.js';
|
|
3
3
|
export type BitBitContextValue = {
|
|
4
|
-
/** Client `<
|
|
4
|
+
/** Client `<BitBitView>` fetches generated UIs through, so it can be
|
|
5
5
|
* set once here instead of passed to every instance. */
|
|
6
6
|
client?: SynthesizeUiFetcher;
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
|
-
* Registers shared SDK config: the `client` `<
|
|
9
|
+
* Registers shared SDK config: the `client` `<BitBitView>` fetches
|
|
10
10
|
* generated UIs through. Platform-agnostic, so this provider is shared by the
|
|
11
11
|
* web and native entries.
|
|
12
12
|
*/
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { createContext, useContext } from 'react';
|
|
3
3
|
const BitBitContext = createContext(null);
|
|
4
4
|
/**
|
|
5
|
-
* Registers shared SDK config: the `client` `<
|
|
5
|
+
* Registers shared SDK config: the `client` `<BitBitView>` fetches
|
|
6
6
|
* generated UIs through. Platform-agnostic, so this provider is shared by the
|
|
7
7
|
* web and native entries.
|
|
8
8
|
*/
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { paths } from '../generated/openapi.js';
|
|
2
|
+
import type { SynthesisUiHistoryEntry } from '../runtime/index.js';
|
|
1
3
|
export type SynthesisUiPlatform = 'web' | 'mobile';
|
|
2
4
|
/** Per-UI stream event the fetcher yields: a `manifest` (bundle ref + theme),
|
|
3
5
|
* then `data` events as the synthesis output streams in. */
|
|
@@ -10,12 +12,22 @@ export type SynthesisUiStreamEvent = {
|
|
|
10
12
|
type: 'data';
|
|
11
13
|
data: unknown;
|
|
12
14
|
complete: boolean;
|
|
15
|
+
/** Recent prior outputs (when `synthesisHistoryLimit > 0`), most-recent
|
|
16
|
+
* first. Forwarded into the view's `history` prop. */
|
|
17
|
+
synthesisHistoryEntries?: SynthesisUiHistoryEntry[];
|
|
13
18
|
} | {
|
|
14
19
|
type: 'error';
|
|
15
20
|
error: string;
|
|
16
21
|
};
|
|
17
22
|
/**
|
|
18
|
-
*
|
|
23
|
+
* Optional per-request synthesis inputs a UI request may carry — mirrors
|
|
24
|
+
* `/v1/user/synthesize` (the UI synthesizes against its attached config). Derived
|
|
25
|
+
* from the OpenAPI `/v1/user/synthesize-ui` item (minus `keyName`); all optional.
|
|
26
|
+
* Set `synthesisHistoryLimit > 0` to populate the view's `history` prop.
|
|
27
|
+
*/
|
|
28
|
+
export type SynthesisUiRequestInputs = Omit<paths['/v1/user/synthesize-ui']['post']['requestBody']['content']['application/json']['items'][number], 'keyName'>;
|
|
29
|
+
/**
|
|
30
|
+
* Minimal structural shape `<BitBitView>` needs to fetch a UI. A
|
|
19
31
|
* `BitBitPressClient` satisfies it via `client.user.synthesizeUi(...)`; the
|
|
20
32
|
* CMS studio passes a preview fetcher that resolves the draft instead.
|
|
21
33
|
*/
|
|
@@ -24,7 +36,7 @@ export interface SynthesizeUiFetcher {
|
|
|
24
36
|
synthesizeUi(request: {
|
|
25
37
|
keyName: string;
|
|
26
38
|
platform?: SynthesisUiPlatform;
|
|
27
|
-
}): AsyncIterable<SynthesisUiStreamEvent> | Promise<AsyncIterable<SynthesisUiStreamEvent>>;
|
|
39
|
+
} & SynthesisUiRequestInputs): AsyncIterable<SynthesisUiStreamEvent> | Promise<AsyncIterable<SynthesisUiStreamEvent>>;
|
|
28
40
|
};
|
|
29
41
|
}
|
|
30
42
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/synthesisUi/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD;6DAC6D;AAC7D,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,GACD;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/synthesisUi/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD;6DAC6D;AAC7D,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB;2DACuD;IACvD,uBAAuB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACrD,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EACtG,SAAS,CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE;QACJ,YAAY,CACV,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;SAChC,GAAG,wBAAwB,GAC3B,aAAa,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC3F,CAAC;CACH"}
|
package/dist/user/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { type RecommendationsRequest, type RecommendationsResponse } from './rec
|
|
|
6
6
|
import { type ReportRequest, type ReportResponse } from './report.js';
|
|
7
7
|
import { type Signal, type SignalRequest, type SignalResponse } from './signal.js';
|
|
8
8
|
import { type CreateUserSubmissionRequest, type CreateUserSubmissionResponse, type ListUserSubmissionsRequest, type ListUserSubmissionsResponse, type SubmissionFeed, type SubmissionState, type SubmitRequest, type SubmitResponse } from './submissions.js';
|
|
9
|
+
import { type SynthesisPieceResponse, type SynthesisPieceTtsRef } from './synthesisPiece.js';
|
|
9
10
|
import { type SynthesizeEvent, type SynthesizeItemResponse } from './synthesize.js';
|
|
10
11
|
import { type SynthesizeOnStreamingData } from './synthesize-batch-manager.js';
|
|
11
12
|
import { type SynthesisUiStreamEvent, type SynthesizeUiEvent, type SynthesizeUiRequest, type SynthesizeUiRequestItem } from './synthesizeUi.js';
|
|
@@ -129,6 +130,13 @@ export interface UserMethods {
|
|
|
129
130
|
* @param event - Single event to record
|
|
130
131
|
*/
|
|
131
132
|
trackItem(event: TrackEvent): Promise<NonNullable<TrackResponse>>;
|
|
133
|
+
/**
|
|
134
|
+
* Record a single SynthesisPiece embed event (batched) — the piece counterpart of `trackItem`,
|
|
135
|
+
* posted to the dedicated piece-events endpoint so a shared keyName is never misattributed.
|
|
136
|
+
*
|
|
137
|
+
* @param event - Single event to record
|
|
138
|
+
*/
|
|
139
|
+
trackPieceItem(event: TrackEvent): Promise<NonNullable<TrackResponse>>;
|
|
132
140
|
/**
|
|
133
141
|
* Synthesize content items personalized to the user (streaming SSE).
|
|
134
142
|
*
|
|
@@ -171,7 +179,7 @@ export interface UserMethods {
|
|
|
171
179
|
respondToInteraction(interactionId: string, options: InteractionResponseRequest): Promise<NonNullable<InteractionResponseResponse>>;
|
|
172
180
|
/**
|
|
173
181
|
* Resolve a generated SynthesisUI by `keyName` for a platform, as a per-UI
|
|
174
|
-
* stream (manifest, then data). This is the path `<
|
|
182
|
+
* stream (manifest, then data). This is the path `<BitBitView>` uses
|
|
175
183
|
* under the hood.
|
|
176
184
|
*/
|
|
177
185
|
synthesizeUi(request: SynthesizeUiRequest): Promise<AsyncIterable<SynthesisUiStreamEvent>>;
|
|
@@ -180,6 +188,25 @@ export interface UserMethods {
|
|
|
180
188
|
* (bundles + theme) then per-item data events, index-matched to `items`.
|
|
181
189
|
*/
|
|
182
190
|
synthesizeUis(items: SynthesizeUiRequestItem[], platform?: SynthesizeUiRequest['platform']): Promise<AsyncIterable<SynthesizeUiEvent>>;
|
|
191
|
+
/**
|
|
192
|
+
* Resolve a published synthesis piece for embedding by `keyName` — its generated
|
|
193
|
+
* web bundle, current field values (incl. pre-generated `audioData.url`s), and
|
|
194
|
+
* deployment theme. This is the path `<BitBitPiece keyName>` uses under the hood.
|
|
195
|
+
*
|
|
196
|
+
* @param keyName - Stable identifier of the piece to embed
|
|
197
|
+
*/
|
|
198
|
+
getSynthesisPiece(keyName: string): Promise<SynthesisPieceResponse>;
|
|
199
|
+
/**
|
|
200
|
+
* Mint a short-lived streaming audio URL for a published piece's spoken turns — the
|
|
201
|
+
* on-demand TTS a rendered audio player calls on play. Pass one turn for a single narration,
|
|
202
|
+
* or several (each its own voice) for a multi-speaker dialogue synthesized as one clip. Every
|
|
203
|
+
* turn's `text` must be part of the piece (`keyName`). This is the path `<BitBitPiece
|
|
204
|
+
* keyName>` wires into `ctx.tts` under the hood.
|
|
205
|
+
*
|
|
206
|
+
* @param keyName - Stable identifier of the piece the turns belong to
|
|
207
|
+
* @param turns - The ordered turns to synthesize
|
|
208
|
+
*/
|
|
209
|
+
synthesisPieceTtsUrl(keyName: string, ref?: SynthesisPieceTtsRef): Promise<string>;
|
|
183
210
|
}
|
|
184
211
|
/**
|
|
185
212
|
* User-related API methods (uses shared auth store).
|
package/dist/user/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAa,MAAM,aAAa,CAAC;AACjF,OAAO,EAAgB,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAGjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAGhC,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAc,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAG7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"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"}
|
package/dist/user/index.js
CHANGED
|
@@ -8,6 +8,7 @@ const report_js_1 = require("./report.js");
|
|
|
8
8
|
const signal_js_1 = require("./signal.js");
|
|
9
9
|
const signal_batch_manager_js_1 = require("./signal-batch-manager.js");
|
|
10
10
|
const submissions_js_1 = require("./submissions.js");
|
|
11
|
+
const synthesisPiece_js_1 = require("./synthesisPiece.js");
|
|
11
12
|
const synthesize_js_1 = require("./synthesize.js");
|
|
12
13
|
const synthesize_batch_manager_js_1 = require("./synthesize-batch-manager.js");
|
|
13
14
|
const synthesizeUi_js_1 = require("./synthesizeUi.js");
|
|
@@ -21,7 +22,8 @@ function createUserMethods(authStore, config, synthesizeBatchTimeout = 250, sign
|
|
|
21
22
|
const getConfigWithToken = authStore.getConfigWithToken.bind(authStore);
|
|
22
23
|
const synthesizeBatchManager = new synthesize_batch_manager_js_1.SynthesizeBatchManager(getConfigWithToken, synthesizeBatchTimeout);
|
|
23
24
|
const signalBatchManager = new signal_batch_manager_js_1.SignalBatchManager(getConfigWithToken, signalBatchTimeout);
|
|
24
|
-
const trackBatchManager = new track_batch_manager_js_1.TrackBatchManager(getConfigWithToken, signalBatchTimeout);
|
|
25
|
+
const trackBatchManager = new track_batch_manager_js_1.TrackBatchManager(getConfigWithToken, signalBatchTimeout, track_js_1.recordEvents);
|
|
26
|
+
const pieceTrackBatchManager = new track_batch_manager_js_1.TrackBatchManager(getConfigWithToken, signalBatchTimeout, track_js_1.recordPieceEvents);
|
|
25
27
|
return {
|
|
26
28
|
authenticate: authStore.authenticate.bind(authStore),
|
|
27
29
|
token: (ssoToken) => (0, token_js_1.exchangeToken)(config, ssoToken),
|
|
@@ -38,12 +40,15 @@ function createUserMethods(authStore, config, synthesizeBatchTimeout = 250, sign
|
|
|
38
40
|
signalItem: (signal) => signalBatchManager.addSignal(signal),
|
|
39
41
|
track: (options) => getConfigWithToken().then((cfg) => (0, track_js_1.recordEvents)(cfg, options)),
|
|
40
42
|
trackItem: (event) => trackBatchManager.addEvent(event),
|
|
43
|
+
trackPieceItem: (event) => pieceTrackBatchManager.addEvent(event),
|
|
41
44
|
synthesize: (items, options) => getConfigWithToken().then((cfg) => (0, synthesize_js_1.synthesize)(cfg, items, options)),
|
|
42
45
|
synthesizeItem: (item, onStreamingData) => synthesizeBatchManager.addItem(item, onStreamingData),
|
|
43
46
|
interactions: (options) => getConfigWithToken().then((cfg) => (0, interaction_js_1.getInteractions)(cfg, options)),
|
|
44
47
|
respondToInteraction: (interactionId, options) => getConfigWithToken().then((cfg) => (0, interaction_js_1.respondToInteraction)(cfg, interactionId, options)),
|
|
45
48
|
synthesizeUi: (request) => getConfigWithToken().then((cfg) => (0, synthesizeUi_js_1.synthesizeUi)(cfg, request)),
|
|
46
49
|
synthesizeUis: (items, platform) => getConfigWithToken().then((cfg) => (0, synthesizeUi_js_1.synthesizeUis)(cfg, items, platform)),
|
|
50
|
+
getSynthesisPiece: (keyName) => getConfigWithToken().then((cfg) => (0, synthesisPiece_js_1.getSynthesisPiece)(cfg, keyName)),
|
|
51
|
+
synthesisPieceTtsUrl: (keyName, ref) => getConfigWithToken().then((cfg) => (0, synthesisPiece_js_1.synthesisPieceTtsUrl)(cfg, keyName, ref)),
|
|
47
52
|
};
|
|
48
53
|
}
|
|
49
54
|
//# sourceMappingURL=index.js.map
|
package/dist/user/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { paths } from '../generated/openapi.js';
|
|
2
|
+
import type { RequestConfig } from '../request.js';
|
|
3
|
+
/** A resolved published piece: its generated web bundle + current field values +
|
|
4
|
+
* deployment theme, ready to mount via `<BitBitPiece>`. */
|
|
5
|
+
export type SynthesisPieceResponse = {
|
|
6
|
+
uiWebCode: string;
|
|
7
|
+
fields: Record<string, unknown>;
|
|
8
|
+
theme: Record<string, string>;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a published synthesis piece for embedding by its `keyName`: the
|
|
12
|
+
* generated web bundle (`uiWebCode`), current field values (`fields`, including
|
|
13
|
+
* any pre-generated `audioData.url`s), and deployment `theme`. Used by
|
|
14
|
+
* `<BitBitPiece keyName>`. Hits the batch endpoint with a single item.
|
|
15
|
+
*
|
|
16
|
+
* @param config - Request configuration with base URL, timeout, fetch, and optional token
|
|
17
|
+
* @param keyName - Stable identifier of the piece to embed
|
|
18
|
+
* @returns Promise resolving with the piece's bundle, fields, and theme
|
|
19
|
+
*/
|
|
20
|
+
export declare function getSynthesisPiece(config: RequestConfig, keyName: string): Promise<SynthesisPieceResponse>;
|
|
21
|
+
type SynthesisPieceTtsBody = paths['/v1/user/synthesis-piece/tts']['post']['requestBody']['content']['application/json'];
|
|
22
|
+
/** A reference into a published piece's spoken content — omit for the whole piece, `field` scopes
|
|
23
|
+
* to a top-level field, `index` picks a single turn. The text lives in the piece. */
|
|
24
|
+
export type SynthesisPieceTtsRef = Pick<SynthesisPieceTtsBody, 'field' | 'index'>;
|
|
25
|
+
/**
|
|
26
|
+
* Mint a short-lived HLS URL for a published piece's spoken content — the on-demand TTS entry
|
|
27
|
+
* point a rendered audio player calls on play (via `ctx.tts`). The request REFERENCES the piece's
|
|
28
|
+
* content (omit `ref` for the whole piece, `field` to scope, `index` for a single turn); the
|
|
29
|
+
* server resolves the turns from the piece itself. Play the returned URL via `ctx.playMedia`.
|
|
30
|
+
*
|
|
31
|
+
* @param config - Request configuration with base URL, timeout, fetch, and optional token
|
|
32
|
+
* @param keyName - Stable identifier of the piece to voice
|
|
33
|
+
* @param ref - Optional reference into the piece's spoken content
|
|
34
|
+
* @returns Promise resolving with the playable streaming URL
|
|
35
|
+
*/
|
|
36
|
+
export declare function synthesisPieceTtsUrl(config: RequestConfig, keyName: string, ref?: SynthesisPieceTtsRef): Promise<string>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=synthesisPiece.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesisPiece.d.ts","sourceRoot":"","sources":["../../src/user/synthesisPiece.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD;4DAC4D;AAC5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AAED,KAAK,qBAAqB,GACxB,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAI9F;sFACsF;AACtF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;AAElF;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,CAcjB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSynthesisPiece = getSynthesisPiece;
|
|
4
|
+
exports.synthesisPieceTtsUrl = synthesisPieceTtsUrl;
|
|
5
|
+
const request_js_1 = require("../request.js");
|
|
6
|
+
/**
|
|
7
|
+
* Resolve a published synthesis piece for embedding by its `keyName`: the
|
|
8
|
+
* generated web bundle (`uiWebCode`), current field values (`fields`, including
|
|
9
|
+
* any pre-generated `audioData.url`s), and deployment `theme`. Used by
|
|
10
|
+
* `<BitBitPiece keyName>`. Hits the batch endpoint with a single item.
|
|
11
|
+
*
|
|
12
|
+
* @param config - Request configuration with base URL, timeout, fetch, and optional token
|
|
13
|
+
* @param keyName - Stable identifier of the piece to embed
|
|
14
|
+
* @returns Promise resolving with the piece's bundle, fields, and theme
|
|
15
|
+
*/
|
|
16
|
+
async function getSynthesisPiece(config, keyName) {
|
|
17
|
+
const response = await (0, request_js_1.makeRequest)(config, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
path: '/v1/user/synthesis-piece',
|
|
20
|
+
body: { items: [{ keyName }] },
|
|
21
|
+
});
|
|
22
|
+
const item = response?.items?.[0];
|
|
23
|
+
if (!item || item.error || typeof item.uiWebCode !== 'string') {
|
|
24
|
+
throw new Error(item?.error ?? 'Failed to load piece: no data in response');
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
uiWebCode: item.uiWebCode,
|
|
28
|
+
fields: (item.fields ?? {}),
|
|
29
|
+
theme: response.theme,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Mint a short-lived HLS URL for a published piece's spoken content — the on-demand TTS entry
|
|
34
|
+
* point a rendered audio player calls on play (via `ctx.tts`). The request REFERENCES the piece's
|
|
35
|
+
* content (omit `ref` for the whole piece, `field` to scope, `index` for a single turn); the
|
|
36
|
+
* server resolves the turns from the piece itself. Play the returned URL via `ctx.playMedia`.
|
|
37
|
+
*
|
|
38
|
+
* @param config - Request configuration with base URL, timeout, fetch, and optional token
|
|
39
|
+
* @param keyName - Stable identifier of the piece to voice
|
|
40
|
+
* @param ref - Optional reference into the piece's spoken content
|
|
41
|
+
* @returns Promise resolving with the playable streaming URL
|
|
42
|
+
*/
|
|
43
|
+
async function synthesisPieceTtsUrl(config, keyName, ref) {
|
|
44
|
+
const response = await (0, request_js_1.makeRequest)(config, {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
path: '/v1/user/synthesis-piece/tts',
|
|
47
|
+
body: {
|
|
48
|
+
keyName,
|
|
49
|
+
...(ref?.field != null ? { field: ref.field } : {}),
|
|
50
|
+
...(ref?.index != null ? { index: ref.index } : {}),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (!response?.url) {
|
|
54
|
+
throw new Error(response?.error ?? 'Failed to synthesize audio');
|
|
55
|
+
}
|
|
56
|
+
return response.url;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=synthesisPiece.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesisPiece.js","sourceRoot":"","sources":["../../src/user/synthesisPiece.ts"],"names":[],"mappings":";;AAyBA,8CAmBC;AAsBD,oDAkBC;AAlFD,8CAA4C;AAa5C;;;;;;;;;GASG;AACI,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,OAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAW,EAA0B,MAAM,EAAE;QAClE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;KAC/B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAA4B;QACtD,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC;AAWD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,OAAe,EACf,GAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAW,EAAwB,MAAM,EAAE;QAChE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE;YACJ,OAAO;YACP,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,4BAA4B,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC;AACtB,CAAC"}
|
|
@@ -55,6 +55,10 @@ export type SynthesizeEvent = {
|
|
|
55
55
|
complete: boolean;
|
|
56
56
|
error?: string;
|
|
57
57
|
};
|
|
58
|
+
/** Detect Zod 4 schema (has _zod internals). */
|
|
59
|
+
export declare function isZodSchema(value: unknown): value is {
|
|
60
|
+
_zod: unknown;
|
|
61
|
+
};
|
|
58
62
|
/** Options for synthesize stream: optional callback for streaming data updates per item index. */
|
|
59
63
|
export interface SynthesizeOptions {
|
|
60
64
|
/** Called for each data event with complete: false, with (index, streaming data). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/user/synthesize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,qBAAqB,GAAG;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/user/synthesize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,qBAAqB,GAAG;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAEtE;AA0BD,kGAAkG;AAClG,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAsBzC;AAED,wEAAwE;AACxE,MAAM,MAAM,yBAAyB,GACnC,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
package/dist/user/synthesize.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/user/synthesize.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/user/synthesize.ts"],"names":[],"mappings":";;AA4DA,kCAEC;AAwCD,gCA0BC;AAhID,6BAAmC;AAEnC,8CAA4C;AAyD5C,gDAAgD;AAChD,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAsB;IACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAsC,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzF,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,MAAM;gBACd,MAAM,EAAE,YAAY;aACrB;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAQD;;;;;;;GAOG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAqB,EACrB,KAAsB,EACtB,OAA2B;IAE3B,MAAM,eAAe,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAW,EAAiC,MAAM,EAAE;QACvE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;KACjC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,IAAI,CAAC,eAAe;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI;QAC1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IACE,OAAO,IAAI,KAAK;gBAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAC/B,KAAK,CAAC,QAAQ,KAAK,KAAK;gBACxB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,CAAC;gBACD,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
import type { RequestConfig } from '../request.js';
|
|
2
|
+
import { type SynthesisHistoryEntry } from './synthesize.js';
|
|
3
|
+
import type { SynthesizeUiItem } from './typeDefs.js';
|
|
2
4
|
export type SynthesisUiPlatform = 'web' | 'mobile';
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* One UI to resolve in a `synthesizeUis` request. Derived from the OpenAPI
|
|
7
|
+
* `/v1/user/synthesize-ui` request schema.
|
|
8
|
+
*
|
|
9
|
+
* Beyond `keyName`, this accepts the same per-item synthesis inputs as
|
|
10
|
+
* `/v1/user/synthesize` (`inputs`, `output.schema`, `searchOptionsOverrides`,
|
|
11
|
+
* `synthesisHistoryLimit`) — the UI's synthesis runs against the config attached
|
|
12
|
+
* to it. All synthesis fields are optional; omit them to render the UI's default,
|
|
13
|
+
* config-driven content.
|
|
14
|
+
*/
|
|
15
|
+
export type SynthesizeUiRequestItem = SynthesizeUiItem;
|
|
9
16
|
/** Request to resolve a single generated UI by `keyName` for a platform. */
|
|
10
|
-
export
|
|
17
|
+
export type SynthesizeUiRequest = SynthesizeUiRequestItem & {
|
|
11
18
|
/** Target platform for the artifact. Defaults to `web`. */
|
|
12
19
|
platform?: SynthesisUiPlatform;
|
|
13
|
-
}
|
|
20
|
+
};
|
|
14
21
|
/**
|
|
15
22
|
* Streamed `/v1/user/synthesize-ui` events (SSE):
|
|
16
23
|
* - `connected` / `complete` — connection lifecycle.
|
|
17
24
|
* - `manifest` — emitted once: the deployment `theme` and, per index-matched
|
|
18
25
|
* item, the bundle reference. The SDK loads bundles as soon as this arrives.
|
|
19
26
|
* - data — `{ index, data, complete }`; may stream partials before the final
|
|
20
|
-
* `complete: true`.
|
|
27
|
+
* `complete: true`. Mirrors `/v1/user/synthesize`: the final event may also
|
|
28
|
+
* carry `synthesisOutputId` and, when `synthesisHistoryLimit > 0`,
|
|
29
|
+
* `synthesisHistoryEntries`. `{ index, error }` on failure.
|
|
21
30
|
*/
|
|
22
31
|
export type SynthesizeUiEvent = {
|
|
23
32
|
type: 'connected';
|
|
@@ -35,9 +44,15 @@ export type SynthesizeUiEvent = {
|
|
|
35
44
|
index: number;
|
|
36
45
|
data?: unknown;
|
|
37
46
|
complete: boolean;
|
|
47
|
+
/** Id of the `SynthesisOutput` this result corresponds to — pass it to the
|
|
48
|
+
* submission methods to attach/read app-user submissions. */
|
|
49
|
+
synthesisOutputId?: string;
|
|
50
|
+
/** @deprecated Legacy bare-payload form; prefer `synthesisHistoryEntries`. */
|
|
51
|
+
synthesisHistory?: unknown[];
|
|
52
|
+
synthesisHistoryEntries?: SynthesisHistoryEntry[];
|
|
38
53
|
error?: string;
|
|
39
54
|
};
|
|
40
|
-
/** Per-UI stream event `<
|
|
55
|
+
/** Per-UI stream event `<BitBitView>` consumes (one UI, not the batch). */
|
|
41
56
|
export type SynthesisUiStreamEvent = {
|
|
42
57
|
type: 'manifest';
|
|
43
58
|
bundleUrl?: string | null;
|
|
@@ -47,6 +62,10 @@ export type SynthesisUiStreamEvent = {
|
|
|
47
62
|
type: 'data';
|
|
48
63
|
data: unknown;
|
|
49
64
|
complete: boolean;
|
|
65
|
+
synthesisOutputId?: string;
|
|
66
|
+
/** @deprecated Legacy bare-payload form; prefer `synthesisHistoryEntries`. */
|
|
67
|
+
synthesisHistory?: unknown[];
|
|
68
|
+
synthesisHistoryEntries?: SynthesisHistoryEntry[];
|
|
50
69
|
} | {
|
|
51
70
|
type: 'error';
|
|
52
71
|
error: string;
|
|
@@ -55,13 +74,16 @@ export type SynthesisUiStreamEvent = {
|
|
|
55
74
|
* Resolve generated SynthesisUIs by `keyName` for a platform. Streams a
|
|
56
75
|
* `manifest` (bundles + theme) followed by per-item `data` events, index-matched
|
|
57
76
|
* to `items`. The bundle is served from a CDN by versioned `bundleUrl` and
|
|
58
|
-
* cached across renders/users; `data` is the per-request piece
|
|
77
|
+
* cached across renders/users; `data` is the per-request, per-user piece —
|
|
78
|
+
* synthesized against each UI's attached config (same inputs/streaming as
|
|
79
|
+
* `/v1/user/synthesize`).
|
|
59
80
|
*/
|
|
60
81
|
export declare function synthesizeUis(config: RequestConfig, items: SynthesizeUiRequestItem[], platform?: SynthesisUiPlatform): Promise<AsyncIterable<SynthesizeUiEvent>>;
|
|
61
82
|
/**
|
|
62
83
|
* Resolve a single generated SynthesisUI by `keyName`, as a per-UI stream
|
|
63
|
-
* (manifest, then data). Most apps reach this through `<
|
|
64
|
-
* keyName="…">` rather than calling it directly.
|
|
84
|
+
* (manifest, then data). Most apps reach this through `<BitBitView
|
|
85
|
+
* keyName="…">` rather than calling it directly. Accepts the same optional
|
|
86
|
+
* synthesis inputs as `synthesizeUis` (forwarded through to the one item).
|
|
65
87
|
*/
|
|
66
88
|
export declare function synthesizeUi(config: RequestConfig, request: SynthesizeUiRequest): Promise<AsyncIterable<SynthesisUiStreamEvent>>;
|
|
67
89
|
//# sourceMappingURL=synthesizeUi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesizeUi.d.ts","sourceRoot":"","sources":["../../src/user/synthesizeUi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"synthesizeUi.d.ts","sourceRoot":"","sources":["../../src/user/synthesizeUi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAEvD,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IAC1D,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACrF,GACD;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB;kEAC8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACnD,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBrC;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,uBAAuB,EAAE,EAChC,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAM3C;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAgChD"}
|
|
@@ -2,36 +2,58 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.synthesizeUis = synthesizeUis;
|
|
4
4
|
exports.synthesizeUi = synthesizeUi;
|
|
5
|
+
const zod_1 = require("zod");
|
|
5
6
|
const request_js_1 = require("../request.js");
|
|
7
|
+
const synthesize_js_1 = require("./synthesize.js");
|
|
8
|
+
/** Convert an item's `output.schema` to the wire form (a JSON-schema string),
|
|
9
|
+
* dropping `output` entirely when no schema is set so the server falls back to
|
|
10
|
+
* the config's declared schema. Zod 4 schemas are serialized to JSON schema. */
|
|
11
|
+
function toWireItem(item) {
|
|
12
|
+
const schema = item.output?.schema;
|
|
13
|
+
if (schema === undefined) {
|
|
14
|
+
const { output: _output, ...rest } = item;
|
|
15
|
+
return rest;
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
...item,
|
|
19
|
+
output: {
|
|
20
|
+
schema: (0, synthesize_js_1.isZodSchema)(schema) ? JSON.stringify((0, zod_1.toJSONSchema)(schema)) : schema,
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
6
24
|
/**
|
|
7
25
|
* Resolve generated SynthesisUIs by `keyName` for a platform. Streams a
|
|
8
26
|
* `manifest` (bundles + theme) followed by per-item `data` events, index-matched
|
|
9
27
|
* to `items`. The bundle is served from a CDN by versioned `bundleUrl` and
|
|
10
|
-
* cached across renders/users; `data` is the per-request piece
|
|
28
|
+
* cached across renders/users; `data` is the per-request, per-user piece —
|
|
29
|
+
* synthesized against each UI's attached config (same inputs/streaming as
|
|
30
|
+
* `/v1/user/synthesize`).
|
|
11
31
|
*/
|
|
12
32
|
async function synthesizeUis(config, items, platform) {
|
|
13
33
|
return (0, request_js_1.makeRequest)(config, {
|
|
14
34
|
method: 'POST',
|
|
15
35
|
path: '/v1/user/synthesize-ui',
|
|
16
|
-
body: { platform, items },
|
|
36
|
+
body: { platform, items: items.map(toWireItem) },
|
|
17
37
|
});
|
|
18
38
|
}
|
|
19
39
|
/**
|
|
20
40
|
* Resolve a single generated SynthesisUI by `keyName`, as a per-UI stream
|
|
21
|
-
* (manifest, then data). Most apps reach this through `<
|
|
22
|
-
* keyName="…">` rather than calling it directly.
|
|
41
|
+
* (manifest, then data). Most apps reach this through `<BitBitView
|
|
42
|
+
* keyName="…">` rather than calling it directly. Accepts the same optional
|
|
43
|
+
* synthesis inputs as `synthesizeUis` (forwarded through to the one item).
|
|
23
44
|
*/
|
|
24
45
|
async function synthesizeUi(config, request) {
|
|
25
|
-
const
|
|
46
|
+
const { platform, ...item } = request;
|
|
47
|
+
const stream = await synthesizeUis(config, [item], platform);
|
|
26
48
|
return (async function* perUi() {
|
|
27
49
|
for await (const event of stream) {
|
|
28
50
|
if ('type' in event) {
|
|
29
51
|
if (event.type === 'manifest') {
|
|
30
|
-
const
|
|
52
|
+
const manifestItem = event.items.find((i) => i.index === 0);
|
|
31
53
|
yield {
|
|
32
54
|
type: 'manifest',
|
|
33
|
-
bundleUrl:
|
|
34
|
-
bundleSource:
|
|
55
|
+
bundleUrl: manifestItem?.bundleUrl,
|
|
56
|
+
bundleSource: manifestItem?.bundleSource,
|
|
35
57
|
theme: event.theme,
|
|
36
58
|
};
|
|
37
59
|
}
|
|
@@ -43,7 +65,14 @@ async function synthesizeUi(config, request) {
|
|
|
43
65
|
yield { type: 'error', error: event.error };
|
|
44
66
|
}
|
|
45
67
|
else {
|
|
46
|
-
yield {
|
|
68
|
+
yield {
|
|
69
|
+
type: 'data',
|
|
70
|
+
data: event.data,
|
|
71
|
+
complete: event.complete,
|
|
72
|
+
synthesisOutputId: event.synthesisOutputId,
|
|
73
|
+
synthesisHistory: event.synthesisHistory,
|
|
74
|
+
synthesisHistoryEntries: event.synthesisHistoryEntries,
|
|
75
|
+
};
|
|
47
76
|
}
|
|
48
77
|
}
|
|
49
78
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesizeUi.js","sourceRoot":"","sources":["../../src/user/synthesizeUi.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"synthesizeUi.js","sourceRoot":"","sources":["../../src/user/synthesizeUi.ts"],"names":[],"mappings":";;AAqGA,sCAUC;AAQD,oCAmCC;AA1JD,6BAAmC;AAEnC,8CAA4C;AAC5C,mDAA0E;AAyE1E;;iFAEiF;AACjF,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE;YACN,MAAM,EAAE,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;SAC5E;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CACjC,MAAqB,EACrB,KAAgC,EAChC,QAA8B;IAE9B,OAAO,IAAA,wBAAW,EAAmC,MAAM,EAAE;QAC3D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;KACjD,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAChC,MAAqB,EACrB,OAA4B;IAE5B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK;QAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;oBAC5D,MAAM;wBACJ,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE,YAAY,EAAE,SAAS;wBAClC,YAAY,EAAE,YAAY,EAAE,YAAY;wBACxC,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;gBAAE,SAAS;YAChC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,MAAM;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;iBACvD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import type { RequestConfig } from '../request.js';
|
|
2
|
-
import {
|
|
2
|
+
import type { TrackEvent, TrackResponse } from './track.js';
|
|
3
|
+
/** Sends a batch of events to a specific endpoint (UI `/events` or piece `/piece-events`). */
|
|
4
|
+
type RecordFn = (config: RequestConfig, options: {
|
|
5
|
+
events: TrackEvent[];
|
|
6
|
+
}) => Promise<NonNullable<TrackResponse>>;
|
|
3
7
|
/**
|
|
4
|
-
* Batch manager for `trackItem` — batches individual events and sends them
|
|
5
|
-
* together after the timeout. Mirrors SignalBatchManager.
|
|
8
|
+
* Batch manager for `trackItem` / `trackPieceItem` — batches individual events and sends them
|
|
9
|
+
* together after the timeout via the injected `record` function. Mirrors SignalBatchManager.
|
|
6
10
|
*/
|
|
7
11
|
export declare class TrackBatchManager {
|
|
8
12
|
private queue;
|
|
9
13
|
private timer;
|
|
10
14
|
private getConfig;
|
|
11
15
|
private batchTimeout;
|
|
12
|
-
|
|
16
|
+
private record;
|
|
17
|
+
constructor(getConfig: () => Promise<RequestConfig>, batchTimeout: number, record: RecordFn);
|
|
13
18
|
updateConfig(config: RequestConfig): void;
|
|
14
19
|
addEvent(event: TrackEvent): Promise<NonNullable<TrackResponse>>;
|
|
15
20
|
private flush;
|
|
16
21
|
}
|
|
22
|
+
export {};
|
|
17
23
|
//# sourceMappingURL=track-batch-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-batch-manager.d.ts","sourceRoot":"","sources":["../../src/user/track-batch-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"track-batch-manager.d.ts","sourceRoot":"","sources":["../../src/user/track-batch-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK5D,8FAA8F;AAC9F,KAAK,QAAQ,GAAG,CACd,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,KAC9B,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AAEzC;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAIL;IACR,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAW;gBAEb,SAAS,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IAM3F,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAIzC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAQlD,KAAK;CAqBpB"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TrackBatchManager = void 0;
|
|
4
|
-
const track_js_1 = require("./track.js");
|
|
5
4
|
/**
|
|
6
|
-
* Batch manager for `trackItem` — batches individual events and sends them
|
|
7
|
-
* together after the timeout. Mirrors SignalBatchManager.
|
|
5
|
+
* Batch manager for `trackItem` / `trackPieceItem` — batches individual events and sends them
|
|
6
|
+
* together after the timeout via the injected `record` function. Mirrors SignalBatchManager.
|
|
8
7
|
*/
|
|
9
8
|
class TrackBatchManager {
|
|
10
9
|
queue = [];
|
|
11
10
|
timer = null;
|
|
12
11
|
getConfig;
|
|
13
12
|
batchTimeout;
|
|
14
|
-
|
|
13
|
+
record;
|
|
14
|
+
constructor(getConfig, batchTimeout, record) {
|
|
15
15
|
this.getConfig = getConfig;
|
|
16
16
|
this.batchTimeout = batchTimeout;
|
|
17
|
+
this.record = record;
|
|
17
18
|
}
|
|
18
19
|
updateConfig(config) {
|
|
19
20
|
this.getConfig = () => Promise.resolve(config);
|
|
@@ -35,7 +36,7 @@ class TrackBatchManager {
|
|
|
35
36
|
try {
|
|
36
37
|
const config = await this.getConfig();
|
|
37
38
|
const events = batch.map((b) => b.event);
|
|
38
|
-
const response = await
|
|
39
|
+
const response = await this.record(config, { events });
|
|
39
40
|
for (const { resolve } of batch) {
|
|
40
41
|
resolve(response);
|
|
41
42
|
}
|