@aui.io/aui-client 3.1.2 → 3.2.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 (197) hide show
  1. package/README.md +196 -69
  2. package/dist/cjs/ApolloClientWrapper.d.ts +52 -24
  3. package/dist/cjs/ApolloClientWrapper.js +86 -58
  4. package/dist/cjs/BaseClient.d.ts +5 -0
  5. package/dist/cjs/Client.d.ts +4 -1
  6. package/dist/cjs/Client.js +24 -9
  7. package/dist/cjs/api/resources/agentVersions/client/Client.d.ts +26 -2
  8. package/dist/cjs/api/resources/agentVersions/client/Client.js +96 -43
  9. package/dist/cjs/api/resources/agentVersions/client/requests/AgentVersionPushRequest.d.ts +1 -1
  10. package/dist/cjs/api/resources/agents/client/Client.d.ts +22 -7
  11. package/dist/cjs/api/resources/agents/client/Client.js +80 -39
  12. package/dist/cjs/api/resources/agents/client/requests/{ExternalAgentCreateRequest.d.ts → AgentCreateRequest.d.ts} +1 -1
  13. package/dist/{esm/api/resources/agents/client/requests/ExternalAgentUpdateRequest.d.mts → cjs/api/resources/agents/client/requests/AgentUpdateRequest.d.ts} +1 -1
  14. package/dist/cjs/api/resources/agents/client/requests/ListAgentsRequest.d.ts +1 -1
  15. package/dist/cjs/api/resources/agents/client/requests/index.d.ts +2 -2
  16. package/dist/cjs/api/resources/auth/client/Client.d.ts +3 -2
  17. package/dist/cjs/api/resources/auth/client/Client.js +20 -8
  18. package/dist/cjs/api/resources/channels/client/Client.d.ts +7 -6
  19. package/dist/cjs/api/resources/channels/client/Client.js +24 -12
  20. package/dist/cjs/api/resources/channels/client/requests/InitiateThreadRequest.d.ts +3 -10
  21. package/dist/cjs/api/resources/messaging/client/Client.d.ts +51 -14
  22. package/dist/cjs/api/resources/messaging/client/Client.js +249 -50
  23. package/dist/cjs/api/resources/messaging/client/requests/GenerateFollowupSuggestionsRequest.d.ts +9 -0
  24. package/dist/cjs/api/resources/messaging/client/requests/RerunMessageRequest.d.ts +2 -2
  25. package/dist/cjs/api/resources/messaging/client/requests/StreamMessageRequest.d.ts +0 -1
  26. package/dist/cjs/api/resources/messaging/client/requests/index.d.ts +1 -0
  27. package/dist/cjs/api/resources/projects/client/Client.d.ts +14 -2
  28. package/dist/cjs/api/resources/projects/client/Client.js +66 -31
  29. package/dist/cjs/api/resources/session/client/Client.d.ts +2 -1
  30. package/dist/cjs/api/resources/session/client/Client.js +12 -2
  31. package/dist/cjs/api/resources/threads/client/Client.d.ts +37 -2
  32. package/dist/cjs/api/resources/threads/client/Client.js +155 -31
  33. package/dist/cjs/api/resources/threads/client/requests/UpdateThreadRequest.d.ts +8 -0
  34. package/dist/cjs/api/resources/threads/client/requests/index.d.ts +1 -0
  35. package/dist/cjs/api/types/{ExternalAgent.d.ts → Agent.d.ts} +1 -1
  36. package/dist/cjs/api/types/{ExternalAgentCreateResponse.d.ts → AgentCreateResponse.d.ts} +1 -1
  37. package/dist/cjs/api/types/{ExternalAgentListFilters.d.ts → AgentListFilters.d.ts} +1 -1
  38. package/dist/{esm/api/types/ExternalAgentUpdateResponse.d.mts → cjs/api/types/AgentUpdateResponse.d.ts} +1 -1
  39. package/dist/cjs/api/types/AgentVariables.d.ts +12 -0
  40. package/dist/cjs/api/types/AgentVersionPullResponse.d.ts +2 -3
  41. package/dist/cjs/api/types/AgentVersionPushResponse.d.ts +1 -1
  42. package/dist/cjs/api/types/AgentVersionWelcomeMessageResponse.d.ts +6 -0
  43. package/dist/cjs/api/types/GenerateFollowupSuggestionsResponse.d.ts +4 -0
  44. package/dist/cjs/api/types/PageAgent.d.ts +6 -0
  45. package/dist/cjs/api/types/PageAgentVersion.d.ts +6 -0
  46. package/dist/cjs/api/types/PageAgentVersion.js +3 -0
  47. package/dist/cjs/api/types/{ExternalPageLinks.d.ts → PageLinks.d.ts} +1 -1
  48. package/dist/cjs/api/types/PageLinks.js +3 -0
  49. package/dist/cjs/api/types/{ExternalPageMeta.d.ts → PageMeta.d.ts} +1 -1
  50. package/dist/cjs/api/types/PageMeta.js +3 -0
  51. package/dist/cjs/api/types/PageProject.d.ts +6 -0
  52. package/dist/cjs/api/types/PageProject.js +3 -0
  53. package/dist/cjs/api/types/PageThreadListItem.d.ts +6 -0
  54. package/dist/cjs/api/types/PageThreadListItem.js +3 -0
  55. package/dist/cjs/api/types/Project.d.ts +1 -1
  56. package/dist/cjs/api/types/SendMessageRequest.d.ts +7 -5
  57. package/dist/cjs/api/types/ThreadListFilters.d.ts +2 -5
  58. package/dist/cjs/api/types/TokenResponse.d.ts +4 -8
  59. package/dist/cjs/api/types/TraceDecision.d.ts +1 -2
  60. package/dist/cjs/api/types/VersionStats.d.ts +1 -2
  61. package/dist/cjs/api/types/index.d.ts +13 -10
  62. package/dist/cjs/api/types/index.js +13 -10
  63. package/dist/cjs/core/auth/AuthProvider.d.ts +4 -0
  64. package/dist/cjs/core/auth/AuthProvider.js +2 -0
  65. package/dist/cjs/core/auth/AuthRequest.d.ts +9 -0
  66. package/dist/cjs/core/auth/AuthRequest.js +2 -0
  67. package/dist/cjs/core/auth/BasicAuth.d.ts +8 -0
  68. package/dist/cjs/core/auth/BasicAuth.js +27 -0
  69. package/dist/cjs/core/auth/BearerToken.d.ts +5 -0
  70. package/dist/cjs/core/auth/BearerToken.js +15 -0
  71. package/dist/cjs/core/auth/index.d.ts +4 -0
  72. package/dist/cjs/core/auth/index.js +7 -0
  73. package/dist/cjs/core/base64.d.ts +2 -0
  74. package/dist/cjs/core/base64.js +26 -0
  75. package/dist/cjs/core/index.d.ts +2 -0
  76. package/dist/cjs/core/index.js +2 -0
  77. package/dist/cjs/environments.d.ts +2 -2
  78. package/dist/cjs/environments.js +2 -2
  79. package/dist/cjs/index.d.ts +1 -1
  80. package/dist/cjs/index.js +3 -2
  81. package/dist/cjs/version.d.ts +1 -1
  82. package/dist/cjs/version.js +1 -1
  83. package/dist/esm/ApolloClientWrapper.d.mts +52 -24
  84. package/dist/esm/ApolloClientWrapper.mjs +83 -56
  85. package/dist/esm/BaseClient.d.mts +5 -0
  86. package/dist/esm/Client.d.mts +4 -1
  87. package/dist/esm/Client.mjs +25 -10
  88. package/dist/esm/api/resources/agentVersions/client/Client.d.mts +26 -2
  89. package/dist/esm/api/resources/agentVersions/client/Client.mjs +97 -44
  90. package/dist/esm/api/resources/agentVersions/client/requests/AgentVersionPushRequest.d.mts +1 -1
  91. package/dist/esm/api/resources/agents/client/Client.d.mts +22 -7
  92. package/dist/esm/api/resources/agents/client/Client.mjs +81 -40
  93. package/dist/esm/api/resources/agents/client/requests/{ExternalAgentCreateRequest.d.mts → AgentCreateRequest.d.mts} +1 -1
  94. package/dist/{cjs/api/resources/agents/client/requests/ExternalAgentUpdateRequest.d.ts → esm/api/resources/agents/client/requests/AgentUpdateRequest.d.mts} +1 -1
  95. package/dist/esm/api/resources/agents/client/requests/ListAgentsRequest.d.mts +1 -1
  96. package/dist/esm/api/resources/agents/client/requests/index.d.mts +2 -2
  97. package/dist/esm/api/resources/auth/client/Client.d.mts +3 -2
  98. package/dist/esm/api/resources/auth/client/Client.mjs +21 -9
  99. package/dist/esm/api/resources/channels/client/Client.d.mts +7 -6
  100. package/dist/esm/api/resources/channels/client/Client.mjs +25 -13
  101. package/dist/esm/api/resources/channels/client/requests/InitiateThreadRequest.d.mts +3 -10
  102. package/dist/esm/api/resources/messaging/client/Client.d.mts +51 -14
  103. package/dist/esm/api/resources/messaging/client/Client.mjs +249 -50
  104. package/dist/esm/api/resources/messaging/client/requests/GenerateFollowupSuggestionsRequest.d.mts +9 -0
  105. package/dist/esm/api/resources/messaging/client/requests/RerunMessageRequest.d.mts +2 -2
  106. package/dist/esm/api/resources/messaging/client/requests/StreamMessageRequest.d.mts +0 -1
  107. package/dist/esm/api/resources/messaging/client/requests/index.d.mts +1 -0
  108. package/dist/esm/api/resources/projects/client/Client.d.mts +14 -2
  109. package/dist/esm/api/resources/projects/client/Client.mjs +67 -32
  110. package/dist/esm/api/resources/session/client/Client.d.mts +2 -1
  111. package/dist/esm/api/resources/session/client/Client.mjs +12 -2
  112. package/dist/esm/api/resources/threads/client/Client.d.mts +37 -2
  113. package/dist/esm/api/resources/threads/client/Client.mjs +156 -32
  114. package/dist/esm/api/resources/threads/client/requests/UpdateThreadRequest.d.mts +8 -0
  115. package/dist/esm/api/resources/threads/client/requests/index.d.mts +1 -0
  116. package/dist/esm/api/types/{ExternalAgent.d.mts → Agent.d.mts} +1 -1
  117. package/dist/esm/api/types/{ExternalAgentCreateResponse.d.mts → AgentCreateResponse.d.mts} +1 -1
  118. package/dist/esm/api/types/{ExternalAgentListFilters.d.mts → AgentListFilters.d.mts} +1 -1
  119. package/dist/{cjs/api/types/ExternalAgentUpdateResponse.d.ts → esm/api/types/AgentUpdateResponse.d.mts} +1 -1
  120. package/dist/esm/api/types/AgentVariables.d.mts +12 -0
  121. package/dist/esm/api/types/AgentVersionPullResponse.d.mts +2 -3
  122. package/dist/esm/api/types/AgentVersionPushResponse.d.mts +1 -1
  123. package/dist/esm/api/types/AgentVersionWelcomeMessageResponse.d.mts +6 -0
  124. package/dist/esm/api/types/GenerateFollowupSuggestionsResponse.d.mts +4 -0
  125. package/dist/esm/api/types/PageAgent.d.mts +6 -0
  126. package/dist/esm/api/types/PageAgentVersion.d.mts +6 -0
  127. package/dist/esm/api/types/PageAgentVersion.mjs +2 -0
  128. package/dist/esm/api/types/{ExternalPageLinks.d.mts → PageLinks.d.mts} +1 -1
  129. package/dist/esm/api/types/PageLinks.mjs +2 -0
  130. package/dist/esm/api/types/{ExternalPageMeta.d.mts → PageMeta.d.mts} +1 -1
  131. package/dist/esm/api/types/PageMeta.mjs +2 -0
  132. package/dist/esm/api/types/PageProject.d.mts +6 -0
  133. package/dist/esm/api/types/PageProject.mjs +2 -0
  134. package/dist/esm/api/types/PageThreadListItem.d.mts +6 -0
  135. package/dist/esm/api/types/PageThreadListItem.mjs +2 -0
  136. package/dist/esm/api/types/Project.d.mts +1 -1
  137. package/dist/esm/api/types/SendMessageRequest.d.mts +7 -5
  138. package/dist/esm/api/types/ThreadListFilters.d.mts +2 -5
  139. package/dist/esm/api/types/TokenResponse.d.mts +4 -8
  140. package/dist/esm/api/types/TraceDecision.d.mts +1 -2
  141. package/dist/esm/api/types/VersionStats.d.mts +1 -2
  142. package/dist/esm/api/types/index.d.mts +13 -10
  143. package/dist/esm/api/types/index.mjs +13 -10
  144. package/dist/esm/core/auth/AuthProvider.d.mts +4 -0
  145. package/dist/esm/core/auth/AuthProvider.mjs +1 -0
  146. package/dist/esm/core/auth/AuthRequest.d.mts +9 -0
  147. package/dist/esm/core/auth/AuthRequest.mjs +1 -0
  148. package/dist/esm/core/auth/BasicAuth.d.mts +8 -0
  149. package/dist/esm/core/auth/BasicAuth.mjs +24 -0
  150. package/dist/esm/core/auth/BearerToken.d.mts +5 -0
  151. package/dist/esm/core/auth/BearerToken.mjs +12 -0
  152. package/dist/esm/core/auth/index.d.mts +4 -0
  153. package/dist/esm/core/auth/index.mjs +2 -0
  154. package/dist/esm/core/base64.d.mts +2 -0
  155. package/dist/esm/core/base64.mjs +22 -0
  156. package/dist/esm/core/index.d.mts +2 -0
  157. package/dist/esm/core/index.mjs +2 -0
  158. package/dist/esm/environments.d.mts +2 -2
  159. package/dist/esm/environments.mjs +2 -2
  160. package/dist/esm/index.d.mts +1 -1
  161. package/dist/esm/index.mjs +1 -1
  162. package/dist/esm/version.d.mts +1 -1
  163. package/dist/esm/version.mjs +1 -1
  164. package/package.json +1 -1
  165. package/reference.md +568 -29
  166. package/dist/cjs/api/types/ExternalPageAgentVersion.d.ts +0 -6
  167. package/dist/cjs/api/types/ExternalPageExternalAgent.d.ts +0 -6
  168. package/dist/cjs/api/types/ExternalPageProject.d.ts +0 -6
  169. package/dist/cjs/api/types/ExternalPageThreadListItem.d.ts +0 -6
  170. package/dist/esm/api/types/ExternalPageAgentVersion.d.mts +0 -6
  171. package/dist/esm/api/types/ExternalPageExternalAgent.d.mts +0 -6
  172. package/dist/esm/api/types/ExternalPageProject.d.mts +0 -6
  173. package/dist/esm/api/types/ExternalPageThreadListItem.d.mts +0 -6
  174. /package/dist/cjs/api/resources/agents/client/requests/{ExternalAgentCreateRequest.js → AgentCreateRequest.js} +0 -0
  175. /package/dist/cjs/api/resources/agents/client/requests/{ExternalAgentUpdateRequest.js → AgentUpdateRequest.js} +0 -0
  176. /package/dist/cjs/api/{types/ExternalAgent.js → resources/messaging/client/requests/GenerateFollowupSuggestionsRequest.js} +0 -0
  177. /package/dist/cjs/api/{types/ExternalAgentCreateResponse.js → resources/threads/client/requests/UpdateThreadRequest.js} +0 -0
  178. /package/dist/cjs/api/types/{ExternalAgentListFilters.js → Agent.js} +0 -0
  179. /package/dist/cjs/api/types/{ExternalAgentUpdateResponse.js → AgentCreateResponse.js} +0 -0
  180. /package/dist/cjs/api/types/{ExternalPageAgentVersion.js → AgentListFilters.js} +0 -0
  181. /package/dist/cjs/api/types/{ExternalPageExternalAgent.js → AgentUpdateResponse.js} +0 -0
  182. /package/dist/cjs/api/types/{ExternalPageLinks.js → AgentVariables.js} +0 -0
  183. /package/dist/cjs/api/types/{ExternalPageMeta.js → AgentVersionWelcomeMessageResponse.js} +0 -0
  184. /package/dist/cjs/api/types/{ExternalPageProject.js → GenerateFollowupSuggestionsResponse.js} +0 -0
  185. /package/dist/cjs/api/types/{ExternalPageThreadListItem.js → PageAgent.js} +0 -0
  186. /package/dist/esm/api/resources/agents/client/requests/{ExternalAgentCreateRequest.mjs → AgentCreateRequest.mjs} +0 -0
  187. /package/dist/esm/api/resources/agents/client/requests/{ExternalAgentUpdateRequest.mjs → AgentUpdateRequest.mjs} +0 -0
  188. /package/dist/esm/api/{types/ExternalAgent.mjs → resources/messaging/client/requests/GenerateFollowupSuggestionsRequest.mjs} +0 -0
  189. /package/dist/esm/api/{types/ExternalAgentCreateResponse.mjs → resources/threads/client/requests/UpdateThreadRequest.mjs} +0 -0
  190. /package/dist/esm/api/types/{ExternalAgentListFilters.mjs → Agent.mjs} +0 -0
  191. /package/dist/esm/api/types/{ExternalAgentUpdateResponse.mjs → AgentCreateResponse.mjs} +0 -0
  192. /package/dist/esm/api/types/{ExternalPageAgentVersion.mjs → AgentListFilters.mjs} +0 -0
  193. /package/dist/esm/api/types/{ExternalPageExternalAgent.mjs → AgentUpdateResponse.mjs} +0 -0
  194. /package/dist/esm/api/types/{ExternalPageLinks.mjs → AgentVariables.mjs} +0 -0
  195. /package/dist/esm/api/types/{ExternalPageMeta.mjs → AgentVersionWelcomeMessageResponse.mjs} +0 -0
  196. /package/dist/esm/api/types/{ExternalPageProject.mjs → GenerateFollowupSuggestionsResponse.mjs} +0 -0
  197. /package/dist/esm/api/types/{ExternalPageThreadListItem.mjs → PageAgent.mjs} +0 -0
