@struere/cli 0.2.4 → 0.2.7

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 (81) hide show
  1. package/dist/commands/build.d.ts +3 -0
  2. package/dist/commands/build.d.ts.map +1 -0
  3. package/dist/commands/build.js +61 -0
  4. package/dist/commands/build.js.map +1 -0
  5. package/dist/commands/deploy.d.ts +3 -0
  6. package/dist/commands/deploy.d.ts.map +1 -0
  7. package/dist/commands/deploy.js +145 -0
  8. package/dist/commands/deploy.js.map +1 -0
  9. package/dist/commands/dev.d.ts +3 -0
  10. package/dist/commands/dev.d.ts.map +1 -0
  11. package/dist/commands/dev.js +418 -0
  12. package/dist/commands/dev.js.map +1 -0
  13. package/dist/commands/init.d.ts +5 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +241 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/login.d.ts +5 -0
  18. package/dist/commands/login.d.ts.map +1 -0
  19. package/dist/commands/login.js +175 -0
  20. package/dist/commands/login.js.map +1 -0
  21. package/dist/commands/logout.d.ts +3 -0
  22. package/dist/commands/logout.d.ts.map +1 -0
  23. package/dist/commands/logout.js +19 -0
  24. package/dist/commands/logout.js.map +1 -0
  25. package/dist/commands/logs.d.ts +3 -0
  26. package/dist/commands/logs.d.ts.map +1 -0
  27. package/dist/commands/logs.js +103 -0
  28. package/dist/commands/logs.js.map +1 -0
  29. package/dist/commands/state.d.ts +3 -0
  30. package/dist/commands/state.d.ts.map +1 -0
  31. package/dist/commands/state.js +71 -0
  32. package/dist/commands/state.js.map +1 -0
  33. package/dist/commands/test.d.ts +3 -0
  34. package/dist/commands/test.d.ts.map +1 -0
  35. package/dist/commands/test.js +188 -0
  36. package/dist/commands/test.js.map +1 -0
  37. package/dist/commands/validate.d.ts +3 -0
  38. package/dist/commands/validate.d.ts.map +1 -0
  39. package/dist/commands/validate.js +71 -0
  40. package/dist/commands/validate.js.map +1 -0
  41. package/dist/commands/whoami.d.ts +3 -0
  42. package/dist/commands/whoami.d.ts.map +1 -0
  43. package/dist/commands/whoami.js +69 -0
  44. package/dist/commands/whoami.js.map +1 -0
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +74 -46
  48. package/dist/index.js.map +1 -0
  49. package/dist/templates/index.d.ts +13 -0
  50. package/dist/templates/index.d.ts.map +1 -0
  51. package/dist/templates/index.js +246 -0
  52. package/dist/templates/index.js.map +1 -0
  53. package/dist/utils/agent.d.ts +3 -0
  54. package/dist/utils/agent.d.ts.map +1 -0
  55. package/dist/utils/agent.js +25 -0
  56. package/dist/utils/agent.js.map +1 -0
  57. package/dist/utils/api.d.ts +150 -0
  58. package/dist/utils/api.d.ts.map +1 -0
  59. package/dist/utils/api.js +107 -0
  60. package/dist/utils/api.js.map +1 -0
  61. package/dist/utils/config.d.ts +3 -0
  62. package/dist/utils/config.d.ts.map +1 -0
  63. package/dist/utils/config.js +43 -0
  64. package/dist/utils/config.js.map +1 -0
  65. package/dist/utils/credentials.d.ts +23 -0
  66. package/dist/utils/credentials.d.ts.map +1 -0
  67. package/dist/utils/credentials.js +51 -0
  68. package/dist/utils/credentials.js.map +1 -0
  69. package/dist/utils/project.d.ts +12 -0
  70. package/dist/utils/project.d.ts.map +1 -0
  71. package/dist/utils/project.js +24 -0
  72. package/dist/utils/project.js.map +1 -0
  73. package/dist/utils/scaffold.d.ts +17 -0
  74. package/dist/utils/scaffold.d.ts.map +1 -0
  75. package/dist/utils/scaffold.js +106 -0
  76. package/dist/utils/scaffold.js.map +1 -0
  77. package/dist/utils/validate.d.ts +3 -0
  78. package/dist/utils/validate.d.ts.map +1 -0
  79. package/dist/utils/validate.js +79 -0
  80. package/dist/utils/validate.js.map +1 -0
  81. package/package.json +2 -2
