whale-code 6.4.0 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/bin/swagmanager-mcp.js +7 -0
  2. package/dist/cli/app.js +30 -2
  3. package/dist/cli/chat/ChatApp.d.ts +4 -4
  4. package/dist/cli/chat/ChatApp.js +114 -44
  5. package/dist/cli/chat/ChatInput.d.ts +13 -6
  6. package/dist/cli/chat/ChatInput.js +433 -89
  7. package/dist/cli/chat/MemoryManager.d.ts +15 -0
  8. package/dist/cli/chat/MemoryManager.js +61 -0
  9. package/dist/cli/chat/MessageList.d.ts +8 -0
  10. package/dist/cli/chat/MessageList.js +1 -1
  11. package/dist/cli/chat/NodeManager.d.ts +30 -0
  12. package/dist/cli/chat/NodeManager.js +89 -0
  13. package/dist/cli/chat/NodeSelector.d.ts +19 -0
  14. package/dist/cli/chat/NodeSelector.js +37 -0
  15. package/dist/cli/chat/PlanApproval.d.ts +17 -0
  16. package/dist/cli/chat/PlanApproval.js +82 -0
  17. package/dist/cli/chat/SessionManager.d.ts +16 -0
  18. package/dist/cli/chat/SessionManager.js +43 -0
  19. package/dist/cli/chat/SlashMenu.d.ts +38 -0
  20. package/dist/cli/chat/SlashMenu.js +208 -0
  21. package/dist/cli/chat/StatusBar.d.ts +16 -0
  22. package/dist/cli/chat/StatusBar.js +22 -0
  23. package/dist/cli/chat/ThemeSelector.d.ts +14 -0
  24. package/dist/cli/chat/ThemeSelector.js +29 -0
  25. package/dist/cli/chat/ToolIndicator.d.ts +8 -0
  26. package/dist/cli/chat/ToolIndicator.js +33 -9
  27. package/dist/cli/chat/hooks/useAgentLoop.d.ts +2 -1
  28. package/dist/cli/chat/hooks/useAgentLoop.js +22 -17
  29. package/dist/cli/chat/hooks/useSlashCommands.d.ts +19 -0
  30. package/dist/cli/chat/hooks/useSlashCommands.js +254 -15
  31. package/dist/cli/commands/config-cmd.js +4 -25
  32. package/dist/cli/commands/db.d.ts +13 -0
  33. package/dist/cli/commands/db.js +243 -0
  34. package/dist/cli/commands/doctor.js +6 -9
  35. package/dist/cli/commands/mcp.js +1 -20
  36. package/dist/cli/services/agent-events.d.ts +22 -1
  37. package/dist/cli/services/agent-events.js +9 -0
  38. package/dist/cli/services/agent-loop.js +66 -2
  39. package/dist/cli/services/agent-worker-base.js +21 -6
  40. package/dist/cli/services/api-retry.d.ts +25 -0
  41. package/dist/cli/services/api-retry.js +91 -0
  42. package/dist/cli/services/auth-service.d.ts +1 -1
  43. package/dist/cli/services/auth-service.js +40 -19
  44. package/dist/cli/services/background-processes.js +26 -2
  45. package/dist/cli/services/config-store.d.ts +13 -1
  46. package/dist/cli/services/config-store.js +116 -13
  47. package/dist/cli/services/format-server-response.js +12 -6
  48. package/dist/cli/services/ink-resize-fix.d.ts +18 -0
  49. package/dist/cli/services/ink-resize-fix.js +66 -0
  50. package/dist/cli/services/interactive-tools.d.ts +14 -0
  51. package/dist/cli/services/interactive-tools.js +47 -2
  52. package/dist/cli/services/keybinding-manager.js +1 -1
  53. package/dist/cli/services/local-tools.js +35 -2
  54. package/dist/cli/services/server-tools.js +175 -3
  55. package/dist/cli/services/subagent.js +15 -3
  56. package/dist/cli/services/system-prompt.js +5 -3
  57. package/dist/cli/services/task-decomposer.d.ts +35 -0
  58. package/dist/cli/services/task-decomposer.js +199 -0
  59. package/dist/cli/services/team-lead.d.ts +18 -0
  60. package/dist/cli/services/team-lead.js +80 -0
  61. package/dist/cli/services/teammate.js +5 -5
  62. package/dist/cli/services/telemetry.d.ts +8 -2
  63. package/dist/cli/services/telemetry.js +116 -92
  64. package/dist/cli/services/tools/agent-tools.d.ts +1 -0
  65. package/dist/cli/services/tools/agent-tools.js +50 -4
  66. package/dist/cli/services/tools/file-ops.d.ts +2 -0
  67. package/dist/cli/services/tools/file-ops.js +71 -19
  68. package/dist/cli/services/tools/shell-exec.js +22 -12
  69. package/dist/cli/shared/Theme.d.ts +1 -2
  70. package/dist/cli/shared/Theme.js +1 -1
  71. package/dist/cli/shared/WhaleBanner.d.ts +4 -1
  72. package/dist/cli/shared/WhaleBanner.js +12 -8
  73. package/dist/cli/shared/markdown.d.ts +5 -4
  74. package/dist/cli/shared/markdown.js +376 -334
  75. package/dist/cli/shared/theme-manager.d.ts +27 -0
  76. package/dist/cli/shared/theme-manager.js +178 -0
  77. package/dist/cli/shared/theme-presets.d.ts +16 -0
  78. package/dist/cli/shared/theme-presets.js +265 -0
  79. package/dist/index.js +0 -51
  80. package/dist/node/adapters/imessage.d.ts +10 -0
  81. package/dist/node/adapters/imessage.js +45 -6
  82. package/dist/node/cli.js +459 -8
  83. package/dist/node/config.d.ts +17 -0
  84. package/dist/node/gateway-client.d.ts +55 -0
  85. package/dist/node/gateway-client.js +201 -0
  86. package/dist/node/portal/clipboard.d.ts +28 -0
  87. package/dist/node/portal/clipboard.js +183 -0
  88. package/dist/node/portal/discovery.d.ts +29 -0
  89. package/dist/node/portal/discovery.js +61 -0
  90. package/dist/node/portal/forward.d.ts +30 -0
  91. package/dist/node/portal/forward.js +90 -0
  92. package/dist/node/portal/index.d.ts +47 -0
  93. package/dist/node/portal/index.js +250 -0
  94. package/dist/node/portal/multiplexer.d.ts +48 -0
  95. package/dist/node/portal/multiplexer.js +207 -0
  96. package/dist/node/portal/permissions.d.ts +36 -0
  97. package/dist/node/portal/permissions.js +131 -0
  98. package/dist/node/portal/protocol.d.ts +140 -0
  99. package/dist/node/portal/protocol.js +193 -0
  100. package/dist/node/portal/screen.d.ts +18 -0
  101. package/dist/node/portal/screen.js +93 -0
  102. package/dist/node/portal/session.d.ts +68 -0
  103. package/dist/node/portal/session.js +127 -0
  104. package/dist/node/portal/shell.d.ts +26 -0
  105. package/dist/node/portal/shell.js +142 -0
  106. package/dist/node/portal/stream.d.ts +43 -0
  107. package/dist/node/portal/stream.js +90 -0
  108. package/dist/node/portal/transfer.d.ts +33 -0
  109. package/dist/node/portal/transfer.js +231 -0
  110. package/dist/node/portal/ui.d.ts +16 -0
  111. package/dist/node/portal/ui.js +148 -0
  112. package/dist/node/remote-desktop/compile-helper.d.ts +13 -0
  113. package/dist/node/remote-desktop/compile-helper.js +73 -0
  114. package/dist/node/remote-desktop/index.d.ts +67 -0
  115. package/dist/node/remote-desktop/index.js +220 -0
  116. package/dist/node/remote-desktop/protocol.d.ts +96 -0
  117. package/dist/node/remote-desktop/protocol.js +67 -0
  118. package/dist/node/runtime.d.ts +8 -1
  119. package/dist/node/runtime.js +117 -9
  120. package/dist/server/handlers/__test-utils__/test-db.d.ts +25 -0
  121. package/dist/server/handlers/__test-utils__/test-db.js +128 -0
  122. package/dist/server/handlers/api-keys.js +26 -2
  123. package/dist/server/handlers/browser.d.ts +0 -4
  124. package/dist/server/handlers/browser.js +0 -46
  125. package/dist/server/handlers/catalog.js +37 -14
  126. package/dist/server/handlers/clickhouse.d.ts +10 -0
  127. package/dist/server/handlers/clickhouse.js +215 -0
  128. package/dist/server/handlers/comms.d.ts +308 -4
  129. package/dist/server/handlers/comms.js +444 -11
  130. package/dist/server/handlers/creations.js +1 -1
  131. package/dist/server/handlers/crm.d.ts +54 -8
  132. package/dist/server/handlers/crm.js +353 -68
  133. package/dist/server/handlers/embeddings.js +3 -3
  134. package/dist/server/handlers/enrichment.js +39 -55
  135. package/dist/server/handlers/inventory.js +1 -1
  136. package/dist/server/handlers/kali.d.ts +9 -1
  137. package/dist/server/handlers/kali.js +50 -1
  138. package/dist/server/handlers/media.d.ts +8 -0
  139. package/dist/server/handlers/media.js +902 -0
  140. package/dist/server/handlers/meta-ads.js +6 -3
  141. package/dist/server/handlers/nodes.d.ts +2 -0
  142. package/dist/server/handlers/nodes.js +331 -40
  143. package/dist/server/handlers/operations.d.ts +4 -6
  144. package/dist/server/handlers/operations.js +99 -38
  145. package/dist/server/handlers/platform.js +224 -107
  146. package/dist/server/handlers/remove-bg.d.ts +6 -0
  147. package/dist/server/handlers/remove-bg.js +96 -0
  148. package/dist/server/handlers/storefront.d.ts +6 -0
  149. package/dist/server/handlers/storefront.js +477 -0
  150. package/dist/server/handlers/supply-chain.js +21 -3
  151. package/dist/server/handlers/workflow-steps.js +87 -31
  152. package/dist/server/handlers/workflows.js +4 -1
  153. package/dist/server/index.js +334 -88
  154. package/dist/server/lib/clickhouse-buffer.d.ts +48 -0
  155. package/dist/server/lib/clickhouse-buffer.js +175 -0
  156. package/dist/server/lib/clickhouse-client.d.ts +112 -0
  157. package/dist/server/lib/clickhouse-client.js +141 -0
  158. package/dist/server/lib/coa-renderer.d.ts +91 -0
  159. package/dist/server/lib/coa-renderer.js +411 -0
  160. package/dist/server/lib/compaction-service.js +45 -1
  161. package/dist/server/lib/pdf-renderer.d.ts +143 -0
  162. package/dist/server/lib/pdf-renderer.js +867 -0
  163. package/dist/server/lib/react-pdf-layout.d.ts +40 -0
  164. package/dist/server/lib/react-pdf-layout.js +437 -0
  165. package/dist/server/lib/server-agent-loop.d.ts +2 -0
  166. package/dist/server/lib/server-agent-loop.js +61 -15
  167. package/dist/server/lib/server-subagent.d.ts +3 -0
  168. package/dist/server/lib/server-subagent.js +7 -4
  169. package/dist/server/lib/supabase-client.js +51 -3
  170. package/dist/server/lib/template-resolver.js +14 -4
  171. package/dist/server/lib/utils.js +15 -0
  172. package/dist/server/local-agent-gateway.d.ts +44 -0
  173. package/dist/server/local-agent-gateway.js +389 -49
  174. package/dist/server/providers/anthropic.js +12 -2
  175. package/dist/server/providers/gemini.js +17 -2
  176. package/dist/server/proxy-handlers.js +151 -0
  177. package/dist/server/tool-router.d.ts +2 -2
  178. package/dist/server/tool-router.js +25 -35
  179. package/dist/shared/agent-core.d.ts +5 -2
  180. package/dist/shared/agent-core.js +30 -4
  181. package/dist/shared/api-client.js +54 -3
  182. package/dist/shared/sse-parser.d.ts +1 -1
  183. package/dist/shared/sse-parser.js +5 -2
  184. package/dist/shared/tool-dispatch.js +1 -1
  185. package/package.json +16 -10
  186. package/dist/server/handlers/__test-utils__/mock-supabase.d.ts +0 -11
  187. package/dist/server/handlers/__test-utils__/mock-supabase.js +0 -393
