@symplek/cli 0.0.0-stage → 0.2.0-beta.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 (75) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +74 -2
  4. package/bin/symplek.js +5 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +44 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/add.d.ts +36 -0
  10. package/dist/commands/add.d.ts.map +1 -0
  11. package/dist/commands/add.js +467 -0
  12. package/dist/commands/add.js.map +1 -0
  13. package/dist/commands/generate.d.ts +26 -0
  14. package/dist/commands/generate.d.ts.map +1 -0
  15. package/dist/commands/generate.js +491 -0
  16. package/dist/commands/generate.js.map +1 -0
  17. package/dist/commands/init.d.ts +46 -0
  18. package/dist/commands/init.d.ts.map +1 -0
  19. package/dist/commands/init.js +350 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/migrate.d.ts +41 -0
  22. package/dist/commands/migrate.d.ts.map +1 -0
  23. package/dist/commands/migrate.js +518 -0
  24. package/dist/commands/migrate.js.map +1 -0
  25. package/dist/commands/validate.d.ts +252 -0
  26. package/dist/commands/validate.d.ts.map +1 -0
  27. package/dist/commands/validate.js +515 -0
  28. package/dist/commands/validate.js.map +1 -0
  29. package/dist/index.d.ts +7 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +46 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/models.d.ts +24 -0
  34. package/dist/models.d.ts.map +1 -0
  35. package/dist/models.js +39 -0
  36. package/dist/models.js.map +1 -0
  37. package/dist/naming.d.ts +20 -0
  38. package/dist/naming.d.ts.map +1 -0
  39. package/dist/naming.js +48 -0
  40. package/dist/naming.js.map +1 -0
  41. package/dist/templates/agent/agent.ts.template +41 -0
  42. package/dist/templates/agent/general.yaml.template +34 -0
  43. package/dist/templates/agent/researcher.yaml.template +42 -0
  44. package/dist/templates/agent/reviewer.yaml.template +51 -0
  45. package/dist/templates/project/full/.github/workflows/ci.yml.template +34 -0
  46. package/dist/templates/project/full/.gitignore.template +6 -0
  47. package/dist/templates/project/full/Dockerfile.template +43 -0
  48. package/dist/templates/project/full/README.md.template +77 -0
  49. package/dist/templates/project/full/agents/example.yaml.template +16 -0
  50. package/dist/templates/project/full/package.json.template +30 -0
  51. package/dist/templates/project/full/src/index.ts.template +43 -0
  52. package/dist/templates/project/full/src/symplek.config.ts.template +20 -0
  53. package/dist/templates/project/full/src/tools/index.ts.template +73 -0
  54. package/dist/templates/project/full/tests/example.test.ts.template +49 -0
  55. package/dist/templates/project/full/tsconfig.json.template +18 -0
  56. package/dist/templates/project/minimal/.gitignore.template +6 -0
  57. package/dist/templates/project/minimal/agents/example.yaml.template +16 -0
  58. package/dist/templates/project/minimal/package.json.template +27 -0
  59. package/dist/templates/project/minimal/src/index.ts.template +43 -0
  60. package/dist/templates/project/minimal/src/symplek.config.ts.template +20 -0
  61. package/dist/templates/project/minimal/tsconfig.json.template +18 -0
  62. package/dist/templates/project/standard/.gitignore.template +6 -0
  63. package/dist/templates/project/standard/README.md.template +77 -0
  64. package/dist/templates/project/standard/agents/example.yaml.template +16 -0
  65. package/dist/templates/project/standard/package.json.template +30 -0
  66. package/dist/templates/project/standard/src/index.ts.template +43 -0
  67. package/dist/templates/project/standard/src/symplek.config.ts.template +20 -0
  68. package/dist/templates/project/standard/src/tools/index.ts.template +73 -0
  69. package/dist/templates/project/standard/tests/example.test.ts.template +49 -0
  70. package/dist/templates/project/standard/tsconfig.json.template +18 -0
  71. package/dist/utils/templates.d.ts +41 -0
  72. package/dist/utils/templates.d.ts.map +1 -0
  73. package/dist/utils/templates.js +133 -0
  74. package/dist/utils/templates.js.map +1 -0
  75. package/package.json +60 -3
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ /**
3
+ * symplek init command - scaffolds new Symplek projects
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.promptForConfig = promptForConfig;
10
+ exports.createProject = createProject;
11
+ exports.installDependencies = installDependencies;
12
+ exports.printSuccess = printSuccess;
13
+ exports.initCommand = initCommand;
14
+ const node_child_process_1 = require("node:child_process");
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const commander_1 = require("commander");
19
+ const inquirer_1 = __importDefault(require("inquirer"));
20
+ const ora_1 = __importDefault(require("ora"));
21
+ const templates_js_1 = require("../utils/templates.js");
22
+ /** Validate project name is kebab-case (lowercase start, alphanumeric/hyphen body) */
23
+ function isValidProjectName(name) {
24
+ return /^[a-z][a-zA-Z0-9-]*[a-zA-Z0-9]$/.test(name) || /^[a-z]$/.test(name);
25
+ }
26
+ /** Detect package manager from lockfiles in current directory */
27
+ function detectPackageManager() {
28
+ if ((0, node_fs_1.existsSync)("pnpm-lock.yaml"))
29
+ return "pnpm";
30
+ if ((0, node_fs_1.existsSync)("yarn.lock"))
31
+ return "yarn";
32
+ if ((0, node_fs_1.existsSync)("bun.lockb"))
33
+ return "bun";
34
+ return "npm";
35
+ }
36
+ /** Get install command for package manager */
37
+ function getInstallCommand(pm) {
38
+ switch (pm) {
39
+ case "npm":
40
+ return ["npm", "install"];
41
+ case "pnpm":
42
+ return ["pnpm", "install"];
43
+ case "yarn":
44
+ return ["yarn"];
45
+ case "bun":
46
+ return ["bun", "install"];
47
+ }
48
+ }
49
+ /**
50
+ * Get project name from options or prompt
51
+ */
52
+ async function getProjectName(options) {
53
+ if (options.name) {
54
+ if (!isValidProjectName(options.name)) {
55
+ console.error(chalk_1.default.red(`Invalid project name: ${options.name}`));
56
+ console.error(chalk_1.default.yellow("Project name must be kebab-case (e.g., my-agent)"));
57
+ process.exit(1);
58
+ }
59
+ return options.name;
60
+ }
61
+ if (options.yes) {
62
+ return "my-symplek-project";
63
+ }
64
+ const { name } = await inquirer_1.default.prompt([
65
+ {
66
+ type: "input",
67
+ name: "name",
68
+ message: "Project name:",
69
+ default: "my-symplek-project",
70
+ validate: (input) => {
71
+ if (!input.trim()) {
72
+ return "Project name is required";
73
+ }
74
+ if (!isValidProjectName(input)) {
75
+ return "Project name must be kebab-case (e.g., my-agent)";
76
+ }
77
+ if ((0, node_fs_1.existsSync)(input)) {
78
+ return `Directory "${input}" already exists`;
79
+ }
80
+ return true;
81
+ },
82
+ },
83
+ ]);
84
+ return name;
85
+ }
86
+ /**
87
+ * Get template from options or prompt
88
+ */
89
+ async function getTemplate(options) {
90
+ if (options.template) {
91
+ if (!["minimal", "standard", "full"].includes(options.template)) {
92
+ console.error(chalk_1.default.red(`Invalid template: ${options.template}`));
93
+ console.error(chalk_1.default.yellow("Valid templates: minimal, standard, full"));
94
+ process.exit(1);
95
+ }
96
+ return options.template;
97
+ }
98
+ if (options.yes) {
99
+ return "standard";
100
+ }
101
+ const { template } = await inquirer_1.default.prompt([
102
+ {
103
+ type: "list",
104
+ name: "template",
105
+ message: "Select project template:",
106
+ choices: [
107
+ {
108
+ name: "minimal - Basic setup with core dependencies",
109
+ value: "minimal",
110
+ },
111
+ {
112
+ name: "standard - Includes tools, tests, and README",
113
+ value: "standard",
114
+ },
115
+ {
116
+ name: "full - Complete setup with CI/CD and Docker",
117
+ value: "full",
118
+ },
119
+ ],
120
+ default: "standard",
121
+ },
122
+ ]);
123
+ return template;
124
+ }
125
+ /**
126
+ * Get package manager from options or prompt
127
+ */
128
+ async function getPackageManager(options) {
129
+ if (options.pm) {
130
+ if (!["npm", "pnpm", "yarn", "bun"].includes(options.pm)) {
131
+ console.error(chalk_1.default.red(`Invalid package manager: ${options.pm}`));
132
+ console.error(chalk_1.default.yellow("Valid options: npm, pnpm, yarn, bun"));
133
+ process.exit(1);
134
+ }
135
+ return options.pm;
136
+ }
137
+ if (options.yes) {
138
+ return detectPackageManager();
139
+ }
140
+ const detected = detectPackageManager();
141
+ const { packageManager } = await inquirer_1.default.prompt([
142
+ {
143
+ type: "list",
144
+ name: "packageManager",
145
+ message: "Select package manager:",
146
+ choices: [
147
+ { name: "npm", value: "npm" },
148
+ { name: "pnpm (recommended)", value: "pnpm" },
149
+ { name: "yarn", value: "yarn" },
150
+ { name: "bun", value: "bun" },
151
+ ],
152
+ default: detected,
153
+ },
154
+ ]);
155
+ return packageManager;
156
+ }
157
+ /**
158
+ * Get TypeScript config from options or prompt
159
+ */
160
+ async function getTypeScriptConfig(options) {
161
+ if (options.yes) {
162
+ return "strict";
163
+ }
164
+ const { typescript } = await inquirer_1.default.prompt([
165
+ {
166
+ type: "list",
167
+ name: "typescript",
168
+ message: "TypeScript configuration:",
169
+ choices: [
170
+ {
171
+ name: "strict - Recommended for new projects",
172
+ value: "strict",
173
+ },
174
+ {
175
+ name: "standard - More lenient settings",
176
+ value: "standard",
177
+ },
178
+ ],
179
+ default: "strict",
180
+ },
181
+ ]);
182
+ return typescript;
183
+ }
184
+ /**
185
+ * Prompt user for project configuration
186
+ */
187
+ async function promptForConfig(options) {
188
+ // Get project name
189
+ const name = await getProjectName(options);
190
+ // Check if directory exists
191
+ if ((0, node_fs_1.existsSync)(name)) {
192
+ console.error(chalk_1.default.red(`Directory "${name}" already exists`));
193
+ process.exit(1);
194
+ }
195
+ // Get remaining config
196
+ const template = await getTemplate(options);
197
+ const packageManager = await getPackageManager(options);
198
+ const typescript = await getTypeScriptConfig(options);
199
+ return {
200
+ name,
201
+ template,
202
+ packageManager,
203
+ typescript,
204
+ targetDir: (0, node_path_1.join)(process.cwd(), name),
205
+ };
206
+ }
207
+ /**
208
+ * Recursively copy template files to target directory
209
+ */
210
+ function copyTemplateDir(templateDir, targetDir, vars) {
211
+ const entries = (0, node_fs_1.readdirSync)(templateDir);
212
+ for (const entry of entries) {
213
+ const srcPath = (0, node_path_1.join)(templateDir, entry);
214
+ const stat = (0, node_fs_1.statSync)(srcPath);
215
+ if (stat.isDirectory()) {
216
+ const destDir = (0, node_path_1.join)(targetDir, entry);
217
+ (0, node_fs_1.mkdirSync)(destDir, { recursive: true });
218
+ copyTemplateDir(srcPath, destDir, vars);
219
+ }
220
+ else if (entry.endsWith(".template")) {
221
+ // Remove .template extension and process content
222
+ const destPath = (0, node_path_1.join)(targetDir, entry.replace(".template", ""));
223
+ const content = (0, node_fs_1.readFileSync)(srcPath, "utf-8");
224
+ const processed = (0, templates_js_1.processTemplate)(content, vars);
225
+ // Ensure parent directory exists
226
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(destPath), { recursive: true });
227
+ (0, node_fs_1.writeFileSync)(destPath, processed, "utf-8");
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Create project from template
233
+ */
234
+ async function createProject(config) {
235
+ const spinner = (0, ora_1.default)("Creating project files...").start();
236
+ try {
237
+ // Create target directory
238
+ (0, node_fs_1.mkdirSync)(config.targetDir, { recursive: true });
239
+ // Get template variables
240
+ const vars = {
241
+ ...(0, templates_js_1.getDefaultVars)(config.name),
242
+ strict: config.typescript === "strict" ? "true" : "false",
243
+ };
244
+ // Get template path and copy files
245
+ const templatePath = (0, templates_js_1.getProjectTemplatePath)(config.template);
246
+ copyTemplateDir(templatePath, config.targetDir, vars);
247
+ spinner.succeed(chalk_1.default.green("Project files created"));
248
+ }
249
+ catch (error) {
250
+ spinner.fail(chalk_1.default.red("Failed to create project files"));
251
+ throw error;
252
+ }
253
+ }
254
+ /**
255
+ * Install project dependencies
256
+ */
257
+ async function installDependencies(packageManager, targetDir) {
258
+ const spinner = (0, ora_1.default)(`Installing dependencies with ${packageManager}...`).start();
259
+ return new Promise((resolve, reject) => {
260
+ const [cmd, ...args] = getInstallCommand(packageManager);
261
+ const child = (0, node_child_process_1.spawn)(cmd, args, {
262
+ cwd: targetDir,
263
+ stdio: "pipe",
264
+ shell: process.platform === "win32",
265
+ });
266
+ let stderr = "";
267
+ // Drain stdout — without a consumer the pipe buffer fills on verbose installs
268
+ // and blocks the "close" event, hanging the CLI indefinitely (N59).
269
+ child.stdout?.on("data", () => {
270
+ /* intentionally discarded */
271
+ });
272
+ child.stderr?.on("data", (data) => {
273
+ stderr += data.toString();
274
+ });
275
+ child.on("close", (code) => {
276
+ if (code === 0) {
277
+ spinner.succeed(chalk_1.default.green("Dependencies installed"));
278
+ resolve();
279
+ }
280
+ else {
281
+ spinner.fail(chalk_1.default.red("Failed to install dependencies"));
282
+ if (stderr) {
283
+ console.error(chalk_1.default.dim(stderr));
284
+ }
285
+ reject(new Error(`${packageManager} install failed with code ${code}`));
286
+ }
287
+ });
288
+ child.on("error", (error) => {
289
+ spinner.fail(chalk_1.default.red("Failed to install dependencies"));
290
+ reject(error);
291
+ });
292
+ });
293
+ }
294
+ /**
295
+ * Print success message with next steps
296
+ */
297
+ function printSuccess(config) {
298
+ console.log();
299
+ console.log(chalk_1.default.green.bold("✓ ") +
300
+ chalk_1.default.bold(`Project "${config.name}" created successfully!`));
301
+ console.log();
302
+ console.log(chalk_1.default.bold("Next steps:"));
303
+ console.log();
304
+ console.log(chalk_1.default.cyan(` cd ${config.name}`));
305
+ const runCmd = config.packageManager === "npm" ? "npm run" : config.packageManager;
306
+ console.log(chalk_1.default.cyan(` ${runCmd} dev`));
307
+ console.log();
308
+ console.log(chalk_1.default.dim("Useful commands:"));
309
+ console.log(chalk_1.default.dim(` ${runCmd} build Build your agents`));
310
+ console.log(chalk_1.default.dim(` ${runCmd} test Run tests`));
311
+ console.log(chalk_1.default.dim(` symplek add agent Add a new agent`));
312
+ console.log();
313
+ console.log(chalk_1.default.dim("Documentation: ") +
314
+ chalk_1.default.blue.underline("https://github.com/symplek/symplek#readme"));
315
+ console.log();
316
+ }
317
+ /**
318
+ * Create the init command
319
+ */
320
+ function initCommand() {
321
+ const cmd = new commander_1.Command("init")
322
+ .description("Initialize a new Symplek project")
323
+ .option("-n, --name <name>", "Project name (kebab-case)")
324
+ .option("-t, --template <template>", "Template: minimal, standard, full", "standard")
325
+ .option("-p, --pm <pm>", "Package manager: npm, pnpm, yarn, bun")
326
+ .option("-y, --yes", "Skip prompts and use defaults")
327
+ .action(async (options) => {
328
+ console.log();
329
+ console.log(chalk_1.default.bold.blue("🚀 Symplek Project Initializer"));
330
+ console.log();
331
+ try {
332
+ // Gather configuration
333
+ const config = await promptForConfig(options);
334
+ // Create project
335
+ await createProject(config);
336
+ // Install dependencies
337
+ await installDependencies(config.packageManager, config.targetDir);
338
+ // Print success
339
+ printSuccess(config);
340
+ }
341
+ catch (error) {
342
+ console.error();
343
+ console.error(chalk_1.default.red("Error: ") +
344
+ (error instanceof Error ? error.message : String(error)));
345
+ process.exit(1);
346
+ }
347
+ });
348
+ return cmd;
349
+ }
350
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `symplek migrate` command - scans codebase for zero-trust migration issues
3
+ * Detects patterns affected by the zero-trust breaking change and provides
4
+ * auto-fix for safe patterns.
5
+ */
6
+ import { Command } from "commander";
7
+ /** Represents a migration issue found in the codebase */
8
+ export interface MigrationIssue {
9
+ /** File path where the issue was found */
10
+ file: string;
11
+ /** Line number (1-indexed) */
12
+ line: number;
13
+ /** The problematic code snippet */
14
+ code: string;
15
+ /** How to fix it */
16
+ suggestion: string;
17
+ /** Can be auto-fixed */
18
+ autoFixable: boolean;
19
+ /** Pattern that matched */
20
+ patternId: string;
21
+ /** Human-readable description of the issue */
22
+ description?: string;
23
+ /** Column offset for precise replacement (auto-fix only) */
24
+ matchStart?: number;
25
+ /** Match end position (auto-fix only) */
26
+ matchEnd?: number;
27
+ }
28
+ /** Detect migration issues in a project */
29
+ export declare function detectMigrationIssues(projectPath: string): Promise<MigrationIssue[]>;
30
+ /** Apply auto-fixes to all files */
31
+ export declare function autoFixIssues(issues: MigrationIssue[]): Promise<{
32
+ filesModified: number;
33
+ fixesApplied: number;
34
+ }>;
35
+ /** Generate markdown migration report */
36
+ export declare function generateMigrationReport(issues: MigrationIssue[]): string;
37
+ /**
38
+ * Create the migrate command
39
+ */
40
+ export declare function migrateCommand(): Command;
41
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+OD,2CAA2C;AAC3C,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAuB3B;AAiED,oCAAoC;AACpC,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EAAE,GACvB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1D;AAMD,yCAAyC;AACzC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CA+ExE;AAmFD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CA+ExC"}