@skillsmith/core 2.1.0 → 2.1.2

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 (204) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/types.d.ts +2 -0
  3. package/dist/src/analysis/types.d.ts.map +1 -1
  4. package/dist/src/analysis/types.js +13 -1
  5. package/dist/src/analysis/types.js.map +1 -1
  6. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  7. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  8. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  9. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  10. package/dist/src/analytics/schema.d.ts +1 -1
  11. package/dist/src/analytics/schema.d.ts.map +1 -1
  12. package/dist/src/analytics/schema.js +68 -0
  13. package/dist/src/analytics/schema.js.map +1 -1
  14. package/dist/src/api/client.d.ts +33 -29
  15. package/dist/src/api/client.d.ts.map +1 -1
  16. package/dist/src/api/client.js +15 -10
  17. package/dist/src/api/client.js.map +1 -1
  18. package/dist/src/billing/BillingService.d.ts +139 -0
  19. package/dist/src/billing/BillingService.d.ts.map +1 -0
  20. package/dist/src/billing/BillingService.js +393 -0
  21. package/dist/src/billing/BillingService.js.map +1 -0
  22. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  23. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  24. package/dist/src/billing/GDPRComplianceService.js +361 -0
  25. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  26. package/dist/src/billing/StripeClient.d.ts +177 -0
  27. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  28. package/dist/src/billing/StripeClient.js +462 -0
  29. package/dist/src/billing/StripeClient.js.map +1 -0
  30. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  31. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  32. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  33. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  34. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  35. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  36. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  37. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  38. package/dist/src/billing/index.d.ts +18 -0
  39. package/dist/src/billing/index.d.ts.map +1 -0
  40. package/dist/src/billing/index.js +19 -0
  41. package/dist/src/billing/index.js.map +1 -0
  42. package/dist/src/billing/types.d.ts +266 -0
  43. package/dist/src/billing/types.d.ts.map +1 -0
  44. package/dist/src/billing/types.js +23 -0
  45. package/dist/src/billing/types.js.map +1 -0
  46. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  47. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  48. package/dist/src/embeddings/hnsw-store.js +805 -0
  49. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  50. package/dist/src/embeddings/index.d.ts +2 -0
  51. package/dist/src/embeddings/index.d.ts.map +1 -1
  52. package/dist/src/embeddings/index.js +2 -0
  53. package/dist/src/embeddings/index.js.map +1 -1
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +2 -0
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/learning/PatternStore.d.ts +457 -0
  59. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  60. package/dist/src/learning/PatternStore.js +893 -0
  61. package/dist/src/learning/PatternStore.js.map +1 -0
  62. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  63. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  64. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  65. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  66. package/dist/src/learning/index.d.ts +15 -0
  67. package/dist/src/learning/index.d.ts.map +1 -0
  68. package/dist/src/learning/index.js +15 -0
  69. package/dist/src/learning/index.js.map +1 -0
  70. package/dist/src/routing/SONARouter.d.ts +154 -0
  71. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  72. package/dist/src/routing/SONARouter.js +679 -0
  73. package/dist/src/routing/SONARouter.js.map +1 -0
  74. package/dist/src/routing/index.d.ts +9 -0
  75. package/dist/src/routing/index.d.ts.map +1 -0
  76. package/dist/src/routing/index.js +10 -0
  77. package/dist/src/routing/index.js.map +1 -0
  78. package/dist/src/routing/types.d.ts +331 -0
  79. package/dist/src/routing/types.d.ts.map +1 -0
  80. package/dist/src/routing/types.js +203 -0
  81. package/dist/src/routing/types.js.map +1 -0
  82. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
  83. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  84. package/dist/src/security/SkillSandbox.d.ts +156 -0
  85. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  86. package/dist/src/security/SkillSandbox.js +303 -0
  87. package/dist/src/security/SkillSandbox.js.map +1 -0
  88. package/dist/src/security/index.d.ts +3 -1
  89. package/dist/src/security/index.d.ts.map +1 -1
  90. package/dist/src/security/index.js +5 -1
  91. package/dist/src/security/index.js.map +1 -1
  92. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  93. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  94. package/dist/src/security/rate-limiter/presets.js +12 -0
  95. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  96. package/dist/src/security/sanitization.d.ts +85 -0
  97. package/dist/src/security/sanitization.d.ts.map +1 -1
  98. package/dist/src/security/sanitization.js +133 -0
  99. package/dist/src/security/sanitization.js.map +1 -1
  100. package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
  101. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  102. package/dist/src/security/scanner/SecurityScanner.js +232 -28
  103. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  104. package/dist/src/security/scanner/patterns.d.ts +13 -0
  105. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  106. package/dist/src/security/scanner/patterns.js +51 -0
  107. package/dist/src/security/scanner/patterns.js.map +1 -1
  108. package/dist/src/security/scanner/types.d.ts +13 -1
  109. package/dist/src/security/scanner/types.d.ts.map +1 -1
  110. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  111. package/dist/src/security/scanner/weights.js +1 -0
  112. package/dist/src/security/scanner/weights.js.map +1 -1
  113. package/dist/src/session/SessionManager.d.ts +7 -0
  114. package/dist/src/session/SessionManager.d.ts.map +1 -1
  115. package/dist/src/session/SessionManager.js +117 -10
  116. package/dist/src/session/SessionManager.js.map +1 -1
  117. package/dist/src/sync/SyncEngine.d.ts.map +1 -1
  118. package/dist/src/sync/SyncEngine.js +52 -32
  119. package/dist/src/sync/SyncEngine.js.map +1 -1
  120. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  121. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  122. package/dist/src/testing/MultiLLMProvider.js +720 -0
  123. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  124. package/dist/src/testing/index.d.ts +8 -0
  125. package/dist/src/testing/index.d.ts.map +1 -0
  126. package/dist/src/testing/index.js +9 -0
  127. package/dist/src/testing/index.js.map +1 -0
  128. package/dist/src/types.d.ts +3 -0
  129. package/dist/src/types.d.ts.map +1 -1
  130. package/dist/tests/SecurityScanner.test.js +337 -1
  131. package/dist/tests/SecurityScanner.test.js.map +1 -1
  132. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  133. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  134. package/dist/tests/billing/BillingService.test.js +168 -0
  135. package/dist/tests/billing/BillingService.test.js.map +1 -0
  136. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  137. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  138. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  139. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  140. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  141. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  142. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  143. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  144. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  145. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  146. package/dist/tests/billing/stripe-validators.test.js +107 -0
  147. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  148. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  149. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  150. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  151. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  152. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  153. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  154. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  155. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  156. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  157. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  158. package/dist/tests/integration/neural/helpers.js +287 -0
  159. package/dist/tests/integration/neural/helpers.js.map +1 -0
  160. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  161. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  162. package/dist/tests/integration/neural/personalization.test.js +304 -0
  163. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  164. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  165. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  166. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  167. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  168. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  169. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  170. package/dist/tests/integration/neural/privacy.test.js +249 -0
  171. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  172. package/dist/tests/integration/neural/setup.d.ts +175 -0
  173. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  174. package/dist/tests/integration/neural/setup.js +487 -0
  175. package/dist/tests/integration/neural/setup.js.map +1 -0
  176. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  177. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  178. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  179. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  180. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  181. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  182. package/dist/tests/learning/PatternStore.test.js +589 -0
  183. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  184. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  185. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  186. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  187. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  188. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  189. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  190. package/dist/tests/routing/SONARouter.test.js +400 -0
  191. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  192. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  193. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  194. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  195. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  196. package/dist/tests/security/SkillSandbox.test.js +321 -0
  197. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  198. package/dist/tests/sync/SyncEngine.test.js +4 -2
  199. package/dist/tests/sync/SyncEngine.test.js.map +1 -1
  200. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  201. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  202. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  203. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  204. package/package.json +16 -3
