@archastro/sdk 0.5.2 → 0.6.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 (230) hide show
  1. package/README.md +86 -0
  2. package/dist/auth.d.ts +143 -0
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +187 -1
  5. package/dist/auth.js.map +1 -1
  6. package/dist/channels/api_chat_channel.d.ts +4 -0
  7. package/dist/channels/api_chat_channel.d.ts.map +1 -1
  8. package/dist/channels/api_chat_channel.js +9 -1
  9. package/dist/channels/api_chat_channel.js.map +1 -1
  10. package/dist/client.d.ts +26 -0
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +27 -1
  13. package/dist/client.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/runtime/http-client.d.ts +17 -0
  19. package/dist/runtime/http-client.d.ts.map +1 -1
  20. package/dist/runtime/http-client.js +116 -0
  21. package/dist/runtime/http-client.js.map +1 -1
  22. package/dist/types/ai.d.ts +421 -14
  23. package/dist/types/ai.d.ts.map +1 -1
  24. package/dist/types/ai.js +121 -41
  25. package/dist/types/ai.js.map +1 -1
  26. package/dist/types/artifacts.d.ts +81 -24
  27. package/dist/types/artifacts.d.ts.map +1 -1
  28. package/dist/types/artifacts.js +39 -21
  29. package/dist/types/artifacts.js.map +1 -1
  30. package/dist/types/automations.d.ts +41 -9
  31. package/dist/types/automations.d.ts.map +1 -1
  32. package/dist/types/automations.js +25 -17
  33. package/dist/types/automations.js.map +1 -1
  34. package/dist/types/chat.d.ts +21560 -0
  35. package/dist/types/chat.d.ts.map +1 -0
  36. package/dist/types/chat.js +70 -0
  37. package/dist/types/chat.js.map +1 -0
  38. package/dist/types/common.d.ts +17031 -2136
  39. package/dist/types/common.d.ts.map +1 -1
  40. package/dist/types/common.js +1701 -332
  41. package/dist/types/common.js.map +1 -1
  42. package/dist/types/config.d.ts +245 -37
  43. package/dist/types/config.d.ts.map +1 -1
  44. package/dist/types/config.js +86 -34
  45. package/dist/types/config.js.map +1 -1
  46. package/dist/types/image.d.ts +27 -4
  47. package/dist/types/image.d.ts.map +1 -1
  48. package/dist/types/image.js +17 -10
  49. package/dist/types/image.js.map +1 -1
  50. package/dist/types/index.d.ts +2 -1
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/index.js +3 -2
  53. package/dist/types/index.js.map +1 -1
  54. package/dist/types/invites.d.ts +20 -11
  55. package/dist/types/invites.d.ts.map +1 -1
  56. package/dist/types/invites.js +9 -12
  57. package/dist/types/invites.js.map +1 -1
  58. package/dist/types/notifications.d.ts +163 -0
  59. package/dist/types/notifications.d.ts.map +1 -0
  60. package/dist/types/notifications.js +44 -0
  61. package/dist/types/notifications.js.map +1 -0
  62. package/dist/types/teams.d.ts +1640 -231
  63. package/dist/types/teams.d.ts.map +1 -1
  64. package/dist/types/teams.js +76 -45
  65. package/dist/types/teams.js.map +1 -1
  66. package/dist/types/threads.d.ts +1007 -243
  67. package/dist/types/threads.d.ts.map +1 -1
  68. package/dist/types/threads.js +84 -51
  69. package/dist/types/threads.js.map +1 -1
  70. package/dist/types/users.d.ts +98 -18
  71. package/dist/types/users.d.ts.map +1 -1
  72. package/dist/types/users.js +43 -18
  73. package/dist/types/users.js.map +1 -1
  74. package/dist/v1/resources/activity_feed.d.ts +90 -0
  75. package/dist/v1/resources/activity_feed.d.ts.map +1 -1
  76. package/dist/v1/resources/activity_feed.js +56 -2
  77. package/dist/v1/resources/activity_feed.js.map +1 -1
  78. package/dist/v1/resources/agent_computers.d.ts +48 -2
  79. package/dist/v1/resources/agent_computers.d.ts.map +1 -1
  80. package/dist/v1/resources/agent_computers.js +48 -1
  81. package/dist/v1/resources/agent_computers.js.map +1 -1
  82. package/dist/v1/resources/agent_env_vars.d.ts +50 -0
  83. package/dist/v1/resources/agent_env_vars.d.ts.map +1 -0
  84. package/dist/v1/resources/agent_env_vars.js +56 -0
  85. package/dist/v1/resources/agent_env_vars.js.map +1 -0
  86. package/dist/v1/resources/agent_health_actions.d.ts +43 -0
  87. package/dist/v1/resources/agent_health_actions.d.ts.map +1 -0
  88. package/dist/v1/resources/agent_health_actions.js +50 -0
  89. package/dist/v1/resources/agent_health_actions.js.map +1 -0
  90. package/dist/v1/resources/agent_installations.d.ts +100 -0
  91. package/dist/v1/resources/agent_installations.d.ts.map +1 -1
  92. package/dist/v1/resources/agent_installations.js +106 -2
  93. package/dist/v1/resources/agent_installations.js.map +1 -1
  94. package/dist/v1/resources/agent_routine_runs.d.ts +33 -0
  95. package/dist/v1/resources/agent_routine_runs.d.ts.map +1 -0
  96. package/dist/v1/resources/agent_routine_runs.js +48 -0
  97. package/dist/v1/resources/agent_routine_runs.js.map +1 -0
  98. package/dist/v1/resources/agent_routines.d.ts +148 -2
  99. package/dist/v1/resources/agent_routines.d.ts.map +1 -1
  100. package/dist/v1/resources/agent_routines.js +168 -3
  101. package/dist/v1/resources/agent_routines.js.map +1 -1
  102. package/dist/v1/resources/agent_sessions.d.ts +118 -1
  103. package/dist/v1/resources/agent_sessions.d.ts.map +1 -1
  104. package/dist/v1/resources/agent_sessions.js +134 -2
  105. package/dist/v1/resources/agent_sessions.js.map +1 -1
  106. package/dist/v1/resources/agent_skills.d.ts +83 -1
  107. package/dist/v1/resources/agent_skills.d.ts.map +1 -1
  108. package/dist/v1/resources/agent_skills.js +87 -2
  109. package/dist/v1/resources/agent_skills.js.map +1 -1
  110. package/dist/v1/resources/agent_tools.d.ts +109 -2
  111. package/dist/v1/resources/agent_tools.d.ts.map +1 -1
  112. package/dist/v1/resources/agent_tools.js +114 -2
  113. package/dist/v1/resources/agent_tools.js.map +1 -1
  114. package/dist/v1/resources/agents.d.ts +519 -9
  115. package/dist/v1/resources/agents.d.ts.map +1 -1
  116. package/dist/v1/resources/agents.js +516 -12
  117. package/dist/v1/resources/agents.js.map +1 -1
  118. package/dist/v1/resources/ai.d.ts +174 -3
  119. package/dist/v1/resources/ai.d.ts.map +1 -1
  120. package/dist/v1/resources/ai.js +114 -3
  121. package/dist/v1/resources/ai.js.map +1 -1
  122. package/dist/v1/resources/artifacts.d.ts +73 -0
  123. package/dist/v1/resources/artifacts.d.ts.map +1 -1
  124. package/dist/v1/resources/artifacts.js +74 -2
  125. package/dist/v1/resources/artifacts.js.map +1 -1
  126. package/dist/v1/resources/automation_runs.d.ts +8 -4
  127. package/dist/v1/resources/automation_runs.d.ts.map +1 -1
  128. package/dist/v1/resources/automation_runs.js +9 -5
  129. package/dist/v1/resources/automation_runs.js.map +1 -1
  130. package/dist/v1/resources/automations.d.ts +20 -0
  131. package/dist/v1/resources/automations.d.ts.map +1 -1
  132. package/dist/v1/resources/automations.js +21 -1
  133. package/dist/v1/resources/automations.js.map +1 -1
  134. package/dist/v1/resources/bug_reports.d.ts +29 -0
  135. package/dist/v1/resources/bug_reports.d.ts.map +1 -0
  136. package/dist/v1/resources/bug_reports.js +29 -0
  137. package/dist/v1/resources/bug_reports.js.map +1 -0
  138. package/dist/v1/resources/config.d.ts +437 -4
  139. package/dist/v1/resources/config.d.ts.map +1 -1
  140. package/dist/v1/resources/config.js +497 -9
  141. package/dist/v1/resources/config.js.map +1 -1
  142. package/dist/v1/resources/custom_objects.d.ts +117 -2
  143. package/dist/v1/resources/custom_objects.d.ts.map +1 -1
  144. package/dist/v1/resources/custom_objects.js +132 -3
  145. package/dist/v1/resources/custom_objects.js.map +1 -1
  146. package/dist/v1/resources/files.d.ts +62 -0
  147. package/dist/v1/resources/files.d.ts.map +1 -0
  148. package/dist/v1/resources/files.js +58 -0
  149. package/dist/v1/resources/files.js.map +1 -0
  150. package/dist/v1/resources/index.d.ts +13 -0
  151. package/dist/v1/resources/index.d.ts.map +1 -1
  152. package/dist/v1/resources/index.js +14 -1
  153. package/dist/v1/resources/index.js.map +1 -1
  154. package/dist/v1/resources/installation_sources.d.ts +12 -0
  155. package/dist/v1/resources/installation_sources.d.ts.map +1 -1
  156. package/dist/v1/resources/installation_sources.js +13 -1
  157. package/dist/v1/resources/installation_sources.js.map +1 -1
  158. package/dist/v1/resources/invites.d.ts +15 -0
  159. package/dist/v1/resources/invites.d.ts.map +1 -1
  160. package/dist/v1/resources/invites.js +16 -1
  161. package/dist/v1/resources/invites.js.map +1 -1
  162. package/dist/v1/resources/knowledge_documents.d.ts +104 -0
  163. package/dist/v1/resources/knowledge_documents.d.ts.map +1 -0
  164. package/dist/v1/resources/knowledge_documents.js +112 -0
  165. package/dist/v1/resources/knowledge_documents.js.map +1 -0
  166. package/dist/v1/resources/knowledge_sources.d.ts +190 -0
  167. package/dist/v1/resources/knowledge_sources.d.ts.map +1 -0
  168. package/dist/v1/resources/knowledge_sources.js +176 -0
  169. package/dist/v1/resources/knowledge_sources.js.map +1 -0
  170. package/dist/v1/resources/kv.d.ts +73 -0
  171. package/dist/v1/resources/kv.d.ts.map +1 -1
  172. package/dist/v1/resources/kv.js +96 -3
  173. package/dist/v1/resources/kv.js.map +1 -1
  174. package/dist/v1/resources/notification_preferences.d.ts +61 -0
  175. package/dist/v1/resources/notification_preferences.d.ts.map +1 -0
  176. package/dist/v1/resources/notification_preferences.js +65 -0
  177. package/dist/v1/resources/notification_preferences.js.map +1 -0
  178. package/dist/v1/resources/notifications.d.ts +133 -0
  179. package/dist/v1/resources/notifications.d.ts.map +1 -0
  180. package/dist/v1/resources/notifications.js +136 -0
  181. package/dist/v1/resources/notifications.js.map +1 -0
  182. package/dist/v1/resources/orgs.d.ts +18 -0
  183. package/dist/v1/resources/orgs.d.ts.map +1 -1
  184. package/dist/v1/resources/orgs.js +30 -2
  185. package/dist/v1/resources/orgs.js.map +1 -1
  186. package/dist/v1/resources/slack_channel_bindings.d.ts +101 -0
  187. package/dist/v1/resources/slack_channel_bindings.d.ts.map +1 -0
  188. package/dist/v1/resources/slack_channel_bindings.js +114 -0
  189. package/dist/v1/resources/slack_channel_bindings.js.map +1 -0
  190. package/dist/v1/resources/solution_categories.d.ts +36 -0
  191. package/dist/v1/resources/solution_categories.d.ts.map +1 -0
  192. package/dist/v1/resources/solution_categories.js +55 -0
  193. package/dist/v1/resources/solution_categories.js.map +1 -0
  194. package/dist/v1/resources/solution_tags.d.ts +37 -0
  195. package/dist/v1/resources/solution_tags.d.ts.map +1 -0
  196. package/dist/v1/resources/solution_tags.js +54 -0
  197. package/dist/v1/resources/solution_tags.js.map +1 -0
  198. package/dist/v1/resources/solutions.d.ts +313 -0
  199. package/dist/v1/resources/solutions.d.ts.map +1 -0
  200. package/dist/v1/resources/solutions.js +218 -0
  201. package/dist/v1/resources/solutions.js.map +1 -0
  202. package/dist/v1/resources/team_memberships.d.ts +31 -0
  203. package/dist/v1/resources/team_memberships.d.ts.map +1 -1
  204. package/dist/v1/resources/team_memberships.js +49 -2
  205. package/dist/v1/resources/team_memberships.js.map +1 -1
  206. package/dist/v1/resources/teams.d.ts +461 -49
  207. package/dist/v1/resources/teams.d.ts.map +1 -1
  208. package/dist/v1/resources/teams.js +319 -27
  209. package/dist/v1/resources/teams.js.map +1 -1
  210. package/dist/v1/resources/thread_messages.d.ts +70 -0
  211. package/dist/v1/resources/thread_messages.d.ts.map +1 -1
  212. package/dist/v1/resources/thread_messages.js +85 -2
  213. package/dist/v1/resources/thread_messages.js.map +1 -1
  214. package/dist/v1/resources/threads.d.ts +221 -0
  215. package/dist/v1/resources/threads.d.ts.map +1 -1
  216. package/dist/v1/resources/threads.js +252 -4
  217. package/dist/v1/resources/threads.js.map +1 -1
  218. package/dist/v1/resources/users.d.ts +215 -39
  219. package/dist/v1/resources/users.d.ts.map +1 -1
  220. package/dist/v1/resources/users.js +121 -16
  221. package/dist/v1/resources/users.js.map +1 -1
  222. package/dist/v1.d.ts +26 -0
  223. package/dist/v1.d.ts.map +1 -1
  224. package/dist/v1.js +40 -1
  225. package/dist/v1.js.map +1 -1
  226. package/package.json +4 -2
  227. package/dist/types/agents.d.ts +0 -2084
  228. package/dist/types/agents.d.ts.map +0 -1
  229. package/dist/types/agents.js +0 -203
  230. package/dist/types/agents.js.map +0 -1
