@relevanceai/sdk 3.0.0-alpha.2 → 3.0.0-alpha.3

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 (58) hide show
  1. package/README.md +422 -193
  2. package/esm/agent.d.ts +20 -8
  3. package/esm/agent.js +32 -12
  4. package/esm/client.d.ts +4 -8
  5. package/esm/client.js +11 -12
  6. package/esm/emitter.d.ts +16 -0
  7. package/esm/emitter.js +15 -0
  8. package/{script/events.d.ts → esm/event.d.ts} +10 -13
  9. package/esm/{events.js → event.js} +0 -6
  10. package/esm/message/agent-error.d.ts +6 -0
  11. package/esm/message/agent-error.js +3 -0
  12. package/esm/message/agent.d.ts +9 -0
  13. package/esm/message/agent.js +9 -0
  14. package/esm/message/task.d.ts +42 -0
  15. package/esm/message/task.js +38 -0
  16. package/esm/message/tool.d.ts +108 -0
  17. package/esm/message/tool.js +109 -0
  18. package/esm/message/user.d.ts +20 -0
  19. package/esm/message/user.js +19 -0
  20. package/esm/mod.d.ts +6 -3
  21. package/esm/mod.js +1 -0
  22. package/esm/task.d.ts +50 -18
  23. package/esm/task.js +228 -65
  24. package/esm/utils.d.ts +1 -5
  25. package/esm/utils.js +1 -13
  26. package/package.json +1 -1
  27. package/script/agent.d.ts +20 -8
  28. package/script/agent.js +32 -12
  29. package/script/client.d.ts +4 -8
  30. package/script/client.js +11 -12
  31. package/script/emitter.d.ts +16 -0
  32. package/script/emitter.js +19 -0
  33. package/{esm/events.d.ts → script/event.d.ts} +10 -13
  34. package/script/{events.js → event.js} +1 -8
  35. package/script/message/agent-error.d.ts +6 -0
  36. package/script/message/agent-error.js +7 -0
  37. package/script/message/agent.d.ts +9 -0
  38. package/script/message/agent.js +13 -0
  39. package/script/message/task.d.ts +42 -0
  40. package/script/message/task.js +42 -0
  41. package/script/message/tool.d.ts +108 -0
  42. package/script/message/tool.js +113 -0
  43. package/script/message/user.d.ts +20 -0
  44. package/script/message/user.js +23 -0
  45. package/script/mod.d.ts +6 -3
  46. package/script/mod.js +3 -1
  47. package/script/task.d.ts +50 -18
  48. package/script/task.js +228 -65
  49. package/script/utils.d.ts +1 -5
  50. package/script/utils.js +1 -14
  51. package/esm/agent-task.d.ts +0 -61
  52. package/esm/agent-task.js +0 -112
  53. package/esm/message.d.ts +0 -18
  54. package/esm/message.js +0 -18
  55. package/script/agent-task.d.ts +0 -61
  56. package/script/agent-task.js +0 -116
  57. package/script/message.d.ts +0 -18
  58. package/script/message.js +0 -22
package/esm/agent.d.ts CHANGED
@@ -1,17 +1,29 @@
1
- import type { AgentTaskState } from "./agent-task.js";
2
1
  import { Client } from "./client.js";
2
+ import type { Region } from "./region.js";
3
+ import { Task } from "./task.js";
4
+ interface AgentConfig {
5
+ agent_id: string;
6
+ public: boolean;
7
+ name?: string;
8
+ description?: string;
9
+ emoji?: string;
10
+ insert_date_: string;
11
+ update_date_: string;
12
+ }
3
13
  export declare class Agent {
4
14
  #private;
5
15
  private readonly client;
6
- static fetch(agentId: string, cli?: Client): Promise<Agent>;
7
- private constructor();
16
+ static get(id: string, client?: Client): Promise<Agent>;
17
+ constructor(config: AgentConfig, client: Client);
8
18
  get id(): string;
9
19
  get name(): string | undefined;
10
20
  get description(): string | undefined;
11
21
  get avatar(): string | undefined;
12
- isPublic(): boolean;
13
- trigger(message: string, taskId?: string): Promise<{
14
- id: string;
15
- state: AgentTaskState;
16
- }>;
22
+ get createdAt(): Date;
23
+ get updatedAt(): Date;
24
+ get region(): Region;
25
+ get project(): string;
26
+ getTask(taskId: string): Promise<Task>;
27
+ sendMessage(message: string, task?: Task): Promise<Task>;
17
28
  }
