@l4yercak3/cli 1.3.1 → 2.0.0-alpha.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 (357) hide show
  1. package/README.md +10 -220
  2. package/dist/api/client.d.ts +12 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +37 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/platform.d.ts +161 -0
  7. package/dist/api/platform.d.ts.map +1 -0
  8. package/dist/api/platform.js +70 -0
  9. package/dist/api/platform.js.map +1 -0
  10. package/dist/bin/sevenlayers.d.ts +3 -0
  11. package/dist/bin/sevenlayers.d.ts.map +1 -0
  12. package/dist/bin/sevenlayers.js +198 -0
  13. package/dist/bin/sevenlayers.js.map +1 -0
  14. package/dist/commands/agent/catalog.d.ts +5 -0
  15. package/dist/commands/agent/catalog.d.ts.map +1 -0
  16. package/dist/commands/agent/catalog.js +142 -0
  17. package/dist/commands/agent/catalog.js.map +1 -0
  18. package/dist/commands/agent/drift.d.ts +5 -0
  19. package/dist/commands/agent/drift.d.ts.map +1 -0
  20. package/dist/commands/agent/drift.js +113 -0
  21. package/dist/commands/agent/drift.js.map +1 -0
  22. package/dist/commands/agent/init.d.ts +5 -0
  23. package/dist/commands/agent/init.d.ts.map +1 -0
  24. package/dist/commands/agent/init.js +75 -0
  25. package/dist/commands/agent/init.js.map +1 -0
  26. package/dist/commands/agent/permissions.d.ts +5 -0
  27. package/dist/commands/agent/permissions.d.ts.map +1 -0
  28. package/dist/commands/agent/permissions.js +88 -0
  29. package/dist/commands/agent/permissions.js.map +1 -0
  30. package/dist/commands/agent/runner.d.ts +14 -0
  31. package/dist/commands/agent/runner.d.ts.map +1 -0
  32. package/dist/commands/agent/runner.js +59 -0
  33. package/dist/commands/agent/runner.js.map +1 -0
  34. package/dist/commands/agent/shared.d.ts +13 -0
  35. package/dist/commands/agent/shared.d.ts.map +1 -0
  36. package/dist/commands/agent/shared.js +31 -0
  37. package/dist/commands/agent/shared.js.map +1 -0
  38. package/dist/commands/agent/template.d.ts +5 -0
  39. package/dist/commands/agent/template.d.ts.map +1 -0
  40. package/dist/commands/agent/template.js +104 -0
  41. package/dist/commands/agent/template.js.map +1 -0
  42. package/dist/commands/app/connect.d.ts +7 -0
  43. package/dist/commands/app/connect.d.ts.map +1 -0
  44. package/dist/commands/app/connect.js +12 -0
  45. package/dist/commands/app/connect.js.map +1 -0
  46. package/dist/commands/app/init.d.ts +7 -0
  47. package/dist/commands/app/init.d.ts.map +1 -0
  48. package/dist/commands/app/init.js +12 -0
  49. package/dist/commands/app/init.js.map +1 -0
  50. package/dist/commands/app/link.d.ts +3 -0
  51. package/dist/commands/app/link.d.ts.map +1 -0
  52. package/dist/commands/app/link.js +92 -0
  53. package/dist/commands/app/link.js.map +1 -0
  54. package/dist/commands/app/pages.d.ts +15 -0
  55. package/dist/commands/app/pages.d.ts.map +1 -0
  56. package/dist/commands/app/pages.js +180 -0
  57. package/dist/commands/app/pages.js.map +1 -0
  58. package/dist/commands/app/register.d.ts +3 -0
  59. package/dist/commands/app/register.d.ts.map +1 -0
  60. package/dist/commands/app/register.js +120 -0
  61. package/dist/commands/app/register.js.map +1 -0
  62. package/dist/commands/app/remote.d.ts +14 -0
  63. package/dist/commands/app/remote.d.ts.map +1 -0
  64. package/dist/commands/app/remote.js +44 -0
  65. package/dist/commands/app/remote.js.map +1 -0
  66. package/dist/commands/app/setup.d.ts +3 -0
  67. package/dist/commands/app/setup.d.ts.map +1 -0
  68. package/dist/commands/app/setup.js +299 -0
  69. package/dist/commands/app/setup.js.map +1 -0
  70. package/dist/commands/app/shared.d.ts +9 -0
  71. package/dist/commands/app/shared.d.ts.map +1 -0
  72. package/dist/commands/app/shared.js +122 -0
  73. package/dist/commands/app/shared.js.map +1 -0
  74. package/dist/commands/app/sync.d.ts +7 -0
  75. package/dist/commands/app/sync.d.ts.map +1 -0
  76. package/dist/commands/app/sync.js +107 -0
  77. package/dist/commands/app/sync.js.map +1 -0
  78. package/dist/commands/booking/check.d.ts +3 -0
  79. package/dist/commands/booking/check.d.ts.map +1 -0
  80. package/dist/commands/booking/check.js +68 -0
  81. package/dist/commands/booking/check.js.map +1 -0
  82. package/dist/commands/booking/setup.d.ts +3 -0
  83. package/dist/commands/booking/setup.d.ts.map +1 -0
  84. package/dist/commands/booking/setup.js +95 -0
  85. package/dist/commands/booking/setup.js.map +1 -0
  86. package/dist/commands/booking/shared.d.ts +31 -0
  87. package/dist/commands/booking/shared.d.ts.map +1 -0
  88. package/dist/commands/booking/shared.js +112 -0
  89. package/dist/commands/booking/shared.js.map +1 -0
  90. package/dist/commands/booking/smoke.d.ts +3 -0
  91. package/dist/commands/booking/smoke.d.ts.map +1 -0
  92. package/dist/commands/booking/smoke.js +101 -0
  93. package/dist/commands/booking/smoke.js.map +1 -0
  94. package/dist/commands/cms/bind.d.ts +3 -0
  95. package/dist/commands/cms/bind.d.ts.map +1 -0
  96. package/dist/commands/cms/bind.js +212 -0
  97. package/dist/commands/cms/bind.js.map +1 -0
  98. package/dist/commands/cms/content.d.ts +40 -0
  99. package/dist/commands/cms/content.d.ts.map +1 -0
  100. package/dist/commands/cms/content.js +169 -0
  101. package/dist/commands/cms/content.js.map +1 -0
  102. package/dist/commands/cms/doctor.d.ts +3 -0
  103. package/dist/commands/cms/doctor.d.ts.map +1 -0
  104. package/dist/commands/cms/doctor.js +69 -0
  105. package/dist/commands/cms/doctor.js.map +1 -0
  106. package/dist/commands/cms/migrate.d.ts +3 -0
  107. package/dist/commands/cms/migrate.d.ts.map +1 -0
  108. package/dist/commands/cms/migrate.js +78 -0
  109. package/dist/commands/cms/migrate.js.map +1 -0
  110. package/dist/commands/cms/registry.d.ts +3 -0
  111. package/dist/commands/cms/registry.d.ts.map +1 -0
  112. package/dist/commands/cms/registry.js +161 -0
  113. package/dist/commands/cms/registry.js.map +1 -0
  114. package/dist/commands/cms/seed.d.ts +3 -0
  115. package/dist/commands/cms/seed.d.ts.map +1 -0
  116. package/dist/commands/cms/seed.js +102 -0
  117. package/dist/commands/cms/seed.js.map +1 -0
  118. package/dist/commands/cms/shared.d.ts +22 -0
  119. package/dist/commands/cms/shared.d.ts.map +1 -0
  120. package/dist/commands/cms/shared.js +82 -0
  121. package/dist/commands/cms/shared.js.map +1 -0
  122. package/dist/commands/doctor/target.d.ts +3 -0
  123. package/dist/commands/doctor/target.d.ts.map +1 -0
  124. package/dist/commands/doctor/target.js +46 -0
  125. package/dist/commands/doctor/target.js.map +1 -0
  126. package/dist/commands/env/list.d.ts +3 -0
  127. package/dist/commands/env/list.d.ts.map +1 -0
  128. package/dist/commands/env/list.js +28 -0
  129. package/dist/commands/env/list.js.map +1 -0
  130. package/dist/commands/env/set.d.ts +3 -0
  131. package/dist/commands/env/set.d.ts.map +1 -0
  132. package/dist/commands/env/set.js +36 -0
  133. package/dist/commands/env/set.js.map +1 -0
  134. package/dist/commands/env/use.d.ts +3 -0
  135. package/dist/commands/env/use.d.ts.map +1 -0
  136. package/dist/commands/env/use.js +15 -0
  137. package/dist/commands/env/use.js.map +1 -0
  138. package/dist/commands/legacy/connect.d.ts +3 -0
  139. package/dist/commands/legacy/connect.d.ts.map +1 -0
  140. package/dist/commands/legacy/connect.js +8 -0
  141. package/dist/commands/legacy/connect.js.map +1 -0
  142. package/dist/commands/legacy/pages.d.ts +3 -0
  143. package/dist/commands/legacy/pages.d.ts.map +1 -0
  144. package/dist/commands/legacy/pages.js +16 -0
  145. package/dist/commands/legacy/pages.js.map +1 -0
  146. package/dist/commands/legacy/spread.d.ts +3 -0
  147. package/dist/commands/legacy/spread.d.ts.map +1 -0
  148. package/dist/commands/legacy/spread.js +8 -0
  149. package/dist/commands/legacy/spread.js.map +1 -0
  150. package/dist/commands/legacy/sync.d.ts +3 -0
  151. package/dist/commands/legacy/sync.d.ts.map +1 -0
  152. package/dist/commands/legacy/sync.js +8 -0
  153. package/dist/commands/legacy/sync.js.map +1 -0
  154. package/dist/config/env-diff.d.ts +10 -0
  155. package/dist/config/env-diff.d.ts.map +1 -0
  156. package/dist/config/env-diff.js +24 -0
  157. package/dist/config/env-diff.js.map +1 -0
  158. package/dist/config/env-parser.d.ts +20 -0
  159. package/dist/config/env-parser.d.ts.map +1 -0
  160. package/dist/config/env-parser.js +70 -0
  161. package/dist/config/env-parser.js.map +1 -0
  162. package/dist/config/env-writer.d.ts +22 -0
  163. package/dist/config/env-writer.d.ts.map +1 -0
  164. package/dist/config/env-writer.js +172 -0
  165. package/dist/config/env-writer.js.map +1 -0
  166. package/dist/config/profile-store.d.ts +29 -0
  167. package/dist/config/profile-store.d.ts.map +1 -0
  168. package/dist/config/profile-store.js +257 -0
  169. package/dist/config/profile-store.js.map +1 -0
  170. package/dist/core/args.d.ts +11 -0
  171. package/dist/core/args.d.ts.map +1 -0
  172. package/dist/core/args.js +106 -0
  173. package/dist/core/args.js.map +1 -0
  174. package/dist/core/colors.d.ts +6 -0
  175. package/dist/core/colors.d.ts.map +1 -0
  176. package/dist/core/colors.js +29 -0
  177. package/dist/core/colors.js.map +1 -0
  178. package/dist/safety/target-guard.d.ts +16 -0
  179. package/dist/safety/target-guard.d.ts.map +1 -0
  180. package/dist/safety/target-guard.js +55 -0
  181. package/dist/safety/target-guard.js.map +1 -0
  182. package/dist/testing/booking-smoke.d.ts +17 -0
  183. package/dist/testing/booking-smoke.d.ts.map +1 -0
  184. package/dist/testing/booking-smoke.js +43 -0
  185. package/dist/testing/booking-smoke.js.map +1 -0
  186. package/dist/tests/agent-commands.test.d.ts +2 -0
  187. package/dist/tests/agent-commands.test.d.ts.map +1 -0
  188. package/dist/tests/agent-commands.test.js +180 -0
  189. package/dist/tests/agent-commands.test.js.map +1 -0
  190. package/dist/tests/agent-governance.test.d.ts +2 -0
  191. package/dist/tests/agent-governance.test.d.ts.map +1 -0
  192. package/dist/tests/agent-governance.test.js +233 -0
  193. package/dist/tests/agent-governance.test.js.map +1 -0
  194. package/dist/tests/app-commands.test.d.ts +2 -0
  195. package/dist/tests/app-commands.test.d.ts.map +1 -0
  196. package/dist/tests/app-commands.test.js +462 -0
  197. package/dist/tests/app-commands.test.js.map +1 -0
  198. package/dist/tests/booking-commands.test.d.ts +2 -0
  199. package/dist/tests/booking-commands.test.d.ts.map +1 -0
  200. package/dist/tests/booking-commands.test.js +204 -0
  201. package/dist/tests/booking-commands.test.js.map +1 -0
  202. package/dist/tests/booking-smoke.test.d.ts +2 -0
  203. package/dist/tests/booking-smoke.test.d.ts.map +1 -0
  204. package/dist/tests/booking-smoke.test.js +183 -0
  205. package/dist/tests/booking-smoke.test.js.map +1 -0
  206. package/dist/tests/cms-commands.test.d.ts +2 -0
  207. package/dist/tests/cms-commands.test.d.ts.map +1 -0
  208. package/dist/tests/cms-commands.test.js +254 -0
  209. package/dist/tests/cms-commands.test.js.map +1 -0
  210. package/dist/tests/cms-ops.test.d.ts +2 -0
  211. package/dist/tests/cms-ops.test.d.ts.map +1 -0
  212. package/dist/tests/cms-ops.test.js +125 -0
  213. package/dist/tests/cms-ops.test.js.map +1 -0
  214. package/dist/tests/env-writer.test.d.ts +2 -0
  215. package/dist/tests/env-writer.test.d.ts.map +1 -0
  216. package/dist/tests/env-writer.test.js +90 -0
  217. package/dist/tests/env-writer.test.js.map +1 -0
  218. package/dist/tests/profile-store.test.d.ts +2 -0
  219. package/dist/tests/profile-store.test.d.ts.map +1 -0
  220. package/dist/tests/profile-store.test.js +88 -0
  221. package/dist/tests/profile-store.test.js.map +1 -0
  222. package/dist/tests/target-guard.test.d.ts +2 -0
  223. package/dist/tests/target-guard.test.d.ts.map +1 -0
  224. package/dist/tests/target-guard.test.js +132 -0
  225. package/dist/tests/target-guard.test.js.map +1 -0
  226. package/dist/ui/logo.d.ts +2 -0
  227. package/dist/ui/logo.d.ts.map +1 -0
  228. package/dist/ui/logo.js +22 -0
  229. package/dist/ui/logo.js.map +1 -0
  230. package/package.json +17 -53
  231. package/.claude/settings.local.json +0 -36
  232. package/.cursor/rules.md +0 -203
  233. package/.eslintrc.js +0 -31
  234. package/CLAUDE.md +0 -100
  235. package/bin/cli.js +0 -116
  236. package/docs/ADDING_FRAMEWORK_DETECTORS.md +0 -391
  237. package/docs/ADDING_NEW_PROJECT_TYPE.md +0 -156
  238. package/docs/ARCHITECTURE_RELATIONSHIPS.md +0 -411
  239. package/docs/CLI_AUTHENTICATION.md +0 -214
  240. package/docs/CLI_PAGE_DETECTION_REQUIREMENTS.md +0 -519
  241. package/docs/CRM-PIPELINES-SEQUENCES-SPEC.md +0 -429
  242. package/docs/DETECTOR_ARCHITECTURE.md +0 -326
  243. package/docs/DEVELOPMENT.md +0 -194
  244. package/docs/IMPLEMENTATION_PHASES.md +0 -468
  245. package/docs/INTEGRATION_PATHS_ARCHITECTURE.md +0 -1543
  246. package/docs/OAUTH_CLARIFICATION.md +0 -258
  247. package/docs/OAUTH_SETUP_GUIDE_TEMPLATE.md +0 -211
  248. package/docs/PHASE_0_PROGRESS.md +0 -120
  249. package/docs/PHASE_1_COMPLETE.md +0 -366
  250. package/docs/PHASE_SUMMARY.md +0 -149
  251. package/docs/PLAN.md +0 -511
  252. package/docs/README.md +0 -56
  253. package/docs/STRIPE_INTEGRATION.md +0 -447
  254. package/docs/SUMMARY.md +0 -230
  255. package/docs/UPDATED_PLAN.md +0 -447
  256. package/docs/mcp_server/MCP_EXTENSION_GUIDE.md +0 -1313
  257. package/docs/mcp_server/MCP_SERVER_ARCHITECTURE.md +0 -1481
  258. package/docs/mcp_server/applicationOntology.ts +0 -817
  259. package/docs/mcp_server/cliApplications.ts +0 -639
  260. package/docs/mcp_server/crmOntology.ts +0 -1063
  261. package/docs/mcp_server/eventOntology.ts +0 -1183
  262. package/docs/mcp_server/formsOntology.ts +0 -1401
  263. package/docs/mcp_server/ontologySchemas.ts +0 -185
  264. package/docs/mcp_server/schema.ts +0 -250
  265. package/docs/microsass_production_machine/CLI_API_REFERENCE.md +0 -1197
  266. package/docs/microsass_production_machine/CLI_PRODUCT_VISION.md +0 -676
  267. package/docs/microsass_production_machine/CLI_REQUIREMENTS.md +0 -606
  268. package/docs/microsass_production_machine/CONNECTED_APPLICATIONS_SPEC.md +0 -390
  269. package/docs/microsass_production_machine/IMPLEMENTATION_ROADMAP.md +0 -725
  270. package/docs/microsass_production_machine/OBJECT_MAPPINGS.md +0 -808
  271. package/docs/microsass_production_machine/REFERENCE_IMPLEMENTATION.md +0 -532
  272. package/src/api/backend-client.js +0 -449
  273. package/src/commands/api-keys.js +0 -119
  274. package/src/commands/connect.js +0 -243
  275. package/src/commands/login.js +0 -332
  276. package/src/commands/logout.js +0 -30
  277. package/src/commands/mcp-server.js +0 -85
  278. package/src/commands/mcp-setup.js +0 -686
  279. package/src/commands/pages.js +0 -317
  280. package/src/commands/scaffold.js +0 -409
  281. package/src/commands/spread.js +0 -861
  282. package/src/commands/status.js +0 -62
  283. package/src/commands/sync.js +0 -169
  284. package/src/commands/upgrade.js +0 -48
  285. package/src/config/config-manager.js +0 -206
  286. package/src/detectors/api-client-detector.js +0 -85
  287. package/src/detectors/base-detector.js +0 -77
  288. package/src/detectors/database-detector.js +0 -245
  289. package/src/detectors/expo-detector.js +0 -166
  290. package/src/detectors/github-detector.js +0 -74
  291. package/src/detectors/index.js +0 -106
  292. package/src/detectors/mapping-suggestor.js +0 -119
  293. package/src/detectors/model-detector.js +0 -318
  294. package/src/detectors/nextjs-detector.js +0 -139
  295. package/src/detectors/oauth-detector.js +0 -122
  296. package/src/detectors/page-detector.js +0 -480
  297. package/src/detectors/registry.js +0 -121
  298. package/src/generators/api-client-generator.js +0 -223
  299. package/src/generators/api-only/client.js +0 -683
  300. package/src/generators/api-only/index.js +0 -96
  301. package/src/generators/api-only/types.js +0 -618
  302. package/src/generators/api-only/webhooks.js +0 -377
  303. package/src/generators/env-generator.js +0 -191
  304. package/src/generators/expo-auth-generator.js +0 -1009
  305. package/src/generators/gitignore-generator.js +0 -92
  306. package/src/generators/index.js +0 -166
  307. package/src/generators/manifest-generator.js +0 -154
  308. package/src/generators/mcp-guide-generator.js +0 -256
  309. package/src/generators/nextauth-generator.js +0 -247
  310. package/src/generators/oauth-guide-generator.js +0 -277
  311. package/src/generators/quickstart/components/index.js +0 -1699
  312. package/src/generators/quickstart/components-mobile/index.js +0 -1440
  313. package/src/generators/quickstart/database/convex.js +0 -1257
  314. package/src/generators/quickstart/database/index.js +0 -34
  315. package/src/generators/quickstart/database/supabase.js +0 -1132
  316. package/src/generators/quickstart/hooks/index.js +0 -1065
  317. package/src/generators/quickstart/index.js +0 -191
  318. package/src/generators/quickstart/pages/index.js +0 -1466
  319. package/src/generators/quickstart/screens/index.js +0 -1498
  320. package/src/logo.js +0 -116
  321. package/src/mcp/auth.js +0 -127
  322. package/src/mcp/registry/domains/applications.js +0 -516
  323. package/src/mcp/registry/domains/benefits.js +0 -798
  324. package/src/mcp/registry/domains/codegen.js +0 -894
  325. package/src/mcp/registry/domains/core.js +0 -324
  326. package/src/mcp/registry/domains/crm.js +0 -591
  327. package/src/mcp/registry/domains/events.js +0 -649
  328. package/src/mcp/registry/domains/forms.js +0 -696
  329. package/src/mcp/registry/index.js +0 -164
  330. package/src/mcp/server.js +0 -116
  331. package/src/utils/file-utils.js +0 -117
  332. package/src/utils/init-helpers.js +0 -243
  333. package/src/utils/prompt-utils.js +0 -195
  334. package/templates/CLAUDE.md +0 -86
  335. package/tests/api-client-detector.test.js +0 -214
  336. package/tests/api-client-generator.test.js +0 -176
  337. package/tests/backend-client.test.js +0 -640
  338. package/tests/base-detector.test.js +0 -101
  339. package/tests/commands/login.test.js +0 -143
  340. package/tests/commands/logout.test.js +0 -84
  341. package/tests/commands/status.test.js +0 -167
  342. package/tests/config-manager.test.js +0 -321
  343. package/tests/database-detector.test.js +0 -221
  344. package/tests/detector-index.test.js +0 -209
  345. package/tests/detector-registry.test.js +0 -93
  346. package/tests/env-generator.test.js +0 -278
  347. package/tests/expo-detector.test.js +0 -263
  348. package/tests/file-utils.test.js +0 -194
  349. package/tests/generators-index.test.js +0 -454
  350. package/tests/github-detector.test.js +0 -145
  351. package/tests/gitignore-generator.test.js +0 -109
  352. package/tests/logo.test.js +0 -96
  353. package/tests/nextauth-generator.test.js +0 -255
  354. package/tests/nextjs-detector.test.js +0 -235
  355. package/tests/oauth-detector.test.js +0 -264
  356. package/tests/oauth-guide-generator.test.js +0 -273
  357. package/tests/page-detector.test.js +0 -371