package/README.md CHANGED
@@ -13,46 +13,43 @@ npm install @aui.io/aui-client
13
13
 
14
14
  ## Authentication
15
15
 
16
- The SDK authenticates with a **publishable key** or an **organization API key** — you never manage bearer tokens yourself.
16
+ There are two clients, one per credential flow — you never manage bearer tokens yourself. Each client exposes only the resources for its surface; pick the one that matches your environment (you can use both).
17
17
 
18
- - **Publishable key** (`pk_network_…` for a single agent, or `pk_org_…` for an organization): exchanged automatically at `POST /management/v1/auth/token` for a short-lived bearer token that is cached and refreshed transparently.
19
- - **Organization API key**: used directly as the bearer token.
18
+ | Client | Credential | Resources | Browser-safe |
19
+ | --- | --- | --- | --- |
20
+ | `ApolloMessagingClient` | Publishable key (`pk_network_…` / `pk_org_…`) | `messaging`, `channels`, WebSocket sessions | **Yes** |
21
+ | `ApolloManagementClient` | Organization API key | `projects`, `agents`, `agentVersions`, `threads` | **No** — server-side only |
20
22
 
21
- Pass exactly one of them:
23
+ - **`ApolloMessagingClient`** exchanges the publishable key automatically at `POST /management/v1/auth/token` for a short-lived bearer token that is cached and refreshed transparently, and sent as `Authorization: Bearer …`.
24
+ - **`ApolloManagementClient`** sends the organization API key on every request as the `x-organization-api-key` header — there is no token exchange, caching, or refresh.
22
25
 