@@ -1,17 +1,52 @@
1
1
  // Copyright (c) 2026 ArchAstro Inc. All Rights Reserved.
2
2
  // This file is auto-generated by @archastro/sdk-generator. Do not edit.
3
- // Content hash: 8f2a76296776
3
+ // Content hash: 47cfb6f1fb97
4
4
  export class ThreadMemberResource {
5
5
  http;
6
6
  constructor(http) {
7
7
  this.http = http;
8
8
  }
9
+ /**
10
+ * Remove a member from a thread
11
+ * Removes a user or agent membership from the specified thread. The authenticated
12
+ * user must have access to the thread. A successful removal returns HTTP 204 with
13
+ * no response body.
14
+ * Supply either `user` or `agent` depending on the value of `type`. Returns 404
15
+ * if the thread or the membership record does not exist.
16
+ * @param thread - Thread ID (`thr_...`) identifying the thread to remove the member from.
17
+ * @returns Empty response body. HTTP 204 on success.
18
+ */
9
19
  async remove(thread) {
10
20
  await this.http.request(`/api/v1/threads/${thread}/members`, { method: "DELETE" });
11
21
  }
22
+ /**
23
+ * List members of a thread
24
+ * Returns all current members of the specified thread, including both user and
25
+ * agent members. The authenticated user must have visibility into the thread;
26
+ * requests from users without access return 403.
27
+ * Results are returned as a flat array in the `data` field. The list is not
28
+ * paginated — all members are returned in a single response.
29
+ * @param thread - Thread ID (`thr_...`) identifying the thread to remove the member from.
30
+ * @returns Successful response
31
+ */
12
32
  async list(thread) {
13
33
  return this.http.request(`/api/v1/threads/${thread}/members`);
14
34
  }
35
+ /**
36
+ * Add a member to a thread
37
+ * Adds a user or agent as a member of the specified thread. The authenticated
38
+ * user must have access to the thread. On success the new membership record is
39
+ * returned with HTTP 201.
40
+ * Supply either `user` or `agent` depending on the value of `type`. Attempting
41
+ * to add a principal that is already a member of the thread returns a 422 error.
42
+ * @param thread - Thread ID (`thr_...`) identifying the thread to remove the member from.
43
+ * @param input - Request body.
44
+ * @param input.agent - Agent ID of the principal to add. Required when `type` is `"agent"`.
45
+ * @param input.membership_type - Role granted to the new member. One of `"owner"` or `"member"`. Defaults to `"member"`.
46
+ * @param input.type - Kind of principal being added. Must be `"user"` or `"agent"`.
47
+ * @param input.user - User ID of the principal to add. Required when `type` is `"user"`.
48
+ * @returns The newly created thread membership record.
49
+ */
15
50
  async create(thread, input) {
16
51
  return this.http.request(`/api/v1/threads/${thread}/members`, { method: "POST", body: input });
17
52
  }
@@ -21,9 +56,31 @@ export class SettingResource {
21
56
  constructor(http) {
22
57
  this.http = http;
23
58
  }
59
+ /**
60
+ * Retrieve thread settings
61
+ * Returns the current settings for the specified thread. Settings control
62
+ * per-thread behavior such as whether the AI agent is enabled.
63
+ * The authenticated user must own the thread or be a member of its workspace.
64
+ * If settings have never been explicitly configured, defaults are returned
65
+ * (for example, `agent_enabled` defaults to `true`).
66
+ * @param thread - Thread ID (`thr_...`). Must belong to the authenticated user's workspace.
67
+ * @returns Successful response
68
+ */
24
69
  async list(thread) {
25
70
  return this.http.request(`/api/v1/threads/${thread}/settings`);
26
71
  }
72
+ /**
73
+ * Update thread settings
74
+ * Updates the settings for the specified thread. Only fields included in
75
+ * the `settings` map are modified; omitted fields retain their current values.
76
+ * The authenticated user must own the thread or be a member of its workspace.
77
+ * Returns the full settings object reflecting the state after the update.
78
+ * Validation errors are returned as `422 Unprocessable Entity`.
79
+ * @param thread - Thread ID (`thr_...`). Must belong to the authenticated user's workspace.
80
+ * @param input - Request body.
81
+ * @param input.settings - Map of settings fields to update. Include only the keys you want to change.
82
+ * @returns The thread settings object after the update has been applied.
83
+ */
27
84
  async replace(thread, input) {
28
85
  return this.http.request(`/api/v1/threads/${thread}/settings`, { method: "PUT", body: input });
29
86
  }
@@ -37,35 +94,226 @@ export class ThreadResource {
37
94
  this.members = new ThreadMemberResource(http);
38
95
  this.settings = new SettingResource(http);
39
96
  }
97
+ /**
98
+ * Delete a thread
99
+ * Permanently deletes a thread and all of its messages and artifacts. This action
100
+ * cannot be undone.
101
+ * The authenticated user must own the thread or be an owner of the team the thread
102
+ * belongs to. Attempting to delete a thread owned by another user or team returns 403.
103
+ * @param thread - Thread ID (`thr_...`). The authenticated user must own this thread.
104
+ * @returns Empty response on successful deletion.
105
+ */
40
106
  async delete(thread) {
41
107
  await this.http.request(`/api/v1/threads/${thread}`, { method: "DELETE" });
42
108
  }
109
+ /**
110
+ * Retrieve a thread
111
+ * Returns the full thread record for the given thread ID. The authenticated user
112
+ * must own the thread or be a member of the workspace it belongs to.
113
+ * Use this endpoint to fetch the current state of a single thread, including its
114
+ * title, description, and metadata. To list many threads, use the list endpoint
115
+ * with cursor-based pagination.
116
+ * @param thread - Thread ID (`thr_...`). The authenticated user must have access to this thread.
117
+ * @returns The requested thread object.
118
+ */
43
119
  async get(thread) {
44
120
  return this.http.request(`/api/v1/threads/${thread}`);
45
121
  }
122
+ /**
123
+ * Update a thread
124
+ * Updates one or more mutable properties of the specified thread and returns
125
+ * the full thread object with the applied changes. Only the fields you provide
126
+ * are modified; omitted fields retain their current values.
127
+ * If `profile_picture` is supplied, the image is uploaded before the other
128
+ * fields are saved. Supplying invalid base64 picture data returns 422 and no
129
+ * other fields are updated.
130
+ * The authenticated user must own the thread or be a team owner of the workspace
131
+ * the thread belongs to.
132
+ * @param thread - Thread ID (`thr_...`). The authenticated user must have permission to update this thread.
133
+ * @param input - Request body.
134
+ * @param input.description - Optional longer text describing the thread's purpose. Replaces the existing description when provided.
135
+ * @param input.metadata - Arbitrary key-value metadata to store on the thread. Merged with or replaces existing metadata.
136
+ * @param input.muted - When `true`, suppresses notifications for new messages in this thread for the authenticated user.
137
+ * @param input.profile_picture - New profile picture for the thread. Provide all three inner fields to replace the existing image.
138
+ * @param input.title - Human-readable display name for the thread. Replaces the existing title when provided.
139
+ * @returns The thread object after the update has been applied.
140
+ */
46
141
  async replace(thread, input) {
47
142
  return this.http.request(`/api/v1/threads/${thread}`, { method: "PUT", body: input });
48
143
  }
144
+ /**
145
+ * List agents in a thread
146
+ * Returns the agents participating in the specified thread. Only personal user
147
+ * threads (threads owned by a single user, not a team) expose agents through
148
+ * this endpoint; requests for team threads return 404.
149
+ * The authenticated user must have visibility into the thread. Each agent entry
150
+ * includes display information such as name and profile picture. Thread-level
151
+ * overrides (e.g. a custom name or profile picture set for this thread) take
152
+ * precedence over the agent's default values. When the caller is the thread
153
+ * owner, each entry also includes an `agent_config` object describing the
154
+ * agent's message policy and context configuration.
155
+ * @param thread - Thread ID (`thr_...`). Must be a personal user thread visible to the authenticated user.
156
+ * @returns Successful response
157
+ */
49
158
  async agents(thread) {
50
159
  return this.http.request(`/api/v1/threads/${thread}/agents`);
51
160
  }
161
+ /**
162
+ * List artifacts for a thread
163
+ * Returns all artifacts produced during a thread's AI conversation. Artifacts are
164
+ * structured outputs such as code files, documents, or generated assets created
165
+ * by the AI agent in response to messages in the thread.
166
+ * The authenticated user must have access to the specified thread. Results are
167
+ * returned in a single page; there is no cursor-based pagination for this endpoint.
168
+ * @param thread - Thread ID (`thr_...`). Must be accessible to the authenticated user.
169
+ * @returns Successful response
170
+ */
52
171
  async artifacts(thread) {
53
172
  return this.http.request(`/api/v1/threads/${thread}/artifacts`);
54
173
  }
174
+ /**
175
+ * Mark a thread as read
176
+ * Records that a user has read up to a specific message in the thread. Unread
177
+ * indicators and badge counts are cleared up to the specified message.
178
+ * You must supply exactly one of `last_read_message` or `use_latest_message`.
179
+ * Omitting both returns 400. If `use_latest_message` is `true` and the thread
180
+ * has no messages, the request succeeds silently with no state change.
181
+ * For server-to-server (S2S) requests where no user identity is present in the
182
+ * token, the `user` param is required to identify whose read state to update.
183
+ * @param thread - Thread ID (`thr_...`). The thread to mark as read.
184
+ * @param input - Request body.
185
+ * @param input.last_read_message - Message ID (`msg_...`) to record as the last read message. Mutually exclusive with `use_latest_message`.
186
+ * @param input.use_latest_message - When `true`, marks the thread as read up to the latest message. Mutually exclusive with `last_read_message`.
187
+ * @param input.user - User ID (`usr_...`) whose read state to update. Required for S2S requests; ignored when an authenticated user is present in the token.
188
+ * @returns Empty response on success.
189
+ */
55
190
  async markRead(thread, input) {
56
191
  await this.http.request(`/api/v1/threads/${thread}/mark_read`, { method: "POST", body: input });
57
192
  }
193
+ /**
194
+ * List messages in a thread
195
+ * Returns a cursor-paginated list of messages belonging to the specified thread,
196
+ * ordered from oldest to newest. Supply `before_cursor`, `after_cursor`, or both
197
+ * to page through or bound the result set; omit both to receive the most recent page.
198
+ * Supply `anchor` and `direction` to fetch a window before, after, or around a
199
+ * specific message. Use `anchor=last_matching&anchor_agent_mode=embedded` to
200
+ * resolve the anchor from the latest embedded-agent message, and add
201
+ * `anchor_agent` to scope that resolution to a single sender agent.
202
+ * The authenticated user must have access to the thread's owner (workspace or user).
203
+ * A 403 is returned if the thread exists but is not accessible to the caller; a 404
204
+ * is returned if the thread does not exist or is not visible to the authenticated user.
205
+ * Pass `include_reply_counts: true` to annotate each message with the number of
206
+ * threaded replies it has received. This adds a small amount of latency and should
207
+ * be omitted when reply counts are not needed.
208
+ * @param thread - Thread ID (`thr_...`). The authenticated user must have access to this thread.
209
+ * @param params - Query parameters.
210
+ * @param params.beforeCursor - Opaque cursor returned in a previous response's `before_cursor` field. When provided, returns messages immediately before that position. May be combined with `after_cursor` to bound a range.
211
+ * @param params.afterCursor - Opaque cursor returned in a previous response's `after_cursor` field. When provided, returns messages immediately after that position. May be combined with `before_cursor` to bound a range.
212
+ * @param params.limit - Maximum number of messages to return per page. Defaults to 20.
213
+ * @param params.anchor - Message ID (`msg_...`) to use as a window anchor, or `last_matching` to resolve the anchor from the latest message matching the anchor filters. Cannot be combined with `before_cursor` or `after_cursor`.
214
+ * @param params.direction - Window direction relative to `anchor`. `before` returns older messages, `after` returns newer messages, and `around` returns messages on both sides. Defaults to `after` when `anchor` is supplied. `direction=around` cannot be combined with an explicit `limit`; use `before_limit` and `after_limit`.
215
+ * @param params.beforeLimit - For `direction=around`, maximum number of messages older than the anchor. Defaults to 20.
216
+ * @param params.afterLimit - For `direction=around`, maximum number of messages newer than the anchor. Defaults to 20.
217
+ * @param params.includeAnchor - Whether to include the anchor message in a window response. Defaults to `true` for `direction=around`; ignored for ordinary cursor pagination and one-sided windows.
218
+ * @param params.anchorAgentMode - When `anchor=last_matching`, resolve the anchor from the latest message with this local agent execution mode.
219
+ * @param params.anchorAgent - When `anchor=last_matching`, scope the anchor resolution to messages sent by this agent (`agi_...`). Combine with `anchor_agent_mode` to resolve the latest message from a specific agent in a given mode.
220
+ * @param params.includeReplyCounts - When `true`, each message in the response is annotated with its threaded reply count. Defaults to `false`. Adds latency; omit when reply counts are not needed.
221
+ * @returns Successful response
222
+ */
58
223
  async messages(thread, params) {
59
- return this.http.request(`/api/v1/threads/${thread}/messages`, { query: params });
224
+ const query = {};
225
+ if (params?.beforeCursor !== undefined) {
226
+ query["before_cursor"] = params?.beforeCursor;
227
+ }
228
+ if (params?.afterCursor !== undefined) {
229
+ query["after_cursor"] = params?.afterCursor;
230
+ }
231
+ if (params?.limit !== undefined) {
232
+ query["limit"] = params?.limit;
233
+ }
234
+ if (params?.anchor !== undefined) {
235
+ query["anchor"] = params?.anchor;
236
+ }
237
+ if (params?.direction !== undefined) {
238
+ query["direction"] = params?.direction;
239
+ }
240
+ if (params?.beforeLimit !== undefined) {
241
+ query["before_limit"] = params?.beforeLimit;
242
+ }
243
+ if (params?.afterLimit !== undefined) {
244
+ query["after_limit"] = params?.afterLimit;
245
+ }
246
+ if (params?.includeAnchor !== undefined) {
247
+ query["include_anchor"] = params?.includeAnchor;
248
+ }
249
+ if (params?.anchorAgentMode !== undefined) {
250
+ query["anchor_agent_mode"] = params?.anchorAgentMode;
251
+ }
252
+ if (params?.anchorAgent !== undefined) {
253
+ query["anchor_agent"] = params?.anchorAgent;
254
+ }
255
+ if (params?.includeReplyCounts !== undefined) {
256
+ query["include_reply_counts"] = params?.includeReplyCounts;
257
+ }
258
+ return this.http.request(`/api/v1/threads/${thread}/messages`, { query });
60
259
  }
260
+ /**
261
+ * Update a thread's profile picture
262
+ * Uploads a new profile picture for the specified thread and returns the updated
263
+ * thread object. The image must be supplied as a base64-encoded string with its
264
+ * MIME type.
265
+ * The authenticated user must own the thread or be a team owner of the workspace
266
+ * the thread belongs to. Supplying invalid base64 data returns 422.
267
+ * @param thread - Thread ID (`thr_...`). The authenticated user must have permission to update this thread.
268
+ * @param input - Request body.
269
+ * @param input.picture - Profile picture payload. Must include the base64-encoded image data and its MIME type.
270
+ * @returns The thread object after the profile picture has been updated.
271
+ */
61
272
  async picture(thread, input) {
62
273
  return this.http.request(`/api/v1/threads/${thread}/picture`, { method: "PUT", body: input });
63
274
  }
275
+ /**
276
+ * Retrieve a thread's read status
277
+ * Returns the read status of a thread for the specified user, including the ID
278
+ * of the last message they have read and the number of unread messages remaining.
279
+ * For user-authenticated requests, the status is always returned for the
280
+ * authenticated user and the `user` parameter is ignored. For server-to-server
281
+ * (S2S) requests, the `user` parameter is required and must be a valid user ID.
282
+ * Returns 404 if the thread does not exist or the caller does not have access
283
+ * to it.
284
+ * @param thread - Thread ID (`thr_...`). Must be accessible to the authenticated user or, for S2S requests, to the specified user.
285
+ * @param params - Query parameters.
286
+ * @param params.user - User ID (`usr_...`) whose read status to retrieve. Required for S2S requests; ignored for user-authenticated requests, which always return the status for the authenticated user.
287
+ * @returns The read status record for the requested thread and user.
288
+ */
64
289
  async readStatus(thread, params) {
65
- return this.http.request(`/api/v1/threads/${thread}/read_status`, { query: params });
290
+ const query = {};
291
+ if (params?.user !== undefined) {
292
+ query["user"] = params?.user;
293
+ }
294
+ return this.http.request(`/api/v1/threads/${thread}/read_status`, { query });
66
295
  }
296
+ /**
297
+ * Search context items within a thread
298
+ * Performs a full-text search over context items (messages, files, and other
299
+ * indexed sources) attached to the specified thread. Returns tagged objects
300
+ * whose content matches the query string.
301
+ * Use the `type` param to restrict results to a particular context source. All
302
+ * accessible context source types are searched when `type` is omitted. The
303
+ * authenticated user must have access to the thread.
304
+ * @param thread - Thread ID (`thr_...`). Must be accessible to the authenticated user.
305
+ * @param params - Query parameters.
306
+ * @param params.q - Full-text search query. Results are ranked by relevance to this string.
307
+ * @param params.type - Context source type to restrict the search to, e.g. `"thread/messages"`. Omit to search across all context sources for the thread.
308
+ * @returns Successful response
309
+ */
67
310
  async search(thread, params) {
68
- return this.http.request(`/api/v1/threads/${thread}/search`, { query: params });
311
+ const query = {};
312
+ query["q"] = params?.q;
313
+ if (params?.type !== undefined) {
314
+ query["type"] = params?.type;
315
+ }
316
+ return this.http.request(`/api/v1/threads/${thread}/search`, { query });
69
317
  }
70
318
  }
71
319
  //# sourceMappingURL=threads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/v1/resources/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/v1/resources/threads.ts"],"names":[],"mappings":"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"}