29
+ export {};
package/esm/agent.js CHANGED
@@ -1,16 +1,20 @@
1
1
  import { Client } from "./client.js";
2
+ import { resetSubscribeBackoff, Task } from "./task.js";
2
3
  import { randomUUID } from "./utils.js";
3
4
  const taskPrefixDelimiter = "_-_";
4
5
  export class Agent {
5
6
  #config;
6
7
  client;
7
- static async fetch(agentId, cli = Client.default()) {
8
- const config = await cli.fetch(`/agents/${agentId}/get`);
9
- return new Agent(config.agent, cli);
8
+ static async get(id, client = Client.default()) {
9
+ const config = await Agent.#fetchConfig(id, client);
10
+ return new Agent(config, client);
11
+ }
12
+ static #fetchConfig(agentId, client = Client.default()) {
13
+ return client.fetch(`/agents/${agentId}/get`).then(({ agent }) => agent);
10
14
  }
11
15
  constructor(config, client) {
12
- this.#config = config;
13
16
  this.client = client;
17
+ this.#config = config;
14
18
  }
15
19
  get id() {
16
20
  return this.#config.agent_id;
@@ -24,14 +28,30 @@ export class Agent {
24
28
  get avatar() {
25
29
  return this.#config.emoji;
26
30
  }
27
- isPublic() {
28
- return this.#config.public;
31
+ get createdAt() {
32
+ return new Date(this.#config.insert_date_);
33
+ }
34
+ get updatedAt() {
35
+ return new Date(this.#config.update_date_);
36
+ }
37
+ get region() {
38
+ return this.client.region;
29
39
  }
30
- async trigger(message, taskId) {
40
+ get project() {
41
+ return this.client.project;
42
+ }
43
+ getTask(taskId) {
44
+ return Task.get(taskId, this, this.client);
45
+ }
46
+ async sendMessage(message, task) {
47
+ let taskId;
31
48
  // embed keys require a task prefixing for new tasks
32
- if (!taskId && this.client.isEmbedKey()) {
49
+ if (!task && this.client.isEmbedKey()) {
33
50
  taskId = [this.client.key.taskPrefix, await randomUUID()].join(taskPrefixDelimiter);
34
51
  }
52
+ else if (task) {
53
+ taskId = task.id;
54
+ }
35
55
  const res = await this.client.fetch("/agents/trigger", {
36
56
  method: "POST",
37
57
  body: JSON.stringify({
@@ -44,9 +64,9 @@ export class Agent {
44
64
  },
45
65
  }),
46
66
  });
47
- return {
48
- id: res.conversation_id,
49
- state: res.state,
50
- };
67
+ if (task) {
68
+ task[resetSubscribeBackoff]();
69
+ }
70
+ return task ?? this.getTask(res.conversation_id);
51
71
  }
52
72
  }
package/esm/client.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- import { Agent } from "./agent.js";
2
1
  import { type Region } from "./region.js";
3
- import { AgentTask } from "./agent-task.js";
4
2
  import { Key } from "./key.js";
5
3
  type CreateClientOptions = {
6
4
  apiKey: string;
@@ -11,7 +9,7 @@ type CreateClientOptions = {
11
9
  * Creates and returns the _default_ client instance.
12
10
  *
13
11
  * @throws {Error} if a default client already exists.
14
- * @see {Client.default}
12
+ * @see {@link Client.default}
15
13
  */
16
14
  export declare function createClient(keyOrOptions: Key | CreateClientOptions): Client;
17
15
  export declare class Client {
@@ -19,7 +17,7 @@ export declare class Client {
19
17
  * Returns the _default_ client instance.
20
18
  *
21
19
  * @throws {Error} if there is no default client.
22
- * @see {createClient}
20
+ * @see {@link createClient}
23
21
  */
24
22
  static default(): Client;
25
23
  readonly key: Key;
@@ -28,9 +26,7 @@ export declare class Client {
28
26
  get region(): Region;
29
27
  get project(): string;
30
28
  isEmbedKey(): boolean;
31
- createTask({ agent }: {
32
- agent: string | Agent;
33
- }): Promise<AgentTask>;
34
- fetch<T>(input: `/agents/trigger` | `/agents/${string}/get` | `/agents/${string}/tasks/${string}/metadata` | `/agents/${string}/tasks/${string}/view`, init?: RequestInit): Promise<T>;
29
+ fetch<T>(input: "/agents/trigger" | `/agents/${string}/get` | `/agents/${string}/tasks/${string}/metadata` | `/agents/${string}/tasks/${string}/view` | "/agents/conversations/list", init?: RequestInit): Promise<T>;
30
+ url(path: string): URL;
35
31
  }
36
32
  export {};
package/esm/client.js CHANGED
@@ -1,6 +1,4 @@
1
- import { Agent } from "./agent.js";
2
1
  import { regionBaseURL } from "./region.js";
3
- import { AgentTask } from "./agent-task.js";
4
2
  import { cleanPath } from "./utils.js";
5
3
  import { Key } from "./key.js";
6
4
  let defaultClient;
@@ -8,7 +6,7 @@ let defaultClient;
8
6
  * Creates and returns the _default_ client instance.
9
7
  *
10
8
  * @throws {Error} if a default client already exists.
11
- * @see {Client.default}
9
+ * @see {@link Client.default}
12
10
  */
13
11
  export function createClient(keyOrOptions) {
14
12
  if (defaultClient) {
@@ -27,7 +25,7 @@ export class Client {
27
25
  * Returns the _default_ client instance.
28
26
  *
29
27
  * @throws {Error} if there is no default client.
30
- * @see {createClient}
28
+ * @see {@link createClient}
31
29
  */
32
30
  static default() {
33
31
  if (!defaultClient) {
@@ -50,20 +48,21 @@ export class Client {
50
48
  isEmbedKey() {
51
49
  return this.key.isEmbed();
52
50
  }
53
- async createTask({ agent }) {
54
- if (agent) {
55
- return new AgentTask(typeof agent === "string" ? await Agent.fetch(agent) : agent, undefined, this);
56
- }
57
- throw new Error("task not implemented");
58
- }
59
51
  async fetch(input, init) {
60
- const url = new URL(cleanPath(input), this.baseURL);
52
+ const url = this.url(input);
61
53
  const headers = new Headers(this.key.fetchHeaders());
62
54
  const response = await fetch(url, Object.assign({ headers }, init));
63
55
  if (!response.ok) {
64
- console.error(url, init, headers);
56
+ const body = await response.text();
57
+ console.error(url, init, headers, body);
65
58
  throw new Error(response.statusText);
66
59
  }
67
60
  return response.json();
68
61
  }
62
+ url(path) {
63
+ if (/^https?:\/\//.test(path)) {
64
+ return new URL(path);
65
+ }
66
+ return new URL(cleanPath(path), this.baseURL);
67
+ }
69
68
  }
@@ -0,0 +1,16 @@
1
+ export type EventMap = Record<string, unknown>;
2
+ /**
3
+ * Emitter
4
+ *
5
+ * Abstraction for type-assisting event targets.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare abstract class Emitter<M extends EventMap = Record<string, never>> extends EventTarget {
10
+ addEventListener<K extends keyof M>(type: Extract<K, string>, listener: ((event: CustomEvent<M[K]>) => void) | {
11
+ handleEvent: (event: CustomEvent<M[K]>) => void;
12
+ } | null, options?: boolean | AddEventListenerOptions): void;
13
+ removeEventListener<K extends keyof M>(type: Extract<K, string>, listener: ((event: CustomEvent<M[K]>) => void) | {
14
+ handleEvent: (event: CustomEvent<M[K]>) => void;
15
+ } | null, options?: boolean | AddEventListenerOptions): void;
16
+ }
package/esm/emitter.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Emitter
3
+ *
4
+ * Abstraction for type-assisting event targets.
5
+ *
6
+ * @internal
7
+ */
8
+ export class Emitter extends EventTarget {
9
+ addEventListener(type, listener, options) {
10
+ super.addEventListener(type, listener, options);
11
+ }
12
+ removeEventListener(type, listener, options) {
13
+ super.removeEventListener(type, listener, options);
14
+ }
15
+ }
@@ -1,4 +1,7 @@
1
- import type { TaskMessage } from "./message.js";
1
+ import type { AgentErrorMessage } from "./message/agent-error.js";
2
+ import type { AgentMessage } from "./message/agent.js";
3
+ import type { ToolMessage } from "./message/tool.js";
4
+ import type { UserMessage } from "./message/user.js";
2
5
  import type { TaskStatus } from "./task.js";
3
6
  export declare class TaskStartEvent extends CustomEvent<{
4
7
  id: string;
@@ -14,27 +17,21 @@ export declare class TaskStatusEvent extends CustomEvent<{
14
17
  constructor(status: TaskStatus);
15
18
  }
16
19
  export declare class TaskMessageEvent extends CustomEvent<{
17
- message: TaskMessage;
20
+ message: AgentMessage | UserMessage;
18
21
  }> {
19
22
  readonly type = "message";
20
- constructor(message: TaskMessage);
23
+ constructor(message: AgentMessage | UserMessage);
21
24
  isUserMessage(): boolean;
22
25
  }
23
26
  export declare class TaskUpdateEvent extends CustomEvent<{
24
- message: TaskMessage;
27
+ message: ToolMessage;
25
28
  }> {
26
29
  readonly type = "update";
27
- constructor(message: TaskMessage);
28
- }
29
- export declare class TaskActionEvent extends CustomEvent<{
30
- message: TaskMessage;
31
- }> {
32
- readonly type = "action";
33
- constructor(message: TaskMessage);
30
+ constructor(message: ToolMessage);
34
31
  }
35
32
  export declare class TaskErrorEvent extends CustomEvent<{
36
- message: TaskMessage;
33
+ message: AgentErrorMessage;
37
34
  }> {
38
35
  readonly type = "error";
39
- constructor(message: TaskMessage);
36
+ constructor(message: AgentErrorMessage);
40
37
  }
@@ -25,12 +25,6 @@ export class TaskUpdateEvent extends CustomEvent {
25
25
  super("update", { detail: { message } });
26
26
  }
27
27
  }
28
- export class TaskActionEvent extends CustomEvent {
29
- type = "action";
30
- constructor(message) {
31
- super("action", { detail: { message } });
32
- }
33
- }
34
28
  export class TaskErrorEvent extends CustomEvent {
35
29
  type = "error";
36
30
  constructor(message) {
@@ -0,0 +1,6 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export interface AgentErrorMessageContent {
3
+ type: "agent-error";
4
+ }
5
+ export declare class AgentErrorMessage extends TaskMessage<AgentErrorMessageContent> {
6
+ }
@@ -0,0 +1,3 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export class AgentErrorMessage extends TaskMessage {
3
+ }
@@ -0,0 +1,9 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export interface AgentMessageContent {
3
+ type: "agent-message";
4
+ text: string;
5
+ }
6
+ export declare class AgentMessage extends TaskMessage<AgentMessageContent> {
7
+ get text(): string;
8
+ get agentId(): string;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export class AgentMessage extends TaskMessage {
3
+ get text() {
4
+ return this.message.content.text;
5
+ }
6
+ get agentId() {
7
+ return "";
8
+ }
9
+ }
@@ -0,0 +1,42 @@
1
+ import type { AgentMessage } from "./agent.js";
2
+ import type { AgentErrorMessage } from "./agent-error.js";
3
+ import type { ToolMessage } from "./tool.js";
4
+ import type { UserMessage } from "./user.js";
5
+ export type AnyTaskMessage = AgentMessage | AgentErrorMessage | ToolMessage | UserMessage;
6
+ interface MessageContent {
7
+ type: AnyTaskMessage["type"];
8
+ }
9
+ export interface TaskMessageData<C extends MessageContent = MessageContent> {
10
+ item_id: string;
11
+ insert_date_: string;
12
+ content: C;
13
+ }
14
+ export declare abstract class TaskMessage<C extends MessageContent = MessageContent> {
15
+ protected readonly message: TaskMessageData<C>;
16
+ constructor(message: TaskMessageData<C>);
17
+ /**
18
+ * The task's message type.
19
+ *
20
+ * @property {"agent-error" | "agent-message" | "tool-run" | "user-message"}
21
+ */
22
+ get type(): C["type"];
23
+ /**
24
+ * The task message ID. Used for referencing the message.
25
+ *
26
+ * @property {string}
27
+ */
28
+ get id(): string;
29
+ /**
30
+ * The time the task was created.
31
+ *
32
+ * @property {Date}
33
+ */
34
+ get createdAt(): Date;
35
+ /**
36
+ * Returns if the message was sent from the agent.
37
+ *
38
+ * @returns {boolean}
39
+ */
40
+ isAgent(): boolean;
41
+ }
42
+ export {};
@@ -0,0 +1,38 @@
1
+ export class TaskMessage {
2
+ message;
3
+ constructor(message) {
4
+ this.message = message;
5
+ }
6
+ /**
7
+ * The task's message type.
8
+ *
9
+ * @property {"agent-error" | "agent-message" | "tool-run" | "user-message"}
10
+ */
11
+ get type() {
12
+ return this.message.content.type;
13
+ }
14
+ /**
15
+ * The task message ID. Used for referencing the message.
16
+ *
17
+ * @property {string}
18
+ */
19
+ get id() {
20
+ return this.message.item_id;
21
+ }
22
+ /**
23
+ * The time the task was created.
24
+ *
25
+ * @property {Date}
26
+ */
27
+ get createdAt() {
28
+ return new Date(this.message.insert_date_);
29
+ }
30
+ /**
31
+ * Returns if the message was sent from the agent.
32
+ *
33
+ * @returns {boolean}
34
+ */
35
+ isAgent() {
36
+ return this.type === "agent-message";
37
+ }
38
+ }
@@ -0,0 +1,108 @@
1
+ import type { Region } from "../region.js";
2
+ import { TaskMessage } from "./task.js";
3
+ export interface ToolMessageContent {
4
+ type: "tool-run";
5
+ tool_run_state: "cancelled" | "error" | "finished" | "pending" | "running";
6
+ output: Record<string, unknown> & {
7
+ _agent_conversation_details?: {
8
+ agent_id: string;
9
+ conversation_id: string;
10
+ };
11
+ };
12
+ params: {
13
+ resolved?: Record<string, unknown>;
14
+ valid: boolean;
15
+ };
16
+ errors: {
17
+ body: string;
18
+ raw: string;
19
+ step_name: string;
20
+ }[];
21
+ tool_config: {
22
+ id: string;
23
+ type: "tool" | "agent";
24
+ region: Region;
25
+ project: string;
26
+ };
27
+ }
28
+ export declare class ToolMessage extends TaskMessage<ToolMessageContent> {
29
+ /**
30
+ * The tool status for _this_ message.
31
+ *
32
+ * @property {"cancelled" | "error" | "finished" | "pending" | "running"}
33
+ */
34
+ get status(): "cancelled" | "error" | "finished" | "pending" | "running";
35
+ /**
36
+ * Parameters used to call the tool.
37
+ *
38
+ * @property {object}
39
+ */
40
+ get params(): Record<string, unknown> | null;
41
+ /**
42
+ * The tool's output. Will be `null` if the status is **not** "finished".
43
+ *
44
+ * @property {object|null}
45
+ */
46
+ get output(): Record<string, unknown> | null;
47
+ /**
48
+ * Tool errors.
49
+ *
50
+ * @property {array}
51
+ * @see {@link ToolMessage#hasErrors}
52
+ */
53
+ get errors(): {
54
+ stepName: string;
55
+ message: string;
56
+ }[];
57
+ /**
58
+ * The tool's ID.
59
+ *
60
+ * @property {string}
61
+ */
62
+ get toolId(): string;
63
+ /**
64
+ * The agent's ID, if a sub-agent.
65
+ *
66
+ * @property {string}
67
+ * @see {@link ToolMessage.isSubAgent}
68
+ */
69
+ get agentId(): string | null;
70
+ /**
71
+ * The tool/agent's corresponding project.
72
+ *
73
+ * @property {string}
74
+ */
75
+ get project(): string;
76
+ /**
77
+ * The tool/agent's corresponding region.
78
+ *
79
+ * @property {Region}
80
+ */
81
+ get region(): Region;
82
+ /**
83
+ * The task ID the sub-agent ran. Will be `null` if the tool message is not
84
+ * a sub-agent.
85
+ *
86
+ * @property {string}
87
+ * @see {@link ToolMessage.isSubAgent}
88
+ */
89
+ get subAgentTaskId(): string | null;
90
+ /**
91
+ * Checks if the tool message came from a sub-agent.
92
+ *
93
+ * @returns {boolean}
94
+ */
95
+ isSubAgent(): boolean;
96
+ /**
97
+ * Checks if the tool call parameters where valid.
98
+ *
99
+ * @returns {boolean}
100
+ */
101
+ areParamsValid(): boolean;
102
+ /**
103
+ * Returns if the tool message has any errors.
104
+ *
105
+ * @returns {boolean}
106
+ */
107
+ hasErrors(): boolean;
108
+ }
@@ -0,0 +1,109 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export class ToolMessage extends TaskMessage {
3
+ /**
4
+ * The tool status for _this_ message.
5
+ *
6
+ * @property {"cancelled" | "error" | "finished" | "pending" | "running"}
7
+ */
8
+ get status() {
9
+ return this.message.content.tool_run_state;
10
+ }
11
+ /**
12
+ * Parameters used to call the tool.
13
+ *
14
+ * @property {object}
15
+ */
16
+ get params() {
17
+ return this.message.content.params.resolved ?? null;
18
+ }
19
+ /**
20
+ * The tool's output. Will be `null` if the status is **not** "finished".
21
+ *
22
+ * @property {object|null}
23
+ */
24
+ get output() {
25
+ return this.status === "finished" ? this.message.content.output : null;
26
+ }
27
+ /**
28
+ * Tool errors.
29
+ *
30
+ * @property {array}
31
+ * @see {@link ToolMessage#hasErrors}
32
+ */
33
+ get errors() {
34
+ return this.message.content.errors.map((e) => ({
35
+ stepName: e.step_name,
36
+ message: e.body,
37
+ }));
38
+ }
39
+ /**
40
+ * The tool's ID.
41
+ *
42
+ * @property {string}
43
+ */
44
+ get toolId() {
45
+ return this.message.content.tool_config.id;
46
+ }
47
+ /**
48
+ * The agent's ID, if a sub-agent.
49
+ *
50
+ * @property {string}
51
+ * @see {@link ToolMessage.isSubAgent}
52
+ */
53
+ get agentId() {
54
+ return this.isSubAgent()
55
+ ? this.message.content.output._agent_conversation_details?.agent_id
56
+ : null;
57
+ }
58
+ /**
59
+ * The tool/agent's corresponding project.
60
+ *
61
+ * @property {string}
62
+ */
63
+ get project() {
64
+ return this.message.content.tool_config.project;
65
+ }
66
+ /**
67
+ * The tool/agent's corresponding region.
68
+ *
69
+ * @property {Region}
70
+ */
71
+ get region() {
72
+ return this.message.content.tool_config.region;
73
+ }
74
+ /**
75
+ * The task ID the sub-agent ran. Will be `null` if the tool message is not
76
+ * a sub-agent.
77
+ *
78
+ * @property {string}
79
+ * @see {@link ToolMessage.isSubAgent}
80
+ */
81
+ get subAgentTaskId() {
82
+ return this.message.content.output._agent_conversation_details
83
+ ?.conversation_id ?? null;
84
+ }
85
+ /**
86
+ * Checks if the tool message came from a sub-agent.
87
+ *
88
+ * @returns {boolean}
89
+ */
90
+ isSubAgent() {
91
+ return this.message.content.tool_config.type === "agent";
92
+ }
93
+ /**
94
+ * Checks if the tool call parameters where valid.
95
+ *
96
+ * @returns {boolean}
97
+ */
98
+ areParamsValid() {
99
+ return this.message.content.params.valid;
100
+ }
101
+ /**
102
+ * Returns if the tool message has any errors.
103
+ *
104
+ * @returns {boolean}
105
+ */
106
+ hasErrors() {
107
+ return this.message.content.errors.length > 0;
108
+ }
109
+ }
@@ -0,0 +1,20 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export interface UserMessageContent {
3
+ type: "user-message";
4
+ text: string;
5
+ is_trigger_message: boolean;
6
+ }
7
+ export declare class UserMessage extends TaskMessage<UserMessageContent> {
8
+ /**
9
+ * The message as text sent.
10
+ *
11
+ * @property {string} text
12
+ */
13
+ get text(): string;
14
+ /**
15
+ * Returns if the message triggered a subject.
16
+ *
17
+ * @returns {boolean}
18
+ */
19
+ isTrigger(): boolean;
20
+ }
@@ -0,0 +1,19 @@
1
+ import { TaskMessage } from "./task.js";
2
+ export class UserMessage extends TaskMessage {
3
+ /**
4
+ * The message as text sent.
5
+ *
6
+ * @property {string} text
7
+ */
8
+ get text() {
9
+ return this.message.content.text;
10
+ }
11
+ /**
12
+ * Returns if the message triggered a subject.
13
+ *
14
+ * @returns {boolean}
15
+ */
16
+ isTrigger() {
17
+ return this.message.content.is_trigger_message;
18
+ }
19
+ }
package/esm/mod.d.ts CHANGED
@@ -2,6 +2,9 @@ export { Agent } from "./agent.js";
2
2
  export { Client, createClient } from "./client.js";
3
3
  export { Key } from "./key.js";
4
4
  export { type Region, REGION_AU, REGION_EU, REGION_US } from "./region.js";
5
- export type { AgentTask } from "./agent-task.js";
6
- export type { TaskMessage } from "./message.js";
7
- export type { Task, TaskStatus } from "./task.js";
5
+ export { Task, type TaskStatus } from "./task.js";
6
+ export type { AgentErrorMessage } from "./message/agent-error.js";
7
+ export type { AgentMessage } from "./message/agent.js";
8
+ export type { ToolMessage } from "./message/tool.js";
9
+ export type { UserMessage } from "./message/user.js";
10
+ export type { AnyTaskMessage } from "./message/task.js";