23
26
  ```typescript
24
- import { ApolloClient } from '@aui.io/aui-client';
27
+ import { ApolloMessagingClient, ApolloManagementClient } from '@aui.io/aui-client';
25
28
 
26
- // With a publishable key (recommended for client / agent-scoped use)
27
- const client = new ApolloClient({
29
+ // Browser / widget / end-user (publishable key)
30
+ const messaging = new ApolloMessagingClient({
28
31
  publishableKey: 'pk_network_xxxxxxxxxxxxxxxxxxxxxxxx',
29
32
  });
30
33
 
31
- // Or with an organization API key
32
- const orgClient = new ApolloClient({
34
+ // Backend / CI (organization API key — never ship this to the browser)
35
+ const management = new ApolloManagementClient({
33
36
  organizationApiKey: 'YOUR_ORG_API_KEY',
34
37
  });
35
38
  ```
36
39
 
37
40
  ## Quick Start
38
41
 
42
+ Messaging (publishable key) — the agent is derived from the key, so you don't pass it:
43
+
39
44
  ```typescript
40
- import { ApolloClient } from '@aui.io/aui-client';
45
+ import { ApolloMessagingClient } from '@aui.io/aui-client';
41
46
 
42
- const client = new ApolloClient({
47
+ const messaging = new ApolloMessagingClient({
43
48
  publishableKey: 'pk_network_xxxxxxxxxxxxxxxxxxxxxxxx',
44
49
  });
45
50
 
46
- // List projects, then the agents in the first project
47
- const projects = await client.projects.listProjects();
48
- const projectId = projects.results[0].id;
49
-
50
- const agents = await client.agents.listAgents(projectId, { filters: {} });
51
- const agentId = agents.results[0].id;
52
-
53
51
  // Send a message (creates a thread if thread_id is omitted)
54
- const response = await client.messaging.sendMessage({
55
- agent_id: agentId,
52
+ const response = await messaging.messaging.sendMessage({
56
53
  user_id: 'end-user-123',
57
54
  text: 'Hello from the SDK',
58
55
  });
@@ -60,82 +57,203 @@ const response = await client.messaging.sendMessage({
60
57
  console.log('Thread:', response.thread_id);
61
58
  ```
