hazo_llm_api 1.2.13 → 1.3.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 (204) hide show
  1. package/README.md +321 -8
  2. package/config/hazo_llm_api_config.ini +33 -0
  3. package/dist/components/index.d.ts +2 -0
  4. package/dist/components/index.d.ts.map +1 -1
  5. package/dist/components/index.js +2 -0
  6. package/dist/components/index.js.map +1 -1
  7. package/dist/components/llm_call_inspector/index.d.ts +6 -0
  8. package/dist/components/llm_call_inspector/index.d.ts.map +1 -0
  9. package/dist/components/llm_call_inspector/index.js +5 -0
  10. package/dist/components/llm_call_inspector/index.js.map +1 -0
  11. package/dist/components/llm_call_inspector/llm_call_inspector.d.ts +18 -0
  12. package/dist/components/llm_call_inspector/llm_call_inspector.d.ts.map +1 -0
  13. package/dist/components/llm_call_inspector/llm_call_inspector.js +103 -0
  14. package/dist/components/llm_call_inspector/llm_call_inspector.js.map +1 -0
  15. package/dist/components/llm_cost_dashboard/index.d.ts +6 -0
  16. package/dist/components/llm_cost_dashboard/index.d.ts.map +1 -0
  17. package/dist/components/llm_cost_dashboard/index.js +5 -0
  18. package/dist/components/llm_cost_dashboard/index.js.map +1 -0
  19. package/dist/components/llm_cost_dashboard/llm_cost_dashboard.d.ts +16 -0
  20. package/dist/components/llm_cost_dashboard/llm_cost_dashboard.d.ts.map +1 -0
  21. package/dist/components/llm_cost_dashboard/llm_cost_dashboard.js +154 -0
  22. package/dist/components/llm_cost_dashboard/llm_cost_dashboard.js.map +1 -0
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/lib/cascade/cascade_runner.d.ts +50 -0
  26. package/dist/lib/cascade/cascade_runner.d.ts.map +1 -0
  27. package/dist/lib/cascade/cascade_runner.js +115 -0
  28. package/dist/lib/cascade/cascade_runner.js.map +1 -0
  29. package/dist/lib/cascade/index.d.ts +5 -0
  30. package/dist/lib/cascade/index.d.ts.map +1 -0
  31. package/dist/lib/cascade/index.js +4 -0
  32. package/dist/lib/cascade/index.js.map +1 -0
  33. package/dist/lib/cascade/types.d.ts +35 -0
  34. package/dist/lib/cascade/types.d.ts.map +1 -0
  35. package/dist/lib/cascade/types.js +14 -0
  36. package/dist/lib/cascade/types.js.map +1 -0
  37. package/dist/lib/cost_cap/cost_cap.d.ts +40 -0
  38. package/dist/lib/cost_cap/cost_cap.d.ts.map +1 -0
  39. package/dist/lib/cost_cap/cost_cap.js +150 -0
  40. package/dist/lib/cost_cap/cost_cap.js.map +1 -0
  41. package/dist/lib/cost_cap/index.d.ts +3 -0
  42. package/dist/lib/cost_cap/index.d.ts.map +1 -0
  43. package/dist/lib/cost_cap/index.js +2 -0
  44. package/dist/lib/cost_cap/index.js.map +1 -0
  45. package/dist/lib/database/init_api_log.d.ts +10 -0
  46. package/dist/lib/database/init_api_log.d.ts.map +1 -0
  47. package/dist/lib/database/init_api_log.js +91 -0
  48. package/dist/lib/database/init_api_log.js.map +1 -0
  49. package/dist/lib/hazo_connect/direct_db_connect.d.ts +11 -7
  50. package/dist/lib/hazo_connect/direct_db_connect.d.ts.map +1 -1
  51. package/dist/lib/hazo_connect/direct_db_connect.js +59 -6
  52. package/dist/lib/hazo_connect/direct_db_connect.js.map +1 -1
  53. package/dist/lib/hazo_connect/types.d.ts +35 -3
  54. package/dist/lib/hazo_connect/types.d.ts.map +1 -1
  55. package/dist/lib/llm_api/embed_cache.d.ts +15 -0
  56. package/dist/lib/llm_api/embed_cache.d.ts.map +1 -0
  57. package/dist/lib/llm_api/embed_cache.js +53 -0
  58. package/dist/lib/llm_api/embed_cache.js.map +1 -0
  59. package/dist/lib/llm_api/hazo_llm_document_text.d.ts.map +1 -1
  60. package/dist/lib/llm_api/hazo_llm_document_text.js +56 -14
  61. package/dist/lib/llm_api/hazo_llm_document_text.js.map +1 -1
  62. package/dist/lib/llm_api/hazo_llm_dynamic_data_extract.d.ts.map +1 -1
  63. package/dist/lib/llm_api/hazo_llm_dynamic_data_extract.js +19 -1
  64. package/dist/lib/llm_api/hazo_llm_dynamic_data_extract.js.map +1 -1
  65. package/dist/lib/llm_api/hazo_llm_embed.d.ts +10 -0
  66. package/dist/lib/llm_api/hazo_llm_embed.d.ts.map +1 -0
  67. package/dist/lib/llm_api/hazo_llm_embed.js +80 -0
  68. package/dist/lib/llm_api/hazo_llm_embed.js.map +1 -0
  69. package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -1
  70. package/dist/lib/llm_api/hazo_llm_image_image.js +56 -14
  71. package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -1
  72. package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -1
  73. package/dist/lib/llm_api/hazo_llm_image_text.js +56 -14
  74. package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -1
  75. package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -1
  76. package/dist/lib/llm_api/hazo_llm_prompt_chain.js +17 -1
  77. package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -1
  78. package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -1
  79. package/dist/lib/llm_api/hazo_llm_text_image.js +56 -14
  80. package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -1
  81. package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -1
  82. package/dist/lib/llm_api/hazo_llm_text_text.js +90 -15
  83. package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -1
  84. package/dist/lib/llm_api/index.d.ts +29 -1
  85. package/dist/lib/llm_api/index.d.ts.map +1 -1
  86. package/dist/lib/llm_api/index.js +433 -6
  87. package/dist/lib/llm_api/index.js.map +1 -1
  88. package/dist/lib/llm_api/prompt_parts_helper.d.ts +15 -0
  89. package/dist/lib/llm_api/prompt_parts_helper.d.ts.map +1 -0
  90. package/dist/lib/llm_api/prompt_parts_helper.js +9 -0
  91. package/dist/lib/llm_api/prompt_parts_helper.js.map +1 -0
  92. package/dist/lib/llm_api/types.d.ts +187 -2
  93. package/dist/lib/llm_api/types.d.ts.map +1 -1
  94. package/dist/lib/llm_api/types.js +4 -0
  95. package/dist/lib/llm_api/types.js.map +1 -1
  96. package/dist/lib/maintenance/purge_log_job.d.ts +23 -0
  97. package/dist/lib/maintenance/purge_log_job.d.ts.map +1 -0
  98. package/dist/lib/maintenance/purge_log_job.js +42 -0
  99. package/dist/lib/maintenance/purge_log_job.js.map +1 -0
  100. package/dist/lib/observability/log_context.d.ts +15 -0
  101. package/dist/lib/observability/log_context.d.ts.map +1 -0
  102. package/dist/lib/observability/log_context.js +32 -0
  103. package/dist/lib/observability/log_context.js.map +1 -0
  104. package/dist/lib/observability/log_writer.d.ts +35 -0
  105. package/dist/lib/observability/log_writer.d.ts.map +1 -0
  106. package/dist/lib/observability/log_writer.js +106 -0
  107. package/dist/lib/observability/log_writer.js.map +1 -0
  108. package/dist/lib/observability/queries.d.ts +15 -0
  109. package/dist/lib/observability/queries.d.ts.map +1 -0
  110. package/dist/lib/observability/queries.js +78 -0
  111. package/dist/lib/observability/queries.js.map +1 -0
  112. package/dist/lib/observability/types.d.ts +77 -0
  113. package/dist/lib/observability/types.d.ts.map +1 -0
  114. package/dist/lib/observability/types.js +8 -0
  115. package/dist/lib/observability/types.js.map +1 -0
  116. package/dist/lib/pricing/pricing.d.ts +49 -0
  117. package/dist/lib/pricing/pricing.d.ts.map +1 -0
  118. package/dist/lib/pricing/pricing.js +153 -0
  119. package/dist/lib/pricing/pricing.js.map +1 -0
  120. package/dist/lib/pricing/pricing.json +75 -0
  121. package/dist/lib/pricing/types.d.ts +58 -0
  122. package/dist/lib/pricing/types.d.ts.map +1 -0
  123. package/dist/lib/pricing/types.js +8 -0
  124. package/dist/lib/pricing/types.js.map +1 -0
  125. package/dist/lib/providers/anthropic/anthropic_client.d.ts +71 -0
  126. package/dist/lib/providers/anthropic/anthropic_client.d.ts.map +1 -0
  127. package/dist/lib/providers/anthropic/anthropic_client.js +134 -0
  128. package/dist/lib/providers/anthropic/anthropic_client.js.map +1 -0
  129. package/dist/lib/providers/anthropic/anthropic_provider.d.ts +60 -0
  130. package/dist/lib/providers/anthropic/anthropic_provider.d.ts.map +1 -0
  131. package/dist/lib/providers/anthropic/anthropic_provider.js +273 -0
  132. package/dist/lib/providers/anthropic/anthropic_provider.js.map +1 -0
  133. package/dist/lib/providers/anthropic/anthropic_response_to_usage.d.ts +21 -0
  134. package/dist/lib/providers/anthropic/anthropic_response_to_usage.d.ts.map +1 -0
  135. package/dist/lib/providers/anthropic/anthropic_response_to_usage.js +46 -0
  136. package/dist/lib/providers/anthropic/anthropic_response_to_usage.js.map +1 -0
  137. package/dist/lib/providers/anthropic/index.d.ts +3 -0
  138. package/dist/lib/providers/anthropic/index.d.ts.map +1 -0
  139. package/dist/lib/providers/anthropic/index.js +2 -0
  140. package/dist/lib/providers/anthropic/index.js.map +1 -0
  141. package/dist/lib/providers/deepseek/deepseek_client.d.ts +55 -0
  142. package/dist/lib/providers/deepseek/deepseek_client.d.ts.map +1 -0
  143. package/dist/lib/providers/deepseek/deepseek_client.js +129 -0
  144. package/dist/lib/providers/deepseek/deepseek_client.js.map +1 -0
  145. package/dist/lib/providers/deepseek/deepseek_provider.d.ts +50 -0
  146. package/dist/lib/providers/deepseek/deepseek_provider.d.ts.map +1 -0
  147. package/dist/lib/providers/deepseek/deepseek_provider.js +147 -0
  148. package/dist/lib/providers/deepseek/deepseek_provider.js.map +1 -0
  149. package/dist/lib/providers/deepseek/deepseek_response_to_usage.d.ts +21 -0
  150. package/dist/lib/providers/deepseek/deepseek_response_to_usage.d.ts.map +1 -0
  151. package/dist/lib/providers/deepseek/deepseek_response_to_usage.js +40 -0
  152. package/dist/lib/providers/deepseek/deepseek_response_to_usage.js.map +1 -0
  153. package/dist/lib/providers/deepseek/index.d.ts +3 -0
  154. package/dist/lib/providers/deepseek/index.d.ts.map +1 -0
  155. package/dist/lib/providers/deepseek/index.js +2 -0
  156. package/dist/lib/providers/deepseek/index.js.map +1 -0
  157. package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -1
  158. package/dist/lib/providers/gemini/gemini_provider.js +40 -4
  159. package/dist/lib/providers/gemini/gemini_provider.js.map +1 -1
  160. package/dist/lib/providers/gemini/gemini_response_to_usage.d.ts +37 -0
  161. package/dist/lib/providers/gemini/gemini_response_to_usage.d.ts.map +1 -0
  162. package/dist/lib/providers/gemini/gemini_response_to_usage.js +49 -0
  163. package/dist/lib/providers/gemini/gemini_response_to_usage.js.map +1 -0
  164. package/dist/lib/providers/index.d.ts +3 -0
  165. package/dist/lib/providers/index.d.ts.map +1 -1
  166. package/dist/lib/providers/index.js +3 -0
  167. package/dist/lib/providers/index.js.map +1 -1
  168. package/dist/lib/providers/openai/index.d.ts +3 -0
  169. package/dist/lib/providers/openai/index.d.ts.map +1 -0
  170. package/dist/lib/providers/openai/index.js +2 -0
  171. package/dist/lib/providers/openai/index.js.map +1 -0
  172. package/dist/lib/providers/openai/openai_client.d.ts +99 -0
  173. package/dist/lib/providers/openai/openai_client.d.ts.map +1 -0
  174. package/dist/lib/providers/openai/openai_client.js +187 -0
  175. package/dist/lib/providers/openai/openai_client.js.map +1 -0
  176. package/dist/lib/providers/openai/openai_provider.d.ts +66 -0
  177. package/dist/lib/providers/openai/openai_provider.d.ts.map +1 -0
  178. package/dist/lib/providers/openai/openai_provider.js +297 -0
  179. package/dist/lib/providers/openai/openai_provider.js.map +1 -0
  180. package/dist/lib/providers/openai/openai_response_to_usage.d.ts +21 -0
  181. package/dist/lib/providers/openai/openai_response_to_usage.d.ts.map +1 -0
  182. package/dist/lib/providers/openai/openai_response_to_usage.js +50 -0
  183. package/dist/lib/providers/openai/openai_response_to_usage.js.map +1 -0
  184. package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -1
  185. package/dist/lib/providers/qwen/qwen_provider.js +52 -5
  186. package/dist/lib/providers/qwen/qwen_provider.js.map +1 -1
  187. package/dist/lib/providers/qwen/qwen_response_to_usage.d.ts +36 -0
  188. package/dist/lib/providers/qwen/qwen_response_to_usage.d.ts.map +1 -0
  189. package/dist/lib/providers/qwen/qwen_response_to_usage.js +50 -0
  190. package/dist/lib/providers/qwen/qwen_response_to_usage.js.map +1 -0
  191. package/dist/lib/providers/types.d.ts +16 -6
  192. package/dist/lib/providers/types.d.ts.map +1 -1
  193. package/dist/lib/providers/types.js +1 -0
  194. package/dist/lib/providers/types.js.map +1 -1
  195. package/dist/lib/utils.d.ts +13 -0
  196. package/dist/lib/utils.d.ts.map +1 -0
  197. package/dist/lib/utils.js +16 -0
  198. package/dist/lib/utils.js.map +1 -0
  199. package/dist/server.d.ts +16 -2
  200. package/dist/server.d.ts.map +1 -1
  201. package/dist/server.js +29 -2
  202. package/dist/server.js.map +1 -1
  203. package/migrations/hazo_llm_api_log.sql +69 -0
  204. package/package.json +19 -5
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Cost Cap Gate
3
+ *
4
+ * Pre-call gate that checks the accumulated cost for the current session
5
+ * against a configured cap. Returns a COST_LIMIT_EXCEEDED error response
6
+ * when the cap is reached (block mode) or fires a warn hook and proceeds
7
+ * (warn mode).
8
+ *
9
+ * Requires:
10
+ * - hazo_llm_api_log table to exist (ensure_api_log_table must be called first)
11
+ * - A session_id available via hazo_logs ALS (safe_get_log_context)
12
+ * - cost_cap.enabled = true in LLMApiConfig
13
+ */
14
+ import { build_error_response } from '../llm_api/provider_helper.js';
15
+ import { LLM_ERROR_CODES } from '../llm_api/types.js';
16
+ import { safe_get_log_context } from '../observability/log_context.js';
17
+ // =============================================================================
18
+ // Internal Helpers
19
+ // =============================================================================
20
+ /**
21
+ * Compute the window_start timestamp string for the rolling window.
22
+ *
23
+ * - 'day': rolling 24 hours
24
+ * - 'hour': rolling 1 hour
25
+ * - 'session': epoch (all records for this session regardless of age)
26
+ */
27
+ function get_window_start(window = 'session') {
28
+ if (window === 'day') {
29
+ return new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
30
+ }
31
+ if (window === 'hour') {
32
+ return new Date(Date.now() - 60 * 60 * 1000).toISOString();
33
+ }
34
+ // 'session': use epoch to capture all records for this session
35
+ return '1970-01-01T00:00:00.000Z';
36
+ }
37
+ // =============================================================================
38
+ // Public API
39
+ // =============================================================================
40
+ /**
41
+ * Ensure the session_id + created_at composite index exists on hazo_llm_api_log.
42
+ * Idempotent — safe to call on every initialization.
43
+ * Errors are swallowed to avoid crashing initialization.
44
+ */
45
+ export async function ensure_cost_cap_index(connect, logger) {
46
+ if (!connect.raw_sql) {
47
+ return;
48
+ }
49
+ try {
50
+ await connect.raw_sql('CREATE INDEX IF NOT EXISTS idx_llm_log_session_created ON hazo_llm_api_log(session_id, created_at)');
51
+ }
52
+ catch (err) {
53
+ logger.warn('ensure_cost_cap_index: failed to create index (non-fatal)', {
54
+ error: err instanceof Error ? err.message : String(err),
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Query the total cost_usd accumulated for a session within the given window.
60
+ *
61
+ * Returns 0 if connect has no raw_sql, if there are no matching rows, or if
62
+ * any DB error occurs (errors are swallowed).
63
+ */
64
+ export async function query_session_cost(connect, session_id, window_start, logger) {
65
+ if (!connect.raw_sql) {
66
+ return 0;
67
+ }
68
+ try {
69
+ const rows = await connect.raw_sql('SELECT COALESCE(SUM(cost_usd), 0) AS total FROM hazo_llm_api_log WHERE session_id = ? AND created_at >= ?', [session_id, window_start]);
70
+ if (!rows || rows.length === 0) {
71
+ return 0;
72
+ }
73
+ const total = rows[0].total;
74
+ return typeof total === 'number' ? total : Number(total) || 0;
75
+ }
76
+ catch (err) {
77
+ logger.warn('query_session_cost: failed to query cost (non-fatal)', {
78
+ session_id,
79
+ error: err instanceof Error ? err.message : String(err),
80
+ });
81
+ return 0;
82
+ }
83
+ }
84
+ /**
85
+ * Pre-call cost cap gate.
86
+ *
87
+ * Returns:
88
+ * - `null` if the gate should not block (cap disabled, no session, current < cap, or warn mode)
89
+ * - `LLMResponse` if the call should be blocked (block mode, cap exceeded)
90
+ *
91
+ * In warn mode the `cost_cap_exceeded` hook is called (errors swallowed) and null is returned
92
+ * so the call proceeds.
93
+ */
94
+ export async function check_cost_cap_gate(connect, cap_config, logger) {
95
+ // Skip if cap is not configured or not enabled
96
+ if (!cap_config || cap_config.enabled !== true) {
97
+ return null;
98
+ }
99
+ // Skip if no connect available
100
+ if (!connect) {
101
+ return null;
102
+ }
103
+ // Get session_id from ALS context
104
+ const log_ctx = await safe_get_log_context();
105
+ const session_id = log_ctx?.sessionId;
106
+ if (!session_id) {
107
+ return null;
108
+ }
109
+ // Compute window start
110
+ const window_start = get_window_start(cap_config.window ?? 'session');
111
+ // Query accumulated cost
112
+ const current_usd = await query_session_cost(connect, session_id, window_start, logger);
113
+ // Get cap for this session
114
+ let cap_usd;
115
+ try {
116
+ cap_usd = await cap_config.get_user_cap({ session_id });
117
+ }
118
+ catch (err) {
119
+ logger.warn('check_cost_cap_gate: get_user_cap threw (non-fatal, skipping cap check)', {
120
+ session_id,
121
+ error: err instanceof Error ? err.message : String(err),
122
+ });
123
+ return null;
124
+ }
125
+ // Skip enforcement if cap is 0 or negative
126
+ if (cap_usd <= 0) {
127
+ return null;
128
+ }
129
+ // Under cap — proceed
130
+ if (current_usd < cap_usd) {
131
+ return null;
132
+ }
133
+ // Cap exceeded — handle according to mode
134
+ const mode = cap_config.on_exceeded ?? 'block';
135
+ if (mode === 'warn') {
136
+ // Fire the warn hook (errors swallowed), then proceed
137
+ if (cap_config.cost_cap_exceeded) {
138
+ try {
139
+ await cap_config.cost_cap_exceeded({ session_id, current_usd, cap_usd });
140
+ }
141
+ catch {
142
+ // Swallow hook errors
143
+ }
144
+ }
145
+ return null; // Proceed with the call
146
+ }
147
+ // Default: block mode — return error response
148
+ return build_error_response(LLM_ERROR_CODES.COST_LIMIT_EXCEEDED, `Cost cap exceeded: $${current_usd.toFixed(6)} spent of $${cap_usd.toFixed(6)} limit`, false, { session_id, current_usd, cap_usd });
149
+ }
150
+ //# sourceMappingURL=cost_cap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost_cap.js","sourceRoot":"","sources":["../../../src/lib/cost_cap/cost_cap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { CostCapConfig } from '../llm_api/types.js';
2
+ export { check_cost_cap_gate, query_session_cost, ensure_cost_cap_index, } from './cost_cap.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/cost_cap/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { check_cost_cap_gate, query_session_cost, ensure_cost_cap_index, } from './cost_cap.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/cost_cap/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { HazoConnect } from "../hazo_connect/types.js";
2
+ import type { Logger } from "../llm_api/types.js";
3
+ /**
4
+ * Idempotently create the hazo_llm_api_log table + its indexes on the active connection.
5
+ * Detects dialect from the connect adapter and runs the matching DDL.
6
+ *
7
+ * Safe to call on every initialize_llm_api() — if the table exists, this is a no-op.
8
+ */
9
+ export declare function ensure_api_log_table(connect: HazoConnect, logger: Logger): Promise<void>;
10
+ //# sourceMappingURL=init_api_log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_api_log.d.ts","sourceRoot":"","sources":["../../../src/lib/database/init_api_log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF9F"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Idempotently create the hazo_llm_api_log table + its indexes on the active connection.
3
+ * Detects dialect from the connect adapter and runs the matching DDL.
4
+ *
5
+ * Safe to call on every initialize_llm_api() — if the table exists, this is a no-op.
6
+ */
7
+ export async function ensure_api_log_table(connect, logger) {
8
+ const dialect = connect.dialect ?? "sqlite";
9
+ const ddl_sqlite = `
10
+ CREATE TABLE IF NOT EXISTS hazo_llm_api_log (
11
+ id TEXT PRIMARY KEY,
12
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
13
+ service_type TEXT NOT NULL,
14
+ provider TEXT NOT NULL,
15
+ model TEXT,
16
+ success INTEGER NOT NULL,
17
+ tokens_input INTEGER,
18
+ tokens_output INTEGER,
19
+ tokens_cached_input INTEGER,
20
+ tokens_total INTEGER,
21
+ cost_usd REAL,
22
+ pricing_kind TEXT,
23
+ pricing_input_per_1m_usd REAL,
24
+ pricing_output_per_1m_usd REAL,
25
+ pricing_per_image_usd REAL,
26
+ latency_ms INTEGER,
27
+ finish_reason TEXT,
28
+ error_code TEXT,
29
+ error_message TEXT,
30
+ prompt_area TEXT,
31
+ prompt_key TEXT,
32
+ prompt_id TEXT,
33
+ session_id TEXT,
34
+ reference TEXT,
35
+ attempts_count INTEGER DEFAULT 1,
36
+ context_json TEXT DEFAULT '{}'
37
+ )
38
+ `;
39
+ const ddl_postgres = `
40
+ CREATE TABLE IF NOT EXISTS hazo_llm_api_log (
41
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
42
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
43
+ service_type TEXT NOT NULL,
44
+ provider TEXT NOT NULL,
45
+ model TEXT,
46
+ success BOOLEAN NOT NULL,
47
+ tokens_input INTEGER,
48
+ tokens_output INTEGER,
49
+ tokens_cached_input INTEGER,
50
+ tokens_total INTEGER,
51
+ cost_usd DOUBLE PRECISION,
52
+ pricing_kind TEXT,
53
+ pricing_input_per_1m_usd DOUBLE PRECISION,
54
+ pricing_output_per_1m_usd DOUBLE PRECISION,
55
+ pricing_per_image_usd DOUBLE PRECISION,
56
+ latency_ms INTEGER,
57
+ finish_reason TEXT,
58
+ error_code TEXT,
59
+ error_message TEXT,
60
+ prompt_area TEXT,
61
+ prompt_key TEXT,
62
+ prompt_id UUID,
63
+ session_id TEXT,
64
+ reference TEXT,
65
+ attempts_count INTEGER DEFAULT 1,
66
+ context_json JSONB DEFAULT '{}'::jsonb
67
+ )
68
+ `;
69
+ const indexes = [
70
+ "CREATE INDEX IF NOT EXISTS idx_llm_log_created ON hazo_llm_api_log(created_at DESC)",
71
+ "CREATE INDEX IF NOT EXISTS idx_llm_log_provider ON hazo_llm_api_log(provider, created_at DESC)",
72
+ "CREATE INDEX IF NOT EXISTS idx_llm_log_success ON hazo_llm_api_log(success, created_at DESC)",
73
+ "CREATE INDEX IF NOT EXISTS idx_llm_log_session ON hazo_llm_api_log(session_id, created_at DESC)",
74
+ "CREATE INDEX IF NOT EXISTS idx_llm_log_service ON hazo_llm_api_log(service_type, created_at DESC)",
75
+ ];
76
+ const ddl = dialect === "sqlite" ? ddl_sqlite : ddl_postgres;
77
+ try {
78
+ await connect.raw_sql(ddl);
79
+ for (const idx of indexes) {
80
+ await connect.raw_sql(idx);
81
+ }
82
+ logger.info("hazo_llm_api_log table ensured", { dialect });
83
+ }
84
+ catch (err) {
85
+ logger.error("Failed to ensure hazo_llm_api_log table", {
86
+ error: err instanceof Error ? err.message : String(err),
87
+ });
88
+ throw err;
89
+ }
90
+ }
91
+ //# sourceMappingURL=init_api_log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_api_log.js","sourceRoot":"","sources":["../../../src/lib/database/init_api_log.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAoB,EAAE,MAAc;IAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAE5C,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BlB,CAAC;IAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BpB,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,sFAAsF;QACtF,gGAAgG;QAChG,+FAA+F;QAC/F,kGAAkG;QAClG,oGAAoG;KACrG,CAAC;IAEF,MAAM,GAAG,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;YACtD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -5,16 +5,14 @@
5
5
  * Suitable for use in server components, API routes, and other server-side contexts.
6
6
  */
7
7
  import type { Database as SqlJsDatabase } from 'sql.js';
8
- import type { HazoConnect } from './types.js';
8
+ import type { HazoConnect, DirectDbConnectOptions } from './types.js';
9
9
  import type { Logger } from '../llm_api/types.js';
10
10
  /**
11
11
  * Create a direct database connect instance
12
12
  *
13
- * @param get_db - Function that returns the database instance
14
- * @param logger - Logger instance for database operations
15
- * @returns HazoConnect implementation using direct database access
13
+ * Supports two call signatures:
16
14
  *
17
- * @example Basic usage
15
+ * **Legacy (two-arg) form** — pass a getter function and logger:
18
16
  * ```typescript
19
17
  * import { create_direct_db_connect, get_database, default_logger } from 'hazo_llm_api/server';
20
18
  *
@@ -22,11 +20,17 @@ import type { Logger } from '../llm_api/types.js';
22
20
  * const { success, data } = await connect.get_all();
23
21
  * ```
24
22
  *
25
- * @example In API route
23
+ * **Options-object form** pass `{ db, dialect, logger }` for access to `raw_sql` and `dialect`:
24
+ * ```typescript
25
+ * const connect = create_direct_db_connect({ db, dialect: 'sqlite', logger });
26
+ * const rows = await connect.raw_sql!('SELECT * FROM my_table WHERE id = ?', [id]);
27
+ * ```
28
+ *
29
+ * @example In API route (legacy form)
26
30
  * ```typescript
27
31
  * const connect = create_direct_db_connect(() => get_database(), logger);
28
32
  * const result = await connect.get_by_area_key('marketing', 'greeting');
29
33
  * ```
30
34
  */
31
- export declare function create_direct_db_connect(get_db: () => SqlJsDatabase | null, logger: Logger): HazoConnect;
35
+ export declare function create_direct_db_connect(get_db_or_opts: (() => SqlJsDatabase | null) | DirectDbConnectOptions, logger_arg?: Logger): HazoConnect;
32
36
  //# sourceMappingURL=direct_db_connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"direct_db_connect.d.ts","sourceRoot":"","sources":["../../../src/lib/hazo_connect/direct_db_connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAyBhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,EAClC,MAAM,EAAE,MAAM,GACb,WAAW,CAqfb"}
1
+ {"version":3,"file":"direct_db_connect.d.ts","sourceRoot":"","sources":["../../../src/lib/hazo_connect/direct_db_connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EACV,WAAW,EAKX,sBAAsB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAyBhE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,sBAAsB,EACrE,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CAwiBb"}
@@ -27,11 +27,9 @@ function normalize_variables(variables) {
27
27
  /**
28
28
  * Create a direct database connect instance
29
29
  *
30
- * @param get_db - Function that returns the database instance
31
- * @param logger - Logger instance for database operations
32
- * @returns HazoConnect implementation using direct database access
30
+ * Supports two call signatures:
33
31
  *
34
- * @example Basic usage
32
+ * **Legacy (two-arg) form** — pass a getter function and logger:
35
33
  * ```typescript
36
34
  * import { create_direct_db_connect, get_database, default_logger } from 'hazo_llm_api/server';
37
35
  *
@@ -39,13 +37,45 @@ function normalize_variables(variables) {
39
37
  * const { success, data } = await connect.get_all();
40
38
  * ```
41
39
  *
42
- * @example In API route
40
+ * **Options-object form** pass `{ db, dialect, logger }` for access to `raw_sql` and `dialect`:
41
+ * ```typescript
42
+ * const connect = create_direct_db_connect({ db, dialect: 'sqlite', logger });
43
+ * const rows = await connect.raw_sql!('SELECT * FROM my_table WHERE id = ?', [id]);
44
+ * ```
45
+ *
46
+ * @example In API route (legacy form)
43
47
  * ```typescript
44
48
  * const connect = create_direct_db_connect(() => get_database(), logger);
45
49
  * const result = await connect.get_by_area_key('marketing', 'greeting');
46
50
  * ```
47
51
  */
48
- export function create_direct_db_connect(get_db, logger) {
52
+ export function create_direct_db_connect(get_db_or_opts, logger_arg) {
53
+ // Resolve the two call forms into a unified internal shape.
54
+ let get_db;
55
+ let logger;
56
+ let dialect;
57
+ if (typeof get_db_or_opts === 'function') {
58
+ // Legacy two-arg form: create_direct_db_connect(() => db, logger)
59
+ get_db = get_db_or_opts;
60
+ logger = logger_arg;
61
+ dialect = undefined;
62
+ }
63
+ else {
64
+ // Options-object form: create_direct_db_connect({ db, dialect, logger })
65
+ const opts = get_db_or_opts;
66
+ logger = opts.logger;
67
+ dialect = opts.dialect ?? 'sqlite';
68
+ if (opts.db) {
69
+ const db_ref = opts.db;
70
+ get_db = () => db_ref;
71
+ }
72
+ else if (opts.get_db) {
73
+ get_db = opts.get_db;
74
+ }
75
+ else {
76
+ throw new Error('create_direct_db_connect: must provide either db or get_db in options');
77
+ }
78
+ }
49
79
  const file_name = 'direct_db_connect.ts';
50
80
  /**
51
81
  * Get database or throw error
@@ -63,7 +93,30 @@ export function create_direct_db_connect(get_db, logger) {
63
93
  function save_db() {
64
94
  save_database(logger);
65
95
  }
96
+ /**
97
+ * Execute arbitrary SQL using sql.js prepare/step pattern.
98
+ * Returns rows as plain objects. Works for both SELECT and DML statements.
99
+ */
100
+ const raw_sql = async (sql, values = []) => {
101
+ const db = require_db();
102
+ const stmt = db.prepare(sql);
103
+ try {
104
+ stmt.bind(values);
105
+ const rows = [];
106
+ while (stmt.step()) {
107
+ rows.push(stmt.getAsObject());
108
+ }
109
+ return rows;
110
+ }
111
+ finally {
112
+ stmt.free();
113
+ }
114
+ };
66
115
  return {
116
+ // Expose dialect and raw_sql only when the options-object form was used
117
+ // (dialect is undefined for the legacy form, which keeps HazoConnect.dialect optional).
118
+ ...(dialect !== undefined ? { dialect } : {}),
119
+ raw_sql,
67
120
  // =========================================================================
68
121
  // Read Operations
69
122
  // =========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"direct_db_connect.js","sourceRoot":"","sources":["../../../src/lib/hazo_connect/direct_db_connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,mBAAmB,CAC1B,SAAiE;IAEjE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAkC,EAClC,MAAc;IAEd,MAAM,SAAS,GAAG,sBAAsB,CAAC;IAEzC;;OAEG;IACH,SAAS,UAAU;QACjB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,SAAS,OAAO;QACd,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,4EAA4E;QAC5E,kBAAkB;QAClB,4EAA4E;QAE5E,KAAK,CAAC,OAAO;YACX,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAEtF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACrC,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAElF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBAC/E,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC9E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,EAAU;YACxB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;gBACvD,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAElE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAC9E,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAY;YAC5B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CACpB,sEAAsE,EACtE,CAAC,IAAI,CAAC,CACP,CAAC;gBAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACrC,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAElF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBAC/E,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe,CACnB,IAAY,EACZ,GAAW,EACX,MAAqB;YAErB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAExB,8BAA8B;gBAC9B,IAAI,GAAW,CAAC;gBAChB,IAAI,MAAyB,CAAC;gBAE9B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnE,8DAA8D;oBAC9D,MAAM,gBAAgB,GAAsD,EAAE,CAAC;oBAE/E,sCAAsC;oBACtC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACvD,gBAAgB,CAAC,IAAI,CAAC;4BACpB,GAAG,EAAE;;;4BAGS;4BACd,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;yBACpE,CAAC,CAAC;oBACL,CAAC;oBAED,yCAAyC;oBACzC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACrC,gBAAgB,CAAC,IAAI,CAAC;4BACpB,GAAG,EAAE;;;4BAGS;4BACd,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;yBACpD,CAAC,CAAC;oBACL,CAAC;oBAED,kCAAkC;oBAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,gBAAgB,CAAC,IAAI,CAAC;4BACpB,GAAG,EAAE;;;4BAGS;4BACd,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC;yBACpC,CAAC,CAAC;oBACL,CAAC;oBAED,mCAAmC;oBACnC,gBAAgB,CAAC,IAAI,CAAC;wBACpB,GAAG,EAAE;;;0BAGS;wBACd,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;qBACpB,CAAC,CAAC;oBAEH,0BAA0B;oBAC1B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;wBACrC,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;wBAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;4BAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;4BAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wBACzC,CAAC;oBACH,CAAC;oBAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,GAAG,GAAG;;;yBAGS,CAAC;oBAChB,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvB,CAAC;gBAED,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;gBACvD,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAElE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAC9E,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;oBACrC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;iBACpC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,mBAAmB;QACnB,4EAA4E;QAE5E,KAAK,CAAC,MAAM,CAAC,MAAmB;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAErC,MAAM,UAAU,GAAG;;;SAGlB,CAAC;gBAEF,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE;oBACjB,EAAE;oBACF,MAAM,CAAC,WAAW;oBAClB,MAAM,CAAC,UAAU;oBACjB,MAAM,CAAC,OAAO,IAAI,IAAI;oBACtB,MAAM,CAAC,OAAO,IAAI,IAAI;oBACtB,MAAM,CAAC,OAAO,IAAI,IAAI;oBACtB,MAAM,CAAC,OAAO,IAAI,IAAI;oBACtB,MAAM,CAAC,QAAQ,IAAI,IAAI;oBACvB,MAAM,CAAC,WAAW,IAAI,EAAE;oBACxB,MAAM,CAAC,gBAAgB,IAAI,EAAE;oBAC7B,MAAM,CAAC,gBAAgB;oBACvB,MAAM,CAAC,gBAAgB,IAAI,EAAE;oBAC7B,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBAC5C,MAAM,CAAC,YAAY,IAAI,EAAE;oBACzB,GAAG;oBACH,GAAG;oBACH,MAAM,CAAC,WAAW,IAAI,IAAI;iBAC3B,CAAC,CAAC;gBAEH,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;gBACxE,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAElE,gBAAgB;gBAChB,OAAO,EAAE,CAAC;gBAEV,6DAA6D;gBAC7D,gBAAgB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAErE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBAC/E,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,OAA6B;YAE7B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAExB,2BAA2B;gBAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAsB,EAAE,CAAC;gBAErC,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;gBAC3C,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;gBAC1D,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEhB,MAAM,UAAU,GAAG,2BAA2B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBAE/E,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAE3B,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;gBACvD,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAElE,gBAAgB;gBAChB,OAAO,EAAE,CAAC;gBAEV,mCAAmC;gBACnC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAExC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBAC/E,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAU;YACrB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAExB,kBAAkB;gBAClB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,0CAA0C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;gBACvD,CAAC;gBAED,EAAE,CAAC,GAAG,CAAC,uCAAuC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtD,mCAAmC;gBACnC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAExC,gBAAgB;gBAChB,OAAO,EAAE,CAAC;gBAEV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;gBAC/E,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,kBAAkB;QAClB,4EAA4E;QAE5E,KAAK,CAAC,WAAW,CAAC,OAAsB;YACtC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAExB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;wBAC1E,MAAM,CAAC,IAAI,CACT,kDAAkD,MAAM,CAAC,WAAW,IAAI,SAAS,UAAU,MAAM,CAAC,UAAU,IAAI,SAAS,WAAW,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CACvL,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;wBACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;wBAErC,MAAM,UAAU,GAAG;;;aAGlB,CAAC;wBAEF,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE;4BACjB,EAAE;4BACF,MAAM,CAAC,WAAW;4BAClB,MAAM,CAAC,UAAU;4BACjB,MAAM,CAAC,OAAO,IAAI,IAAI;4BACtB,MAAM,CAAC,OAAO,IAAI,IAAI;4BACtB,MAAM,CAAC,OAAO,IAAI,IAAI;4BACtB,MAAM,CAAC,OAAO,IAAI,IAAI;4BACtB,MAAM,CAAC,QAAQ,IAAI,IAAI;4BACvB,MAAM,CAAC,WAAW,IAAI,EAAE;4BACxB,MAAM,CAAC,gBAAgB,IAAI,EAAE;4BAC7B,MAAM,CAAC,gBAAgB;4BACvB,MAAM,CAAC,gBAAgB,IAAI,EAAE;4BAC7B,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC;4BAC5C,MAAM,CAAC,YAAY,IAAI,EAAE;4BACzB,GAAG;4BACH,GAAG;4BACH,MAAM,CAAC,WAAW,IAAI,IAAI;yBAC3B,CAAC,CAAC;wBAEH,KAAK,EAAE,CAAC;oBACV,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,IAAI,CACT,oBAAoB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnH,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,kCAAkC;gBAClC,OAAO,EAAE,CAAC;gBAEV,sDAAsD;gBACtD,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;gBAE3B,OAAO;oBACL,OAAO,EAAE,KAAK,GAAG,CAAC;oBAClB,KAAK;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAChF,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;oBACL,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC;iBAC7B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,GAAa;YAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBAExB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACH,kBAAkB;wBAClB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,0CAA0C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACvD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4BACtC,SAAS;wBACX,CAAC;wBAED,EAAE,CAAC,GAAG,CAAC,uCAAuC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACtD,KAAK,EAAE,CAAC;oBACV,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,IAAI,CACT,oBAAoB,EAAE,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,kCAAkC;gBAClC,OAAO,EAAE,CAAC;gBAEV,sDAAsD;gBACtD,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;gBAE3B,OAAO;oBACL,OAAO,EAAE,KAAK,GAAG,CAAC;oBAClB,KAAK;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAChF,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;oBACL,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC;iBAC7B,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"direct_db_connect.js","sourceRoot":"","sources":["../../../src/lib/hazo_connect/direct_db_connect.ts"],"names":[],"mappings":"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"}
@@ -127,6 +127,18 @@ export interface HazoConnect {
127
127
  * @param ids - Array of prompt UUIDs to delete
128
128
  */
129
129
  bulk_delete(ids: string[]): Promise<HazoConnectBulkResponse>;
130
+ /**
131
+ * SQL dialect, when known. Used by callers that need to emit dialect-specific DDL/DML.
132
+ * Optional — implementations that don't expose raw SQL can omit it.
133
+ */
134
+ dialect?: "sqlite" | "pg";
135
+ /**
136
+ * Execute arbitrary SQL against the underlying adapter. Returns rows as plain objects.
137
+ *
138
+ * Optional escape hatch — when absent, features requiring raw SQL (observability log
139
+ * writer, usage queries, recompute_costs) will gracefully degrade (log warning and skip).
140
+ */
141
+ raw_sql?(sql: string, values?: unknown[]): Promise<Record<string, unknown>[]>;
130
142
  }
131
143
  /**
132
144
  * Options for creating a REST API connect instance
@@ -148,13 +160,33 @@ export interface RestApiConnectOptions {
148
160
  headers?: Record<string, string>;
149
161
  }
150
162
  /**
151
- * Options for creating a direct DB connect instance
163
+ * Options for creating a direct DB connect instance (options-object form).
164
+ *
165
+ * Use this form when you have a direct Database reference and want access to
166
+ * the raw_sql escape hatch and dialect field.
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const connect = create_direct_db_connect({ db, dialect: "sqlite", logger });
171
+ * const rows = await connect.raw_sql!("SELECT * FROM my_table WHERE id = ?", [id]);
172
+ * ```
152
173
  */
153
174
  export interface DirectDbConnectOptions {
154
175
  /**
155
- * Function to get the database instance
176
+ * Direct database instance (sql.js Database).
177
+ * Provide either `db` or `get_db`, not both.
178
+ */
179
+ db?: import('sql.js').Database;
180
+ /**
181
+ * Function to get the database instance (legacy getter form).
182
+ * Provide either `db` or `get_db`, not both.
183
+ */
184
+ get_db?: () => import('sql.js').Database | null;
185
+ /**
186
+ * SQL dialect exposed on the returned HazoConnect instance.
187
+ * Defaults to "sqlite" when not provided.
156
188
  */
157
- get_db: () => import('sql.js').Database | null;
189
+ dialect?: "sqlite" | "pg";
158
190
  /**
159
191
  * Logger instance for database operations
160
192
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/hazo_connect/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/hazo_connect/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { EmbedKeyv } from './types.js';
2
+ /** Compute cache key: sha256hex(text):model */
3
+ export declare function embed_cache_key(text: string, model: string): string;
4
+ /** Configure the embed cache. Call this once during initialization. */
5
+ export declare function configure_embed_cache(opts: {
6
+ max_size?: number;
7
+ keyv?: EmbedKeyv;
8
+ }): void;
9
+ /** Look up a cached vector. Returns undefined on cache miss. */
10
+ export declare function embed_cache_get(text: string, model: string): Promise<number[] | undefined>;
11
+ /** Store a vector in the cache. Evicts oldest entry if at max_size (in-memory only). */
12
+ export declare function embed_cache_set(text: string, model: string, vector: number[]): Promise<void>;
13
+ /** Test helper — resets all state to defaults */
14
+ export declare function reset_embed_cache_for_test(): void;
15
+ //# sourceMappingURL=embed_cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed_cache.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/embed_cache.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,GAAG,IAAI,CAGP;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAMhG;AAED,wFAAwF;AACxF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYlG;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,IAAI,IAAI,CAIjD"}