@corgelabs/corge 0.0.1 → 1.0.1

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 +542 -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 +97 -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 +58 -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 +121 -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
package/src/index.ts ADDED
@@ -0,0 +1,425 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks'
2
+ import { AiService } from './ai'
3
+ import {
4
+ AttachmentsService,
5
+ defineAttachmentTypes,
6
+ getRegisteredAttachmentTypes,
7
+ processAttachmentsInput,
8
+ processAttachmentsOutput,
9
+ processedAttachment,
10
+ registerAttachmentTypes,
11
+ scanAttachmentInput,
12
+ scanAttachmentOutput
13
+ } from './attachments'
14
+ import { AuthService } from './auth'
15
+ import {
16
+ ChatService,
17
+ defineAgent,
18
+ defineAgents,
19
+ defineContext,
20
+ openaiCompletionsBody,
21
+ streamChatBody
22
+ } from './chat'
23
+ import {
24
+ CORE_CONFIG,
25
+ defineConfig,
26
+ type AppBindings,
27
+ type DbRole
28
+ } from './config'
29
+ import {
30
+ DbService,
31
+ defineCollection,
32
+ defineCollections,
33
+ entryId,
34
+ fileRef,
35
+ fileScan,
36
+ fileScanError,
37
+ registerCollections,
38
+ unregisterCollections,
39
+ type EntryId
40
+ } from './db'
41
+ import {
42
+ EmailsService,
43
+ clearEmailTemplates,
44
+ defineEmailTemplates,
45
+ emailAttachmentInputSchema,
46
+ emailLogStatusSchema,
47
+ emailLogsQuerySchema,
48
+ emailWebhookParamsSchema,
49
+ getEmailTemplate,
50
+ getRegisteredEmailTemplates,
51
+ registerEmailTemplates,
52
+ sendBatchEmailInputSchema,
53
+ sendBatchEmailResultSchema,
54
+ sendEmailInputSchema,
55
+ sendEmailResultSchema
56
+ } from './emails'
57
+ import { FilesService, fileBody, fileType, signedUploadInput } from './files'
58
+ import {
59
+ PaymentsService, cancelSubscriptionInput, changeTierInput, chargeResultSchema, checkoutSessionResultSchema,
60
+ clearPaymentDefinitions, createCheckoutInput, createInvoiceInput, createPaymentLinkInput,
61
+ customerBillingSummarySchema, definePlans, defineProducts, directChargeInput, getPlanDefinition,
62
+ getProductDefinition, getRegisteredPlans, getRegisteredProducts, invoiceResultSchema, paymentLinkResultSchema,
63
+ paymentWebhookParamsSchema, quotaCheckResultSchema, recordUsageInput, registerPlans, registerProducts,
64
+ subscribeInput, subscribeResultSchema, subscriptionRecordSchema, usageStatusResultSchema, usageSummarySchema
65
+ } from './payments'
66
+ import {
67
+ CORE_ROUTE_DEFAULTS, RouterService, defineRoute, defineRouteOverrides, defineRoutes, type CoreAppInit
68
+ } from './router'
69
+ import { TasksService, type StepRunner } from './tasks'
70
+ import { ErrorsService, ResilienceService, errorBodySchema } from './utils'
71
+
72
+ export interface CoreRuntimeState {
73
+ env: AppBindings
74
+ userId: EntryId
75
+ role: DbRole
76
+ step?: StepRunner
77
+ }
78
+
79
+ const coreStorage = new AsyncLocalStorage<CoreRuntimeState>()
80
+
81
+ const runWithCore = <T>(state: CoreRuntimeState, fn: () => Promise<T>): Promise<T> =>
82
+ coreStorage.run(state, fn)
83
+
84
+ const getActiveCoreState = (): CoreRuntimeState | undefined => coreStorage.getStore()
85
+
86
+ const buildDefaultEnvBindings = (isDev = false): AppBindings => ({
87
+ SDK_API_KEY: process.env.SDK_API_KEY ?? '',
88
+ MISTRAL_API_KEY: process.env.MISTRAL_API_KEY ?? '',
89
+ TYPESAFE_API_KEY: process.env.TYPESAFE_API_KEY ?? '',
90
+ JINA_API_KEY: process.env.JINA_API_KEY ?? '',
91
+ WEB_API_KEY: process.env.WEB_API_KEY ?? '',
92
+ RESEND_API_KEY: process.env.RESEND_API_KEY ?? '',
93
+ SENDGRID_API_KEY: process.env.SENDGRID_API_KEY ?? '',
94
+ EMAIL_WEBHOOK_SECRET: process.env.EMAIL_WEBHOOK_SECRET ?? '',
95
+ EMAIL_SANDBOX_WEBHOOK_SECRET: process.env.EMAIL_SANDBOX_WEBHOOK_SECRET ?? '',
96
+ STRIPE_API_KEY: process.env.STRIPE_API_KEY ?? '',
97
+ STRIPE_SANDBOX_API_KEY: process.env.STRIPE_SANDBOX_API_KEY ?? '',
98
+ STRIPE_WEBHOOK_SECRET: process.env.STRIPE_WEBHOOK_SECRET ?? '',
99
+ STRIPE_SANDBOX_WEBHOOK_SECRET: process.env.STRIPE_SANDBOX_WEBHOOK_SECRET ?? '',
100
+ DODO_API_KEY: process.env.DODO_API_KEY ?? '',
101
+ DODO_SANDBOX_API_KEY: process.env.DODO_SANDBOX_API_KEY ?? '',
102
+ DODO_WEBHOOK_SECRET: process.env.DODO_WEBHOOK_SECRET ?? '',
103
+ DODO_SANDBOX_WEBHOOK_SECRET: process.env.DODO_SANDBOX_WEBHOOK_SECRET ?? '',
104
+ isDev
105
+ })
106
+
107
+ export class Core {
108
+ readonly #explicitState?: CoreRuntimeState
109
+ readonly #resilience: ResilienceService
110
+ readonly #router: RouterService
111
+ readonly #db: DbService
112
+ readonly #attachments: AttachmentsService
113
+ readonly #auth: AuthService
114
+ readonly #chat: ChatService
115
+ readonly #tasks: TasksService
116
+ readonly #emails: EmailsService
117
+ readonly #payments: PaymentsService
118
+
119
+ readonly errors: ErrorsService
120
+ readonly db: Omit<DbService, 'internals'>
121
+ readonly files: FilesService
122
+ readonly ai: AiService
123
+ readonly attachments: Omit<AttachmentsService, 'internals'>
124
+ readonly auth: Omit<AuthService, 'internals'>
125
+ readonly chat: Omit<ChatService, 'internals'>
126
+ readonly tasks: Omit<TasksService, 'internals'>
127
+ readonly emails: Omit<EmailsService, 'internals'>
128
+ readonly payments: Omit<PaymentsService, 'internals'>
129
+
130
+ constructor(state?: CoreRuntimeState) {
131
+ this.#explicitState = state
132
+ this.errors = new ErrorsService()
133
+ this.#resilience = new ResilienceService(this)
134
+ this.#db = new DbService(this)
135
+ this.db = this.#db
136
+ this.files = new FilesService(this)
137
+ this.ai = new AiService(this)
138
+ this.#attachments = new AttachmentsService(this)
139
+ this.attachments = this.#attachments
140
+ this.#auth = new AuthService(this)
141
+ this.auth = this.#auth
142
+ this.#chat = new ChatService(this)
143
+ this.chat = this.#chat
144
+ this.#tasks = new TasksService(this)
145
+ this.tasks = this.#tasks
146
+ this.#emails = new EmailsService(this)
147
+ this.emails = this.#emails
148
+ this.#payments = new PaymentsService(this)
149
+ this.payments = this.#payments
150
+ this.#router = new RouterService(this)
151
+ }
152
+
153
+ get #state(): CoreRuntimeState {
154
+ if (this.#explicitState) return this.#explicitState
155
+ const active = coreStorage.getStore()
156
+ if (active) return active
157
+ const wfStore = this.#tasks.internals.getActiveWorkflowStore()
158
+ const isDevDefault =
159
+ !process.env.K_SERVICE ||
160
+ process.env.K_SERVICE.endsWith('-dev') ||
161
+ process.env.NODE_ENV === 'development' ||
162
+ process.env.NODE_ENV === 'test'
163
+ return {
164
+ env: wfStore?.env ?? buildDefaultEnvBindings(isDevDefault),
165
+ userId: CORE_CONFIG.auth.adminUserId,
166
+ role: 'admin',
167
+ ...(wfStore?.step ? { step: wfStore.step } : {})
168
+ }
169
+ }
170
+
171
+ get env(): AppBindings {
172
+ return this.#state.env
173
+ }
174
+ get userId(): EntryId {
175
+ return this.#state.userId
176
+ }
177
+ get role(): DbRole {
178
+ return this.#state.role
179
+ }
180
+ get caller(): { userId: EntryId; role: DbRole } {
181
+ return { userId: this.userId, role: this.role }
182
+ }
183
+ get step(): StepRunner {
184
+ return this.#state.step ?? this.#tasks.internals.useStep()
185
+ }
186
+
187
+ readonly config = CORE_CONFIG
188
+ readonly createApp = (opts?: CoreAppInit) => this.#router.createApp(opts)
189
+
190
+ readonly define = {
191
+ config: defineConfig,
192
+ route: defineRoute,
193
+ routes: defineRoutes,
194
+ routeOverrides: defineRouteOverrides,
195
+ collection: defineCollection,
196
+ collections: defineCollections,
197
+ agent: defineAgent,
198
+ agents: defineAgents,
199
+ context: defineContext,
200
+ attachmentTypes: defineAttachmentTypes,
201
+ emailTemplates: defineEmailTemplates,
202
+ plans: definePlans,
203
+ products: defineProducts
204
+ }
205
+
206
+ readonly schemas = {
207
+ entryId,
208
+ fileRef,
209
+ fileScan,
210
+ fileScanError,
211
+ fileBody,
212
+ fileType,
213
+ signedUploadInput,
214
+ processedAttachment,
215
+ scanAttachmentInput,
216
+ scanAttachmentOutput,
217
+ processAttachmentsInput,
218
+ processAttachmentsOutput,
219
+ streamChatBody,
220
+ openaiCompletionsBody,
221
+ errorBodySchema,
222
+ emailLogStatusSchema,
223
+ emailAttachmentInputSchema,
224
+ sendEmailInputSchema,
225
+ sendBatchEmailInputSchema,
226
+ emailLogsQuerySchema,
227
+ emailWebhookParamsSchema,
228
+ sendEmailResultSchema,
229
+ sendBatchEmailResultSchema,
230
+ createCheckoutInput,
231
+ createPaymentLinkInput,
232
+ createInvoiceInput,
233
+ directChargeInput,
234
+ subscribeInput,
235
+ changeTierInput,
236
+ cancelSubscriptionInput,
237
+ recordUsageInput,
238
+ paymentWebhookParamsSchema,
239
+ checkoutSessionResultSchema,
240
+ paymentLinkResultSchema,
241
+ invoiceResultSchema,
242
+ chargeResultSchema,
243
+ subscribeResultSchema,
244
+ subscriptionRecordSchema,
245
+ customerBillingSummarySchema,
246
+ usageStatusResultSchema,
247
+ usageSummarySchema,
248
+ quotaCheckResultSchema
249
+ }
250
+
251
+ get internals() {
252
+ return {
253
+ resilience: this.#resilience,
254
+ context: {
255
+ run: runWithCore,
256
+ getState: getActiveCoreState,
257
+ routeDefaults: CORE_ROUTE_DEFAULTS,
258
+ getMcpTools: this.#chat.internals.getMcpTools,
259
+ authenticateRequest: this.#router.authenticateRequest,
260
+ applyRateLimit: this.#router.applyRateLimit,
261
+ enforceAgentAccess: this.#chat.internals.enforceAgentAccess,
262
+ stageAndScanAttachments: this.#chat.internals.stageAndScanAttachments,
263
+ startChatStreamTurn: this.#chat.internals.startChatStreamTurn,
264
+ saveChat: this.#chat.internals.saveChat,
265
+ streamChatSse: this.#chat.internals.streamChatSse,
266
+ scanShortCircuit: this.#attachments.internals.scanShortCircuit
267
+ },
268
+ registry: {
269
+ registerCollections,
270
+ unregisterCollections,
271
+ ensureFirebaseApp: this.#db.internals.ensureFirebaseApp,
272
+ getGcpAccessToken: this.#db.internals.getGcpAccessToken,
273
+ cascadeEraseUserCollections: this.#db.internals.cascadeEraseUserCollections,
274
+ getAttachmentTypes: getRegisteredAttachmentTypes,
275
+ registerAttachmentTypes,
276
+ registerEmailTemplates,
277
+ clearEmailTemplates,
278
+ getEmailTemplate,
279
+ getRegisteredEmailTemplates,
280
+ registerPlans,
281
+ registerProducts,
282
+ clearPaymentDefinitions,
283
+ getPlanDefinition,
284
+ getProductDefinition,
285
+ getRegisteredPlans,
286
+ getRegisteredProducts,
287
+ registerAgents: this.#chat.internals.registerAgents,
288
+ getRegisteredAgents: this.#chat.internals.getRegisteredAgents,
289
+ getAgentRegistry: this.#chat.internals.getAgentRegistry,
290
+ registerWorkflowTool: this.#chat.internals.registerWorkflowTool,
291
+ clearWorkflowTools: this.#chat.internals.clearWorkflowTools,
292
+ registerContextCatalog: this.#chat.internals.registerContextCatalog
293
+ },
294
+ workflows: this.#tasks.internals,
295
+ auth: this.#auth.internals,
296
+ emails: this.#emails.internals,
297
+ payments: this.#payments.internals
298
+ }
299
+ }
300
+ }
301
+
302
+ export type CoreInternals = Core['internals']
303
+
304
+ export const core = new Core()
305
+
306
+ export namespace core {
307
+ export namespace types {
308
+ export type AppBindings = import('./config').AppBindings
309
+ export type DbAction = import('./config').DbAction
310
+ export type DbRole = import('./config').DbRole
311
+ export type CoreAppInit = import('./router').CoreAppInit
312
+ export type CoreInternals = import('./index').CoreInternals
313
+ export type CoreRuntimeState = import('./index').CoreRuntimeState
314
+ export type CoreRouteOverrides = import('./router').CoreRouteOverrides
315
+ export type RouteConfig<I = any, O = any, P = Record<string, string>, Q = Record<string, string>> =
316
+ import('./router').RouteConfig<I, O, P, Q>
317
+ export type RouteExecutionContext<I = unknown, P = Record<string, string>, Q = Record<string, string>> =
318
+ import('./router').RouteExecutionContext<I, P, Q>
319
+ export type RouteMode = import('./router').RouteMode
320
+ export type RoutesIntrospectionResponse = import('./tasks').RoutesIntrospectionResponse
321
+ export type CollectionDefinition<S extends import('zod').ZodObject<any> = import('zod').ZodObject<any>> =
322
+ import('./db').CollectionDefinition<S>
323
+ export type CollectionName = import('./db').CollectionName
324
+ export type DbListOptions<T = Record<string, unknown>> = import('./db').DbListOptions<T>
325
+ export type DbListPage<T> = import('./db').DbListPage<T>
326
+ export type EntryId = import('./db').EntryId
327
+ export type FileRef = import('./db').FileRef
328
+ export type FileScan = import('./db').FileScan
329
+ export type InsertData<N extends import('./db').CollectionName> = import('./db').InsertData<N>
330
+ export type PaginatedList<T> = import('./db').PaginatedList<T>
331
+ export type SelectModel<N extends import('./db').CollectionName> =
332
+ import('./db').SelectModel<N>
333
+ export type UpdateData<N extends import('./db').CollectionName> = import('./db').UpdateData<N>
334
+ export type AttachmentTypesMap = import('./attachments').AttachmentTypesMap
335
+ export type ProcessAttachmentsInput = import('./attachments').ProcessAttachmentsInput
336
+ export type ProcessAttachmentsOutput = import('./attachments').ProcessAttachmentsOutput
337
+ export type ProcessedAttachment = import('./attachments').ProcessedAttachment
338
+ export type ScanAttachmentInput = import('./attachments').ScanAttachmentInput
339
+ export type ScanAttachmentOutput = import('./attachments').ScanAttachmentOutput
340
+ export type FileBody = import('./files').FileBody
341
+ export type FileType = import('./files').FileType
342
+ export type SignedDownloadUrlResult = import('./files').SignedDownloadUrlResult
343
+ export type SignedUploadInput = import('./files').SignedUploadInput
344
+ export type SignedUploadUrlResult = import('./files').SignedUploadUrlResult
345
+ export type AuthUser = import('./auth').AuthUser
346
+ export type AgentConfig = import('./chat').AgentConfig
347
+ export type AskAgentOptions = import('./chat').AskAgentOptions
348
+ export type RunAgentOptions = import('./chat').RunAgentOptions
349
+ export type GetContextOptions = import('./chat').GetContextOptions
350
+ export type HybridRetrievalOptions = import('./chat').HybridRetrievalOptions
351
+ export type HybridRetrievalResult = import('./chat').HybridRetrievalResult
352
+ export type ChatMessagePublic = import('./chat').ChatMessagePublic
353
+ export type ContextEntry = import('./chat').ContextEntry
354
+ export type ContextItemSpec = import('./chat').ContextItemSpec
355
+ export type UserContext = import('./chat').UserContext
356
+ export type UserContextResolver = import('./chat').UserContextResolver
357
+ export type StepRunner = import('./tasks').StepRunner
358
+ export type TaskStatus = import('./tasks').TaskStatus
359
+ export type TaskStatusRecord<O = unknown> = import('./tasks').TaskStatusRecord<O>
360
+ export type WorkflowContext = import('./tasks').WorkflowContext
361
+ export type WorkflowRuntimeEntry = import('./tasks').WorkflowRuntimeEntry
362
+ export type AiUsageSummary = import('./ai').AiUsageSummary
363
+ export type DecideResult = import('./ai').DecideResult
364
+ export type JevQuestion = import('./ai').JevQuestion
365
+ export type AiGenerateOptions<O = string> = import('./ai').AiGenerateOptions<O>
366
+ export type AiGenerateResult<O = string> = import('./ai').AiGenerateResult<O>
367
+ export type VisionOptions = import('./ai').VisionOptions
368
+ export type VisionResult = import('./ai').VisionResult
369
+ export type ErrorBody = import('./utils').ErrorBody
370
+ export type CircuitBreakerKey = import('./utils').CircuitBreakerKey
371
+ export type CircuitBreakerRecord = import('./utils').CircuitBreakerRecord
372
+ export type CircuitBreakerStateName = import('./utils').CircuitBreakerStateName
373
+ export type SingleflightOptions = import('./utils').SingleflightOptions
374
+ export type EmailProvider = import('./config').EmailProvider
375
+ export type AuthEmailPurpose = import('./config').AuthEmailPurpose
376
+ export type AuthEmailVariables = import('./config').AuthEmailVariables
377
+ export type AuthFlowEmailHook = import('./config').AuthFlowEmailHook
378
+ export type AuthFlowConfigSpec = import('./config').AuthFlowConfigSpec
379
+ export type EmailsConfig = import('./config').EmailsConfig
380
+ export type EmailTemplateDefinition<S extends import('zod').ZodObject<any> = import('zod').ZodObject<any>> =
381
+ import('./emails').EmailTemplateDefinition<S>
382
+ export type EmailTemplatesMap = import('./emails').EmailTemplatesMap
383
+ export type EmailAttachmentInput = import('./emails').EmailAttachmentInput
384
+ export type EmailCallOptions = import('./emails').EmailCallOptions
385
+ export type SendEmailInput = import('./emails').SendEmailInput
386
+ export type SendBatchEmailInput = import('./emails').SendBatchEmailInput
387
+ export type SendEmailResult = import('./emails').SendEmailResult
388
+ export type SendBatchEmailResult = import('./emails').SendBatchEmailResult
389
+ export type EmailLogStatus = import('./emails').EmailLogStatus
390
+ export type EmailLogsQuery = import('./emails').EmailLogsQuery
391
+ export type PaymentProvider = import('./payments').PaymentProvider
392
+ export type PaymentsConfig = import('./config').PaymentsConfig
393
+ export type PlanDefinition = import('./payments').PlanDefinition
394
+ export type PlansMap = import('./payments').PlansMap
395
+ export type ProductDefinition = import('./payments').ProductDefinition
396
+ export type ProductsMap = import('./payments').ProductsMap
397
+ export type PaymentCallOptions = import('./payments').PaymentCallOptions
398
+ export type CreateCheckoutInput = import('./payments').CreateCheckoutInput
399
+ export type CheckoutSessionResult = import('./payments').CheckoutSessionResult
400
+ export type CreatePaymentLinkInput = import('./payments').CreatePaymentLinkInput
401
+ export type PaymentLinkResult = import('./payments').PaymentLinkResult
402
+ export type CreateInvoiceInput = import('./payments').CreateInvoiceInput
403
+ export type InvoiceResult = import('./payments').InvoiceResult
404
+ export type DirectChargeInput = import('./payments').DirectChargeInput
405
+ export type ChargeResult = import('./payments').ChargeResult
406
+ export type SubscribeInput = import('./payments').SubscribeInput
407
+ export type SubscribeResult = import('./payments').SubscribeResult
408
+ export type ChangeTierInput = import('./payments').ChangeTierInput
409
+ export type CancelSubscriptionInput = import('./payments').CancelSubscriptionInput
410
+ export type SubscriptionRecord = import('./payments').SubscriptionRecord
411
+ export type CustomerBillingSummary = import('./payments').CustomerBillingSummary
412
+ export type UsageStatusResult = import('./payments').UsageStatusResult
413
+ export type UsageSummary = import('./payments').UsageSummary
414
+ export type QuotaCheckResult = import('./payments').QuotaCheckResult
415
+ export type RecordUsageInput = import('./payments').RecordUsageInput
416
+ }
417
+ }
418
+
419
+ export const useCore = (): Core => {
420
+ const active = coreStorage.getStore()
421
+ return active ? new Core(active) : core
422
+ }
423
+
424
+ export { CORE_CONFIG }
425
+ export { getSecrets, loadGcpSecrets } from './cli/env'