@@ -0,0 +1,215 @@
1
+ import { getClickHouseClient } from "../lib/clickhouse-client.js";
2
+ /**
3
+ * ClickHouse observability handler — platform-level metrics via direct HTTP queries.
4
+ * Replaces FDW RPCs with direct ClickHouse queries for lower latency.
5
+ */
6
+ export async function handleClickHouse(sb, args, storeId) {
7
+ const sid = storeId;
8
+ const hoursBack = args.hours_back || 24;
9
+ const limit = Math.min(args.limit || 50, 200);
10
+ const ch = getClickHouseClient();
11
+ if (!ch.isEnabled) {
12
+ return { success: false, error: "ClickHouse is not configured" };
13
+ }
14
+ const storeFilter = sid ? `AND store_id = '${esc(sid)}'` : "";
15
+ switch (args.action) {
16
+ // ---- traces: List recent traces ----
17
+ case "traces": {
18
+ const data = await ch.query(`
19
+ SELECT
20
+ trace_id,
21
+ arrayElement(groupArrayIf(service_name, parent_span_id = '' OR parent_span_id IS NULL), 1) AS root_service,
22
+ arrayElement(groupArrayIf(operation_name, parent_span_id = '' OR parent_span_id IS NULL), 1) AS root_operation,
23
+ toInt32(dateDiff('millisecond', min(started_at), max(ended_at))) AS duration,
24
+ count() AS span_count,
25
+ countIf(status_code = 'ERROR') AS error_count,
26
+ min(started_at) AS started_at,
27
+ if(countIf(status_code = 'ERROR') > 0, 'error', 'ok') AS status
28
+ FROM ai_spans
29
+ WHERE 1=1 ${storeFilter}
30
+ GROUP BY trace_id
31
+ ORDER BY min(started_at) DESC
32
+ LIMIT ${limit}
33
+ `);
34
+ return { success: true, data };
35
+ }
36
+ // ---- trace_detail: Full trace waterfall ----
37
+ case "trace_detail": {
38
+ const traceId = args.trace_id;
39
+ if (!traceId)
40
+ return { success: false, error: "trace_id is required" };
41
+ const spans = await ch.query(`
42
+ SELECT
43
+ span_id, parent_span_id, trace_id, operation_name,
44
+ service_name, duration_ms AS duration,
45
+ started_at, ended_at,
46
+ if(status_code = 'ERROR', 'error', 'ok') AS status,
47
+ attributes, events
48
+ FROM ai_spans
49
+ WHERE trace_id = '${esc(traceId)}'
50
+ ORDER BY started_at ASC
51
+ `);
52
+ return { success: true, data: { trace_id: traceId, spans } };
53
+ }
54
+ // ---- function_health: Service health metrics ----
55
+ case "function_health": {
56
+ const data = await ch.query(`
57
+ SELECT
58
+ service_name AS function_name,
59
+ sum(total_requests) AS total_reqs,
60
+ sum(error_count) AS total_errors,
61
+ sum(client_error_count) AS client_errors,
62
+ if(sum(total_requests) > 0, sum(error_count) / sum(total_requests), 0) AS error_rate,
63
+ if(sum(latency_count) > 0, sum(latency_sum_ms) / sum(latency_count), 0) AS avg_latency_ms,
64
+ max(latency_max_ms) AS p95_latency_ms,
65
+ min(latency_min_ms) AS min_latency_ms,
66
+ max(latency_max_ms) AS max_latency_ms,
67
+ max(bucket) AS last_request_at
68
+ FROM function_health
69
+ WHERE bucket >= now() - INTERVAL ${hoursBack} HOUR
70
+ ${storeFilter}
71
+ GROUP BY service_name
72
+ `);
73
+ return { success: true, data };
74
+ }
75
+ // ---- function_logs: Request logs ----
76
+ case "function_logs": {
77
+ const functionName = args.function_name;
78
+ if (!functionName)
79
+ return { success: false, error: "function_name is required" };
80
+ const levelFilter = args.level ? `AND severity = '${esc(args.level)}'` : "";
81
+ const data = await ch.query(`
82
+ SELECT
83
+ request_id, service_name AS function_name, http_status AS status,
84
+ duration_ms, http_method AS method, http_path AS path,
85
+ store_id, status_code = 'ERROR' AS has_error,
86
+ started_at AS first_seen, events AS lines
87
+ FROM ai_spans
88
+ WHERE service_name = '${esc(functionName)}'
89
+ ${storeFilter} ${levelFilter}
90
+ AND span_kind = 'SERVER'
91
+ ORDER BY started_at DESC
92
+ LIMIT ${limit}
93
+ `);
94
+ return { success: true, data };
95
+ }
96
+ // ---- cost_budgets: Budget utilization ----
97
+ case "cost_budgets": {
98
+ if (!sid)
99
+ return { success: false, error: "store_id is required for cost_budgets" };
100
+ // Cost budgets require Postgres for ai_cost_budgets table + ClickHouse for spend
101
+ const { data: budgets, error: budgetErr } = await sb
102
+ .from("ai_cost_budgets")
103
+ .select("agent_id, limit_usd, is_active, created_at")
104
+ .eq("is_active", true)
105
+ .eq("store_id", sid);
106
+ if (budgetErr)
107
+ return { success: false, error: budgetErr.message };
108
+ const agentIds = (budgets || []).map(b => `'${esc(b.agent_id)}'`).join(",");
109
+ const spendRows = agentIds
110
+ ? await ch.query(`
111
+ SELECT agent_id, sum(total_cost_usd) AS total_cost_usd
112
+ FROM token_usage_hourly
113
+ WHERE agent_id IN (${agentIds})
114
+ AND store_id = '${esc(sid)}'
115
+ GROUP BY agent_id
116
+ `)
117
+ : [];
118
+ const spendMap = new Map(spendRows.map(r => [r.agent_id, r.total_cost_usd]));
119
+ const data = (budgets || []).map(b => {
120
+ const spend = spendMap.get(b.agent_id) || 0;
121
+ return {
122
+ agent_id: b.agent_id,
123
+ budget_amount: b.limit_usd,
124
+ current_spend: spend,
125
+ period_start: b.created_at,
126
+ period_end: new Date().toISOString(),
127
+ utilization_pct: b.limit_usd > 0 ? (spend / b.limit_usd) * 100 : 0,
128
+ is_over_budget: spend > b.limit_usd,
129
+ };
130
+ });
131
+ return { success: true, data };
132
+ }
133
+ // ---- error_groups: Error fingerprints grouped ----
134
+ case "error_groups": {
135
+ const data = await ch.query(`
136
+ SELECT
137
+ fingerprint,
138
+ any(error_type) AS error_type,
139
+ substring(any(error_message), 1, 200) AS message,
140
+ any(severity) AS severity,
141
+ any(service_name) AS service,
142
+ count() AS count,
143
+ max(occurred_at) AS last_seen
144
+ FROM error_events
145
+ WHERE occurred_at >= now() - INTERVAL ${hoursBack} HOUR
146
+ GROUP BY fingerprint
147
+ ORDER BY count DESC
148
+ LIMIT ${limit}
149
+ `);
150
+ return { success: true, data: { groups: data, total_groups: data.length, hours_back: hoursBack } };
151
+ }
152
+ // ---- system_status: Combined overview ----
153
+ case "system_status": {
154
+ const [functions, traces, budgetData] = await Promise.all([
155
+ ch.query(`
156
+ SELECT
157
+ service_name AS function_name,
158
+ sum(total_requests) AS total_reqs,
159
+ sum(error_count) AS total_errors,
160
+ if(sum(total_requests) > 0, sum(error_count) / sum(total_requests), 0) AS error_rate,
161
+ max(bucket) AS last_request_at
162
+ FROM function_health
163
+ WHERE bucket >= now() - INTERVAL ${Math.min(hoursBack, 1)} HOUR
164
+ ${storeFilter}
165
+ GROUP BY service_name
166
+ `),
167
+ ch.query(`
168
+ SELECT
169
+ trace_id,
170
+ arrayElement(groupArrayIf(service_name, parent_span_id = '' OR parent_span_id IS NULL), 1) AS root_service,
171
+ arrayElement(groupArrayIf(operation_name, parent_span_id = '' OR parent_span_id IS NULL), 1) AS root_operation,
172
+ toInt32(dateDiff('millisecond', min(started_at), max(ended_at))) AS duration,
173
+ count() AS span_count,
174
+ countIf(status_code = 'ERROR') AS error_count,
175
+ min(started_at) AS started_at,
176
+ if(countIf(status_code = 'ERROR') > 0, 'error', 'ok') AS status
177
+ FROM ai_spans
178
+ WHERE 1=1 ${storeFilter}
179
+ GROUP BY trace_id
180
+ ORDER BY min(started_at) DESC
181
+ LIMIT 10
182
+ `),
183
+ sid
184
+ ? handleClickHouse(sb, { action: "cost_budgets" }, sid)
185
+ : Promise.resolve({ success: true, data: null }),
186
+ ]);
187
+ const totalRequests = functions.reduce((sum, f) => sum + (f.total_requests || 0), 0);
188
+ const totalErrors = functions.reduce((sum, f) => sum + (f.error_count || 0), 0);
189
+ return {
190
+ success: true,
191
+ data: {
192
+ summary: {
193
+ function_count: functions.length,
194
+ total_requests: totalRequests,
195
+ total_errors: totalErrors,
196
+ error_rate: totalRequests > 0 ? Math.round((totalErrors / totalRequests) * 10000) / 100 : 0,
197
+ },
198
+ functions,
199
+ recent_traces: traces,
200
+ cost_budgets: budgetData.data,
201
+ hours_back: hoursBack,
202
+ },
203
+ };
204
+ }
205
+ default:
206
+ return {
207
+ success: false,
208
+ error: `Unknown clickhouse action: ${args.action}. Available: traces, trace_detail, function_health, function_logs, cost_budgets, error_groups, system_status`,
209
+ };
210
+ }
211
+ }
212
+ /** Escape single quotes for ClickHouse SQL */
213
+ function esc(s) {
214
+ return s.replace(/'/g, "\\'");
215
+ }
@@ -33,6 +33,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
33
33
  succeeded?: undefined;
34
34
  failed?: undefined;
35
35
  results?: undefined;
36
+ errors?: undefined;
37
+ warnings?: undefined;
38
+ customers?: undefined;
39
+ document_ids?: undefined;
40
+ customer_id?: undefined;
41
+ customer_email?: undefined;
42
+ email_sent?: undefined;
36
43
  };