62
59
 
60
+ Management (organization API key, server-side only):
61
+
62
+ ```typescript
63
+ import { ApolloManagementClient } from '@aui.io/aui-client';
64
+
65
+ const management = new ApolloManagementClient({
66
+ organizationApiKey: 'YOUR_ORG_API_KEY',
67
+ });
68
+
69
+ const projects = await management.projects.listProjects();
70
+ const projectId = projects.results[0].id;
71
+
72
+ const agents = await management.agents.listAgents(projectId, { filters: {} });
73
+ ```
74
+
63
75
  ## Configuration
64
76
 
65
- The `ApolloClient` constructor accepts:
77
+ Each client takes its credential:
66
78
 
67
79
  ```typescript
68
- interface ApolloClient.Options {
69
- environment?: ApolloEnvironment; // Defaults to ApolloEnvironment.Gcp
70
- publishableKey?: string; // pk_network_… or pk_org_…
71
- organizationApiKey?: string; // Organization API key
80
+ interface ApolloMessagingClient.Options {
81
+ publishableKey: string; // pk_network_… or pk_org_…
82
+ }
83
+
84
+ interface ApolloManagementClient.Options {
85
+ organizationApiKey: string; // server-side only
72
86
  }
73
87
  ```
74
88
 
75
- ### Environments
89
+ ## REST API
90
+
91
+ Resources are split by surface: messaging resources live on `ApolloMessagingClient`, management resources on `ApolloManagementClient`. All list endpoints are paginated and return `{ results, meta }`, where `meta.has_more` indicates further pages.
92
+
93
+ ### Messaging client (`ApolloMessagingClient`)
94
+
95
+ #### Messaging — `messaging.messaging`
96
+
97
+ Full method list:
98
+
99
+ | Method | Description |
100
+ | --- | --- |
101
+ | `sendMessage(request)` | Send a message and get the full reply. Omit `thread_id` to start a new thread. |
102
+ | `streamMessage(request)` | Same as `sendMessage`, but streams the reply token-by-token over Server-Sent Events. |
103
+ | `rerun(threadId, request)` | Re-run the latest turn of a thread. |
104
+ | `listMessages(threadId)` | The thread transcript, scoped to the key's agent. |
105
+ | `threadTrace(threadId)` | Reasoning trace for every interaction in a thread. |
106
+ | `interactionTrace(interactionId)` | Reasoning trace for a single interaction. |
107
+ | `getWelcomeMessage()` | The agent's welcome message (from its live version). |
108
+ | `generateFollowupSuggestions(request)` | Suggested follow-up prompts from a context you provide. |
76
109
 
