@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.
- package/README.md +10 -220
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +37 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/platform.d.ts +161 -0
- package/dist/api/platform.d.ts.map +1 -0
- package/dist/api/platform.js +70 -0
- package/dist/api/platform.js.map +1 -0
- package/dist/bin/sevenlayers.d.ts +3 -0
- package/dist/bin/sevenlayers.d.ts.map +1 -0
- package/dist/bin/sevenlayers.js +198 -0
- package/dist/bin/sevenlayers.js.map +1 -0
- package/dist/commands/agent/catalog.d.ts +5 -0
- package/dist/commands/agent/catalog.d.ts.map +1 -0
- package/dist/commands/agent/catalog.js +142 -0
- package/dist/commands/agent/catalog.js.map +1 -0
- package/dist/commands/agent/drift.d.ts +5 -0
- package/dist/commands/agent/drift.d.ts.map +1 -0
- package/dist/commands/agent/drift.js +113 -0
- package/dist/commands/agent/drift.js.map +1 -0
- package/dist/commands/agent/init.d.ts +5 -0
- package/dist/commands/agent/init.d.ts.map +1 -0
- package/dist/commands/agent/init.js +75 -0
- package/dist/commands/agent/init.js.map +1 -0
- package/dist/commands/agent/permissions.d.ts +5 -0
- package/dist/commands/agent/permissions.d.ts.map +1 -0
- package/dist/commands/agent/permissions.js +88 -0
- package/dist/commands/agent/permissions.js.map +1 -0
- package/dist/commands/agent/runner.d.ts +14 -0
- package/dist/commands/agent/runner.d.ts.map +1 -0
- package/dist/commands/agent/runner.js +59 -0
- package/dist/commands/agent/runner.js.map +1 -0
- package/dist/commands/agent/shared.d.ts +13 -0
- package/dist/commands/agent/shared.d.ts.map +1 -0
- package/dist/commands/agent/shared.js +31 -0
- package/dist/commands/agent/shared.js.map +1 -0
- package/dist/commands/agent/template.d.ts +5 -0
- package/dist/commands/agent/template.d.ts.map +1 -0
- package/dist/commands/agent/template.js +104 -0
- package/dist/commands/agent/template.js.map +1 -0
- package/dist/commands/app/connect.d.ts +7 -0
- package/dist/commands/app/connect.d.ts.map +1 -0
- package/dist/commands/app/connect.js +12 -0
- package/dist/commands/app/connect.js.map +1 -0
- package/dist/commands/app/init.d.ts +7 -0
- package/dist/commands/app/init.d.ts.map +1 -0
- package/dist/commands/app/init.js +12 -0
- package/dist/commands/app/init.js.map +1 -0
- package/dist/commands/app/link.d.ts +3 -0
- package/dist/commands/app/link.d.ts.map +1 -0
- package/dist/commands/app/link.js +92 -0
- package/dist/commands/app/link.js.map +1 -0
- package/dist/commands/app/pages.d.ts +15 -0
- package/dist/commands/app/pages.d.ts.map +1 -0
- package/dist/commands/app/pages.js +180 -0
- package/dist/commands/app/pages.js.map +1 -0
- package/dist/commands/app/register.d.ts +3 -0
- package/dist/commands/app/register.d.ts.map +1 -0
- package/dist/commands/app/register.js +120 -0
- package/dist/commands/app/register.js.map +1 -0
- package/dist/commands/app/remote.d.ts +14 -0
- package/dist/commands/app/remote.d.ts.map +1 -0
- package/dist/commands/app/remote.js +44 -0
- package/dist/commands/app/remote.js.map +1 -0
- package/dist/commands/app/setup.d.ts +3 -0
- package/dist/commands/app/setup.d.ts.map +1 -0
- package/dist/commands/app/setup.js +299 -0
- package/dist/commands/app/setup.js.map +1 -0
- package/dist/commands/app/shared.d.ts +9 -0
- package/dist/commands/app/shared.d.ts.map +1 -0
- package/dist/commands/app/shared.js +122 -0
- package/dist/commands/app/shared.js.map +1 -0
- package/dist/commands/app/sync.d.ts +7 -0
- package/dist/commands/app/sync.d.ts.map +1 -0
- package/dist/commands/app/sync.js +107 -0
- package/dist/commands/app/sync.js.map +1 -0
- package/dist/commands/booking/check.d.ts +3 -0
- package/dist/commands/booking/check.d.ts.map +1 -0
- package/dist/commands/booking/check.js +68 -0
- package/dist/commands/booking/check.js.map +1 -0
- package/dist/commands/booking/setup.d.ts +3 -0
- package/dist/commands/booking/setup.d.ts.map +1 -0
- package/dist/commands/booking/setup.js +95 -0
- package/dist/commands/booking/setup.js.map +1 -0
- package/dist/commands/booking/shared.d.ts +31 -0
- package/dist/commands/booking/shared.d.ts.map +1 -0
- package/dist/commands/booking/shared.js +112 -0
- package/dist/commands/booking/shared.js.map +1 -0
- package/dist/commands/booking/smoke.d.ts +3 -0
- package/dist/commands/booking/smoke.d.ts.map +1 -0
- package/dist/commands/booking/smoke.js +101 -0
- package/dist/commands/booking/smoke.js.map +1 -0
- package/dist/commands/cms/bind.d.ts +3 -0
- package/dist/commands/cms/bind.d.ts.map +1 -0
- package/dist/commands/cms/bind.js +212 -0
- package/dist/commands/cms/bind.js.map +1 -0
- package/dist/commands/cms/content.d.ts +40 -0
- package/dist/commands/cms/content.d.ts.map +1 -0
- package/dist/commands/cms/content.js +169 -0
- package/dist/commands/cms/content.js.map +1 -0
- package/dist/commands/cms/doctor.d.ts +3 -0
- package/dist/commands/cms/doctor.d.ts.map +1 -0
- package/dist/commands/cms/doctor.js +69 -0
- package/dist/commands/cms/doctor.js.map +1 -0
- package/dist/commands/cms/migrate.d.ts +3 -0
- package/dist/commands/cms/migrate.d.ts.map +1 -0
- package/dist/commands/cms/migrate.js +78 -0
- package/dist/commands/cms/migrate.js.map +1 -0
- package/dist/commands/cms/registry.d.ts +3 -0
- package/dist/commands/cms/registry.d.ts.map +1 -0
- package/dist/commands/cms/registry.js +161 -0
- package/dist/commands/cms/registry.js.map +1 -0
- package/dist/commands/cms/seed.d.ts +3 -0
- package/dist/commands/cms/seed.d.ts.map +1 -0
- package/dist/commands/cms/seed.js +102 -0
- package/dist/commands/cms/seed.js.map +1 -0
- package/dist/commands/cms/shared.d.ts +22 -0
- package/dist/commands/cms/shared.d.ts.map +1 -0
- package/dist/commands/cms/shared.js +82 -0
- package/dist/commands/cms/shared.js.map +1 -0
- package/dist/commands/doctor/target.d.ts +3 -0
- package/dist/commands/doctor/target.d.ts.map +1 -0
- package/dist/commands/doctor/target.js +46 -0
- package/dist/commands/doctor/target.js.map +1 -0
- package/dist/commands/env/list.d.ts +3 -0
- package/dist/commands/env/list.d.ts.map +1 -0
- package/dist/commands/env/list.js +28 -0
- package/dist/commands/env/list.js.map +1 -0
- package/dist/commands/env/set.d.ts +3 -0
- package/dist/commands/env/set.d.ts.map +1 -0
- package/dist/commands/env/set.js +36 -0
- package/dist/commands/env/set.js.map +1 -0
- package/dist/commands/env/use.d.ts +3 -0
- package/dist/commands/env/use.d.ts.map +1 -0
- package/dist/commands/env/use.js +15 -0
- package/dist/commands/env/use.js.map +1 -0
- package/dist/commands/legacy/connect.d.ts +3 -0
- package/dist/commands/legacy/connect.d.ts.map +1 -0
- package/dist/commands/legacy/connect.js +8 -0
- package/dist/commands/legacy/connect.js.map +1 -0
- package/dist/commands/legacy/pages.d.ts +3 -0
- package/dist/commands/legacy/pages.d.ts.map +1 -0
- package/dist/commands/legacy/pages.js +16 -0
- package/dist/commands/legacy/pages.js.map +1 -0
- package/dist/commands/legacy/spread.d.ts +3 -0
- package/dist/commands/legacy/spread.d.ts.map +1 -0
- package/dist/commands/legacy/spread.js +8 -0
- package/dist/commands/legacy/spread.js.map +1 -0
- package/dist/commands/legacy/sync.d.ts +3 -0
- package/dist/commands/legacy/sync.d.ts.map +1 -0
- package/dist/commands/legacy/sync.js +8 -0
- package/dist/commands/legacy/sync.js.map +1 -0
- package/dist/config/env-diff.d.ts +10 -0
- package/dist/config/env-diff.d.ts.map +1 -0
- package/dist/config/env-diff.js +24 -0
- package/dist/config/env-diff.js.map +1 -0
- package/dist/config/env-parser.d.ts +20 -0
- package/dist/config/env-parser.d.ts.map +1 -0
- package/dist/config/env-parser.js +70 -0
- package/dist/config/env-parser.js.map +1 -0
- package/dist/config/env-writer.d.ts +22 -0
- package/dist/config/env-writer.d.ts.map +1 -0
- package/dist/config/env-writer.js +172 -0
- package/dist/config/env-writer.js.map +1 -0
- package/dist/config/profile-store.d.ts +29 -0
- package/dist/config/profile-store.d.ts.map +1 -0
- package/dist/config/profile-store.js +257 -0
- package/dist/config/profile-store.js.map +1 -0
- package/dist/core/args.d.ts +11 -0
- package/dist/core/args.d.ts.map +1 -0
- package/dist/core/args.js +106 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/colors.d.ts +6 -0
- package/dist/core/colors.d.ts.map +1 -0
- package/dist/core/colors.js +29 -0
- package/dist/core/colors.js.map +1 -0
- package/dist/safety/target-guard.d.ts +16 -0
- package/dist/safety/target-guard.d.ts.map +1 -0
- package/dist/safety/target-guard.js +55 -0
- package/dist/safety/target-guard.js.map +1 -0
- package/dist/testing/booking-smoke.d.ts +17 -0
- package/dist/testing/booking-smoke.d.ts.map +1 -0
- package/dist/testing/booking-smoke.js +43 -0
- package/dist/testing/booking-smoke.js.map +1 -0
- package/dist/tests/agent-commands.test.d.ts +2 -0
- package/dist/tests/agent-commands.test.d.ts.map +1 -0
- package/dist/tests/agent-commands.test.js +180 -0
- package/dist/tests/agent-commands.test.js.map +1 -0
- package/dist/tests/agent-governance.test.d.ts +2 -0
- package/dist/tests/agent-governance.test.d.ts.map +1 -0
- package/dist/tests/agent-governance.test.js +233 -0
- package/dist/tests/agent-governance.test.js.map +1 -0
- package/dist/tests/app-commands.test.d.ts +2 -0
- package/dist/tests/app-commands.test.d.ts.map +1 -0
- package/dist/tests/app-commands.test.js +462 -0
- package/dist/tests/app-commands.test.js.map +1 -0
- package/dist/tests/booking-commands.test.d.ts +2 -0
- package/dist/tests/booking-commands.test.d.ts.map +1 -0
- package/dist/tests/booking-commands.test.js +204 -0
- package/dist/tests/booking-commands.test.js.map +1 -0
- package/dist/tests/booking-smoke.test.d.ts +2 -0
- package/dist/tests/booking-smoke.test.d.ts.map +1 -0
- package/dist/tests/booking-smoke.test.js +183 -0
- package/dist/tests/booking-smoke.test.js.map +1 -0
- package/dist/tests/cms-commands.test.d.ts +2 -0
- package/dist/tests/cms-commands.test.d.ts.map +1 -0
- package/dist/tests/cms-commands.test.js +254 -0
- package/dist/tests/cms-commands.test.js.map +1 -0
- package/dist/tests/cms-ops.test.d.ts +2 -0
- package/dist/tests/cms-ops.test.d.ts.map +1 -0
- package/dist/tests/cms-ops.test.js +125 -0
- package/dist/tests/cms-ops.test.js.map +1 -0
- package/dist/tests/env-writer.test.d.ts +2 -0
- package/dist/tests/env-writer.test.d.ts.map +1 -0
- package/dist/tests/env-writer.test.js +90 -0
- package/dist/tests/env-writer.test.js.map +1 -0
- package/dist/tests/profile-store.test.d.ts +2 -0
- package/dist/tests/profile-store.test.d.ts.map +1 -0
- package/dist/tests/profile-store.test.js +88 -0
- package/dist/tests/profile-store.test.js.map +1 -0
- package/dist/tests/target-guard.test.d.ts +2 -0
- package/dist/tests/target-guard.test.d.ts.map +1 -0
- package/dist/tests/target-guard.test.js +132 -0
- package/dist/tests/target-guard.test.js.map +1 -0
- package/dist/ui/logo.d.ts +2 -0
- package/dist/ui/logo.d.ts.map +1 -0
- package/dist/ui/logo.js +22 -0
- package/dist/ui/logo.js.map +1 -0
- package/package.json +17 -53
- package/.claude/settings.local.json +0 -36
- package/.cursor/rules.md +0 -203
- package/.eslintrc.js +0 -31
- package/CLAUDE.md +0 -100
- package/bin/cli.js +0 -116
- package/docs/ADDING_FRAMEWORK_DETECTORS.md +0 -391
- package/docs/ADDING_NEW_PROJECT_TYPE.md +0 -156
- package/docs/ARCHITECTURE_RELATIONSHIPS.md +0 -411
- package/docs/CLI_AUTHENTICATION.md +0 -214
- package/docs/CLI_PAGE_DETECTION_REQUIREMENTS.md +0 -519
- package/docs/CRM-PIPELINES-SEQUENCES-SPEC.md +0 -429
- package/docs/DETECTOR_ARCHITECTURE.md +0 -326
- package/docs/DEVELOPMENT.md +0 -194
- package/docs/IMPLEMENTATION_PHASES.md +0 -468
- package/docs/INTEGRATION_PATHS_ARCHITECTURE.md +0 -1543
- package/docs/OAUTH_CLARIFICATION.md +0 -258
- package/docs/OAUTH_SETUP_GUIDE_TEMPLATE.md +0 -211
- package/docs/PHASE_0_PROGRESS.md +0 -120
- package/docs/PHASE_1_COMPLETE.md +0 -366
- package/docs/PHASE_SUMMARY.md +0 -149
- package/docs/PLAN.md +0 -511
- package/docs/README.md +0 -56
- package/docs/STRIPE_INTEGRATION.md +0 -447
- package/docs/SUMMARY.md +0 -230
- package/docs/UPDATED_PLAN.md +0 -447
- package/docs/mcp_server/MCP_EXTENSION_GUIDE.md +0 -1313
- package/docs/mcp_server/MCP_SERVER_ARCHITECTURE.md +0 -1481
- package/docs/mcp_server/applicationOntology.ts +0 -817
- package/docs/mcp_server/cliApplications.ts +0 -639
- package/docs/mcp_server/crmOntology.ts +0 -1063
- package/docs/mcp_server/eventOntology.ts +0 -1183
- package/docs/mcp_server/formsOntology.ts +0 -1401
- package/docs/mcp_server/ontologySchemas.ts +0 -185
- package/docs/mcp_server/schema.ts +0 -250
- package/docs/microsass_production_machine/CLI_API_REFERENCE.md +0 -1197
- package/docs/microsass_production_machine/CLI_PRODUCT_VISION.md +0 -676
- package/docs/microsass_production_machine/CLI_REQUIREMENTS.md +0 -606
- package/docs/microsass_production_machine/CONNECTED_APPLICATIONS_SPEC.md +0 -390
- package/docs/microsass_production_machine/IMPLEMENTATION_ROADMAP.md +0 -725
- package/docs/microsass_production_machine/OBJECT_MAPPINGS.md +0 -808
- package/docs/microsass_production_machine/REFERENCE_IMPLEMENTATION.md +0 -532
- package/src/api/backend-client.js +0 -449
- package/src/commands/api-keys.js +0 -119
- package/src/commands/connect.js +0 -253
- package/src/commands/login.js +0 -332
- package/src/commands/logout.js +0 -30
- package/src/commands/mcp-server.js +0 -85
- package/src/commands/mcp-setup.js +0 -686
- package/src/commands/pages.js +0 -317
- package/src/commands/scaffold.js +0 -409
- package/src/commands/spread.js +0 -861
- package/src/commands/status.js +0 -62
- package/src/commands/sync.js +0 -169
- package/src/commands/upgrade.js +0 -48
- package/src/config/config-manager.js +0 -206
- package/src/detectors/api-client-detector.js +0 -85
- package/src/detectors/base-detector.js +0 -77
- package/src/detectors/database-detector.js +0 -245
- package/src/detectors/expo-detector.js +0 -166
- package/src/detectors/github-detector.js +0 -74
- package/src/detectors/index.js +0 -106
- package/src/detectors/mapping-suggestor.js +0 -119
- package/src/detectors/model-detector.js +0 -318
- package/src/detectors/nextjs-detector.js +0 -139
- package/src/detectors/oauth-detector.js +0 -122
- package/src/detectors/page-detector.js +0 -480
- package/src/detectors/registry.js +0 -121
- package/src/generators/api-client-generator.js +0 -223
- package/src/generators/api-only/client.js +0 -683
- package/src/generators/api-only/index.js +0 -96
- package/src/generators/api-only/types.js +0 -618
- package/src/generators/api-only/webhooks.js +0 -377
- package/src/generators/env-generator.js +0 -191
- package/src/generators/expo-auth-generator.js +0 -1009
- package/src/generators/gitignore-generator.js +0 -92
- package/src/generators/index.js +0 -166
- package/src/generators/manifest-generator.js +0 -154
- package/src/generators/mcp-guide-generator.js +0 -256
- package/src/generators/nextauth-generator.js +0 -247
- package/src/generators/oauth-guide-generator.js +0 -277
- package/src/generators/quickstart/components/index.js +0 -1699
- package/src/generators/quickstart/components-mobile/index.js +0 -1440
- package/src/generators/quickstart/database/convex.js +0 -1257
- package/src/generators/quickstart/database/index.js +0 -34
- package/src/generators/quickstart/database/supabase.js +0 -1132
- package/src/generators/quickstart/hooks/index.js +0 -1065
- package/src/generators/quickstart/index.js +0 -191
- package/src/generators/quickstart/pages/index.js +0 -1466
- package/src/generators/quickstart/screens/index.js +0 -1498
- package/src/logo.js +0 -116
- package/src/mcp/auth.js +0 -127
- package/src/mcp/registry/domains/applications.js +0 -516
- package/src/mcp/registry/domains/benefits.js +0 -798
- package/src/mcp/registry/domains/codegen.js +0 -894
- package/src/mcp/registry/domains/core.js +0 -324
- package/src/mcp/registry/domains/crm.js +0 -591
- package/src/mcp/registry/domains/events.js +0 -649
- package/src/mcp/registry/domains/forms.js +0 -696
- package/src/mcp/registry/index.js +0 -164
- package/src/mcp/server.js +0 -116
- package/src/utils/file-utils.js +0 -117
- package/src/utils/init-helpers.js +0 -243
- package/src/utils/prompt-utils.js +0 -195
- package/templates/CLAUDE.md +0 -86
- package/tests/api-client-detector.test.js +0 -214
- package/tests/api-client-generator.test.js +0 -176
- package/tests/backend-client.test.js +0 -640
- package/tests/base-detector.test.js +0 -101
- package/tests/commands/login.test.js +0 -143
- package/tests/commands/logout.test.js +0 -84
- package/tests/commands/status.test.js +0 -167
- package/tests/config-manager.test.js +0 -321
- package/tests/database-detector.test.js +0 -221
- package/tests/detector-index.test.js +0 -209
- package/tests/detector-registry.test.js +0 -93
- package/tests/env-generator.test.js +0 -278
- package/tests/expo-detector.test.js +0 -263
- package/tests/file-utils.test.js +0 -194
- package/tests/generators-index.test.js +0 -454
- package/tests/github-detector.test.js +0 -145
- package/tests/gitignore-generator.test.js +0 -109
- package/tests/logo.test.js +0 -96
- package/tests/nextauth-generator.test.js +0 -255
- package/tests/nextjs-detector.test.js +0 -235
- package/tests/oauth-detector.test.js +0 -264
- package/tests/oauth-guide-generator.test.js +0 -273
- 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":";;;;;AAAA,0DAA6B;AAC7B,gEAAwC;AACxC,gEAAkC;AAClC,sDAAyB;AACzB,0DAA6B;AAC7B,uCAAyC;AACzC,2DAAwD;AACxD,yDAA8D;AAE9D,KAAK,UAAU,WAAW,CAAC,GAAyC;IAClE,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,kBAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,IAAA,mBAAI,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;IAC1E,MAAM,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAExD,MAAM,IAAA,6BAAa,EACjB;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,6BAA6B;YACzC,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,aAAa;YAC3B,YAAY,EAAE,aAAa;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAA,mCAAoB,EAAC,MAAM,EAAE;YACjD,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;QAEH,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC;QAChE,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC3C,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACxE,MAAM,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAExD,MAAM,IAAA,6BAAa,EACjB;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,6BAA6B;YACzC,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,aAAa;YAC3B,YAAY,EAAE,aAAa;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC;YACvB,KAAK;YACL,MAAM;YACN,OAAO;YACP,SAAS;YACT,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,gBAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,IAAA,mCAAoB,EAAC,MAAM,EAAE;YAC3B,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,EACJ,UAAU,CACX,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;IACtE,MAAM,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAExD,MAAM,IAAA,6BAAa,EACjB;YACE,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,0BAA0B;YACtC,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,UAAU;YACxB,oBAAoB,EAAE,IAAI;SAC3B,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAE9D,MAAM,gBAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,IAAA,mCAAoB,EAAC,MAAM,EAAE;YAC3B,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,EACJ,uBAAuB,CACxB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC;YACrB,KAAK;YACL,SAAS;YACT,OAAO;YACP,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAA,mCAAoB,EAAC,IAAI,EAAE;YAC/C,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;QAEH,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;IAC5F,MAAM,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAExD,MAAM,IAAA,6BAAa,EACjB;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,6BAA6B;YACzC,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,aAAa;YAC3B,YAAY,EAAE,aAAa;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC;YACvB,KAAK;YACL,SAAS;YACT,OAAO;YACP,SAAS;YACT,eAAe;YACf,8BAA8B;SAC/B,CAAC,CAAC;QAEH,MAAM,gBAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,IAAA,mCAAoB,EAAC,MAAM,EAAE;YAC3B,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,EACJ,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/ui/logo.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
|
package/dist/ui/logo.js
ADDED
|
@@ -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": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
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
|
-
"
|
|
8
|
-
"
|
|
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
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"cli",
|
|
38
|
-
"backend",
|
|
39
|
-
"platform",
|
|
40
|
-
"integration",
|
|
41
|
-
"mcp",
|
|
42
|
-
"claude-code"
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md"
|
|
43
15
|
],
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
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": ">=
|
|
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
|