@@ -1,390 +0,0 @@
1
- # Connected Applications - Schema Specification
2
-
3
- ## Overview
4
-
5
- The `connected_application` object type represents an external application connected to L4YERCAK3 via CLI or boilerplate deployment. It's the **parent container** that ties together API connections, model mappings, deployments, and published pages.
6
-
7
- ---
8
-
9
- ## Object Type: `connected_application`
10
-
11
- ### Base Structure (in `objects` table)
12
-
13
- ```typescript
14
- {
15
- _id: Id<"objects">,
16
- organizationId: Id<"organizations">,
17
- type: "connected_application",
18
- subtype: "cli" | "boilerplate" | "manual",
19
- name: string, // "HaffNet Medical Platform"
20
- description: string, // "CME course registration platform"
21
- status: "active" | "paused" | "disconnected" | "archived",
22
- customProperties: ConnectedApplicationProperties,
23
- createdBy: Id<"users">,
24
- createdAt: number,
25
- updatedAt: number,
26
- }
27
- ```
28
-
29
- ### Custom Properties
30
-
31
- ```typescript
32
- interface ConnectedApplicationProperties {
33
- // ========================================
34
- // SOURCE: Where the app comes from
35
- // ========================================
36
- source: {
37
- type: "cli" | "boilerplate" | "manual";
38
-
39
- // CLI-specific
40
- projectPathHash?: string; // SHA256 of local project path (for identification)
41
- cliVersion?: string; // CLI version that registered this app
42
-
43
- // Boilerplate-specific
44
- boilerplateId?: string; // "freelancer-portal", "event-landing", etc.
45
- boilerplateVersion?: string; // Version of boilerplate used
46
-
47
- // Framework detection
48
- framework: string; // "nextjs", "remix", "astro", etc.
49
- frameworkVersion?: string; // "16.0.0"
50
- hasTypeScript: boolean;
51
- routerType?: "app" | "pages"; // For Next.js
52
- };
53
-
54
- // ========================================
55
- // CONNECTION: How app talks to L4YERCAK3
56
- // ========================================
57
- connection: {
58
- apiKeyId?: Id<"apiKeys">; // Reference to API key used
59
- apiKeyPrefix?: string; // "sk_live_xxx..." for display
60
- backendUrl: string; // "https://app.l4yercak3.com"
61
-
62
- // Features enabled for this app
63
- features: Array<
64
- | "crm"
65
- | "events"
66
- | "products"
67
- | "checkout"
68
- | "tickets"
69
- | "invoicing"
70
- | "forms"
71
- | "projects"
72
- | "workflows"
73
- | "templates"
74
- | "ai"
75
- >;
76
-
77
- // Dual-database pattern (like HaffNet)
78
- hasFrontendDatabase: boolean;
79
- frontendDatabaseType?: "convex" | "prisma" | "drizzle" | "other";
80
- frontendDatabaseUrl?: string; // For reference only, not stored
81
- };
82
-
83
- // ========================================
84
- // MODEL MAPPINGS: How app models map to L4YERCAK3
85
- // ========================================
86
- modelMappings: Array<{
87
- localModel: string; // "User", "Company", "Event"
88
- layerCakeType: string; // "contact", "crm_organization", "event"
89
- syncDirection: "push" | "pull" | "bidirectional" | "none";
90
- confidence: number; // 0-100, from CLI detection
91
- isAutoDetected: boolean; // true if CLI detected, false if manual
92
- fieldMappings: Array<{
93
- localField: string; // "email", "firstName"
94
- layerCakeField: string; // "email", "customProperties.firstName"
95
- transform?: string; // Optional transform expression
96
- }>;
97
- }>;
98
-
99
- // ========================================
100
- // DEPLOYMENT: Where app is deployed
101
- // ========================================
102
- deployment: {
103
- // Links to deployment system (Phase 1-2 work)
104
- configurationId?: Id<"objects">; // deployment_configuration object
105
-
106
- // Quick access URLs
107
- productionUrl?: string; // "https://haffnet.vercel.app"
108
- stagingUrl?: string; // "https://staging.haffnet.vercel.app"
109
- localDevUrl?: string; // "http://localhost:3000"
110
-
111
- // GitHub repo
112
- githubRepo?: string; // "owner/repo"
113
- githubBranch?: string; // "main"
114
-
115
- // Deployment status
116
- deploymentStatus: "not_deployed" | "deploying" | "deployed" | "failed";
117
- lastDeployedAt?: number;
118
- };
119
-
120
- // ========================================
121
- // PAGES: Published pages owned by this app
122
- // ========================================
123
- pageIds: Array<Id<"objects">>; // References to published_page objects
124
-
125
- // ========================================
126
- // SYNC STATUS: Data synchronization state
127
- // ========================================
128
- sync: {
129
- enabled: boolean;
130
- lastSyncAt?: number;
131
- lastSyncDirection?: "push" | "pull" | "bidirectional";
132
- lastSyncStatus?: "success" | "partial" | "failed";
133
-
134
- // Per-model sync stats
135
- stats: Record<string, { // Keyed by layerCakeType
136
- totalRecords: number;
137
- syncedRecords: number;
138
- lastSyncAt: number;
139
- errors: number;
140
- lastError?: string;
141
- }>;
142
- };
143
-
144
- // ========================================
145
- // CLI METADATA
146
- // ========================================
147
- cli: {
148
- registeredAt: number; // When CLI first registered this app
149
- registeredBy?: Id<"users">; // User who ran CLI
150
- lastActivityAt: number; // Last CLI command for this app
151
- cliSessionId?: string; // Current/last CLI session
152
-
153
- // Generated files tracking
154
- generatedFiles: Array<{
155
- path: string; // "src/lib/layercake.ts"
156
- type: string; // "api-client", "types", "env"
157
- generatedAt: number;
158
- hash?: string; // For change detection
159
- }>;
160
- };
161
- }
162
- ```
163
-
164
- ---
165
-
166
- ## Object Links
167
-
168
- ### Application → API Key
169
- ```typescript
170
- {
171
- fromObjectId: applicationId,
172
- toObjectId: apiKeyId, // In apiKeys table, not objects
173
- linkType: "uses_api_key",
174
- organizationId,
175
- properties: {
176
- linkedAt: number,
177
- }
178
- }
179
- ```
180
-
181
- ### Application → Published Pages
182
- ```typescript
183
- {
184
- fromObjectId: applicationId,
185
- toObjectId: publishedPageId,
186
- linkType: "owns_page",
187
- organizationId,
188
- properties: {
189
- addedAt: number,
190
- }
191
- }
192
- ```
193
-
194
- ### Application → Deployment Configuration
195
- ```typescript
196
- {
197
- fromObjectId: applicationId,
198
- toObjectId: deploymentConfigId,
199
- linkType: "deploys_via",
200
- organizationId,
201
- properties: {
202
- environment: "production" | "staging",
203
- }
204
- }
205
- ```
206
-
207
- ---
208
-
209
- ## Convex Functions Required
210
-
211
- ### Mutations
212
-
213
- ```typescript
214
- // Register new application (called by CLI)
215
- registerConnectedApplication(args: {
216
- token: string, // CLI session token
217
- organizationId: Id<"organizations">,
218
- name: string,
219
- source: SourceConfig,
220
- connection: ConnectionConfig,
221
- modelMappings?: ModelMapping[],
222
- deployment?: DeploymentConfig,
223
- }): Promise<{
224
- applicationId: Id<"objects">,
225
- apiKeyId?: Id<"apiKeys">, // If new key was generated
226
- }>
227
-
228
- // Update application (called by CLI on re-run)
229
- updateConnectedApplication(args: {
230
- token: string,
231
- applicationId: Id<"objects">,
232
- updates: Partial<ConnectedApplicationProperties>,
233
- }): Promise<void>
234
-
235
- // Update sync status (called after sync operations)
236
- updateApplicationSyncStatus(args: {
237
- token: string,
238
- applicationId: Id<"objects">,
239
- syncResult: SyncResult,
240
- }): Promise<void>
241
-
242
- // Pause/resume application
243
- setApplicationStatus(args: {
244
- sessionId: string,
245
- applicationId: Id<"objects">,
246
- status: "active" | "paused",
247
- }): Promise<void>
248
-
249
- // Disconnect application (soft delete)
250
- disconnectApplication(args: {
251
- sessionId: string,
252
- applicationId: Id<"objects">,
253
- }): Promise<void>
254
-
255
- // Link page to application
256
- linkPageToApplication(args: {
257
- sessionId: string,
258
- applicationId: Id<"objects">,
259
- pageId: Id<"objects">,
260
- }): Promise<void>
261
- ```
262
-
263
- ### Queries
264
-
265
- ```typescript
266
- // List all applications for org (for Web Publishing UI)
267
- getConnectedApplications(args: {
268
- sessionId: string,
269
- organizationId: Id<"organizations">,
270
- status?: string,
271
- }): Promise<ConnectedApplication[]>
272
-
273
- // Get single application with full details
274
- getConnectedApplication(args: {
275
- sessionId: string,
276
- applicationId: Id<"objects">,
277
- }): Promise<ConnectedApplication | null>
278
-
279
- // Get application by project path hash (for CLI to find existing)
280
- getApplicationByPathHash(args: {
281
- token: string,
282
- organizationId: Id<"organizations">,
283
- projectPathHash: string,
284
- }): Promise<ConnectedApplication | null>
285
-
286
- // Get applications using specific API key
287
- getApplicationsByApiKey(args: {
288
- sessionId: string,
289
- apiKeyId: Id<"apiKeys">,
290
- }): Promise<ConnectedApplication[]>
291
- ```
292
-
293
- ---
294
-
295
- ## REST API Endpoints
296
-
297
- ### For CLI
298
-
299
- ```
300
- POST /api/v1/cli/applications - Register application
301
- GET /api/v1/cli/applications - List applications
302
- GET /api/v1/cli/applications/:id - Get application
303
- PATCH /api/v1/cli/applications/:id - Update application
304
- DELETE /api/v1/cli/applications/:id - Disconnect application
305
- POST /api/v1/cli/applications/:id/sync - Trigger/report sync
306
- GET /api/v1/cli/applications/by-path - Find by project path hash
307
- ```
308
-
309
- ### Authentication
310
-
311
- All CLI endpoints use Bearer token authentication:
312
- ```
313
- Authorization: Bearer cli_session_xxx
314
- ```
315
-
316
- ---
317
-
318
- ## Web Publishing UI Changes
319
-
320
- ### New "Applications" Tab
321
-
322
- Position: First tab (before Pages)
323
-
324
- **Content:**
325
- - List of connected applications with:
326
- - Name & framework icon
327
- - Status badge (active/paused/disconnected)
328
- - Features enabled (icons)
329
- - Last sync time
330
- - Production URL (if deployed)
331
- - Quick actions: View, Pause, Settings, Disconnect
332
-
333
- **Empty State:**
334
- - "No applications connected"
335
- - "Use the L4YERCAK3 CLI to connect an external app, or deploy a boilerplate"
336
- - Buttons: "CLI Documentation", "Deploy Boilerplate"
337
-
338
- ### Application Detail View
339
-
340
- When clicking an application:
341
- - **Overview Tab**: Status, URLs, features, last activity
342
- - **Model Mappings Tab**: Visual mapping table
343
- - **Sync Tab**: Sync status, stats, manual sync button
344
- - **Pages Tab**: Published pages owned by this app
345
- - **Settings Tab**: Edit name, features, deployment config
346
- - **Logs Tab**: Recent CLI activity, sync history
347
-
348
- ---
349
-
350
- ## Integration with Existing Systems
351
-
352
- ### With API Keys (`apiKeys` table)
353
- - Application references API key via `connection.apiKeyId`
354
- - Can query "which apps use this key"
355
- - Revoking key should warn about connected apps
356
-
357
- ### With Published Pages (`published_page` objects)
358
- - Pages can belong to an application via `pageIds` array
359
- - Page detail shows parent application (if any)
360
- - Deleting app can optionally delete pages
361
-
362
- ### With Deployment System (`deployment_configuration` objects)
363
- - Application links to deployment config
364
- - Shares GitHub/Vercel settings
365
- - Deployment status synced
366
-
367
- ### With CLI Sessions (`cliSessions` table)
368
- - Application tracks which CLI session registered it
369
- - Last activity updates on CLI commands
370
- - Session expiry doesn't disconnect app
371
-
372
- ---
373
-
374
- ## Migration Strategy
375
-
376
- 1. **No existing data to migrate** - This is a new object type
377
- 2. **Backward compatible** - Existing pages/deployments continue to work
378
- 3. **Optional adoption** - Apps without CLI still function
379
- 4. **Gradual rollout** - UI can show "Applications" tab only when apps exist
380
-
381
- ---
382
-
383
- ## Success Criteria
384
-
385
- - [ ] CLI can register application and see it in Web Publishing
386
- - [ ] Web Publishing shows all connected applications
387
- - [ ] Model mappings visible and editable
388
- - [ ] Sync status accurately reflects last CLI sync
389
- - [ ] Disconnecting app doesn't break existing pages
390
- - [ ] API key relationship bidirectional (key → apps, app → key)