@geenius/adapters 0.1.0 → 0.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 (185) hide show
  1. package/README.md +79 -42
  2. package/package.json +23 -4
  3. package/packages/convex/README.md +1 -1
  4. package/packages/convex/dist/index.cjs +300 -0
  5. package/packages/convex/dist/index.cjs.map +1 -0
  6. package/packages/convex/dist/index.d.cts +231 -0
  7. package/packages/convex/dist/index.d.ts +231 -0
  8. package/packages/convex/dist/index.js +263 -0
  9. package/packages/convex/dist/index.js.map +1 -0
  10. package/packages/react/README.md +1 -1
  11. package/packages/react/dist/index.d.mts +106 -0
  12. package/packages/react/dist/index.d.ts +106 -0
  13. package/packages/react/dist/index.js +611 -0
  14. package/packages/react/dist/index.js.map +1 -0
  15. package/packages/react/dist/index.mjs +570 -0
  16. package/packages/react/dist/index.mjs.map +1 -0
  17. package/packages/react-css/README.md +1 -1
  18. package/packages/react-css/dist/index.cjs +515 -0
  19. package/packages/react-css/dist/index.cjs.map +1 -0
  20. package/packages/react-css/dist/index.d.cts +105 -0
  21. package/packages/react-css/dist/index.d.ts +105 -0
  22. package/packages/react-css/dist/index.js +467 -0
  23. package/packages/react-css/dist/index.js.map +1 -0
  24. package/packages/shared/README.md +1 -1
  25. package/packages/shared/dist/index.d.mts +625 -0
  26. package/packages/shared/dist/index.d.ts +625 -0
  27. package/packages/shared/dist/index.js +1567 -0
  28. package/packages/shared/dist/index.js.map +1 -0
  29. package/packages/shared/dist/index.mjs +1489 -0
  30. package/packages/shared/dist/index.mjs.map +1 -0
  31. package/packages/solidjs/README.md +1 -1
  32. package/packages/solidjs/dist/index.d.mts +97 -0
  33. package/packages/solidjs/dist/index.d.ts +97 -0
  34. package/packages/solidjs/dist/index.js +250 -0
  35. package/packages/solidjs/dist/index.js.map +1 -0
  36. package/packages/solidjs/dist/index.mjs +202 -0
  37. package/packages/solidjs/dist/index.mjs.map +1 -0
  38. package/packages/solidjs-css/README.md +1 -1
  39. package/packages/solidjs-css/dist/index.cjs +343 -0
  40. package/packages/solidjs-css/dist/index.cjs.map +1 -0
  41. package/packages/solidjs-css/dist/index.d.cts +67 -0
  42. package/packages/solidjs-css/dist/index.d.ts +67 -0
  43. package/packages/solidjs-css/dist/index.js +326 -0
  44. package/packages/solidjs-css/dist/index.js.map +1 -0
  45. package/.changeset/config.json +0 -11
  46. package/.github/CODEOWNERS +0 -1
  47. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
  48. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
  49. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  50. package/.github/dependabot.yml +0 -11
  51. package/.github/workflows/ci.yml +0 -23
  52. package/.github/workflows/release.yml +0 -29
  53. package/.nvmrc +0 -1
  54. package/.project/ACCOUNT.yaml +0 -4
  55. package/.project/IDEAS.yaml +0 -7
  56. package/.project/PROJECT.yaml +0 -11
  57. package/.project/ROADMAP.yaml +0 -15
  58. package/CODE_OF_CONDUCT.md +0 -16
  59. package/CONTRIBUTING.md +0 -26
  60. package/SECURITY.md +0 -15
  61. package/SUPPORT.md +0 -8
  62. package/packages/convex/package.json +0 -42
  63. package/packages/convex/src/adapter.ts +0 -39
  64. package/packages/convex/src/index.ts +0 -19
  65. package/packages/convex/src/mutations.ts +0 -142
  66. package/packages/convex/src/queries.ts +0 -106
  67. package/packages/convex/src/schema.ts +0 -54
  68. package/packages/convex/src/types.ts +0 -20
  69. package/packages/convex/tsconfig.json +0 -11
  70. package/packages/convex/tsup.config.ts +0 -10
  71. package/packages/react/package.json +0 -45
  72. package/packages/react/src/components/AdapterCard.tsx +0 -49
  73. package/packages/react/src/components/AdapterConfigForm.tsx +0 -118
  74. package/packages/react/src/components/AdapterList.tsx +0 -84
  75. package/packages/react/src/components/AdapterStatusBadge.tsx +0 -30
  76. package/packages/react/src/components/index.ts +0 -4
  77. package/packages/react/src/hooks/index.ts +0 -75
  78. package/packages/react/src/index.tsx +0 -44
  79. package/packages/react/src/pages/AdapterDetailPage.tsx +0 -133
  80. package/packages/react/src/pages/AdaptersPage.tsx +0 -111
  81. package/packages/react/src/pages/index.ts +0 -2
  82. package/packages/react/src/provider/AdapterProvider.tsx +0 -115
  83. package/packages/react/src/provider/index.ts +0 -2
  84. package/packages/react/tsconfig.json +0 -18
  85. package/packages/react/tsup.config.ts +0 -10
  86. package/packages/react-css/package.json +0 -44
  87. package/packages/react-css/src/adapters.css +0 -1576
  88. package/packages/react-css/src/components/AdapterCard.tsx +0 -34
  89. package/packages/react-css/src/components/AdapterConfigForm.tsx +0 -63
  90. package/packages/react-css/src/components/AdapterList.tsx +0 -40
  91. package/packages/react-css/src/components/AdapterStatusBadge.tsx +0 -21
  92. package/packages/react-css/src/components/index.ts +0 -4
  93. package/packages/react-css/src/hooks/index.ts +0 -75
  94. package/packages/react-css/src/index.tsx +0 -25
  95. package/packages/react-css/src/pages/AdapterDetailPage.tsx +0 -133
  96. package/packages/react-css/src/pages/AdaptersPage.tsx +0 -111
  97. package/packages/react-css/src/pages/index.ts +0 -2
  98. package/packages/react-css/src/provider/AdapterProvider.tsx +0 -115
  99. package/packages/react-css/src/provider/index.ts +0 -2
  100. package/packages/react-css/src/styles.css +0 -494
  101. package/packages/react-css/tsconfig.json +0 -19
  102. package/packages/react-css/tsup.config.ts +0 -2
  103. package/packages/shared/package.json +0 -39
  104. package/packages/shared/src/__tests__/adapters.test.ts +0 -545
  105. package/packages/shared/src/admin/index.ts +0 -2
  106. package/packages/shared/src/admin/interface.ts +0 -34
  107. package/packages/shared/src/admin/localStorage.ts +0 -109
  108. package/packages/shared/src/ai/anthropic.ts +0 -123
  109. package/packages/shared/src/ai/cloudflare-gateway.ts +0 -130
  110. package/packages/shared/src/ai/gemini.ts +0 -181
  111. package/packages/shared/src/ai/index.ts +0 -14
  112. package/packages/shared/src/ai/interface.ts +0 -11
  113. package/packages/shared/src/ai/localStorage.ts +0 -78
  114. package/packages/shared/src/ai/ollama.ts +0 -143
  115. package/packages/shared/src/ai/openai.ts +0 -120
  116. package/packages/shared/src/ai/vercel-ai.ts +0 -101
  117. package/packages/shared/src/auth/better-auth.ts +0 -118
  118. package/packages/shared/src/auth/clerk.ts +0 -151
  119. package/packages/shared/src/auth/convex-auth.ts +0 -125
  120. package/packages/shared/src/auth/index.ts +0 -10
  121. package/packages/shared/src/auth/interface.ts +0 -17
  122. package/packages/shared/src/auth/localStorage.ts +0 -125
  123. package/packages/shared/src/auth/supabase-auth.ts +0 -136
  124. package/packages/shared/src/config.ts +0 -57
  125. package/packages/shared/src/constants.ts +0 -122
  126. package/packages/shared/src/db/convex.ts +0 -146
  127. package/packages/shared/src/db/index.ts +0 -10
  128. package/packages/shared/src/db/interface.ts +0 -13
  129. package/packages/shared/src/db/localStorage.ts +0 -91
  130. package/packages/shared/src/db/mongodb.ts +0 -125
  131. package/packages/shared/src/db/neon.ts +0 -171
  132. package/packages/shared/src/db/supabase.ts +0 -158
  133. package/packages/shared/src/index.ts +0 -117
  134. package/packages/shared/src/payments/index.ts +0 -4
  135. package/packages/shared/src/payments/interface.ts +0 -11
  136. package/packages/shared/src/payments/localStorage.ts +0 -81
  137. package/packages/shared/src/payments/stripe.ts +0 -177
  138. package/packages/shared/src/storage/convex.ts +0 -113
  139. package/packages/shared/src/storage/index.ts +0 -14
  140. package/packages/shared/src/storage/interface.ts +0 -11
  141. package/packages/shared/src/storage/localStorage.ts +0 -95
  142. package/packages/shared/src/storage/minio.ts +0 -47
  143. package/packages/shared/src/storage/r2.ts +0 -123
  144. package/packages/shared/src/storage/s3.ts +0 -128
  145. package/packages/shared/src/storage/supabase-storage.ts +0 -116
  146. package/packages/shared/src/storage/uploadthing.ts +0 -126
  147. package/packages/shared/src/styles/adapters.css +0 -494
  148. package/packages/shared/src/tier-gate.ts +0 -119
  149. package/packages/shared/src/types.ts +0 -162
  150. package/packages/shared/tsconfig.json +0 -18
  151. package/packages/shared/tsup.config.ts +0 -9
  152. package/packages/shared/vitest.config.ts +0 -14
  153. package/packages/solidjs/package.json +0 -44
  154. package/packages/solidjs/src/components/AdapterCard.tsx +0 -24
  155. package/packages/solidjs/src/components/AdapterConfigForm.tsx +0 -54
  156. package/packages/solidjs/src/components/AdapterList.tsx +0 -28
  157. package/packages/solidjs/src/components/AdapterStatusBadge.tsx +0 -20
  158. package/packages/solidjs/src/components/index.ts +0 -4
  159. package/packages/solidjs/src/index.tsx +0 -17
  160. package/packages/solidjs/src/pages/AdapterDetailPage.tsx +0 -38
  161. package/packages/solidjs/src/pages/AdaptersPage.tsx +0 -39
  162. package/packages/solidjs/src/pages/index.ts +0 -2
  163. package/packages/solidjs/src/primitives/index.ts +0 -78
  164. package/packages/solidjs/src/provider/AdapterProvider.tsx +0 -62
  165. package/packages/solidjs/src/provider/index.ts +0 -2
  166. package/packages/solidjs/tsconfig.json +0 -20
  167. package/packages/solidjs/tsup.config.ts +0 -10
  168. package/packages/solidjs-css/package.json +0 -43
  169. package/packages/solidjs-css/src/adapters.css +0 -1576
  170. package/packages/solidjs-css/src/components/AdapterCard.tsx +0 -43
  171. package/packages/solidjs-css/src/components/AdapterConfigForm.tsx +0 -119
  172. package/packages/solidjs-css/src/components/AdapterList.tsx +0 -68
  173. package/packages/solidjs-css/src/components/AdapterStatusBadge.tsx +0 -24
  174. package/packages/solidjs-css/src/components/index.ts +0 -8
  175. package/packages/solidjs-css/src/index.tsx +0 -30
  176. package/packages/solidjs-css/src/pages/AdapterDetailPage.tsx +0 -107
  177. package/packages/solidjs-css/src/pages/AdaptersPage.tsx +0 -94
  178. package/packages/solidjs-css/src/pages/index.ts +0 -4
  179. package/packages/solidjs-css/src/primitives/index.ts +0 -1
  180. package/packages/solidjs-css/src/provider/AdapterProvider.tsx +0 -61
  181. package/packages/solidjs-css/src/provider/index.ts +0 -2
  182. package/packages/solidjs-css/tsconfig.json +0 -20
  183. package/packages/solidjs-css/tsup.config.ts +0 -2
  184. package/pnpm-workspace.yaml +0 -2
  185. package/tsconfig.json +0 -17