@@ -1 +1 @@
1
- {"version":3,"file":"scan-imported-skills.test.js","sourceRoot":"","sources":["../../../../src/scripts/__tests__/scan-imported-skills.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan-imported-skills.test.js","sourceRoot":"","sources":["../../../../src/scripts/__tests__/scan-imported-skills.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * SMI-1534: E2B Sandbox Execution for Skill Testing
3
+ *
4
+ * Provides isolated execution environment for testing untrusted skills.
5
+ * Uses E2B (e2b.dev) sandboxes for secure, containerized execution.
6
+ *
7
+ * Features:
8
+ * - Isolated filesystem per skill test
9
+ * - Network isolation
10
+ * - Resource limits (CPU, memory)
11
+ * - Automatic cleanup after test
12
+ * - Configurable timeout (default: 30s)
13
+ */
14
+ /**
15
+ * Configuration options for sandbox creation
16
+ */
17
+ export interface SandboxOptions {
18
+ /** Timeout in milliseconds (default: 30000) */
19
+ timeout?: number;
20
+ /** Memory limit in MB (default: 256) */
21
+ memoryMB?: number;
22
+ /** Whether to allow network access (default: false for security) */
23
+ allowNetwork?: boolean;
24
+ /** Environment variables to inject */
25
+ env?: Record<string, string>;
26
+ }
27
+ /**
28
+ * Result from executing code in sandbox
29
+ */
30
+ export interface ExecutionResult {
31
+ /** Whether execution completed successfully */
32
+ success: boolean;
33
+ /** Exit code from the process */
34
+ exitCode: number;
35
+ /** Standard output */
36
+ stdout: string;
37
+ /** Standard error */
38
+ stderr: string;
39
+ /** Execution time in milliseconds */
40
+ durationMs: number;
41
+ /** Whether execution timed out */
42
+ timedOut: boolean;
43
+ /** Any error that occurred */
44
+ error?: string;
45
+ }
46
+ /**
47
+ * Represents a file to be copied into the sandbox
48
+ */
49
+ export interface SandboxFile {
50
+ /** Path within the sandbox */
51
+ path: string;
52
+ /** File content */
53
+ content: string;
54
+ }
55
+ /**
56
+ * E2B Sandbox wrapper for skill testing
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const sandbox = new SkillSandbox({ timeout: 60000 })
61
+ * try {
62
+ * await sandbox.create()
63
+ * await sandbox.copyFiles([
64
+ * { path: '/skill/SKILL.md', content: skillContent },
65
+ * { path: '/skill/test.ts', content: testCode }
66
+ * ])
67
+ * const result = await sandbox.execute('node /skill/test.ts')
68
+ * console.log(result.stdout)
69
+ * } finally {
70
+ * await sandbox.destroy()
71
+ * }
72
+ * ```
73
+ */
74
+ export declare class SkillSandbox {
75
+ private options;
76
+ private sandbox;
77
+ private created;
78
+ constructor(options?: SandboxOptions);
79
+ /**
80
+ * Create and initialize the sandbox environment
81
+ * @throws Error if sandbox creation fails or E2B is unavailable
82
+ */
83
+ create(): Promise<void>;
84
+ /**
85
+ * Copy files into the sandbox filesystem
86
+ * @param files - Array of files to copy
87
+ */
88
+ copyFiles(files: SandboxFile[]): Promise<void>;
89
+ /**
90
+ * Copy a skill directory into the sandbox
91
+ * @param skillPath - Local path to skill directory
92
+ * @param destPath - Destination path in sandbox (default: /skill)
93
+ */
94
+ copySkill(skillContent: string, destPath?: string): Promise<void>;
95
+ /**
96
+ * Execute a command in the sandbox
97
+ * @param command - Command to execute
98
+ * @param workingDir - Working directory (default: /skill)
99
+ * @returns Execution result
100
+ */
101
+ execute(command: string, workingDir?: string): Promise<ExecutionResult>;
102
+ /**
103
+ * Execute TypeScript/JavaScript code directly
104
+ * @param code - Code to execute
105
+ * @returns Execution result
106
+ */
107
+ executeCode(code: string): Promise<ExecutionResult>;
108
+ /**
109
+ * Destroy the sandbox and clean up resources
110
+ * Should always be called in a finally block
111
+ */
112
+ destroy(): Promise<void>;
113
+ /**
114
+ * Check if sandbox is active
115
+ */
116
+ isActive(): boolean;
117
+ /**
118
+ * Get sandbox status
119
+ */
120
+ getStatus(): SandboxStatus;
121
+ private ensureCreated;
122
+ /**
123
+ * SMI-1534: Verify network isolation is actually in effect
124
+ * Attempts to make a network request and expects it to fail
125
+ */
126
+ private verifyNetworkIsolation;
127
+ }
128
+ /**
129
+ * Sandbox status information
130
+ */
131
+ export interface SandboxStatus {
132
+ created: boolean;
133
+ active: boolean;
134
+ options: Required<SandboxOptions>;
135
+ }
136
+ /**
137
+ * Error thrown when E2B sandbox is not available
138
+ */
139
+ export declare class SandboxUnavailableError extends Error {
140
+ constructor(message: string);
141
+ }
142
+ /**
143
+ * Factory function for creating sandboxes with proper cleanup
144
+ * Ensures sandbox is destroyed even if test throws
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const result = await withSandbox(async (sandbox) => {
149
+ * await sandbox.copySkill(skillContent)
150
+ * return sandbox.execute('node test.js')
151
+ * })
152
+ * ```
153
+ */
154
+ export declare function withSandbox<T>(fn: (sandbox: SkillSandbox) => Promise<T>, options?: SandboxOptions): Promise<T>;
155
+ export default SkillSandbox;
156
+ //# sourceMappingURL=SkillSandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillSandbox.d.ts","sourceRoot":"","sources":["../../../src/security/SkillSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAA;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,GAAE,cAAmB;IASxC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD7B;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjF;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuFvF;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAUzD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,aAAa;IAQ1B,OAAO,CAAC,aAAa;IAMrB;;;OAGG;YACW,sBAAsB;CAsBrC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * SMI-1534: E2B Sandbox Execution for Skill Testing
3
+ *
4
+ * Provides isolated execution environment for testing untrusted skills.
5
+ * Uses E2B (e2b.dev) sandboxes for secure, containerized execution.
6
+ *
7
+ * Features:
8
+ * - Isolated filesystem per skill test
9
+ * - Network isolation
10
+ * - Resource limits (CPU, memory)
11
+ * - Automatic cleanup after test
12
+ * - Configurable timeout (default: 30s)
13
+ */
14
+ /**
15
+ * E2B Sandbox wrapper for skill testing
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const sandbox = new SkillSandbox({ timeout: 60000 })
20
+ * try {
21
+ * await sandbox.create()
22
+ * await sandbox.copyFiles([
23
+ * { path: '/skill/SKILL.md', content: skillContent },
24
+ * { path: '/skill/test.ts', content: testCode }
25
+ * ])
26
+ * const result = await sandbox.execute('node /skill/test.ts')
27
+ * console.log(result.stdout)
28
+ * } finally {
29
+ * await sandbox.destroy()
30
+ * }
31
+ * ```
32
+ */
33
+ export class SkillSandbox {
34
+ options;
35
+ sandbox = null;
36
+ created = false;
37
+ constructor(options = {}) {
38
+ this.options = {
39
+ timeout: options.timeout ?? 30000,
40
+ memoryMB: options.memoryMB ?? 256,
41
+ allowNetwork: options.allowNetwork ?? false,
42
+ env: options.env ?? {},
43
+ };
44
+ }
45
+ /**
46
+ * Create and initialize the sandbox environment
47
+ * @throws Error if sandbox creation fails or E2B is unavailable
48
+ */
49
+ async create() {
50
+ if (this.created) {
51
+ throw new Error('Sandbox already created. Call destroy() first.');
52
+ }
53
+ try {
54
+ // Dynamic import to allow graceful degradation if E2B is not installed
55
+ // SMI-1534: Use native dynamic import instead of Function constructor for CSP compliance
56
+ // @ts-expect-error - Dynamic import of optional dependency
57
+ const e2bModule = await import('@e2b/code-interpreter');
58
+ const Sandbox = e2bModule.Sandbox;
59
+ // Build sandbox configuration with security settings
60
+ const sandboxConfig = {
61
+ timeout: this.options.timeout,
62
+ // E2B template for Node.js execution
63
+ template: 'node-v20',
64
+ metadata: {
65
+ source: 'skillsmith',
66
+ purpose: 'skill-testing',
67
+ networkIsolation: !this.options.allowNetwork, // Track isolation state
68
+ },
69
+ };
70
+ // Network isolation: E2B may support different mechanisms
71
+ // depending on version. We set the configuration to signal intent.
72
+ if (!this.options.allowNetwork) {
73
+ // Request network isolation when supported by E2B
74
+ sandboxConfig.enableNetworking = false;
75
+ sandboxConfig.internetAccess = false; // Alternative E2B API field
76
+ }
77
+ this.sandbox = await Sandbox.create(sandboxConfig);
78
+ // SMI-1534: Verify network isolation is actually in effect
79
+ if (!this.options.allowNetwork) {
80
+ await this.verifyNetworkIsolation();
81
+ }
82
+ this.created = true;
83
+ }
84
+ catch (error) {
85
+ // Check if it's a missing module error
86
+ if (error instanceof Error &&
87
+ (error.message.includes('Cannot find module') ||
88
+ error.message.includes('Cannot find package') ||
89
+ error.message.includes('ERR_MODULE_NOT_FOUND'))) {
90
+ throw new SandboxUnavailableError('E2B sandbox not available. Install @e2b/code-interpreter to enable sandboxed execution.');
91
+ }
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Copy files into the sandbox filesystem
97
+ * @param files - Array of files to copy
98
+ */
99
+ async copyFiles(files) {
100
+ this.ensureCreated();
101
+ for (const file of files) {
102
+ await this.sandbox.filesystem.write(file.path, file.content);
103
+ }
104
+ }
105
+ /**
106
+ * Copy a skill directory into the sandbox
107
+ * @param skillPath - Local path to skill directory
108
+ * @param destPath - Destination path in sandbox (default: /skill)
109
+ */
110
+ async copySkill(skillContent, destPath = '/skill') {
111
+ this.ensureCreated();
112
+ // Create skill directory structure
113
+ await this.sandbox.filesystem.makeDir(destPath);
114
+ await this.sandbox.filesystem.write(`${destPath}/SKILL.md`, skillContent);
115
+ }
116
+ /**
117
+ * Execute a command in the sandbox
118
+ * @param command - Command to execute
119
+ * @param workingDir - Working directory (default: /skill)
120
+ * @returns Execution result
121
+ */
122
+ async execute(command, workingDir = '/skill') {
123
+ this.ensureCreated();
124
+ const startTime = performance.now();
125
+ let timedOut = false;
126
+ let timeoutId = null;
127
+ try {
128
+ // Create a timeout promise with clearable timer (fixes memory leak)
129
+ const timeoutPromise = new Promise((_, reject) => {
130
+ timeoutId = setTimeout(() => {
131
+ timedOut = true;
132
+ reject(new Error('Execution timed out'));
133
+ }, this.options.timeout);
134
+ });
135
+ // Execute command with timeout race
136
+ const executionPromise = this.sandbox.process.startAndWait({
137
+ cmd: command,
138
+ cwd: workingDir,
139
+ env: this.options.env,
140
+ });
141
+ const result = await Promise.race([executionPromise, timeoutPromise]);
142
+ // Clear timeout on successful completion (fixes race condition)
143
+ if (timeoutId) {
144
+ clearTimeout(timeoutId);
145
+ timeoutId = null;
146
+ }
147
+ const durationMs = performance.now() - startTime;
148
+ return {
149
+ success: result.exitCode === 0,
150
+ exitCode: result.exitCode,
151
+ stdout: result.stdout,
152
+ stderr: result.stderr,
153
+ durationMs,
154
+ timedOut: false,
155
+ };
156
+ }
157
+ catch (error) {
158
+ const durationMs = performance.now() - startTime;
159
+ // Clear timeout if still pending
160
+ if (timeoutId) {
161
+ clearTimeout(timeoutId);
162
+ timeoutId = null;
163
+ }
164
+ if (timedOut) {
165
+ // Kill sandbox process on timeout to free resources
166
+ try {
167
+ await this.sandbox.kill();
168
+ this.sandbox = null;
169
+ this.created = false;
170
+ }
171
+ catch (cleanupError) {
172
+ // SMI-1534: Log cleanup errors for debugging instead of silently ignoring
173
+ console.debug('[SkillSandbox] Cleanup error after timeout:', cleanupError instanceof Error ? cleanupError.message : cleanupError);
174
+ }
175
+ return {
176
+ success: false,
177
+ exitCode: -1,
178
+ stdout: '',
179
+ stderr: 'Execution timed out after ' + this.options.timeout + 'ms',
180
+ durationMs,
181
+ timedOut: true,
182
+ error: 'Timeout',
183
+ };
184
+ }
185
+ return {
186
+ success: false,
187
+ exitCode: -1,
188
+ stdout: '',
189
+ stderr: error instanceof Error ? error.message : String(error),
190
+ durationMs,
191
+ timedOut: false,
192
+ error: error instanceof Error ? error.message : String(error),
193
+ };
194
+ }
195
+ }
196
+ /**
197
+ * Execute TypeScript/JavaScript code directly
198
+ * @param code - Code to execute
199
+ * @returns Execution result
200
+ */
201
+ async executeCode(code) {
202
+ this.ensureCreated();
203
+ // Write code to temp file and execute
204
+ const tempPath = '/tmp/skill-test-' + Date.now() + '.js';
205
+ await this.sandbox.filesystem.write(tempPath, code);
206
+ return this.execute('node ' + tempPath, '/tmp');
207
+ }
208
+ /**
209
+ * Destroy the sandbox and clean up resources
210
+ * Should always be called in a finally block
211
+ */
212
+ async destroy() {
213
+ if (this.sandbox) {
214
+ try {
215
+ await this.sandbox.kill();
216
+ }
217
+ catch (cleanupError) {
218
+ // SMI-1534: Log cleanup errors for debugging instead of silently ignoring
219
+ console.debug('[SkillSandbox] Cleanup error during destroy:', cleanupError instanceof Error ? cleanupError.message : cleanupError);
220
+ }
221
+ this.sandbox = null;
222
+ this.created = false;
223
+ }
224
+ }
225
+ /**
226
+ * Check if sandbox is active
227
+ */
228
+ isActive() {
229
+ return this.created && this.sandbox !== null;
230
+ }
231
+ /**
232
+ * Get sandbox status
233
+ */
234
+ getStatus() {
235
+ return {
236
+ created: this.created,
237
+ active: this.isActive(),
238
+ options: this.options,
239
+ };
240
+ }
241
+ ensureCreated() {
242
+ if (!this.created || !this.sandbox) {
243
+ throw new Error('Sandbox not created. Call create() first.');
244
+ }
245
+ }
246
+ /**
247
+ * SMI-1534: Verify network isolation is actually in effect
248
+ * Attempts to make a network request and expects it to fail
249
+ */
250
+ async verifyNetworkIsolation() {
251
+ if (!this.sandbox)
252
+ return;
253
+ try {
254
+ // Try to ping a well-known address - should fail if isolated
255
+ const result = await this.sandbox.process.startAndWait({
256
+ cmd: 'timeout 2 curl -s --connect-timeout 1 http://1.1.1.1 2>&1 || echo "NETWORK_BLOCKED"',
257
+ cwd: '/tmp',
258
+ });
259
+ // If we don't see NETWORK_BLOCKED and exit code is 0, network is accessible
260
+ if (result.exitCode === 0 && !result.stdout.includes('NETWORK_BLOCKED')) {
261
+ console.warn('[SkillSandbox] WARNING: Network isolation verification failed. ' +
262
+ 'Network may be accessible despite isolation being requested.');
263
+ }
264
+ }
265
+ catch {
266
+ // Verification command failed - this is expected in isolated environment
267
+ // No action needed
268
+ }
269
+ }
270
+ }
271
+ /**
272
+ * Error thrown when E2B sandbox is not available
273
+ */
274
+ export class SandboxUnavailableError extends Error {
275
+ constructor(message) {
276
+ super(message);
277
+ this.name = 'SandboxUnavailableError';
278
+ }
279
+ }
280
+ /**
281
+ * Factory function for creating sandboxes with proper cleanup
282
+ * Ensures sandbox is destroyed even if test throws
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * const result = await withSandbox(async (sandbox) => {
287
+ * await sandbox.copySkill(skillContent)
288
+ * return sandbox.execute('node test.js')
289
+ * })
290
+ * ```
291
+ */
292
+ export async function withSandbox(fn, options) {
293
+ const sandbox = new SkillSandbox(options);
294
+ try {
295
+ await sandbox.create();
296
+ return await fn(sandbox);
297
+ }
298
+ finally {
299
+ await sandbox.destroy();
300
+ }
301
+ }
302
+ export default SkillSandbox;
303
+ //# sourceMappingURL=SkillSandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillSandbox.js","sourceRoot":"","sources":["../../../src/security/SkillSandbox.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,13 @@
9
9
  */
10
10
  export { SecurityScanner } from './scanner/index.js';
11
11
  export type { SecurityFinding, SecurityFindingType, SecuritySeverity, ScanReport, ScannerOptions, RiskScoreBreakdown, } from './scanner/index.js';
12
- export { sanitizeHtml, sanitizeFileName, sanitizePath, sanitizeUrl, sanitizeText, } from './sanitization.js';
12
+ export { sanitizeHtml, sanitizeFileName, sanitizePath, sanitizeUrl, sanitizeText, isValidStripeId, sanitizeStripeCustomerId, sanitizeStripeSubscriptionId, sanitizeStripePriceId, sanitizeStripeInvoiceId, sanitizeStripeEventId, } from './sanitization.js';
13
13
  export { validateDbPath, validateDbPathOrThrow, isPathSafe, DEFAULT_ALLOWED_DIRS, } from './pathValidation.js';
14
14
  export type { PathValidationOptions, PathValidationResult } from './pathValidation.js';
15
15
  export { AuditLogger } from './AuditLogger.js';
16
16
  export type { AuditLogEntry, AuditEventType, AuditActor, AuditResult, AuditQueryFilter, AuditStats, } from './AuditLogger.js';
17
17
  export { RateLimiter, InMemoryRateLimitStorage, RATE_LIMIT_PRESETS, createRateLimiterFromPreset, RateLimitQueueTimeoutError, RateLimitQueueFullError, } from './rate-limiter/index.js';
18
18
  export type { RateLimitConfig, RateLimitResult, RateLimitStorage, RateLimitMetrics, } from './rate-limiter/index.js';
19
+ export { SkillSandbox, SandboxUnavailableError, withSandbox } from './SkillSandbox.js';
20
+ export type { SandboxOptions, ExecutionResult, SandboxFile, SandboxStatus } from './SkillSandbox.js';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,GACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EAEZ,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,GACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA"}
@@ -10,11 +10,15 @@
10
10
  // Scanner module
11
11
  export { SecurityScanner } from './scanner/index.js';
12
12
  // Sanitization
13
- export { sanitizeHtml, sanitizeFileName, sanitizePath, sanitizeUrl, sanitizeText, } from './sanitization.js';
13
+ export { sanitizeHtml, sanitizeFileName, sanitizePath, sanitizeUrl, sanitizeText,
14
+ // SMI-1062: Stripe ID validators
15
+ isValidStripeId, sanitizeStripeCustomerId, sanitizeStripeSubscriptionId, sanitizeStripePriceId, sanitizeStripeInvoiceId, sanitizeStripeEventId, } from './sanitization.js';
14
16
  // Path validation
15
17
  export { validateDbPath, validateDbPathOrThrow, isPathSafe, DEFAULT_ALLOWED_DIRS, } from './pathValidation.js';
16
18
  // Audit logger
17
19
  export { AuditLogger } from './AuditLogger.js';
18
20
  // Rate limiter module
19
21
  export { RateLimiter, InMemoryRateLimitStorage, RATE_LIMIT_PRESETS, createRateLimiterFromPreset, RateLimitQueueTimeoutError, RateLimitQueueFullError, } from './rate-limiter/index.js';
22
+ // SMI-1534: E2B Sandbox for skill testing
23
+ export { SkillSandbox, SandboxUnavailableError, withSandbox } from './SkillSandbox.js';
20
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUpD,eAAe;AACf,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAG5B,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAU9C,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAUpD,eAAe;AACf,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY;AACZ,iCAAiC;AACjC,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAE1B,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAG5B,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAU9C,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA;AAQhC,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -44,6 +44,18 @@ export declare const RATE_LIMIT_PRESETS: {
44
44
  readonly windowMs: 60000;
45
45
  readonly failMode: "open";
46
46
  };
47
+ /**
48
+ * Stripe Webhook: Optimized for Stripe's webhook delivery patterns
49
+ * SMI-1062: Stripe sends bursts during subscription lifecycle events
50
+ * - 100 requests per minute (sufficient for webhook retries)
51
+ * - Fail-closed to prevent replay attacks
52
+ */
53
+ readonly STRIPE_WEBHOOK: {
54
+ readonly maxTokens: 100;
55
+ readonly refillRate: number;
56
+ readonly windowMs: 60000;
57
+ readonly failMode: "closed";
58
+ };
47
59
  };
48
60
  /**
49
61
  * Create a rate limiter from a preset
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../src/security/rate-limiter/presets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,yEAAyE;;;;;;;IAOzE,8DAA8D;;;;;;;IAO9D,sCAAsC;;;;;;;IAOtC,wCAAwC;;;;;;;IAOxC,+CAA+C;;;;;;;CAOvC,CAAA;AAEV;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,OAAO,kBAAkB,EACvC,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAEb"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../../src/security/rate-limiter/presets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,yEAAyE;;;;;;;IAOzE,8DAA8D;;;;;;;IAO9D,sCAAsC;;;;;;;IAOtC,wCAAwC;;;;;;;IAOxC,+CAA+C;;;;;;;IAO/C;;;;;OAKG;;;;;;;CAOK,CAAA;AAEV;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,OAAO,kBAAkB,EACvC,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAEb"}
@@ -43,6 +43,18 @@ export const RATE_LIMIT_PRESETS = {
43
43
  windowMs: 60000,
44
44
  failMode: 'open',
45
45
  },
46
+ /**
47
+ * Stripe Webhook: Optimized for Stripe's webhook delivery patterns
48
+ * SMI-1062: Stripe sends bursts during subscription lifecycle events
49
+ * - 100 requests per minute (sufficient for webhook retries)
50
+ * - Fail-closed to prevent replay attacks
51
+ */
52
+ STRIPE_WEBHOOK: {
53
+ maxTokens: 100,
54
+ refillRate: 100 / 60, // ~1.67 tokens/sec
55
+ windowMs: 60000,
56
+ failMode: 'closed',
57
+ },
46
58
  };
47
59
  /**
48
60
  * Create a rate limiter from a preset
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../src/security/rate-limiter/presets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,yEAAyE;IACzE,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,mBAAmB;QACxC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,QAAiB;KAC5B;IACD,8DAA8D;IAC9D,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,iBAAiB;QACtC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,sCAAsC;IACtC,OAAO,EAAE;QACP,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,cAAc;QACnC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,wCAAwC;IACxC,QAAQ,EAAE;QACR,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,eAAe;QACrC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,+CAA+C;IAC/C,eAAe,EAAE;QACf,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,eAAe;QACrC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;CACO,CAAA;AAEV;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAuC,EACvC,OAA0B;IAE1B,OAAO,IAAI,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../../src/security/rate-limiter/presets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,yEAAyE;IACzE,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,mBAAmB;QACxC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,QAAiB;KAC5B;IACD,8DAA8D;IAC9D,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,iBAAiB;QACtC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,sCAAsC;IACtC,OAAO,EAAE;QACP,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,cAAc;QACnC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,wCAAwC;IACxC,QAAQ,EAAE;QACR,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,eAAe;QACrC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD,+CAA+C;IAC/C,eAAe,EAAE;QACf,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,eAAe;QACrC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAe;KAC1B;IACD;;;;;OAKG;IACH,cAAc,EAAE;QACd,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,mBAAmB;QACzC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,QAAiB;KAC5B;CACO,CAAA;AAEV;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAuC,EACvC,OAA0B;IAE1B,OAAO,IAAI,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC"}