@vertesia/client 0.24.0-dev.202601221707
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/LICENSE +13 -0
- package/README.md +110 -0
- package/lib/cjs/AccountApi.js +85 -0
- package/lib/cjs/AccountApi.js.map +1 -0
- package/lib/cjs/AccountsApi.js +16 -0
- package/lib/cjs/AccountsApi.js.map +1 -0
- package/lib/cjs/AnalyticsApi.js +41 -0
- package/lib/cjs/AnalyticsApi.js.map +1 -0
- package/lib/cjs/ApiKeysApi.js +63 -0
- package/lib/cjs/ApiKeysApi.js.map +1 -0
- package/lib/cjs/AppsApi.js +119 -0
- package/lib/cjs/AppsApi.js.map +1 -0
- package/lib/cjs/CommandsApi.js +19 -0
- package/lib/cjs/CommandsApi.js.map +1 -0
- package/lib/cjs/EnvironmentsApi.js +72 -0
- package/lib/cjs/EnvironmentsApi.js.map +1 -0
- package/lib/cjs/GroupsApi.js +78 -0
- package/lib/cjs/GroupsApi.js.map +1 -0
- package/lib/cjs/IamApi.js +53 -0
- package/lib/cjs/IamApi.js.map +1 -0
- package/lib/cjs/InteractionBase.js +44 -0
- package/lib/cjs/InteractionBase.js.map +1 -0
- package/lib/cjs/InteractionCatalogApi.js +64 -0
- package/lib/cjs/InteractionCatalogApi.js.map +1 -0
- package/lib/cjs/InteractionOutput.js +300 -0
- package/lib/cjs/InteractionOutput.js.map +1 -0
- package/lib/cjs/InteractionResult.example.js +57 -0
- package/lib/cjs/InteractionResult.example.js.map +1 -0
- package/lib/cjs/InteractionsApi.js +262 -0
- package/lib/cjs/InteractionsApi.js.map +1 -0
- package/lib/cjs/MCPOAuthApi.js +62 -0
- package/lib/cjs/MCPOAuthApi.js.map +1 -0
- package/lib/cjs/ProjectsApi.js +72 -0
- package/lib/cjs/ProjectsApi.js.map +1 -0
- package/lib/cjs/PromptsApi.js +133 -0
- package/lib/cjs/PromptsApi.js.map +1 -0
- package/lib/cjs/RefsApi.js +14 -0
- package/lib/cjs/RefsApi.js.map +1 -0
- package/lib/cjs/RunsApi.js +113 -0
- package/lib/cjs/RunsApi.js.map +1 -0
- package/lib/cjs/SkillsApi.js +39 -0
- package/lib/cjs/SkillsApi.js.map +1 -0
- package/lib/cjs/StreamSource.js +17 -0
- package/lib/cjs/StreamSource.js.map +1 -0
- package/lib/cjs/TrainingApi.js +54 -0
- package/lib/cjs/TrainingApi.js.map +1 -0
- package/lib/cjs/UsersApi.js +13 -0
- package/lib/cjs/UsersApi.js.map +1 -0
- package/lib/cjs/client.js +360 -0
- package/lib/cjs/client.js.map +1 -0
- package/lib/cjs/execute.js +158 -0
- package/lib/cjs/execute.js.map +1 -0
- package/lib/cjs/index.js +22 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/nodejs/NodeStreamSource.js +45 -0
- package/lib/cjs/nodejs/NodeStreamSource.js.map +1 -0
- package/lib/cjs/nodejs/index.js +18 -0
- package/lib/cjs/nodejs/index.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/store/AnalyzeDocApi.js +56 -0
- package/lib/cjs/store/AnalyzeDocApi.js.map +1 -0
- package/lib/cjs/store/CollectionsApi.js +131 -0
- package/lib/cjs/store/CollectionsApi.js.map +1 -0
- package/lib/cjs/store/CommandsApi.js +17 -0
- package/lib/cjs/store/CommandsApi.js.map +1 -0
- package/lib/cjs/store/DashboardApi.js +182 -0
- package/lib/cjs/store/DashboardApi.js.map +1 -0
- package/lib/cjs/store/DataApi.js +433 -0
- package/lib/cjs/store/DataApi.js.map +1 -0
- package/lib/cjs/store/EmailApi.js +103 -0
- package/lib/cjs/store/EmailApi.js.map +1 -0
- package/lib/cjs/store/EmbeddingsApi.js +29 -0
- package/lib/cjs/store/EmbeddingsApi.js.map +1 -0
- package/lib/cjs/store/FilesApi.js +237 -0
- package/lib/cjs/store/FilesApi.js.map +1 -0
- package/lib/cjs/store/ObjectsApi.js +314 -0
- package/lib/cjs/store/ObjectsApi.js.map +1 -0
- package/lib/cjs/store/PendingAsksApi.js +43 -0
- package/lib/cjs/store/PendingAsksApi.js.map +1 -0
- package/lib/cjs/store/SchedulesApi.js +103 -0
- package/lib/cjs/store/SchedulesApi.js.map +1 -0
- package/lib/cjs/store/ToolsApi.js +21 -0
- package/lib/cjs/store/ToolsApi.js.map +1 -0
- package/lib/cjs/store/TypesApi.js +57 -0
- package/lib/cjs/store/TypesApi.js.map +1 -0
- package/lib/cjs/store/WorkersApi.js +16 -0
- package/lib/cjs/store/WorkersApi.js.map +1 -0
- package/lib/cjs/store/WorkflowsApi.js +596 -0
- package/lib/cjs/store/WorkflowsApi.js.map +1 -0
- package/lib/cjs/store/client.js +81 -0
- package/lib/cjs/store/client.js.map +1 -0
- package/lib/cjs/store/errors.js +11 -0
- package/lib/cjs/store/errors.js.map +1 -0
- package/lib/cjs/store/index.js +27 -0
- package/lib/cjs/store/index.js.map +1 -0
- package/lib/cjs/store/version.js +6 -0
- package/lib/cjs/store/version.js.map +1 -0
- package/lib/esm/AccountApi.js +82 -0
- package/lib/esm/AccountApi.js.map +1 -0
- package/lib/esm/AccountsApi.js +13 -0
- package/lib/esm/AccountsApi.js.map +1 -0
- package/lib/esm/AnalyticsApi.js +38 -0
- package/lib/esm/AnalyticsApi.js.map +1 -0
- package/lib/esm/ApiKeysApi.js +59 -0
- package/lib/esm/ApiKeysApi.js.map +1 -0
- package/lib/esm/AppsApi.js +116 -0
- package/lib/esm/AppsApi.js.map +1 -0
- package/lib/esm/CommandsApi.js +16 -0
- package/lib/esm/CommandsApi.js.map +1 -0
- package/lib/esm/EnvironmentsApi.js +69 -0
- package/lib/esm/EnvironmentsApi.js.map +1 -0
- package/lib/esm/GroupsApi.js +74 -0
- package/lib/esm/GroupsApi.js.map +1 -0
- package/lib/esm/IamApi.js +47 -0
- package/lib/esm/IamApi.js.map +1 -0
- package/lib/esm/InteractionBase.js +40 -0
- package/lib/esm/InteractionBase.js.map +1 -0
- package/lib/esm/InteractionCatalogApi.js +60 -0
- package/lib/esm/InteractionCatalogApi.js.map +1 -0
- package/lib/esm/InteractionOutput.js +293 -0
- package/lib/esm/InteractionOutput.js.map +1 -0
- package/lib/esm/InteractionResult.example.js +55 -0
- package/lib/esm/InteractionResult.example.js.map +1 -0
- package/lib/esm/InteractionsApi.js +259 -0
- package/lib/esm/InteractionsApi.js.map +1 -0
- package/lib/esm/MCPOAuthApi.js +59 -0
- package/lib/esm/MCPOAuthApi.js.map +1 -0
- package/lib/esm/ProjectsApi.js +69 -0
- package/lib/esm/ProjectsApi.js.map +1 -0
- package/lib/esm/PromptsApi.js +130 -0
- package/lib/esm/PromptsApi.js.map +1 -0
- package/lib/esm/RefsApi.js +10 -0
- package/lib/esm/RefsApi.js.map +1 -0
- package/lib/esm/RunsApi.js +109 -0
- package/lib/esm/RunsApi.js.map +1 -0
- package/lib/esm/SkillsApi.js +36 -0
- package/lib/esm/SkillsApi.js.map +1 -0
- package/lib/esm/StreamSource.js +13 -0
- package/lib/esm/StreamSource.js.map +1 -0
- package/lib/esm/TrainingApi.js +51 -0
- package/lib/esm/TrainingApi.js.map +1 -0
- package/lib/esm/UsersApi.js +10 -0
- package/lib/esm/UsersApi.js.map +1 -0
- package/lib/esm/client.js +351 -0
- package/lib/esm/client.js.map +1 -0
- package/lib/esm/execute.js +118 -0
- package/lib/esm/execute.js.map +1 -0
- package/lib/esm/index.js +6 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/nodejs/NodeStreamSource.js +41 -0
- package/lib/esm/nodejs/NodeStreamSource.js.map +1 -0
- package/lib/esm/nodejs/index.js +2 -0
- package/lib/esm/nodejs/index.js.map +1 -0
- package/lib/esm/store/AnalyzeDocApi.js +52 -0
- package/lib/esm/store/AnalyzeDocApi.js.map +1 -0
- package/lib/esm/store/CollectionsApi.js +127 -0
- package/lib/esm/store/CollectionsApi.js.map +1 -0
- package/lib/esm/store/CommandsApi.js +13 -0
- package/lib/esm/store/CommandsApi.js.map +1 -0
- package/lib/esm/store/DashboardApi.js +178 -0
- package/lib/esm/store/DashboardApi.js.map +1 -0
- package/lib/esm/store/DataApi.js +429 -0
- package/lib/esm/store/DataApi.js.map +1 -0
- package/lib/esm/store/EmailApi.js +99 -0
- package/lib/esm/store/EmailApi.js.map +1 -0
- package/lib/esm/store/EmbeddingsApi.js +25 -0
- package/lib/esm/store/EmbeddingsApi.js.map +1 -0
- package/lib/esm/store/FilesApi.js +231 -0
- package/lib/esm/store/FilesApi.js.map +1 -0
- package/lib/esm/store/ObjectsApi.js +309 -0
- package/lib/esm/store/ObjectsApi.js.map +1 -0
- package/lib/esm/store/PendingAsksApi.js +39 -0
- package/lib/esm/store/PendingAsksApi.js.map +1 -0
- package/lib/esm/store/SchedulesApi.js +99 -0
- package/lib/esm/store/SchedulesApi.js.map +1 -0
- package/lib/esm/store/ToolsApi.js +17 -0
- package/lib/esm/store/ToolsApi.js.map +1 -0
- package/lib/esm/store/TypesApi.js +53 -0
- package/lib/esm/store/TypesApi.js.map +1 -0
- package/lib/esm/store/WorkersApi.js +12 -0
- package/lib/esm/store/WorkersApi.js.map +1 -0
- package/lib/esm/store/WorkflowsApi.js +590 -0
- package/lib/esm/store/WorkflowsApi.js.map +1 -0
- package/lib/esm/store/client.js +77 -0
- package/lib/esm/store/client.js.map +1 -0
- package/lib/esm/store/errors.js +7 -0
- package/lib/esm/store/errors.js.map +1 -0
- package/lib/esm/store/index.js +11 -0
- package/lib/esm/store/index.js.map +1 -0
- package/lib/esm/store/version.js +3 -0
- package/lib/esm/store/version.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/AccountApi.d.ts +59 -0
- package/lib/types/AccountApi.d.ts.map +1 -0
- package/lib/types/AccountsApi.d.ts +7 -0
- package/lib/types/AccountsApi.d.ts.map +1 -0
- package/lib/types/AnalyticsApi.d.ts +11 -0
- package/lib/types/AnalyticsApi.d.ts.map +1 -0
- package/lib/types/ApiKeysApi.d.ts +42 -0
- package/lib/types/ApiKeysApi.d.ts.map +1 -0
- package/lib/types/AppsApi.d.ts +65 -0
- package/lib/types/AppsApi.d.ts.map +1 -0
- package/lib/types/CommandsApi.d.ts +10 -0
- package/lib/types/CommandsApi.d.ts.map +1 -0
- package/lib/types/EnvironmentsApi.d.ts +40 -0
- package/lib/types/EnvironmentsApi.d.ts.map +1 -0
- package/lib/types/GroupsApi.d.ts +65 -0
- package/lib/types/GroupsApi.d.ts.map +1 -0
- package/lib/types/IamApi.d.ts +41 -0
- package/lib/types/IamApi.d.ts.map +1 -0
- package/lib/types/InteractionBase.d.ts +22 -0
- package/lib/types/InteractionBase.d.ts.map +1 -0
- package/lib/types/InteractionCatalogApi.d.ts +36 -0
- package/lib/types/InteractionCatalogApi.d.ts.map +1 -0
- package/lib/types/InteractionOutput.d.ts +174 -0
- package/lib/types/InteractionOutput.d.ts.map +1 -0
- package/lib/types/InteractionResult.example.d.ts +6 -0
- package/lib/types/InteractionResult.example.d.ts.map +1 -0
- package/lib/types/InteractionsApi.d.ts +183 -0
- package/lib/types/InteractionsApi.d.ts.map +1 -0
- package/lib/types/MCPOAuthApi.d.ts +45 -0
- package/lib/types/MCPOAuthApi.d.ts.map +1 -0
- package/lib/types/ProjectsApi.d.ts +28 -0
- package/lib/types/ProjectsApi.d.ts.map +1 -0
- package/lib/types/PromptsApi.d.ts +106 -0
- package/lib/types/PromptsApi.d.ts.map +1 -0
- package/lib/types/RefsApi.d.ts +6 -0
- package/lib/types/RefsApi.d.ts.map +1 -0
- package/lib/types/RunsApi.d.ts +79 -0
- package/lib/types/RunsApi.d.ts.map +1 -0
- package/lib/types/SkillsApi.d.ts +26 -0
- package/lib/types/SkillsApi.d.ts.map +1 -0
- package/lib/types/StreamSource.d.ts +7 -0
- package/lib/types/StreamSource.d.ts.map +1 -0
- package/lib/types/TrainingApi.d.ts +27 -0
- package/lib/types/TrainingApi.d.ts.map +1 -0
- package/lib/types/UsersApi.d.ts +6 -0
- package/lib/types/UsersApi.d.ts.map +1 -0
- package/lib/types/client.d.ts +136 -0
- package/lib/types/client.d.ts.map +1 -0
- package/lib/types/execute.d.ts +37 -0
- package/lib/types/execute.d.ts.map +1 -0
- package/lib/types/index.d.ts +10 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/nodejs/NodeStreamSource.d.ts +9 -0
- package/lib/types/nodejs/NodeStreamSource.d.ts.map +1 -0
- package/lib/types/nodejs/index.d.ts +1 -0
- package/lib/types/nodejs/index.d.ts.map +1 -0
- package/lib/types/store/AnalyzeDocApi.d.ts +17 -0
- package/lib/types/store/AnalyzeDocApi.d.ts.map +1 -0
- package/lib/types/store/CollectionsApi.d.ts +82 -0
- package/lib/types/store/CollectionsApi.d.ts.map +1 -0
- package/lib/types/store/CommandsApi.d.ts +10 -0
- package/lib/types/store/CommandsApi.d.ts.map +1 -0
- package/lib/types/store/DashboardApi.d.ts +149 -0
- package/lib/types/store/DashboardApi.d.ts.map +1 -0
- package/lib/types/store/DataApi.d.ts +392 -0
- package/lib/types/store/DataApi.d.ts.map +1 -0
- package/lib/types/store/EmailApi.d.ts +185 -0
- package/lib/types/store/EmailApi.d.ts.map +1 -0
- package/lib/types/store/EmbeddingsApi.d.ts +12 -0
- package/lib/types/store/EmbeddingsApi.d.ts.map +1 -0
- package/lib/types/store/FilesApi.d.ts +110 -0
- package/lib/types/store/FilesApi.d.ts.map +1 -0
- package/lib/types/store/ObjectsApi.d.ts +139 -0
- package/lib/types/store/ObjectsApi.d.ts.map +1 -0
- package/lib/types/store/PendingAsksApi.d.ts +79 -0
- package/lib/types/store/PendingAsksApi.d.ts.map +1 -0
- package/lib/types/store/SchedulesApi.d.ts +89 -0
- package/lib/types/store/SchedulesApi.d.ts.map +1 -0
- package/lib/types/store/ToolsApi.d.ts +13 -0
- package/lib/types/store/ToolsApi.d.ts.map +1 -0
- package/lib/types/store/TypesApi.d.ts +23 -0
- package/lib/types/store/TypesApi.d.ts.map +1 -0
- package/lib/types/store/WorkersApi.d.ts +6 -0
- package/lib/types/store/WorkersApi.d.ts.map +1 -0
- package/lib/types/store/WorkflowsApi.d.ts +167 -0
- package/lib/types/store/WorkflowsApi.d.ts.map +1 -0
- package/lib/types/store/client.d.ts +45 -0
- package/lib/types/store/client.d.ts.map +1 -0
- package/lib/types/store/errors.d.ts +4 -0
- package/lib/types/store/errors.d.ts.map +1 -0
- package/lib/types/store/index.d.ts +10 -0
- package/lib/types/store/index.d.ts.map +1 -0
- package/lib/types/store/version.d.ts +2 -0
- package/lib/types/store/version.d.ts.map +1 -0
- package/lib/vertesia-client.js +2 -0
- package/lib/vertesia-client.js.map +1 -0
- package/package.json +71 -0
- package/src/AccountApi.ts +96 -0
- package/src/AccountsApi.ts +22 -0
- package/src/AnalyticsApi.ts +36 -0
- package/src/ApiKeysApi.ts +67 -0
- package/src/AppsApi.ts +134 -0
- package/src/CommandsApi.ts +23 -0
- package/src/EnvironmentsApi.ts +94 -0
- package/src/GroupsApi.ts +92 -0
- package/src/IamApi.ts +70 -0
- package/src/InteractionBase.ts +44 -0
- package/src/InteractionCatalogApi.ts +72 -0
- package/src/InteractionOutput.test.ts +305 -0
- package/src/InteractionOutput.ts +328 -0
- package/src/InteractionResult.example.ts +72 -0
- package/src/InteractionsApi.ts +308 -0
- package/src/MCPOAuthApi.ts +67 -0
- package/src/ProjectsApi.ts +85 -0
- package/src/PromptsApi.ts +160 -0
- package/src/RefsApi.ts +18 -0
- package/src/RunsApi.ts +151 -0
- package/src/SkillsApi.ts +46 -0
- package/src/StreamSource.ts +3 -0
- package/src/TrainingApi.ts +71 -0
- package/src/UsersApi.ts +18 -0
- package/src/client.test.ts +99 -0
- package/src/client.ts +419 -0
- package/src/execute.ts +126 -0
- package/src/index.ts +10 -0
- package/src/nodejs/NodeStreamSource.ts +43 -0
- package/src/nodejs/index.ts +1 -0
- package/src/store/AnalyzeDocApi.ts +61 -0
- package/src/store/CollectionsApi.ts +166 -0
- package/src/store/CommandsApi.ts +15 -0
- package/src/store/DashboardApi.ts +216 -0
- package/src/store/DataApi.ts +516 -0
- package/src/store/EmailApi.ts +211 -0
- package/src/store/EmbeddingsApi.ts +39 -0
- package/src/store/FilesApi.ts +288 -0
- package/src/store/ObjectsApi.ts +432 -0
- package/src/store/PendingAsksApi.ts +98 -0
- package/src/store/SchedulesApi.ts +114 -0
- package/src/store/ToolsApi.ts +19 -0
- package/src/store/TypesApi.ts +65 -0
- package/src/store/WorkersApi.ts +17 -0
- package/src/store/WorkflowsApi.ts +752 -0
- package/src/store/client.ts +95 -0
- package/src/store/errors.ts +7 -0
- package/src/store/index.ts +11 -0
- package/src/store/version.ts +2 -0
- package/tsconfig.dist.json +20 -0
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
import { ApiTopic } from "@vertesia/api-fetch-client";
|
|
2
|
+
import { AgentMessageType, parseMessage, toAgentMessage, } from "@vertesia/common";
|
|
3
|
+
import { EventSourceProvider } from "../execute.js";
|
|
4
|
+
export class WorkflowsApi extends ApiTopic {
|
|
5
|
+
constructor(parent) {
|
|
6
|
+
super(parent, "/api/v1/workflows");
|
|
7
|
+
}
|
|
8
|
+
getActivityCatalog() {
|
|
9
|
+
return this.get("/activity-catalog");
|
|
10
|
+
}
|
|
11
|
+
listRuns(documentId, eventName, ruleId) {
|
|
12
|
+
return this.post(`/runs`, { payload: { documentId, eventName, ruleId } });
|
|
13
|
+
}
|
|
14
|
+
/** List conversations the users has access to */
|
|
15
|
+
listConversations(payload) {
|
|
16
|
+
return this.post(`/conversations`, {
|
|
17
|
+
payload
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
searchRuns(payload) {
|
|
21
|
+
return this.post(`/runs`, { payload: payload });
|
|
22
|
+
}
|
|
23
|
+
sendSignal(workflowId, runId, signal, payload) {
|
|
24
|
+
return this.post(`/runs/${workflowId}/${runId}/signal/${signal}`, { payload });
|
|
25
|
+
}
|
|
26
|
+
getRunDetails(runId, workflowId, includeHistory = false) {
|
|
27
|
+
const query = { include_history: includeHistory };
|
|
28
|
+
return this.get(`/runs/${workflowId}/${runId}`, { query });
|
|
29
|
+
}
|
|
30
|
+
getRunInteraction(workflowId, runId) {
|
|
31
|
+
return this.get(`/runs/${workflowId}/${runId}/interaction`);
|
|
32
|
+
}
|
|
33
|
+
terminate(workflowId, runId, reason) {
|
|
34
|
+
const payload = { reason };
|
|
35
|
+
return this.post(`/runs/${workflowId}/${runId}/actions/terminate`, { payload });
|
|
36
|
+
}
|
|
37
|
+
cancel(workflowId, runId, reason) {
|
|
38
|
+
const payload = { reason };
|
|
39
|
+
return this.post(`/runs/${workflowId}/${runId}/actions/cancel`, { payload });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Query a workflow for its current state.
|
|
43
|
+
* The workflow must have a query handler registered with the given name.
|
|
44
|
+
* @param workflowId The workflow ID
|
|
45
|
+
* @param runId The run ID
|
|
46
|
+
* @param queryName The name of the query to execute (e.g., "BatchAgentProgress")
|
|
47
|
+
* @returns The query result
|
|
48
|
+
*/
|
|
49
|
+
query(workflowId, runId, queryName) {
|
|
50
|
+
return this.get(`/runs/${workflowId}/${runId}/query/${queryName}`);
|
|
51
|
+
}
|
|
52
|
+
execute(name, payload = {}) {
|
|
53
|
+
return this.post(`/execute/${name}`, { payload });
|
|
54
|
+
}
|
|
55
|
+
postMessage(runId, msg) {
|
|
56
|
+
if (!runId) {
|
|
57
|
+
throw new Error("runId is required");
|
|
58
|
+
}
|
|
59
|
+
return this.post(`/runs/${runId}/updates`, { payload: msg });
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Retrieve historical messages for a workflow run.
|
|
63
|
+
* Returns messages in AgentMessage format for backward compatibility.
|
|
64
|
+
* This endpoint returns gzip-compressed responses for large payloads (> 3KB).
|
|
65
|
+
*/
|
|
66
|
+
async retrieveMessages(workflowId, runId, since) {
|
|
67
|
+
const query = { since };
|
|
68
|
+
const response = await this.get(`/runs/${workflowId}/${runId}/updates`, { query });
|
|
69
|
+
// Convert compact messages to AgentMessage for backward compatibility
|
|
70
|
+
return response.messages.map((m) => toAgentMessage(m, runId));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Stream workflow messages in real-time via SSE.
|
|
74
|
+
*
|
|
75
|
+
* This method fetches historical messages via GET /updates (gzip-compressed for large payloads)
|
|
76
|
+
* then connects to SSE for real-time updates only (skipHistory=true).
|
|
77
|
+
*
|
|
78
|
+
* This approach provides better performance for conversations with large historical messages
|
|
79
|
+
* since HTTP responses are compressed while SSE streams cannot be compressed.
|
|
80
|
+
*/
|
|
81
|
+
async streamMessages(workflowId, runId, onMessage, since) {
|
|
82
|
+
return new Promise(async (resolve, reject) => {
|
|
83
|
+
let reconnectAttempts = 0;
|
|
84
|
+
let lastMessageTimestamp = since || 0;
|
|
85
|
+
let isClosed = false;
|
|
86
|
+
let currentSse = null;
|
|
87
|
+
let interval = null;
|
|
88
|
+
const maxReconnectAttempts = 10;
|
|
89
|
+
const baseDelay = 1000; // 1 second base delay
|
|
90
|
+
const maxDelay = 30000; // 30 seconds max delay
|
|
91
|
+
const calculateBackoffDelay = (attempts) => {
|
|
92
|
+
const exponentialDelay = Math.min(baseDelay * Math.pow(2, attempts), maxDelay);
|
|
93
|
+
// Add jitter to prevent thundering herd
|
|
94
|
+
const jitter = Math.random() * 0.1 * exponentialDelay;
|
|
95
|
+
return exponentialDelay + jitter;
|
|
96
|
+
};
|
|
97
|
+
const cleanup = () => {
|
|
98
|
+
if (interval) {
|
|
99
|
+
clearInterval(interval);
|
|
100
|
+
interval = null;
|
|
101
|
+
}
|
|
102
|
+
if (currentSse) {
|
|
103
|
+
currentSse.close();
|
|
104
|
+
currentSse = null;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const exit = (payload) => {
|
|
108
|
+
if (!isClosed) {
|
|
109
|
+
isClosed = true;
|
|
110
|
+
cleanup();
|
|
111
|
+
resolve(payload);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
// 1. Fetch historical messages via GET /updates (gzip-compressed if > 3KB)
|
|
115
|
+
// This is more efficient than receiving historical over uncompressed SSE
|
|
116
|
+
try {
|
|
117
|
+
const historical = await this.retrieveMessages(workflowId, runId, since);
|
|
118
|
+
for (const msg of historical) {
|
|
119
|
+
// Update timestamp for SSE connection
|
|
120
|
+
lastMessageTimestamp = Math.max(lastMessageTimestamp, msg.timestamp || 0);
|
|
121
|
+
// Deliver historical messages to consumer
|
|
122
|
+
if (onMessage) {
|
|
123
|
+
onMessage(msg, exit);
|
|
124
|
+
}
|
|
125
|
+
// Check if workflow already completed
|
|
126
|
+
const workstreamId = msg.workstream_id || 'main';
|
|
127
|
+
const streamIsOver = msg.type === AgentMessageType.TERMINATED ||
|
|
128
|
+
(msg.type === AgentMessageType.COMPLETE && workstreamId === 'main');
|
|
129
|
+
if (streamIsOver) {
|
|
130
|
+
console.log("Workflow already completed in historical messages");
|
|
131
|
+
resolve(null);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
console.warn("Failed to fetch historical messages, continuing with SSE:", err);
|
|
138
|
+
// Continue to SSE - it will send historical if skipHistory is not set
|
|
139
|
+
}
|
|
140
|
+
// 2. Connect to SSE for real-time updates only (skipHistory=true)
|
|
141
|
+
const setupStream = async (isReconnect = false) => {
|
|
142
|
+
if (isClosed)
|
|
143
|
+
return;
|
|
144
|
+
try {
|
|
145
|
+
const EventSourceImpl = await EventSourceProvider();
|
|
146
|
+
const client = this.client;
|
|
147
|
+
const streamUrl = new URL(client.workflows.baseUrl + `/runs/${workflowId}/${runId}/stream`);
|
|
148
|
+
// Use the timestamp of the last received message for reconnection
|
|
149
|
+
if (lastMessageTimestamp > 0) {
|
|
150
|
+
streamUrl.searchParams.set("since", lastMessageTimestamp.toString());
|
|
151
|
+
}
|
|
152
|
+
// Skip historical messages - we already fetched them via GET /updates
|
|
153
|
+
streamUrl.searchParams.set("skipHistory", "true");
|
|
154
|
+
const bearerToken = client._auth ? await client._auth() : undefined;
|
|
155
|
+
if (!bearerToken) {
|
|
156
|
+
reject(new Error("No auth token available"));
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const token = bearerToken.split(" ")[1];
|
|
160
|
+
streamUrl.searchParams.set("access_token", token);
|
|
161
|
+
if (isReconnect) {
|
|
162
|
+
console.log(`Reconnecting to SSE stream for run ${runId} (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
163
|
+
}
|
|
164
|
+
const sse = new EventSourceImpl(streamUrl.href);
|
|
165
|
+
currentSse = sse;
|
|
166
|
+
// Prevent Node from exiting prematurely
|
|
167
|
+
interval = setInterval(() => { }, 1000);
|
|
168
|
+
sse.onopen = () => {
|
|
169
|
+
if (isReconnect) {
|
|
170
|
+
console.log(`Successfully reconnected to SSE stream for run ${runId}`);
|
|
171
|
+
}
|
|
172
|
+
// Reset reconnect attempts on successful connection
|
|
173
|
+
reconnectAttempts = 0;
|
|
174
|
+
};
|
|
175
|
+
sse.onmessage = (ev) => {
|
|
176
|
+
if (!ev.data || ev.data.startsWith(":")) {
|
|
177
|
+
console.log("Received comment or heartbeat; ignoring it.: ", ev.data);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
// Parse message using parseMessage() which handles both compact and legacy formats
|
|
182
|
+
const compactMessage = parseMessage(ev.data);
|
|
183
|
+
// Update last message timestamp for reconnection (use ts field or current time)
|
|
184
|
+
if (compactMessage.ts) {
|
|
185
|
+
lastMessageTimestamp = Math.max(lastMessageTimestamp, compactMessage.ts);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
lastMessageTimestamp = Date.now();
|
|
189
|
+
}
|
|
190
|
+
// Convert to AgentMessage for consumers (they shouldn't need to know about compact format)
|
|
191
|
+
if (onMessage) {
|
|
192
|
+
const agentMessage = toAgentMessage(compactMessage, runId);
|
|
193
|
+
onMessage(agentMessage, exit);
|
|
194
|
+
}
|
|
195
|
+
// Get workstream ID (defaults to 'main' if not set)
|
|
196
|
+
const workstreamId = compactMessage.w || 'main';
|
|
197
|
+
const streamIsOver = compactMessage.t === AgentMessageType.TERMINATED ||
|
|
198
|
+
(compactMessage.t === AgentMessageType.COMPLETE && workstreamId === 'main');
|
|
199
|
+
// Only close the stream when the main workstream completes or terminates
|
|
200
|
+
if (streamIsOver) {
|
|
201
|
+
console.log("Closing stream due to COMPLETE message from main workstream");
|
|
202
|
+
if (!isClosed) {
|
|
203
|
+
isClosed = true;
|
|
204
|
+
cleanup();
|
|
205
|
+
resolve(null);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else if (compactMessage.t === AgentMessageType.COMPLETE) {
|
|
209
|
+
console.log(`Received COMPLETE message from non-main workstream: ${workstreamId}, keeping stream open`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
console.error("Failed to parse SSE message:", err, ev.data);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
sse.onerror = (err) => {
|
|
217
|
+
if (isClosed)
|
|
218
|
+
return;
|
|
219
|
+
console.warn(`SSE stream error for run ${runId}:`, err);
|
|
220
|
+
cleanup();
|
|
221
|
+
// Check if we should attempt reconnection
|
|
222
|
+
if (reconnectAttempts < maxReconnectAttempts) {
|
|
223
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
224
|
+
console.log(`Attempting to reconnect in ${delay}ms (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
225
|
+
reconnectAttempts++;
|
|
226
|
+
setTimeout(() => {
|
|
227
|
+
if (!isClosed) {
|
|
228
|
+
setupStream(true);
|
|
229
|
+
}
|
|
230
|
+
}, delay);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.error(`Failed to reconnect to SSE stream for run ${runId} after ${maxReconnectAttempts} attempts`);
|
|
234
|
+
isClosed = true;
|
|
235
|
+
reject(new Error(`SSE connection failed after ${maxReconnectAttempts} reconnection attempts`));
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
console.error("Error setting up SSE stream:", err);
|
|
241
|
+
if (reconnectAttempts < maxReconnectAttempts) {
|
|
242
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
243
|
+
reconnectAttempts++;
|
|
244
|
+
setTimeout(() => {
|
|
245
|
+
if (!isClosed) {
|
|
246
|
+
setupStream(true);
|
|
247
|
+
}
|
|
248
|
+
}, delay);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
reject(err);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
// Start the async setup process
|
|
256
|
+
setupStream(false);
|
|
257
|
+
// Return cleanup function for external cancellation
|
|
258
|
+
return () => {
|
|
259
|
+
isClosed = true;
|
|
260
|
+
cleanup();
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Stream workflow messages via WebSocket (for mobile/React Native clients)
|
|
266
|
+
* @param workflowId The workflow ID
|
|
267
|
+
* @param runId The run ID
|
|
268
|
+
* @param onMessage Callback for incoming messages (CompactMessage format)
|
|
269
|
+
* @param since Optional timestamp to resume from
|
|
270
|
+
* @returns Promise that resolves with cleanup function and sendSignal helper
|
|
271
|
+
*/
|
|
272
|
+
async streamMessagesWS(workflowId, runId, onMessage, since) {
|
|
273
|
+
return new Promise((resolve, reject) => {
|
|
274
|
+
let reconnectAttempts = 0;
|
|
275
|
+
const maxReconnectAttempts = 10;
|
|
276
|
+
const baseDelay = 1000;
|
|
277
|
+
const maxDelay = 30000;
|
|
278
|
+
let ws = null;
|
|
279
|
+
let lastMessageTimestamp = since || 0;
|
|
280
|
+
let isClosed = false;
|
|
281
|
+
const calculateBackoffDelay = (attempts) => {
|
|
282
|
+
const exponentialDelay = Math.min(baseDelay * Math.pow(2, attempts), maxDelay);
|
|
283
|
+
const jitter = Math.random() * 0.1 * exponentialDelay;
|
|
284
|
+
return exponentialDelay + jitter;
|
|
285
|
+
};
|
|
286
|
+
const connect = async () => {
|
|
287
|
+
if (isClosed)
|
|
288
|
+
return;
|
|
289
|
+
try {
|
|
290
|
+
const client = this.client;
|
|
291
|
+
const wsUrl = new URL(client.workflows.baseUrl + `/runs/${workflowId}/${runId}/ws`);
|
|
292
|
+
// Replace http/https with ws/wss
|
|
293
|
+
wsUrl.protocol = wsUrl.protocol.replace('http', 'ws');
|
|
294
|
+
// Add query parameters
|
|
295
|
+
if (lastMessageTimestamp > 0) {
|
|
296
|
+
wsUrl.searchParams.set('since', lastMessageTimestamp.toString());
|
|
297
|
+
}
|
|
298
|
+
const bearerToken = client._auth ? await client._auth() : undefined;
|
|
299
|
+
if (!bearerToken) {
|
|
300
|
+
reject(new Error('No auth token available'));
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const token = bearerToken.split(' ')[1];
|
|
304
|
+
wsUrl.searchParams.set('access_token', token);
|
|
305
|
+
if (reconnectAttempts > 0) {
|
|
306
|
+
console.log(`Reconnecting to WebSocket for run ${runId} (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
307
|
+
}
|
|
308
|
+
ws = new WebSocket(wsUrl.href);
|
|
309
|
+
ws.onopen = () => {
|
|
310
|
+
if (reconnectAttempts > 0) {
|
|
311
|
+
console.log(`Successfully reconnected to WebSocket for run ${runId}`);
|
|
312
|
+
}
|
|
313
|
+
reconnectAttempts = 0;
|
|
314
|
+
// Resolve with helpers on first successful connection
|
|
315
|
+
if (!isClosed) {
|
|
316
|
+
resolve({
|
|
317
|
+
cleanup: () => {
|
|
318
|
+
isClosed = true;
|
|
319
|
+
if (ws) {
|
|
320
|
+
ws.close();
|
|
321
|
+
ws = null;
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
sendSignal: (signalName, data) => {
|
|
325
|
+
if (ws?.readyState === WebSocket.OPEN) {
|
|
326
|
+
const message = {
|
|
327
|
+
type: 'signal',
|
|
328
|
+
signalName,
|
|
329
|
+
data,
|
|
330
|
+
requestId: Date.now()
|
|
331
|
+
};
|
|
332
|
+
ws.send(JSON.stringify(message));
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
console.warn('WebSocket not open, cannot send signal');
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
ws.onmessage = (event) => {
|
|
342
|
+
try {
|
|
343
|
+
const rawMessage = JSON.parse(event.data);
|
|
344
|
+
// Handle control messages (pong, ack, error)
|
|
345
|
+
if ('type' in rawMessage && typeof rawMessage.type === 'string') {
|
|
346
|
+
if (rawMessage.type === 'pong') {
|
|
347
|
+
console.debug('Received pong');
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
else if (rawMessage.type === 'ack') {
|
|
351
|
+
console.debug('Signal acknowledged', rawMessage);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
else if (rawMessage.type === 'error') {
|
|
355
|
+
console.error('WebSocket error message', rawMessage);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Parse agent message (handles both compact and legacy formats)
|
|
360
|
+
const message = parseMessage(rawMessage);
|
|
361
|
+
// Update timestamp for reconnection
|
|
362
|
+
if (message.ts) {
|
|
363
|
+
lastMessageTimestamp = Math.max(lastMessageTimestamp, message.ts);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
lastMessageTimestamp = Date.now();
|
|
367
|
+
}
|
|
368
|
+
if (onMessage)
|
|
369
|
+
onMessage(message);
|
|
370
|
+
// Get workstream ID (defaults to 'main' if not set)
|
|
371
|
+
const workstreamId = message.w || 'main';
|
|
372
|
+
// Check for stream completion
|
|
373
|
+
const streamIsOver = message.t === AgentMessageType.TERMINATED ||
|
|
374
|
+
(message.t === AgentMessageType.COMPLETE && workstreamId === 'main');
|
|
375
|
+
if (streamIsOver) {
|
|
376
|
+
console.log('Closing WebSocket due to workflow completion');
|
|
377
|
+
isClosed = true;
|
|
378
|
+
if (ws) {
|
|
379
|
+
ws.close();
|
|
380
|
+
ws = null;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
console.error('Failed to parse WebSocket message', err);
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
ws.onerror = (err) => {
|
|
389
|
+
console.error('WebSocket error', err);
|
|
390
|
+
};
|
|
391
|
+
ws.onclose = () => {
|
|
392
|
+
if (!isClosed && reconnectAttempts < maxReconnectAttempts) {
|
|
393
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
394
|
+
console.log(`WebSocket closed, reconnecting in ${delay}ms (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
395
|
+
reconnectAttempts++;
|
|
396
|
+
setTimeout(connect, delay);
|
|
397
|
+
}
|
|
398
|
+
else if (reconnectAttempts >= maxReconnectAttempts) {
|
|
399
|
+
reject(new Error(`WebSocket connection failed after ${maxReconnectAttempts} attempts`));
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
catch (err) {
|
|
404
|
+
console.error('Error setting up WebSocket', err);
|
|
405
|
+
if (reconnectAttempts < maxReconnectAttempts) {
|
|
406
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
407
|
+
reconnectAttempts++;
|
|
408
|
+
setTimeout(connect, delay);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
reject(err);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
connect();
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Ingest telemetry events for a workflow run.
|
|
420
|
+
* Workers use this to send telemetry to zeno-server for BigQuery storage.
|
|
421
|
+
*/
|
|
422
|
+
ingestEvents(workflowId, runId, events) {
|
|
423
|
+
return this.post(`/runs/${workflowId}/${runId}/events`, {
|
|
424
|
+
payload: { events },
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
// ========================================================================
|
|
428
|
+
// Analytics API
|
|
429
|
+
// ========================================================================
|
|
430
|
+
/**
|
|
431
|
+
* Get workflow analytics summary.
|
|
432
|
+
* Returns overall metrics including token usage, success rates, and run counts.
|
|
433
|
+
*/
|
|
434
|
+
getAnalyticsSummary(query = {}) {
|
|
435
|
+
return this.post('/analytics/summary', { payload: query });
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Get token usage analytics.
|
|
439
|
+
* Returns token consumption metrics by model, agent, tool, or over time.
|
|
440
|
+
*/
|
|
441
|
+
getTokenUsageAnalytics(query = {}) {
|
|
442
|
+
return this.post('/analytics/tokens', { payload: query });
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Get LLM latency analytics.
|
|
446
|
+
* Returns duration/latency metrics for LLM calls.
|
|
447
|
+
*/
|
|
448
|
+
getLlmLatencyAnalytics(query = {}) {
|
|
449
|
+
return this.post('/analytics/latency/llm', { payload: query });
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Get tool latency analytics.
|
|
453
|
+
* Returns duration/latency metrics for tool calls.
|
|
454
|
+
*/
|
|
455
|
+
getToolLatencyAnalytics(query = {}) {
|
|
456
|
+
return this.post('/analytics/latency/tools', { payload: query });
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Get agent/workflow latency analytics.
|
|
460
|
+
* Returns duration metrics for complete workflow runs.
|
|
461
|
+
*/
|
|
462
|
+
getAgentLatencyAnalytics(query = {}) {
|
|
463
|
+
return this.post('/analytics/latency/agents', { payload: query });
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Get error analytics.
|
|
467
|
+
* Returns error rates, types, and trends.
|
|
468
|
+
*/
|
|
469
|
+
getErrorAnalytics(query = {}) {
|
|
470
|
+
return this.post('/analytics/errors', { payload: query });
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Get tool usage analytics.
|
|
474
|
+
* Returns tool invocation counts, success rates, and performance metrics.
|
|
475
|
+
*/
|
|
476
|
+
getToolAnalytics(query = {}) {
|
|
477
|
+
return this.post('/analytics/tools', { payload: query });
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get tool parameter analytics.
|
|
481
|
+
* Returns parameter value distributions for a specific tool.
|
|
482
|
+
*/
|
|
483
|
+
getToolParameterAnalytics(query) {
|
|
484
|
+
return this.post('/analytics/tools/parameters', { payload: query });
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get available filter options for analytics.
|
|
488
|
+
* Returns unique agents, environments, and models from telemetry data.
|
|
489
|
+
*/
|
|
490
|
+
getAnalyticsFilterOptions(query = {}) {
|
|
491
|
+
return this.post('/analytics/filter-options', { payload: query });
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Get average prompt size (input tokens) by agent for startConversation calls.
|
|
495
|
+
* This represents the initial prompt + tools size.
|
|
496
|
+
*/
|
|
497
|
+
getPromptSizeAnalytics(query = {}) {
|
|
498
|
+
return this.post('/analytics/prompt-size', { payload: query });
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Get top principals (users/API keys) who started the most agent runs.
|
|
502
|
+
* Returns the top N principals sorted by run count descending.
|
|
503
|
+
*/
|
|
504
|
+
getTopPrincipalsAnalytics(query = {}) {
|
|
505
|
+
return this.post('/analytics/top-principals', { payload: query });
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Get agent run distribution - how many runs per agent/interaction type.
|
|
509
|
+
* Returns the top N agents sorted by run count descending.
|
|
510
|
+
*/
|
|
511
|
+
getRunsByAgentAnalytics(query = {}) {
|
|
512
|
+
return this.post('/analytics/runs-by-agent', { payload: query });
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Get time to first response analytics.
|
|
516
|
+
* Measures the time from agent start to the completion of the first LLM call.
|
|
517
|
+
* Returns average, min, max, median, p95, and p99 metrics.
|
|
518
|
+
*/
|
|
519
|
+
getTimeToFirstResponseAnalytics(query = {}) {
|
|
520
|
+
return this.post('/analytics/time-to-first-response', { payload: query });
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Get first response behavior analytics.
|
|
524
|
+
* Analyzes the agent's first LLM response behavior:
|
|
525
|
+
* - Percentage of agents that start by making a plan
|
|
526
|
+
* - Percentage of agents that return no tool calls at start
|
|
527
|
+
*/
|
|
528
|
+
getFirstResponseBehaviorAnalytics(query = {}) {
|
|
529
|
+
return this.post('/analytics/first-response-behavior', { payload: query });
|
|
530
|
+
}
|
|
531
|
+
rules = new WorkflowsRulesApi(this);
|
|
532
|
+
definitions = new WorkflowsDefinitionApi(this);
|
|
533
|
+
}
|
|
534
|
+
export class WorkflowsRulesApi extends ApiTopic {
|
|
535
|
+
constructor(parent) {
|
|
536
|
+
super(parent, "/rules");
|
|
537
|
+
}
|
|
538
|
+
list() {
|
|
539
|
+
return this.get("/");
|
|
540
|
+
}
|
|
541
|
+
retrieve(id) {
|
|
542
|
+
return this.get(`/${id}`);
|
|
543
|
+
}
|
|
544
|
+
update(id, payload) {
|
|
545
|
+
return this.put(`/${id}`, {
|
|
546
|
+
payload,
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
create(payload) {
|
|
550
|
+
return this.post("/", {
|
|
551
|
+
payload,
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
delete(id) {
|
|
555
|
+
return this.del(`/${id}`);
|
|
556
|
+
}
|
|
557
|
+
execute(id, objectIds, vars) {
|
|
558
|
+
const payload = {
|
|
559
|
+
objectIds,
|
|
560
|
+
vars,
|
|
561
|
+
};
|
|
562
|
+
return this.post(`/${id}/execute`, { payload });
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
export class WorkflowsDefinitionApi extends ApiTopic {
|
|
566
|
+
//model: DSLWorkflowDefinition;
|
|
567
|
+
constructor(parent) {
|
|
568
|
+
super(parent, "/definitions");
|
|
569
|
+
}
|
|
570
|
+
list() {
|
|
571
|
+
return this.get("/");
|
|
572
|
+
}
|
|
573
|
+
retrieve(id) {
|
|
574
|
+
return this.get(`/${id}`);
|
|
575
|
+
}
|
|
576
|
+
update(id, payload) {
|
|
577
|
+
return this.put(`/${id}`, {
|
|
578
|
+
payload,
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
create(payload) {
|
|
582
|
+
return this.post("/", {
|
|
583
|
+
payload,
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
delete(id) {
|
|
587
|
+
return this.del(`/${id}`);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
//# sourceMappingURL=WorkflowsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowsApi.js","sourceRoot":"","sources":["../../../src/store/WorkflowsApi.ts"],"names":[],"mappings":"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"}
|