37
44
  error?: undefined;
38
45
  } | {
@@ -64,6 +71,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
64
71
  succeeded?: undefined;
65
72
  failed?: undefined;
66
73
  results?: undefined;
74
+ errors?: undefined;
75
+ warnings?: undefined;
76
+ customers?: undefined;
77
+ document_ids?: undefined;
78
+ customer_id?: undefined;
79
+ customer_email?: undefined;
80
+ email_sent?: undefined;
67
81
  };
68
82
  error?: undefined;
69
83
  } | {
@@ -87,6 +101,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
87
101
  succeeded?: undefined;
88
102
  failed?: undefined;
89
103
  results?: undefined;
104
+ errors?: undefined;
105
+ warnings?: undefined;
106
+ customers?: undefined;
107
+ document_ids?: undefined;
108
+ customer_id?: undefined;
109
+ customer_email?: undefined;
110
+ email_sent?: undefined;
90
111
  };
91
112
  error?: undefined;
92
113
  } | {
@@ -110,6 +131,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
110
131
  succeeded?: undefined;
111
132
  failed?: undefined;
112
133
  results?: undefined;
134
+ errors?: undefined;
135
+ warnings?: undefined;
136
+ customers?: undefined;
137
+ document_ids?: undefined;
138
+ customer_id?: undefined;
139
+ customer_email?: undefined;
140
+ email_sent?: undefined;
113
141
  };
