@agenticflow/cli 0.0.1-beta.13

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 (105) hide show
  1. package/README.md +125 -0
  2. package/TECHNICAL_DEBT.md +121 -0
  3. package/dist/builder/bundler.d.ts +17 -0
  4. package/dist/builder/bundler.d.ts.map +1 -0
  5. package/dist/builder/bundler.js +170 -0
  6. package/dist/builder/bundler.js.map +1 -0
  7. package/dist/builder/index.d.ts +6 -0
  8. package/dist/builder/index.d.ts.map +1 -0
  9. package/dist/builder/index.js +6 -0
  10. package/dist/builder/index.js.map +1 -0
  11. package/dist/builder/packager.d.ts +41 -0
  12. package/dist/builder/packager.d.ts.map +1 -0
  13. package/dist/builder/packager.js +145 -0
  14. package/dist/builder/packager.js.map +1 -0
  15. package/dist/builder/security.d.ts +26 -0
  16. package/dist/builder/security.d.ts.map +1 -0
  17. package/dist/builder/security.js +204 -0
  18. package/dist/builder/security.js.map +1 -0
  19. package/dist/builder/stripper.d.ts +19 -0
  20. package/dist/builder/stripper.d.ts.map +1 -0
  21. package/dist/builder/stripper.js +100 -0
  22. package/dist/builder/stripper.js.map +1 -0
  23. package/dist/builder/validator.d.ts +33 -0
  24. package/dist/builder/validator.d.ts.map +1 -0
  25. package/dist/builder/validator.js +150 -0
  26. package/dist/builder/validator.js.map +1 -0
  27. package/dist/cli/build.d.ts +3 -0
  28. package/dist/cli/build.d.ts.map +1 -0
  29. package/dist/cli/build.js +167 -0
  30. package/dist/cli/build.js.map +1 -0
  31. package/dist/cli/categories.d.ts +40 -0
  32. package/dist/cli/categories.d.ts.map +1 -0
  33. package/dist/cli/categories.js +101 -0
  34. package/dist/cli/categories.js.map +1 -0
  35. package/dist/cli/dev.d.ts +3 -0
  36. package/dist/cli/dev.d.ts.map +1 -0
  37. package/dist/cli/dev.js +226 -0
  38. package/dist/cli/dev.js.map +1 -0
  39. package/dist/cli/handler-types.d.ts +34 -0
  40. package/dist/cli/handler-types.d.ts.map +1 -0
  41. package/dist/cli/handler-types.js +67 -0
  42. package/dist/cli/handler-types.js.map +1 -0
  43. package/dist/cli/index.d.ts +3 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/dist/cli/index.js +24 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/cli/init.d.ts +3 -0
  48. package/dist/cli/init.d.ts.map +1 -0
  49. package/dist/cli/init.js +264 -0
  50. package/dist/cli/init.js.map +1 -0
  51. package/dist/cli/login.d.ts +3 -0
  52. package/dist/cli/login.d.ts.map +1 -0
  53. package/dist/cli/login.js +10 -0
  54. package/dist/cli/login.js.map +1 -0
  55. package/dist/cli/publish.d.ts +5 -0
  56. package/dist/cli/publish.d.ts.map +1 -0
  57. package/dist/cli/publish.js +120 -0
  58. package/dist/cli/publish.js.map +1 -0
  59. package/dist/cli/template-processor.d.ts +35 -0
  60. package/dist/cli/template-processor.d.ts.map +1 -0
  61. package/dist/cli/template-processor.js +82 -0
  62. package/dist/cli/template-processor.js.map +1 -0
  63. package/dist/cli/test.d.ts +3 -0
  64. package/dist/cli/test.d.ts.map +1 -0
  65. package/dist/cli/test.js +12 -0
  66. package/dist/cli/test.js.map +1 -0
  67. package/dist/dev/decorators.d.ts +10 -0
  68. package/dist/dev/decorators.d.ts.map +1 -0
  69. package/dist/dev/decorators.js +26 -0
  70. package/dist/dev/decorators.js.map +1 -0
  71. package/dist/dev/executor.d.ts +22 -0
  72. package/dist/dev/executor.d.ts.map +1 -0
  73. package/dist/dev/executor.js +243 -0
  74. package/dist/dev/executor.js.map +1 -0
  75. package/dist/dev/extractor.d.ts +15 -0
  76. package/dist/dev/extractor.d.ts.map +1 -0
  77. package/dist/dev/extractor.js +224 -0
  78. package/dist/dev/extractor.js.map +1 -0
  79. package/dist/dev/index.d.ts +3 -0
  80. package/dist/dev/index.d.ts.map +1 -0
  81. package/dist/dev/index.js +4 -0
  82. package/dist/dev/index.js.map +1 -0
  83. package/dist/dev/server.d.ts +91 -0
  84. package/dist/dev/server.d.ts.map +1 -0
  85. package/dist/dev/server.js +507 -0
  86. package/dist/dev/server.js.map +1 -0
  87. package/dist/dev/ui-dist/assets/index-BkKxvzfq.js +246 -0
  88. package/dist/dev/ui-dist/assets/index-DTO1qt7B.css +1 -0
  89. package/dist/dev/ui-dist/index.html +14 -0
  90. package/dist/dev/ui-dist/monkey.svg +3 -0
  91. package/dist/dev/ui-dist/package.json +27 -0
  92. package/dist/templates/_shared/.env.template +16 -0
  93. package/dist/templates/_shared/.gitignore.template +46 -0
  94. package/dist/templates/_shared/LICENSE.template +21 -0
  95. package/dist/templates/_shared/src/utils.ts.template +29 -0
  96. package/dist/templates/_shared/tsconfig.json.template +23 -0
  97. package/dist/templates/stateful/manifest.json.template +63 -0
  98. package/dist/templates/stateful/package.json.template +23 -0
  99. package/dist/templates/stateful/src/index.ts.template +147 -0
  100. package/dist/templates/stateless/docs/README.md.template +102 -0
  101. package/dist/templates/stateless/manifest.json.template +63 -0
  102. package/dist/templates/stateless/package.json.template +23 -0
  103. package/dist/templates/stateless/src/index.ts.template +103 -0
  104. package/package.json +51 -0
  105. package/vitest.config.ts +15 -0
