insforge 0.3.3 → 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 (635) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.dockerignore +60 -57
  3. package/.env.example +84 -49
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -83
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -79
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +66 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -0
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +44 -3
  15. package/CLAUDE_PLUGIN.md +104 -0
  16. package/CODE_OF_CONDUCT.md +128 -0
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -27
  19. package/GITHUB_OAUTH_SETUP.md +49 -49
  20. package/GOOGLE_OAUTH_SETUP.md +148 -148
  21. package/LICENSE +201 -201
  22. package/README.md +182 -134
  23. package/assets/Dark.svg +23 -23
  24. package/assets/mcpInstallv2.png +0 -0
  25. package/assets/sampleResponse.png +0 -0
  26. package/auth/index.html +13 -0
  27. package/auth/package.json +28 -0
  28. package/auth/public/favicon.ico +0 -0
  29. package/auth/src/App.tsx +33 -0
  30. package/auth/src/components/ErrorCard.tsx +37 -0
  31. package/auth/src/components/Layout.tsx +13 -0
  32. package/auth/src/index.css +19 -0
  33. package/auth/src/lib/broadcastService.ts +117 -0
  34. package/auth/src/lib/utils.ts +11 -0
  35. package/auth/src/main.tsx +22 -0
  36. package/auth/src/pages/ForgotPasswordPage.tsx +11 -0
  37. package/auth/src/pages/ResetPasswordPage.tsx +11 -0
  38. package/auth/src/pages/SignInPage.tsx +60 -0
  39. package/auth/src/pages/SignUpPage.tsx +60 -0
  40. package/auth/src/pages/VerifyEmailPage.tsx +20 -0
  41. package/auth/src/vite-env.d.ts +10 -0
  42. package/auth/tsconfig.json +32 -0
  43. package/auth/tsconfig.node.json +11 -0
  44. package/auth/vite.config.ts +25 -0
  45. package/backend/package.json +78 -75
  46. package/backend/src/api/{middleware → middlewares}/auth.ts +8 -9
  47. package/backend/src/api/middlewares/rate-limiters.ts +127 -0
  48. package/backend/src/api/routes/{ai.ts → ai/index.routes.ts} +22 -26
  49. package/backend/src/api/routes/auth/index.routes.ts +667 -0
  50. package/backend/src/api/routes/auth/oauth.routes.ts +473 -0
  51. package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +128 -65
  52. package/backend/src/api/routes/database/index.routes.ts +90 -0
  53. package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +26 -12
  54. package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +6 -23
  55. package/backend/src/api/routes/docs/index.routes.ts +75 -0
  56. package/backend/src/api/routes/email/index.routes.ts +35 -0
  57. package/backend/src/api/routes/functions/index.routes.ts +194 -0
  58. package/backend/src/api/routes/{logs.ts → logs/index.routes.ts} +25 -30
  59. package/backend/src/api/routes/{metadata.ts → metadata/index.routes.ts} +33 -31
  60. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  61. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  62. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  63. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  64. package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
  65. package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +48 -61
  66. package/backend/src/api/routes/usage/index.routes.ts +91 -0
  67. package/backend/src/infra/config/app.config.ts +51 -0
  68. package/backend/src/infra/database/database.manager.ts +182 -0
  69. package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +141 -141
  70. package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +40 -40
  71. package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +29 -29
  72. package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +55 -55
  73. package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +23 -23
  74. package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +29 -29
  75. package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +24 -24
  76. package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +1 -1
  77. package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +76 -76
  78. package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +23 -23
  79. package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +93 -93
  80. package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +15 -15
  81. package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +7 -7
  82. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -0
  83. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +8 -0
  84. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +60 -0
  85. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -0
  86. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  87. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  88. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  89. package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
  90. package/backend/src/infra/security/token.manager.ts +219 -0
  91. package/backend/src/infra/socket/socket.manager.ts +522 -0
  92. package/backend/src/providers/ai/openrouter.provider.ts +380 -0
  93. package/backend/src/providers/email/base.provider.ts +38 -0
  94. package/backend/src/providers/email/cloud.provider.ts +271 -0
  95. package/backend/src/{core/logs/providers → providers/logs}/base.provider.ts +11 -11
  96. package/backend/src/{core/logs/providers → providers/logs}/cloudwatch.provider.ts +61 -38
  97. package/backend/src/providers/logs/local.provider.ts +185 -0
  98. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  99. package/backend/src/providers/oauth/base.provider.ts +29 -0
  100. package/backend/src/providers/oauth/discord.provider.ts +195 -0
  101. package/backend/src/providers/oauth/facebook.provider.ts +194 -0
  102. package/backend/src/providers/oauth/github.provider.ts +208 -0
  103. package/backend/src/providers/oauth/google.provider.ts +249 -0
  104. package/backend/src/providers/oauth/index.ts +8 -0
  105. package/backend/src/providers/oauth/linkedin.provider.ts +240 -0
  106. package/backend/src/providers/oauth/microsoft.provider.ts +169 -0
  107. package/backend/src/providers/oauth/x.provider.ts +202 -0
  108. package/backend/src/providers/storage/base.provider.ts +29 -0
  109. package/backend/src/providers/storage/local.provider.ts +103 -0
  110. package/backend/src/providers/storage/s3.provider.ts +313 -0
  111. package/backend/src/server.ts +317 -288
  112. package/backend/src/{core/ai/config.ts → services/ai/ai-config.service.ts} +19 -24
  113. package/backend/src/services/ai/ai-model.service.ts +60 -0
  114. package/backend/src/{core/ai/usage.ts → services/ai/ai-usage.service.ts} +28 -35
  115. package/backend/src/{core/ai/chat.ts → services/ai/chat-completion.service.ts} +37 -24
  116. package/backend/src/services/ai/helpers.ts +64 -0
  117. package/backend/src/{core/ai/image.ts → services/ai/image-generation.service.ts} +17 -19
  118. package/backend/src/services/ai/index.ts +13 -0
  119. package/backend/src/services/auth/auth-config.service.ts +250 -0
  120. package/backend/src/services/auth/auth-otp.service.ts +424 -0
  121. package/backend/src/services/auth/auth.service.ts +1150 -0
  122. package/backend/src/services/auth/index.ts +4 -0
  123. package/backend/src/{core/auth/oauth.ts → services/auth/oauth-config.service.ts} +106 -52
  124. package/backend/src/{core/database/advance.ts → services/database/database-advance.service.ts} +97 -131
  125. package/backend/src/services/database/database-table.service.ts +802 -0
  126. package/backend/src/services/database/database.service.ts +127 -0
  127. package/backend/src/services/email/email.service.ts +73 -0
  128. package/backend/src/{core/functions/functions.ts → services/functions/function.service.ts} +95 -88
  129. package/backend/src/{core/logs/audit.ts → services/logs/audit.service.ts} +92 -75
  130. package/backend/src/services/logs/log.service.ts +73 -0
  131. package/backend/src/services/realtime/index.ts +3 -0
  132. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  133. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  134. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  135. package/backend/src/{core/secrets/secrets.ts → services/secrets/secret.service.ts} +48 -66
  136. package/backend/src/services/storage/storage.service.ts +617 -0
  137. package/backend/src/services/usage/usage.service.ts +149 -0
  138. package/backend/src/types/auth.ts +77 -2
  139. package/backend/src/types/email.ts +8 -0
  140. package/backend/src/types/error-constants.ts +4 -0
  141. package/backend/src/types/logs.ts +0 -29
  142. package/backend/src/types/realtime.ts +18 -0
  143. package/backend/src/{core/socket/types.ts → types/socket.ts} +11 -36
  144. package/backend/src/utils/cookies.ts +35 -0
  145. package/backend/src/utils/environment.ts +9 -3
  146. package/backend/src/utils/logger.ts +20 -2
  147. package/backend/src/utils/s3-config-loader.ts +64 -0
  148. package/backend/src/utils/seed.ts +301 -205
  149. package/backend/src/utils/sql-parser.ts +91 -1
  150. package/backend/src/utils/utils.ts +114 -0
  151. package/backend/src/utils/validations.ts +40 -4
  152. package/backend/tests/README.md +133 -133
  153. package/backend/tests/cleanup-all-test-data.sh +230 -230
  154. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  155. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  156. package/backend/tests/local/test-ai-config.sh +129 -0
  157. package/backend/tests/local/test-ai-usage.sh +80 -0
  158. package/backend/tests/local/test-auth-router.sh +143 -143
  159. package/backend/tests/local/test-database-router.sh +222 -222
  160. package/backend/tests/local/test-e2e.sh +240 -240
  161. package/backend/tests/local/test-fk-errors.sh +96 -96
  162. package/backend/tests/local/test-functions.sh +123 -0
  163. package/backend/tests/local/test-id-field.sh +200 -200
  164. package/backend/tests/local/test-logs.sh +132 -0
  165. package/backend/tests/local/test-public-bucket.sh +264 -264
  166. package/backend/tests/local/test-secrets.sh +249 -247
  167. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  168. package/backend/tests/local/test-traditional-rest.sh +208 -208
  169. package/backend/tests/manual/README.md +50 -50
  170. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  171. package/backend/tests/manual/seed-large-table.sql +100 -100
  172. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  173. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  174. package/backend/tests/manual/test-database-advance.sh +296 -296
  175. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  176. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  177. package/backend/tests/manual/test-rawsql-modes.sh +244 -0
  178. package/backend/tests/manual/test-universal-storage.sh +263 -263
  179. package/backend/tests/manual/test-users.sql +17 -17
  180. package/backend/tests/run-all-tests.sh +139 -139
  181. package/backend/tests/setup.ts +0 -0
  182. package/backend/tests/test-config.sh +338 -302
  183. package/backend/tests/unit/analyze-query.test.ts +697 -0
  184. package/backend/tests/unit/cloud-token.test.ts +48 -0
  185. package/backend/tests/unit/constant.test.ts +8 -0
  186. package/backend/tests/unit/email.test.ts +372 -0
  187. package/backend/tests/unit/environment.test.ts +59 -0
  188. package/backend/tests/unit/helpers.test.ts +63 -0
  189. package/backend/tests/unit/logger.test.ts +22 -0
  190. package/backend/tests/unit/rate-limit.test.ts +154 -0
  191. package/backend/tests/unit/response.test.ts +58 -0
  192. package/backend/tests/unit/sql-parser.test.ts +74 -0
  193. package/backend/tests/unit/uuid.test.ts +21 -0
  194. package/backend/tests/unit/validations.test.ts +80 -0
  195. package/backend/tsconfig.json +22 -22
  196. package/backend/vitest.config.ts +11 -0
  197. package/claude-plugin/.claude-plugin/plugin.json +24 -0
  198. package/claude-plugin/README.md +133 -0
  199. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -0
  200. package/docker-compose.prod.yml +204 -144
  201. package/docker-compose.yml +232 -167
  202. package/docker-init/db/db-init.sql +97 -125
  203. package/docker-init/db/jwt.sql +5 -5
  204. package/docker-init/db/postgresql.conf +16 -16
  205. package/docker-init/logs/vector.yml +236 -0
  206. package/docs/README.md +44 -0
  207. package/docs/agent-docs/real-time.md +269 -0
  208. package/docs/changelog.mdx +119 -0
  209. package/docs/core-concepts/ai/architecture.mdx +373 -0
  210. package/docs/core-concepts/ai/sdk.mdx +213 -0
  211. package/docs/core-concepts/authentication/architecture.mdx +278 -0
  212. package/docs/core-concepts/authentication/sdk.mdx +414 -0
  213. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -0
  214. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -0
  215. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -0
  216. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -0
  217. package/docs/core-concepts/database/architecture.mdx +256 -0
  218. package/docs/core-concepts/database/sdk.mdx +382 -0
  219. package/docs/core-concepts/email/architecture.mdx +101 -0
  220. package/docs/core-concepts/email/sdk.mdx +53 -0
  221. package/docs/core-concepts/functions/architecture.mdx +105 -0
  222. package/docs/core-concepts/functions/sdk.mdx +184 -0
  223. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  224. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  225. package/docs/core-concepts/storage/architecture.mdx +243 -0
  226. package/docs/core-concepts/storage/sdk.mdx +253 -0
  227. package/docs/deployment/README.md +94 -0
  228. package/docs/deployment/deploy-to-aws-ec2.md +565 -0
  229. package/docs/deployment/deploy-to-azure-virtual-machines.md +313 -0
  230. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -0
  231. package/docs/deployment/deploy-to-render.md +441 -0
  232. package/docs/deprecated/insforge-auth-api.md +214 -214
  233. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  234. package/docs/deprecated/insforge-db-api.md +358 -358
  235. package/docs/deprecated/insforge-db-sdk.md +139 -139
  236. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  237. package/docs/deprecated/insforge-debug.md +64 -64
  238. package/docs/deprecated/insforge-instructions.md +123 -123
  239. package/docs/deprecated/insforge-project.md +117 -117
  240. package/docs/deprecated/insforge-storage-api.md +278 -278
  241. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  242. package/docs/docs.json +232 -0
  243. package/docs/examples/framework-guides/nextjs.mdx +131 -0
  244. package/docs/examples/framework-guides/nuxt.mdx +165 -0
  245. package/docs/examples/framework-guides/react.mdx +165 -0
  246. package/docs/examples/framework-guides/svelte.mdx +153 -0
  247. package/docs/examples/framework-guides/vue.mdx +159 -0
  248. package/docs/examples/overview.mdx +67 -0
  249. package/docs/favicon.svg +19 -0
  250. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  251. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  252. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  253. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  254. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  255. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  256. package/docs/images/changelog/nov-2025/auth-components.webp +0 -0
  257. package/docs/images/changelog/nov-2025/database-metadata.webp +0 -0
  258. package/docs/images/changelog/nov-2025/quickstart-prompts.webp +0 -0
  259. package/docs/images/changelog/nov-2025/sql-editor.webp +0 -0
  260. package/docs/images/changelog/nov-2025/usage-page.webp +0 -0
  261. package/docs/images/changelog/october-2025/csv-upload.webp +0 -0
  262. package/docs/images/changelog/october-2025/logs-feature.webp +0 -0
  263. package/docs/images/changelog/october-2025/oauth-providers.webp +0 -0
  264. package/docs/images/checks-passed.png +0 -0
  265. package/docs/images/dashboard-connect-expanded.png +0 -0
  266. package/docs/images/dashboard-connect.png +0 -0
  267. package/docs/images/hero-dark.png +0 -0
  268. package/docs/images/hero-light.png +0 -0
  269. package/docs/images/icons/ai.svg +4 -0
  270. package/docs/images/icons/auth.svg +1 -0
  271. package/docs/images/icons/database.svg +1 -0
  272. package/docs/images/icons/function.svg +1 -0
  273. package/docs/images/icons/storage.svg +1 -0
  274. package/docs/images/logos/nextjs.svg +4 -0
  275. package/docs/images/logos/nuxt.svg +4 -0
  276. package/docs/images/logos/react.svg +5 -0
  277. package/docs/images/logos/svelte.svg +4 -0
  278. package/docs/images/logos/vue.svg +5 -0
  279. package/docs/images/mcp-install.png +0 -0
  280. package/docs/images/onboarding-mcp.png +0 -0
  281. package/docs/insforge-instructions-sdk.md +89 -407
  282. package/docs/introduction.mdx +45 -0
  283. package/docs/logo/dark.svg +22 -0
  284. package/docs/logo/light.svg +20 -0
  285. package/docs/partnership.mdx +652 -0
  286. package/docs/quickstart.mdx +83 -0
  287. package/docs/showcase/2048-arena.png +0 -0
  288. package/docs/showcase/framegen-cloud.png +0 -0
  289. package/docs/showcase/line-connect-race.png +0 -0
  290. package/docs/showcase/moment-vibe.png +0 -0
  291. package/docs/showcase/national-flags.png +0 -0
  292. package/docs/showcase/pokemon-vibe.png +0 -0
  293. package/docs/showcase/pure-browse-buy.png +0 -0
  294. package/docs/showcase.mdx +52 -0
  295. package/docs/snippets/sdk-installation.mdx +22 -0
  296. package/docs/snippets/service-icons.mdx +27 -0
  297. package/eslint.config.js +10 -3
  298. package/examples/oauth/frontend-oauth-example.html +250 -250
  299. package/examples/response-examples.md +443 -443
  300. package/frontend/components.json +17 -17
  301. package/frontend/package.json +69 -63
  302. package/frontend/src/App.tsx +13 -82
  303. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  304. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  305. package/frontend/src/assets/icons/checked.svg +3 -3
  306. package/frontend/src/assets/icons/connected.svg +3 -0
  307. package/frontend/src/assets/icons/error.svg +3 -3
  308. package/frontend/src/assets/icons/loader.svg +9 -0
  309. package/frontend/src/assets/icons/pencil.svg +4 -4
  310. package/frontend/src/assets/icons/refresh.svg +4 -4
  311. package/frontend/src/assets/icons/step_active.svg +3 -3
  312. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  313. package/frontend/src/assets/icons/warning.svg +3 -3
  314. package/frontend/src/assets/logos/apple.svg +4 -0
  315. package/frontend/src/assets/logos/claude_code.svg +3 -3
  316. package/frontend/src/assets/logos/cline.svg +6 -6
  317. package/frontend/src/assets/logos/cursor.svg +20 -20
  318. package/frontend/src/assets/logos/discord.svg +8 -8
  319. package/frontend/src/assets/logos/facebook.svg +3 -0
  320. package/frontend/src/assets/logos/gemini.svg +19 -19
  321. package/frontend/src/assets/logos/github.svg +5 -5
  322. package/frontend/src/assets/logos/google.svg +13 -13
  323. package/frontend/src/assets/logos/grok.svg +10 -10
  324. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  325. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  326. package/frontend/src/assets/logos/instagram.svg +2 -0
  327. package/frontend/src/assets/logos/linkedin.svg +3 -0
  328. package/frontend/src/assets/logos/microsoft.svg +1 -0
  329. package/frontend/src/assets/logos/openai.svg +10 -10
  330. package/frontend/src/assets/logos/roo_code.svg +9 -9
  331. package/frontend/src/assets/logos/spotify.svg +17 -0
  332. package/frontend/src/assets/logos/tiktok.svg +6 -0
  333. package/frontend/src/assets/logos/trae.svg +3 -3
  334. package/frontend/src/assets/logos/windsurf.svg +10 -10
  335. package/frontend/src/assets/logos/x.svg +3 -0
  336. package/frontend/src/components/Checkbox.tsx +27 -29
  337. package/frontend/src/components/CodeBlock.tsx +55 -2
  338. package/frontend/src/components/CodeEditor.tsx +92 -0
  339. package/frontend/src/components/ConfirmDialog.tsx +1 -1
  340. package/frontend/src/components/ConnectCTA.tsx +38 -0
  341. package/frontend/src/components/CopyButton.tsx +52 -15
  342. package/frontend/src/components/ErrorState.tsx +1 -2
  343. package/frontend/src/components/FeatureSidebar.tsx +6 -6
  344. package/frontend/src/components/FeatureSidebarItem.tsx +2 -2
  345. package/frontend/src/components/JsonHighlight.tsx +21 -9
  346. package/frontend/src/components/ProjectInfoModal.tsx +128 -0
  347. package/frontend/src/components/PromptDialog.tsx +1 -4
  348. package/frontend/src/components/SearchInput.tsx +1 -2
  349. package/frontend/src/components/Stepper.tsx +53 -0
  350. package/frontend/src/components/ThemeToggle.tsx +3 -3
  351. package/frontend/src/components/datagrid/DataGrid.tsx +25 -32
  352. package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +1 -2
  353. package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +2 -4
  354. package/frontend/src/components/datagrid/index.ts +23 -0
  355. package/frontend/src/components/index.ts +23 -30
  356. package/frontend/src/components/layout/AppHeader.tsx +131 -91
  357. package/frontend/src/components/layout/AppSidebar.tsx +80 -170
  358. package/frontend/src/components/layout/Layout.tsx +12 -23
  359. package/frontend/src/components/layout/PrimaryMenu.tsx +187 -0
  360. package/frontend/src/components/layout/SecondaryMenu.tsx +70 -0
  361. package/frontend/src/components/layout/index.ts +5 -0
  362. package/frontend/src/components/radix/Tooltip.tsx +24 -13
  363. package/frontend/src/components/radix/index.ts +22 -0
  364. package/frontend/src/features/ai/components/AIConfigCard.tsx +129 -83
  365. package/frontend/src/features/ai/components/AIEmptyState.tsx +12 -7
  366. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +101 -0
  367. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -0
  368. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -0
  369. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -0
  370. package/frontend/src/features/ai/components/index.ts +6 -0
  371. package/frontend/src/features/ai/helpers.ts +57 -71
  372. package/frontend/src/features/ai/hooks/useAIConfigs.ts +39 -113
  373. package/frontend/src/features/ai/hooks/useAIUsage.ts +0 -2
  374. package/frontend/src/features/ai/pages/AIPage.tsx +166 -0
  375. package/frontend/src/features/ai/services/ai.service.ts +5 -5
  376. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -0
  377. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +54 -30
  378. package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
  379. package/frontend/src/features/auth/components/UsersDataGrid.tsx +50 -14
  380. package/frontend/src/features/auth/components/index.ts +5 -0
  381. package/frontend/src/features/auth/helpers.tsx +208 -0
  382. package/frontend/src/features/auth/hooks/useAnonToken.ts +30 -0
  383. package/frontend/src/features/auth/hooks/useAuthConfig.ts +48 -0
  384. package/frontend/src/features/auth/hooks/useOAuthConfig.ts +14 -10
  385. package/frontend/src/features/auth/hooks/useUsers.ts +43 -5
  386. package/frontend/src/features/auth/index.ts +3 -2
  387. package/frontend/src/features/auth/pages/AuthMethodsPage.tsx +275 -0
  388. package/frontend/src/features/auth/pages/ConfigurationPage.tsx +395 -0
  389. package/frontend/src/features/auth/pages/UsersPage.tsx +257 -0
  390. package/frontend/src/features/auth/services/anonToken.service.ts +11 -0
  391. package/frontend/src/features/auth/services/config.service.ts +19 -0
  392. package/frontend/src/features/auth/services/{oauth.service.ts → oauth-config.service.ts} +4 -4
  393. package/frontend/src/features/auth/services/{auth.service.ts → user.service.ts} +7 -53
  394. package/frontend/src/features/dashboard/components/ConnectionSuccessBanner.tsx +35 -0
  395. package/frontend/src/features/dashboard/components/PromptCard.tsx +21 -0
  396. package/frontend/src/features/dashboard/components/PromptDialog.tsx +103 -0
  397. package/frontend/src/features/dashboard/components/StatsCard.tsx +50 -0
  398. package/frontend/src/features/dashboard/components/index.ts +4 -0
  399. package/frontend/src/features/dashboard/pages/DashboardPage.tsx +212 -0
  400. package/frontend/src/features/dashboard/prompts/ai-chatbot.ts +13 -0
  401. package/frontend/src/features/dashboard/prompts/crm-system.ts +13 -0
  402. package/frontend/src/features/dashboard/prompts/ecommerce-platform.ts +12 -0
  403. package/frontend/src/features/dashboard/prompts/index.ts +31 -0
  404. package/frontend/src/features/dashboard/prompts/instagram-clone.ts +11 -0
  405. package/frontend/src/features/dashboard/prompts/notion-clone.ts +14 -0
  406. package/frontend/src/features/dashboard/prompts/reddit-clone.ts +12 -0
  407. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +48 -17
  408. package/frontend/src/features/database/components/ForeignKeyCell.tsx +15 -34
  409. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +19 -20
  410. package/frontend/src/features/database/components/LinkRecordModal.tsx +120 -125
  411. package/frontend/src/features/database/components/RecordFormDialog.tsx +22 -33
  412. package/frontend/src/features/database/components/RecordFormField.tsx +45 -47
  413. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  414. package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
  415. package/frontend/src/features/database/components/TableForm.tsx +28 -19
  416. package/frontend/src/features/database/components/TableFormColumn.tsx +2 -3
  417. package/frontend/src/features/database/components/TableSidebar.tsx +1 -1
  418. package/frontend/src/features/database/components/TablesEmptyState.tsx +48 -0
  419. package/frontend/src/features/database/components/TemplateCard.tsx +37 -0
  420. package/frontend/src/features/database/components/TemplatePreview.tsx +92 -0
  421. package/frontend/src/features/database/components/index.ts +19 -0
  422. package/frontend/src/features/database/constants.ts +28 -2
  423. package/frontend/src/features/database/contexts/SQLEditorContext.tsx +188 -0
  424. package/frontend/src/features/database/helpers.ts +2 -2
  425. package/frontend/src/features/database/hooks/useCSVImport.ts +29 -0
  426. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  427. package/frontend/src/features/database/hooks/useRawSQL.ts +55 -0
  428. package/frontend/src/features/database/hooks/useRecords.ts +139 -0
  429. package/frontend/src/features/database/hooks/useTables.ts +135 -0
  430. package/frontend/src/features/database/index.ts +7 -1
  431. package/frontend/src/features/database/pages/FunctionsPage.tsx +203 -0
  432. package/frontend/src/features/database/pages/IndexesPage.tsx +228 -0
  433. package/frontend/src/features/database/pages/PoliciesPage.tsx +237 -0
  434. package/frontend/src/features/database/pages/SQLEditorPage.tsx +382 -0
  435. package/frontend/src/features/database/{page/DatabasePage.tsx → pages/TablesPage.tsx} +168 -209
  436. package/frontend/src/features/database/pages/TemplatesPage.tsx +39 -0
  437. package/frontend/src/features/database/pages/TriggersPage.tsx +230 -0
  438. package/frontend/src/features/database/services/advance.service.ts +40 -0
  439. package/frontend/src/features/database/services/database.service.ts +33 -194
  440. package/frontend/src/features/database/services/record.service.ts +219 -0
  441. package/frontend/src/features/database/services/table.service.ts +58 -0
  442. package/frontend/src/features/database/templates/ai-chatbot.ts +402 -0
  443. package/frontend/src/features/database/templates/crm-system.ts +528 -0
  444. package/frontend/src/features/database/templates/ecommerce-platform.ts +553 -0
  445. package/frontend/src/features/database/templates/index.ts +34 -0
  446. package/frontend/src/features/database/templates/instagram-clone.ts +222 -0
  447. package/frontend/src/features/database/templates/notion-clone.ts +483 -0
  448. package/frontend/src/features/database/templates/reddit-clone.ts +526 -0
  449. package/frontend/src/features/functions/components/FunctionRow.tsx +2 -1
  450. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +1 -1
  451. package/frontend/src/features/functions/components/SecretRow.tsx +1 -1
  452. package/frontend/src/features/functions/components/index.ts +5 -0
  453. package/frontend/src/features/functions/hooks/useFunctions.ts +4 -4
  454. package/frontend/src/features/{secrets → functions}/hooks/useSecrets.ts +5 -5
  455. package/frontend/src/features/functions/pages/FunctionsPage.tsx +148 -0
  456. package/frontend/src/features/functions/{components/SecretsContent.tsx → pages/SecretsPage.tsx} +19 -21
  457. package/frontend/src/features/functions/services/{functions.service.ts → function.service.ts} +2 -2
  458. package/frontend/src/features/{secrets/services/secrets.service.ts → functions/services/secret.service.ts} +2 -2
  459. package/frontend/src/features/login/hooks/usePartnerOrigin.ts +27 -0
  460. package/frontend/src/features/login/pages/CloudLoginPage.tsx +118 -0
  461. package/frontend/src/features/login/{page → pages}/LoginPage.tsx +16 -23
  462. package/frontend/src/features/login/services/partnership.service.ts +65 -0
  463. package/frontend/src/features/logs/components/LogsDataGrid.tsx +89 -0
  464. package/frontend/src/features/logs/components/SeverityBadge.tsx +18 -0
  465. package/frontend/src/features/logs/components/index.ts +2 -0
  466. package/frontend/src/features/logs/helpers.ts +24 -0
  467. package/frontend/src/features/logs/hooks/useAuditLogs.ts +4 -4
  468. package/frontend/src/features/logs/hooks/useLogSources.ts +137 -0
  469. package/frontend/src/features/logs/hooks/useLogs.ts +163 -0
  470. package/frontend/src/features/logs/hooks/useMcpUsage.ts +128 -0
  471. package/frontend/src/features/logs/index.ts +8 -2
  472. package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +91 -38
  473. package/frontend/src/features/logs/pages/LogsPage.tsx +152 -0
  474. package/frontend/src/features/logs/pages/MCPLogsPage.tsx +84 -0
  475. package/frontend/src/features/logs/services/audit.service.ts +63 -0
  476. package/frontend/src/features/logs/services/log.service.ts +15 -110
  477. package/frontend/src/features/logs/services/usage.service.ts +31 -0
  478. package/frontend/src/features/onboard/components/McpConnectionStatus.tsx +68 -0
  479. package/frontend/src/features/onboard/components/OnboardingModal.tsx +267 -0
  480. package/frontend/src/features/onboard/components/VideoDemoModal.tsx +38 -0
  481. package/frontend/src/features/onboard/components/index.ts +4 -0
  482. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +2 -2
  483. package/frontend/src/features/onboard/components/mcp/{mcp-helper.tsx → helpers.tsx} +8 -8
  484. package/frontend/src/features/onboard/components/mcp/index.ts +2 -3
  485. package/frontend/src/features/onboard/index.ts +13 -3
  486. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  487. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  488. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  489. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  490. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  491. package/frontend/src/features/realtime/index.ts +11 -0
  492. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  493. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  494. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  495. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  496. package/frontend/src/features/storage/components/BucketEmptyState.tsx +9 -6
  497. package/frontend/src/features/storage/components/BucketFormDialog.tsx +25 -41
  498. package/frontend/src/features/storage/components/FilePreviewDialog.tsx +20 -8
  499. package/frontend/src/features/storage/components/StorageDataGrid.tsx +4 -3
  500. package/frontend/src/features/storage/components/StorageManager.tsx +23 -34
  501. package/frontend/src/features/storage/components/index.ts +12 -0
  502. package/frontend/src/features/storage/hooks/useStorage.ts +208 -0
  503. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +41 -143
  504. package/frontend/src/features/storage/services/storage.service.ts +22 -1
  505. package/frontend/src/features/visualizer/components/AuthNode.tsx +72 -56
  506. package/frontend/src/features/visualizer/components/BucketNode.tsx +4 -4
  507. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +108 -80
  508. package/frontend/src/features/visualizer/components/TableNode.tsx +34 -41
  509. package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +12 -4
  510. package/frontend/src/features/visualizer/pages/VisualizerPage.tsx +97 -0
  511. package/frontend/src/index.css +1 -0
  512. package/frontend/src/lib/analytics/posthog.tsx +27 -0
  513. package/frontend/src/lib/contexts/AuthContext.tsx +38 -31
  514. package/frontend/src/lib/contexts/SocketContext.tsx +123 -80
  515. package/frontend/src/{features/metadata → lib}/hooks/useMetadata.ts +1 -1
  516. package/frontend/src/lib/hooks/useToast.tsx +6 -2
  517. package/frontend/src/lib/routing/AppRoutes.tsx +99 -0
  518. package/frontend/src/lib/routing/RequireAuth.tsx +27 -0
  519. package/frontend/src/lib/utils/cloudMessaging.ts +20 -0
  520. package/frontend/src/lib/utils/menuItems.ts +207 -0
  521. package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
  522. package/frontend/src/lib/utils/utils.ts +32 -1
  523. package/frontend/src/vite-env.d.ts +1 -0
  524. package/frontend/tsconfig.json +25 -25
  525. package/frontend/tsconfig.node.json +9 -9
  526. package/frontend/vite.config.ts +5 -3
  527. package/functions/deno.json +24 -24
  528. package/functions/server.ts +315 -290
  529. package/functions/worker-template.js +15 -4
  530. package/i18n/README.ar.md +130 -0
  531. package/i18n/README.de.md +130 -0
  532. package/i18n/README.es.md +154 -0
  533. package/i18n/README.fr.md +134 -0
  534. package/i18n/README.hi.md +129 -0
  535. package/i18n/README.ja.md +174 -0
  536. package/i18n/README.ko.md +137 -0
  537. package/i18n/README.pt-BR.md +131 -0
  538. package/i18n/README.ru.md +129 -0
  539. package/i18n/README.zh-CN.md +133 -0
  540. package/openapi/ai.yaml +715 -688
  541. package/openapi/auth.yaml +1244 -563
  542. package/openapi/email.yaml +158 -0
  543. package/openapi/functions.yaml +475 -475
  544. package/openapi/health.yaml +29 -29
  545. package/openapi/logs.yaml +223 -223
  546. package/openapi/metadata.yaml +177 -177
  547. package/openapi/realtime.yaml +699 -0
  548. package/openapi/records.yaml +381 -381
  549. package/openapi/secrets.yaml +370 -370
  550. package/openapi/storage.yaml +875 -875
  551. package/openapi/tables.yaml +463 -463
  552. package/package.json +97 -88
  553. package/shared-schemas/package.json +31 -31
  554. package/shared-schemas/src/ai-api.schema.ts +34 -58
  555. package/shared-schemas/src/ai.schema.ts +63 -54
  556. package/shared-schemas/src/auth-api.schema.ts +352 -193
  557. package/shared-schemas/src/auth.schema.ts +43 -7
  558. package/shared-schemas/src/cloud-events.schema.ts +57 -0
  559. package/shared-schemas/src/database-api.schema.ts +35 -4
  560. package/shared-schemas/src/database.schema.ts +40 -1
  561. package/shared-schemas/src/docs.schema.ts +26 -0
  562. package/shared-schemas/src/email-api.schema.ts +30 -0
  563. package/shared-schemas/src/index.ts +5 -0
  564. package/shared-schemas/src/logs-api.schema.ts +7 -1
  565. package/shared-schemas/src/logs.schema.ts +26 -0
  566. package/shared-schemas/src/metadata.schema.ts +18 -4
  567. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  568. package/shared-schemas/src/realtime.schema.ts +143 -0
  569. package/shared-schemas/tsconfig.json +21 -21
  570. package/tsconfig.json +7 -7
  571. package/zeabur/README.md +13 -0
  572. package/zeabur/template.yml +1032 -0
  573. package/.github/workflows/deploy-aws.yml +0 -130
  574. package/backend/src/api/routes/agent.ts +0 -29
  575. package/backend/src/api/routes/auth.oauth.ts +0 -482
  576. package/backend/src/api/routes/auth.ts +0 -386
  577. package/backend/src/api/routes/docs.ts +0 -66
  578. package/backend/src/api/routes/functions.ts +0 -183
  579. package/backend/src/api/routes/openapi.ts +0 -82
  580. package/backend/src/api/routes/usage.ts +0 -96
  581. package/backend/src/core/ai/client.ts +0 -242
  582. package/backend/src/core/ai/model.ts +0 -117
  583. package/backend/src/core/auth/auth.ts +0 -780
  584. package/backend/src/core/database/manager.ts +0 -178
  585. package/backend/src/core/database/table.ts +0 -772
  586. package/backend/src/core/documentation/agent.ts +0 -689
  587. package/backend/src/core/documentation/openapi.ts +0 -856
  588. package/backend/src/core/logs/analytics.ts +0 -76
  589. package/backend/src/core/logs/providers/localdb.provider.ts +0 -246
  590. package/backend/src/core/socket/socket.ts +0 -388
  591. package/backend/src/core/storage/storage.ts +0 -923
  592. package/backend/src/utils/cloud-token.ts +0 -39
  593. package/backend/src/utils/helpers.ts +0 -49
  594. package/backend/src/utils/uuid.ts +0 -9
  595. package/backend/tests/manual/test-better-auth.sh +0 -303
  596. package/docker-init/db/logs.sql +0 -9
  597. package/frontend/README.md +0 -112
  598. package/frontend/src/components/datagrid/index.tsx +0 -20
  599. package/frontend/src/components/layout/CloudLayout.tsx +0 -95
  600. package/frontend/src/features/ai/components/AIConfigDialog.tsx +0 -76
  601. package/frontend/src/features/ai/components/AIConfigForm.tsx +0 -222
  602. package/frontend/src/features/ai/components/fields/ModalityField.tsx +0 -87
  603. package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +0 -134
  604. package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +0 -33
  605. package/frontend/src/features/ai/page/AIPage.tsx +0 -178
  606. package/frontend/src/features/auth/components/AddOAuthDialog.tsx +0 -106
  607. package/frontend/src/features/auth/components/AuthMethodTab.tsx +0 -238
  608. package/frontend/src/features/auth/components/UsersTab.tsx +0 -114
  609. package/frontend/src/features/auth/page/AuthenticationPage.tsx +0 -169
  610. package/frontend/src/features/dashboard/page/DashboardPage.tsx +0 -194
  611. package/frontend/src/features/database/hooks/UseLinkModal.tsx +0 -78
  612. package/frontend/src/features/functions/components/FunctionViewer.tsx +0 -46
  613. package/frontend/src/features/functions/components/FunctionsContent.tsx +0 -88
  614. package/frontend/src/features/functions/page/FunctionsPage.tsx +0 -28
  615. package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
  616. package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
  617. package/frontend/src/features/login/page/CloudLoginPage.tsx +0 -93
  618. package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +0 -313
  619. package/frontend/src/features/logs/components/LogsTable.tsx +0 -199
  620. package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +0 -530
  621. package/frontend/src/features/metadata/index.ts +0 -0
  622. package/frontend/src/features/metadata/page/MetadataPage.tsx +0 -136
  623. package/frontend/src/features/onboard/components/CompletionCard.tsx +0 -41
  624. package/frontend/src/features/onboard/components/OnboardButton.tsx +0 -84
  625. package/frontend/src/features/onboard/components/StepContent.tsx +0 -91
  626. package/frontend/src/features/onboard/components/TestConnectionStep.tsx +0 -53
  627. package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +0 -144
  628. package/frontend/src/features/onboard/page/OnBoardPage.tsx +0 -104
  629. package/frontend/src/features/onboard/types.ts +0 -8
  630. package/frontend/src/features/visualizer/page/VisualizerPage.tsx +0 -127
  631. package/frontend/src/lib/contexts/OnboardStepContext.tsx +0 -68
  632. package/frontend/src/lib/hooks/useOnboardingCompletion.ts +0 -29
  633. /package/backend/src/api/{middleware → middlewares}/error.ts +0 -0
  634. /package/backend/src/api/{middleware → middlewares}/upload.ts +0 -0
  635. /package/frontend/src/{features/metadata → lib}/services/metadata.service.ts +0 -0
