@prompd/cli 0.3.3

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 (223) hide show
  1. package/README.md +162 -0
  2. package/bin/prompd.js +23 -0
  3. package/dist/commands/cache.d.ts +3 -0
  4. package/dist/commands/cache.d.ts.map +1 -0
  5. package/dist/commands/cache.js +199 -0
  6. package/dist/commands/cache.js.map +1 -0
  7. package/dist/commands/compile.d.ts +9 -0
  8. package/dist/commands/compile.d.ts.map +1 -0
  9. package/dist/commands/compile.js +104 -0
  10. package/dist/commands/compile.js.map +1 -0
  11. package/dist/commands/config.d.ts +7 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +212 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/create.d.ts +3 -0
  16. package/dist/commands/create.d.ts.map +1 -0
  17. package/dist/commands/create.js +183 -0
  18. package/dist/commands/create.js.map +1 -0
  19. package/dist/commands/deps.d.ts +3 -0
  20. package/dist/commands/deps.d.ts.map +1 -0
  21. package/dist/commands/deps.js +192 -0
  22. package/dist/commands/deps.js.map +1 -0
  23. package/dist/commands/explain.d.ts +3 -0
  24. package/dist/commands/explain.d.ts.map +1 -0
  25. package/dist/commands/explain.js +227 -0
  26. package/dist/commands/explain.js.map +1 -0
  27. package/dist/commands/git.d.ts +3 -0
  28. package/dist/commands/git.d.ts.map +1 -0
  29. package/dist/commands/git.js +306 -0
  30. package/dist/commands/git.js.map +1 -0
  31. package/dist/commands/init.d.ts +3 -0
  32. package/dist/commands/init.d.ts.map +1 -0
  33. package/dist/commands/init.js +177 -0
  34. package/dist/commands/init.js.map +1 -0
  35. package/dist/commands/list.d.ts +3 -0
  36. package/dist/commands/list.d.ts.map +1 -0
  37. package/dist/commands/list.js +126 -0
  38. package/dist/commands/list.js.map +1 -0
  39. package/dist/commands/mcp.d.ts +3 -0
  40. package/dist/commands/mcp.d.ts.map +1 -0
  41. package/dist/commands/mcp.js +326 -0
  42. package/dist/commands/mcp.js.map +1 -0
  43. package/dist/commands/namespace.d.ts +3 -0
  44. package/dist/commands/namespace.d.ts.map +1 -0
  45. package/dist/commands/namespace.js +113 -0
  46. package/dist/commands/namespace.js.map +1 -0
  47. package/dist/commands/package.d.ts +23 -0
  48. package/dist/commands/package.d.ts.map +1 -0
  49. package/dist/commands/package.js +746 -0
  50. package/dist/commands/package.js.map +1 -0
  51. package/dist/commands/provider.d.ts +3 -0
  52. package/dist/commands/provider.d.ts.map +1 -0
  53. package/dist/commands/provider.js +285 -0
  54. package/dist/commands/provider.js.map +1 -0
  55. package/dist/commands/registry.d.ts +9 -0
  56. package/dist/commands/registry.d.ts.map +1 -0
  57. package/dist/commands/registry.js +361 -0
  58. package/dist/commands/registry.js.map +1 -0
  59. package/dist/commands/run.d.ts +3 -0
  60. package/dist/commands/run.d.ts.map +1 -0
  61. package/dist/commands/run.js +157 -0
  62. package/dist/commands/run.js.map +1 -0
  63. package/dist/commands/show.d.ts +3 -0
  64. package/dist/commands/show.d.ts.map +1 -0
  65. package/dist/commands/show.js +90 -0
  66. package/dist/commands/show.js.map +1 -0
  67. package/dist/commands/uninstall.d.ts +3 -0
  68. package/dist/commands/uninstall.d.ts.map +1 -0
  69. package/dist/commands/uninstall.js +95 -0
  70. package/dist/commands/uninstall.js.map +1 -0
  71. package/dist/commands/validate.d.ts +3 -0
  72. package/dist/commands/validate.d.ts.map +1 -0
  73. package/dist/commands/validate.js +57 -0
  74. package/dist/commands/validate.js.map +1 -0
  75. package/dist/commands/version.d.ts +3 -0
  76. package/dist/commands/version.d.ts.map +1 -0
  77. package/dist/commands/version.js +166 -0
  78. package/dist/commands/version.js.map +1 -0
  79. package/dist/index.d.ts +5 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +388 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/lib/auth.d.ts +164 -0
  84. package/dist/lib/auth.d.ts.map +1 -0
  85. package/dist/lib/auth.js +388 -0
  86. package/dist/lib/auth.js.map +1 -0
  87. package/dist/lib/compiler/file-system.d.ts +178 -0
  88. package/dist/lib/compiler/file-system.d.ts.map +1 -0
  89. package/dist/lib/compiler/file-system.js +440 -0
  90. package/dist/lib/compiler/file-system.js.map +1 -0
  91. package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
  92. package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
  93. package/dist/lib/compiler/formatters/anthropic.js +95 -0
  94. package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
  95. package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
  96. package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
  97. package/dist/lib/compiler/formatters/markdown.js +114 -0
  98. package/dist/lib/compiler/formatters/markdown.js.map +1 -0
  99. package/dist/lib/compiler/formatters/openai.d.ts +21 -0
  100. package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
  101. package/dist/lib/compiler/formatters/openai.js +98 -0
  102. package/dist/lib/compiler/formatters/openai.js.map +1 -0
  103. package/dist/lib/compiler/index.d.ts +56 -0
  104. package/dist/lib/compiler/index.d.ts.map +1 -0
  105. package/dist/lib/compiler/index.js +165 -0
  106. package/dist/lib/compiler/index.js.map +1 -0
  107. package/dist/lib/compiler/language-map.d.ts +31 -0
  108. package/dist/lib/compiler/language-map.d.ts.map +1 -0
  109. package/dist/lib/compiler/language-map.js +156 -0
  110. package/dist/lib/compiler/language-map.js.map +1 -0
  111. package/dist/lib/compiler/package-resolver.d.ts +68 -0
  112. package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
  113. package/dist/lib/compiler/package-resolver.js +254 -0
  114. package/dist/lib/compiler/package-resolver.js.map +1 -0
  115. package/dist/lib/compiler/pipeline.d.ts +53 -0
  116. package/dist/lib/compiler/pipeline.d.ts.map +1 -0
  117. package/dist/lib/compiler/pipeline.js +209 -0
  118. package/dist/lib/compiler/pipeline.js.map +1 -0
  119. package/dist/lib/compiler/prompd-loader.d.ts +108 -0
  120. package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
  121. package/dist/lib/compiler/prompd-loader.js +270 -0
  122. package/dist/lib/compiler/prompd-loader.js.map +1 -0
  123. package/dist/lib/compiler/section-override.d.ts +40 -0
  124. package/dist/lib/compiler/section-override.d.ts.map +1 -0
  125. package/dist/lib/compiler/section-override.js +296 -0
  126. package/dist/lib/compiler/section-override.js.map +1 -0
  127. package/dist/lib/compiler/stages/assets.d.ts +71 -0
  128. package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
  129. package/dist/lib/compiler/stages/assets.js +456 -0
  130. package/dist/lib/compiler/stages/assets.js.map +1 -0
  131. package/dist/lib/compiler/stages/codegen.d.ts +17 -0
  132. package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
  133. package/dist/lib/compiler/stages/codegen.js +64 -0
  134. package/dist/lib/compiler/stages/codegen.js.map +1 -0
  135. package/dist/lib/compiler/stages/dependency.d.ts +38 -0
  136. package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
  137. package/dist/lib/compiler/stages/dependency.js +307 -0
  138. package/dist/lib/compiler/stages/dependency.js.map +1 -0
  139. package/dist/lib/compiler/stages/lexical.d.ts +19 -0
  140. package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
  141. package/dist/lib/compiler/stages/lexical.js +92 -0
  142. package/dist/lib/compiler/stages/lexical.js.map +1 -0
  143. package/dist/lib/compiler/stages/semantic.d.ts +20 -0
  144. package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
  145. package/dist/lib/compiler/stages/semantic.js +166 -0
  146. package/dist/lib/compiler/stages/semantic.js.map +1 -0
  147. package/dist/lib/compiler/stages/template.d.ts +94 -0
  148. package/dist/lib/compiler/stages/template.d.ts.map +1 -0
  149. package/dist/lib/compiler/stages/template.js +1044 -0
  150. package/dist/lib/compiler/stages/template.js.map +1 -0
  151. package/dist/lib/compiler/types.d.ts +200 -0
  152. package/dist/lib/compiler/types.d.ts.map +1 -0
  153. package/dist/lib/compiler/types.js +137 -0
  154. package/dist/lib/compiler/types.js.map +1 -0
  155. package/dist/lib/config.d.ts +29 -0
  156. package/dist/lib/config.d.ts.map +1 -0
  157. package/dist/lib/config.js +375 -0
  158. package/dist/lib/config.js.map +1 -0
  159. package/dist/lib/errors.d.ts +19 -0
  160. package/dist/lib/errors.d.ts.map +1 -0
  161. package/dist/lib/errors.js +47 -0
  162. package/dist/lib/errors.js.map +1 -0
  163. package/dist/lib/executor.d.ts +18 -0
  164. package/dist/lib/executor.d.ts.map +1 -0
  165. package/dist/lib/executor.js +372 -0
  166. package/dist/lib/executor.js.map +1 -0
  167. package/dist/lib/git.d.ts +74 -0
  168. package/dist/lib/git.d.ts.map +1 -0
  169. package/dist/lib/git.js +254 -0
  170. package/dist/lib/git.js.map +1 -0
  171. package/dist/lib/index.d.ts +43 -0
  172. package/dist/lib/index.d.ts.map +1 -0
  173. package/dist/lib/index.js +108 -0
  174. package/dist/lib/index.js.map +1 -0
  175. package/dist/lib/mcp.d.ts +42 -0
  176. package/dist/lib/mcp.d.ts.map +1 -0
  177. package/dist/lib/mcp.js +477 -0
  178. package/dist/lib/mcp.js.map +1 -0
  179. package/dist/lib/model-updater.d.ts +51 -0
  180. package/dist/lib/model-updater.d.ts.map +1 -0
  181. package/dist/lib/model-updater.js +275 -0
  182. package/dist/lib/model-updater.js.map +1 -0
  183. package/dist/lib/parser.d.ts +9 -0
  184. package/dist/lib/parser.d.ts.map +1 -0
  185. package/dist/lib/parser.js +197 -0
  186. package/dist/lib/parser.js.map +1 -0
  187. package/dist/lib/registry.d.ts +183 -0
  188. package/dist/lib/registry.d.ts.map +1 -0
  189. package/dist/lib/registry.js +786 -0
  190. package/dist/lib/registry.js.map +1 -0
  191. package/dist/lib/rpc-server.d.ts +78 -0
  192. package/dist/lib/rpc-server.d.ts.map +1 -0
  193. package/dist/lib/rpc-server.js +404 -0
  194. package/dist/lib/rpc-server.js.map +1 -0
  195. package/dist/lib/security.d.ts +120 -0
  196. package/dist/lib/security.d.ts.map +1 -0
  197. package/dist/lib/security.js +478 -0
  198. package/dist/lib/security.js.map +1 -0
  199. package/dist/lib/validation.d.ts +106 -0
  200. package/dist/lib/validation.d.ts.map +1 -0
  201. package/dist/lib/validation.js +398 -0
  202. package/dist/lib/validation.js.map +1 -0
  203. package/dist/lib/version.d.ts +29 -0
  204. package/dist/lib/version.d.ts.map +1 -0
  205. package/dist/lib/version.js +202 -0
  206. package/dist/lib/version.js.map +1 -0
  207. package/dist/lib/workflow-engine.d.ts +161 -0
  208. package/dist/lib/workflow-engine.d.ts.map +1 -0
  209. package/dist/lib/workflow-engine.js +422 -0
  210. package/dist/lib/workflow-engine.js.map +1 -0
  211. package/dist/lib/workflow.d.ts +102 -0
  212. package/dist/lib/workflow.d.ts.map +1 -0
  213. package/dist/lib/workflow.js +228 -0
  214. package/dist/lib/workflow.js.map +1 -0
  215. package/dist/server.d.ts +8 -0
  216. package/dist/server.d.ts.map +1 -0
  217. package/dist/server.js +134 -0
  218. package/dist/server.js.map +1 -0
  219. package/dist/types/index.d.ts +116 -0
  220. package/dist/types/index.d.ts.map +1 -0
  221. package/dist/types/index.js +144 -0
  222. package/dist/types/index.js.map +1 -0
  223. package/package.json +104 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Input validation utilities for Prompd CLI