@@ -0,0 +1,79 @@
1
+ export function validateAgent(agent) {
2
+ const errors = [];
3
+ if (!agent.name) {
4
+ errors.push('Agent name is required');
5
+ }
6
+ else if (!/^[a-z0-9-]+$/.test(agent.name)) {
7
+ errors.push('Agent name must be lowercase alphanumeric with hyphens only');
8
+ }
9
+ if (!agent.version) {
10
+ errors.push('Agent version is required');
11
+ }
12
+ else if (!/^\d+\.\d+\.\d+/.test(agent.version)) {
13
+ errors.push('Agent version must follow semver format (e.g., 1.0.0)');
14
+ }
15
+ if (!agent.systemPrompt) {
16
+ errors.push('System prompt is required');
17
+ }
18
+ else if (typeof agent.systemPrompt === 'string' && agent.systemPrompt.trim().length === 0) {
19
+ errors.push('System prompt cannot be empty');
20
+ }
21
+ if (agent.model) {
22
+ const validProviders = ['anthropic', 'openai', 'google', 'custom'];
23
+ if (!validProviders.includes(agent.model.provider)) {
24
+ errors.push(`Invalid model provider: ${agent.model.provider}`);
25
+ }
26
+ if (!agent.model.name) {
27
+ errors.push('Model name is required when model is specified');
28
+ }
29
+ if (agent.model.temperature !== undefined) {
30
+ if (agent.model.temperature < 0 || agent.model.temperature > 2) {
31
+ errors.push('Model temperature must be between 0 and 2');
32
+ }
33
+ }
34
+ if (agent.model.maxTokens !== undefined) {
35
+ if (agent.model.maxTokens < 1) {
36
+ errors.push('Model maxTokens must be at least 1');
37
+ }
38
+ }
39
+ }
40
+ if (agent.tools) {
41
+ for (const tool of agent.tools) {
42
+ const toolErrors = validateTool(tool);
43
+ errors.push(...toolErrors);
44
+ }
45
+ }
46
+ if (agent.state) {
47
+ const validStorage = ['memory', 'redis', 'postgres', 'custom'];
48
+ if (!validStorage.includes(agent.state.storage)) {
49
+ errors.push(`Invalid state storage: ${agent.state.storage}`);
50
+ }
51
+ if (agent.state.ttl !== undefined && agent.state.ttl < 0) {
52
+ errors.push('State TTL must be non-negative');
53
+ }
54
+ }
55
+ return errors;
56
+ }
57
+ function validateTool(tool) {
58
+ const errors = [];
59
+ if (!tool.name) {
60
+ errors.push('Tool name is required');
61
+ }
62
+ else if (!/^[a-z_][a-z0-9_]*$/.test(tool.name)) {
63
+ errors.push(`Tool name "${tool.name}" must be snake_case`);
64
+ }
65
+ if (!tool.description) {
66
+ errors.push(`Tool "${tool.name || 'unknown'}" requires a description`);
67
+ }
68
+ if (!tool.parameters) {
69
+ errors.push(`Tool "${tool.name || 'unknown'}" requires parameters definition`);
70
+ }
71
+ else if (tool.parameters.type !== 'object') {
72
+ errors.push(`Tool "${tool.name || 'unknown'}" parameters type must be "object"`);
73
+ }
74
+ if (typeof tool.handler !== 'function') {
75
+ errors.push(`Tool "${tool.name || 'unknown'}" requires a handler function`);
76
+ }
77
+ return errors;
78
+ }
79
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@struere/cli",
3
- "version": "0.2.4",
3
+ "version": "0.2.7",
4
4
  "description": "CLI tool for developing, testing, and deploying AI agents",
5
5
  "keywords": [
6
6
  "ai",
@@ -37,7 +37,7 @@
37
37
  "test": "bun test",
38
38
  "prepublishOnly": "bun run build && bun run verify-build",
39
39
  "bump": "node scripts/bump-version.cjs",
40
- "verify-build": "node -e \"const pkg = require('./package.json'); const fs = require('fs'); const bundle = fs.readFileSync('./dist/index.js', 'utf8'); const match = bundle.match(/version\\(\\\"([^\\\"]+)\\\"\\)/); if (!match || match[1] !== pkg.version) { console.error('Version mismatch: package.json=' + pkg.version + ' bundle=' + (match ? match[1] : 'not found')); process.exit(1); } console.log('Build verified: v' + pkg.version);\""
40
+ "verify-build": "node -e \"const pkg = require('./package.json'); const fs = require('fs'); const bundle = fs.readFileSync('./dist/index.js', 'utf8'); const match = bundle.match(/CURRENT_VERSION\\s*=\\s*[\\\"']([^\\\"']+)[\\\"']/); if (!match || match[1] !== pkg.version) { console.error('Version mismatch: package.json=' + pkg.version + ' bundle=' + (match ? match[1] : 'not found')); process.exit(1); } console.log('Build verified: v' + pkg.version);\""
41
41
  },
42
42
  "dependencies": {
43
43
  "@struere/core": "^0.1.0",