@tidblink/server 0.0.0-stage → 0.4.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.
Files changed (116) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1182 -2
  3. package/dist/audio.d.ts +72 -0
  4. package/dist/audio.d.ts.map +1 -0
  5. package/dist/audio.js +168 -0
  6. package/dist/audio.js.map +1 -0
  7. package/dist/backend-connection.d.ts +89 -0
  8. package/dist/backend-connection.d.ts.map +1 -0
  9. package/dist/backend-connection.js +300 -0
  10. package/dist/backend-connection.js.map +1 -0
  11. package/dist/backend-pool.d.ts +93 -0
  12. package/dist/backend-pool.d.ts.map +1 -0
  13. package/dist/backend-pool.js +419 -0
  14. package/dist/backend-pool.js.map +1 -0
  15. package/dist/client-tool-executor.d.ts +31 -0
  16. package/dist/client-tool-executor.d.ts.map +1 -0
  17. package/dist/client-tool-executor.js +190 -0
  18. package/dist/client-tool-executor.js.map +1 -0
  19. package/dist/client-tools.d.ts +21 -0
  20. package/dist/client-tools.d.ts.map +1 -0
  21. package/dist/client-tools.js +48 -0
  22. package/dist/client-tools.js.map +1 -0
  23. package/dist/connector-callback.d.ts +92 -0
  24. package/dist/connector-callback.d.ts.map +1 -0
  25. package/dist/connector-callback.js +155 -0
  26. package/dist/connector-callback.js.map +1 -0
  27. package/dist/connectors.d.ts +66 -0
  28. package/dist/connectors.d.ts.map +1 -0
  29. package/dist/connectors.js +71 -0
  30. package/dist/connectors.js.map +1 -0
  31. package/dist/control.d.ts +17 -0
  32. package/dist/control.d.ts.map +1 -0
  33. package/dist/control.js +52 -0
  34. package/dist/control.js.map +1 -0
  35. package/dist/errors.d.ts +103 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +115 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/events.d.ts +158 -0
  40. package/dist/events.d.ts.map +1 -0
  41. package/dist/events.js +110 -0
  42. package/dist/events.js.map +1 -0
  43. package/dist/files.d.ts +129 -0
  44. package/dist/files.d.ts.map +1 -0
  45. package/dist/files.js +388 -0
  46. package/dist/files.js.map +1 -0
  47. package/dist/history.d.ts +279 -0
  48. package/dist/history.d.ts.map +1 -0
  49. package/dist/history.js +91 -0
  50. package/dist/history.js.map +1 -0
  51. package/dist/http.d.ts +88 -0
  52. package/dist/http.d.ts.map +1 -0
  53. package/dist/http.js +302 -0
  54. package/dist/http.js.map +1 -0
  55. package/dist/index.d.ts +39 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +18 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/organization.d.ts +87 -0
  60. package/dist/organization.d.ts.map +1 -0
  61. package/dist/organization.js +112 -0
  62. package/dist/organization.js.map +1 -0
  63. package/dist/realtime.d.ts +90 -0
  64. package/dist/realtime.d.ts.map +1 -0
  65. package/dist/realtime.js +111 -0
  66. package/dist/realtime.js.map +1 -0
  67. package/dist/session-connection.d.ts +144 -0
  68. package/dist/session-connection.d.ts.map +1 -0
  69. package/dist/session-connection.js +334 -0
  70. package/dist/session-connection.js.map +1 -0
  71. package/dist/session-send.d.ts +49 -0
  72. package/dist/session-send.d.ts.map +1 -0
  73. package/dist/session-send.js +179 -0
  74. package/dist/session-send.js.map +1 -0
  75. package/dist/session.d.ts +165 -0
  76. package/dist/session.d.ts.map +1 -0
  77. package/dist/session.js +253 -0
  78. package/dist/session.js.map +1 -0
  79. package/dist/skills.d.ts +103 -0
  80. package/dist/skills.d.ts.map +1 -0
  81. package/dist/skills.js +98 -0
  82. package/dist/skills.js.map +1 -0
  83. package/dist/sse.d.ts +10 -0
  84. package/dist/sse.d.ts.map +1 -0
  85. package/dist/sse.js +50 -0
  86. package/dist/sse.js.map +1 -0
  87. package/dist/template-switch.d.ts +51 -0
  88. package/dist/template-switch.d.ts.map +1 -0
  89. package/dist/template-switch.js +81 -0
  90. package/dist/template-switch.js.map +1 -0
  91. package/dist/templates.d.ts +129 -0
  92. package/dist/templates.d.ts.map +1 -0
  93. package/dist/templates.js +92 -0
  94. package/dist/templates.js.map +1 -0
  95. package/dist/turn.d.ts +47 -0
  96. package/dist/turn.d.ts.map +1 -0
  97. package/dist/turn.js +210 -0
  98. package/dist/turn.js.map +1 -0
  99. package/dist/usage.d.ts +278 -0
  100. package/dist/usage.d.ts.map +1 -0
  101. package/dist/usage.js +22 -0
  102. package/dist/usage.js.map +1 -0
  103. package/dist/user.d.ts +55 -0
  104. package/dist/user.d.ts.map +1 -0
  105. package/dist/user.js +52 -0
  106. package/dist/user.js.map +1 -0
  107. package/examples/control-turn.mjs +53 -0
  108. package/examples/create-session.mjs +82 -0
  109. package/examples/http-connector.mjs +127 -0
  110. package/examples/lamp-backend.mjs +175 -0
  111. package/examples/prepare-realtime-connection.mjs +72 -0
  112. package/examples/read-usage.mjs +44 -0
  113. package/examples/send-message.mjs +48 -0
  114. package/examples/submit-audio.mjs +57 -0
  115. package/examples/upload-file.mjs +58 -0
  116. package/package.json +59 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/dist/sse.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Decode data frames only. A frame is complete only at its blank line.
