@agent-os-sdk/client 0.4.1 → 0.4.2

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 CHANGED
@@ -64,6 +64,66 @@ await api.runs.resume(runId, { approved: true });
64
64
  | `triggers` | Webhooks, crons |
65
65
  | `credentials` | BYOK secrets |
66
66
 
67
+ ## Hints (hints.v1) — o que são
68
+
69
+ **Hints** são um **side-channel** de UX: o DP/meta-agent **sugere** ações/atenções visuais, o **CP repassa** (sem virar fonte de verdade), e o **Frontend anima** (glow, badge, shake, toast etc).
70
+ Eles **não alteram** `graph_spec` e não são “estado do sistema” — são **sugestões descartáveis**.
71
+
72
+ ### Onde aparecem
73
+
74
+ Hoje, no builder do meta-agent, eles saem **junto do update do grafo**:
75
+
76
+ * **SSE event**: `graph_update`
77
+ Payload inclui `graph_spec` e `hints`.
78
+
79
+ E também existem no modelo de retorno não-streaming (`ChatResponse.hints`), se você usar o caminho sync.
80
+
81
+ **Regra kernel**: `Content-Type: text/event-stream` só depois de validações; hints são dados normais dentro do JSON do evento.
82
+
83
+ ### Estrutura rápida do HintModel
84
+
85
+ Campos principais:
86
+
87
+ * `type` *(string)*: um dos 12 tipos canônicos
88
+ * `severity` *(info|warn|error|success)*
89
+ * `scope` *(graph|thread|run)* — onde isso “vive”
90
+ * `target` *(opcional)*: `{ node_id?, edge_id?, panel?, action? }`
91
+ * `message` *(opcional)*: texto curto pra UI
92
+ * `ttl_ms` *(opcional)*: tempo pra auto-dismiss
93
+ * `id` *(opcional)*: fingerprint pra dedupe
94
+ * `data` *(opcional)*: payload pequeno (ex.: `code`, `path`, `credential_slug`, `fields`…)
95
+
96
+ ### Como usar (frontend)
97
+
98
+ Fluxo recomendado:
99
+
100
+ 1. Consumir evento `graph_update`
101
+ 2. Ler `payload.hints[]`
102
+ 3. Para cada hint, despachar por `hint.type`
103
+ 4. Aplicar animação/efeito no alvo (`hint.target`) e opcionalmente mostrar mensagem (`hint.message`)
104
+ 5. Respeitar `ttl_ms` quando existir (auto-remover/auto-dismiss)
105
+
106
+ ### Mini exemplo
107
+
108
+ ```json
109
+ event: graph_update
110
+ data: {
111
+ "type": "graph_update",
112
+ "graph_spec": { "...": "..." },
113
+ "hints": [
114
+ {
115
+ "type": "error_marker",
116
+ "id": "error:node_1:UNKNOWN_TOOL:/nodes/3/config/tool",
117
+ "scope": "graph",
118
+ "severity": "error",
119
+ "target": { "node_id": "node_1" },
120
+ "message": "Unknown tool slug",
121
+ "data": { "code": "UNKNOWN_TOOL", "path": "/nodes/3/config/tool" }
122
+ }
123
+ ]
124
+ }
125
+ ```
126
+
67
127
  ## Rule
68
128
 
69
129
  > ❌ **NEVER** use `fetch`, `axios`, or `ky` in frontend.
