@tidblink/server 0.0.0-stage → 0.3.0-rc.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/LICENSE +201 -0
- package/README.md +993 -2
- package/dist/audio.d.ts +63 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +163 -0
- package/dist/audio.js.map +1 -0
- package/dist/client-tools.d.ts +46 -0
- package/dist/client-tools.d.ts.map +1 -0
- package/dist/client-tools.js +114 -0
- package/dist/client-tools.js.map +1 -0
- package/dist/control.d.ts +17 -0
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +52 -0
- package/dist/control.js.map +1 -0
- package/dist/errors.d.ts +80 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +87 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +129 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +388 -0
- package/dist/files.js.map +1 -0
- package/dist/history.d.ts +242 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +91 -0
- package/dist/history.js.map +1 -0
- package/dist/http.d.ts +64 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +282 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/organization.d.ts +70 -0
- package/dist/organization.d.ts.map +1 -0
- package/dist/organization.js +118 -0
- package/dist/organization.js.map +1 -0
- package/dist/progress.d.ts +34 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +154 -0
- package/dist/progress.js.map +1 -0
- package/dist/realtime.d.ts +91 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +112 -0
- package/dist/realtime.js.map +1 -0
- package/dist/schedulers.d.ts +129 -0
- package/dist/schedulers.d.ts.map +1 -0
- package/dist/schedulers.js +91 -0
- package/dist/schedulers.js.map +1 -0
- package/dist/session.d.ts +136 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +226 -0
- package/dist/session.js.map +1 -0
- package/dist/sse.d.ts +7 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +45 -0
- package/dist/sse.js.map +1 -0
- package/dist/turn.d.ts +43 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +206 -0
- package/dist/turn.js.map +1 -0
- package/dist/usage.d.ts +462 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +20 -0
- package/dist/usage.js.map +1 -0
- package/dist/user.d.ts +96 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +139 -0
- package/dist/user.js.map +1 -0
- package/examples/answer-client-tool.mjs +69 -0
- package/examples/control-turn.mjs +48 -0
- package/examples/create-session.mjs +69 -0
- package/examples/observe-message.mjs +44 -0
- package/examples/organization-session.mjs +66 -0
- package/examples/prepare-realtime-connection.mjs +61 -0
- package/examples/provision-user.mjs +83 -0
- package/examples/read-usage.mjs +62 -0
- package/examples/schedule-task.mjs +67 -0
- package/examples/send-message.mjs +43 -0
- package/examples/submit-audio.mjs +52 -0
- package/examples/upload-file.mjs +53 -0
- package/package.json +65 -4
package/dist/progress.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { getInteraction } from "./history.js";
|
|
2
|
+
import { waitForResult, validateWaitOptions } from "./turn.js";
|
|
3
|
+
import { TiDBLinkError, TiDBLinkApiError, TurnFailedError, TurnInterruptedError, InputNotAppliedError, ObservationStoppedError, } from "./errors.js";
|
|
4
|
+
import { HttpClient, requireKnownKeys, requireCreationKey } from "./http.js";
|
|
5
|
+
import { decodeSse } from "./sse.js";
|
|
6
|
+
export async function* sessionEvents(http, sessionId, options = {}) {
|
|
7
|
+
requireKnownKeys(options, ["cursor", "signal", "requestId"], "Event subscription options");
|
|
8
|
+
if (options.cursor !== undefined &&
|
|
9
|
+
(typeof options.cursor !== "string" || !options.cursor))
|
|
10
|
+
throw new TypeError("cursor must be a non-empty opaque event position");
|
|
11
|
+
const query = new URLSearchParams({ stream: "true" });
|
|
12
|
+
if (options.cursor !== undefined)
|
|
13
|
+
query.set("cursor", options.cursor);
|
|
14
|
+
const { response, requestId } = await http.rawResponse(`/api/v1/user/sessions/${encodeURIComponent(sessionId)}/events?${query}`, {
|
|
15
|
+
headers: { accept: "text/event-stream" },
|
|
16
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
17
|
+
...(options.requestId ? { requestId: options.requestId } : {}),
|
|
18
|
+
});
|
|
19
|
+
if (response.headers
|
|
20
|
+
.get("content-type")
|
|
21
|
+
?.split(";", 1)[0]
|
|
22
|
+
?.trim()
|
|
23
|
+
.toLowerCase() !== "text/event-stream" ||
|
|
24
|
+
!response.body) {
|
|
25
|
+
await response.body?.cancel();
|
|
26
|
+
throw new TiDBLinkError("Session subscription returned no event stream", {
|
|
27
|
+
requestId,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
for await (const frame of decodeSse(response.body)) {
|
|
31
|
+
let value;
|
|
32
|
+
try {
|
|
33
|
+
value = JSON.parse(frame.data);
|
|
34
|
+
}
|
|
35
|
+
catch (cause) {
|
|
36
|
+
throw new TiDBLinkError("Session subscription returned invalid event JSON", { requestId, cause });
|
|
37
|
+
}
|
|
38
|
+
const event = value;
|
|
39
|
+
if (!frame.id ||
|
|
40
|
+
!event ||
|
|
41
|
+
typeof event.type !== "string" ||
|
|
42
|
+
!event.type ||
|
|
43
|
+
event.sessionId !== sessionId ||
|
|
44
|
+
(event.turnId !== null && typeof event.turnId !== "string") ||
|
|
45
|
+
typeof event.createdAt !== "string" ||
|
|
46
|
+
typeof event.data !== "object" ||
|
|
47
|
+
event.data === null ||
|
|
48
|
+
Array.isArray(event.data))
|
|
49
|
+
throw new TiDBLinkError("Session subscription returned an invalid event envelope", { requestId });
|
|
50
|
+
yield { ...event, cursor: frame.id };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function* observeTurn(http, sessionId, inputId, options = {}) {
|
|
54
|
+
requireKnownKeys(options, ["cursor", "signal", "requestId", "timeoutMs"], "Turn observation options");
|
|
55
|
+
requireCreationKey(inputId);
|
|
56
|
+
const { timeoutMs } = validateWaitOptions(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs });
|
|
57
|
+
const deadline = new AbortController();
|
|
58
|
+
const timer = setTimeout(() => deadline.abort(), timeoutMs);
|
|
59
|
+
const signal = options.signal
|
|
60
|
+
? AbortSignal.any([options.signal, deadline.signal])
|
|
61
|
+
: deadline.signal;
|
|
62
|
+
const request = {
|
|
63
|
+
signal,
|
|
64
|
+
...(options.requestId ? { requestId: options.requestId } : {}),
|
|
65
|
+
};
|
|
66
|
+
let cursor = options.cursor;
|
|
67
|
+
let turnId;
|
|
68
|
+
try {
|
|
69
|
+
const receipt = await getInteraction(http, sessionId, inputId, request);
|
|
70
|
+
turnId = receipt.turnId;
|
|
71
|
+
if (receipt.kind !== "message" && receipt.kind !== "retry")
|
|
72
|
+
throw new TiDBLinkError("Turn observation requires a message or checkpoint retry receipt");
|
|
73
|
+
if (receipt.rejection ||
|
|
74
|
+
receipt.mode === "rejected" ||
|
|
75
|
+
receipt.result.status !== "running") {
|
|
76
|
+
yield {
|
|
77
|
+
type: "result",
|
|
78
|
+
result: await waitForResult(http, sessionId, inputId, {
|
|
79
|
+
...request,
|
|
80
|
+
timeoutMs,
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
for await (const event of sessionEvents(http, sessionId, {
|
|
86
|
+
...request,
|
|
87
|
+
...(cursor ? { cursor } : {}),
|
|
88
|
+
})) {
|
|
89
|
+
cursor = event.cursor;
|
|
90
|
+
if (event.turnId !== turnId)
|
|
91
|
+
continue;
|
|
92
|
+
const payload = event.data.payload;
|
|
93
|
+
if (event.type === "agent.session.turn.output_text.snapshot" ||
|
|
94
|
+
event.type === "agent.session.turn.progress") {
|
|
95
|
+
if (typeof payload !== "object" ||
|
|
96
|
+
payload === null ||
|
|
97
|
+
typeof payload.text !== "string")
|
|
98
|
+
throw new TiDBLinkError("Session text event omitted its complete text");
|
|
99
|
+
yield {
|
|
100
|
+
type: event.type === "agent.session.turn.output_text.snapshot"
|
|
101
|
+
? "draft"
|
|
102
|
+
: "progress",
|
|
103
|
+
text: payload.text,
|
|
104
|
+
event,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
else
|
|
108
|
+
yield { type: "event", event };
|
|
109
|
+
if (event.data.event === "turn_finished" ||
|
|
110
|
+
event.data.event === "turn_error") {
|
|
111
|
+
// Replayed terminal events may belong to another execution of this Turn.
|
|
112
|
+
const current = await getInteraction(http, sessionId, inputId, request);
|
|
113
|
+
if (current.result.status === "running")
|
|
114
|
+
continue;
|
|
115
|
+
yield {
|
|
116
|
+
type: "result",
|
|
117
|
+
result: await waitForResult(http, sessionId, inputId, {
|
|
118
|
+
...request,
|
|
119
|
+
timeoutMs,
|
|
120
|
+
}),
|
|
121
|
+
};
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
throw new TiDBLinkError("Session event subscription ended before the original result was established");
|
|
126
|
+
}
|
|
127
|
+
catch (cause) {
|
|
128
|
+
if (cause instanceof TiDBLinkApiError ||
|
|
129
|
+
cause instanceof TurnFailedError ||
|
|
130
|
+
cause instanceof TurnInterruptedError ||
|
|
131
|
+
cause instanceof InputNotAppliedError)
|
|
132
|
+
throw cause;
|
|
133
|
+
throw new ObservationStoppedError(deadline.signal.aborted && !options.signal?.aborted
|
|
134
|
+
? "Local observation timed out; recover the original input"
|
|
135
|
+
: "Observation stopped; recover the original input", {
|
|
136
|
+
sessionId,
|
|
137
|
+
inputId,
|
|
138
|
+
...(turnId ? { turnId } : {}),
|
|
139
|
+
...(cursor ? { cursor } : {}),
|
|
140
|
+
...(cause instanceof TiDBLinkError && cause.requestId
|
|
141
|
+
? { requestId: cause.requestId }
|
|
142
|
+
: options.requestId
|
|
143
|
+
? { requestId: options.requestId }
|
|
144
|
+
: {}),
|
|
145
|
+
timedOut: deadline.signal.aborted && !options.signal?.aborted,
|
|
146
|
+
cause,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
clearTimeout(timer);
|
|
151
|
+
deadline.abort();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAmB,MAAM,WAAW,CAAC;AAChF,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBrC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAClC,IAAgB,EAChB,SAAiB,EACjB,UAAgC,EAAE;IAElC,gBAAgB,CACd,OAAO,EACP,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EACjC,4BAA4B,CAC7B,CAAC;IACF,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvD,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CACpD,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,WAAW,KAAK,EAAE,EACxE;QACE,OAAO,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;QACxC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CACF,CAAC;IACF,IACE,QAAQ,CAAC,OAAO;SACb,GAAG,CAAC,cAAc,CAAC;QACpB,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,IAAI,EAAE;SACP,WAAW,EAAE,KAAK,mBAAmB;QACxC,CAAC,QAAQ,CAAC,IAAI,EACd,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,+CAA+C,EAAE;YACvE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CACrB,kDAAkD,EAClD,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,KAAqC,CAAC;QACpD,IACE,CAAC,KAAK,CAAC,EAAE;YACT,CAAC,KAAK;YACN,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,KAAK,CAAC,IAAI;YACX,KAAK,CAAC,SAAS,KAAK,SAAS;YAC7B,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;YAC3D,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,KAAK,CAAC,IAAI,KAAK,IAAI;YACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAEzB,MAAM,IAAI,aAAa,CACrB,yDAAyD,EACzD,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAkB,CAAC;IACvD,CAAC;AACH,CAAC;AAYD,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAChC,IAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,UAA8B,EAAE;IAEhC,gBAAgB,CACd,OAAO,EACP,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAC9C,0BAA0B,CAC3B,CAAC;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CACvC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACxE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpB,MAAM,OAAO,GAAG;QACd,MAAM;QACN,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;IACF,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5B,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACxB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YACxD,MAAM,IAAI,aAAa,CACrB,iEAAiE,CAClE,CAAC;QACJ,IACE,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,IAAI,KAAK,UAAU;YAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EACnC,CAAC;YACD,MAAM;gBACJ,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;oBACpD,GAAG,OAAO;oBACV,SAAS;iBACV,CAAC;aACH,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;YACvD,GAAG,OAAO;YACV,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,EAAE,CAAC;YACH,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACnC,IACE,KAAK,CAAC,IAAI,KAAK,yCAAyC;gBACxD,KAAK,CAAC,IAAI,KAAK,6BAA6B,EAC5C,CAAC;gBACD,IACE,OAAO,OAAO,KAAK,QAAQ;oBAC3B,OAAO,KAAK,IAAI;oBAChB,OAAQ,OAA8B,CAAC,IAAI,KAAK,QAAQ;oBAExD,MAAM,IAAI,aAAa,CACrB,8CAA8C,CAC/C,CAAC;gBACJ,MAAM;oBACJ,IAAI,EACF,KAAK,CAAC,IAAI,KAAK,yCAAyC;wBACtD,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,UAAU;oBAChB,IAAI,EAAG,OAA4B,CAAC,IAAI;oBACxC,KAAK;iBACN,CAAC;YACJ,CAAC;;gBAAM,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACtC,IACE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe;gBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,EACjC,CAAC;gBACD,yEAAyE;gBACzE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxE,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS;gBAClD,MAAM;oBACJ,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;wBACpD,GAAG,OAAO;wBACV,SAAS;qBACV,CAAC;iBACH,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,IAAI,aAAa,CACrB,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,gBAAgB;YACjC,KAAK,YAAY,eAAe;YAChC,KAAK,YAAY,oBAAoB;YACrC,KAAK,YAAY,oBAAoB;YAErC,MAAM,KAAK,CAAC;QACd,MAAM,IAAI,uBAAuB,CAC/B,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;YACjD,CAAC,CAAC,yDAAyD;YAC3D,CAAC,CAAC,iDAAiD,EACrD;YACE,SAAS;YACT,OAAO;YACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,SAAS;gBACnD,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;gBAChC,CAAC,CAAC,OAAO,CAAC,SAAS;oBACjB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;oBAClC,CAAC,CAAC,EAAE,CAAC;YACT,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;YAC7D,KAAK;SACN,CACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export type RealtimeLanguage = "zh-CN" | "en-US";
|
|
2
|
+
export type RealtimeEndpointingMode = "client" | "server";
|
|
3
|
+
export interface RealtimePcm16AudioFormat {
|
|
4
|
+
encoding: "pcm16";
|
|
5
|
+
sampleRate: number;
|
|
6
|
+
channels: 1;
|
|
7
|
+
}
|
|
8
|
+
export interface RealtimeOpusAudioFormat {
|
|
9
|
+
encoding: "opus";
|
|
10
|
+
sampleRate: number;
|
|
11
|
+
channels: 1;
|
|
12
|
+
packetDurationMs: number;
|
|
13
|
+
bitrate?: 16000 | 24000 | 32000;
|
|
14
|
+
}
|
|
15
|
+
export type RealtimeAudioFormat = RealtimePcm16AudioFormat | RealtimeOpusAudioFormat;
|
|
16
|
+
export interface RealtimeModel {
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
available: boolean;
|
|
20
|
+
isDefault: boolean;
|
|
21
|
+
languages: RealtimeLanguage[];
|
|
22
|
+
endpointingModes: RealtimeEndpointingMode[];
|
|
23
|
+
audio: {
|
|
24
|
+
input: RealtimeAudioFormat[];
|
|
25
|
+
output: RealtimeAudioFormat[];
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface RealtimeModelCatalog {
|
|
29
|
+
defaultModel: string | null;
|
|
30
|
+
models: RealtimeModel[];
|
|
31
|
+
}
|
|
32
|
+
export interface RealtimeVoiceSetting {
|
|
33
|
+
language: RealtimeLanguage;
|
|
34
|
+
}
|
|
35
|
+
export interface RealtimeModelSelection {
|
|
36
|
+
model: string | null;
|
|
37
|
+
revision: number;
|
|
38
|
+
etag: string;
|
|
39
|
+
voice: RealtimeVoiceSetting | null;
|
|
40
|
+
}
|
|
41
|
+
export interface RealtimeSessionSelectionFields {
|
|
42
|
+
realtimeModel: string | null;
|
|
43
|
+
realtimeModelRevision: number;
|
|
44
|
+
realtimeModelEtag: string;
|
|
45
|
+
realtimeVoice: RealtimeVoiceSetting | null;
|
|
46
|
+
}
|
|
47
|
+
export declare const realtimeModelSelectionFrom: (session: RealtimeSessionSelectionFields) => RealtimeModelSelection;
|
|
48
|
+
export interface RealtimeAudioFormats {
|
|
49
|
+
input: RealtimeAudioFormat;
|
|
50
|
+
output: RealtimeAudioFormat;
|
|
51
|
+
}
|
|
52
|
+
export interface OpenRealtimeConnectionInput {
|
|
53
|
+
audio?: Partial<RealtimeAudioFormats>;
|
|
54
|
+
metadata?: Record<string, string>;
|
|
55
|
+
}
|
|
56
|
+
export interface RealtimeConnection {
|
|
57
|
+
object: "realtime_connection";
|
|
58
|
+
id: string;
|
|
59
|
+
sessionId: string;
|
|
60
|
+
agentId: string;
|
|
61
|
+
provider: {
|
|
62
|
+
name: string;
|
|
63
|
+
region: string | null;
|
|
64
|
+
model: string | null;
|
|
65
|
+
};
|
|
66
|
+
status: "connecting" | "active" | "paused" | "ended";
|
|
67
|
+
audio: RealtimeAudioFormats;
|
|
68
|
+
activeTaskTurnId: string | null;
|
|
69
|
+
usage: {
|
|
70
|
+
inputAudioSec: number;
|
|
71
|
+
outputAudioSec: number;
|
|
72
|
+
thoughtTokens: number;
|
|
73
|
+
textTokens: number;
|
|
74
|
+
};
|
|
75
|
+
metadata: Record<string, string>;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
endedAt: string | null;
|
|
78
|
+
}
|
|
79
|
+
export interface RealtimeConnectGrant {
|
|
80
|
+
websocketUrl: string;
|
|
81
|
+
connectToken: string;
|
|
82
|
+
connectTokenExpiresAt: string;
|
|
83
|
+
}
|
|
84
|
+
export interface OpenRealtimeConnectionResult extends RealtimeConnectGrant {
|
|
85
|
+
realtimeConnection: RealtimeConnection;
|
|
86
|
+
}
|
|
87
|
+
export declare const requireRealtimeModelSelectionReceipt: (value: unknown, requestId: string) => RealtimeModelSelection;
|
|
88
|
+
export declare const requireOpenRealtimeConnectionReceipt: (value: unknown, requestId: string) => OpenRealtimeConnectionResult;
|
|
89
|
+
export declare const requireRealtimeConnectGrantReceipt: (value: unknown, requestId: string) => RealtimeConnectGrant;
|
|
90
|
+
export declare const requireRealtimeConnectionReceipt: (value: unknown, requestId: string) => RealtimeConnection;
|
|
91
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/realtime.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { OutcomeUnknownError } from "./errors.js";
|
|
2
|
+
export const realtimeModelSelectionFrom = (session) => ({
|
|
3
|
+
model: session.realtimeModel,
|
|
4
|
+
revision: session.realtimeModelRevision,
|
|
5
|
+
etag: session.realtimeModelEtag,
|
|
6
|
+
voice: session.realtimeVoice,
|
|
7
|
+
});
|
|
8
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9
|
+
const isString = (value) => typeof value === "string" && value.length > 0;
|
|
10
|
+
const isNullableString = (value) => value === null || typeof value === "string";
|
|
11
|
+
const isNumber = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
12
|
+
const isDateTime = (value) => typeof value === "string" && Number.isFinite(Date.parse(value));
|
|
13
|
+
const isAudioFormat = (value) => {
|
|
14
|
+
if (!isRecord(value) ||
|
|
15
|
+
!isNumber(value.sampleRate) ||
|
|
16
|
+
value.sampleRate <= 0 ||
|
|
17
|
+
value.channels !== 1)
|
|
18
|
+
return false;
|
|
19
|
+
if (value.encoding === "pcm16")
|
|
20
|
+
return true;
|
|
21
|
+
return (value.encoding === "opus" &&
|
|
22
|
+
Number.isInteger(value.packetDurationMs) &&
|
|
23
|
+
isNumber(value.packetDurationMs) &&
|
|
24
|
+
value.packetDurationMs > 0 &&
|
|
25
|
+
(value.bitrate === undefined ||
|
|
26
|
+
value.bitrate === 16000 ||
|
|
27
|
+
value.bitrate === 24000 ||
|
|
28
|
+
value.bitrate === 32000));
|
|
29
|
+
};
|
|
30
|
+
const isRealtimeConnection = (value) => {
|
|
31
|
+
if (!isRecord(value))
|
|
32
|
+
return false;
|
|
33
|
+
const provider = value.provider;
|
|
34
|
+
const audio = value.audio;
|
|
35
|
+
const usage = value.usage;
|
|
36
|
+
const metadata = value.metadata;
|
|
37
|
+
return (value.object === "realtime_connection" &&
|
|
38
|
+
isString(value.id) &&
|
|
39
|
+
isString(value.sessionId) &&
|
|
40
|
+
isString(value.agentId) &&
|
|
41
|
+
isRecord(provider) &&
|
|
42
|
+
isString(provider.name) &&
|
|
43
|
+
isNullableString(provider.region) &&
|
|
44
|
+
isNullableString(provider.model) &&
|
|
45
|
+
["connecting", "active", "paused", "ended"].includes(String(value.status)) &&
|
|
46
|
+
isRecord(audio) &&
|
|
47
|
+
isAudioFormat(audio.input) &&
|
|
48
|
+
isAudioFormat(audio.output) &&
|
|
49
|
+
isNullableString(value.activeTaskTurnId) &&
|
|
50
|
+
isRecord(usage) &&
|
|
51
|
+
isNumber(usage.inputAudioSec) &&
|
|
52
|
+
isNumber(usage.outputAudioSec) &&
|
|
53
|
+
Number.isInteger(usage.thoughtTokens) &&
|
|
54
|
+
isNumber(usage.thoughtTokens) &&
|
|
55
|
+
Number.isInteger(usage.textTokens) &&
|
|
56
|
+
isNumber(usage.textTokens) &&
|
|
57
|
+
isRecord(metadata) &&
|
|
58
|
+
Object.values(metadata).every((entry) => typeof entry === "string") &&
|
|
59
|
+
isDateTime(value.createdAt) &&
|
|
60
|
+
(value.endedAt === null || isDateTime(value.endedAt)));
|
|
61
|
+
};
|
|
62
|
+
const isConnectGrant = (value) => {
|
|
63
|
+
if (!isRecord(value) || !isString(value.websocketUrl))
|
|
64
|
+
return false;
|
|
65
|
+
let protocol;
|
|
66
|
+
try {
|
|
67
|
+
protocol = new URL(value.websocketUrl).protocol;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return ((protocol === "ws:" || protocol === "wss:") &&
|
|
73
|
+
typeof value.connectToken === "string" &&
|
|
74
|
+
/^rct_[A-Za-z0-9_-]{43}$/u.test(value.connectToken) &&
|
|
75
|
+
isDateTime(value.connectTokenExpiresAt));
|
|
76
|
+
};
|
|
77
|
+
const unusableReceipt = (operation, requestId) => {
|
|
78
|
+
throw new OutcomeUnknownError(`TiDB Link accepted ${operation} but returned an unusable receipt`, { requestId });
|
|
79
|
+
};
|
|
80
|
+
export const requireRealtimeModelSelectionReceipt = (value, requestId) => {
|
|
81
|
+
if (!isRecord(value))
|
|
82
|
+
return unusableReceipt("the Realtime Model selection", requestId);
|
|
83
|
+
const voice = value.realtimeVoice;
|
|
84
|
+
if (!isNullableString(value.realtimeModel) ||
|
|
85
|
+
!Number.isInteger(value.realtimeModelRevision) ||
|
|
86
|
+
!isNumber(value.realtimeModelRevision) ||
|
|
87
|
+
value.realtimeModelRevision <= 0 ||
|
|
88
|
+
!isString(value.realtimeModelEtag) ||
|
|
89
|
+
(voice !== null &&
|
|
90
|
+
(!isRecord(voice) ||
|
|
91
|
+
(voice.language !== "zh-CN" && voice.language !== "en-US"))))
|
|
92
|
+
return unusableReceipt("the Realtime Model selection", requestId);
|
|
93
|
+
return realtimeModelSelectionFrom(value);
|
|
94
|
+
};
|
|
95
|
+
export const requireOpenRealtimeConnectionReceipt = (value, requestId) => {
|
|
96
|
+
if (!isRecord(value) ||
|
|
97
|
+
!isRealtimeConnection(value.realtimeConnection) ||
|
|
98
|
+
!isConnectGrant(value))
|
|
99
|
+
return unusableReceipt("the Realtime Connection request", requestId);
|
|
100
|
+
return value;
|
|
101
|
+
};
|
|
102
|
+
export const requireRealtimeConnectGrantReceipt = (value, requestId) => {
|
|
103
|
+
if (!isConnectGrant(value))
|
|
104
|
+
return unusableReceipt("the Realtime connect-token request", requestId);
|
|
105
|
+
return value;
|
|
106
|
+
};
|
|
107
|
+
export const requireRealtimeConnectionReceipt = (value, requestId) => {
|
|
108
|
+
if (!isRecord(value) || !isRealtimeConnection(value.realtimeConnection))
|
|
109
|
+
return unusableReceipt("the Realtime Connection mutation", requestId);
|
|
110
|
+
return value.realtimeConnection;
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=realtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA2DlD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAuC,EACf,EAAE,CAAC,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC,qBAAqB;IACvC,IAAI,EAAE,OAAO,CAAC,iBAAiB;IAC/B,KAAK,EAAE,OAAO,CAAC,aAAa;CAC7B,CAAC,CAAC;AA+CH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAA0B,EAAE,CAC1D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CACnD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA0B,EAAE,CAClE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CACnD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpE,MAAM,UAAU,GAAG,CAAC,KAAc,EAAmB,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAElE,MAAM,aAAa,GAAG,CAAC,KAAc,EAAgC,EAAE;IACrE,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3B,KAAK,CAAC,UAAU,IAAI,CAAC;QACrB,KAAK,CAAC,QAAQ,KAAK,CAAC;QAEpB,OAAO,KAAK,CAAC;IACf,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,CACL,KAAK,CAAC,QAAQ,KAAK,MAAM;QACzB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAChC,KAAK,CAAC,gBAAgB,GAAG,CAAC;QAC1B,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;YAC1B,KAAK,CAAC,OAAO,KAAK,KAAK;YACvB,KAAK,CAAC,OAAO,KAAK,KAAK;YACvB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAA+B,EAAE;IAC3E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,qBAAqB;QACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvB,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAClD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CACrB;QACD,QAAQ,CAAC,KAAK,CAAC;QACf,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;QAC7B,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;QAC9B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;QACrC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;QAC7B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAiC,EAAE;IACvE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,CAAC;QAC3C,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACnD,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,CACxC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAS,EAAE;IACtE,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,SAAS,mCAAmC,EAClE,EAAE,SAAS,EAAE,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,KAAc,EACd,SAAiB,EACO,EAAE;IAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;IAClC,IACE,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC;QACtC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC9C,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACtC,KAAK,CAAC,qBAAqB,IAAI,CAAC;QAChC,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAClC,CAAC,KAAK,KAAK,IAAI;YACb,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACf,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC;QAEhE,OAAO,eAAe,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;IACpE,OAAO,0BAA0B,CAAC,KAAkD,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,KAAc,EACd,SAAiB,EACa,EAAE;IAChC,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,CAAC,oBAAoB,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC/C,CAAC,cAAc,CAAC,KAAK,CAAC;QAEtB,OAAO,eAAe,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,KAAgD,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,KAAc,EACd,SAAiB,EACK,EAAE;IACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACxB,OAAO,eAAe,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,KAAc,EACd,SAAiB,EACG,EAAE;IACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACrE,OAAO,eAAe,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC,kBAAkB,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { HttpClient, type ListOptions } from "./http.js";
|
|
2
|
+
import type { RequestOptions } from "./organization.js";
|
|
3
|
+
export type SchedulerSchedule = {
|
|
4
|
+
kind: "once";
|
|
5
|
+
runAt: string;
|
|
6
|
+
after?: never;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "once";
|
|
9
|
+
after: string;
|
|
10
|
+
runAt?: never;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "cron";
|
|
13
|
+
cronExpr: string;
|
|
14
|
+
timezone: string;
|
|
15
|
+
};
|
|
16
|
+
export type SchedulerDelivery = {
|
|
17
|
+
target: "new_session";
|
|
18
|
+
} | {
|
|
19
|
+
target: "bound_session";
|
|
20
|
+
sessionId: string;
|
|
21
|
+
};
|
|
22
|
+
export type CreateSchedulerInput = RequestOptions & {
|
|
23
|
+
idempotencyKey: string;
|
|
24
|
+
title: string;
|
|
25
|
+
prompt: string;
|
|
26
|
+
schedule: SchedulerSchedule;
|
|
27
|
+
validFrom?: string | null;
|
|
28
|
+
validUntil?: string | null;
|
|
29
|
+
} & ({
|
|
30
|
+
agentId: string;
|
|
31
|
+
delivery?: {
|
|
32
|
+
target: "new_session";
|
|
33
|
+
};
|
|
34
|
+
} | {
|
|
35
|
+
agentId?: never;
|
|
36
|
+
delivery: {
|
|
37
|
+
target: "bound_session";
|
|
38
|
+
sessionId: string;
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
export interface UpdateSchedulerInput {
|
|
42
|
+
title?: string;
|
|
43
|
+
prompt?: string;
|
|
44
|
+
agentId?: string;
|
|
45
|
+
delivery?: SchedulerDelivery;
|
|
46
|
+
schedule?: SchedulerSchedule;
|
|
47
|
+
enabled?: boolean;
|
|
48
|
+
validFrom?: string | null;
|
|
49
|
+
validUntil?: string | null;
|
|
50
|
+
snoozeUntil?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface Scheduler {
|
|
53
|
+
schedulerId: string;
|
|
54
|
+
ownerUserId: string;
|
|
55
|
+
organizationId: string;
|
|
56
|
+
agentId: string;
|
|
57
|
+
title: string;
|
|
58
|
+
prompt: string;
|
|
59
|
+
delivery: {
|
|
60
|
+
target: "new_session" | "bound_session";
|
|
61
|
+
sessionId: string | null;
|
|
62
|
+
};
|
|
63
|
+
schedule: {
|
|
64
|
+
kind: "once" | "cron";
|
|
65
|
+
cronExpr: string | null;
|
|
66
|
+
runAt: string | null;
|
|
67
|
+
timezone: string;
|
|
68
|
+
};
|
|
69
|
+
validFrom: string | null;
|
|
70
|
+
validUntil: string | null;
|
|
71
|
+
/** Deleted records are returned only by Organization-owned list history. */
|
|
72
|
+
status: "enabled" | "disabled" | "deleted";
|
|
73
|
+
nextFireAt: string | null;
|
|
74
|
+
lastFiredAt: string | null;
|
|
75
|
+
revision: number;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
updatedAt: string;
|
|
78
|
+
}
|
|
79
|
+
export interface SchedulerResponse {
|
|
80
|
+
scheduler: Scheduler;
|
|
81
|
+
etag: string;
|
|
82
|
+
}
|
|
83
|
+
export interface SchedulerPage {
|
|
84
|
+
schedulers: Scheduler[];
|
|
85
|
+
nextCursor: string | null;
|
|
86
|
+
}
|
|
87
|
+
export interface SchedulerListOptions extends ListOptions {
|
|
88
|
+
status?: "enabled" | "disabled";
|
|
89
|
+
}
|
|
90
|
+
export interface OrganizationSchedulerListOptions extends ListOptions {
|
|
91
|
+
status?: Scheduler["status"];
|
|
92
|
+
}
|
|
93
|
+
export interface SchedulerMutationOptions extends RequestOptions {
|
|
94
|
+
ifMatch: string;
|
|
95
|
+
}
|
|
96
|
+
export interface SchedulerFire {
|
|
97
|
+
fireId: string;
|
|
98
|
+
schedulerId: string;
|
|
99
|
+
scheduledFor: string;
|
|
100
|
+
executionStatus: "pending" | "completed" | "failed";
|
|
101
|
+
execution: {
|
|
102
|
+
agentId: string;
|
|
103
|
+
prompt: string;
|
|
104
|
+
delivery: Scheduler["delivery"];
|
|
105
|
+
};
|
|
106
|
+
result: {
|
|
107
|
+
sessionId: string | null;
|
|
108
|
+
turnId: string | null;
|
|
109
|
+
messageId: string | null;
|
|
110
|
+
failureCode: string | null;
|
|
111
|
+
};
|
|
112
|
+
createdAt: string;
|
|
113
|
+
settledAt: string | null;
|
|
114
|
+
}
|
|
115
|
+
export interface SchedulerFirePage {
|
|
116
|
+
fires: SchedulerFire[];
|
|
117
|
+
nextCursor: string | null;
|
|
118
|
+
}
|
|
119
|
+
export declare class UserSchedulers<TListOptions extends OrganizationSchedulerListOptions = SchedulerListOptions> {
|
|
120
|
+
#private;
|
|
121
|
+
constructor(http: HttpClient);
|
|
122
|
+
create(input: CreateSchedulerInput): Promise<SchedulerResponse>;
|
|
123
|
+
get(schedulerId: string, options?: RequestOptions): Promise<SchedulerResponse>;
|
|
124
|
+
update(schedulerId: string, input: UpdateSchedulerInput, options: SchedulerMutationOptions): Promise<SchedulerResponse>;
|
|
125
|
+
delete(schedulerId: string, options: SchedulerMutationOptions): Promise<void>;
|
|
126
|
+
list(options?: TListOptions): Promise<SchedulerPage>;
|
|
127
|
+
fires(schedulerId: string, options?: ListOptions): Promise<SchedulerFirePage>;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=schedulers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.d.ts","sourceRoot":"","sources":["../src/schedulers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { requestOptions, HttpClient, requireKnownKeys, paginationQuery, } from "./http.js";
|
|
2
|
+
import { OutcomeUnknownError, TiDBLinkError } from "./errors.js";
|
|
3
|
+
const requireMatch = (options) => {
|
|
4
|
+
requireKnownKeys(options, ["ifMatch", "signal", "requestId"], "Scheduler mutation options");
|
|
5
|
+
if (typeof options.ifMatch !== "string" || !options.ifMatch)
|
|
6
|
+
throw new TypeError("Scheduler mutation requires the previously read ifMatch ETag");
|
|
7
|
+
};
|
|
8
|
+
const path = (id) => `/api/v1/schedulers/${encodeURIComponent(id)}`;
|
|
9
|
+
const receipt = (result, mutation = true) => {
|
|
10
|
+
const scheduler = result.data?.scheduler;
|
|
11
|
+
if (!scheduler?.schedulerId ||
|
|
12
|
+
!result.etag ||
|
|
13
|
+
!Number.isSafeInteger(scheduler.revision)) {
|
|
14
|
+
const ErrorClass = mutation ? OutcomeUnknownError : TiDBLinkError;
|
|
15
|
+
throw new ErrorClass("Scheduler response omitted its identity or ETag; read the original Scheduler before changing it", { requestId: result.requestId });
|
|
16
|
+
}
|
|
17
|
+
return { scheduler, etag: result.etag };
|
|
18
|
+
};
|
|
19
|
+
export class UserSchedulers {
|
|
20
|
+
#http;
|
|
21
|
+
constructor(http) {
|
|
22
|
+
this.#http = http;
|
|
23
|
+
}
|
|
24
|
+
async create(input) {
|
|
25
|
+
requireKnownKeys(input, [
|
|
26
|
+
"idempotencyKey",
|
|
27
|
+
"title",
|
|
28
|
+
"prompt",
|
|
29
|
+
"schedule",
|
|
30
|
+
"agentId",
|
|
31
|
+
"delivery",
|
|
32
|
+
"validFrom",
|
|
33
|
+
"validUntil",
|
|
34
|
+
"requestId",
|
|
35
|
+
"signal",
|
|
36
|
+
], "Scheduler creation");
|
|
37
|
+
if (typeof input.idempotencyKey !== "string" ||
|
|
38
|
+
!/^[\x21-\x7e]{1,255}$/.test(input.idempotencyKey))
|
|
39
|
+
throw new TypeError("Scheduler creation requires a stable idempotencyKey (1-255 visible ASCII characters)");
|
|
40
|
+
const { idempotencyKey, requestId, signal, ...body } = input;
|
|
41
|
+
return receipt(await this.#http.postResponse("/api/v1/schedulers", body, {
|
|
42
|
+
idempotencyKey,
|
|
43
|
+
outcomeUnknown: true,
|
|
44
|
+
...(requestId ? { requestId } : {}),
|
|
45
|
+
...(signal ? { signal } : {}),
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
async get(schedulerId, options) {
|
|
49
|
+
options = requestOptions(options);
|
|
50
|
+
return receipt(await this.#http.getResponse(path(schedulerId), options), false);
|
|
51
|
+
}
|
|
52
|
+
async update(schedulerId, input, options) {
|
|
53
|
+
requireKnownKeys(input, [
|
|
54
|
+
"title",
|
|
55
|
+
"prompt",
|
|
56
|
+
"agentId",
|
|
57
|
+
"delivery",
|
|
58
|
+
"schedule",
|
|
59
|
+
"enabled",
|
|
60
|
+
"validFrom",
|
|
61
|
+
"validUntil",
|
|
62
|
+
"snoozeUntil",
|
|
63
|
+
], "Scheduler update");
|
|
64
|
+
requireMatch(options);
|
|
65
|
+
return receipt(await this.#http.patchResponse(path(schedulerId), input, {
|
|
66
|
+
...options,
|
|
67
|
+
outcomeUnknown: true,
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
async delete(schedulerId, options) {
|
|
71
|
+
requireMatch(options);
|
|
72
|
+
await this.#http.response(path(schedulerId), {
|
|
73
|
+
...options,
|
|
74
|
+
method: "DELETE",
|
|
75
|
+
outcomeUnknown: true,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
list(options) {
|
|
79
|
+
const input = options ?? {};
|
|
80
|
+
requireKnownKeys(input, ["status", "limit", "cursor", "signal", "requestId"], "Scheduler list options");
|
|
81
|
+
const { status, ...paging } = input;
|
|
82
|
+
const query = new URLSearchParams(paginationQuery(paging).slice(1));
|
|
83
|
+
if (status !== undefined)
|
|
84
|
+
query.set("status", status);
|
|
85
|
+
return this.#http.get(`/api/v1/schedulers${query.size ? `?${query}` : ""}`, options);
|
|
86
|
+
}
|
|
87
|
+
fires(schedulerId, options) {
|
|
88
|
+
return this.#http.get(`${path(schedulerId)}/fires${paginationQuery(options)}`, options);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=schedulers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.js","sourceRoot":"","sources":["../src/schedulers.ts"],"names":[],"mappings":"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"}
|