@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.
- package/README.md +86 -0
- package/dist/auth.d.ts +143 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +187 -1
- package/dist/auth.js.map +1 -1
- package/dist/channels/api_chat_channel.d.ts +4 -0
- package/dist/channels/api_chat_channel.d.ts.map +1 -1
- package/dist/channels/api_chat_channel.js +9 -1
- package/dist/channels/api_chat_channel.js.map +1 -1
- package/dist/client.d.ts +26 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +27 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/runtime/http-client.d.ts +17 -0
- package/dist/runtime/http-client.d.ts.map +1 -1
- package/dist/runtime/http-client.js +116 -0
- package/dist/runtime/http-client.js.map +1 -1
- package/dist/types/ai.d.ts +421 -14
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/ai.js +121 -41
- package/dist/types/ai.js.map +1 -1
- package/dist/types/artifacts.d.ts +81 -24
- package/dist/types/artifacts.d.ts.map +1 -1
- package/dist/types/artifacts.js +39 -21
- package/dist/types/artifacts.js.map +1 -1
- package/dist/types/automations.d.ts +41 -9
- package/dist/types/automations.d.ts.map +1 -1
- package/dist/types/automations.js +25 -17
- package/dist/types/automations.js.map +1 -1
- package/dist/types/chat.d.ts +21560 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +70 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/common.d.ts +17031 -2136
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +1701 -332
- package/dist/types/common.js.map +1 -1
- package/dist/types/config.d.ts +245 -37
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +86 -34
- package/dist/types/config.js.map +1 -1
- package/dist/types/image.d.ts +27 -4
- package/dist/types/image.d.ts.map +1 -1
- package/dist/types/image.js +17 -10
- package/dist/types/image.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/invites.d.ts +20 -11
- package/dist/types/invites.d.ts.map +1 -1
- package/dist/types/invites.js +9 -12
- package/dist/types/invites.js.map +1 -1
- package/dist/types/notifications.d.ts +163 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/types/notifications.js +44 -0
- package/dist/types/notifications.js.map +1 -0
- package/dist/types/teams.d.ts +1640 -231
- package/dist/types/teams.d.ts.map +1 -1
- package/dist/types/teams.js +76 -45
- package/dist/types/teams.js.map +1 -1
- package/dist/types/threads.d.ts +1007 -243
- package/dist/types/threads.d.ts.map +1 -1
- package/dist/types/threads.js +84 -51
- package/dist/types/threads.js.map +1 -1
- package/dist/types/users.d.ts +98 -18
- package/dist/types/users.d.ts.map +1 -1
- package/dist/types/users.js +43 -18
- package/dist/types/users.js.map +1 -1
- package/dist/v1/resources/activity_feed.d.ts +90 -0
- package/dist/v1/resources/activity_feed.d.ts.map +1 -1
- package/dist/v1/resources/activity_feed.js +56 -2
- package/dist/v1/resources/activity_feed.js.map +1 -1
- package/dist/v1/resources/agent_computers.d.ts +48 -2
- package/dist/v1/resources/agent_computers.d.ts.map +1 -1
- package/dist/v1/resources/agent_computers.js +48 -1
- package/dist/v1/resources/agent_computers.js.map +1 -1
- package/dist/v1/resources/agent_env_vars.d.ts +50 -0
- package/dist/v1/resources/agent_env_vars.d.ts.map +1 -0
- package/dist/v1/resources/agent_env_vars.js +56 -0
- package/dist/v1/resources/agent_env_vars.js.map +1 -0
- package/dist/v1/resources/agent_health_actions.d.ts +43 -0
- package/dist/v1/resources/agent_health_actions.d.ts.map +1 -0
- package/dist/v1/resources/agent_health_actions.js +50 -0
- package/dist/v1/resources/agent_health_actions.js.map +1 -0
- package/dist/v1/resources/agent_installations.d.ts +100 -0
- package/dist/v1/resources/agent_installations.d.ts.map +1 -1
- package/dist/v1/resources/agent_installations.js +106 -2
- package/dist/v1/resources/agent_installations.js.map +1 -1
- package/dist/v1/resources/agent_routine_runs.d.ts +33 -0
- package/dist/v1/resources/agent_routine_runs.d.ts.map +1 -0
- package/dist/v1/resources/agent_routine_runs.js +48 -0
- package/dist/v1/resources/agent_routine_runs.js.map +1 -0
- package/dist/v1/resources/agent_routines.d.ts +148 -2
- package/dist/v1/resources/agent_routines.d.ts.map +1 -1
- package/dist/v1/resources/agent_routines.js +168 -3
- package/dist/v1/resources/agent_routines.js.map +1 -1
- package/dist/v1/resources/agent_sessions.d.ts +118 -1
- package/dist/v1/resources/agent_sessions.d.ts.map +1 -1
- package/dist/v1/resources/agent_sessions.js +134 -2
- package/dist/v1/resources/agent_sessions.js.map +1 -1
- package/dist/v1/resources/agent_skills.d.ts +83 -1
- package/dist/v1/resources/agent_skills.d.ts.map +1 -1
- package/dist/v1/resources/agent_skills.js +87 -2
- package/dist/v1/resources/agent_skills.js.map +1 -1
- package/dist/v1/resources/agent_tools.d.ts +109 -2
- package/dist/v1/resources/agent_tools.d.ts.map +1 -1
- package/dist/v1/resources/agent_tools.js +114 -2
- package/dist/v1/resources/agent_tools.js.map +1 -1
- package/dist/v1/resources/agents.d.ts +519 -9
- package/dist/v1/resources/agents.d.ts.map +1 -1
- package/dist/v1/resources/agents.js +516 -12
- package/dist/v1/resources/agents.js.map +1 -1
- package/dist/v1/resources/ai.d.ts +174 -3
- package/dist/v1/resources/ai.d.ts.map +1 -1
- package/dist/v1/resources/ai.js +114 -3
- package/dist/v1/resources/ai.js.map +1 -1
- package/dist/v1/resources/artifacts.d.ts +73 -0
- package/dist/v1/resources/artifacts.d.ts.map +1 -1
- package/dist/v1/resources/artifacts.js +74 -2
- package/dist/v1/resources/artifacts.js.map +1 -1
- package/dist/v1/resources/automation_runs.d.ts +8 -4
- package/dist/v1/resources/automation_runs.d.ts.map +1 -1
- package/dist/v1/resources/automation_runs.js +9 -5
- package/dist/v1/resources/automation_runs.js.map +1 -1
- package/dist/v1/resources/automations.d.ts +20 -0
- package/dist/v1/resources/automations.d.ts.map +1 -1
- package/dist/v1/resources/automations.js +21 -1
- package/dist/v1/resources/automations.js.map +1 -1
- package/dist/v1/resources/bug_reports.d.ts +29 -0
- package/dist/v1/resources/bug_reports.d.ts.map +1 -0
- package/dist/v1/resources/bug_reports.js +29 -0
- package/dist/v1/resources/bug_reports.js.map +1 -0
- package/dist/v1/resources/config.d.ts +437 -4
- package/dist/v1/resources/config.d.ts.map +1 -1
- package/dist/v1/resources/config.js +497 -9
- package/dist/v1/resources/config.js.map +1 -1
- package/dist/v1/resources/custom_objects.d.ts +117 -2
- package/dist/v1/resources/custom_objects.d.ts.map +1 -1
- package/dist/v1/resources/custom_objects.js +132 -3
- package/dist/v1/resources/custom_objects.js.map +1 -1
- package/dist/v1/resources/files.d.ts +62 -0
- package/dist/v1/resources/files.d.ts.map +1 -0
- package/dist/v1/resources/files.js +58 -0
- package/dist/v1/resources/files.js.map +1 -0
- package/dist/v1/resources/index.d.ts +13 -0
- package/dist/v1/resources/index.d.ts.map +1 -1
- package/dist/v1/resources/index.js +14 -1
- package/dist/v1/resources/index.js.map +1 -1
- package/dist/v1/resources/installation_sources.d.ts +12 -0
- package/dist/v1/resources/installation_sources.d.ts.map +1 -1
- package/dist/v1/resources/installation_sources.js +13 -1
- package/dist/v1/resources/installation_sources.js.map +1 -1
- package/dist/v1/resources/invites.d.ts +15 -0
- package/dist/v1/resources/invites.d.ts.map +1 -1
- package/dist/v1/resources/invites.js +16 -1
- package/dist/v1/resources/invites.js.map +1 -1
- package/dist/v1/resources/knowledge_documents.d.ts +104 -0
- package/dist/v1/resources/knowledge_documents.d.ts.map +1 -0
- package/dist/v1/resources/knowledge_documents.js +112 -0
- package/dist/v1/resources/knowledge_documents.js.map +1 -0
- package/dist/v1/resources/knowledge_sources.d.ts +190 -0
- package/dist/v1/resources/knowledge_sources.d.ts.map +1 -0
- package/dist/v1/resources/knowledge_sources.js +176 -0
- package/dist/v1/resources/knowledge_sources.js.map +1 -0
- package/dist/v1/resources/kv.d.ts +73 -0
- package/dist/v1/resources/kv.d.ts.map +1 -1
- package/dist/v1/resources/kv.js +96 -3
- package/dist/v1/resources/kv.js.map +1 -1
- package/dist/v1/resources/notification_preferences.d.ts +61 -0
- package/dist/v1/resources/notification_preferences.d.ts.map +1 -0
- package/dist/v1/resources/notification_preferences.js +65 -0
- package/dist/v1/resources/notification_preferences.js.map +1 -0
- package/dist/v1/resources/notifications.d.ts +133 -0
- package/dist/v1/resources/notifications.d.ts.map +1 -0
- package/dist/v1/resources/notifications.js +136 -0
- package/dist/v1/resources/notifications.js.map +1 -0
- package/dist/v1/resources/orgs.d.ts +18 -0
- package/dist/v1/resources/orgs.d.ts.map +1 -1
- package/dist/v1/resources/orgs.js +30 -2
- package/dist/v1/resources/orgs.js.map +1 -1
- package/dist/v1/resources/slack_channel_bindings.d.ts +101 -0
- package/dist/v1/resources/slack_channel_bindings.d.ts.map +1 -0
- package/dist/v1/resources/slack_channel_bindings.js +114 -0
- package/dist/v1/resources/slack_channel_bindings.js.map +1 -0
- package/dist/v1/resources/solution_categories.d.ts +36 -0
- package/dist/v1/resources/solution_categories.d.ts.map +1 -0
- package/dist/v1/resources/solution_categories.js +55 -0
- package/dist/v1/resources/solution_categories.js.map +1 -0
- package/dist/v1/resources/solution_tags.d.ts +37 -0
- package/dist/v1/resources/solution_tags.d.ts.map +1 -0
- package/dist/v1/resources/solution_tags.js +54 -0
- package/dist/v1/resources/solution_tags.js.map +1 -0
- package/dist/v1/resources/solutions.d.ts +313 -0
- package/dist/v1/resources/solutions.d.ts.map +1 -0
- package/dist/v1/resources/solutions.js +218 -0
- package/dist/v1/resources/solutions.js.map +1 -0
- package/dist/v1/resources/team_memberships.d.ts +31 -0
- package/dist/v1/resources/team_memberships.d.ts.map +1 -1
- package/dist/v1/resources/team_memberships.js +49 -2
- package/dist/v1/resources/team_memberships.js.map +1 -1
- package/dist/v1/resources/teams.d.ts +461 -49
- package/dist/v1/resources/teams.d.ts.map +1 -1
- package/dist/v1/resources/teams.js +319 -27
- package/dist/v1/resources/teams.js.map +1 -1
- package/dist/v1/resources/thread_messages.d.ts +70 -0
- package/dist/v1/resources/thread_messages.d.ts.map +1 -1
- package/dist/v1/resources/thread_messages.js +85 -2
- package/dist/v1/resources/thread_messages.js.map +1 -1
- package/dist/v1/resources/threads.d.ts +221 -0
- package/dist/v1/resources/threads.d.ts.map +1 -1
- package/dist/v1/resources/threads.js +252 -4
- package/dist/v1/resources/threads.js.map +1 -1
- package/dist/v1/resources/users.d.ts +215 -39
- package/dist/v1/resources/users.d.ts.map +1 -1
- package/dist/v1/resources/users.js +121 -16
- package/dist/v1/resources/users.js.map +1 -1
- package/dist/v1.d.ts +26 -0
- package/dist/v1.d.ts.map +1 -1
- package/dist/v1.js +40 -1
- package/dist/v1.js.map +1 -1
- package/package.json +4 -2
- package/dist/types/agents.d.ts +0 -2084
- package/dist/types/agents.d.ts.map +0 -1
- package/dist/types/agents.js +0 -203
- 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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,yDAAyD;AACzD,wEAAwE;AACxE,6BAA6B;AAK7B,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,KAAoH;QAC/I,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,KAA4C;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IAIL;IAHX,OAAO,CAAuB;IAC9B,QAAQ,CAAkB;IAEnC,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/v1/resources/threads.ts"],"names":[],"mappings":"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"}
|