package/dist/index.d.ts CHANGED
@@ -46,7 +46,7 @@ export { collectAll, getFirst, paginate, type CursorPaginatedResponse, type Curs
46
46
  export { createRawClient, createTypedClient, type APIResponse, type ClientOptions, type HookErrorContext, type HookRequestContext, type HookResponseContext, type RawClient, type SDKHooks, type TypedClient } from "./client/raw.js";
47
47
  export type { components, paths } from "./client/raw.js";
48
48
  export { AgentsModule, type Agent, type AgentGraphResponse, type AgentListResponse, type AgentVersion } from "./modules/agents.js";
49
- export { BuilderModule, type BuilderChatRequest, type BuilderChatResponse, type BuilderStreamEvent, type GraphUpdateAction } from "./modules/builder.js";
49
+ export { BuilderModule, type BuilderChatRequest, type BuilderChatResponse, type BuilderStreamEvent, type GraphUpdateAction, type HintModel, type HintTargetModel, type HintDataModel } from "./modules/builder.js";
50
50
  export { CredentialsModule, type Credential, type CredentialListResponse, type CredentialType } from "./modules/credentials.js";
51
51
  export { KnowledgeModule, type KnowledgeDataset, type KnowledgeSearchResponse } from "./modules/knowledge.js";
52
52
  export { MembersModule, type Member, type MemberListResponse, type Role } from "./modules/members.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -37,38 +37,81 @@ export type ChatHistoryMessage = {
37
37
  role: 'user' | 'assistant';
38
38
  content: string;
39
39
  };
40
+ /**
41
+ * Builder chat request.
42
+ *
43
+ * KERNEL-FIRST: Frontend sends INTENTION only.
44
+ * - Graph spec is loaded from artifact storage by CP
45
+ * - Catalogs are loaded from DB by CP
46
+ * - Frontend should NOT send graph_spec or catalogs
47
+ */
40
48
  export type BuilderChatRequest = {
49
+ /** Chat message/intention */
41
50
  message: string;
42
- current_graph_spec?: Record<string, unknown>;
51
+ /** Thread ID for conversation continuity */
43
52
  thread_id?: string;
44
- /** Previous conversation history for context */
45
- history?: ChatHistoryMessage[];
46
- /** Catalog versions to use for validation */
47
- catalog_versions?: CatalogVersions;
48
- /** Combined hash of all catalogs for integrity */
49
- catalog_ref?: string;
53
+ /** Optional ETag for concurrency control */
54
+ base_graph_etag?: string;
55
+ };
56
+ export type HintTargetModel = {
57
+ node_id?: string;
58
+ edge_id?: string;
59
+ panel?: "credentials" | "triggers" | "logs" | "validation" | "deploy" | string;
60
+ action?: "create_credential" | "save_draft" | "publish_version" | string;
61
+ };
62
+ export type HintDataModel = {
63
+ credential_slug?: string;
64
+ reason?: string;
65
+ fields?: string[];
66
+ code?: string;
67
+ path?: string;
68
+ run_id?: string;
69
+ error_code?: string;
70
+ tokens_in?: number;
71
+ tokens_out?: number;
72
+ usd_estimate?: number;
73
+ action_id?: string;
74
+ params?: Record<string, any>;
75
+ };
76
+ export type HintModel = {
77
+ id?: string;
78
+ scope: "graph" | "thread" | "run" | string;
79
+ type: "highlight_node" | "needs_credential" | "missing_config" | "error_marker" | "warning_marker" | "toast" | "run_started" | "node_running" | "node_failed" | "rate_limited" | "cost_estimate" | "action_suggested" | string;
80
+ severity: "info" | "warn" | "error" | "success";
81
+ target?: HintTargetModel;
82
+ message?: string;
83
+ ttl_ms?: number;
84
+ data?: HintDataModel;
50
85
  };
51
86
  export type GraphUpdateAction = {
52
87
  action: string;
53
- node_name?: string;
54
- node_type?: string;
55
- properties?: Record<string, unknown>;
56
- edge_from?: string;
57
- edge_to?: string;
88
+ } | {
89
+ graph_spec: Record<string, unknown>;
90
+ hints?: HintModel[];
91
+ has_errors?: boolean;
58
92
  };