package/openapi/ai.yaml CHANGED
@@ -1,689 +1,716 @@
1
- openapi: 3.0.3
2
- info:
3
- title: Insforge AI API
4
- version: 1.0.0
5
- description: AI services for chat and image generation with OpenRouter integration
6
-
7
- paths:
8
- /api/ai/configurations:
9
- post:
10
- summary: Create AI configuration
11
- description: Create a new AI configuration with model and system prompt
12
- tags:
13
- - Admin
14
- security:
15
- - bearerAuth: []
16
- requestBody:
17
- required: true
18
- content:
19
- application/json:
20
- schema:
21
- $ref: '#/components/schemas/CreateAIConfigurationRequest'
22
- responses:
23
- '201':
24
- description: AI configuration created successfully
25
- content:
26
- application/json:
27
- schema:
28
- type: object
29
- properties:
30
- id:
31
- type: string
32
- format: uuid
33
- message:
34
- type: string
35
- '400':
36
- description: Validation error
37
- '401':
38
- description: Unauthorized
39
- '500':
40
- description: Failed to create AI configuration
41
-
42
- get:
43
- summary: List AI configurations
44
- description: Get all AI configurations
45
- tags:
46
- - Admin
47
- security:
48
- - bearerAuth: []
49
- responses:
50
- '200':
51
- description: List of AI configurations
52
- content:
53
- application/json:
54
- schema:
55
- type: array
56
- items:
57
- $ref: '#/components/schemas/AIConfiguration'
58
- '401':
59
- description: Unauthorized
60
- '500':
61
- description: Failed to fetch AI configurations
62
-
63
- /api/ai/configurations/{id}:
64
- patch:
65
- summary: Update AI configuration
66
- description: Update an existing AI configuration's system prompt
67
- tags:
68
- - Admin
69
- security:
70
- - bearerAuth: []
71
- parameters:
72
- - in: path
73
- name: id
74
- required: true
75
- schema:
76
- type: string
77
- format: uuid
78
- requestBody:
79
- required: true
80
- content:
81
- application/json:
82
- schema:
83
- $ref: '#/components/schemas/UpdateAIConfigurationRequest'
84
- responses:
85
- '200':
86
- description: AI configuration updated successfully
87
- content:
88
- application/json:
89
- schema:
90
- type: object
91
- properties:
92
- message:
93
- type: string
94
- '400':
95
- description: Validation error
96
- '401':
97
- description: Unauthorized
98
- '404':
99
- description: AI configuration not found
100
- '500':
101
- description: Failed to update AI configuration
102
-
103
- delete:
104
- summary: Delete AI configuration
105
- description: Delete an AI configuration
106
- tags:
107
- - Admin
108
- security:
109
- - bearerAuth: []
110
- parameters:
111
- - in: path
112
- name: id
113
- required: true
114
- schema:
115
- type: string
116
- format: uuid
117
- responses:
118
- '200':
119
- description: AI configuration deleted successfully
120
- content:
121
- application/json:
122
- schema:
123
- type: object
124
- properties:
125
- message:
126
- type: string
127
- '401':
128
- description: Unauthorized
129
- '404':
130
- description: AI configuration not found
131
- '500':
132
- description: Failed to delete AI configuration
133
-
134
- /api/ai/usage/summary:
135
- get:
136
- summary: Get AI usage summary
137
- description: Get AI usage summary statistics
138
- tags:
139
- - Admin
140
- security:
141
- - bearerAuth: []
142
- parameters:
143
- - in: query
144
- name: configId
145
- schema:
146
- type: string
147
- format: uuid
148
- description: Filter by configuration ID
149
- - in: query
150
- name: startDate
151
- schema:
152
- type: string
153
- format: date-time
154
- description: Start date for usage period
155
- - in: query
156
- name: endDate
157
- schema:
158
- type: string
159
- format: date-time
160
- description: End date for usage period
161
- responses:
162
- '200':
163
- description: Usage summary
164
- content:
165
- application/json:
166
- schema:
167
- $ref: '#/components/schemas/AIUsageSummary'
168
- '400':
169
- description: Validation error
170
- '401':
171
- description: Unauthorized
172
- '500':
173
- description: Failed to fetch usage summary
174
-
175
- /api/ai/usage:
176
- get:
177
- summary: Get AI usage records
178
- description: Get AI usage records with pagination
179
- tags:
180
- - Admin
181
- security:
182
- - bearerAuth: []
183
- parameters:
184
- - in: query
185
- name: startDate
186
- schema:
187
- type: string
188
- format: date-time
189
- description: Start date for usage period
190
- - in: query
191
- name: endDate
192
- schema:
193
- type: string
194
- format: date-time
195
- description: End date for usage period
196
- - in: query
197
- name: limit
198
- schema:
199
- type: string
200
- default: "50"
201
- description: Number of records to return
202
- - in: query
203
- name: offset
204
- schema:
205
- type: string
206
- default: "0"
207
- description: Number of records to skip
208
- responses:
209
- '200':
210
- description: Usage records
211
- content:
212
- application/json:
213
- schema:
214
- type: array
215
- items:
216
- $ref: '#/components/schemas/AIUsageRecord'
217
- '400':
218
- description: Validation error
219
- '401':
220
- description: Unauthorized
221
- '500':
222
- description: Failed to fetch usage records
223
-
224
- /api/ai/usage/config/{configId}:
225
- get:
226
- summary: Get usage by configuration
227
- description: Get usage records for a specific AI configuration
228
- tags:
229
- - Admin
230
- security:
231
- - bearerAuth: []
232
- parameters:
233
- - in: path
234
- name: configId
235
- required: true
236
- schema:
237
- type: string
238
- format: uuid
239
- - in: query
240
- name: startDate
241
- schema:
242
- type: string
243
- format: date-time
244
- description: Start date for usage period
245
- - in: query
246
- name: endDate
247
- schema:
248
- type: string
249
- format: date-time
250
- description: End date for usage period
251
- responses:
252
- '200':
253
- description: Configuration usage records
254
- content:
255
- application/json:
256
- schema:
257
- type: array
258
- items:
259
- $ref: '#/components/schemas/AIUsageRecord'
260
- '401':
261
- description: Unauthorized
262
- '500':
263
- description: Failed to fetch config usage records
264
-
265
- /api/ai/models:
266
- get:
267
- summary: Get all available AI models
268
- description: Returns list of all available text and image models from OpenRouter
269
- tags:
270
- - Client
271
- security:
272
- - bearerAuth: []
273
- responses:
274
- '200':
275
- description: List of available models categorized by type
276
- content:
277
- application/json:
278
- schema:
279
- $ref: '#/components/schemas/ListModelsResponse'
280
- '401':
281
- description: Unauthorized
282
- '500':
283
- description: Failed to get models list
284
-
285
- /api/ai/chat/completion:
286
- post:
287
- summary: Generate chat completion
288
- description: Send a chat message to any supported model with optional streaming
289
- tags:
290
- - Client
291
- security:
292
- - bearerAuth: []
293
- requestBody:
294
- required: true
295
- content:
296
- application/json:
297
- schema:
298
- $ref: '#/components/schemas/ChatRequest'
299
- responses:
300
- '200':
301
- description: Chat completion response
302
- content:
303
- application/json:
304
- schema:
305
- $ref: '#/components/schemas/ChatCompletionResponse'
306
- text/event-stream:
307
- schema:
308
- type: string
309
- description: Server-sent events stream for streaming responses
310
- '400':
311
- description: Invalid request - missing model or messages
312
- '401':
313
- description: Unauthorized
314
- '500':
315
- description: Failed to get response
316
-
317
- /api/ai/image/generation:
318
- post:
319
- summary: Generate images
320
- description: Generate images using specified model and prompt
321
- tags:
322
- - Client
323
- security:
324
- - bearerAuth: []
325
- requestBody:
326
- required: true
327
- content:
328
- application/json:
329
- schema:
330
- $ref: '#/components/schemas/ImageGenerationOptions'
331
- responses:
332
- '201':
333
- description: Images generated successfully
334
- content:
335
- application/json:
336
- schema:
337
- type: object
338
- properties:
339
- model:
340
- type: string
341
- description: Model used for generation
342
- images:
343
- type: array
344
- items:
345
- $ref: '#/components/schemas/OpenRouterImageMessage'
346
- text:
347
- type: string
348
- description: Text content from multimodal models
349
- count:
350
- type: integer
351
- description: Number of images generated
352
- metadata:
353
- type: object
354
- properties:
355
- model:
356
- type: string
357
- revisedPrompt:
358
- type: string
359
- usage:
360
- $ref: '#/components/schemas/TokenUsage'
361
- nextActions:
362
- type: string
363
- example: Images have been generated successfully. Use the returned URLs or base64 data to access them.
364
- '400':
365
- description: Invalid request - missing model or prompt
366
- '401':
367
- description: Unauthorized
368
- '500':
369
- description: Failed to generate image
370
-
371
- components:
372
- securitySchemes:
373
- bearerAuth:
374
- type: http
375
- scheme: bearer
376
- bearerFormat: JWT
377
- apiKey:
378
- type: apiKey
379
- in: header
380
- name: x-api-key
381
-
382
- schemas:
383
- ChatMessage:
384
- type: object
385
- required:
386
- - role
387
- - content
388
- properties:
389
- role:
390
- type: string
391
- enum: [user, assistant, system]
392
- description: Role of the message sender
393
- content:
394
- type: string
395
- description: Message content
396
-
397
- ChatRequest:
398
- type: object
399
- required:
400
- - model
401
- properties:
402
- model:
403
- type: string
404
- description: OpenRouter model identifier
405
- example: openai/gpt-4
406
- messages:
407
- type: array
408
- description: Array of messages for conversation
409
- items:
410
- $ref: '#/components/schemas/ChatMessage'
411
- stream:
412
- type: boolean
413
- default: false
414
- description: Enable streaming response via Server-Sent Events
415
- temperature:
416
- type: number
417
- minimum: 0
418
- maximum: 2
419
- description: Controls randomness in generation
420
- maxTokens:
421
- type: integer
422
- description: Maximum number of tokens to generate
423
- topP:
424
- type: number
425
- minimum: 0
426
- maximum: 1
427
- description: Nucleus sampling parameter
428
- systemPrompt:
429
- type: string
430
- description: System prompt to guide model behavior
431
-
432
- ChatCompletionResponse:
433
- type: object
434
- properties:
435
- success:
436
- type: boolean
437
- content:
438
- type: string
439
- description: AI model response
440
- metadata:
441
- type: object
442
- properties:
443
- model:
444
- type: string
445
- usage:
446
- $ref: '#/components/schemas/TokenUsage'
447
-
448
- TokenUsage:
449
- type: object
450
- properties:
451
- promptTokens:
452
- type: integer
453
- completionTokens:
454
- type: integer
455
- totalTokens:
456
- type: integer
457
-
458
- ImageGenerationOptions:
459
- type: object
460
- required:
461
- - model
462
- - prompt
463
- properties:
464
- model:
465
- type: string
466
- description: OpenRouter model identifier for image generation
467
- example: openai/dall-e-3
468
- prompt:
469
- type: string
470
- description: Text prompt describing the desired image
471
- example: "A serene landscape with mountains and a lake at sunset"
472
-
473
- OpenRouterImageMessage:
474
- type: object
475
- properties:
476
- type:
477
- type: string
478
- enum: [image_url]
479
- image_url:
480
- type: object
481
- properties:
482
- url:
483
- type: string
484
- description: Can be a direct URL or data:image base64 URL
485
-
486
- OpenRouterModel:
487
- type: object
488
- properties:
489
- id:
490
- type: string
491
- name:
492
- type: string
493
- created:
494
- type: integer
495
- description:
496
- type: string
497
- architecture:
498
- type: object
499
- properties:
500
- input_modalities:
501
- type: array
502
- items:
503
- type: string
504
- output_modalities:
505
- type: array
506
- items:
507
- type: string
508
- tokenizer:
509
- type: string
510
- instruct_type:
511
- type: string
512
- topProvider:
513
- type: object
514
- properties:
515
- is_moderated:
516
- type: boolean
517
- context_length:
518
- type: integer
519
- max_completion_tokens:
520
- type: integer
521
- pricing:
522
- type: object
523
- properties:
524
- prompt:
525
- type: string
526
- completion:
527
- type: string
528
- image:
529
- type: string
530
- request:
531
- type: string
532
- web_search:
533
- type: string
534
- internal_reasoning:
535
- type: string
536
- input_cache_read:
537
- type: string
538
- input_cache_write:
539
- type: string
540
- context_length:
541
- type: integer
542
- max_completion_tokens:
543
- type: integer
544
- per_request_limits:
545
- type: object
546
- supported_parameters:
547
- type: array
548
- items:
549
- type: string
550
-
551
- ListModelsResponse:
552
- type: object
553
- properties:
554
- text:
555
- type: array
556
- items:
557
- type: object
558
- properties:
559
- provider:
560
- type: string
561
- example: openrouter
562
- configured:
563
- type: boolean
564
- models:
565
- type: array
566
- items:
567
- $ref: '#/components/schemas/OpenRouterModel'
568
- image:
569
- type: array
570
- items:
571
- type: object
572
- properties:
573
- provider:
574
- type: string
575
- example: openrouter
576
- configured:
577
- type: boolean
578
- models:
579
- type: array
580
- items:
581
- $ref: '#/components/schemas/OpenRouterModel'
582
-
583
- CreateAIConfigurationRequest:
584
- type: object
585
- required:
586
- - modality
587
- - provider
588
- - modelId
589
- properties:
590
- modality:
591
- type: string
592
- enum: [text, image]
593
- provider:
594
- type: string
595
- example: openrouter
596
- modelId:
597
- type: string
598
- example: openai/gpt-4
599
- systemPrompt:
600
- type: string
601
- description: Optional system prompt for the configuration
602
-
603
- UpdateAIConfigurationRequest:
604
- type: object
605
- properties:
606
- systemPrompt:
607
- type: string
608
- description: Updated system prompt
609
-
610
- AIConfiguration:
611
- type: object
612
- properties:
613
- id:
614
- type: string
615
- format: uuid
616
- modality:
617
- type: string
618
- enum: [text, image]
619
- provider:
620
- type: string
621
- modelId:
622
- type: string
623
- systemPrompt:
624
- type: string
625
- createdAt:
626
- type: string
627
- format: date-time
628
- updatedAt:
629
- type: string
630
- format: date-time
631
-
632
- AIUsageSummary:
633
- type: object
634
- properties:
635
- totalRequests:
636
- type: integer
637
- totalTokens:
638
- type: integer
639
- totalCost:
640
- type: number
641
- byModel:
642
- type: object
643
- additionalProperties:
644
- type: object
645
- properties:
646
- requests:
647
- type: integer
648
- tokens:
649
- type: integer
650
- cost:
651
- type: number
652
-
653
- AIUsageRecord:
654
- type: object
655
- properties:
656
- id:
657
- type: string
658
- format: uuid
659
- configId:
660
- type: string
661
- format: uuid
662
- modelId:
663
- type: string
664
- promptTokens:
665
- type: integer
666
- completionTokens:
667
- type: integer
668
- totalTokens:
669
- type: integer
670
- cost:
671
- type: number
672
- createdAt:
673
- type: string
674
- format: date-time
675
-
676
- ErrorResponse:
677
- type: object
678
- required:
679
- - error
680
- properties:
681
- error:
682
- type: string
683
- description: Error message
684
- details:
685
- type: string
686
- description: Additional error details
687
- code:
688
- type: string
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Insforge AI API
4
+ version: 1.0.0
5
+ description: AI services for chat and image generation with OpenRouter integration
6
+
7
+ paths:
8
+ /api/ai/configurations:
9
+ post:
10
+ summary: Create AI configuration
11
+ description: Create a new AI configuration with model and system prompt
12
+ tags:
13
+ - Admin
14
+ security:
15
+ - bearerAuth: []
16
+ requestBody:
17
+ required: true
18
+ content:
19
+ application/json:
20
+ schema:
21
+ $ref: '#/components/schemas/CreateAIConfigurationRequest'
22
+ responses:
23
+ '201':
24
+ description: AI configuration created successfully
25
+ content:
26
+ application/json:
27
+ schema:
28
+ type: object
29
+ properties:
30
+ id:
31
+ type: string
32
+ format: uuid
33
+ message:
34
+ type: string
35
+ '400':
36
+ description: Validation error
37
+ '401':
38
+ description: Unauthorized
39
+ '500':
40
+ description: Failed to create AI configuration
41
+
42
+ get:
43
+ summary: List AI configurations
44
+ description: Get all AI configurations
45
+ tags:
46
+ - Admin
47
+ security:
48
+ - bearerAuth: []
49
+ responses:
50
+ '200':
51
+ description: List of AI configurations
52
+ content:
53
+ application/json:
54
+ schema:
55
+ type: array
56
+ items:
57
+ $ref: '#/components/schemas/AIConfiguration'
58
+ '401':
59
+ description: Unauthorized
60
+ '500':
61
+ description: Failed to fetch AI configurations
62
+
63
+ /api/ai/configurations/{id}:
64
+ patch:
65
+ summary: Update AI configuration
66
+ description: Update an existing AI configuration's system prompt
67
+ tags:
68
+ - Admin
69
+ security:
70
+ - bearerAuth: []
71
+ parameters:
72
+ - in: path
73
+ name: id
74
+ required: true
75
+ schema:
76
+ type: string
77
+ format: uuid
78
+ requestBody:
79
+ required: true
80
+ content:
81
+ application/json:
82
+ schema:
83
+ $ref: '#/components/schemas/UpdateAIConfigurationRequest'
84
+ responses:
85
+ '200':
86
+ description: AI configuration updated successfully
87
+ content:
88
+ application/json:
89
+ schema:
90
+ type: object
91
+ properties:
92
+ message:
93
+ type: string
94
+ '400':
95
+ description: Validation error
96
+ '401':
97
+ description: Unauthorized
98
+ '404':
99
+ description: AI configuration not found
100
+ '500':
101
+ description: Failed to update AI configuration
102
+
103
+ delete:
104
+ summary: Delete AI configuration
105
+ description: Delete an AI configuration
106
+ tags:
107
+ - Admin
108
+ security:
109
+ - bearerAuth: []
110
+ parameters:
111
+ - in: path
112
+ name: id
113
+ required: true
114
+ schema:
115
+ type: string
116
+ format: uuid
117
+ responses:
118
+ '200':
119
+ description: AI configuration deleted successfully
120
+ content:
121
+ application/json:
122
+ schema:
123
+ type: object
124
+ properties:
125
+ message:
126
+ type: string
127
+ '401':
128
+ description: Unauthorized
129
+ '404':
130
+ description: AI configuration not found
131
+ '500':
132
+ description: Failed to delete AI configuration
133
+
134
+ /api/ai/usage/summary:
135
+ get:
136
+ summary: Get AI usage summary
137
+ description: Get AI usage summary statistics
138
+ tags:
139
+ - Admin
140
+ security:
141
+ - bearerAuth: []
142
+ parameters:
143
+ - in: query
144
+ name: configId
145
+ schema:
146
+ type: string
147
+ format: uuid
148
+ description: Filter by configuration ID
149
+ - in: query
150
+ name: startDate
151
+ schema:
152
+ type: string
153
+ format: date-time
154
+ description: Start date for usage period
155
+ - in: query
156
+ name: endDate
157
+ schema:
158
+ type: string
159
+ format: date-time
160
+ description: End date for usage period
161
+ responses:
162
+ '200':
163
+ description: Usage summary
164
+ content:
165
+ application/json:
166
+ schema:
167
+ $ref: '#/components/schemas/AIUsageSummary'
168
+ '400':
169
+ description: Validation error
170
+ '401':
171
+ description: Unauthorized
172
+ '500':
173
+ description: Failed to fetch usage summary
174
+
175
+ /api/ai/usage:
176
+ get:
177
+ summary: Get AI usage records
178
+ description: Get AI usage records with pagination
179
+ tags:
180
+ - Admin
181
+ security:
182
+ - bearerAuth: []
183
+ parameters:
184
+ - in: query
185
+ name: startDate
186
+ schema:
187
+ type: string
188
+ format: date-time
189
+ description: Start date for usage period
190
+ - in: query
191
+ name: endDate
192
+ schema:
193
+ type: string
194
+ format: date-time
195
+ description: End date for usage period
196
+ - in: query
197
+ name: limit
198
+ schema:
199
+ type: string
200
+ default: "50"
201
+ description: Number of records to return
202
+ - in: query
203
+ name: offset
204
+ schema:
205
+ type: string
206
+ default: "0"
207
+ description: Number of records to skip
208
+ responses:
209
+ '200':
210
+ description: Usage records
211
+ content:
212
+ application/json:
213
+ schema:
214
+ type: array
215
+ items:
216
+ $ref: '#/components/schemas/AIUsageRecord'
217
+ '400':
218
+ description: Validation error
219
+ '401':
220
+ description: Unauthorized
221
+ '500':
222
+ description: Failed to fetch usage records
223
+
224
+ /api/ai/usage/config/{configId}:
225
+ get:
226
+ summary: Get usage by configuration
227
+ description: Get usage records for a specific AI configuration
228
+ tags:
229
+ - Admin
230
+ security:
231
+ - bearerAuth: []
232
+ parameters:
233
+ - in: path
234
+ name: configId
235
+ required: true
236
+ schema:
237
+ type: string
238
+ format: uuid
239
+ - in: query
240
+ name: startDate
241
+ schema:
242
+ type: string
243
+ format: date-time
244
+ description: Start date for usage period
245
+ - in: query
246
+ name: endDate
247
+ schema:
248
+ type: string
249
+ format: date-time
250
+ description: End date for usage period
251
+ responses:
252
+ '200':
253
+ description: Configuration usage records
254
+ content:
255
+ application/json:
256
+ schema:
257
+ type: array
258
+ items:
259
+ $ref: '#/components/schemas/AIUsageRecord'
260
+ '401':
261
+ description: Unauthorized
262
+ '500':
263
+ description: Failed to fetch config usage records
264
+
265
+ /api/ai/models:
266
+ get:
267
+ summary: Get all available AI models
268
+ description: Returns list of all available text and image models from OpenRouter
269
+ tags:
270
+ - Client
271
+ security:
272
+ - bearerAuth: []
273
+ responses:
274
+ '200':
275
+ description: List of available models categorized by type
276
+ content:
277
+ application/json:
278
+ schema:
279
+ $ref: '#/components/schemas/ListModelsResponse'
280
+ '401':
281
+ description: Unauthorized
282
+ '500':
283
+ description: Failed to get models list
284
+
285
+ /api/ai/chat/completion:
286
+ post:
287
+ summary: Generate chat completion
288
+ description: Send a chat message to any supported model with optional streaming
289
+ tags:
290
+ - Client
291
+ security:
292
+ - bearerAuth: []
293
+ requestBody:
294
+ required: true
295
+ content:
296
+ application/json:
297
+ schema:
298
+ $ref: '#/components/schemas/ChatRequest'
299
+ responses:
300
+ '200':
301
+ description: Chat completion response
302
+ content:
303
+ application/json:
304
+ schema:
305
+ $ref: '#/components/schemas/ChatCompletionResponse'
306
+ text/event-stream:
307
+ schema:
308
+ type: string
309
+ description: Server-sent events stream for streaming responses
310
+ '400':
311
+ description: Invalid request - missing model or messages
312
+ '401':
313
+ description: Unauthorized
314
+ '500':
315
+ description: Failed to get response
316
+
317
+ /api/ai/image/generation:
318
+ post:
319
+ summary: Generate images
320
+ description: Generate images using specified model and prompt
321
+ tags:
322
+ - Client
323
+ security:
324
+ - bearerAuth: []
325
+ requestBody:
326
+ required: true
327
+ content:
328
+ application/json:
329
+ schema:
330
+ $ref: '#/components/schemas/ImageGenerationOptions'
331
+ responses:
332
+ '201':
333
+ description: Images generated successfully
334
+ content:
335
+ application/json:
336
+ schema:
337
+ type: object
338
+ properties:
339
+ model:
340
+ type: string
341
+ description: Model used for generation
342
+ images:
343
+ type: array
344
+ items:
345
+ $ref: '#/components/schemas/OpenRouterImageMessage'
346
+ text:
347
+ type: string
348
+ description: Text content from multimodal models
349
+ count:
350
+ type: integer
351
+ description: Number of images generated
352
+ metadata:
353
+ type: object
354
+ properties:
355
+ model:
356
+ type: string
357
+ revisedPrompt:
358
+ type: string
359
+ usage:
360
+ $ref: '#/components/schemas/TokenUsage'
361
+ nextActions:
362
+ type: string
363
+ example: Images have been generated successfully. Use the returned URLs or base64 data to access them.
364
+ '400':
365
+ description: Invalid request - missing model or prompt
366
+ '401':
367
+ description: Unauthorized
368
+ '500':
369
+ description: Failed to generate image
370
+
371
+ components:
372
+ securitySchemes:
373
+ bearerAuth:
374
+ type: http
375
+ scheme: bearer
376
+ bearerFormat: JWT
377
+ apiKey:
378
+ type: apiKey
379
+ in: header
380
+ name: x-api-key
381
+
382
+ schemas:
383
+ ChatMessage:
384
+ type: object
385
+ required:
386
+ - role
387
+ - content
388
+ properties:
389
+ role:
390
+ type: string
391
+ enum: [user, assistant, system]
392
+ description: Role of the message sender
393
+ content:
394
+ type: string
395
+ description: Message content
396
+
397
+ ChatRequest:
398
+ type: object
399
+ required:
400
+ - model
401
+ properties:
402
+ model:
403
+ type: string
404
+ description: OpenRouter model identifier
405
+ example: openai/gpt-4
406
+ messages:
407
+ type: array
408
+ description: Array of messages for conversation
409
+ items:
410
+ $ref: '#/components/schemas/ChatMessage'
411
+ stream:
412
+ type: boolean
413
+ default: false
414
+ description: Enable streaming response via Server-Sent Events
415
+ temperature:
416
+ type: number
417
+ minimum: 0
418
+ maximum: 2
419
+ description: Controls randomness in generation
420
+ maxTokens:
421
+ type: integer
422
+ description: Maximum number of tokens to generate
423
+ topP:
424
+ type: number
425
+ minimum: 0
426
+ maximum: 1
427
+ description: Nucleus sampling parameter
428
+ systemPrompt:
429
+ type: string
430
+ description: System prompt to guide model behavior
431
+
432
+ ChatCompletionResponse:
433
+ type: object
434
+ properties:
435
+ success:
436
+ type: boolean
437
+ content:
438
+ type: string
439
+ description: AI model response
440
+ metadata:
441
+ type: object
442
+ properties:
443
+ model:
444
+ type: string
445
+ usage:
446
+ $ref: '#/components/schemas/TokenUsage'
447
+
448
+ TokenUsage:
449
+ type: object
450
+ properties:
451
+ promptTokens:
452
+ type: integer
453
+ completionTokens:
454
+ type: integer
455
+ totalTokens:
456
+ type: integer
457
+
458
+ ImageGenerationOptions:
459
+ type: object
460
+ required:
461
+ - model
462
+ - prompt
463
+ properties:
464
+ model:
465
+ type: string
466
+ description: OpenRouter model identifier for image generation
467
+ example: openai/dall-e-3
468
+ prompt:
469
+ type: string
470
+ description: Text prompt describing the desired image
471
+ example: "A serene landscape with mountains and a lake at sunset"
472
+
473
+ OpenRouterImageMessage:
474
+ type: object
475
+ properties:
476
+ type:
477
+ type: string
478
+ enum: [image_url]
479
+ image_url:
480
+ type: object
481
+ properties:
482
+ url:
483
+ type: string
484
+ description: Can be a direct URL or data:image base64 URL
485
+
486
+ OpenRouterModel:
487
+ type: object
488
+ properties:
489
+ id:
490
+ type: string
491
+ name:
492
+ type: string
493
+ created:
494
+ type: integer
495
+ description:
496
+ type: string
497
+ architecture:
498
+ type: object
499
+ properties:
500
+ input_modalities:
501
+ type: array
502
+ items:
503
+ type: string
504
+ output_modalities:
505
+ type: array
506
+ items:
507
+ type: string
508
+ tokenizer:
509
+ type: string
510
+ instruct_type:
511
+ type: string
512
+ topProvider:
513
+ type: object
514
+ properties:
515
+ is_moderated:
516
+ type: boolean
517
+ context_length:
518
+ type: integer
519
+ max_completion_tokens:
520
+ type: integer
521
+ pricing:
522
+ type: object
523
+ properties:
524
+ prompt:
525
+ type: string
526
+ completion:
527
+ type: string
528
+ image:
529
+ type: string
530
+ request:
531
+ type: string
532
+ web_search:
533
+ type: string
534
+ internal_reasoning:
535
+ type: string
536
+ input_cache_read:
537
+ type: string
538
+ input_cache_write:
539
+ type: string
540
+ context_length:
541
+ type: integer
542
+ max_completion_tokens:
543
+ type: integer
544
+ per_request_limits:
545
+ type: object
546
+ supported_parameters:
547
+ type: array
548
+ items:
549
+ type: string
550
+
551
+ ListModelsResponse:
552
+ type: object
553
+ properties:
554
+ text:
555
+ type: array
556
+ items:
557
+ type: object
558
+ properties:
559
+ provider:
560
+ type: string
561
+ example: openrouter
562
+ configured:
563
+ type: boolean
564
+ models:
565
+ type: array
566
+ items:
567
+ $ref: '#/components/schemas/OpenRouterModel'
568
+ image:
569
+ type: array
570
+ items:
571
+ type: object
572
+ properties:
573
+ provider:
574
+ type: string
575
+ example: openrouter
576
+ configured:
577
+ type: boolean
578
+ models:
579
+ type: array
580
+ items:
581
+ $ref: '#/components/schemas/OpenRouterModel'
582
+
583
+ CreateAIConfigurationRequest:
584
+ type: object
585
+ required:
586
+ - inputModality
587
+ - outputModality
588
+ - provider
589
+ - modelId
590
+
591
+ properties:
592
+ inputModality:
593
+ type: array
594
+ items:
595
+ type: string
596
+ enum: [text, image]
597
+ outputModality:
598
+ type: array
599
+ items:
600
+ type: string
601
+ enum: [text, image]
602
+ provider:
603
+ type: string
604
+ example: openrouter
605
+ modelId:
606
+ type: string
607
+ example: openai/gpt-4
608
+ systemPrompt:
609
+ type: string
610
+ description: Optional system prompt for the configuration
611
+
612
+ UpdateAIConfigurationRequest:
613
+ type: object
614
+ properties:
615
+ systemPrompt:
616
+ type: string
617
+ description: Updated system prompt
618
+
619
+ AIConfiguration:
620
+ type: object
621
+ properties:
622
+ id:
623
+ type: string
624
+ format: uuid
625
+ modality:
626
+ type: string
627
+ enum: [text, image]
628
+ provider:
629
+ type: string
630
+ modelId:
631
+ type: string
632
+ systemPrompt:
633
+ type: string
634
+ createdAt:
635
+ type: string
636
+ format: date-time
637
+ updatedAt:
638
+ type: string
639
+ format: date-time
640
+
641
+ AIUsageSummary:
642
+ type: object
643
+ properties:
644
+ totalRequests:
645
+ type: integer
646
+ totalTokens:
647
+ type: integer
648
+ totalCost:
649
+ type: number
650
+ byModel:
651
+ type: object
652
+ additionalProperties:
653
+ type: object
654
+ properties:
655
+ requests:
656
+ type: integer
657
+ tokens:
658
+ type: integer
659
+ cost:
660
+ type: number
661
+
662
+ AIUsageRecord:
663
+ type: object
664
+ properties:
665
+ id:
666
+ type: string
667
+ format: uuid
668
+ configId:
669
+ type: string
670
+ format: uuid
671
+ modelId:
672
+ type: string
673
+ promptTokens:
674
+ type: integer
675
+ completionTokens:
676
+ type: integer
677
+ totalTokens:
678
+ type: integer
679
+ cost:
680
+ type: number
681
+ createdAt:
682
+ type: string
683
+ format: date-time
684
+ provider:
685
+ type: string
686
+ nullable: true
687
+ model:
688
+ type: string
689
+ nullable: true
690
+ inputModality:
691
+ type: array
692
+ nullable: true
693
+ items:
694
+ type: string
695
+ enum: [text, image]
696
+ outputModality:
697
+ type: array
698
+ nullable: true
699
+ items:
700
+ type: string
701
+ enum: [text, image]
702
+
703
+ ErrorResponse:
704
+ type: object
705
+ required:
706
+ - error
707
+ properties:
708
+ error:
709
+ type: string
710
+ description: Error message
711
+ details:
712
+ type: string
713
+ description: Additional error details
714
+ code:
715
+ type: string
689
716
  description: Error code for programmatic handling