114
142
  error?: undefined;
115
143
  } | {
@@ -140,6 +168,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
140
168
  succeeded?: undefined;
141
169
  failed?: undefined;
142
170
  results?: undefined;
171
+ errors?: undefined;
172
+ warnings?: undefined;
173
+ customers?: undefined;
174
+ document_ids?: undefined;
175
+ customer_id?: undefined;
176
+ customer_email?: undefined;
177
+ email_sent?: undefined;
143
178
  };
144
179
  error?: undefined;
145
180
  } | {
@@ -163,6 +198,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
163
198
  succeeded?: undefined;
164
199
  failed?: undefined;
165
200
  results?: undefined;
201
+ errors?: undefined;
202
+ warnings?: undefined;
203
+ customers?: undefined;
204
+ document_ids?: undefined;
205
+ customer_id?: undefined;
206
+ customer_email?: undefined;
207
+ email_sent?: undefined;
166
208
  };
167
209
  error?: undefined;
168
210
  } | {
@@ -192,6 +234,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
192
234
  succeeded?: undefined;
193
235
  failed?: undefined;
194
236
  results?: undefined;
237
+ errors?: undefined;
238
+ warnings?: undefined;
239
+ customers?: undefined;
240
+ document_ids?: undefined;
241
+ customer_id?: undefined;
242
+ customer_email?: undefined;
243
+ email_sent?: undefined;
195
244
  };