3
+ * Security-first validation following best practices
4
+ */
5
+ /**
6
+ * Custom error for security violations
7
+ */
8
+ export declare class SecurityError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ /**
12
+ * Custom error for validation failures
13
+ */
14
+ export declare class ValidationError extends Error {
15
+ constructor(message: string);
16
+ }
17
+ /**
18
+ * Validates npm-style package names
19
+ * Rules: lowercase, alphanumeric, hyphens, dots, underscores
20
+ * Scoped packages: @scope/name
21
+ */
22
+ export declare function validatePackageName(name: string): boolean;
23
+ /**
24
+ * Validates semantic versioning (x.y.z with optional pre-release/build metadata)
25
+ */
26
+ export declare function validateVersion(version: string): boolean;
27
+ /**
28
+ * Validates namespace/scope format (@namespace)
29
+ */
30
+ export declare function validateNamespace(namespace: string): boolean;
31
+ /**
32
+ * Validates registry URL
33
+ * Only HTTPS allowed (except localhost for development)
34
+ */
35
+ export declare function validateRegistryUrl(url: string): boolean;
36
+ /**
37
+ * Sanitizes file paths to prevent directory traversal
38
+ * Throws SecurityError if path is dangerous
39
+ */
40
+ export declare function sanitizeFilePath(filePath: string, basePath?: string): string;
41
+ /**
42
+ * Validates file extension against whitelist
43
+ */
44
+ export declare function validateFileExtension(filePath: string, allowedExtensions: string[]): boolean;
45
+ /**
46
+ * Validates command-line flag/option names
47
+ */
48
+ export declare function validateOptionName(name: string): boolean;
49
+ /**
50
+ * Validates parameter keys (for .prmd parameters)
51
+ */
52
+ export declare function validateParameterKey(key: string): boolean;
53
+ /**
54
+ * Sanitizes parameter keys by converting to safe format
55
+ */
56
+ export declare function sanitizeParameterKey(key: string): string;
57
+ /**
58
+ * Detects potential secrets in strings
59
+ * Returns array of detected secret patterns
60
+ */
61
+ export declare function detectSecrets(content: string): Array<{
62
+ type: string;
63
+ match: string;
64
+ line: number;
65
+ }>;
66
+ /**
67
+ * Validates git reference (tag, branch, commit hash)
68
+ */
69
+ export declare function validateGitRef(ref: string): boolean;
70
+ /**
71
+ * Validates model name (for LLM providers)
72
+ */
73
+ export declare function validateModelName(name: string): boolean;
74
+ /**
75
+ * Validates provider name
76
+ */
77
+ export declare function validateProviderName(name: string): boolean;
78
+ /**
79
+ * Validates email address (basic validation)
80
+ */
81
+ export declare function validateEmail(email: string): boolean;
82
+ /**
83
+ * Checks if a string contains potentially malicious content
84
+ */
85
+ export declare function containsMaliciousContent(content: string): boolean;
86
+ /**
87
+ * Validates that a value is within numeric range
88
+ */
89
+ export declare function validateNumericRange(value: number, min: number, max: number): boolean;
90
+ /**
91
+ * Validates string length
92
+ */
93
+ export declare function validateStringLength(value: string, minLength: number, maxLength: number): boolean;
94
+ /**
95
+ * Sanitizes string for safe display (prevents injection in terminal output)
96
+ */
97
+ export declare function sanitizeForDisplay(value: string): string;
98
+ /**
99
+ * Validates JSON structure
100
+ */
101
+ export declare function validateJSON(jsonString: string): boolean;
102
+ /**
103
+ * Validates YAML structure
104
+ */
105
+ export declare function validateYAML(yamlString: string): boolean;
106
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAwBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAc5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAyBxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAgC5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAW5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCnG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiBjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMrF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQxD"}
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+ /**
3
+ * Input validation utilities for Prompd CLI
4
+ * Security-first validation following best practices
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ValidationError = exports.SecurityError = void 0;
41
+ exports.validatePackageName = validatePackageName;
42
+ exports.validateVersion = validateVersion;
43
+ exports.validateNamespace = validateNamespace;
44
+ exports.validateRegistryUrl = validateRegistryUrl;
45
+ exports.sanitizeFilePath = sanitizeFilePath;
46
+ exports.validateFileExtension = validateFileExtension;
47
+ exports.validateOptionName = validateOptionName;
48
+ exports.validateParameterKey = validateParameterKey;
49
+ exports.sanitizeParameterKey = sanitizeParameterKey;
50
+ exports.detectSecrets = detectSecrets;
51
+ exports.validateGitRef = validateGitRef;
52
+ exports.validateModelName = validateModelName;
53
+ exports.validateProviderName = validateProviderName;
54
+ exports.validateEmail = validateEmail;
55
+ exports.containsMaliciousContent = containsMaliciousContent;
56
+ exports.validateNumericRange = validateNumericRange;
57
+ exports.validateStringLength = validateStringLength;
58
+ exports.sanitizeForDisplay = sanitizeForDisplay;
59
+ exports.validateJSON = validateJSON;
60
+ exports.validateYAML = validateYAML;
61
+ const path = __importStar(require("path"));
62
+ /**
63
+ * Custom error for security violations
64
+ */
65
+ class SecurityError extends Error {
66
+ constructor(message) {
67
+ super(message);
68
+ this.name = 'SecurityError';
69
+ }
70
+ }
71
+ exports.SecurityError = SecurityError;
72
+ /**
73
+ * Custom error for validation failures
74
+ */
75
+ class ValidationError extends Error {
76
+ constructor(message) {
77
+ super(message);
78
+ this.name = 'ValidationError';
79
+ }
80
+ }
81
+ exports.ValidationError = ValidationError;
82
+ /**
83
+ * Validates npm-style package names
84
+ * Rules: lowercase, alphanumeric, hyphens, dots, underscores
85
+ * Scoped packages: @scope/name
86
+ */
87
+ function validatePackageName(name) {
88
+ if (!name || typeof name !== 'string') {
89
+ return false;
90
+ }
91
+ // npm package name rules (scoped or unscoped)
92
+ const pattern = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
93
+ if (!pattern.test(name)) {
94
+ return false;
95
+ }
96
+ // Length constraints
97
+ if (name.length > 214) {
98
+ return false;
99
+ }
100
+ // Cannot start with . or _
101
+ const baseName = name.includes('/') ? name.split('/')[1] : name;
102
+ if (baseName.startsWith('.') || baseName.startsWith('_')) {
103
+ return false;
104
+ }
105
+ return true;
106
+ }
107
+ /**
108
+ * Validates semantic versioning (x.y.z with optional pre-release/build metadata)
109
+ */
110
+ function validateVersion(version) {
111
+ if (!version || typeof version !== 'string') {
112
+ return false;
113
+ }
114
+ // Semantic versioning pattern
115
+ const semverPattern = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
116
+ return semverPattern.test(version);
117
+ }
118
+ /**
119
+ * Validates namespace/scope format (@namespace)
120
+ */
121
+ function validateNamespace(namespace) {
122
+ if (!namespace || typeof namespace !== 'string') {
123
+ return false;
124
+ }
125
+ // Must start with @
126
+ if (!namespace.startsWith('@')) {
127
+ return false;
128
+ }
129
+ const scope = namespace.slice(1);
130
+ // npm scope rules: lowercase, URL-safe characters
131
+ return /^[a-z0-9-~][a-z0-9-._~]*$/.test(scope);
132
+ }
133
+ /**
134
+ * Validates registry URL
135
+ * Only HTTPS allowed (except localhost for development)
136
+ */
137
+ function validateRegistryUrl(url) {
138
+ if (!url || typeof url !== 'string') {
139
+ return false;
140
+ }
141
+ try {
142
+ const parsed = new URL(url);
143
+ // Only allow HTTPS (except localhost for dev)
144
+ if (parsed.protocol !== 'https:') {
145
+ // Allow HTTP only for localhost
146
+ if (parsed.hostname !== 'localhost' && parsed.hostname !== '127.0.0.1') {
147
+ return false;
148
+ }
149
+ }
150
+ // Don't allow data:, file:, javascript:, etc.
151
+ if (!['http:', 'https:'].includes(parsed.protocol)) {
152
+ return false;
153
+ }
154
+ return true;
155
+ }
156
+ catch {
157
+ return false;
158
+ }
159
+ }
160
+ /**
161
+ * Sanitizes file paths to prevent directory traversal
162
+ * Throws SecurityError if path is dangerous
163
+ */
164
+ function sanitizeFilePath(filePath, basePath) {
165
+ if (!filePath || typeof filePath !== 'string') {
166
+ throw new ValidationError('Invalid file path');
167
+ }
168
+ // Normalize the path
169
+ const normalized = path.normalize(filePath);
170
+ // Check for directory traversal attempts
171
+ if (normalized.includes('..')) {
172
+ throw new SecurityError('Directory traversal detected in file path');
173
+ }
174
+ // Check for absolute paths (when we expect relative)
175
+ if (path.isAbsolute(normalized) && basePath) {
176
+ throw new SecurityError('Absolute paths not allowed');
177
+ }
178
+ // If basePath provided, ensure the path stays within it
179
+ if (basePath) {
180
+ const resolvedPath = path.resolve(basePath, normalized);
181
+ const resolvedBase = path.resolve(basePath);
182
+ if (!resolvedPath.startsWith(resolvedBase + path.sep) &&
183
+ resolvedPath !== resolvedBase) {
184
+ throw new SecurityError('Path escapes base directory');
185
+ }
186
+ return resolvedPath;
187
+ }
188
+ return normalized;
189
+ }
190
+ /**
191
+ * Validates file extension against whitelist
192
+ */
193
+ function validateFileExtension(filePath, allowedExtensions) {
194
+ if (!filePath || typeof filePath !== 'string') {
195
+ return false;
196
+ }
197
+ if (!Array.isArray(allowedExtensions) || allowedExtensions.length === 0) {
198
+ return false;
199
+ }
200
+ const ext = path.extname(filePath).toLowerCase();
201
+ return allowedExtensions.includes(ext);
202
+ }
203
+ /**
204
+ * Validates command-line flag/option names
205
+ */
206
+ function validateOptionName(name) {
207
+ if (!name || typeof name !== 'string') {
208
+ return false;
209
+ }
210
+ // Allow letters, numbers, hyphens (typical CLI option names)
211
+ return /^[a-zA-Z][a-zA-Z0-9-]*$/.test(name);
212
+ }
213
+ /**
214
+ * Validates parameter keys (for .prmd parameters)
215
+ */
216
+ function validateParameterKey(key) {
217
+ if (!key || typeof key !== 'string') {
218
+ return false;
219
+ }
220
+ // Allow letters, numbers, underscores (snake_case or camelCase)
221
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) {
222
+ return false;
223
+ }
224
+ // Length limits
225
+ if (key.length > 128) {
226
+ return false;
227
+ }
228
+ return true;
229
+ }
230
+ /**
231
+ * Sanitizes parameter keys by converting to safe format
232
+ */
233
+ function sanitizeParameterKey(key) {
234
+ if (typeof key !== 'string') {
235
+ throw new ValidationError('Parameter key must be string');
236
+ }
237
+ // Remove potentially dangerous characters, replace with underscore
238
+ const sanitized = key.replace(/[^a-zA-Z0-9_]/g, '_');
239
+ if (sanitized.length === 0 || sanitized.length > 128) {
240
+ throw new ValidationError('Invalid parameter key length');
241
+ }
242
+ return sanitized;
243
+ }
244
+ /**
245
+ * Detects potential secrets in strings
246
+ * Returns array of detected secret patterns
247
+ */
248
+ function detectSecrets(content) {
249
+ const secrets = [];
250
+ // Split into lines for line number tracking
251
+ const lines = content.split('\n');
252
+ // Secret patterns to detect
253
+ const patterns = [
254
+ { type: 'OpenAI API Key', regex: /sk-[a-zA-Z0-9]{32,}/g },
255
+ { type: 'Anthropic API Key', regex: /sk-ant-[a-zA-Z0-9-_]{32,}/g },
256
+ { type: 'Prompd Registry Token', regex: /prompd_[a-zA-Z0-9-_]{32,}/g },
257
+ { type: 'Generic API Key', regex: /api[_-]?key["\s:=]+[a-zA-Z0-9-_]{20,}/gi },
258
+ { type: 'Generic Secret', regex: /secret["\s:=]+[a-zA-Z0-9-_]{20,}/gi },
259
+ { type: 'Private Key Header', regex: /-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----/g },
260
+ { type: 'AWS Access Key', regex: /AKIA[0-9A-Z]{16}/g },
261
+ { type: 'GitHub Token', regex: /gh[pousr]_[a-zA-Z0-9]{36,}/g },
262
+ ];
263
+ lines.forEach((line, index) => {
264
+ patterns.forEach(({ type, regex }) => {
265
+ const matches = line.match(regex);
266
+ if (matches) {
267
+ matches.forEach((match) => {
268
+ // Mask the secret in the output (show first 8 chars only)
269
+ const maskedMatch = match.length > 8
270
+ ? match.slice(0, 8) + '...'
271
+ : '***';
272
+ secrets.push({
273
+ type,
274
+ match: maskedMatch,
275
+ line: index + 1
276
+ });
277
+ });
278
+ }
279
+ });
280
+ });
281
+ return secrets;
282
+ }
283
+ /**
284
+ * Validates git reference (tag, branch, commit hash)
285
+ */
286
+ function validateGitRef(ref) {
287
+ if (!ref || typeof ref !== 'string') {
288
+ return false;
289
+ }
290
+ // Allow alphanumeric, dots, hyphens, slashes, underscores
291
+ // Covers: branch names, tags, commit hashes
292
+ return /^[a-zA-Z0-9._/-]+$/.test(ref);
293
+ }
294
+ /**
295
+ * Validates model name (for LLM providers)
296
+ */
297
+ function validateModelName(name) {
298
+ if (!name || typeof name !== 'string') {
299
+ return false;
300
+ }
301
+ // Allow letters, numbers, hyphens, dots, underscores
302
+ // e.g., gpt-4, claude-3-opus-20240229, llama3.2
303
+ return /^[a-zA-Z0-9._-]+$/.test(name);
304
+ }
305
+ /**
306
+ * Validates provider name
307
+ */
308
+ function validateProviderName(name) {
309
+ if (!name || typeof name !== 'string') {
310
+ return false;
311
+ }
312
+ // Lowercase letters, numbers, hyphens only
313
+ return /^[a-z][a-z0-9-]*$/.test(name);
314
+ }
315
+ /**
316
+ * Validates email address (basic validation)
317
+ */
318
+ function validateEmail(email) {
319
+ if (!email || typeof email !== 'string') {
320
+ return false;
321
+ }
322
+ // Basic email pattern
323
+ const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
324
+ return emailPattern.test(email);
325
+ }
326
+ /**
327
+ * Checks if a string contains potentially malicious content
328
+ */
329
+ function containsMaliciousContent(content) {
330
+ if (!content || typeof content !== 'string') {
331
+ return false;
332
+ }
333
+ // Patterns that might indicate injection attempts
334
+ const maliciousPatterns = [
335
+ /<script[^>]*>/i, // Script tags
336
+ /javascript:/i, // JavaScript protocol
337
+ /on\w+\s*=/i, // Event handlers (onclick, onerror, etc.)
338
+ /eval\s*\(/i, // eval calls
339
+ /Function\s*\(/i, // Function constructor
340
+ /\$\{.*\}/, // Template literal injection
341
+ /`.*`/, // Backticks (potential template literals)
342
+ ];
343
+ return maliciousPatterns.some(pattern => pattern.test(content));
344
+ }
345
+ /**
346
+ * Validates that a value is within numeric range
347
+ */
348
+ function validateNumericRange(value, min, max) {
349
+ if (typeof value !== 'number' || !isFinite(value)) {
350
+ return false;
351
+ }
352
+ return value >= min && value <= max;
353
+ }
354
+ /**
355
+ * Validates string length
356
+ */
357
+ function validateStringLength(value, minLength, maxLength) {
358
+ if (!value || typeof value !== 'string') {
359
+ return false;
360
+ }
361
+ return value.length >= minLength && value.length <= maxLength;
362
+ }
363
+ /**
364
+ * Sanitizes string for safe display (prevents injection in terminal output)
365
+ */
366
+ function sanitizeForDisplay(value) {
367
+ if (!value || typeof value !== 'string') {
368
+ return '';
369
+ }
370
+ // Remove control characters except common whitespace
371
+ return value.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
372
+ }
373
+ /**
374
+ * Validates JSON structure
375
+ */
376
+ function validateJSON(jsonString) {
377
+ try {
378
+ JSON.parse(jsonString);
379
+ return true;
380
+ }
381
+ catch {
382
+ return false;
383
+ }
384
+ }
385
+ /**
386
+ * Validates YAML structure
387
+ */
388
+ function validateYAML(yamlString) {
389
+ try {
390
+ // This would require yaml library - just check basic structure
391
+ // In real implementation, use js-yaml to parse
392
+ return typeof yamlString === 'string' && yamlString.length > 0;
393
+ }
394
+ catch {
395
+ return false;
396
+ }
397
+ }
398
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare class VersionManager {
2
+ private parser;
3
+ bumpVersion(filePath: string, bumpType: 'major' | 'minor' | 'patch'): Promise<string>;
4
+ private updateVersionInFile;
5
+ private gitCommitAndTag;
6
+ getVersionHistory(filePath: string, limit?: number): Promise<Array<{
7
+ tag: string;
8
+ date: string;
9
+ commit: string;
10
+ message: string;
11
+ }>>;
12
+ validateVersion(filePath: string, checkGit?: boolean): Promise<{
13
+ valid: boolean;
14
+ issues: string[];
15
+ }>;
16
+ private getLatestGitTag;
17
+ suggestVersionBump(currentVersion: string, changes?: string): Promise<{
18
+ current: string;
19
+ recommended: 'patch' | 'minor' | 'major';
20
+ suggestions: {
21
+ patch: string;
22
+ minor: string;
23
+ major: string;
24
+ };
25
+ reason: string;
26
+ }>;
27
+ diffVersions(filePath: string, version1: string, version2: string): Promise<string>;
28
+ }
29
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IAE9B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB7E,mBAAmB;YAwBnB,eAAe;IAkBvB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA8B/H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YAiC1F,eAAe;IASvB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1E,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;QACzC,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IA8BI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAS1F"}