59
93
  export type BuilderStreamEvent = {
60
94
  type: "message";
61
95
  data: {
62
96
  text: string;
63
97
  };
98
+ } | {
99
+ type: "validation";
100
+ data: {
101
+ valid: boolean;
102
+ errors: any[];
103
+ };
64
104
  } | {
65
105
  type: "graph_update";
66
- data: GraphUpdateAction;
106
+ data: {
107
+ graph_spec: Record<string, unknown>;
108
+ hints: HintModel[];
109
+ has_errors?: boolean;
110
+ };
67
111
  } | {
68
112
  type: "done";
69
113
  data: {
70
114
  response: string;
71
- actions: GraphUpdateAction[];
72
115
  thread_id: string;
73
116
  };
74
117
  } | {
@@ -79,8 +122,11 @@ export type BuilderStreamEvent = {
79
122
  };
80
123
  export type BuilderChatResponse = {
81
124
  response: string;
82
- actions: GraphUpdateAction[];
125
+ graph_spec?: Record<string, unknown>;
126
+ valid: boolean;
127
+ errors: any[];
83
128
  thread_id: string;
129
+ hints: HintModel[];
84
130
  };
85
131
  export declare class BuilderModule {
86
132
  private client;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/modules/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,aAAa;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAErC;;;;;OAKG;IACI,IAAI,CACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,UAAU,GACrB,cAAc,CAAC,kBAAkB,CAAC;IAyDrC;;;;OAIG;IACG,QAAQ,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAgB/B;;OAEG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;CAqBlC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/modules/builder.ts"],"names":[],"mappings":"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"}
@@ -110,14 +110,28 @@ export class BuilderModule {
110
110
  */
111
111
  async chatCollect(agentId, request) {
112
112
  let fullResponse = "";
113
- const allActions = [];
113
+ let lastGraphSpec;
114
+ let allHints = [];
115
+ const allErrors = [];
114
116
  let threadId = request.thread_id ?? "";
117
+ let isValid = true;
115
118
  for await (const event of this.chat(agentId, request)) {
116
119
  if (event.type === "message") {
117
120
  fullResponse += event.data.text;
118
121
  }
119
122
  else if (event.type === "graph_update") {
120
- allActions.push(event.data);
123
+ if ('graph_spec' in event.data) {
124
+ lastGraphSpec = event.data.graph_spec;
125
+ if (event.data.hints) {
126
+ allHints.push(...event.data.hints);
127
+ }
128
+ }
129
+ }
130
+ else if (event.type === "validation") {
131
+ isValid = event.data.valid;
132
+ if (event.data.errors) {
133
+ allErrors.push(...event.data.errors);
134
+ }
121
135
  }
122
136
  else if (event.type === "done") {
123
137
  threadId = event.data.thread_id;
@@ -125,7 +139,10 @@ export class BuilderModule {
125
139
  }
126
140
  return {
127
141
  response: fullResponse,
128
- actions: allActions,
142
+ graph_spec: lastGraphSpec,
143
+ hints: allHints,
144
+ valid: isValid,
145
+ errors: allErrors,
129
146
  thread_id: threadId,
130
147
  };
131
148
  }
package/package.json CHANGED
@@ -1,51 +1,52 @@
1
1
  {
2
- "name": "@agent-os-sdk/client",
3
- "version": "0.4.1",
4
- "description": "Official TypeScript SDK for Agent OS platform",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
- }
14
- },
15
- "keywords": [
16
- "agent-os",
17
- "sdk",
18
- "ai",
19
- "agents",
20
- "typescript"
21
- ],
22
- "author": "Agent OS Team",
23
- "license": "MIT",
24
- "repository": {
25
- "type": "git",
26
- "url": "https://github.com/yuri12344/agent-os.git"
27
- },
28
- "publishConfig": {
29
- "access": "public"
30
- },
31
- "dependencies": {
32
- "openapi-fetch": "^0.13.0"
33
- },
34
- "devDependencies": {
35
- "openapi-typescript": "^7.4.0",
36
- "tsx": "^4.19.0",
37
- "typescript": "^5.5.0",
38
- "vitest": "^4.0.18"
39
- },
40
- "files": [
41
- "dist",
42
- "src"
43
- ],
44
- "scripts": {
45
- "generate": "tsx scripts/generate.ts",
46
- "build": "tsc",
47
- "dev": "tsc --watch",
48
- "test": "vitest run",
49
- "typecheck": "tsc --noEmit"
50
- }
2
+ "name": "@agent-os-sdk/client",
3
+ "version": "0.4.2",
4
+ "description": "Official TypeScript SDK for Agent OS platform",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "scripts": {
16
+ "generate": "tsx scripts/generate.ts",
17
+ "build": "tsc",
18
+ "dev": "tsc --watch",
19
+ "test": "vitest run",
20
+ "typecheck": "tsc --noEmit",
21
+ "prepublishOnly": "pnpm build"
22
+ },
23
+ "keywords": [
24
+ "agent-os",
25
+ "sdk",
26
+ "ai",
27
+ "agents",
28
+ "typescript"
29
+ ],
30
+ "author": "Agent OS Team",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/yuri12344/agent-os.git"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "dependencies": {
40
+ "openapi-fetch": "^0.13.0"
41
+ },
42
+ "devDependencies": {
43
+ "openapi-typescript": "^7.4.0",
44
+ "tsx": "^4.19.0",
45
+ "typescript": "^5.5.0",
46
+ "vitest": "^4.0.18"
47
+ },
48
+ "files": [
49
+ "dist",
50
+ "src"
51
+ ]
51
52
  }
package/src/index.ts CHANGED
@@ -115,7 +115,7 @@ export type { components, paths } from "./client/raw.js";
115
115
 
116
116
  // Core modules
117
117
  export { AgentsModule, type Agent, type AgentGraphResponse, type AgentListResponse, type AgentVersion } from "./modules/agents.js";
118
- export { BuilderModule, type BuilderChatRequest, type BuilderChatResponse, type BuilderStreamEvent, type GraphUpdateAction } from "./modules/builder.js";
118
+ export { BuilderModule, type BuilderChatRequest, type BuilderChatResponse, type BuilderStreamEvent, type GraphUpdateAction, type HintModel, type HintTargetModel, type HintDataModel } from "./modules/builder.js";
119
119
  export { CredentialsModule, type Credential, type CredentialListResponse, type CredentialType } from "./modules/credentials.js";
120
120
  export { KnowledgeModule, type KnowledgeDataset, type KnowledgeSearchResponse } from "./modules/knowledge.js";
121
121
  export { MembersModule, type Member, type MemberListResponse, type Role } from "./modules/members.js";
@@ -41,37 +41,105 @@ export type ChatHistoryMessage = {
41
41
  content: string;
42
42
  };
43
43
 
44
+ /**
45
+ * Builder chat request.
46
+ *
47
+ * KERNEL-FIRST: Frontend sends INTENTION only.
48
+ * - Graph spec is loaded from artifact storage by CP
49
+ * - Catalogs are loaded from DB by CP
50
+ * - Frontend should NOT send graph_spec or catalogs
51
+ */
44
52
  export type BuilderChatRequest = {
53
+ /** Chat message/intention */
45
54
  message: string;
46
- current_graph_spec?: Record<string, unknown>;
55
+ /** Thread ID for conversation continuity */
47
56
  thread_id?: string;
48
- /** Previous conversation history for context */
49
- history?: ChatHistoryMessage[];
50
- /** Catalog versions to use for validation */
51
- catalog_versions?: CatalogVersions;
52
- /** Combined hash of all catalogs for integrity */
53
- catalog_ref?: string;
57
+ /** Optional ETag for concurrency control */
58
+ base_graph_etag?: string;
59
+ };
60
+
61
+ export type HintTargetModel = {
62
+ node_id?: string;
63
+ edge_id?: string;
64
+ panel?: "credentials" | "triggers" | "logs" | "validation" | "deploy" | string;
65
+ action?: "create_credential" | "save_draft" | "publish_version" | string;
66
+ };
67
+
68
+ export type HintDataModel = {
69
+ // Credential hints
70
+ credential_slug?: string;
71
+ reason?: string;
72
+
73
+ // Config hints
74
+ fields?: string[];
75
+
76
+ // Error/validation hints
77
+ code?: string;
78
+ path?: string;
79
+
80
+ // Run/execution hints
81
+ run_id?: string;
82
+ error_code?: string;
83
+
84
+ // Cost/performance hints
85
+ tokens_in?: number;
86
+ tokens_out?: number;
87
+ usd_estimate?: number;
88
+
89
+ // Action hints
90
+ action_id?: string;
91
+ params?: Record<string, any>;
92
+ };
93
+
94
+ export type HintModel = {
95
+ id?: string;
96
+ scope: "graph" | "thread" | "run" | string;
97
+ type:
98
+ | "highlight_node"
99
+ | "needs_credential"
100
+ | "missing_config"
101
+ | "error_marker"
102
+ | "warning_marker"
103
+ | "toast"
104
+ | "run_started"
105
+ | "node_running"
106
+ | "node_failed"
107
+ | "rate_limited"
108
+ | "cost_estimate"
109
+ | "action_suggested"
110
+ | string;
111
+ severity: "info" | "warn" | "error" | "success";
112
+ target?: HintTargetModel;
113
+ message?: string;
114
+ ttl_ms?: number;
115
+ data?: HintDataModel;
54
116
  };
55
117
 
56
118
  export type GraphUpdateAction = {
119
+ // Legacy support
57
120
  action: string;
58
- node_name?: string;
59
- node_type?: string;
60
- properties?: Record<string, unknown>;
61
- edge_from?: string;
62
- edge_to?: string;
121
+ // ... legacy fields omitted for brevity, keeping strict new protocol
122
+ } | {
123
+ // New protocol (WAVE-3)
124
+ graph_spec: Record<string, unknown>;
125
+ hints?: HintModel[];
126
+ has_errors?: boolean;
63
127
  };
64
128
 
65
129
  export type BuilderStreamEvent =
66
130
  | { type: "message"; data: { text: string } }
67
- | { type: "graph_update"; data: GraphUpdateAction }
68
- | { type: "done"; data: { response: string; actions: GraphUpdateAction[]; thread_id: string } }
131
+ | { type: "validation"; data: { valid: boolean; errors: any[] } }
132
+ | { type: "graph_update"; data: { graph_spec: Record<string, unknown>; hints: HintModel[]; has_errors?: boolean } }
133
+ | { type: "done"; data: { response: string; thread_id: string } }
69
134
  | { type: "error"; data: { error: string } };
70
135
 
71
136
  export type BuilderChatResponse = {
72
137
  response: string;
73
- actions: GraphUpdateAction[];
138
+ graph_spec?: Record<string, unknown>;
139
+ valid: boolean;
140
+ errors: any[];
74
141
  thread_id: string;
142
+ hints: HintModel[];
75
143
  };
76
144
 
77
145
  export class BuilderModule {
@@ -176,14 +244,27 @@ export class BuilderModule {
176
244
  request: BuilderChatRequest
177
245
  ): Promise<BuilderChatResponse> {
178
246
  let fullResponse = "";
179
- const allActions: GraphUpdateAction[] = [];
247
+ let lastGraphSpec: Record<string, unknown> | undefined;
248
+ let allHints: HintModel[] = [];
249
+ const allErrors: any[] = [];
180
250
  let threadId = request.thread_id ?? "";
251
+ let isValid = true;
181
252
 
182
253
  for await (const event of this.chat(agentId, request)) {
183
254
  if (event.type === "message") {
184
255
  fullResponse += event.data.text;
185
256
  } else if (event.type === "graph_update") {
186
- allActions.push(event.data);
257
+ if ('graph_spec' in event.data) {
258
+ lastGraphSpec = event.data.graph_spec;
259
+ if (event.data.hints) {
260
+ allHints.push(...event.data.hints);
261
+ }
262
+ }
263
+ } else if (event.type === "validation") {
264
+ isValid = event.data.valid;
265
+ if (event.data.errors) {
266
+ allErrors.push(...event.data.errors);
267
+ }
187
268
  } else if (event.type === "done") {
188
269
  threadId = event.data.thread_id;
189
270
  }
@@ -191,7 +272,10 @@ export class BuilderModule {
191
272
 
192
273
  return {
193
274
  response: fullResponse,
194
- actions: allActions,
275
+ graph_spec: lastGraphSpec,
276
+ hints: allHints,
277
+ valid: isValid,
278
+ errors: allErrors,
195
279
  thread_id: threadId,
196
280
  };
197
281
  }