@corgelabs/corge 0.0.1 → 1.0.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 (341) hide show
  1. package/dist/ai/index.d.ts +3 -0
  2. package/dist/ai/index.d.ts.map +1 -0
  3. package/dist/ai/index.js +3 -0
  4. package/dist/ai/index.js.map +1 -0
  5. package/dist/ai/schema.d.ts +83 -0
  6. package/dist/ai/schema.d.ts.map +1 -0
  7. package/dist/ai/schema.js +19 -0
  8. package/dist/ai/schema.js.map +1 -0
  9. package/dist/ai/service.d.ts +14 -0
  10. package/dist/ai/service.d.ts.map +1 -0
  11. package/dist/ai/service.js +266 -0
  12. package/dist/ai/service.js.map +1 -0
  13. package/dist/ai/utils.d.ts +10 -0
  14. package/dist/ai/utils.d.ts.map +1 -0
  15. package/dist/ai/utils.js +27 -0
  16. package/dist/ai/utils.js.map +1 -0
  17. package/dist/attachments/index.d.ts +4 -0
  18. package/dist/attachments/index.d.ts.map +1 -0
  19. package/dist/attachments/index.js +4 -0
  20. package/dist/attachments/index.js.map +1 -0
  21. package/dist/attachments/routes.d.ts +75 -0
  22. package/dist/attachments/routes.d.ts.map +1 -0
  23. package/dist/attachments/routes.js +18 -0
  24. package/dist/attachments/routes.js.map +1 -0
  25. package/dist/attachments/schema.d.ts +61 -0
  26. package/dist/attachments/schema.d.ts.map +1 -0
  27. package/dist/attachments/schema.js +30 -0
  28. package/dist/attachments/schema.js.map +1 -0
  29. package/dist/attachments/service.d.ts +27 -0
  30. package/dist/attachments/service.d.ts.map +1 -0
  31. package/dist/attachments/service.js +224 -0
  32. package/dist/attachments/service.js.map +1 -0
  33. package/dist/attachments/utils.d.ts +9 -0
  34. package/dist/attachments/utils.d.ts.map +1 -0
  35. package/dist/attachments/utils.js +80 -0
  36. package/dist/attachments/utils.js.map +1 -0
  37. package/dist/auth/index.d.ts +4 -0
  38. package/dist/auth/index.d.ts.map +1 -0
  39. package/dist/auth/index.js +4 -0
  40. package/dist/auth/index.js.map +1 -0
  41. package/dist/auth/oidc.d.ts +25 -0
  42. package/dist/auth/oidc.d.ts.map +1 -0
  43. package/dist/auth/oidc.js +298 -0
  44. package/dist/auth/oidc.js.map +1 -0
  45. package/dist/auth/recovery.d.ts +41 -0
  46. package/dist/auth/recovery.d.ts.map +1 -0
  47. package/dist/auth/recovery.js +250 -0
  48. package/dist/auth/recovery.js.map +1 -0
  49. package/dist/auth/routes.d.ts +226 -0
  50. package/dist/auth/routes.d.ts.map +1 -0
  51. package/dist/auth/routes.js +96 -0
  52. package/dist/auth/routes.js.map +1 -0
  53. package/dist/auth/schema.d.ts +158 -0
  54. package/dist/auth/schema.d.ts.map +1 -0
  55. package/dist/auth/schema.js +82 -0
  56. package/dist/auth/schema.js.map +1 -0
  57. package/dist/auth/service.d.ts +96 -0
  58. package/dist/auth/service.d.ts.map +1 -0
  59. package/dist/auth/service.js +129 -0
  60. package/dist/auth/service.js.map +1 -0
  61. package/dist/auth/session.d.ts +51 -0
  62. package/dist/auth/session.d.ts.map +1 -0
  63. package/dist/auth/session.js +344 -0
  64. package/dist/auth/session.js.map +1 -0
  65. package/dist/auth/utils.d.ts +17 -0
  66. package/dist/auth/utils.d.ts.map +1 -0
  67. package/dist/auth/utils.js +96 -0
  68. package/dist/auth/utils.js.map +1 -0
  69. package/dist/bin/corge.js +547 -0
  70. package/dist/chat/context.d.ts +10 -0
  71. package/dist/chat/context.d.ts.map +1 -0
  72. package/dist/chat/context.js +221 -0
  73. package/dist/chat/context.js.map +1 -0
  74. package/dist/chat/index.d.ts +4 -0
  75. package/dist/chat/index.d.ts.map +1 -0
  76. package/dist/chat/index.js +4 -0
  77. package/dist/chat/index.js.map +1 -0
  78. package/dist/chat/routes.d.ts +160 -0
  79. package/dist/chat/routes.d.ts.map +1 -0
  80. package/dist/chat/routes.js +210 -0
  81. package/dist/chat/routes.js.map +1 -0
  82. package/dist/chat/schema.d.ts +285 -0
  83. package/dist/chat/schema.d.ts.map +1 -0
  84. package/dist/chat/schema.js +74 -0
  85. package/dist/chat/schema.js.map +1 -0
  86. package/dist/chat/service.d.ts +64 -0
  87. package/dist/chat/service.d.ts.map +1 -0
  88. package/dist/chat/service.js +279 -0
  89. package/dist/chat/service.js.map +1 -0
  90. package/dist/chat/stream.d.ts +53 -0
  91. package/dist/chat/stream.d.ts.map +1 -0
  92. package/dist/chat/stream.js +339 -0
  93. package/dist/chat/stream.js.map +1 -0
  94. package/dist/chat/utils.d.ts +61 -0
  95. package/dist/chat/utils.d.ts.map +1 -0
  96. package/dist/chat/utils.js +285 -0
  97. package/dist/chat/utils.js.map +1 -0
  98. package/dist/cli/builder.d.ts +6 -0
  99. package/dist/cli/builder.d.ts.map +1 -0
  100. package/dist/cli/builder.js +91 -0
  101. package/dist/cli/builder.js.map +1 -0
  102. package/dist/cli/deployer.d.ts +2 -0
  103. package/dist/cli/deployer.d.ts.map +1 -0
  104. package/dist/cli/deployer.js +152 -0
  105. package/dist/cli/deployer.js.map +1 -0
  106. package/dist/cli/dev-server.d.ts +2 -0
  107. package/dist/cli/dev-server.d.ts.map +1 -0
  108. package/dist/cli/dev-server.js +70 -0
  109. package/dist/cli/dev-server.js.map +1 -0
  110. package/dist/cli/env.d.ts +4 -0
  111. package/dist/cli/env.d.ts.map +1 -0
  112. package/dist/cli/env.js +68 -0
  113. package/dist/cli/env.js.map +1 -0
  114. package/dist/cli/init.d.ts +6 -0
  115. package/dist/cli/init.d.ts.map +1 -0
  116. package/dist/cli/init.js +103 -0
  117. package/dist/cli/init.js.map +1 -0
  118. package/dist/config.d.ts +262 -0
  119. package/dist/config.d.ts.map +1 -0
  120. package/dist/config.js +212 -0
  121. package/dist/config.js.map +1 -0
  122. package/dist/db/index.d.ts +3 -0
  123. package/dist/db/index.d.ts.map +1 -0
  124. package/dist/db/index.js +3 -0
  125. package/dist/db/index.js.map +1 -0
  126. package/dist/db/schema.d.ts +410 -0
  127. package/dist/db/schema.d.ts.map +1 -0
  128. package/dist/db/schema.js +294 -0
  129. package/dist/db/schema.js.map +1 -0
  130. package/dist/db/service.d.ts +42 -0
  131. package/dist/db/service.d.ts.map +1 -0
  132. package/dist/db/service.js +372 -0
  133. package/dist/db/service.js.map +1 -0
  134. package/dist/db/utils.d.ts +25 -0
  135. package/dist/db/utils.d.ts.map +1 -0
  136. package/dist/db/utils.js +188 -0
  137. package/dist/db/utils.js.map +1 -0
  138. package/dist/emails/index.d.ts +4 -0
  139. package/dist/emails/index.d.ts.map +1 -0
  140. package/dist/emails/index.js +4 -0
  141. package/dist/emails/index.js.map +1 -0
  142. package/dist/emails/routes.d.ts +191 -0
  143. package/dist/emails/routes.d.ts.map +1 -0
  144. package/dist/emails/routes.js +39 -0
  145. package/dist/emails/routes.js.map +1 -0
  146. package/dist/emails/schema.d.ts +237 -0
  147. package/dist/emails/schema.d.ts.map +1 -0
  148. package/dist/emails/schema.js +98 -0
  149. package/dist/emails/schema.js.map +1 -0
  150. package/dist/emails/service.d.ts +22 -0
  151. package/dist/emails/service.d.ts.map +1 -0
  152. package/dist/emails/service.js +337 -0
  153. package/dist/emails/service.js.map +1 -0
  154. package/dist/emails/utils.d.ts +49 -0
  155. package/dist/emails/utils.d.ts.map +1 -0
  156. package/dist/emails/utils.js +341 -0
  157. package/dist/emails/utils.js.map +1 -0
  158. package/dist/files/index.d.ts +4 -0
  159. package/dist/files/index.d.ts.map +1 -0
  160. package/dist/files/index.js +4 -0
  161. package/dist/files/index.js.map +1 -0
  162. package/dist/files/routes.d.ts +72 -0
  163. package/dist/files/routes.d.ts.map +1 -0
  164. package/dist/files/routes.js +38 -0
  165. package/dist/files/routes.js.map +1 -0
  166. package/dist/files/schema.d.ts +57 -0
  167. package/dist/files/schema.d.ts.map +1 -0
  168. package/dist/files/schema.js +39 -0
  169. package/dist/files/schema.js.map +1 -0
  170. package/dist/files/service.d.ts +27 -0
  171. package/dist/files/service.d.ts.map +1 -0
  172. package/dist/files/service.js +175 -0
  173. package/dist/files/service.js.map +1 -0
  174. package/dist/files/utils.d.ts +3 -0
  175. package/dist/files/utils.d.ts.map +1 -0
  176. package/dist/files/utils.js +63 -0
  177. package/dist/files/utils.js.map +1 -0
  178. package/dist/index.d.ts +875 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +9919 -0
  181. package/dist/index.js.map +7 -0
  182. package/dist/payments/billing.d.ts +29 -0
  183. package/dist/payments/billing.d.ts.map +1 -0
  184. package/dist/payments/billing.js +378 -0
  185. package/dist/payments/billing.js.map +1 -0
  186. package/dist/payments/index.d.ts +4 -0
  187. package/dist/payments/index.d.ts.map +1 -0
  188. package/dist/payments/index.js +4 -0
  189. package/dist/payments/index.js.map +1 -0
  190. package/dist/payments/routes.d.ts +340 -0
  191. package/dist/payments/routes.d.ts.map +1 -0
  192. package/dist/payments/routes.js +56 -0
  193. package/dist/payments/routes.js.map +1 -0
  194. package/dist/payments/schema.d.ts +412 -0
  195. package/dist/payments/schema.d.ts.map +1 -0
  196. package/dist/payments/schema.js +260 -0
  197. package/dist/payments/schema.js.map +1 -0
  198. package/dist/payments/service.d.ts +31 -0
  199. package/dist/payments/service.d.ts.map +1 -0
  200. package/dist/payments/service.js +322 -0
  201. package/dist/payments/service.js.map +1 -0
  202. package/dist/payments/utils.d.ts +61 -0
  203. package/dist/payments/utils.d.ts.map +1 -0
  204. package/dist/payments/utils.js +369 -0
  205. package/dist/payments/utils.js.map +1 -0
  206. package/dist/router/guard.d.ts +19 -0
  207. package/dist/router/guard.d.ts.map +1 -0
  208. package/dist/router/guard.js +243 -0
  209. package/dist/router/guard.js.map +1 -0
  210. package/dist/router/index.d.ts +3 -0
  211. package/dist/router/index.d.ts.map +1 -0
  212. package/dist/router/index.js +3 -0
  213. package/dist/router/index.js.map +1 -0
  214. package/dist/router/schema.d.ts +103 -0
  215. package/dist/router/schema.d.ts.map +1 -0
  216. package/dist/router/schema.js +282 -0
  217. package/dist/router/schema.js.map +1 -0
  218. package/dist/router/service.d.ts +25 -0
  219. package/dist/router/service.d.ts.map +1 -0
  220. package/dist/router/service.js +339 -0
  221. package/dist/router/service.js.map +1 -0
  222. package/dist/tasks/index.d.ts +4 -0
  223. package/dist/tasks/index.d.ts.map +1 -0
  224. package/dist/tasks/index.js +4 -0
  225. package/dist/tasks/index.js.map +1 -0
  226. package/dist/tasks/routes.d.ts +54 -0
  227. package/dist/tasks/routes.d.ts.map +1 -0
  228. package/dist/tasks/routes.js +195 -0
  229. package/dist/tasks/routes.js.map +1 -0
  230. package/dist/tasks/schema.d.ts +261 -0
  231. package/dist/tasks/schema.d.ts.map +1 -0
  232. package/dist/tasks/schema.js +35 -0
  233. package/dist/tasks/schema.js.map +1 -0
  234. package/dist/tasks/service.d.ts +32 -0
  235. package/dist/tasks/service.d.ts.map +1 -0
  236. package/dist/tasks/service.js +201 -0
  237. package/dist/tasks/service.js.map +1 -0
  238. package/dist/tasks/steps.d.ts +18 -0
  239. package/dist/tasks/steps.d.ts.map +1 -0
  240. package/dist/tasks/steps.js +365 -0
  241. package/dist/tasks/steps.js.map +1 -0
  242. package/dist/tasks/utils.d.ts +75 -0
  243. package/dist/tasks/utils.d.ts.map +1 -0
  244. package/dist/tasks/utils.js +311 -0
  245. package/dist/tasks/utils.js.map +1 -0
  246. package/dist/tasks/watcher.d.ts +13 -0
  247. package/dist/tasks/watcher.d.ts.map +1 -0
  248. package/dist/tasks/watcher.js +255 -0
  249. package/dist/tasks/watcher.js.map +1 -0
  250. package/dist/tasks/worker.d.ts +28 -0
  251. package/dist/tasks/worker.d.ts.map +1 -0
  252. package/dist/tasks/worker.js +326 -0
  253. package/dist/tasks/worker.js.map +1 -0
  254. package/dist/utils/index.d.ts +3 -0
  255. package/dist/utils/index.d.ts.map +1 -0
  256. package/dist/utils/index.js +3 -0
  257. package/dist/utils/index.js.map +1 -0
  258. package/dist/utils/schema.d.ts +79 -0
  259. package/dist/utils/schema.d.ts.map +1 -0
  260. package/dist/utils/schema.js +41 -0
  261. package/dist/utils/schema.js.map +1 -0
  262. package/dist/utils/service.d.ts +32 -0
  263. package/dist/utils/service.d.ts.map +1 -0
  264. package/dist/utils/service.js +384 -0
  265. package/dist/utils/service.js.map +1 -0
  266. package/docs/SDK_SPEC.md +1645 -0
  267. package/infra/firestore.base.indexes.json +138 -0
  268. package/infra/firestore.base.rules +152 -0
  269. package/infra/storage.base.rules +8 -0
  270. package/package.json +59 -13
  271. package/src/ai/index.ts +2 -0
  272. package/src/ai/schema.ts +64 -0
  273. package/src/ai/service.ts +317 -0
  274. package/src/ai/utils.ts +38 -0
  275. package/src/attachments/index.ts +3 -0
  276. package/src/attachments/routes.ts +28 -0
  277. package/src/attachments/schema.ts +45 -0
  278. package/src/attachments/service.ts +315 -0
  279. package/src/attachments/utils.ts +115 -0
  280. package/src/auth/index.ts +3 -0
  281. package/src/auth/oidc.ts +419 -0
  282. package/src/auth/recovery.ts +365 -0
  283. package/src/auth/routes.ts +142 -0
  284. package/src/auth/schema.ts +181 -0
  285. package/src/auth/service.ts +183 -0
  286. package/src/auth/session.ts +414 -0
  287. package/src/auth/utils.ts +106 -0
  288. package/src/chat/context.ts +310 -0
  289. package/src/chat/index.ts +3 -0
  290. package/src/chat/routes.ts +264 -0
  291. package/src/chat/schema.ts +295 -0
  292. package/src/chat/service.ts +360 -0
  293. package/src/chat/stream.ts +481 -0
  294. package/src/chat/utils.ts +370 -0
  295. package/src/cli/builder.ts +93 -0
  296. package/src/cli/deployer.ts +184 -0
  297. package/src/cli/dev-server.ts +77 -0
  298. package/src/cli/env.ts +89 -0
  299. package/src/cli/init.ts +125 -0
  300. package/src/config.ts +447 -0
  301. package/src/db/index.ts +2 -0
  302. package/src/db/schema.ts +409 -0
  303. package/src/db/service.ts +477 -0
  304. package/src/db/utils.ts +250 -0
  305. package/src/emails/index.ts +3 -0
  306. package/src/emails/routes.ts +64 -0
  307. package/src/emails/schema.ts +239 -0
  308. package/src/emails/service.ts +488 -0
  309. package/src/emails/utils.ts +449 -0
  310. package/src/files/index.ts +3 -0
  311. package/src/files/routes.ts +44 -0
  312. package/src/files/schema.ts +76 -0
  313. package/src/files/service.ts +238 -0
  314. package/src/files/utils.ts +77 -0
  315. package/src/index.ts +425 -0
  316. package/src/payments/billing.ts +488 -0
  317. package/src/payments/index.ts +3 -0
  318. package/src/payments/routes.ts +92 -0
  319. package/src/payments/schema.ts +401 -0
  320. package/src/payments/service.ts +445 -0
  321. package/src/payments/utils.ts +472 -0
  322. package/src/router/guard.ts +319 -0
  323. package/src/router/index.ts +2 -0
  324. package/src/router/schema.ts +458 -0
  325. package/src/router/service.ts +453 -0
  326. package/src/tasks/index.ts +11 -0
  327. package/src/tasks/routes.ts +230 -0
  328. package/src/tasks/schema.ts +310 -0
  329. package/src/tasks/service.ts +254 -0
  330. package/src/tasks/steps.ts +472 -0
  331. package/src/tasks/utils.ts +445 -0
  332. package/src/tasks/watcher.ts +307 -0
  333. package/src/tasks/worker.ts +461 -0
  334. package/src/utils/index.ts +2 -0
  335. package/src/utils/schema.ts +69 -0
  336. package/src/utils/service.ts +461 -0
  337. package/tests/e2e.test.ts +2531 -0
  338. package/tsconfig.base.json +12 -0
  339. package/README.md +0 -2
  340. package/index.d.ts +0 -1
  341. package/index.js +0 -1