77
110
  ```typescript
78
- import { ApolloEnvironment } from '@aui.io/aui-client';
111
+ // Send a message. Omit thread_id to start a new thread. The agent rides the key,
112
+ // so it isn't passed in the body.
113
+ const res = await messaging.messaging.sendMessage({
114
+ user_id: 'end-user-123',
115
+ text: 'What can you help me with?',
116
+ // thread_id: existingThreadId,
117
+ // Optional per-message values for the agent's configured context variables:
118
+ // agent_variables: { static: { customer_name: 'Ada' }, dynamic: { order_id: 'ORD-1042' } },
119
+ });
120
+ console.log('Thread:', res.thread_id);
79
121
 
80
- ApolloEnvironment.Gcp = {
81
- base: 'https://api-v3.aui.io/apollo-api-v2', // REST
82
- production: 'wss://api-v3.aui.io/apollo-api-v2', // WebSocket
83
- };
84
- ```
122
+ // Stream the reply instead (Server-Sent Events)
123
+ const stream = await messaging.messaging.streamMessage({ user_id: 'end-user-123', text: 'Tell me a story' });
124
+ for await (const event of stream) {
125
+ console.log(event);
126
+ }
85
127
 
86
- `environment` defaults to `ApolloEnvironment.Gcp`, so most callers only need to pass a key.
128
+ // Re-run the latest turn of a thread
129
+ const rerun = await messaging.messaging.rerun(res.thread_id, { user_id: 'end-user-123' });
87
130
 
88
- ## REST API
131
+ // Read the transcript and traces
132
+ const messages = await messaging.messaging.listMessages(res.thread_id);
133
+ const traces = await messaging.messaging.threadTrace(res.thread_id);
134
+ const one = await messaging.messaging.interactionTrace(interactionId);
135
+
136
+ // Welcome message (from the agent's live version) — open a conversation UI before the first turn
137
+ const { welcome_message } = await messaging.messaging.getWelcomeMessage();
89
138
 
90
- Resources are grouped on the client. All list endpoints are paginated and return `{ results, meta }`, where `meta.has_more` indicates further pages.
139
+ // Follow-up suggestions generated from a context you provide
140
+ const { suggestions } = await messaging.messaging.generateFollowupSuggestions({
141
+ context: { topic: 'order tracking' },
142
+ });
143
+ ```
91
144
 
92
- ### Projects — `client.projects`
145
+ #### Channels — `messaging.channels`
146
+
147
+ | Method | Description |
148
+ | --- | --- |
149
+ | `initiateThread(channel, request)` | Send the opening message on an outbound channel (`'sms'` / `'whatsapp'`) and bind the recipient to a thread. |
93
150
 
94
151
  ```typescript
