@l4yercak3/cli 1.3.2 → 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 -253
  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
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = __importDefault(require("node:test"));
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const args_1 = require("../core/args");
12
+ const profile_store_1 = require("../config/profile-store");
13
+ const target_guard_1 = require("../safety/target-guard");
14
+ async function withTempDir(run) {
15
+ const directory = await promises_1.default.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), "sevenlayers-target-guard-"));
16
+ try {
17
+ await run(directory);
18
+ }
19
+ finally {
20
+ await promises_1.default.rm(directory, { recursive: true, force: true });
21
+ }
22
+ }
23
+ (0, node_test_1.default)("target guard resolves tuple from active profile defaults", async () => {
24
+ await withTempDir(async (directory) => {
25
+ const storePath = node_path_1.default.join(directory, "profiles.json");
26
+ await (0, profile_store_1.upsertProfile)({
27
+ name: "staging",
28
+ backendUrl: "https://staging.convex.site",
29
+ appUrl: "",
30
+ defaultOrgId: "org_staging",
31
+ defaultAppId: "app_staging",
32
+ requiresConfirmation: false
33
+ }, { filePath: storePath });
34
+ const parsed = (0, args_1.parseArgv)(["app", "init", "--env", "staging"]);
35
+ const context = await (0, target_guard_1.resolveTargetContext)(parsed, {
36
+ requireOrgApp: true,
37
+ mutatingCommand: true,
38
+ profileStorePath: storePath
39
+ });
40
+ strict_1.default.equal(context.profileName, "staging");
41
+ strict_1.default.equal(context.backendUrl, "https://staging.convex.site");
42
+ strict_1.default.equal(context.orgId, "org_staging");
43
+ strict_1.default.equal(context.appId, "app_staging");
44
+ });
45
+ });
46
+ (0, node_test_1.default)("target guard rejects profile mismatch without override", async () => {
47
+ await withTempDir(async (directory) => {
48
+ const storePath = node_path_1.default.join(directory, "profiles.json");
49
+ await (0, profile_store_1.upsertProfile)({
50
+ name: "staging",
51
+ backendUrl: "https://staging.convex.site",
52
+ appUrl: "",
53
+ defaultOrgId: "org_staging",
54
+ defaultAppId: "app_staging",
55
+ requiresConfirmation: false
56
+ }, { filePath: storePath });
57
+ const parsed = (0, args_1.parseArgv)([
58
+ "app",
59
+ "init",
60
+ "--env",
61
+ "staging",
62
+ "--org-id",
63
+ "other_org"
64
+ ]);
65
+ await strict_1.default.rejects(() => (0, target_guard_1.resolveTargetContext)(parsed, {
66
+ requireOrgApp: true,
67
+ mutatingCommand: true,
68
+ profileStorePath: storePath
69
+ }), /mismatch/);
70
+ });
71
+ });
72
+ (0, node_test_1.default)("target guard requires explicit confirmation for prod", async () => {
73
+ await withTempDir(async (directory) => {
74
+ const storePath = node_path_1.default.join(directory, "profiles.json");
75
+ await (0, profile_store_1.upsertProfile)({
76
+ name: "prod",
77
+ backendUrl: "https://prod.convex.site",
78
+ appUrl: "",
79
+ defaultOrgId: "org_prod",
80
+ defaultAppId: "app_prod",
81
+ requiresConfirmation: true
82
+ }, { filePath: storePath });
83
+ const unsafe = (0, args_1.parseArgv)(["app", "connect", "--env", "prod"]);
84
+ await strict_1.default.rejects(() => (0, target_guard_1.resolveTargetContext)(unsafe, {
85
+ requireOrgApp: true,
86
+ mutatingCommand: true,
87
+ profileStorePath: storePath
88
+ }), /requires confirmation/);
89
+ const safe = (0, args_1.parseArgv)([
90
+ "app",
91
+ "connect",
92
+ "--env",
93
+ "prod",
94
+ "--yes",
95
+ "--confirm-prod",
96
+ "PROD"
97
+ ]);
98
+ const context = await (0, target_guard_1.resolveTargetContext)(safe, {
99
+ requireOrgApp: true,
100
+ mutatingCommand: true,
101
+ profileStorePath: storePath
102
+ });
103
+ strict_1.default.equal(context.profileName, "prod");
104
+ });
105
+ });
106
+ (0, node_test_1.default)("target guard rejects backend-url override and requires profile-defined URL", async () => {
107
+ await withTempDir(async (directory) => {
108
+ const storePath = node_path_1.default.join(directory, "profiles.json");
109
+ await (0, profile_store_1.upsertProfile)({
110
+ name: "staging",
111
+ backendUrl: "https://staging.convex.site",
112
+ appUrl: "",
113
+ defaultOrgId: "org_staging",
114
+ defaultAppId: "app_staging",
115
+ requiresConfirmation: false
116
+ }, { filePath: storePath });
117
+ const parsed = (0, args_1.parseArgv)([
118
+ "app",
119
+ "connect",
120
+ "--env",
121
+ "staging",
122
+ "--backend-url",
123
+ "https://override.convex.site"
124
+ ]);
125
+ await strict_1.default.rejects(() => (0, target_guard_1.resolveTargetContext)(parsed, {
126
+ requireOrgApp: true,
127
+ mutatingCommand: true,
128
+ profileStorePath: storePath
129
+ }), /backend-url override is disabled/);
130
+ });
131
+ });
132
+ //# sourceMappingURL=target-guard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-guard.test.js","sourceRoot":"","sources":["../../src/tests/target-guard.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderLogo(): string;
2
+ //# sourceMappingURL=logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/ui/logo.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderLogo = renderLogo;
4
+ const colors_1 = require("../core/colors");
5
+ const LOGO_LINES = [
6
+ "███████╗███████╗██╗ ██╗███████╗███╗ ██╗██╗ █████╗ ██╗ ██╗███████╗██████╗ ███████╗",
7
+ "██╔════╝██╔════╝██║ ██║██╔════╝████╗ ██║██║ ██╔══██╗╚██╗ ██╔╝██╔════╝██╔══██╗██╔════╝",
8
+ "███████╗█████╗ ██║ ██║█████╗ ██╔██╗ ██║██║ ███████║ ╚████╔╝ █████╗ ██████╔╝███████╗",
9
+ "╚════██║██╔══╝ ╚██╗ ██╔╝██╔══╝ ██║╚██╗██║██║ ██╔══██║ ╚██╔╝ ██╔══╝ ██╔══██╗╚════██║",
10
+ "███████║███████╗ ╚████╔╝ ███████╗██║ ╚████║███████╗██║ ██║ ██║ ███████╗██║ ██║███████║",
11
+ "╚══════╝╚══════╝ ╚═══╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝"
12
+ ];
13
+ function renderLogo() {
14
+ return [
15
+ "",
16
+ (0, colors_1.colorOrangeStrong)(LOGO_LINES[0]),
17
+ ...LOGO_LINES.slice(1).map((line) => (0, colors_1.colorOrange)(line)),
18
+ (0, colors_1.colorOrange)(" Rebuilt CLI foundation for safe platform integration"),
19
+ ""
20
+ ].join("\n");
21
+ }
22
+ //# sourceMappingURL=logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/ui/logo.ts"],"names":[],"mappings":";;AAWA,gCAQC;AAnBD,2CAAgE;AAEhE,MAAM,UAAU,GAAG;IACjB,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;CAC/F,CAAC;AAEF,SAAgB,UAAU;IACxB,OAAO;QACL,EAAE;QACF,IAAA,0BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QACvD,IAAA,oBAAW,EAAC,kEAAkE,CAAC;QAC/E,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,62 +1,26 @@
1
1
  {
2
2
  "name": "@l4yercak3/cli",
3
- "version": "1.3.2",
4
- "description": "Icing on the L4yercak3 - The sweet finishing touch for your Layer Cake integration",
5
- "main": "src/index.js",
3
+ "version": "2.0.0-alpha.0",
4
+ "description": "SevenLayers CLI for app wiring, CMS, booking, and agent setup",
5
+ "author": "SevenLayers",
6
+ "license": "MIT",
6
7
  "bin": {
7
- "l4yercak3": "bin/cli.js",
8
- "icing": "bin/cli.js"
9
- },
10
- "scripts": {
11
- "start": "node bin/cli.js",
12
- "test": "jest",
13
- "test:watch": "jest --watch",
14
- "test:coverage": "jest --coverage",
15
- "lint": "eslint . --ext .js",
16
- "lint:fix": "eslint . --ext .js --fix",
17
- "type-check": "node --check bin/cli.js && node --check src/logo.js",
18
- "build": "echo \"Build check: verifying package structure\" && node -e \"console.log('✅ Package structure valid')\"",
19
- "verify": "npm run lint && npm run type-check && npm run test && npm run build",
20
- "prepublishOnly": "npm run verify"
21
- },
22
- "jest": {
23
- "testEnvironment": "node",
24
- "testMatch": [
25
- "**/tests/**/*.test.js"
26
- ],
27
- "collectCoverageFrom": [
28
- "src/**/*.js"
29
- ],
30
- "coveragePathIgnorePatterns": [
31
- "/node_modules/"
32
- ]
8
+ "sevenlayers": "dist/bin/sevenlayers.js",
9
+ "l4yercak3": "dist/bin/sevenlayers.js",
10
+ "icing": "dist/bin/sevenlayers.js"
33
11
  },
34
- "keywords": [
35
- "l4yercak3",
36
- "layer-cake",
37
- "cli",
38
- "backend",
39
- "platform",
40
- "integration",
41
- "mcp",
42
- "claude-code"
12
+ "files": [
13
+ "dist",
14
+ "README.md"
43
15
  ],
44
- "author": "",
45
- "license": "MIT",
46
- "dependencies": {
47
- "@modelcontextprotocol/sdk": "^1.0.0",
48
- "chalk": "^4.1.2",
49
- "commander": "^14.0.2",
50
- "figlet": "^1.7.0",
51
- "inquirer": "^8.2.6",
52
- "node-fetch": "^2.7.0",
53
- "open": "^11.0.0"
54
- },
55
- "devDependencies": {
56
- "eslint": "^8.57.0",
57
- "jest": "^30.2.0"
16
+ "scripts": {
17
+ "build": "tsc -p tsconfig.build.json",
18
+ "clean": "rm -rf dist",
19
+ "typecheck": "tsc --noEmit",
20
+ "test": "node --test dist/tests/**/*.test.js",
21
+ "prepublishOnly": "npm run clean && npm run build && npm run test"
58
22
  },
59
23
  "engines": {
60
- "node": ">=14.0.0"
24
+ "node": ">=18.0.0"
61
25
  }
62
26
  }
@@ -1,36 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(npm run lint:*)",
5
- "Bash(npm test:*)",
6
- "Bash(npm run verify:*)",
7
- "Bash(find:*)",
8
- "Bash(node bin/cli.js:*)",
9
- "Bash(npm install:*)",
10
- "Bash(npm run test:coverage:*)",
11
- "Bash(git init:*)",
12
- "Bash(git add:*)",
13
- "Bash(git commit:*)",
14
- "Bash(gh repo create:*)",
15
- "Bash(npm whoami:*)",
16
- "Bash(npm pkg fix:*)",
17
- "Bash(git push:*)",
18
- "Bash(session\" errors when trying to use features.\n\nNow the login command validates the session with the backend first.\nIf validation fails, it clears the local session and prompts for\nfresh login, avoiding the confusing loop.\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
19
- "Bash(npm run build:*)",
20
- "Bash(npm version:*)",
21
- "Bash(npm run lint:fix:*)",
22
- "Bash(cat:*)",
23
- "Bash(node:*)",
24
- "Bash(node -c:*)",
25
- "Bash(grep:*)",
26
- "Bash(git stash:*)",
27
- "Bash(git -C /Users/foundbrand_001/Development/l4yercak3-cli status --short)",
28
- "Bash(git -C /Users/foundbrand_001/Development/l4yercak3-cli log --oneline -5)",
29
- "Bash(git -C /Users/foundbrand_001/Development/l4yercak3-cli diff --stat)",
30
- "Bash(git -C /Users/foundbrand_001/Development/l4yercak3-cli add -A)",
31
- "Bash(git -C /Users/foundbrand_001/Development/l4yercak3-cli commit -m \"$\\(cat <<''EOF''\nfeat: CLI-to-platform bridge with smart feature detection\n\nAdd model/route scanning, manifest generation, and platform bridge commands\n\\(connect, scaffold, sync\\). Feature selection now auto-checks based on\ndetected data models via mapping suggestor heuristics.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
32
- "Bash(npm --prefix /Users/foundbrand_001/Development/l4yercak3-cli version patch:*)",
33
- "Bash(npm:*)"
34
- ]
35
- }
36
- }
package/.cursor/rules.md DELETED
@@ -1,203 +0,0 @@
1
- # L4YERCAK3 CLI Tool - Development Rules
2
-
3
- This document defines the coding standards, quality checks, and development practices for the L4YERCAK3 CLI tool.
4
-
5
- ## Quality Assurance Checklist
6
-
7
- Every code change must pass these checks before being considered complete:
8
-
9
- ### 1. Type Checking ✅
10
- - **Command**: `npm run type-check`
11
- - **Requirement**: All TypeScript/JavaScript code must pass type checking
12
- - **Action**: Fix all type errors before committing
13
-
14
- ### 2. Linting ✅
15
- - **Command**: `npm run lint`
16
- - **Requirement**: Code must pass ESLint without errors
17
- - **Action**: Fix all linting errors or disable rules with justification
18
-
19
- ### 3. Production Build ✅
20
- - **Command**: `npm run build`
21
- - **Requirement**: Package must build successfully for production
22
- - **Action**: Ensure all dependencies are properly declared
23
-
24
- ### 4. Testing ✅
25
- - **Command**: `npm test`
26
- - **Requirement**: All tests must pass
27
- - **Action**: Add tests for new features, fix failing tests
28
-
29
- ## Development Workflow
30
-
31
- ### Before Committing
32
- 1. Run `npm run verify` (runs all checks)
33
- 2. Ensure all checks pass
34
- 3. Review changes
35
- 4. Commit with descriptive message
36
-
37
- ### After Major Changes
38
- 1. Run full verification suite
39
- 2. Test CLI locally with `npm link`
40
- 3. Test with example projects
41
- 4. Update documentation if needed
42
-
43
- ## Code Standards
44
-
45
- ### JavaScript/Node.js
46
- - Use CommonJS (require/module.exports) for compatibility
47
- - Follow Node.js best practices
48
- - Use async/await for asynchronous operations
49
- - Handle errors properly with try/catch
50
-
51
- ### File Structure
52
- - Keep files modular and focused
53
- - Use descriptive file names
54
- - Group related functionality together
55
- - Document complex logic
56
-
57
- ### Error Handling
58
- - Always handle errors gracefully
59
- - Provide helpful error messages
60
- - Log errors appropriately
61
- - Don't expose sensitive information
62
-
63
- ### Code Style
64
- - Use consistent indentation (2 spaces)
65
- - Use meaningful variable names
66
- - Keep functions small and focused
67
- - Add comments for complex logic
68
-
69
- ## Architecture Principles
70
-
71
- ### Modularity
72
- - Keep commands separate from generators
73
- - Separate concerns (detection, generation, configuration)
74
- - Make code reusable across commands
75
-
76
- ### User Experience
77
- - Provide clear, helpful error messages
78
- - Show progress indicators for long operations
79
- - Use colors and formatting for better readability
80
- - Guide users through setup process
81
-
82
- ### Maintainability
83
- - Write self-documenting code
84
- - Add JSDoc comments for public APIs
85
- - Keep dependencies minimal
86
- - Update dependencies regularly
87
-
88
- ## Dependencies
89
-
90
- ### Current Dependencies
91
- - `chalk@^4.1.2` - Terminal colors (v4 for CommonJS compatibility)
92
- - `figlet@^1.7.0` - ASCII art generation
93
-
94
- ### Adding New Dependencies
95
- - Prefer lightweight, well-maintained packages
96
- - Check bundle size impact
97
- - Ensure CommonJS compatibility
98
- - Document why dependency is needed
99
-
100
- ## Testing Strategy
101
-
102
- ### Unit Tests
103
- - Test individual functions
104
- - Mock external dependencies
105
- - Test error cases
106
- - Test edge cases
107
-
108
- ### Integration Tests
109
- - Test CLI commands end-to-end
110
- - Test with real project structures
111
- - Test error scenarios
112
- - Test with different Node.js versions
113
-
114
- ## Documentation
115
-
116
- ### Code Documentation
117
- - Add JSDoc comments for all public functions
118
- - Document complex algorithms
119
- - Explain non-obvious code
120
-
121
- ### User Documentation
122
- - Keep README.md up to date
123
- - Document all commands
124
- - Provide examples
125
- - Include troubleshooting section
126
-
127
- ## Version Management
128
-
129
- ### Semantic Versioning
130
- - `MAJOR.MINOR.PATCH`
131
- - Major: Breaking changes
132
- - Minor: New features (backward compatible)
133
- - Patch: Bug fixes
134
-
135
- ### Before Publishing
136
- 1. Update version in package.json
137
- 2. Update CHANGELOG.md
138
- 3. Run full test suite
139
- 4. Test installation via npm
140
-
141
- ## Security
142
-
143
- ### Sensitive Data
144
- - Never commit API keys or secrets
145
- - Use environment variables for configuration
146
- - Validate user input
147
- - Sanitize file paths
148
-
149
- ### Dependencies
150
- - Keep dependencies up to date
151
- - Check for security vulnerabilities: `npm audit`
152
- - Review dependency changes
153
-
154
- ## Performance
155
-
156
- ### CLI Performance
157
- - Minimize startup time
158
- - Use lazy loading where appropriate
159
- - Cache expensive operations
160
- - Optimize file I/O
161
-
162
- ## Compatibility
163
-
164
- ### Node.js Versions
165
- - Support Node.js 14+ (as specified in package.json)
166
- - Test on multiple Node.js versions
167
- - Use features available in minimum version
168
-
169
- ### Operating Systems
170
- - Test on macOS, Linux, Windows
171
- - Handle path differences
172
- - Test file permissions
173
-
174
- ## Git Workflow
175
-
176
- ### Commit Messages
177
- - Use descriptive commit messages
178
- - Reference issues when applicable
179
- - Keep commits focused and atomic
180
-
181
- ### Branching
182
- - Use feature branches for new features
183
- - Keep main branch stable
184
- - Use descriptive branch names
185
-
186
- ## Continuous Improvement
187
-
188
- ### Code Review
189
- - Review all changes before merging
190
- - Look for potential bugs
191
- - Suggest improvements
192
- - Ensure standards are followed
193
-
194
- ### Refactoring
195
- - Refactor when code becomes complex
196
- - Improve based on usage patterns
197
- - Keep code maintainable
198
- - Don't refactor working code unnecessarily
199
-
200
- ---
201
-
202
- **Remember**: Quality over speed. Take time to write clean, maintainable code that others (and future you) will appreciate.
203
-
package/.eslintrc.js DELETED
@@ -1,31 +0,0 @@
1
- module.exports = {
2
- env: {
3
- node: true,
4
- es2021: true,
5
- },
6
- extends: ['eslint:recommended'],
7
- parserOptions: {
8
- ecmaVersion: 2021,
9
- sourceType: 'module',
10
- },
11
- rules: {
12
- 'no-console': 'off', // CLI tools need console output
13
- 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
14
- 'no-undef': 'error',
15
- 'prefer-const': 'warn',
16
- 'no-var': 'warn',
17
- 'prefer-arrow-callback': 'warn',
18
- 'arrow-body-style': ['warn', 'as-needed'],
19
- 'object-shorthand': 'warn',
20
- 'prefer-template': 'warn',
21
- },
22
- overrides: [
23
- {
24
- files: ['tests/**/*.js'],
25
- env: {
26
- jest: true,
27
- },
28
- },
29
- ],
30
- };
31
-
package/CLAUDE.md DELETED
@@ -1,100 +0,0 @@
1
- # L4YERCAK3 CLI - Claude Code Configuration
2
-
3
- ## About This Project
4
-
5
- This is **L4YERCAK3 CLI** (`@l4yercak3/cli`) - the official CLI tool for integrating Next.js projects with the Layer Cake platform. It handles authentication, project setup, and generates boilerplate code for L4YERCAK3 features.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- npm install -g @l4yercak3/cli
11
- ```
12
-
13
- ## CLI Commands
14
-
15
- | Command | Description |
16
- |---------|-------------|
17
- | `l4yercak3 login` | Authenticate with the L4YERCAK3 platform (opens browser) |
18
- | `l4yercak3 logout` | Log out and clear session |
19
- | `l4yercak3 status` | Show authentication status and session info |
20
- | `l4yercak3 spread` | Initialize L4YERCAK3 in a Next.js project (interactive setup) |
21
- | `icing` | Alias for `l4yercak3` command |
22
-
23
- ## Project Structure
24
-
25
- ```
26
- src/
27
- ├── api/ # Backend API client
28
- │ └── backend-client.js
29
- ├── commands/ # CLI command handlers
30
- │ ├── login.js # Browser-based OAuth login
31
- │ ├── logout.js # Session cleanup
32
- │ ├── spread.js # Project initialization wizard
33
- │ └── status.js # Auth status display
34
- ├── config/ # Configuration management
35
- │ └── config-manager.js
36
- ├── detectors/ # Project analysis
37
- │ ├── nextjs-detector.js
38
- │ ├── github-detector.js
39
- │ ├── oauth-detector.js
40
- │ └── api-client-detector.js
41
- ├── generators/ # Code generators
42
- │ ├── api-client-generator.js
43
- │ ├── env-generator.js
44
- │ ├── nextauth-generator.js
45
- │ ├── oauth-guide-generator.js
46
- │ └── gitignore-generator.js
47
- ├── index.js # Main entry point
48
- └── logo.js # ASCII art branding
49
- ```
50
-
51
- ## Development Commands
52
-
53
- ```bash
54
- npm run build # Build for production
55
- npm run lint # Run ESLint
56
- npm run lint:fix # Fix ESLint issues
57
- npm run type-check # TypeScript type checking (via JSDoc)
58
- npm test # Run Jest tests
59
- npm run test:watch # Run tests in watch mode
60
- npm run test:coverage # Run tests with coverage report
61
- npm run verify # Run lint + type-check + test + build
62
- ```
63
-
64
- ## Code Style
65
-
66
- - JavaScript with JSDoc type annotations
67
- - ESLint with Prettier formatting
68
- - Jest for testing with mocks for fs, fetch, and external dependencies
69
- - Keep files focused and under 500 lines
70
- - Use async/await for asynchronous operations
71
-
72
- ## Testing Patterns
73
-
74
- When writing tests:
75
- - Mock `fs` module for file operations
76
- - Mock `node-fetch` for API calls
77
- - Mock `chalk` to return plain strings
78
- - Use `jest.spyOn(console, 'error').mockImplementation(() => {})` to silence expected errors
79
- - For singleton modules that instantiate on require, set up mocks BEFORE requiring the module
80
-
81
- ## Configuration Storage
82
-
83
- User config is stored at `~/.l4yercak3/config.json` with:
84
- - Session tokens and expiration
85
- - Organization memberships
86
- - Project configurations by path
87
- - Backend URL settings
88
-
89
- ## Available Features
90
-
91
- The `spread` command can set up:
92
- - **CRM** - Customer relationship management integration
93
- - **OAuth** - Social login with Google, GitHub, Discord, etc.
94
- - **Stripe** - Payment processing integration
95
- - **Analytics** - Usage tracking and metrics
96
-
97
- ## Links
98
-
99
- - npm: https://www.npmjs.com/package/@l4yercak3/cli
100
- - GitHub: https://github.com/voundbrand/l4yercak3-cli