@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,515 @@
1
+ "use strict";
2
+ /**
3
+ * `symplek validate` command - validates YAML agent definitions
4
+ * @description Validates YAML files against the Symplek agent schema with line-number error reporting
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AGENT_SCHEMA = void 0;
11
+ exports.validateFile = validateFile;
12
+ exports.validateCommand = validateCommand;
13
+ const node_fs_1 = require("node:fs");
14
+ const ajv_1 = __importDefault(require("ajv"));
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ const commander_1 = require("commander");
17
+ const glob_1 = require("glob");
18
+ const js_yaml_1 = __importDefault(require("js-yaml"));
19
+ const models_js_1 = require("../models.js");
20
+ const naming_js_1 = require("../naming.js");
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ // SCHEMA (inline to avoid cross-package imports)
23
+ // ─────────────────────────────────────────────────────────────────────────────
24
+ const AGENT_SCHEMA = {
25
+ $schema: "http://json-schema.org/draft-07/schema#",
26
+ type: "object",
27
+ required: ["name", "model", "systemPrompt"],
28
+ properties: {
29
+ name: {
30
+ type: "string",
31
+ pattern: naming_js_1.KEBAB_CASE_REGEX.source,
32
+ },
33
+ model: {
34
+ type: "string",
35
+ pattern: models_js_1.MODEL_ID_PATTERN,
36
+ },
37
+ systemPrompt: {
38
+ type: "string",
39
+ minLength: 1,
40
+ },
41
+ description: { type: "string" },
42
+ version: {
43
+ type: "string",
44
+ pattern: "^\\d+\\.\\d+\\.\\d+$",
45
+ },
46
+ temperature: {
47
+ type: "number",
48
+ minimum: 0,
49
+ maximum: 2,
50
+ },
51
+ maxTokens: {
52
+ type: "integer",
53
+ minimum: 1,
54
+ maximum: 128000,
55
+ },
56
+ timeout: {
57
+ type: "integer",
58
+ minimum: 1000,
59
+ maximum: 300000,
60
+ },
61
+ retries: {
62
+ type: "object",
63
+ properties: {
64
+ maxAttempts: { type: "integer", minimum: 1, maximum: 10 },
65
+ backoffMs: { type: "integer", minimum: 100, maximum: 60000 },
66
+ backoffMultiplier: { type: "number", minimum: 1, maximum: 5 },
67
+ },
68
+ additionalProperties: false,
69
+ },
70
+ tools: {
71
+ type: "array",
72
+ items: {
73
+ oneOf: [
74
+ { type: "string" },
75
+ {
76
+ type: "object",
77
+ required: ["name"],
78
+ properties: {
79
+ name: { type: "string" },
80
+ enabled: { type: "boolean" },
81
+ config: { type: "object", additionalProperties: true },
82
+ },
83
+ additionalProperties: false,
84
+ },
85
+ ],
86
+ },
87
+ },
88
+ tracking: {
89
+ type: "object",
90
+ properties: {
91
+ enabled: { type: "boolean" },
92
+ defaultSource: {
93
+ type: "string",
94
+ enum: ["agent", "user", "tool", "verified", "synthesized"],
95
+ },
96
+ defaultConfidence: { type: "number", minimum: 0, maximum: 1 },
97
+ requireVerification: { type: "boolean" },
98
+ },
99
+ additionalProperties: false,
100
+ },
101
+ operators: {
102
+ type: "object",
103
+ properties: {
104
+ retry: {
105
+ type: "object",
106
+ properties: {
107
+ maxAttempts: { type: "integer", minimum: 1, maximum: 10 },
108
+ backoffMs: { type: "integer", minimum: 100 },
109
+ },
110
+ additionalProperties: false,
111
+ },
112
+ timeout: {
113
+ type: "object",
114
+ properties: {
115
+ ms: { type: "integer", minimum: 1000 },
116
+ fallback: { type: "string" },
117
+ },
118
+ additionalProperties: false,
119
+ },
120
+ fallback: {
121
+ type: "object",
122
+ properties: {
123
+ agent: { type: "string" },
124
+ value: {},
125
+ },
126
+ additionalProperties: false,
127
+ },
128
+ challenge: {
129
+ type: "object",
130
+ properties: {
131
+ challenger: { type: "string" },
132
+ minConfidence: { type: "number", minimum: 0, maximum: 1 },
133
+ },
134
+ additionalProperties: false,
135
+ },
136
+ consensus: {
137
+ type: "object",
138
+ properties: {
139
+ agents: { type: "array", items: { type: "string" } },
140
+ quorum: { type: "number", minimum: 0.5, maximum: 1 },
141
+ weights: {
142
+ type: "object",
143
+ additionalProperties: { type: "number" },
144
+ },
145
+ },
146
+ additionalProperties: false,
147
+ },
148
+ },
149
+ additionalProperties: false,
150
+ },
151
+ memory: {
152
+ type: "object",
153
+ properties: {
154
+ episodic: { type: "boolean" },
155
+ semantic: { type: "boolean" },
156
+ procedural: { type: "boolean" },
157
+ maxEpisodes: { type: "integer", minimum: 1 },
158
+ maxFacts: { type: "integer", minimum: 1 },
159
+ },
160
+ additionalProperties: false,
161
+ },
162
+ tags: { type: "array", items: { type: "string" } },
163
+ metadata: { type: "object", additionalProperties: true },
164
+ },
165
+ additionalProperties: false,
166
+ };
167
+ exports.AGENT_SCHEMA = AGENT_SCHEMA;
168
+ // ─────────────────────────────────────────────────────────────────────────────
169
+ // AJV SETUP
170
+ // ─────────────────────────────────────────────────────────────────────────────
171
+ const ajv = new ajv_1.default({
172
+ allErrors: true,
173
+ verbose: true,
174
+ strict: false,
175
+ });
176
+ const validateSchema = ajv.compile(AGENT_SCHEMA);
177
+ // ─────────────────────────────────────────────────────────────────────────────
178
+ // ERROR FORMATTING
179
+ // ─────────────────────────────────────────────────────────────────────────────
180
+ /** Format an AJV error into a human-readable message */
181
+ function formatAjvError(error) {
182
+ switch (error.keyword) {
183
+ case "required": {
184
+ const params = error.params;
185
+ return `Missing required field: '${params.missingProperty}'`;
186
+ }
187
+ case "enum": {
188
+ const params = error.params;
189
+ return `Invalid value. Allowed: ${params.allowedValues.join(", ")}`;
190
+ }
191
+ case "type": {
192
+ const params = error.params;
193
+ return `Type mismatch: expected ${params.type}`;
194
+ }
195
+ case "pattern": {
196
+ return "Invalid format";
197
+ }
198
+ case "minimum": {
199
+ const params = error.params;
200
+ return `Value too low: minimum is ${params.limit}`;
201
+ }
202
+ case "maximum": {
203
+ const params = error.params;
204
+ return `Value too high: maximum is ${params.limit}`;
205
+ }
206
+ case "minLength": {
207
+ const params = error.params;
208
+ return `Value too short: minimum length is ${params.limit}`;
209
+ }
210
+ case "additionalProperties": {
211
+ const params = error.params;
212
+ return `Unknown field: '${params.additionalProperty}'`;
213
+ }
214
+ default:
215
+ return error.message || "Validation error";
216
+ }
217
+ }
218
+ /** Get a fix suggestion for common validation errors */
219
+ function getSuggestion(error) {
220
+ const instancePath = error.instancePath || "";
221
+ switch (error.keyword) {
222
+ case "required": {
223
+ const params = error.params;
224
+ const field = params.missingProperty;
225
+ if (field === "name")
226
+ return "Add 'name' field like: name: my-agent";
227
+ if (field === "model")
228
+ return `Add 'model' field like: model: ${models_js_1.DEFAULT_MODEL}`;
229
+ if (field === "systemPrompt")
230
+ return "Add 'systemPrompt' field with your agent instructions";
231
+ return `Add the required '${field}' field`;
232
+ }
233
+ case "enum": {
234
+ if (instancePath.includes("/defaultSource")) {
235
+ return "Use one of: agent, user, tool, verified, synthesized";
236
+ }
237
+ return undefined;
238
+ }
239
+ case "pattern": {
240
+ if (instancePath.endsWith("/model")) {
241
+ return models_js_1.MODEL_ID_HINT;
242
+ }
243
+ if (instancePath.endsWith("/name")) {
244
+ return "Use kebab-case: lowercase letters, numbers, and hyphens (e.g., my-agent-v2)";
245
+ }
246
+ if (instancePath.endsWith("/version")) {
247
+ return "Use semantic versioning: X.Y.Z (e.g., 1.0.0)";
248
+ }
249
+ return undefined;
250
+ }
251
+ case "additionalProperties": {
252
+ const params = error.params;
253
+ return `Remove unknown field '${params.additionalProperty}' or check for typos`;
254
+ }
255
+ default:
256
+ return undefined;
257
+ }
258
+ }
259
+ // ─────────────────────────────────────────────────────────────────────────────
260
+ // LINE NUMBER TRACKING
261
+ // ─────────────────────────────────────────────────────────────────────────────
262
+ /** Build a map of YAML field paths to line numbers */
263
+ function buildLineMap(content) {
264
+ const lineMap = new Map();
265
+ const lines = content.split("\n");
266
+ const pathStack = [];
267
+ for (let i = 0; i < lines.length; i++) {
268
+ const line = lines[i];
269
+ const lineNum = i + 1;
270
+ if (!line.trim() || line.trim().startsWith("#"))
271
+ continue;
272
+ const keyMatch = line.match(/^(\s*)([a-zA-Z_][a-zA-Z0-9_-]*):/);
273
+ if (keyMatch) {
274
+ const indent = keyMatch[1].length;
275
+ const key = keyMatch[2];
276
+ while (pathStack.length > 0 &&
277
+ pathStack[pathStack.length - 1].indent >= indent) {
278
+ pathStack.pop();
279
+ }
280
+ const path = pathStack.length > 0
281
+ ? `${pathStack.map((p) => p.key).join(".")}.${key}`
282
+ : key;
283
+ lineMap.set(path, lineNum);
284
+ pathStack.push({ indent, key });
285
+ }
286
+ }
287
+ return lineMap;
288
+ }
289
+ /** Convert AJV instancePath to dot notation */
290
+ function instancePathToFieldPath(instancePath) {
291
+ if (!instancePath || instancePath === "/")
292
+ return "";
293
+ return instancePath.slice(1).replace(/\//g, ".");
294
+ }
295
+ /** Get line number for an error from the lineMap */
296
+ function getLineNumber(lineMap, instancePath, error) {
297
+ if (error.keyword === "required") {
298
+ const params = error.params;
299
+ const basePath = instancePathToFieldPath(instancePath);
300
+ const fullPath = basePath
301
+ ? `${basePath}.${params.missingProperty}`
302
+ : params.missingProperty;
303
+ const line = lineMap.get(fullPath);
304
+ if (line !== undefined)
305
+ return line;
306
+ if (basePath) {
307
+ const parentLine = lineMap.get(basePath);
308
+ if (parentLine !== undefined)
309
+ return parentLine;
310
+ }
311
+ return 1;
312
+ }
313
+ const fieldPath = instancePathToFieldPath(instancePath);
314
+ const directLine = lineMap.get(fieldPath);
315
+ if (directLine !== undefined)
316
+ return directLine;
317
+ const parts = fieldPath.split(".");
318
+ while (parts.length > 0) {
319
+ parts.pop();
320
+ const parentPath = parts.join(".");
321
+ const parentLine = lineMap.get(parentPath);
322
+ if (parentLine !== undefined)
323
+ return parentLine;
324
+ }
325
+ return 1;
326
+ }
327
+ // ─────────────────────────────────────────────────────────────────────────────
328
+ // FILE VALIDATION
329
+ // ─────────────────────────────────────────────────────────────────────────────
330
+ /** Validate a single YAML file */
331
+ function validateFile(filePath) {
332
+ const errors = [];
333
+ // Check file exists
334
+ if (!(0, node_fs_1.existsSync)(filePath)) {
335
+ return {
336
+ file: filePath,
337
+ valid: false,
338
+ errors: [
339
+ {
340
+ file: filePath,
341
+ line: 0,
342
+ column: 0,
343
+ message: "File not found",
344
+ },
345
+ ],
346
+ };
347
+ }
348
+ let content;
349
+ try {
350
+ content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
351
+ }
352
+ catch (err) {
353
+ return {
354
+ file: filePath,
355
+ valid: false,
356
+ errors: [
357
+ {
358
+ file: filePath,
359
+ line: 0,
360
+ column: 0,
361
+ message: `Cannot read file: ${err instanceof Error ? err.message : String(err)}`,
362
+ },
363
+ ],
364
+ };
365
+ }
366
+ // Build line map for error location
367
+ const lineMap = buildLineMap(content);
368
+ // Parse YAML
369
+ let parsed;
370
+ try {
371
+ parsed = js_yaml_1.default.load(content, { filename: filePath });
372
+ }
373
+ catch (err) {
374
+ if (err instanceof Error && "mark" in err) {
375
+ const yamlError = err;
376
+ errors.push({
377
+ file: filePath,
378
+ line: yamlError.mark ? yamlError.mark.line + 1 : 1,
379
+ column: yamlError.mark ? yamlError.mark.column + 1 : 1,
380
+ message: yamlError.message,
381
+ suggestion: "Check YAML syntax - ensure proper indentation and quoting",
382
+ });
383
+ }
384
+ else {
385
+ errors.push({
386
+ file: filePath,
387
+ line: 1,
388
+ column: 1,
389
+ message: err instanceof Error ? err.message : "YAML parse error",
390
+ suggestion: "Check YAML syntax is valid",
391
+ });
392
+ }
393
+ return { file: filePath, valid: false, errors };
394
+ }
395
+ // Check it's an object
396
+ if (typeof parsed !== "object" || parsed === null) {
397
+ errors.push({
398
+ file: filePath,
399
+ line: 1,
400
+ column: 1,
401
+ message: "YAML must be an object at root level",
402
+ suggestion: "Ensure the YAML file contains key-value pairs, not a scalar",
403
+ });
404
+ return { file: filePath, valid: false, errors };
405
+ }
406
+ // Validate against schema
407
+ const isValid = validateSchema(parsed);
408
+ if (!isValid && validateSchema.errors) {
409
+ for (const error of validateSchema.errors) {
410
+ const line = getLineNumber(lineMap, error.instancePath, error);
411
+ errors.push({
412
+ file: filePath,
413
+ line,
414
+ column: 1,
415
+ message: formatAjvError(error),
416
+ suggestion: getSuggestion(error),
417
+ });
418
+ }
419
+ }
420
+ // The schema checks the name's shape. A name can have the right shape and
421
+ // still be unusable as the exported function's name.
422
+ const agentName = parsed.name;
423
+ if (typeof agentName === "string" && naming_js_1.KEBAB_CASE_REGEX.test(agentName)) {
424
+ const nameProblem = (0, naming_js_1.agentNameProblem)(agentName);
425
+ if (nameProblem) {
426
+ errors.push({
427
+ file: filePath,
428
+ line: lineMap.get("/name") ?? 1,
429
+ column: 1,
430
+ message: nameProblem,
431
+ });
432
+ }
433
+ }
434
+ return {
435
+ file: filePath,
436
+ valid: errors.length === 0,
437
+ errors,
438
+ };
439
+ }
440
+ // ─────────────────────────────────────────────────────────────────────────────
441
+ // OUTPUT FORMATTING
442
+ // ─────────────────────────────────────────────────────────────────────────────
443
+ /** Format a validation error for console output */
444
+ function formatError(error) {
445
+ const location = `${error.file}:${error.line}:${error.column}`;
446
+ let output = chalk_1.default.red(`${location} - ${error.message}`);
447
+ if (error.suggestion) {
448
+ output += `\n ${chalk_1.default.yellow("→")} ${chalk_1.default.dim(error.suggestion)}`;
449
+ }
450
+ return output;
451
+ }
452
+ /** Print validation summary */
453
+ function printSummary(errorCount, errorFileCount, validCount, quiet) {
454
+ if (quiet)
455
+ return;
456
+ console.log();
457
+ if (errorCount > 0) {
458
+ const fileWord = errorFileCount === 1 ? "file" : "files";
459
+ console.log(chalk_1.default.red(`✗ ${errorCount} error${errorCount === 1 ? "" : "s"} in ${errorFileCount} ${fileWord}`));
460
+ }
461
+ if (validCount > 0) {
462
+ console.log(chalk_1.default.green(`✓ ${validCount} file${validCount === 1 ? "" : "s"} valid`));
463
+ }
464
+ }
465
+ // ─────────────────────────────────────────────────────────────────────────────
466
+ // COMMAND
467
+ // ─────────────────────────────────────────────────────────────────────────────
468
+ /**
469
+ * Create the validate command
470
+ */
471
+ function validateCommand() {
472
+ return new commander_1.Command("validate")
473
+ .description("Validate YAML agent definitions against the schema")
474
+ .argument("[pattern]", "Glob pattern for YAML files", "agents/**/*.yaml")
475
+ .option("-q, --quiet", "Suppress output (just exit code)")
476
+ .option("-s, --strict", "Fail on warnings too")
477
+ .action(async (pattern, options) => {
478
+ const { quiet = false } = options;
479
+ // Find files matching pattern
480
+ const files = await (0, glob_1.glob)(pattern, {
481
+ cwd: process.cwd(),
482
+ nodir: true,
483
+ absolute: false,
484
+ });
485
+ if (files.length === 0) {
486
+ if (!quiet) {
487
+ console.log(chalk_1.default.yellow(`No YAML files found matching pattern: ${pattern}`));
488
+ }
489
+ process.exit(0);
490
+ }
491
+ // Validate each file
492
+ const results = [];
493
+ for (const file of files) {
494
+ results.push(validateFile(file));
495
+ }
496
+ // Count results
497
+ const validFiles = results.filter((r) => r.valid);
498
+ const invalidFiles = results.filter((r) => !r.valid);
499
+ const totalErrors = invalidFiles.reduce((sum, r) => sum + r.errors.length, 0);
500
+ // Print errors
501
+ if (!quiet) {
502
+ for (const result of invalidFiles) {
503
+ for (const error of result.errors) {
504
+ console.log(formatError(error));
505
+ console.log();
506
+ }
507
+ }
508
+ }
509
+ // Print summary
510
+ printSummary(totalErrors, invalidFiles.length, validFiles.length, quiet);
511
+ // Exit with appropriate code
512
+ process.exit(invalidFiles.length > 0 ? 1 : 0);
513
+ });
514
+ }
515
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { createAddCommand, generateAgentTest, generateAgentTypeScript, generateAgentYaml, kebabToCamel, validateAgentName, } from "./commands/add.js";
2
+ export { type GenerateResult, generateCommand, generateFile, } from "./commands/generate.js";
3
+ export { createProject, initCommand, installDependencies, type PackageManager, type ProjectConfig, printSuccess, promptForConfig, type TypeScriptConfig, } from "./commands/init.js";
4
+ export { autoFixIssues, detectMigrationIssues, generateMigrationReport, type MigrationIssue, migrateCommand, } from "./commands/migrate.js";
5
+ export { AGENT_SCHEMA, type FileValidationResult, type ValidationError, validateCommand, validateFile, } from "./commands/validate.js";
6
+ export { type AgentType, getAgentTemplatePath, getDefaultVars, getProjectTemplatePath, getProjectTierFiles, getTemplatesRoot, loadAgentTemplate, loadProjectTemplate, type ProjectTier, processTemplate, type TemplateVars, } from "./utils/templates.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,cAAc,EACnB,eAAe,EACf,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,YAAY,EACZ,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,cAAc,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,eAAe,EACf,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,SAAS,EACd,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,WAAW,EAChB,eAAe,EACf,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processTemplate = exports.loadProjectTemplate = exports.loadAgentTemplate = exports.getTemplatesRoot = exports.getProjectTierFiles = exports.getProjectTemplatePath = exports.getDefaultVars = exports.getAgentTemplatePath = exports.validateFile = exports.validateCommand = exports.AGENT_SCHEMA = exports.migrateCommand = exports.generateMigrationReport = exports.detectMigrationIssues = exports.autoFixIssues = exports.promptForConfig = exports.printSuccess = exports.installDependencies = exports.initCommand = exports.createProject = exports.generateFile = exports.generateCommand = exports.validateAgentName = exports.kebabToCamel = exports.generateAgentYaml = exports.generateAgentTypeScript = exports.generateAgentTest = exports.createAddCommand = void 0;
4
+ // Library exports — no side effects. For CLI, import "@symplek/cli/cli" instead.
5
+ // ⚠️ FATAL #5 FIX (2026-07-07): CLI execution split into cli.ts.
6
+ // This file exports ONLY programmatic APIs. It does NOT call process.exit().
7
+ var add_js_1 = require("./commands/add.js");
8
+ Object.defineProperty(exports, "createAddCommand", { enumerable: true, get: function () { return add_js_1.createAddCommand; } });
9
+ Object.defineProperty(exports, "generateAgentTest", { enumerable: true, get: function () { return add_js_1.generateAgentTest; } });
10
+ Object.defineProperty(exports, "generateAgentTypeScript", { enumerable: true, get: function () { return add_js_1.generateAgentTypeScript; } });
11
+ Object.defineProperty(exports, "generateAgentYaml", { enumerable: true, get: function () { return add_js_1.generateAgentYaml; } });
12
+ Object.defineProperty(exports, "kebabToCamel", { enumerable: true, get: function () { return add_js_1.kebabToCamel; } });
13
+ Object.defineProperty(exports, "validateAgentName", { enumerable: true, get: function () { return add_js_1.validateAgentName; } });
14
+ // Export generate command for programmatic use
15
+ var generate_js_1 = require("./commands/generate.js");
16
+ Object.defineProperty(exports, "generateCommand", { enumerable: true, get: function () { return generate_js_1.generateCommand; } });
17
+ Object.defineProperty(exports, "generateFile", { enumerable: true, get: function () { return generate_js_1.generateFile; } });
18
+ // Export init command types and functions for programmatic use
19
+ var init_js_1 = require("./commands/init.js");
20
+ Object.defineProperty(exports, "createProject", { enumerable: true, get: function () { return init_js_1.createProject; } });
21
+ Object.defineProperty(exports, "initCommand", { enumerable: true, get: function () { return init_js_1.initCommand; } });
22
+ Object.defineProperty(exports, "installDependencies", { enumerable: true, get: function () { return init_js_1.installDependencies; } });
23
+ Object.defineProperty(exports, "printSuccess", { enumerable: true, get: function () { return init_js_1.printSuccess; } });
24
+ Object.defineProperty(exports, "promptForConfig", { enumerable: true, get: function () { return init_js_1.promptForConfig; } });
25
+ // Export migrate command for programmatic use
26
+ var migrate_js_1 = require("./commands/migrate.js");
27
+ Object.defineProperty(exports, "autoFixIssues", { enumerable: true, get: function () { return migrate_js_1.autoFixIssues; } });
28
+ Object.defineProperty(exports, "detectMigrationIssues", { enumerable: true, get: function () { return migrate_js_1.detectMigrationIssues; } });
29
+ Object.defineProperty(exports, "generateMigrationReport", { enumerable: true, get: function () { return migrate_js_1.generateMigrationReport; } });
30
+ Object.defineProperty(exports, "migrateCommand", { enumerable: true, get: function () { return migrate_js_1.migrateCommand; } });
31
+ // Export validate command for programmatic use
32
+ var validate_js_1 = require("./commands/validate.js");
33
+ Object.defineProperty(exports, "AGENT_SCHEMA", { enumerable: true, get: function () { return validate_js_1.AGENT_SCHEMA; } });
34
+ Object.defineProperty(exports, "validateCommand", { enumerable: true, get: function () { return validate_js_1.validateCommand; } });
35
+ Object.defineProperty(exports, "validateFile", { enumerable: true, get: function () { return validate_js_1.validateFile; } });
36
+ // Export template utilities for programmatic use
37
+ var templates_js_1 = require("./utils/templates.js");
38
+ Object.defineProperty(exports, "getAgentTemplatePath", { enumerable: true, get: function () { return templates_js_1.getAgentTemplatePath; } });
39
+ Object.defineProperty(exports, "getDefaultVars", { enumerable: true, get: function () { return templates_js_1.getDefaultVars; } });
40
+ Object.defineProperty(exports, "getProjectTemplatePath", { enumerable: true, get: function () { return templates_js_1.getProjectTemplatePath; } });
41
+ Object.defineProperty(exports, "getProjectTierFiles", { enumerable: true, get: function () { return templates_js_1.getProjectTierFiles; } });
42
+ Object.defineProperty(exports, "getTemplatesRoot", { enumerable: true, get: function () { return templates_js_1.getTemplatesRoot; } });
43
+ Object.defineProperty(exports, "loadAgentTemplate", { enumerable: true, get: function () { return templates_js_1.loadAgentTemplate; } });
44
+ Object.defineProperty(exports, "loadProjectTemplate", { enumerable: true, get: function () { return templates_js_1.loadProjectTemplate; } });
45
+ Object.defineProperty(exports, "processTemplate", { enumerable: true, get: function () { return templates_js_1.processTemplate; } });
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iFAAiF;AACjF,iEAAiE;AACjE,6EAA6E;AAC7E,4CAO2B;AANzB,0GAAA,gBAAgB,OAAA;AAChB,2GAAA,iBAAiB,OAAA;AACjB,iHAAA,uBAAuB,OAAA;AACvB,2GAAA,iBAAiB,OAAA;AACjB,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AAEnB,+CAA+C;AAC/C,sDAIgC;AAF9B,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AAEd,+DAA+D;AAC/D,8CAS4B;AAR1B,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,8GAAA,mBAAmB,OAAA;AAGnB,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AAGjB,8CAA8C;AAC9C,oDAM+B;AAL7B,2GAAA,aAAa,OAAA;AACb,mHAAA,qBAAqB,OAAA;AACrB,qHAAA,uBAAuB,OAAA;AAEvB,4GAAA,cAAc,OAAA;AAEhB,+CAA+C;AAC/C,sDAMgC;AAL9B,2GAAA,YAAY,OAAA;AAGZ,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AAEd,iDAAiD;AACjD,qDAY8B;AAV5B,oHAAA,oBAAoB,OAAA;AACpB,8GAAA,cAAc,OAAA;AACd,sHAAA,sBAAsB,OAAA;AACtB,mHAAA,mBAAmB,OAAA;AACnB,gHAAA,gBAAgB,OAAA;AAChB,iHAAA,iBAAiB,OAAA;AACjB,mHAAA,mBAAmB,OAAA;AAEnB,+GAAA,eAAe,OAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The one place the CLI knows about model ids.
3
+ *
4
+ * Providers add and retire models far more often than this CLI is released,
5
+ * so the CLI does not decide which models exist. Any well-formed id passes
6
+ * `validate` and `generate`; the provider is the authority on whether it is
7
+ * live. The list below is only what `symplek add agent` offers in its picker.
8
+ */
9
+ /** Offered by the interactive picker. Mirrors @symplek/core's default model table. */
10
+ export declare const SUGGESTED_MODELS: readonly ["gpt-4o", "gpt-4o-mini", "claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5", "gemini-3.8-flash", "gemini-3.5-flash-lite"];
11
+ /** Used when the caller names no model. */
12
+ export declare const DEFAULT_MODEL: string;
13
+ /**
14
+ * The shape of a model id: letters, digits, and `. _ : / -`, starting with a
15
+ * letter or digit. Wide enough for dated snapshots, fine-tune ids and
16
+ * `vendor/model` routes; narrow enough that an id can be written into YAML or
17
+ * TypeScript without quoting hazards (no whitespace, quotes or newlines).
18
+ */
19
+ export declare const MODEL_ID_PATTERN = "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$";
20
+ /** True when `value` is a well-formed model id. */
21
+ export declare function isModelId(value: unknown): value is string;
22
+ /** One-line hint shown when a model id is missing or malformed. */
23
+ export declare const MODEL_ID_HINT: string;
24
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,6IAQnB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,MAA4B,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAIvE,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEzD;AAED,mEAAmE;AACnE,eAAO,MAAM,aAAa,QAAyE,CAAC"}