95
- const page = await client.projects.listProjects(); // { results, meta }
96
- const project = await client.projects.getProject(projectId);
97
- const usage = await client.projects.getProjectUsage(projectId);
152
+ // Start a channel-scoped thread (e.g. SMS opener). The agent rides the key, so it isn't
153
+ // passed in the body. Use 'whatsapp' for WhatsApp.
154
+ const sms = await messaging.channels.initiateThread('sms', {
155
+ phone_number: '+14155551234',
156
+ user_id: 'end-user-123',
157
+ text: 'Hello from the SDK',
158
+ // thread_id: existingThreadId, // omit to start a new thread
159
+ });
160
+ console.log('Thread:', sms.thread_id);
98
161
  ```
99
162
 
100
- ### Agents `client.agents`
163
+ ### Management client (`ApolloManagementClient`)
164
+
165
+ #### Projects — `management.projects`
166
+
167
+ | Method | Description |
168
+ | --- | --- |
169
+ | `listProjects()` | List the org's projects (paginated). |
170
+ | `createProject(request)` | Create a project. |
171
+ | `getProject(projectId)` | Fetch one project. |
172
+ | `deleteProject(projectId)` | Delete a project. |
173
+ | `getProjectUsage(projectId)` | Usage metrics aggregated across the project. |
101
174
 
102
175
  ```typescript
103
- const page = await client.agents.listAgents(projectId, { filters: {} });
104
- const agent = await client.agents.getAgent(agentId); // agent.live_version_id, …
105
- const usage = await client.agents.getAgentUsage(agentId);
176
+ const page = await management.projects.listProjects(); // { results, meta }
177
+ const project = await management.projects.createProject({ name: 'My project' });
178
+ const fetched = await management.projects.getProject(project.id);
179
+ const usage = await management.projects.getProjectUsage(project.id);
180
+ await management.projects.deleteProject(project.id);
106
181
  ```
107
182
 
108
- ### Threads — `client.threads`
183
+ #### Agents — `management.agents`
184
+
185
+ | Method | Description |
186
+ | --- | --- |
187
+ | `listAgents(projectId, { filters })` | List a project's agents (paginated). |
188
+ | `createAgent(projectId, request)` | Create an agent (starts with no live version). |
189
+ | `getAgent(agentId)` | Fetch one agent, incl. its live version. |
190
+ | `updateAgent(agentId, request)` | Rename an agent. |
191
+ | `deleteAgent(agentId)` | Delete an agent and all its versions. |
192
+ | `getAgentUsage(agentId)` | Usage metrics for one agent. |
109
193
 
110
194
  ```typescript
111
- const page = await client.threads.listThreads({ filters: {} });
112
- const thread = await client.threads.getThread(threadId);
113
- const messages = await client.threads.getThreadMessages(threadId);
114
- const trace = await client.threads.getThreadTrace(threadId);
195
+ const page = await management.agents.listAgents(projectId, { filters: {} });
196
+ const agent = await management.agents.createAgent(projectId, { name: 'Support bot' });
197
+ const fetched = await management.agents.getAgent(agent.id); // fetched.live_version_id, …
198
+ await management.agents.updateAgent(agent.id, { name: 'Support bot v2' });
199
+ const usage = await management.agents.getAgentUsage(agent.id);
200
+ await management.agents.deleteAgent(agent.id);
115
201
  ```
116
202
 
117
- ### Messaging — `client.messaging`
203
+ #### Agent versions — `management.agentVersions`
204
+
205
+ | Method | Description |
206
+ | --- | --- |
207
+ | `listVersions(agentId, { filters })` | List an agent's versions, newest first. |
208
+ | `createVersion(agentId, request)` | Create a draft version (empty, from a template, or cloned). |
209
+ | `updateVersion(agentId, versionId, request)` | Update a version's metadata (label, tags, notes). |
210
+ | `pushVersion(agentId, versionId, request)` | Push a config bundle, committing a new revision. |
211
+ | `pullVersion(agentId, versionId, request?)` | Download a version's config bundle. |
212
+ | `publishVersion(agentId, versionId)` | Make a version the agent's live version. |
213
+ | `archiveVersion(agentId, versionId)` | Archive (retire) a version. |
118
214
 
119
215
  ```typescript