@@ -0,0 +1,224 @@
1
+ import * as fs from 'fs';
2
+ /**
3
+ * Extract @TestValue decorator values from handler source code
4
+ * This uses regex-based parsing for simplicity - a proper implementation
5
+ * would use TypeScript Compiler API
6
+ */
7
+ export function extractTestValuesFromSource(sourcePath) {
8
+ if (!fs.existsSync(sourcePath)) {
9
+ return {};
10
+ }
11
+ const source = fs.readFileSync(sourcePath, 'utf-8');
12
+ const testValues = {};
13
+ // Match @TestValue decorators with their values
14
+ // Pattern: @TestValue(value) followed by property declaration
15
+ const testValuePattern = /@TestValue\s*\(\s*([\s\S]*?)\s*\)\s*(?:\/\/[^\n]*)?\s*\n\s*(\w+)\s*[!?]?\s*:/g;
16
+ let match;
17
+ while ((match = testValuePattern.exec(source)) !== null) {
18
+ const valueExpression = match[1].trim();
19
+ const propertyName = match[2];
20
+ try {
21
+ // Try to evaluate simple values
22
+ const value = evaluateExpression(valueExpression);
23
+ testValues[propertyName] = value;
24
+ }
25
+ catch {
26
+ // If we can't evaluate, store as string
27
+ testValues[propertyName] = valueExpression;
28
+ }
29
+ }
30
+ return testValues;
31
+ }
32
+ /**
33
+ * Evaluate simple JavaScript expressions
34
+ */
35
+ function evaluateExpression(expr) {
36
+ // Handle process.env.XXX
37
+ if (expr.startsWith('process.env.')) {
38
+ const envVar = expr.replace('process.env.', '').replace(/[!?]$/, '').trim();
39
+ return process.env[envVar] || `[env:${envVar}]`;
40
+ }
41
+ // Handle process.env['XXX'] or process.env["XXX"]
42
+ const envBracketMatch = expr.match(/process\.env\[['"](.+?)['"]\]/);
43
+ if (envBracketMatch) {
44
+ return process.env[envBracketMatch[1]] || `[env:${envBracketMatch[1]}]`;
45
+ }
46
+ // Handle fallback expressions: process.env.X || 'fallback'
47
+ const fallbackMatch = expr.match(/process\.env\.(\w+)\s*\|\|\s*['"](.+?)['"]/);
48
+ if (fallbackMatch) {
49
+ return process.env[fallbackMatch[1]] || fallbackMatch[2];
50
+ }
51
+ // Handle string literals
52
+ if ((expr.startsWith("'") && expr.endsWith("'")) ||
53
+ (expr.startsWith('"') && expr.endsWith('"')) ||
54
+ (expr.startsWith('`') && expr.endsWith('`'))) {
55
+ return expr.slice(1, -1);
56
+ }
57
+ // Handle numbers
58
+ if (!isNaN(Number(expr))) {
59
+ return Number(expr);
60
+ }
61
+ // Handle booleans
62
+ if (expr === 'true')
63
+ return true;
64
+ if (expr === 'false')
65
+ return false;
66
+ // Handle null/undefined
67
+ if (expr === 'null')
68
+ return null;
69
+ if (expr === 'undefined')
70
+ return undefined;
71
+ // Handle objects (simple ones)
72
+ if (expr.startsWith('{') && expr.endsWith('}')) {
73
+ try {
74
+ // Replace single quotes with double quotes for JSON parsing
75
+ const jsonStr = expr.replace(/'/g, '"').replace(/(\w+):/g, '"$1":');
76
+ return JSON.parse(jsonStr);
77
+ }
78
+ catch {
79
+ return expr;
80
+ }
81
+ }
82
+ // Handle arrays (simple ones)
83
+ if (expr.startsWith('[') && expr.endsWith(']')) {
84
+ try {
85
+ const jsonStr = expr.replace(/'/g, '"');
86
+ return JSON.parse(jsonStr);
87
+ }
88
+ catch {
89
+ return expr;
90
+ }
91
+ }
92
+ // Return as-is if we can't evaluate
93
+ return expr;
94
+ }
95
+ /**
96
+ * Extract handler metadata from source
97
+ */
98
+ export function extractHandlerMetadata(sourcePath) {
99
+ if (!fs.existsSync(sourcePath)) {
100
+ return {};
101
+ }
102
+ const source = fs.readFileSync(sourcePath, 'utf-8');
103
+ const metadata = {};
104
+ // Extract @Handler decorator
105
+ const handlerMatch = source.match(/@Handler\s*\(\s*\{([\s\S]*?)\}\s*\)/);
106
+ if (handlerMatch) {
107
+ try {
108
+ // Simple parsing of the handler config
109
+ const configStr = handlerMatch[1];
110
+ const typeMatch = configStr.match(/type\s*:\s*['"](.+?)['"]/);
111
+ const nameMatch = configStr.match(/name\s*:\s*['"](.+?)['"]/);
112
+ const categoryMatch = configStr.match(/category\s*:\s*['"](.+?)['"]/);
113
+ if (typeMatch)
114
+ metadata.type = typeMatch[1];
115
+ if (nameMatch)
116
+ metadata.name = nameMatch[1];
117
+ if (categoryMatch)
118
+ metadata.category = categoryMatch[1];
119
+ }
120
+ catch {
121
+ // Ignore parsing errors
122
+ }
123
+ }
124
+ // Extract class name
125
+ const classMatch = source.match(/export\s+class\s+(\w+)/);
126
+ if (classMatch) {
127
+ metadata.className = classMatch[1];
128
+ }
129
+ return metadata;
130
+ }
131
+ /**
132
+ * Extract @Input decorator metadata
133
+ */
134
+ export function extractInputMetadata(sourcePath) {
135
+ if (!fs.existsSync(sourcePath)) {
136
+ return {};
137
+ }
138
+ const source = fs.readFileSync(sourcePath, 'utf-8');
139
+ const inputs = {};
140
+ // Split source into lines for easier processing
141
+ const lines = source.split('\n');
142
+ let currentInputConfig = null;
143
+ let braceCount = 0;
144
+ let configStartLine = -1;
145
+ for (let i = 0; i < lines.length; i++) {
146
+ const line = lines[i];
147
+ const trimmedLine = line.trim();
148
+ // Skip commented lines (both // and block comments)
149
+ if (trimmedLine.startsWith('//') || trimmedLine.startsWith('*') || trimmedLine.startsWith('/*')) {
150
+ continue;
151
+ }
152
+ // Check for @Input decorator start (not in a comment)
153
+ const inputMatch = line.match(/^\s*@Input\s*\(\s*\{/);
154
+ if (inputMatch && currentInputConfig === null) {
155
+ currentInputConfig = '';
156
+ braceCount = 0;
157
+ configStartLine = i;
158
+ }
159
+ // If we're collecting an @Input config
160
+ if (currentInputConfig !== null) {
161
+ currentInputConfig += line + '\n';
162
+ // Count braces
163
+ for (const char of line) {
164
+ if (char === '{')
165
+ braceCount++;
166
+ if (char === '}')
167
+ braceCount--;
168
+ }
169
+ // If braces are balanced, we've found the end of the config
170
+ if (braceCount === 0) {
171
+ // Now find the property name - look ahead for the property declaration
172
+ // It could be on the same line after }) or on following lines
173
+ // Skip any other decorators like @TestValue
174
+ let propertyName = null;
175
+ for (let j = i; j < Math.min(i + 10, lines.length); j++) {
176
+ const searchLine = lines[j];
177
+ const searchTrimmed = searchLine.trim();
178
+ // Skip commented lines
179
+ if (searchTrimmed.startsWith('//') || searchTrimmed.startsWith('*') || searchTrimmed.startsWith('/*')) {
180
+ continue;
181
+ }
182
+ // Skip decorator lines
183
+ if (searchTrimmed.match(/^@\w+/))
184
+ continue;
185
+ // Look for property declaration: propertyName!: or propertyName?:
186
+ const propMatch = searchLine.match(/^\s*(\w+)\s*[!?]?\s*:/);
187
+ if (propMatch) {
188
+ propertyName = propMatch[1];
189
+ break;
190
+ }
191
+ }
192
+ if (propertyName) {
193
+ const inputMeta = {};
194
+ // Extract common properties from the config string
195
+ const typeMatch = currentInputConfig.match(/type\s*:\s*['"](.+?)['"]/);
196
+ const sourceMatch = currentInputConfig.match(/source\s*:\s*['"](.+?)['"]/);
197
+ const requiredMatch = currentInputConfig.match(/required\s*:\s*(true|false)/);
198
+ const secretMatch = currentInputConfig.match(/secret\s*:\s*(true|false)/);
199
+ const descMatch = currentInputConfig.match(/description\s*:\s*['"](.+?)['"]/);
200
+ const keyMatch = currentInputConfig.match(/key\s*:\s*['"](.+?)['"]/);
201
+ const vaultPathMatch = currentInputConfig.match(/vaultPath\s*:\s*['"](.+?)['"]/);
202
+ if (typeMatch)
203
+ inputMeta.type = typeMatch[1];
204
+ if (sourceMatch)
205
+ inputMeta.source = sourceMatch[1];
206
+ if (requiredMatch)
207
+ inputMeta.required = requiredMatch[1] === 'true';
208
+ if (secretMatch)
209
+ inputMeta.secret = secretMatch[1] === 'true';
210
+ if (descMatch)
211
+ inputMeta.description = descMatch[1];
212
+ if (keyMatch)
213
+ inputMeta.key = keyMatch[1];
214
+ if (vaultPathMatch)
215
+ inputMeta.vaultPath = vaultPathMatch[1];
216
+ inputs[propertyName] = inputMeta;
217
+ }
218
+ currentInputConfig = null;
219
+ }
220
+ }
221
+ }
222
+ return inputs;
223
+ }
224
+ //# sourceMappingURL=extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/dev/extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { TestValue, extractTestValues } from './decorators.js';
2
+ export { DevServer } from './server.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dev/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Re-export for convenience
2
+ export { TestValue, extractTestValues } from './decorators.js';
3
+ export { DevServer } from './server.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dev/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface HandlerManifest {
3
+ id: string;
4
+ version: string;
5
+ name: string;
6
+ description: string;
7
+ longDescription?: string;
8
+ author: {
9
+ name: string;
10
+ email: string;
11
+ };
12
+ handler: {
13
+ type: string;
14
+ category: string;
15
+ stateful: boolean;
16
+ timeout: number;
17
+ retryable: boolean;
18
+ };
19
+ inputs: Array<{
20
+ property: string;
21
+ type: string;
22
+ source: string;
23
+ required?: boolean;
24
+ secret?: boolean;
25
+ default?: any;
26
+ description?: string;
27
+ placeholder?: string;
28
+ enum?: string[];
29
+ min?: number;
30
+ max?: number;
31
+ }>;
32
+ outputs: Array<{
33
+ property: string;
34
+ type: string;
35
+ description?: string;
36
+ }>;
37
+ visual?: {
38
+ icon?: string;
39
+ color?: string;
40
+ tags?: string[];
41
+ };
42
+ }
43
+ export interface TestResult {
44
+ success: boolean;
45
+ duration: number;
46
+ output?: any;
47
+ error?: {
48
+ message: string;
49
+ stack?: string;
50
+ code?: string;
51
+ };
52
+ logs: string[];
53
+ timestamp: string;
54
+ }
55
+ export interface DevServerOptions {
56
+ port: number;
57
+ uiPort: number;
58
+ projectDir: string;
59
+ open: boolean;
60
+ }
61
+ export declare class DevServer extends EventEmitter {
62
+ private options;
63
+ private app;
64
+ private httpServer;
65
+ private wss;
66
+ private clients;
67
+ private manifest;
68
+ private testValues;
69
+ private projectDir;
70
+ private handlerMetadata;
71
+ private inputMetadata;
72
+ private testHistory;
73
+ constructor(options: DevServerOptions);
74
+ private setupMiddleware;
75
+ private setupRoutes;
76
+ private formatSize;
77
+ private runValidation;
78
+ private setupWebSocket;
79
+ /**
80
+ * Merge manifest.json inputs with dynamically extracted inputs from source code.
81
+ * This ensures all @Input decorated properties are shown in the UI, even if
82
+ * they're not in manifest.json yet.
83
+ */
84
+ private getMergedManifest;
85
+ broadcast(type: string, data: any): void;
86
+ loadHandler(): Promise<void>;
87
+ reloadHandler(): Promise<void>;
88
+ start(): Promise<void>;
89
+ stop(): void;
90
+ }
91
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dev/server.ts"],"names":[],"mappings":"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"}