@@ -0,0 +1,263 @@
1
+ // src/schema.ts
2
+ import { defineSchema, defineTable } from "convex/server";
3
+ import { v } from "convex/values";
4
+ var schema_default = defineSchema({
5
+ // ─── Adapter Registry ──────────────────────────────────────
6
+ adapter_registry: defineTable({
7
+ domain: v.union(
8
+ v.literal("db"),
9
+ v.literal("auth"),
10
+ v.literal("payments"),
11
+ v.literal("ai"),
12
+ v.literal("storage"),
13
+ v.literal("admin")
14
+ ),
15
+ provider: v.string(),
16
+ status: v.union(
17
+ v.literal("connected"),
18
+ v.literal("disconnected"),
19
+ v.literal("error"),
20
+ v.literal("initializing")
21
+ ),
22
+ config: v.object({
23
+ provider: v.string(),
24
+ apiKey: v.optional(v.string()),
25
+ baseUrl: v.optional(v.string()),
26
+ options: v.optional(v.any())
27
+ }),
28
+ connectedAt: v.optional(v.number()),
29
+ lastHealthCheck: v.optional(v.number()),
30
+ errorMessage: v.optional(v.string()),
31
+ // Metadata
32
+ createdBy: v.optional(v.string()),
33
+ createdAt: v.number(),
34
+ updatedAt: v.number()
35
+ }).index("by_domain", ["domain"]).index("by_status", ["status"]).index("by_domain_provider", ["domain", "provider"]),
36
+ // ─── Adapter Health Logs ───────────────────────────────────
37
+ adapter_health_logs: defineTable({
38
+ adapterId: v.id("adapter_registry"),
39
+ domain: v.union(
40
+ v.literal("db"),
41
+ v.literal("auth"),
42
+ v.literal("payments"),
43
+ v.literal("ai"),
44
+ v.literal("storage"),
45
+ v.literal("admin")
46
+ ),
47
+ status: v.union(
48
+ v.literal("connected"),
49
+ v.literal("disconnected"),
50
+ v.literal("error"),
51
+ v.literal("initializing")
52
+ ),
53
+ latency: v.optional(v.number()),
54
+ errorMessage: v.optional(v.string()),
55
+ timestamp: v.number()
56
+ }).index("by_adapter", ["adapterId"]).index("by_domain", ["domain"]).index("by_timestamp", ["timestamp"])
57
+ });
58
+
59
+ // src/mutations.ts
60
+ import { mutation } from "./_generated/server";
61
+ import { v as v2 } from "convex/values";
62
+ var domainValidator = v2.union(
63
+ v2.literal("db"),
64
+ v2.literal("auth"),
65
+ v2.literal("payments"),
66
+ v2.literal("ai"),
67
+ v2.literal("storage"),
68
+ v2.literal("admin")
69
+ );
70
+ var statusValidator = v2.union(
71
+ v2.literal("connected"),
72
+ v2.literal("disconnected"),
73
+ v2.literal("error"),
74
+ v2.literal("initializing")
75
+ );
76
+ var registerAdapter = mutation({
77
+ args: {
78
+ domain: domainValidator,
79
+ provider: v2.string(),
80
+ config: v2.object({
81
+ provider: v2.string(),
82
+ apiKey: v2.optional(v2.string()),
83
+ baseUrl: v2.optional(v2.string()),
84
+ options: v2.optional(v2.any())
85
+ }),
86
+ createdBy: v2.optional(v2.string())
87
+ },
88
+ handler: async (ctx, args) => {
89
+ const existing = await ctx.db.query("adapter_registry").withIndex("by_domain_provider", (q) => q.eq("domain", args.domain).eq("provider", args.provider)).first();
90
+ const now = Date.now();
91
+ if (existing) {
92
+ await ctx.db.patch(existing._id, {
93
+ config: args.config,
94
+ status: "initializing",
95
+ updatedAt: now
96
+ });
97
+ return existing._id;
98
+ }
99
+ return await ctx.db.insert("adapter_registry", {
100
+ domain: args.domain,
101
+ provider: args.provider,
102
+ status: "initializing",
103
+ config: args.config,
104
+ connectedAt: void 0,
105
+ lastHealthCheck: void 0,
106
+ errorMessage: void 0,
107
+ createdBy: args.createdBy,
108
+ createdAt: now,
109
+ updatedAt: now
110
+ });
111
+ }
112
+ });
113
+ var updateAdapterStatus = mutation({
114
+ args: {
115
+ adapterId: v2.id("adapter_registry"),
116
+ status: statusValidator,
117
+ latency: v2.optional(v2.number()),
118
+ errorMessage: v2.optional(v2.string())
119
+ },
120
+ handler: async (ctx, args) => {
121
+ const now = Date.now();
122
+ const update = {
123
+ status: args.status,
124
+ lastHealthCheck: now,
125
+ updatedAt: now
126
+ };
127
+ if (args.status === "connected") {
128
+ update.connectedAt = now;
129
+ update.errorMessage = void 0;
130
+ }
131
+ if (args.status === "error" && args.errorMessage) {
132
+ update.errorMessage = args.errorMessage;
133
+ }
134
+ await ctx.db.patch(args.adapterId, update);
135
+ await ctx.db.insert("adapter_health_logs", {
136
+ adapterId: args.adapterId,
137
+ domain: (await ctx.db.get(args.adapterId)).domain,
138
+ status: args.status,
139
+ latency: args.latency,
140
+ errorMessage: args.errorMessage,
141
+ timestamp: now
142
+ });
143
+ }
144
+ });
145
+ var updateAdapter = mutation({
146
+ args: {
147
+ adapterId: v2.id("adapter_registry"),
148
+ config: v2.object({
149
+ provider: v2.string(),
150
+ apiKey: v2.optional(v2.string()),
151
+ baseUrl: v2.optional(v2.string()),
152
+ options: v2.optional(v2.any())
153
+ })
154
+ },
155
+ handler: async (ctx, args) => {
156
+ await ctx.db.patch(args.adapterId, {
157
+ config: args.config,
158
+ status: "initializing",
159
+ updatedAt: Date.now()
160
+ });
161
+ }
162
+ });
163
+ var removeAdapter = mutation({
164
+ args: { adapterId: v2.id("adapter_registry") },
165
+ handler: async (ctx, args) => {
166
+ const logs = await ctx.db.query("adapter_health_logs").withIndex("by_adapter", (q) => q.eq("adapterId", args.adapterId)).collect();
167
+ for (const log of logs) {
168
+ await ctx.db.delete(log._id);
169
+ }
170
+ await ctx.db.delete(args.adapterId);
171
+ }
172
+ });
173
+
174
+ // src/queries.ts
175
+ import { query } from "./_generated/server";
176
+ import { v as v3 } from "convex/values";
177
+ var listAdapters = query({
178
+ args: {},
179
+ handler: async (ctx) => {
180
+ return await ctx.db.query("adapter_registry").collect();
181
+ }
182
+ });
183
+ var listAdaptersByDomain = query({
184
+ args: {
185
+ domain: v3.union(
186
+ v3.literal("db"),
187
+ v3.literal("auth"),
188
+ v3.literal("payments"),
189
+ v3.literal("ai"),
190
+ v3.literal("storage"),
191
+ v3.literal("admin")
192
+ )
193
+ },
194
+ handler: async (ctx, args) => {
195
+ return await ctx.db.query("adapter_registry").withIndex("by_domain", (q) => q.eq("domain", args.domain)).collect();
196
+ }
197
+ });
198
+ var getAdapter = query({
199
+ args: { adapterId: v3.id("adapter_registry") },
200
+ handler: async (ctx, args) => {
201
+ return await ctx.db.get(args.adapterId);
202
+ }
203
+ });
204
+ var getActiveAdapter = query({
205
+ args: {
206
+ domain: v3.union(
207
+ v3.literal("db"),
208
+ v3.literal("auth"),
209
+ v3.literal("payments"),
210
+ v3.literal("ai"),
211
+ v3.literal("storage"),
212
+ v3.literal("admin")
213
+ )
214
+ },
215
+ handler: async (ctx, args) => {
216
+ const adapters = await ctx.db.query("adapter_registry").withIndex("by_domain", (q) => q.eq("domain", args.domain)).collect();
217
+ return adapters.find((a) => a.status === "connected") ?? adapters[0] ?? null;
218
+ }
219
+ });
220
+ var getAdapterStatusSummary = query({
221
+ args: {},
222
+ handler: async (ctx) => {
223
+ const all = await ctx.db.query("adapter_registry").collect();
224
+ const domains = ["db", "auth", "payments", "ai", "storage", "admin"];
225
+ return domains.map((domain) => {
226
+ const domainAdapters = all.filter((a) => a.domain === domain);
227
+ const connected = domainAdapters.find((a) => a.status === "connected");
228
+ return {
229
+ domain,
230
+ provider: connected?.provider ?? domainAdapters[0]?.provider ?? null,
231
+ status: connected?.status ?? domainAdapters[0]?.status ?? "disconnected",
232
+ count: domainAdapters.length
233
+ };
234
+ });
235
+ }
236
+ });
237
+ var getAdapterHealthLogs = query({
238
+ args: {
239
+ adapterId: v3.id("adapter_registry"),
240
+ limit: v3.optional(v3.number())
241
+ },
242
+ handler: async (ctx, args) => {
243
+ const q = ctx.db.query("adapter_health_logs").withIndex("by_adapter", (q2) => q2.eq("adapterId", args.adapterId)).order("desc");
244
+ if (args.limit) {
245
+ return await q.take(args.limit);
246
+ }
247
+ return await q.take(50);
248
+ }
249
+ });
250
+ export {
251
+ getActiveAdapter,
252
+ getAdapter,
253
+ getAdapterHealthLogs,
254
+ getAdapterStatusSummary,
255
+ listAdapters,
256
+ listAdaptersByDomain,
257
+ registerAdapter,
258
+ removeAdapter,
259
+ schema_default as schema,
260
+ updateAdapter,
261
+ updateAdapterStatus
262
+ };
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts","../src/mutations.ts","../src/queries.ts"],"sourcesContent":["// @geenius/adapters-convex — Schema\n\nimport { defineSchema, defineTable } from 'convex/server'\nimport { v } from 'convex/values'\n\nexport default defineSchema({\n // ─── Adapter Registry ──────────────────────────────────────\n adapter_registry: defineTable({\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n provider: v.string(),\n status: v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n ),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n connectedAt: v.optional(v.number()),\n lastHealthCheck: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n // Metadata\n createdBy: v.optional(v.string()),\n createdAt: v.number(),\n updatedAt: v.number(),\n })\n .index('by_domain', ['domain'])\n .index('by_status', ['status'])\n .index('by_domain_provider', ['domain', 'provider']),\n\n // ─── Adapter Health Logs ───────────────────────────────────\n adapter_health_logs: defineTable({\n adapterId: v.id('adapter_registry'),\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n status: v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n ),\n latency: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n timestamp: v.number(),\n })\n .index('by_adapter', ['adapterId'])\n .index('by_domain', ['domain'])\n .index('by_timestamp', ['timestamp']),\n})\n","// @geenius/adapters-convex — Mutations\n\nimport { mutation } from './_generated/server'\nimport { v } from 'convex/values'\n\nconst domainValidator = v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n)\n\nconst statusValidator = v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n)\n\n/**\n * Register or update an adapter for a given domain.\n */\nexport const registerAdapter = mutation({\n args: {\n domain: domainValidator,\n provider: v.string(),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n createdBy: v.optional(v.string()),\n },\n handler: async (ctx, args) => {\n // Check if adapter already exists for this domain\n const existing = await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain_provider', (q) => q.eq('domain', args.domain).eq('provider', args.provider))\n .first()\n\n const now = Date.now()\n\n if (existing) {\n await ctx.db.patch(existing._id, {\n config: args.config,\n status: 'initializing',\n updatedAt: now,\n })\n return existing._id\n }\n\n return await ctx.db.insert('adapter_registry', {\n domain: args.domain,\n provider: args.provider,\n status: 'initializing',\n config: args.config,\n connectedAt: undefined,\n lastHealthCheck: undefined,\n errorMessage: undefined,\n createdBy: args.createdBy,\n createdAt: now,\n updatedAt: now,\n })\n },\n})\n\n/**\n * Update an adapter's status.\n */\nexport const updateAdapterStatus = mutation({\n args: {\n adapterId: v.id('adapter_registry'),\n status: statusValidator,\n latency: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n },\n handler: async (ctx, args) => {\n const now = Date.now()\n const update: Record<string, unknown> = {\n status: args.status,\n lastHealthCheck: now,\n updatedAt: now,\n }\n\n if (args.status === 'connected') {\n update.connectedAt = now\n update.errorMessage = undefined\n }\n if (args.status === 'error' && args.errorMessage) {\n update.errorMessage = args.errorMessage\n }\n\n await ctx.db.patch(args.adapterId, update)\n\n // Log health check\n await ctx.db.insert('adapter_health_logs', {\n adapterId: args.adapterId,\n domain: (await ctx.db.get(args.adapterId))!.domain,\n status: args.status,\n latency: args.latency,\n errorMessage: args.errorMessage,\n timestamp: now,\n })\n },\n})\n\n/**\n * Update adapter configuration.\n */\nexport const updateAdapter = mutation({\n args: {\n adapterId: v.id('adapter_registry'),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n },\n handler: async (ctx, args) => {\n await ctx.db.patch(args.adapterId, {\n config: args.config,\n status: 'initializing',\n updatedAt: Date.now(),\n })\n },\n})\n\n/**\n * Remove an adapter from the registry.\n */\nexport const removeAdapter = mutation({\n args: { adapterId: v.id('adapter_registry') },\n handler: async (ctx, args) => {\n // Remove health logs\n const logs = await ctx.db\n .query('adapter_health_logs')\n .withIndex('by_adapter', (q) => q.eq('adapterId', args.adapterId))\n .collect()\n for (const log of logs) {\n await ctx.db.delete(log._id)\n }\n await ctx.db.delete(args.adapterId)\n },\n})\n","// @geenius/adapters-convex — Queries\n\nimport { query } from './_generated/server'\nimport { v } from 'convex/values'\n\n/**\n * List all registered adapters.\n */\nexport const listAdapters = query({\n args: {},\n handler: async (ctx) => {\n return await ctx.db.query('adapter_registry').collect()\n },\n})\n\n/**\n * List adapters by domain.\n */\nexport const listAdaptersByDomain = query({\n args: {\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n },\n handler: async (ctx, args) => {\n return await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain', (q) => q.eq('domain', args.domain))\n .collect()\n },\n})\n\n/**\n * Get a single adapter by ID.\n */\nexport const getAdapter = query({\n args: { adapterId: v.id('adapter_registry') },\n handler: async (ctx, args) => {\n return await ctx.db.get(args.adapterId)\n },\n})\n\n/**\n * Get the active adapter for a specific domain.\n * Returns the first connected adapter, or the first adapter if none connected.\n */\nexport const getActiveAdapter = query({\n args: {\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n },\n handler: async (ctx, args) => {\n const adapters = await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain', (q) => q.eq('domain', args.domain))\n .collect()\n\n return adapters.find((a) => a.status === 'connected') ?? adapters[0] ?? null\n },\n})\n\n/**\n * Get adapter status summary — one entry per domain.\n */\nexport const getAdapterStatusSummary = query({\n args: {},\n handler: async (ctx) => {\n const all = await ctx.db.query('adapter_registry').collect()\n const domains = ['db', 'auth', 'payments', 'ai', 'storage', 'admin'] as const\n\n return domains.map((domain) => {\n const domainAdapters = all.filter((a) => a.domain === domain)\n const connected = domainAdapters.find((a) => a.status === 'connected')\n return {\n domain,\n provider: connected?.provider ?? domainAdapters[0]?.provider ?? null,\n status: connected?.status ?? domainAdapters[0]?.status ?? 'disconnected',\n count: domainAdapters.length,\n }\n })\n },\n})\n\n/**\n * Get health logs for a specific adapter.\n */\nexport const getAdapterHealthLogs = query({\n args: {\n adapterId: v.id('adapter_registry'),\n limit: v.optional(v.number()),\n },\n handler: async (ctx, args) => {\n const q = ctx.db\n .query('adapter_health_logs')\n .withIndex('by_adapter', (q) => q.eq('adapterId', args.adapterId))\n .order('desc')\n\n if (args.limit) {\n return await q.take(args.limit)\n }\n return await q.take(50)\n },\n})\n"],"mappings":"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","names":["v","v","q"]}
@@ -1 +1 @@
1
- # ✦ @geenius-adapters/react\n\n> Geenius Adapters — React hooks and providers\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius-adapters/react\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius-adapters/react';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
1
+ # ✦ @geenius/adapters-react\n\n> Geenius Adapters — React hooks and providers\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius/adapters-react\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius/adapters-react';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
@@ -0,0 +1,106 @@
1
+ import { DbAdapter, AuthAdapter, PaymentsAdapter, AiAdapter, FileStorageAdapter, AdminAdapter, AdapterDomain, AdapterStatusInfo, AdapterStatusType, DomainAdapterConfig } from '@geenius/adapters-shared';
2
+ export { ADAPTER_DOMAINS, AdapterConfig, AdapterDomain, AdapterRegistryEntry, AdapterStatusInfo, AdapterStatusType, AdminAdapter, AdminMetrics, AiAdapter, AiOptions, AuthAdapter, AuthSession, AuthUser, ChatMessage, ChatResponse, CheckoutParams, CheckoutResult, DOMAIN_DESCRIPTIONS, DOMAIN_ICONS, DOMAIN_LABELS, DbAdapter, DomainAdapterConfig, FileStorageAdapter, ListOptions, ManagedUser, OAuthProvider, PaymentsAdapter, Plan, QueryFilter, StoredFile, Subscription, configureAdapters, getAdapterConfig, getProviderMeta, getProvidersForDomain, isAdaptersConfigured } from '@geenius/adapters-shared';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { ReactNode } from 'react';
5
+
6
+ interface AdapterSet {
7
+ db?: DbAdapter;
8
+ auth?: AuthAdapter;
9
+ payments?: PaymentsAdapter;
10
+ ai?: AiAdapter;
11
+ storage?: FileStorageAdapter;
12
+ admin?: AdminAdapter;
13
+ }
14
+ interface AdapterContextValue {
15
+ adapters: AdapterSet;
16
+ statuses: Record<AdapterDomain, AdapterStatusInfo>;
17
+ getAdapter: <K extends keyof AdapterSet>(domain: K) => NonNullable<AdapterSet[K]>;
18
+ isReady: (domain: AdapterDomain) => boolean;
19
+ isLoading: boolean;
20
+ }
21
+ interface AdapterProviderProps {
22
+ adapters: AdapterSet;
23
+ children: ReactNode;
24
+ /** Check adapter health on mount */
25
+ healthCheck?: boolean;
26
+ }
27
+ declare function AdapterProvider({ adapters, children, healthCheck }: AdapterProviderProps): react_jsx_runtime.JSX.Element;
28
+ declare function useAdapterContext(): AdapterContextValue;
29
+
30
+ /** Access the database adapter */
31
+ declare function useDb(): DbAdapter;
32
+ /** Access the auth adapter */
33
+ declare function useAuth(): AuthAdapter;
34
+ /** Access the payments adapter */
35
+ declare function usePayments(): PaymentsAdapter;
36
+ /** Access the AI adapter */
37
+ declare function useAi(): AiAdapter;
38
+ /** Access the file storage adapter */
39
+ declare function useStorage(): FileStorageAdapter;
40
+ /** Access the admin adapter */
41
+ declare function useAdmin(): AdminAdapter;
42
+ /** Get all adapter statuses */
43
+ declare function useAdapterStatuses(): Record<AdapterDomain, AdapterStatusInfo>;
44
+ /** Get status for a specific adapter domain */
45
+ declare function useAdapterStatus(domain: AdapterDomain): AdapterStatusInfo;
46
+ /** Check if adapter is ready */
47
+ declare function useIsAdapterReady(domain: AdapterDomain): boolean;
48
+ /** Access all adapters at once */
49
+ declare function useAdapters(): {
50
+ db: DbAdapter | undefined;
51
+ auth: AuthAdapter | undefined;
52
+ payments: PaymentsAdapter | undefined;
53
+ ai: AiAdapter | undefined;
54
+ storage: FileStorageAdapter | undefined;
55
+ admin: AdminAdapter | undefined;
56
+ statuses: Record<AdapterDomain, AdapterStatusInfo>;
57
+ isLoading: boolean;
58
+ isReady: (domain: AdapterDomain) => boolean;
59
+ };
60
+
61
+ interface AdapterStatusBadgeProps {
62
+ status: AdapterStatusType;
63
+ showLabel?: boolean;
64
+ size?: 'sm' | 'md';
65
+ className?: string;
66
+ }
67
+ declare function AdapterStatusBadge({ status, showLabel, size, className }: AdapterStatusBadgeProps): react_jsx_runtime.JSX.Element;
68
+
69
+ interface AdapterCardProps {
70
+ domain: AdapterDomain;
71
+ status: AdapterStatusInfo;
72
+ onClick?: () => void;
73
+ className?: string;
74
+ }
75
+ declare function AdapterCard({ domain, status, onClick, className }: AdapterCardProps): react_jsx_runtime.JSX.Element;
76
+
77
+ interface AdapterListProps {
78
+ onSelect?: (domain: AdapterDomain) => void;
79
+ filterStatus?: AdapterStatusType;
80
+ className?: string;
81
+ }
82
+ declare function AdapterList({ onSelect, filterStatus, className }: AdapterListProps): react_jsx_runtime.JSX.Element;
83
+
84
+ interface AdapterConfigFormProps {
85
+ domain: AdapterDomain;
86
+ initialConfig?: DomainAdapterConfig;
87
+ onSave: (config: DomainAdapterConfig) => Promise<void> | void;
88
+ onCancel?: () => void;
89
+ className?: string;
90
+ }
91
+ declare function AdapterConfigForm({ domain, initialConfig, onSave, onCancel, className }: AdapterConfigFormProps): react_jsx_runtime.JSX.Element;
92
+
93
+ interface AdaptersPageProps {
94
+ onNavigateDetail?: (domain: AdapterDomain) => void;
95
+ className?: string;
96
+ }
97
+ declare function AdaptersPage({ onNavigateDetail, className }: AdaptersPageProps): react_jsx_runtime.JSX.Element;
98
+
99
+ interface AdapterDetailPageProps {
100
+ domain: AdapterDomain;
101
+ onBack?: () => void;
102
+ className?: string;
103
+ }
104
+ declare function AdapterDetailPage({ domain, onBack, className }: AdapterDetailPageProps): react_jsx_runtime.JSX.Element;
105
+
106
+ export { AdapterCard, type AdapterCardProps, AdapterConfigForm, type AdapterConfigFormProps, type AdapterContextValue, AdapterDetailPage, type AdapterDetailPageProps, AdapterList, type AdapterListProps, AdapterProvider, type AdapterProviderProps, type AdapterSet, AdapterStatusBadge, type AdapterStatusBadgeProps, AdaptersPage, type AdaptersPageProps, useAdapterContext, useAdapterStatus, useAdapterStatuses, useAdapters, useAdmin, useAi, useAuth, useDb, useIsAdapterReady, usePayments, useStorage };
@@ -0,0 +1,106 @@
1
+ import { DbAdapter, AuthAdapter, PaymentsAdapter, AiAdapter, FileStorageAdapter, AdminAdapter, AdapterDomain, AdapterStatusInfo, AdapterStatusType, DomainAdapterConfig } from '@geenius/adapters-shared';
2
+ export { ADAPTER_DOMAINS, AdapterConfig, AdapterDomain, AdapterRegistryEntry, AdapterStatusInfo, AdapterStatusType, AdminAdapter, AdminMetrics, AiAdapter, AiOptions, AuthAdapter, AuthSession, AuthUser, ChatMessage, ChatResponse, CheckoutParams, CheckoutResult, DOMAIN_DESCRIPTIONS, DOMAIN_ICONS, DOMAIN_LABELS, DbAdapter, DomainAdapterConfig, FileStorageAdapter, ListOptions, ManagedUser, OAuthProvider, PaymentsAdapter, Plan, QueryFilter, StoredFile, Subscription, configureAdapters, getAdapterConfig, getProviderMeta, getProvidersForDomain, isAdaptersConfigured } from '@geenius/adapters-shared';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { ReactNode } from 'react';
5
+
6
+ interface AdapterSet {
7
+ db?: DbAdapter;
8
+ auth?: AuthAdapter;
9
+ payments?: PaymentsAdapter;
10
+ ai?: AiAdapter;
11
+ storage?: FileStorageAdapter;
12
+ admin?: AdminAdapter;
13
+ }
14
+ interface AdapterContextValue {
15
+ adapters: AdapterSet;
16
+ statuses: Record<AdapterDomain, AdapterStatusInfo>;
17
+ getAdapter: <K extends keyof AdapterSet>(domain: K) => NonNullable<AdapterSet[K]>;
18
+ isReady: (domain: AdapterDomain) => boolean;
19
+ isLoading: boolean;
20
+ }
21
+ interface AdapterProviderProps {
22
+ adapters: AdapterSet;
23
+ children: ReactNode;
24
+ /** Check adapter health on mount */
25
+ healthCheck?: boolean;
26
+ }
27
+ declare function AdapterProvider({ adapters, children, healthCheck }: AdapterProviderProps): react_jsx_runtime.JSX.Element;
28
+ declare function useAdapterContext(): AdapterContextValue;
29
+
30
+ /** Access the database adapter */
31
+ declare function useDb(): DbAdapter;
32
+ /** Access the auth adapter */
33
+ declare function useAuth(): AuthAdapter;
34
+ /** Access the payments adapter */
35
+ declare function usePayments(): PaymentsAdapter;
36
+ /** Access the AI adapter */
37
+ declare function useAi(): AiAdapter;
38
+ /** Access the file storage adapter */
39
+ declare function useStorage(): FileStorageAdapter;
40
+ /** Access the admin adapter */
41
+ declare function useAdmin(): AdminAdapter;
42
+ /** Get all adapter statuses */
43
+ declare function useAdapterStatuses(): Record<AdapterDomain, AdapterStatusInfo>;
44
+ /** Get status for a specific adapter domain */
45
+ declare function useAdapterStatus(domain: AdapterDomain): AdapterStatusInfo;
46
+ /** Check if adapter is ready */
47
+ declare function useIsAdapterReady(domain: AdapterDomain): boolean;
48
+ /** Access all adapters at once */
49
+ declare function useAdapters(): {
50
+ db: DbAdapter | undefined;
51
+ auth: AuthAdapter | undefined;
52
+ payments: PaymentsAdapter | undefined;
53
+ ai: AiAdapter | undefined;
54
+ storage: FileStorageAdapter | undefined;
55
+ admin: AdminAdapter | undefined;
56
+ statuses: Record<AdapterDomain, AdapterStatusInfo>;
57
+ isLoading: boolean;
58
+ isReady: (domain: AdapterDomain) => boolean;
59
+ };
60
+
61
+ interface AdapterStatusBadgeProps {
62
+ status: AdapterStatusType;
63
+ showLabel?: boolean;
64
+ size?: 'sm' | 'md';
65
+ className?: string;
66
+ }
67
+ declare function AdapterStatusBadge({ status, showLabel, size, className }: AdapterStatusBadgeProps): react_jsx_runtime.JSX.Element;
68
+
69
+ interface AdapterCardProps {
70
+ domain: AdapterDomain;
71
+ status: AdapterStatusInfo;
72
+ onClick?: () => void;
73
+ className?: string;
74
+ }
75
+ declare function AdapterCard({ domain, status, onClick, className }: AdapterCardProps): react_jsx_runtime.JSX.Element;
76
+
77
+ interface AdapterListProps {
78
+ onSelect?: (domain: AdapterDomain) => void;
79
+ filterStatus?: AdapterStatusType;
80
+ className?: string;
81
+ }
82
+ declare function AdapterList({ onSelect, filterStatus, className }: AdapterListProps): react_jsx_runtime.JSX.Element;
83
+
84
+ interface AdapterConfigFormProps {
85
+ domain: AdapterDomain;
86
+ initialConfig?: DomainAdapterConfig;
87
+ onSave: (config: DomainAdapterConfig) => Promise<void> | void;
88
+ onCancel?: () => void;
89
+ className?: string;
90
+ }
91
+ declare function AdapterConfigForm({ domain, initialConfig, onSave, onCancel, className }: AdapterConfigFormProps): react_jsx_runtime.JSX.Element;
92
+
93
+ interface AdaptersPageProps {
94
+ onNavigateDetail?: (domain: AdapterDomain) => void;
95
+ className?: string;
96
+ }
97
+ declare function AdaptersPage({ onNavigateDetail, className }: AdaptersPageProps): react_jsx_runtime.JSX.Element;
98
+
99
+ interface AdapterDetailPageProps {
100
+ domain: AdapterDomain;
101
+ onBack?: () => void;
102
+ className?: string;
103
+ }
104
+ declare function AdapterDetailPage({ domain, onBack, className }: AdapterDetailPageProps): react_jsx_runtime.JSX.Element;
105
+
106
+ export { AdapterCard, type AdapterCardProps, AdapterConfigForm, type AdapterConfigFormProps, type AdapterContextValue, AdapterDetailPage, type AdapterDetailPageProps, AdapterList, type AdapterListProps, AdapterProvider, type AdapterProviderProps, type AdapterSet, AdapterStatusBadge, type AdapterStatusBadgeProps, AdaptersPage, type AdaptersPageProps, useAdapterContext, useAdapterStatus, useAdapterStatuses, useAdapters, useAdmin, useAi, useAuth, useDb, useIsAdapterReady, usePayments, useStorage };