120
- // Send a message. Omit thread_id to start a new thread.
121
- const res = await client.messaging.sendMessage({
122
- agent_id: agentId,
123
- user_id: 'end-user-123',
124
- text: 'What can you help me with?',
125
- // thread_id: existingThreadId,
126
- });
127
- console.log('Thread:', res.thread_id);
216
+ const versions = await management.agentVersions.listVersions(agentId, { filters: {} });
217
+ const draft = await management.agentVersions.createVersion(agentId, {});
218
+ await management.agentVersions.updateVersion(agentId, draft.id, { label: 'v1' });
219
+ await management.agentVersions.pushVersion(agentId, draft.id, { /* config bundle */ });
220
+ const bundle = await management.agentVersions.pullVersion(agentId, draft.id);
221
+ await management.agentVersions.publishVersion(agentId, draft.id);
222
+ await management.agentVersions.archiveVersion(agentId, draft.id);
223
+ ```
224
+
225
+ #### Threads — `management.threads`
128
226
 
129
- // List the messages in a thread
130
- const messages = await client.messaging.listMessages(res.thread_id);
227
+ | Method | Description |
228
+ | --- | --- |
229
+ | `listThreads({ filters })` | List the org's threads, newest first (paginated). |
230
+ | `getThread(threadId)` | Fetch one thread. |
231
+ | `updateThread(threadId, request)` | Update a thread (currently `title`). |
232
+ | `getThreadMessages(threadId)` | The thread's full transcript. |
233
+ | `getThreadTrace(threadId)` | Reasoning trace for every interaction in the thread. |
234
+ | `getInteractionTrace(interactionId)` | Reasoning trace for a single interaction. |
235
+
236
+ `filters` supports `project_id`, `agent_id`, `user_id`, `external_id`, `created` (range), `tool`, `rule`, and `param`. Prefer a filter (e.g. `project_id`) over `{}` — the unfiltered list sorts every thread in the org and can be slow.
237
+
238
+ ```typescript
239
+ const page = await management.threads.listThreads(
240
+ { filters: { project_id: projectId } },
241
+ { timeoutInSeconds: 120 }, // this endpoint can be slow; give it headroom
242
+ );
243
+ const thread = await management.threads.getThread(threadId);
244
+ const updated = await management.threads.updateThread(threadId, { title: 'Renamed conversation' });
245
+ const messages = await management.threads.getThreadMessages(threadId);
246
+ const trace = await management.threads.getThreadTrace(threadId);
247
+ const one = await management.threads.getInteractionTrace(interactionId);
131
248
  ```
132
249
 
133
250
  ## WebSocket Messaging
134
251
 
135
- `client.connect()` opens a real-time session. The bearer token is resolved and attached to the upgrade automatically.
252
+ `connect()` opens a real-time session and is available on **`ApolloMessagingClient`** only (WebSocket messaging is publishable-key territory). The bearer token is attached to the upgrade automatically — it's passed as the first WebSocket subprotocol, which is the one credential channel browsers allow, so this works in the browser as well as in Node.
136
253
 
137
254
  ```typescript
138
- const socket = await client.connect();
255
+ const messaging = new ApolloMessagingClient({ publishableKey: 'pk_network_…' });
256
+ const socket = await messaging.connect();
139
257
  await socket.waitForOpen();
140
258
 