@@ -0,0 +1,285 @@
1
+ import { FieldValue, Timestamp } from 'firebase-admin/firestore';
2
+ import { createUIMessageStreamResponse, toUIMessageStream } from 'ai';
3
+ import { z } from 'zod';
4
+ export const FORBIDDEN_TOOL_SCHEMA_KEYS = new Set([
5
+ 'userId',
6
+ 'chatId',
7
+ 'role',
8
+ 'userRole',
9
+ 'token',
10
+ 'idToken',
11
+ 'apiKey',
12
+ 'session'
13
+ ]);
14
+ export const sanitizeToolInputSchema = (schema) => {
15
+ if (schema instanceof z.ZodObject) {
16
+ const shape = schema.shape;
17
+ const keysToOmit = {};
18
+ let hasForbidden = false;
19
+ for (const key of Object.keys(shape)) {
20
+ if (FORBIDDEN_TOOL_SCHEMA_KEYS.has(key)) {
21
+ keysToOmit[key] = true;
22
+ hasForbidden = true;
23
+ }
24
+ }
25
+ if (hasForbidden) {
26
+ return schema.omit(keysToOmit);
27
+ }
28
+ }
29
+ return schema;
30
+ };
31
+ export const isUserContextShape = (value) => Boolean(value) &&
32
+ typeof value === 'object' &&
33
+ typeof value.state === 'object' &&
34
+ value.state !== null;
35
+ export const formatAttachmentLine = (filename, item) => 'error' in item
36
+ ? `[attached ${filename} (ref: ${item.ref}) (error: ${item.error})]\n`
37
+ : `[attached ${filename} (ref: ${item.ref}) (type: ${item.scan.type}) (fields: ${JSON.stringify(item.scan.fields ?? {})}) (markdown: ${item.scan.markdown ?? ''})]\n`;
38
+ export const isSafePublicUrl = (raw) => {
39
+ if (!raw)
40
+ return false;
41
+ try {
42
+ const u = new URL(raw);
43
+ const host = u.hostname.toLowerCase();
44
+ return ((u.protocol === 'https:' || u.protocol === 'http:') &&
45
+ !/^(\d+|0x[0-9a-f]+)$/i.test(host) &&
46
+ !/^(localhost|127\.|10\.|100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\.|169\.254\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.|0\.|metadata\.|\[(::1?|fc|fd|fe80:|::ffff:))/i.test(host) &&
47
+ !/(\.internal|\.local|\.nip\.io|\.sslip\.io)\.?$/i.test(host));
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ };
53
+ export const extractPart = (p) => {
54
+ if (!p || typeof p !== 'object' || (p.type !== 'file' && !('url' in p)))
55
+ return undefined;
56
+ const url = String(p.url ?? '');
57
+ const dataUrl = url.startsWith('data:') ? url : undefined;
58
+ const ref = url.match(/^\/api\/files\/([A-Za-z0-9_-]+_[a-f0-9]{24})$/)?.[1];
59
+ return dataUrl || ref ? { dataUrl, ref, filename: typeof p.filename === 'string' ? p.filename : 'file' } : undefined;
60
+ };
61
+ export const extractTurnAttachmentParts = (msg) => {
62
+ const fromParts = (msg.parts ?? [])
63
+ .map((p) => extractPart(p))
64
+ .filter((p) => Boolean(p));
65
+ const seenRefs = new Set(fromParts.map((p) => p.ref).filter(Boolean));
66
+ const fromRefs = (msg.attachments ?? [])
67
+ .filter((ref) => !seenRefs.has(ref))
68
+ .map((ref) => ({ ref, filename: ref }));
69
+ return [...fromParts, ...fromRefs];
70
+ };
71
+ export const extractMessageText = (msg) => {
72
+ if (typeof msg.content === 'string' && msg.content.trim())
73
+ return msg.content.trim();
74
+ const items = (Array.isArray(msg.content) ? msg.content : Array.isArray(msg.parts) ? msg.parts : []);
75
+ return items
76
+ .filter((p) => p && typeof p === 'object' && p.type === 'text' && typeof p.text === 'string')
77
+ .map((p) => p.text.trim())
78
+ .filter(Boolean)
79
+ .join('\n');
80
+ };
81
+ export const deriveTitle = (msgOrList) => {
82
+ const list = Array.isArray(msgOrList) ? msgOrList : [msgOrList];
83
+ for (const m of list) {
84
+ if (m.role && m.role !== 'user')
85
+ continue;
86
+ const text = extractMessageText(m);
87
+ if (text)
88
+ return text.slice(0, 80);
89
+ }
90
+ return 'New Chat';
91
+ };
92
+ export const extractLatestUserPrompt = (messages) => {
93
+ for (let i = messages.length - 1; i >= 0; i--) {
94
+ const m = messages[i];
95
+ if (m?.role !== 'user')
96
+ continue;
97
+ const text = extractMessageText(m);
98
+ if (text)
99
+ return text;
100
+ }
101
+ return '';
102
+ };
103
+ export const formatUsage = (usage) => ({
104
+ prompt_tokens: usage?.inputTokens ?? 0,
105
+ completion_tokens: usage?.outputTokens ?? 0,
106
+ total_tokens: usage?.totalTokens ?? (usage?.inputTokens ?? 0) + (usage?.outputTokens ?? 0)
107
+ });
108
+ export const isContextItemVisible = (item, audiences) => !audiences || !item.audiences || item.audiences.some((a) => audiences.includes(a));
109
+ export const formatContextBlock = (entries) => {
110
+ if (entries.length === 0)
111
+ return '';
112
+ const sources = entries
113
+ .map((entry) => `<source path=${JSON.stringify(entry.path)} description=${JSON.stringify(entry.description)}>\n${entry.markdown.trim()}\n</source>`)
114
+ .join('\n');
115
+ return `<infobase_context>\n${sources}\n</infobase_context>`;
116
+ };
117
+ export const buildDynamicContextBlock = (input) => {
118
+ const sections = [`Current UTC Date: ${input.currentTimeIso ?? new Date().toISOString()}`];
119
+ if (input.userContext) {
120
+ sections.push(`<user_state>\n${JSON.stringify(input.userContext.state)}\n</user_state>`);
121
+ if (input.userContext.details && Object.keys(input.userContext.details).length > 0) {
122
+ sections.push(`<user_records>\n${JSON.stringify(input.userContext.details)}\n</user_records>`);
123
+ }
124
+ }
125
+ if (input.recalledMemories && input.recalledMemories.length > 0) {
126
+ const items = input.recalledMemories
127
+ .map((m) => `<memory scope=${JSON.stringify(m.scope)} chatId=${JSON.stringify(m.chatId)} role=${JSON.stringify(m.role)}>\n${m.content.trim()}\n</memory>`)
128
+ .join('\n');
129
+ sections.push(`<recalled_memory>\n${items}\n</recalled_memory>`);
130
+ }
131
+ if (input.infobaseContextEntries && input.infobaseContextEntries.length > 0) {
132
+ const block = formatContextBlock(input.infobaseContextEntries);
133
+ if (block)
134
+ sections.push(block);
135
+ }
136
+ if (input.stagedAttachmentSummaries && input.stagedAttachmentSummaries.length > 0) {
137
+ sections.push(`<staged_attachments>\n${input.stagedAttachmentSummaries.join('\n').trim()}\n</staged_attachments>`);
138
+ }
139
+ return sections.join('\n\n');
140
+ };
141
+ export const PUBLIC_MESSAGE_FIELDS = [
142
+ 'id',
143
+ 'chatId',
144
+ 'userId',
145
+ 'role',
146
+ 'content',
147
+ 'parts',
148
+ 'toolInvocations',
149
+ 'attachments',
150
+ 'tokenCount',
151
+ 'cancelled',
152
+ 'createdAt'
153
+ ];
154
+ export const RECALL_MESSAGE_FIELDS = ['id', 'chatId', 'role', 'content'];
155
+ export const mapFirestoreMessageDoc = (id, raw) => {
156
+ const createdRaw = raw.createdAt;
157
+ const createdAt = createdRaw instanceof Timestamp
158
+ ? createdRaw.toDate()
159
+ : createdRaw instanceof Date
160
+ ? createdRaw
161
+ : typeof createdRaw === 'string' || typeof createdRaw === 'number'
162
+ ? new Date(createdRaw)
163
+ : new Date();
164
+ const role = raw.role === 'assistant' || raw.role === 'system' || raw.role === 'tool' ? raw.role : 'user';
165
+ const content = typeof raw.content === 'string' ? raw.content : '';
166
+ const parts = Array.isArray(raw.parts) ? raw.parts : content ? [{ type: 'text', text: content }] : [];
167
+ return {
168
+ id,
169
+ chatId: typeof raw.chatId === 'string' ? raw.chatId : '',
170
+ userId: typeof raw.userId === 'string' ? raw.userId : '',
171
+ role,
172
+ content,
173
+ parts,
174
+ ...(Array.isArray(raw.toolInvocations) ? { toolInvocations: raw.toolInvocations } : {}),
175
+ ...(Array.isArray(raw.attachments) ? { attachments: raw.attachments } : {}),
176
+ ...(typeof raw.tokenCount === 'number' ? { tokenCount: raw.tokenCount } : {}),
177
+ ...(typeof raw.cancelled === 'boolean' ? { cancelled: raw.cancelled } : {}),
178
+ createdAt
179
+ };
180
+ };
181
+ export const toModelMessageFromDoc = (doc) => {
182
+ const text = doc.content.trim();
183
+ if (!text)
184
+ return undefined;
185
+ if (doc.role === 'assistant') {
186
+ return { role: 'assistant', content: [{ type: 'text', text }] };
187
+ }
188
+ if (doc.role === 'user') {
189
+ return { role: 'user', content: [{ type: 'text', text }] };
190
+ }
191
+ return undefined;
192
+ };
193
+ export const extractToolInvocations = (messages) => {
194
+ const toolInvocations = [];
195
+ for (const m of messages) {
196
+ if (!Array.isArray(m.content))
197
+ continue;
198
+ for (const part of m.content) {
199
+ if (part && typeof part === 'object' && 'type' in part && (part.type === 'tool-call' || part.type === 'tool-result')) {
200
+ toolInvocations.push(part);
201
+ }
202
+ }
203
+ }
204
+ return toolInvocations;
205
+ };
206
+ export const buildUIMessageResponse = (turn, chatId, generationId, completionPromise, onDelta) => {
207
+ const baseRes = createUIMessageStreamResponse({ stream: toUIMessageStream({ stream: turn.stream }) });
208
+ const headers = new Headers(baseRes.headers);
209
+ headers.set('x-chat-id', chatId);
210
+ headers.set('x-generation-id', generationId);
211
+ const decoder = new TextDecoder();
212
+ const [clientBranch, monitorBranch] = baseRes.body.tee();
213
+ void (async () => {
214
+ const reader = monitorBranch.getReader();
215
+ try {
216
+ while (true) {
217
+ const { done, value } = await reader.read();
218
+ if (done)
219
+ break;
220
+ for (const line of decoder.decode(value, { stream: true }).split('\n')) {
221
+ if (!line.startsWith('data: '))
222
+ continue;
223
+ try {
224
+ const payload = JSON.parse(line.slice(6));
225
+ if (payload.type === 'text-delta')
226
+ onDelta(payload.delta ?? payload.textDelta ?? '');
227
+ }
228
+ catch { }
229
+ }
230
+ }
231
+ }
232
+ catch {
233
+ }
234
+ finally {
235
+ reader.releaseLock();
236
+ }
237
+ })();
238
+ const syncedClientStream = clientBranch.pipeThrough(new TransformStream({
239
+ async flush() {
240
+ await completionPromise.catch(() => { });
241
+ }
242
+ }));
243
+ return new Response(syncedClientStream, { status: baseRes.status, headers });
244
+ };
245
+ export const buildCompletedTurnWriteBatch = (db, opts) => {
246
+ const messagesCol = opts.chatDocRef.collection('messages');
247
+ const batch = db.batch();
248
+ batch.set(messagesCol.doc(opts.userMsgId), {
249
+ id: opts.userMsgId,
250
+ chatId: opts.chatId,
251
+ userId: opts.userId,
252
+ role: 'user',
253
+ content: opts.finalUserText,
254
+ parts: opts.userPartsForStorage,
255
+ ...(opts.stagedRefs.length > 0 ? { attachments: opts.stagedRefs } : {}),
256
+ createdAt: Timestamp.fromMillis(opts.userCreatedAtMs),
257
+ ...(opts.userVector ? { embedding: FieldValue.vector(opts.userVector) } : {})
258
+ });
259
+ batch.set(messagesCol.doc(opts.assistantMsgId), {
260
+ id: opts.assistantMsgId,
261
+ chatId: opts.chatId,
262
+ userId: opts.userId,
263
+ role: 'assistant',
264
+ content: opts.finalAssistantText,
265
+ parts: opts.finalAssistantText ? [{ type: 'text', text: opts.finalAssistantText }] : [],
266
+ ...(opts.toolInvocations.length > 0 ? { toolInvocations: opts.toolInvocations } : {}),
267
+ ...(opts.totalTokens !== undefined ? { tokenCount: opts.totalTokens } : {}),
268
+ cancelled: opts.cancelled,
269
+ createdAt: Timestamp.fromMillis(Math.max(opts.userCreatedAtMs + 1, Date.now())),
270
+ ...(opts.assistantVector ? { embedding: FieldValue.vector(opts.assistantVector) } : {})
271
+ });
272
+ batch.set(opts.chatDocRef, {
273
+ id: opts.chatId,
274
+ userId: opts.userId,
275
+ agentId: opts.resolvedAgentId,
276
+ title: opts.title,
277
+ model: opts.selectedModel,
278
+ deleted: false,
279
+ activeGenerationId: null,
280
+ messageCount: FieldValue.increment(2),
281
+ updatedAt: FieldValue.serverTimestamp()
282
+ }, { merge: true });
283
+ return batch;
284
+ };
285
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/chat/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Plugin } from 'esbuild';
2
+ export declare const getCorgeRootDir: () => string;
3
+ export declare const resolveCorgeEntrypoint: (cwd?: string) => string;
4
+ export declare const corgeAliasPlugin: (cwd?: string) => Plugin;
5
+ export declare const buildConsumerApp: (cwd?: string) => Promise<void>;
6
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/cli/builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,MAAM,EAAE,MAAM,SAAS,CAAA;AAE5C,eAAO,MAAM,eAAe,QAAO,MAYlC,CAAA;AAED,eAAO,MAAM,sBAAsB,oBAA0B,MAS5D,CAAA;AAeD,eAAO,MAAM,gBAAgB,oBAA0B,MAgCrD,CAAA;AAEF,eAAO,MAAM,gBAAgB,oBAAgC,OAAO,CAAC,IAAI,CAcxE,CAAA"}
@@ -0,0 +1,91 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import { dirname, join, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { build } from 'esbuild';
6
+ export const getCorgeRootDir = () => {
7
+ const currentFile = fileURLToPath(import.meta.url);
8
+ const currentDir = dirname(currentFile);
9
+ for (const candidate of [
10
+ resolve(currentDir, '../..'),
11
+ resolve(currentDir, '..')
12
+ ]) {
13
+ if (existsSync(join(candidate, 'package.json')) && existsSync(join(candidate, 'tsconfig.base.json'))) {
14
+ return candidate;
15
+ }
16
+ }
17
+ return resolve(currentDir, '../..');
18
+ };
19
+ export const resolveCorgeEntrypoint = (cwd = process.cwd()) => {
20
+ try {
21
+ const req = createRequire(join(cwd, 'package.json'));
22
+ return req.resolve('@corgelabs/corge');
23
+ }
24
+ catch {
25
+ const root = getCorgeRootDir();
26
+ const distEntry = join(root, 'dist/index.js');
27
+ return existsSync(distEntry) ? distEntry : join(root, 'src/index.ts');
28
+ }
29
+ };
30
+ const resolveWithExtensions = (basePath) => {
31
+ for (const candidate of [
32
+ basePath,
33
+ `${basePath}.ts`,
34
+ `${basePath}.js`,
35
+ join(basePath, 'index.ts'),
36
+ join(basePath, 'index.js')
37
+ ]) {
38
+ if (existsSync(candidate))
39
+ return candidate;
40
+ }
41
+ return undefined;
42
+ };
43
+ export const corgeAliasPlugin = (cwd = process.cwd()) => ({
44
+ name: 'corge-alias',
45
+ setup(b) {
46
+ b.onResolve({ filter: /^(@core|@corgelabs\/corge)$/ }, () => ({
47
+ path: resolveCorgeEntrypoint(cwd),
48
+ external: false
49
+ }));
50
+ b.onResolve({ filter: /^@(config|routes|services|utils)\/(.+)$/ }, (args) => {
51
+ const match = /^@(config|routes|services|utils)\/(.+)$/.exec(args.path);
52
+ if (!match)
53
+ return undefined;
54
+ const [, folder, rest] = match;
55
+ const target = resolveWithExtensions(join(cwd, 'src', folder, rest));
56
+ if (target)
57
+ return { path: target, external: false };
58
+ return undefined;
59
+ });
60
+ b.onResolve({ filter: /^@app-entry$/ }, () => {
61
+ const target = resolveWithExtensions(join(cwd, 'src/index'));
62
+ if (target)
63
+ return { path: target, external: false };
64
+ return { path: 'corge-fallback-app', namespace: 'corge-virtual' };
65
+ });
66
+ b.onLoad({ filter: /.*/, namespace: 'corge-virtual' }, () => ({
67
+ contents: [
68
+ "import { core } from '@core'",
69
+ 'export const { devApp, app, functions } = core.createApp({})'
70
+ ].join('\n'),
71
+ loader: 'ts',
72
+ resolveDir: cwd
73
+ }));
74
+ }
75
+ });
76
+ export const buildConsumerApp = async (cwd = process.cwd()) => {
77
+ await build({
78
+ absWorkingDir: cwd,
79
+ entryPoints: ['src/index.ts'],
80
+ bundle: true,
81
+ platform: 'node',
82
+ target: 'node24',
83
+ format: 'cjs',
84
+ packages: 'external',
85
+ plugins: [corgeAliasPlugin(cwd)],
86
+ footer: { js: 'module.exports = functions;' },
87
+ outfile: 'dist/index.cjs',
88
+ sourcemap: true
89
+ });
90
+ };
91
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/cli/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const deployConsumerApp: (target: 'prod' | 'dev' | undefined, cwd?: string) => Promise<void>;
2
+ //# sourceMappingURL=deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../../src/cli/deployer.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,iBAAiB,WACpB,MAAM,GAAG,KAAK,GAAG,SAAS,mBAEjC,OAAO,CAAC,IAAI,CA+Id,CAAA"}
@@ -0,0 +1,152 @@
1
+ import { execSync, spawnSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { buildConsumerApp, getCorgeRootDir } from './builder';
5
+ const mergeFirestoreIndexes = (base, custom) => {
6
+ const seenIndexes = new Set();
7
+ const mergedIndexes = [];
8
+ for (const item of [...(base.indexes ?? []), ...(custom.indexes ?? [])]) {
9
+ const key = JSON.stringify(item);
10
+ if (!seenIndexes.has(key)) {
11
+ seenIndexes.add(key);
12
+ mergedIndexes.push(item);
13
+ }
14
+ }
15
+ const seenOverrides = new Set();
16
+ const mergedOverrides = [];
17
+ for (const item of [...(base.fieldOverrides ?? []), ...(custom.fieldOverrides ?? [])]) {
18
+ const key = JSON.stringify(item);
19
+ if (!seenOverrides.has(key)) {
20
+ seenOverrides.add(key);
21
+ mergedOverrides.push(item);
22
+ }
23
+ }
24
+ return {
25
+ indexes: mergedIndexes,
26
+ fieldOverrides: mergedOverrides
27
+ };
28
+ };
29
+ export const deployConsumerApp = async (target, cwd = process.cwd()) => {
30
+ try {
31
+ process.loadEnvFile(join(cwd, '.env'));
32
+ }
33
+ catch { }
34
+ if (target !== 'prod' && target !== 'dev') {
35
+ console.error('Usage: corge deploy <prod|dev>');
36
+ process.exit(1);
37
+ }
38
+ const requiredBranch = target === 'prod' ? 'main' : 'dev';
39
+ const currentBranch = execSync('git rev-parse --abbrev-ref HEAD', { cwd, encoding: 'utf8' }).trim();
40
+ if (currentBranch !== requiredBranch) {
41
+ console.error(`Deploy blocked: "deploy ${target}" can only run on branch "${requiredBranch}" (current branch: "${currentBranch}").`);
42
+ process.exit(1);
43
+ }
44
+ const project = process.env.GCP_PROJECT;
45
+ if (!project) {
46
+ console.error('Missing GCP_PROJECT in .env');
47
+ process.exit(1);
48
+ }
49
+ await buildConsumerApp(cwd);
50
+ const corgeRoot = getCorgeRootDir();
51
+ const firebaseJsonPath = join(cwd, 'firebase.json');
52
+ const pkgJsonPath = join(cwd, 'package.json');
53
+ const firestoreRulesPath = join(cwd, 'firestore.rules');
54
+ const firestoreIndexesPath = join(cwd, 'firestore.indexes.json');
55
+ const storageRulesPath = join(cwd, 'storage.rules');
56
+ const rawFirebaseJson = readFileSync(firebaseJsonPath, 'utf8');
57
+ const rawPkgJson = readFileSync(pkgJsonPath, 'utf8');
58
+ const hadFirestoreRules = existsSync(firestoreRulesPath);
59
+ const rawFirestoreRules = hadFirestoreRules ? readFileSync(firestoreRulesPath, 'utf8') : null;
60
+ const hadFirestoreIndexes = existsSync(firestoreIndexesPath);
61
+ const rawFirestoreIndexes = hadFirestoreIndexes ? readFileSync(firestoreIndexesPath, 'utf8') : null;
62
+ const hadStorageRules = existsSync(storageRulesPath);
63
+ const rawStorageRules = hadStorageRules ? readFileSync(storageRulesPath, 'utf8') : null;
64
+ const restoreFiles = () => {
65
+ try {
66
+ writeFileSync(firebaseJsonPath, rawFirebaseJson, 'utf8');
67
+ }
68
+ catch { }
69
+ try {
70
+ writeFileSync(pkgJsonPath, rawPkgJson, 'utf8');
71
+ }
72
+ catch { }
73
+ try {
74
+ if (hadFirestoreRules && rawFirestoreRules !== null) {
75
+ writeFileSync(firestoreRulesPath, rawFirestoreRules, 'utf8');
76
+ }
77
+ else if (!hadFirestoreRules && existsSync(firestoreRulesPath)) {
78
+ unlinkSync(firestoreRulesPath);
79
+ }
80
+ }
81
+ catch { }
82
+ try {
83
+ if (hadFirestoreIndexes && rawFirestoreIndexes !== null) {
84
+ writeFileSync(firestoreIndexesPath, rawFirestoreIndexes, 'utf8');
85
+ }
86
+ else if (!hadFirestoreIndexes && existsSync(firestoreIndexesPath)) {
87
+ unlinkSync(firestoreIndexesPath);
88
+ }
89
+ }
90
+ catch { }
91
+ try {
92
+ if (hadStorageRules && rawStorageRules !== null) {
93
+ writeFileSync(storageRulesPath, rawStorageRules, 'utf8');
94
+ }
95
+ else if (!hadStorageRules && existsSync(storageRulesPath)) {
96
+ unlinkSync(storageRulesPath);
97
+ }
98
+ }
99
+ catch { }
100
+ };
101
+ process.once('SIGINT', () => {
102
+ restoreFiles();
103
+ process.exit(130);
104
+ });
105
+ process.once('SIGTERM', () => {
106
+ restoreFiles();
107
+ process.exit(143);
108
+ });
109
+ try {
110
+ // 1. Provision or merge base Firestore/Storage rules & composite indexes from @corgelabs/corge/infra
111
+ const baseFirestoreRules = readFileSync(join(corgeRoot, 'infra/firestore.base.rules'), 'utf8');
112
+ const baseStorageRules = readFileSync(join(corgeRoot, 'infra/storage.base.rules'), 'utf8');
113
+ const baseIndexes = JSON.parse(readFileSync(join(corgeRoot, 'infra/firestore.base.indexes.json'), 'utf8'));
114
+ if (!hadFirestoreRules) {
115
+ writeFileSync(firestoreRulesPath, baseFirestoreRules, 'utf8');
116
+ }
117
+ if (!hadStorageRules) {
118
+ writeFileSync(storageRulesPath, baseStorageRules, 'utf8');
119
+ }
120
+ const customIndexes = hadFirestoreIndexes && rawFirestoreIndexes
121
+ ? JSON.parse(rawFirestoreIndexes)
122
+ : {};
123
+ const mergedIndexes = mergeFirestoreIndexes(baseIndexes, customIndexes);
124
+ writeFileSync(firestoreIndexesPath, JSON.stringify(mergedIndexes, null, 2) + '\n', 'utf8');
125
+ // 2. Rewrite firebase.json for target environment
126
+ const cfg = JSON.parse(rawFirebaseJson);
127
+ const prodDb = { database: project, rules: 'firestore.rules', indexes: 'firestore.indexes.json' };
128
+ const devDb = { database: `${project}-dev`, rules: 'firestore.rules', indexes: 'firestore.indexes.json' };
129
+ const prodBucket = { bucket: `${project}.firebasestorage.app`, rules: 'storage.rules' };
130
+ const devBucket = { bucket: `${project}-dev`, rules: 'storage.rules' };
131
+ cfg.firestore = target === 'prod' ? [prodDb] : [devDb];
132
+ cfg.storage = target === 'prod' ? [prodBucket] : [devBucket];
133
+ writeFileSync(firebaseJsonPath, JSON.stringify(cfg, null, 2) + '\n', 'utf8');
134
+ // 3. Expand @corgelabs/corge runtime dependencies into consumer package.json so Cloud Build needs zero npm auth
135
+ const corgePkg = JSON.parse(readFileSync(join(corgeRoot, 'package.json'), 'utf8'));
136
+ const consumerPkg = JSON.parse(rawPkgJson);
137
+ const expandedDeps = { ...(corgePkg.dependencies ?? {}), ...(consumerPkg.dependencies ?? {}) };
138
+ delete expandedDeps['@corgelabs/corge'];
139
+ delete expandedDeps.esbuild;
140
+ consumerPkg.dependencies = expandedDeps;
141
+ writeFileSync(pkgJsonPath, JSON.stringify(consumerPkg, null, 2) + '\n', 'utf8');
142
+ const onlyTargets = target === 'prod'
143
+ ? `functions:${project},functions:${project}-tasks,firestore:${project},storage`
144
+ : `functions:${project}-dev,functions:${project}-tasks-dev,firestore:${project}-dev,storage`;
145
+ const deployRes = spawnSync('npx', ['-y', 'firebase-tools@latest', 'deploy', '-P', project, '--only', onlyTargets], { cwd, stdio: 'inherit' });
146
+ process.exitCode = deployRes.status ?? 1;
147
+ }
148
+ finally {
149
+ restoreFiles();
150
+ }
151
+ };
152
+ //# sourceMappingURL=deployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployer.js","sourceRoot":"","sources":["../../src/cli/deployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAO7D,MAAM,qBAAqB,GAAG,CAAC,IAA0B,EAAE,MAA4B,EAAwB,EAAE;IAC/G,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IACrC,MAAM,aAAa,GAAc,EAAE,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACpB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACvC,MAAM,eAAe,GAAc,EAAE,CAAA;IACrC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,eAAe;KAChC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,MAAkC,EAClC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEnG,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CACX,2BAA2B,MAAM,6BAA6B,cAAc,uBAAuB,aAAa,KAAK,CACtH,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAE3B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;IACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;IACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAEnD,MAAM,eAAe,GAAG,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,iBAAiB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IACxD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7F,MAAM,mBAAmB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAA;IAC5D,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACnG,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACpD,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEvF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC;YACH,aAAa,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;QAC1D,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBACpD,aAAa,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAA;YAC9D,CAAC;iBAAM,IAAI,CAAC,iBAAiB,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAChE,UAAU,CAAC,kBAAkB,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;gBACxD,aAAa,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAA;YAClE,CAAC;iBAAM,IAAI,CAAC,mBAAmB,IAAI,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACpE,UAAU,CAAC,oBAAoB,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,IAAI,eAAe,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAChD,aAAa,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;iBAAM,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC5D,UAAU,CAAC,gBAAgB,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,CAAA;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1B,YAAY,EAAE,CAAA;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;QAC3B,YAAY,EAAE,CAAA;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,qGAAqG;QACrG,MAAM,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC,CAAA;QAC9F,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAA;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,mCAAmC,CAAC,EAAE,MAAM,CAAC,CACnD,CAAA;QAEzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,aAAa,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAA;QAC3D,CAAC;QAED,MAAM,aAAa,GAAG,mBAAmB,IAAI,mBAAmB;YAC9D,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAA0B;YAC3D,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,aAAa,GAAG,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;QACvE,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QAE1F,kDAAkD;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAA4B,CAAA;QAClE,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAA;QACjG,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAA;QACzG,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,sBAAsB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;QACvF,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;QAEtE,GAAG,CAAC,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACtD,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC5D,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QAE5E,gHAAgH;QAChH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAEhF,CAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAGxC,CAAA;QACD,MAAM,YAAY,GAA2B,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA;QACtH,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACvC,OAAO,YAAY,CAAC,OAAO,CAAA;QAC3B,WAAW,CAAC,YAAY,GAAG,YAAY,CAAA;QACvC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QAE/E,MAAM,WAAW,GACf,MAAM,KAAK,MAAM;YACf,CAAC,CAAC,aAAa,OAAO,cAAc,OAAO,oBAAoB,OAAO,UAAU;YAChF,CAAC,CAAC,aAAa,OAAO,kBAAkB,OAAO,wBAAwB,OAAO,cAAc,CAAA;QAEhG,MAAM,SAAS,GAAG,SAAS,CACzB,KAAK,EACL,CAAC,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,EAC/E,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAC1B,CAAA;QACD,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC1C,CAAC;YAAS,CAAC;QACT,YAAY,EAAE,CAAA;IAChB,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const runDevServer: (cwd?: string) => Promise<void>;
2
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/cli/dev-server.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,YAAY,oBAAgC,OAAO,CAAC,IAAI,CA8CpE,CAAA"}