3
+ * `onBytes` runs for every chunk read, including comment-only keep-alives.
4
+ */
5
+ export declare function decodeSse(body: ReadableStream<Uint8Array>, onBytes?: () => void): AsyncGenerator<{
6
+ id: string;
7
+ event: string;
8
+ data: string;
9
+ }>;
10
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAuB,SAAS,CAC9B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,cAAc,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAwCD"}
package/dist/sse.js ADDED
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Decode data frames only. A frame is complete only at its blank line.
3
+ * `onBytes` runs for every chunk read, including comment-only keep-alives.
4
+ */
5
+ export async function* decodeSse(body, onBytes) {
6
+ const reader = body.getReader();
7
+ const decoder = new TextDecoder("utf-8", { fatal: true });
8
+ let buffer = "";
9
+ let id = "";
10
+ let event = "";
11
+ let data = [];
12
+ try {
13
+ while (true) {
14
+ const chunk = await reader.read();
15
+ if (!chunk.done)
16
+ onBytes?.();
17
+ buffer += decoder.decode(chunk.value, { stream: !chunk.done });
18
+ let end;
19
+ while ((end = buffer.search(/[\r\n]/)) !== -1) {
20
+ if (buffer[end] === "\r" && end === buffer.length - 1 && !chunk.done)
21
+ break;
22
+ const line = buffer.slice(0, end);
23
+ buffer = buffer.slice(end + (buffer.slice(end, end + 2) === "\r\n" ? 2 : 1));
24
+ if (line === "") {
25
+ if (data.length)
26
+ yield { id, event, data: data.join("\n") };
27
+ event = "";
28
+ data = [];
29
+ continue;
30
+ }
31
+ const separator = line.indexOf(":");
32
+ const field = separator === -1 ? line : line.slice(0, separator);
33
+ const value = separator === -1 ? "" : line.slice(separator + 1).replace(/^ /, "");
34
+ if (field === "data")
35
+ data.push(value);
36
+ else if (field === "event")
37
+ event = value;
38
+ else if (field === "id" && !value.includes("\0"))
39
+ id = value;
40
+ }
41
+ if (chunk.done)
42
+ return;
43
+ }
44
+ }
45
+ finally {
46
+ await reader.cancel().catch(() => undefined);
47
+ reader.releaseLock();
48
+ }
49
+ }
50
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { HttpClient } from "./http.js";
2
+ import type { RequestOptions } from "./organization.js";
3
+ export interface SwitchTemplateInput extends RequestOptions {
4
+ /** The active Template the Session moves to. */
5
+ templateId: string;
6
+ /** Keep the same key and input to recover a lost response. */
7
+ idempotencyKey: string;
8
+ /** Required as `true` when the target Template enables cross-Session Recall. */
9
+ acknowledgeSessionRecall?: boolean;
10
+ }
11
+ declare const STATUSES: readonly ["pending", "succeeded", "failed", "unchanged"];
12
+ /**
13
+ * `pending`: a Handoff Turn runs under the target Template; `succeeded`: the
14
+ * Session is on the target; `failed`: it stays on its previous Template;
15
+ * `unchanged`: the target matched the current configuration.
16
+ */
17
+ export type TemplateSwitchStatus = (typeof STATUSES)[number];
18
+ interface TemplateSwitchReceiptBase {
19
+ commandId: string;
20
+ sessionId: string;
21
+ /** The target Template. */
22
+ agentTemplateId: string;
23
+ /** The epoch the switch started from; after `succeeded`, the new current epoch. */
24
+ configurationEpoch: number;
25
+ createdAt: string;
26
+ completedAt?: string;
27
+ }
28
+ export type TemplateSwitchReceipt = (TemplateSwitchReceiptBase & {
29
+ status: "pending";
30
+ /** The running Handoff Turn, a `kind: "template_handoff"` Turn. */
31
+ handoffTurnId: string;
32
+ error?: never;
33
+ }) | (TemplateSwitchReceiptBase & {
34
+ status: "succeeded";
35
+ /** Absent when the Session had no history and no Handoff ran. */
36
+ handoffTurnId?: string;
37
+ error?: never;
38
+ }) | (TemplateSwitchReceiptBase & {
39
+ status: "failed";
40
+ handoffTurnId?: string;
41
+ error: {
42
+ code: "session_switch_conflict" | "agent_template_unavailable" | "session_switch_unsupported";
43
+ };
44
+ }) | (TemplateSwitchReceiptBase & {
45
+ status: "unchanged";
46
+ handoffTurnId?: never;
47
+ error?: never;
48
+ });
49
+ export declare function switchTemplate(http: HttpClient, sessionId: string, input: SwitchTemplateInput): Promise<TemplateSwitchReceipt>;
50
+ export {};
51
+ //# sourceMappingURL=template-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-switch.d.ts","sourceRoot":"","sources":["../src/template-switch.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAIX,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,QAAA,MAAM,QAAQ,0DAA2D,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,UAAU,yBAAyB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAC7B,CAAC,yBAAyB,GAAG;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC,GACF,CAAC,yBAAyB,GAAG;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC,GACF,CAAC,yBAAyB,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QACL,IAAI,EACA,yBAAyB,GACzB,4BAA4B,GAC5B,4BAA4B,CAAC;KAClC,CAAC;CACH,CAAC,GACF,CAAC,yBAAyB,GAAG;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC,CAAC;AAyCP,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAqEhC"}
@@ -0,0 +1,81 @@
1
+ import { OutcomeUnknownError, TiDBLinkApiError } from "./errors.js";
2
+ import { HttpClient, requireCreationKey, requireKnownKeys, requireTemplateId, } from "./http.js";
3
+ const STATUSES = ["pending", "succeeded", "failed", "unchanged"];
4
+ /** 503 codes the service returns before it records the switch. */
5
+ const REFUSED_BEFORE_RECORDING = new Set([
6
+ "turn_admission_closed",
7
+ "skill_package_store_unavailable",
8
+ ]);
9
+ const isText = (value) => typeof value === "string" && value.length > 0;
10
+ const isReceipt = (value, sessionId, templateId) => {
11
+ if (typeof value !== "object" || value === null)
12
+ return false;
13
+ const receipt = value;
14
+ if (!isText(receipt.commandId) ||
15
+ receipt.sessionId !== sessionId ||
16
+ receipt.agentTemplateId !== templateId ||
17
+ typeof receipt.createdAt !== "string" ||
18
+ !Number.isInteger(receipt.configurationEpoch) ||
19
+ receipt.configurationEpoch < 1 ||
20
+ !STATUSES.includes(receipt.status))
21
+ return false;
22
+ if (receipt.status === "pending")
23
+ return isText(receipt.handoffTurnId);
24
+ if (receipt.status === "failed") {
25
+ const error = receipt.error;
26
+ return typeof error === "object" && error !== null && isText(error.code);
27
+ }
28
+ if (receipt.status === "unchanged")
29
+ return receipt.handoffTurnId === undefined;
30
+ return true;
31
+ };
32
+ const RECOVER = "repeat it with the same idempotencyKey and input to recover its receipt";
33
+ export async function switchTemplate(http, sessionId, input) {
34
+ requireKnownKeys(input, [
35
+ "templateId",
36
+ "idempotencyKey",
37
+ "acknowledgeSessionRecall",
38
+ "signal",
39
+ "requestId",
40
+ ], "Template switch input");
41
+ requireTemplateId(input.templateId, "Template switch");
42
+ requireCreationKey(input.idempotencyKey, "Template switch");
43
+ const { templateId, idempotencyKey, acknowledgeSessionRecall, signal, requestId, } = input;
44
+ if (acknowledgeSessionRecall !== undefined &&
45
+ typeof acknowledgeSessionRecall !== "boolean")
46
+ throw new TypeError("acknowledgeSessionRecall must be a boolean");
47
+ let result;
48
+ try {
49
+ result = await http.postResponse(`/sessions/${encodeURIComponent(sessionId)}/template-switches`, {
50
+ agentTemplateId: templateId,
51
+ ...(acknowledgeSessionRecall === undefined
52
+ ? {}
53
+ : { acknowledgeSessionRecall }),
54
+ }, {
55
+ idempotencyKey,
56
+ idempotent: true,
57
+ outcomeUnknown: true,
58
+ ...(signal ? { signal } : {}),
59
+ ...(requestId ? { requestId } : {}),
60
+ });
61
+ }
62
+ catch (error) {
63
+ if (!(error instanceof OutcomeUnknownError))
64
+ throw error;
65
+ const cause = error.cause;
66
+ if (cause instanceof TiDBLinkApiError &&
67
+ cause.status === 503 &&
68
+ REFUSED_BEFORE_RECORDING.has(cause.code))
69
+ throw cause;
70
+ throw new OutcomeUnknownError(`Template switch outcome is unknown; ${RECOVER}`, {
71
+ sessionId,
72
+ ...(error.requestId ? { requestId: error.requestId } : {}),
73
+ cause: error,
74
+ });
75
+ }
76
+ const receipt = result.data?.receipt;
77
+ if (!isReceipt(receipt, sessionId, templateId))
78
+ throw new OutcomeUnknownError(`Template switch returned no usable receipt; ${RECOVER}`, { requestId: result.requestId, sessionId });
79
+ return receipt;
80
+ }
81
+ //# sourceMappingURL=template-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-switch.js","sourceRoot":"","sources":["../src/template-switch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { HttpClient } from "./http.js";
2
+ import type { RequestOptions } from "./organization.js";
3
+ export type TemplateRealtimeLanguage = "zh-CN" | "en-US";
4
+ /**
5
+ * The definition of an Agent Template. Fields the SDK does not model are
6
+ * returned and accepted unchanged.
7
+ */
8
+ export interface TemplateContent {
9
+ schemaVersion?: "agent-template-content@7";
10
+ identity: {
11
+ agentName: string;
12
+ description?: string;
13
+ };
14
+ instructions?: string;
15
+ /** A Sandbox profile from `templates.catalog()`. */
16
+ sandbox: {
17
+ profileId: string;
18
+ };
19
+ /** The language of voice conversations on Sessions created from it. */
20
+ realtime: {
21
+ language: TemplateRealtimeLanguage;
22
+ };
23
+ /** Published Skill versions from `skills` or `templates.catalog()`. */
24
+ skills?: {
25
+ skillId: string;
26
+ version: number;
27
+ }[];
28
+ capabilities?: {
29
+ sessionRecall?: {
30
+ enabled?: boolean;
31
+ };
32
+ };
33
+ /**
34
+ * Organization MCP Servers and Connectors the Template uses, by `serverId`.
35
+ * On replace, omitting `tools` keeps the current references.
36
+ */
37
+ tools?: {
38
+ mcp: {
39
+ serverId: string;
40
+ }[];
41
+ };
42
+ /** A task the voice model keeps working on across a Realtime connection. */
43
+ standingTask?: {
44
+ goal: string;
45
+ };
46
+ [field: string]: unknown;
47
+ }
48
+ export interface TemplateSummary {
49
+ id: string;
50
+ organizationId: string;
51
+ name: string;
52
+ displayName: string;
53
+ sandboxProfile: string;
54
+ lifecycleStatus: "active" | "archived";
55
+ /** Pass this exact value as `ifMatch` to replace or archive the Template. */
56
+ etag: string;
57
+ contentDigest: string | null;
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ }
61
+ export interface Template {
62
+ template: TemplateSummary;
63
+ content: TemplateContent;
64
+ }
65
+ export interface TemplatePage {
66
+ data: TemplateSummary[];
67
+ hasMore: boolean;
68
+ nextCursor: string | null;
69
+ readAt: string;
70
+ }
71
+ export interface TemplateListOptions extends RequestOptions {
72
+ sort?: "updated_desc" | "created_desc" | "name_asc";
73
+ /** Defaults to the service's choice when omitted. */
74
+ lifecycleStatus?: "all" | "active" | "archived";
75
+ /** Text search over Template names. */
76
+ q?: string;
77
+ limit?: number;
78
+ cursor?: string;
79
+ }
80
+ /** What a Template may reference in this Organization. */
81
+ export interface TemplateCatalog {
82
+ models: {
83
+ id: string;
84
+ available: boolean;
85
+ }[];
86
+ sandboxes: {
87
+ id: string;
88
+ label: string;
89
+ capabilities: string[];
90
+ }[];
91
+ skills: {
92
+ skillId: string;
93
+ name: string;
94
+ description: string;
95
+ version: number;
96
+ available: boolean;
97
+ }[];
98
+ }
99
+ export interface TemplateInput {
100
+ displayName: string;
101
+ content: TemplateContent;
102
+ }
103
+ export interface CreateTemplateInput extends TemplateInput, RequestOptions {
104
+ /** Keep the same key and input when recovering an uncertain creation. */
105
+ idempotencyKey: string;
106
+ }
107
+ export interface TemplateMutationOptions extends RequestOptions {
108
+ /** The `etag` of the Template version you read. A stale value is refused with ConflictError. */
109
+ ifMatch: string;
110
+ /** Keep the same key and input when recovering an uncertain change. */
111
+ idempotencyKey: string;
112
+ }
113
+ /** Organization Agent Templates: what Sessions are created from. */
114
+ export declare class Templates {
115
+ #private;
116
+ constructor(http: HttpClient);
117
+ list(options?: TemplateListOptions): Promise<TemplatePage>;
118
+ get(templateId: string, options?: RequestOptions): Promise<Template>;
119
+ /** Models, Sandbox profiles and published Skills a Template may use. */
120
+ catalog(options?: RequestOptions & {
121
+ limit?: number;
122
+ }): Promise<TemplateCatalog>;
123
+ create(input: CreateTemplateInput): Promise<Template>;
124
+ /** Replace the whole definition. Sessions already created keep their snapshot. */
125
+ replace(templateId: string, input: TemplateInput, options: TemplateMutationOptions): Promise<Template>;
126
+ /** Archive the Template; it can no longer be used to create Sessions. */
127
+ archive(templateId: string, options: TemplateMutationOptions): Promise<Template>;
128
+ }
129
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { OutcomeUnknownError } from "./errors.js";
2
+ import { HttpClient, requireCreationKey, requireKnownKeys, requestOptions, } from "./http.js";
3
+ const templatePath = (id) => `/agent-templates/${encodeURIComponent(id)}`;
4
+ const templateReceipt = (result) => {
5
+ if (typeof result.data?.template?.id !== "string" ||
6
+ !result.data.template.id ||
7
+ typeof result.data.content !== "object" ||
8
+ result.data.content === null)
9
+ throw new OutcomeUnknownError("Template mutation returned no usable Template; repeat it with the same idempotency key", { requestId: result.requestId });
10
+ return result.data;
11
+ };
12
+ const requireTemplateInput = (input, label) => {
13
+ if (typeof input.displayName !== "string" || !input.displayName.trim())
14
+ throw new TypeError(`${label} requires a displayName`);
15
+ if (typeof input.content !== "object" ||
16
+ input.content === null ||
17
+ Array.isArray(input.content))
18
+ throw new TypeError(`${label} requires content`);
19
+ };
20
+ const requireMutationOptions = (options, label) => {
21
+ requireKnownKeys(options, ["ifMatch", "idempotencyKey", "signal", "requestId"], `${label} options`);
22
+ if (typeof options.ifMatch !== "string" || !options.ifMatch)
23
+ throw new TypeError(`${label} requires ifMatch`);
24
+ requireCreationKey(options.idempotencyKey);
25
+ };
26
+ /** Organization Agent Templates: what Sessions are created from. */
27
+ export class Templates {
28
+ #http;
29
+ constructor(http) {
30
+ this.#http = http;
31
+ }
32
+ async list(options = {}) {
33
+ requireKnownKeys(options, ["sort", "lifecycleStatus", "q", "limit", "cursor", "signal", "requestId"], "Template list options");
34
+ const { signal, requestId, ...filters } = options;
35
+ const query = new URLSearchParams();
36
+ for (const [key, value] of Object.entries(filters))
37
+ if (value !== undefined)
38
+ query.set(key, String(value));
39
+ return this.#http.get(`/agent-templates${query.size ? `?${query}` : ""}`, { ...(signal ? { signal } : {}), ...(requestId ? { requestId } : {}) });
40
+ }
41
+ get(templateId, options) {
42
+ return this.#http.get(templatePath(templateId), requestOptions(options));
43
+ }
44
+ /** Models, Sandbox profiles and published Skills a Template may use. */
45
+ catalog(options) {
46
+ requireKnownKeys(options ?? {}, ["limit", "signal", "requestId"], "Template catalog options");
47
+ const { limit, ...request } = options ?? {};
48
+ return this.#http.get(`/agent-template-reference-catalog${limit === undefined ? "" : `?limit=${limit}`}`, request);
49
+ }
50
+ async create(input) {
51
+ requireKnownKeys(input, ["displayName", "content", "idempotencyKey", "signal", "requestId"], "Template creation");
52
+ requireTemplateInput(input, "Template creation");
53
+ requireCreationKey(input.idempotencyKey);
54
+ const { idempotencyKey, signal, requestId, ...body } = input;
55
+ return templateReceipt(await this.#http.postResponse("/agent-templates", body, {
56
+ idempotencyKey,
57
+ idempotent: true,
58
+ outcomeUnknown: true,
59
+ ...(signal ? { signal } : {}),
60
+ ...(requestId ? { requestId } : {}),
61
+ }));
62
+ }
63
+ /** Replace the whole definition. Sessions already created keep their snapshot. */
64
+ async replace(templateId, input, options) {
65
+ requireKnownKeys(input, ["displayName", "content"], "Template replacement");
66
+ requireTemplateInput(input, "Template replacement");
67
+ requireMutationOptions(options, "Template replacement");
68
+ const { ifMatch, idempotencyKey, ...request } = options;
69
+ return templateReceipt(await this.#http.response(templatePath(templateId), {
70
+ method: "PUT",
71
+ body: input,
72
+ ifMatch,
73
+ idempotencyKey,
74
+ retry: "safe",
75
+ outcomeUnknown: true,
76
+ ...request,
77
+ }));
78
+ }
79
+ /** Archive the Template; it can no longer be used to create Sessions. */
80
+ async archive(templateId, options) {
81
+ requireMutationOptions(options, "Template archive");
82
+ const { ifMatch, idempotencyKey, ...request } = options;
83
+ return templateReceipt(await this.#http.postResponse(`${templatePath(templateId)}/archive`, {}, {
84
+ ifMatch,
85
+ idempotencyKey,
86
+ idempotent: true,
87
+ outcomeUnknown: true,
88
+ ...request,
89
+ }));
90
+ }
91
+ }
92
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
package/dist/turn.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ import { HttpClient } from "./http.js";
2
+ import { type SessionInteraction } from "./history.js";
3
+ import type { BillingTag, ClarificationItem } from "./session.js";
4
+ export interface CreateTurnInput {
5
+ /** Persist this Session-local command identity before dispatch. */
6
+ clientEventId: string;
7
+ text: string | [string, ...string[]];
8
+ userFileIds?: string[];
9
+ clarificationSourceTurnId?: string;
10
+ billingTag?: BillingTag | null;
11
+ requestId?: string;
12
+ signal?: AbortSignal;
13
+ }
14
+ export interface WaitForResultOptions {
15
+ /** Local deadline only; default 60 seconds. Never cancels execution. */
16
+ timeoutMs?: number;
17
+ pollIntervalMs?: number;
18
+ requestId?: string;
19
+ signal?: AbortSignal;
20
+ }
21
+ type ResultIdentity = {
22
+ sessionId: string;
23
+ inputId: string;
24
+ turnId: string;
25
+ messageId: string;
26
+ text: string;
27
+ interaction: SessionInteraction;
28
+ };
29
+ export type TurnResult = ResultIdentity & ({
30
+ type: "answer";
31
+ } | {
32
+ type: "clarification";
33
+ clarification: ClarificationItem;
34
+ });
35
+ export declare const validClarification: (value: unknown) => value is ClarificationItem;
36
+ /** The message command's data the REST route and `session.send` share. */
37
+ export type MessageData = Omit<CreateTurnInput, "clientEventId" | "requestId" | "signal">;
38
+ /** Check message data before dispatch. */
39
+ export declare function validateMessageData(data: MessageData): void;
40
+ export declare const submitMessage: (http: HttpClient, sessionId: string, input: CreateTurnInput) => Promise<SessionInteraction>;
41
+ export declare const validateWaitOptions: (options?: WaitForResultOptions) => {
42
+ timeoutMs: number;
43
+ pollIntervalMs: number;
44
+ };
45
+ export declare const waitForResult: (http: HttpClient, sessionId: string, inputId: string, options?: WaitForResultOptions) => Promise<TurnResult>;
46
+ export {};
47
+ //# sourceMappingURL=turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../src/turn.ts"],"names":[],"mappings":"AASA,OAAO,EACL,UAAU,EAIX,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,KAAK,cAAc,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,kBAAkB,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,CACI;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,iBAAiB,CAAA;CAAE,CAC9D,CAAC;AAEJ,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iBAkC5D,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;AAE1F,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA2B3D;AAED,eAAO,MAAM,aAAa,GACxB,MAAM,UAAU,EAChB,WAAW,MAAM,EACjB,OAAO,eAAe,KACrB,OAAO,CAAC,kBAAkB,CA0D5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,UAAS,oBAAyB,KACjC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAyB7C,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,UAAU,EAChB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,UAAS,oBAAyB,KACjC,OAAO,CAAC,UAAU,CAwHpB,CAAC"}