141
259
  socket.on('message', (msg) => {
@@ -152,32 +270,41 @@ socket.sendSubmitMessage({
152
270
  text: 'Hello over WebSocket',
153
271
  });
154
272
 
273
+ // Resume a dropped stream
274
+ socket.sendResume({ /* ResumeRequest */ });
275
+
155
276
  // When done
156
277
  socket.close();
157
278
  ```
158
279
 
280
+ The socket (`SessionSocket`) exposes: `waitForOpen()`, `on(event, handler)` (events: `open`, `message`, `error`, `close`), `sendSubmitMessage(request)`, `sendResume(request)`, and `close()`.
281
+
159
282
  > **Notes**
160
283
  > - `socket.on(event, handler)` registers a **single** handler per event — calling it
161
284
  > again for the same event replaces the previous handler rather than adding one.
162
285
  > - The socket type is exported as `SessionSocket` (`import { SessionSocket } from '@aui.io/aui-client'`).
163
286
  > - Request timeouts are **per call** via `timeoutInSeconds` on a request's options; there
164
287
  > is no client-wide default timeout. Pass it on slow calls, e.g.
165
- > `client.threads.listThreads({ filters: {} }, { timeoutInSeconds: 120 })`.
288
+ > `management.threads.listThreads({ filters: {} }, { timeoutInSeconds: 120 })`.
166
289
 
167
290
  ## Key Context Helpers
168
291
 
169
- After the first request (or an explicit `getContext()`), scope resolved from the key is available:
292
+ On **`ApolloMessagingClient`**, after the first request (or an explicit `getContext()`), the scope resolved from the publishable key is available:
170
293
 
171
294
  ```typescript
172
- console.log(client.keyType); // 'agent' | 'org' | 'unknown'
295
+ const messaging = new ApolloMessagingClient({ publishableKey: 'pk_network_…' });
296
+
297
+ console.log(messaging.keyType); // 'agent' | 'org' | 'unknown'
173
298
 
174
- const ctx = await client.getContext();
299
+ const ctx = await messaging.getContext();
175
300
  console.log(ctx.agentId, ctx.organizationId, ctx.keyType);
176
301
 
177
- client.agentId; // populated once a token has been exchanged
178
- client.organizationId;
302
+ messaging.agentId; // populated once a token has been exchanged
303
+ messaging.organizationId;
179
304
  ```
180
305
 
306
+ `ApolloManagementClient` proves only the organization (resolved server-side by the gateway), so it has no key-context helpers.
307
+
181
308
  ## Error Handling
182
309
 
183
310
  `ApolloError` (the base API error) and `ApolloTimeoutError` are exported at the top
@@ -188,7 +315,7 @@ namespace.
188
315
  import { ApolloError, Apollo } from '@aui.io/aui-client';
189
316
 
190
317
  try {
191
- await client.agents.getAgent('missing-id');
318
+ await management.agents.getAgent('missing-id');
192
319
  } catch (error) {
193
320
  if (error instanceof Apollo.UnprocessableEntityError) {
194
321
  console.error('Validation failed:', error.body);
@@ -205,7 +332,7 @@ try {
205
332
  The SDK ships full type definitions. Models are namespaced under `Apollo`:
206
333
 
207
334
  ```typescript
208
- import { ApolloClient, Apollo } from '@aui.io/aui-client';
335
+ import { Apollo } from '@aui.io/aui-client';
209
336
 
210
337
  const req: Apollo.SubmitMessageRequest = {
211
338
  type: 'message',
@@ -2,30 +2,41 @@ import { ApolloClient as _GeneratedClient } from "./Client.js";
2
2
  import type { ApolloEnvironmentUrls } from "./environments.js";
3
3
  import { SessionSocket } from "./api/resources/session/client/Socket.js";
4
4
  import type { Session } from "./api/resources/session/client/Client.js";
5
+ import type { Messaging } from "./api/resources/messaging/client/Client.js";
6
+ import type { Channels } from "./api/resources/channels/client/Client.js";
7
+ import type { Projects } from "./api/resources/projects/client/Client.js";
8
+ import type { Agents } from "./api/resources/agents/client/Client.js";
9
+ import type { AgentVersions } from "./api/resources/agentVersions/client/Client.js";
10
+ import type { Threads } from "./api/resources/threads/client/Client.js";
5
11
  /** Publishable-key family, inferred from the key prefix. */
6
12
  export type PublishableKeyType = "agent" | "org" | "unknown";
7
- export declare namespace ApolloClient {
13
+ type AuthHeaders = Record<string, string | (() => Promise<string>) | null>;
14
+ declare class BaseApolloClient {
15
+ protected readonly _client: _GeneratedClient;
16
+ protected readonly _env: ApolloEnvironmentUrls;
17
+ constructor(env: ApolloEnvironmentUrls, authHeaders: AuthHeaders);
18
+ }
19
+ export declare namespace ApolloMessagingClient {
8
20
  interface Options {
9
- /** Deployment environment. Defaults to ApolloEnvironment.Gcp. */
10
- environment?: ApolloEnvironmentUrls;
11
- /** Publishable key (pk_network_ or pk_org_); exchanged for a bearer token. */
12
- publishableKey?: string;
13
- /** Organization API key; used directly as the bearer token. */
14
- organizationApiKey?: string;
21
+ /** Publishable key (pk_network_ / pk_org_). */
22
+ publishableKey: string;
23
+ /** Internal: override the API host. Defaults to production. */
24
+ baseUrl?: string;
15
25
  }
16
26
  interface ConnectArgs extends Session.ConnectArgs {
17
27
  }
18
28
  }
19
29
  /**
20
- * ApolloClient adds authentication on top of the generated client: it takes a
21
- * publishable key (or organization API key) and handles the token exchange/refresh
22
- * transparently. Every generated resource (agents, threads, messaging, …) is
23
- * inherited unchanged.
30
+ * Publishable-key client for end-user / widget messaging (browser-safe).
31
+ * Exposes the `messaging` audience only.
24
32
  */
25
- export declare class ApolloClient extends _GeneratedClient {
26
- private readonly _tokenAuth;
27
- private readonly _env;
28
- constructor(options?: ApolloClient.Options);
33
+ export declare class ApolloMessagingClient extends BaseApolloClient {
34
+ private readonly _pkAuth;
35
+ constructor(options: ApolloMessagingClient.Options);
36
+ /** Send / stream messages and read thread & interaction traces. */
37
+ get messaging(): Messaging;
38
+ /** Initiate channel-scoped threads (e.g. SMS). */
39
+ get channels(): Channels;
29
40
  /** Publishable-key family (agent / org / unknown). */
30
41
  get keyType(): PublishableKeyType;
31
42
  /** Agent resolved from an agent-scoped key. Populated after the first exchange. */
@@ -38,13 +49,30 @@ export declare class ApolloClient extends _GeneratedClient {
38
49
  organizationId?: string;
39
50
  keyType: PublishableKeyType;
40
51
  }>;
41
- /**
42
- * Open a messaging WebSocket session. The bearer token is passed as the first
43
- * subprotocol (with `aui-websocket` second) — the gateway reads auth from
44
- * Sec-WebSocket-Protocol, the only upgrade header a browser can set. The token is
45
- * also sent as an Authorization header for Node. Built here (rather than via the
46
- * generated session resource) so the generated code stays vanilla — Fern emits
47
- * protocols: [] and forwards only per-call headers, neither of which the server accepts.
48
- */
49
- connect(args?: ApolloClient.ConnectArgs): Promise<SessionSocket>;
52
+ /** Open a messaging WebSocket session. */
53
+ connect(args?: ApolloMessagingClient.ConnectArgs): Promise<SessionSocket>;
54
+ }
55
+ export declare namespace ApolloManagementClient {
56
+ interface Options {
57
+ /** Organization API key. Server-side only. */
58
+ organizationApiKey: string;
59
+ /** Internal: override the API host. Defaults to production. */
60
+ baseUrl?: string;
61
+ }
62
+ }
63
+ /**
64
+ * Organization-API-key client for backend services and CI (server-side only).
65
+ * Exposes the `management` audience only.
66
+ */
67
+ export declare class ApolloManagementClient extends BaseApolloClient {
68
+ constructor(options: ApolloManagementClient.Options);
69
+ /** Projects: listing, retrieval, and usage. */
70
+ get projects(): Projects;
71
+ /** Agents: listing, retrieval, and usage. */
72
+ get agents(): Agents;
73
+ /** Agent versions. */
74
+ get agentVersions(): AgentVersions;
75
+ /** Threads: listing, retrieval, updates, and traces. */
76
+ get threads(): Threads;
50
77
  }
78
+ export {};