196
245
  error?: undefined;
197
246
  } | {
@@ -201,10 +250,10 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
201
250
  profiles: {
202
251
  id: any;
203
252
  name: any;
204
- description: any;
205
- type: any;
206
- headers: any;
207
- fields: number;
253
+ category: any;
254
+ sample_type: any;
255
+ template_id: any;
256
+ has_config: boolean;
208
257
  }[];
209
258
  id?: undefined;
210
259
  name?: undefined;
@@ -222,6 +271,13 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
222
271
  succeeded?: undefined;
223
272
  failed?: undefined;
224
273
  results?: undefined;
274
+ errors?: undefined;
275
+ warnings?: undefined;
276
+ customers?: undefined;
277
+ document_ids?: undefined;
278
+ customer_id?: undefined;
279
+ customer_email?: undefined;
280
+ email_sent?: undefined;
225
281
  };
226
282
  error?: undefined;
227
283
  } | {
@@ -249,6 +305,254 @@ export declare function handleDocuments(sb: SupabaseClient, args: Record<string,
249
305
  template?: undefined;
250
306
  stores?: undefined;
251
307
  profiles?: undefined;
308
+ errors?: undefined;
309
+ warnings?: undefined;
310
+ customers?: undefined;
311
+ document_ids?: undefined;
312
+ customer_id?: undefined;
313
+ customer_email?: undefined;
314
+ email_sent?: undefined;
315
+ };
316
+ error?: undefined;
317
+ } | {
318
+ success: boolean;
319
+ error: string;
320
+ data: {
321
+ errors: import("../lib/pdf-renderer.js").ValidationResult[];
322
+ warnings: import("../lib/pdf-renderer.js").ValidationResult[];
323
+ id?: undefined;
324
+ name?: undefined;
325
+ type?: undefined;
326
+ url?: undefined;
327
+ file_name?: undefined;
328
+ size?: undefined;
329
+ count?: undefined;
330
+ documents?: undefined;
331
+ deleted?: undefined;
332
+ template_id?: undefined;
333
+ templates?: undefined;
334
+ template?: undefined;
335
+ stores?: undefined;
336
+ profiles?: undefined;
337
+ total?: undefined;
338
+ succeeded?: undefined;
339
+ failed?: undefined;
340
+ results?: undefined;
341
+ customers?: undefined;
342
+ document_ids?: undefined;
343
+ customer_id?: undefined;
344
+ customer_email?: undefined;
345
+ email_sent?: undefined;
346
+ };
347
+ } | {
348
+ success: boolean;
349
+ data: {
350
+ id: any;
351
+ name: any;
352
+ url: any;
353
+ template: any;
354
+ size: number;
355
+ warnings: string[];
356
+ type?: undefined;
357
+ file_name?: undefined;
358
+ count?: undefined;
359
+ documents?: undefined;
360
+ deleted?: undefined;
361
+ template_id?: undefined;
362
+ templates?: undefined;
363
+ stores?: undefined;
364
+ profiles?: undefined;
365
+ total?: undefined;
366
+ succeeded?: undefined;
367
+ failed?: undefined;
368
+ results?: undefined;
369
+ errors?: undefined;
370
+ customers?: undefined;
371
+ document_ids?: undefined;
372
+ customer_id?: undefined;
373
+ customer_email?: undefined;
374
+ email_sent?: undefined;
375
+ };
376
+ error?: undefined;
377
+ } | {
378
+ success: boolean;
379
+ data: {
380
+ count: number;
381
+ templates: {
382
+ id: any;
383
+ slug: any;
384
+ name: any;
385
+ description: any;
386
+ type: any;
387
+ version: any;
388
+ }[];
389
+ id?: undefined;
390
+ name?: undefined;
391
+ type?: undefined;
392
+ url?: undefined;
393
+ file_name?: undefined;
394
+ size?: undefined;
395
+ documents?: undefined;
396
+ deleted?: undefined;
397
+ template_id?: undefined;
398
+ template?: undefined;
399
+ stores?: undefined;
400
+ profiles?: undefined;
401
+ total?: undefined;
402
+ succeeded?: undefined;
403
+ failed?: undefined;
404
+ results?: undefined;
405
+ errors?: undefined;
406
+ warnings?: undefined;
407
+ customers?: undefined;
408
+ document_ids?: undefined;
409
+ customer_id?: undefined;
410
+ customer_email?: undefined;
411
+ email_sent?: undefined;
412
+ };
413
+ error?: undefined;
414
+ } | {
415
+ success: boolean;
416
+ data: {
417
+ count: number;
418
+ profiles: {
419
+ id: any;
420
+ name: any;
421
+ category: any;
422
+ sample_type: any;
423
+ default_size: any;
424
+ client_store_id: any;
425
+ }[];
426
+ id?: undefined;
427
+ name?: undefined;
428
+ type?: undefined;
429
+ url?: undefined;
430
+ file_name?: undefined;
431
+ size?: undefined;
432
+ documents?: undefined;
433
+ deleted?: undefined;
434
+ template_id?: undefined;
435
+ templates?: undefined;
436
+ template?: undefined;
437
+ stores?: undefined;
438
+ total?: undefined;
439
+ succeeded?: undefined;
440
+ failed?: undefined;
441
+ results?: undefined;
442
+ errors?: undefined;
443
+ warnings?: undefined;
444
+ customers?: undefined;
445
+ document_ids?: undefined;
446
+ customer_id?: undefined;
447
+ customer_email?: undefined;
448
+ email_sent?: undefined;
449
+ };
450
+ error?: undefined;
451
+ } | {
452
+ success: boolean;
453
+ data: {
454
+ count: number;
455
+ customers: {
456
+ id: any;
457
+ name: string;
458
+ email: any;
459
+ phone: any;
460
+ loyalty_tier: any;
461
+ total_orders: any;
462
+ is_active: any;
463
+ }[];
464
+ id?: undefined;
465
+ name?: undefined;
466
+ type?: undefined;
467
+ url?: undefined;
468
+ file_name?: undefined;
469
+ size?: undefined;
470
+ documents?: undefined;
471
+ deleted?: undefined;
472
+ template_id?: undefined;
473
+ templates?: undefined;
474
+ template?: undefined;
475
+ stores?: undefined;
476
+ profiles?: undefined;
477
+ total?: undefined;
478
+ succeeded?: undefined;
479
+ failed?: undefined;
480
+ results?: undefined;
481
+ errors?: undefined;
482
+ warnings?: undefined;
483
+ document_ids?: undefined;
484
+ customer_id?: undefined;
485
+ customer_email?: undefined;
486
+ email_sent?: undefined;
487
+ };
488
+ error?: undefined;
489
+ } | {
490
+ success: boolean;
491
+ data: {
492
+ document_ids: string[];
493
+ customer_id: string;
494
+ customer_email: string;
495
+ email_sent: boolean;
496
+ count: number;
497
+ id?: undefined;
498
+ name?: undefined;
499
+ type?: undefined;
500
+ url?: undefined;
501
+ file_name?: undefined;
502
+ size?: undefined;
503
+ documents?: undefined;
504
+ deleted?: undefined;
505
+ template_id?: undefined;
506
+ templates?: undefined;
507
+ template?: undefined;
508
+ stores?: undefined;
509
+ profiles?: undefined;
510
+ total?: undefined;
511
+ succeeded?: undefined;
512
+ failed?: undefined;
513
+ results?: undefined;
514
+ errors?: undefined;
515
+ warnings?: undefined;
516
+ customers?: undefined;
517
+ };
518
+ error?: undefined;
519
+ } | {
520
+ success: boolean;
521
+ data: {
522
+ count: number;
523
+ documents: {
524
+ id: any;
525
+ document_name: any;
526
+ file_url: any;
527
+ file_type: any;
528
+ created_at: any;
529
+ thumbnail_url: any;
530
+ metadata: any;
531
+ document_type: any;
532
+ }[];
533
+ id?: undefined;
534
+ name?: undefined;
535
+ type?: undefined;
536
+ url?: undefined;
537
+ file_name?: undefined;
538
+ size?: undefined;
539
+ deleted?: undefined;
540
+ template_id?: undefined;
541
+ templates?: undefined;
542
+ template?: undefined;
543
+ stores?: undefined;
544
+ profiles?: undefined;
545
+ total?: undefined;
546
+ succeeded?: undefined;
547
+ failed?: undefined;
548
+ results?: undefined;
549
+ errors?: undefined;
550
+ warnings?: undefined;
551
+ customers?: undefined;
552
+ document_ids?: undefined;
553
+ customer_id?: undefined;
554
+ customer_email?: undefined;
555
+ email_sent?: undefined;
252
556
  };
253
557
  error?: undefined;
254
558
  }>;