agentic-qe 2.8.0 → 2.8.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 (226) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +329 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +657 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/cli/commands/supabase/index.d.ts +20 -0
  8. package/dist/cli/commands/supabase/index.d.ts.map +1 -0
  9. package/dist/cli/commands/supabase/index.js +632 -0
  10. package/dist/cli/commands/supabase/index.js.map +1 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts +135 -0
  14. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts.map +1 -0
  15. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js +301 -0
  16. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js.map +1 -0
  17. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts +78 -6
  18. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts.map +1 -1
  19. package/dist/code-intelligence/embeddings/NomicEmbedder.js +162 -21
  20. package/dist/code-intelligence/embeddings/NomicEmbedder.js.map +1 -1
  21. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts +59 -0
  22. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts.map +1 -0
  23. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js +173 -0
  24. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js.map +1 -0
  25. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts +50 -0
  26. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts.map +1 -0
  27. package/dist/code-intelligence/embeddings/backends/RedisBackend.js +279 -0
  28. package/dist/code-intelligence/embeddings/backends/RedisBackend.js.map +1 -0
  29. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts +64 -0
  30. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts.map +1 -0
  31. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js +314 -0
  32. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js.map +1 -0
  33. package/dist/code-intelligence/embeddings/backends/index.d.ts +16 -0
  34. package/dist/code-intelligence/embeddings/backends/index.d.ts.map +1 -0
  35. package/dist/code-intelligence/embeddings/backends/index.js +28 -0
  36. package/dist/code-intelligence/embeddings/backends/index.js.map +1 -0
  37. package/dist/code-intelligence/embeddings/backends/types.d.ts +177 -0
  38. package/dist/code-intelligence/embeddings/backends/types.d.ts.map +1 -0
  39. package/dist/code-intelligence/embeddings/backends/types.js +30 -0
  40. package/dist/code-intelligence/embeddings/backends/types.js.map +1 -0
  41. package/dist/code-intelligence/embeddings/index.d.ts +7 -0
  42. package/dist/code-intelligence/embeddings/index.d.ts.map +1 -1
  43. package/dist/code-intelligence/embeddings/index.js +16 -1
  44. package/dist/code-intelligence/embeddings/index.js.map +1 -1
  45. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  46. package/dist/infrastructure/index.d.ts +15 -0
  47. package/dist/infrastructure/index.d.ts.map +1 -0
  48. package/dist/infrastructure/index.js +44 -0
  49. package/dist/infrastructure/index.js.map +1 -0
  50. package/dist/infrastructure/network/AgentRateLimiter.d.ts +59 -0
  51. package/dist/infrastructure/network/AgentRateLimiter.d.ts.map +1 -0
  52. package/dist/infrastructure/network/AgentRateLimiter.js +186 -0
  53. package/dist/infrastructure/network/AgentRateLimiter.js.map +1 -0
  54. package/dist/infrastructure/network/AuditLogger.d.ts +102 -0
  55. package/dist/infrastructure/network/AuditLogger.d.ts.map +1 -0
  56. package/dist/infrastructure/network/AuditLogger.js +284 -0
  57. package/dist/infrastructure/network/AuditLogger.js.map +1 -0
  58. package/dist/infrastructure/network/DomainWhitelist.d.ts +111 -0
  59. package/dist/infrastructure/network/DomainWhitelist.d.ts.map +1 -0
  60. package/dist/infrastructure/network/DomainWhitelist.js +216 -0
  61. package/dist/infrastructure/network/DomainWhitelist.js.map +1 -0
  62. package/dist/infrastructure/network/NetworkPolicyManager.d.ts +97 -0
  63. package/dist/infrastructure/network/NetworkPolicyManager.d.ts.map +1 -0
  64. package/dist/infrastructure/network/NetworkPolicyManager.js +309 -0
  65. package/dist/infrastructure/network/NetworkPolicyManager.js.map +1 -0
  66. package/dist/infrastructure/network/index.d.ts +19 -0
  67. package/dist/infrastructure/network/index.d.ts.map +1 -0
  68. package/dist/infrastructure/network/index.js +46 -0
  69. package/dist/infrastructure/network/index.js.map +1 -0
  70. package/dist/infrastructure/network/policies/default-policies.d.ts +78 -0
  71. package/dist/infrastructure/network/policies/default-policies.d.ts.map +1 -0
  72. package/dist/infrastructure/network/policies/default-policies.js +312 -0
  73. package/dist/infrastructure/network/policies/default-policies.js.map +1 -0
  74. package/dist/infrastructure/network/types.d.ts +214 -0
  75. package/dist/infrastructure/network/types.d.ts.map +1 -0
  76. package/dist/infrastructure/network/types.js +25 -0
  77. package/dist/infrastructure/network/types.js.map +1 -0
  78. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts +124 -0
  79. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts.map +1 -0
  80. package/dist/infrastructure/sandbox/ResourceMonitor.js +305 -0
  81. package/dist/infrastructure/sandbox/ResourceMonitor.js.map +1 -0
  82. package/dist/infrastructure/sandbox/SandboxManager.d.ts +122 -0
  83. package/dist/infrastructure/sandbox/SandboxManager.d.ts.map +1 -0
  84. package/dist/infrastructure/sandbox/SandboxManager.js +527 -0
  85. package/dist/infrastructure/sandbox/SandboxManager.js.map +1 -0
  86. package/dist/infrastructure/sandbox/index.d.ts +18 -0
  87. package/dist/infrastructure/sandbox/index.d.ts.map +1 -0
  88. package/dist/infrastructure/sandbox/index.js +38 -0
  89. package/dist/infrastructure/sandbox/index.js.map +1 -0
  90. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts +53 -0
  91. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts.map +1 -0
  92. package/dist/infrastructure/sandbox/profiles/agent-profiles.js +433 -0
  93. package/dist/infrastructure/sandbox/profiles/agent-profiles.js.map +1 -0
  94. package/dist/infrastructure/sandbox/types.d.ts +227 -0
  95. package/dist/infrastructure/sandbox/types.d.ts.map +1 -0
  96. package/dist/infrastructure/sandbox/types.js +63 -0
  97. package/dist/infrastructure/sandbox/types.js.map +1 -0
  98. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
  99. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
  100. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
  101. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
  102. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
  103. package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
  104. package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
  105. package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
  106. package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
  107. package/dist/mcp/handlers/ruvector/index.js +9 -0
  108. package/dist/mcp/handlers/ruvector/index.js.map +1 -0
  109. package/dist/mcp/server-instructions.d.ts +1 -1
  110. package/dist/mcp/server-instructions.js +1 -1
  111. package/dist/mcp/server.d.ts.map +1 -1
  112. package/dist/mcp/server.js +100 -22
  113. package/dist/mcp/server.js.map +1 -1
  114. package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
  115. package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
  116. package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
  117. package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
  118. package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
  119. package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
  120. package/dist/nervous-system/adapters/CircadianController.js +882 -0
  121. package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
  122. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
  123. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
  124. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
  125. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
  126. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
  127. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
  128. package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
  129. package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
  130. package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
  131. package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
  132. package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
  133. package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
  134. package/dist/nervous-system/index.d.ts +25 -0
  135. package/dist/nervous-system/index.d.ts.map +1 -0
  136. package/dist/nervous-system/index.js +80 -0
  137. package/dist/nervous-system/index.js.map +1 -0
  138. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
  139. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
  140. package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
  141. package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
  142. package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
  143. package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
  144. package/dist/nervous-system/integration/CircadianAgent.js +696 -0
  145. package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
  146. package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
  147. package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
  148. package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
  149. package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
  150. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
  151. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
  152. package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
  153. package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
  154. package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
  155. package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
  156. package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
  157. package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
  158. package/dist/nervous-system/integration/index.d.ts +22 -0
  159. package/dist/nervous-system/integration/index.d.ts.map +1 -0
  160. package/dist/nervous-system/integration/index.js +44 -0
  161. package/dist/nervous-system/integration/index.js.map +1 -0
  162. package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
  163. package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
  164. package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
  165. package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
  166. package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
  167. package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
  168. package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
  169. package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
  170. package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
  171. package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
  172. package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
  173. package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
  174. package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
  175. package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
  176. package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
  177. package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
  178. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
  179. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
  180. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
  181. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
  182. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
  183. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
  184. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
  185. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
  186. package/dist/nervous-system/persistence/index.d.ts +22 -0
  187. package/dist/nervous-system/persistence/index.d.ts.map +1 -0
  188. package/dist/nervous-system/persistence/index.js +45 -0
  189. package/dist/nervous-system/persistence/index.js.map +1 -0
  190. package/dist/nervous-system/wasm-loader.d.ts +52 -0
  191. package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
  192. package/dist/nervous-system/wasm-loader.js +188 -0
  193. package/dist/nervous-system/wasm-loader.js.map +1 -0
  194. package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
  195. package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
  196. package/dist/persistence/HybridPersistenceProvider.js +1086 -0
  197. package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
  198. package/dist/persistence/IPersistenceProvider.d.ts +657 -0
  199. package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
  200. package/dist/persistence/IPersistenceProvider.js +11 -0
  201. package/dist/persistence/IPersistenceProvider.js.map +1 -0
  202. package/dist/persistence/SupabaseConfig.d.ts +176 -0
  203. package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
  204. package/dist/persistence/SupabaseConfig.js +277 -0
  205. package/dist/persistence/SupabaseConfig.js.map +1 -0
  206. package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
  207. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
  208. package/dist/persistence/SupabasePersistenceProvider.js +959 -0
  209. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
  210. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
  211. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
  212. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
  213. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
  214. package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
  215. package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
  216. package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
  217. package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
  218. package/dist/persistence/adapters/index.d.ts +11 -0
  219. package/dist/persistence/adapters/index.d.ts.map +1 -0
  220. package/dist/persistence/adapters/index.js +20 -0
  221. package/dist/persistence/adapters/index.js.map +1 -0
  222. package/dist/persistence/index.d.ts +14 -0
  223. package/dist/persistence/index.d.ts.map +1 -1
  224. package/dist/persistence/index.js +36 -1
  225. package/dist/persistence/index.js.map +1 -1
  226. package/package.json +7 -1
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ /**
3
+ * Default Network Policies for QE Agents
4
+ *
5
+ * IMPORTANT: Network policy enforcement is OPT-IN, not opt-out.
6
+ * By default, agents have unrestricted network access for flexibility.
7
+ *
8
+ * Enable restrictive policies only when:
9
+ * - Deploying in security-sensitive environments
10
+ * - Running untrusted agent code
11
+ * - Compliance requirements mandate network isolation
12
+ *
13
+ * @module infrastructure/network/policies/default-policies
14
+ * @see Issue #146 - Security Hardening: SP-3 Network Policy Enforcement
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DEFAULT_NETWORK_POLICIES = exports.RESTRICTIVE_POLICY_TEMPLATE = exports.DEVELOPMENT_DOMAINS = exports.LLM_PROVIDER_DOMAINS = void 0;
18
+ exports.getNetworkPolicy = getNetworkPolicy;
19
+ exports.listPolicyAgentTypes = listPolicyAgentTypes;
20
+ exports.mergePolicy = mergePolicy;
21
+ exports.createRestrictivePolicy = createRestrictivePolicy;
22
+ exports.enableRestrictiveModeGlobally = enableRestrictiveModeGlobally;
23
+ /**
24
+ * All known LLM provider domains that the multi-model router may access
25
+ * Add new providers here as they're supported
26
+ */
27
+ exports.LLM_PROVIDER_DOMAINS = [
28
+ // Anthropic (Claude)
29
+ 'api.anthropic.com',
30
+ // OpenAI
31
+ 'api.openai.com',
32
+ // OpenRouter (multi-provider gateway)
33
+ 'openrouter.ai',
34
+ // Groq
35
+ 'api.groq.com',
36
+ // Google (Gemini)
37
+ 'generativelanguage.googleapis.com',
38
+ // Together AI
39
+ 'api.together.xyz',
40
+ // GitHub Models
41
+ 'models.inference.ai.azure.com',
42
+ // Azure OpenAI
43
+ 'openai.azure.com',
44
+ // Fireworks AI
45
+ 'api.fireworks.ai',
46
+ // Mistral AI
47
+ 'api.mistral.ai',
48
+ // Cohere
49
+ 'api.cohere.ai',
50
+ // Perplexity
51
+ 'api.perplexity.ai',
52
+ // DeepSeek
53
+ 'api.deepseek.com',
54
+ // Local inference (Ollama, ruvLLM, vLLM, etc.)
55
+ 'localhost',
56
+ '127.0.0.1',
57
+ ];
58
+ /**
59
+ * Development/testing domains that agents commonly need
60
+ */
61
+ exports.DEVELOPMENT_DOMAINS = [
62
+ // Package registries
63
+ 'registry.npmjs.org',
64
+ 'pypi.org',
65
+ // Code hosting
66
+ 'api.github.com',
67
+ 'github.com',
68
+ 'gitlab.com',
69
+ 'api.gitlab.com',
70
+ 'bitbucket.org',
71
+ // Security databases (for security scanner)
72
+ 'nvd.nist.gov',
73
+ 'cve.mitre.org',
74
+ 'osv.dev',
75
+ 'security.snyk.io',
76
+ 'cvedetails.com',
77
+ ];
78
+ /**
79
+ * Default permissive policy - agents can access any domain
80
+ * This is the base policy when no restrictions are needed
81
+ */
82
+ const PERMISSIVE_POLICY = {
83
+ agentType: 'default',
84
+ allowedDomains: [], // Empty = no whitelist = allow all
85
+ rateLimit: {
86
+ requestsPerMinute: 120,
87
+ requestsPerHour: 3000,
88
+ burstSize: 20,
89
+ },
90
+ auditLogging: true,
91
+ blockUnknownDomains: false, // OPT-IN: false = permissive by default
92
+ timeoutMs: 60000,
93
+ };
94
+ /**
95
+ * Restrictive policy template for security-sensitive deployments
96
+ * Use this when you need to lock down agent network access
97
+ */
98
+ exports.RESTRICTIVE_POLICY_TEMPLATE = {
99
+ agentType: 'restrictive-template',
100
+ allowedDomains: [...exports.LLM_PROVIDER_DOMAINS, ...exports.DEVELOPMENT_DOMAINS],
101
+ rateLimit: {
102
+ requestsPerMinute: 60,
103
+ requestsPerHour: 1000,
104
+ burstSize: 10,
105
+ },
106
+ auditLogging: true,
107
+ blockUnknownDomains: true, // Restrictive: only allow whitelisted domains
108
+ timeoutMs: 30000,
109
+ };
110
+ /**
111
+ * Default network policies for all QE agent types
112
+ *
113
+ * DESIGN PRINCIPLE: Permissive by default (blockUnknownDomains: false)
114
+ * - QE agents need to test arbitrary websites/APIs
115
+ * - Multi-model router accesses multiple LLM providers
116
+ * - Rate limiting still applies for protection
117
+ *
118
+ * To enable restrictive mode:
119
+ * ```typescript
120
+ * const policy = getNetworkPolicy('qe-test-generator');
121
+ * policy.blockUnknownDomains = true;
122
+ * policy.allowedDomains = [...LLM_PROVIDER_DOMAINS, 'my-api.example.com'];
123
+ * ```
124
+ */
125
+ exports.DEFAULT_NETWORK_POLICIES = {
126
+ // ============================================
127
+ // Core QE Agents - Permissive with audit logging
128
+ // ============================================
129
+ 'qe-test-generator': {
130
+ ...PERMISSIVE_POLICY,
131
+ agentType: 'qe-test-generator',
132
+ auditLogging: true,
133
+ },
134
+ 'qe-coverage-analyzer': {
135
+ ...PERMISSIVE_POLICY,
136
+ agentType: 'qe-coverage-analyzer',
137
+ },
138
+ 'qe-security-scanner': {
139
+ ...PERMISSIVE_POLICY,
140
+ agentType: 'qe-security-scanner',
141
+ // Security scanner gets higher rate limits for vulnerability DB queries
142
+ rateLimit: {
143
+ requestsPerMinute: 180,
144
+ requestsPerHour: 5000,
145
+ burstSize: 30,
146
+ },
147
+ timeoutMs: 90000, // Longer timeout for security scans
148
+ },
149
+ 'qe-performance-tester': {
150
+ ...PERMISSIVE_POLICY,
151
+ agentType: 'qe-performance-tester',
152
+ // Performance testing may need high request rates
153
+ rateLimit: {
154
+ requestsPerMinute: 300,
155
+ requestsPerHour: 10000,
156
+ burstSize: 50,
157
+ },
158
+ timeoutMs: 120000, // Longer timeout for perf tests
159
+ },
160
+ 'qe-flaky-test-hunter': {
161
+ ...PERMISSIVE_POLICY,
162
+ agentType: 'qe-flaky-test-hunter',
163
+ },
164
+ 'qe-api-contract-validator': {
165
+ ...PERMISSIVE_POLICY,
166
+ agentType: 'qe-api-contract-validator',
167
+ // Contract validation needs to hit various API endpoints
168
+ rateLimit: {
169
+ requestsPerMinute: 120,
170
+ requestsPerHour: 3000,
171
+ burstSize: 25,
172
+ },
173
+ },
174
+ 'qe-visual-tester': {
175
+ ...PERMISSIVE_POLICY,
176
+ agentType: 'qe-visual-tester',
177
+ timeoutMs: 90000, // Screenshots take time
178
+ },
179
+ 'qe-code-intelligence': {
180
+ ...PERMISSIVE_POLICY,
181
+ agentType: 'qe-code-intelligence',
182
+ },
183
+ 'qe-quality-analyzer': {
184
+ ...PERMISSIVE_POLICY,
185
+ agentType: 'qe-quality-analyzer',
186
+ },
187
+ 'qe-a11y-ally': {
188
+ ...PERMISSIVE_POLICY,
189
+ agentType: 'qe-a11y-ally',
190
+ // A11y testing needs to fetch web pages
191
+ rateLimit: {
192
+ requestsPerMinute: 60,
193
+ requestsPerHour: 1500,
194
+ burstSize: 15,
195
+ },
196
+ },
197
+ 'qe-chaos-engineer': {
198
+ ...PERMISSIVE_POLICY,
199
+ agentType: 'qe-chaos-engineer',
200
+ // Chaos engineering may need to probe many endpoints
201
+ rateLimit: {
202
+ requestsPerMinute: 200,
203
+ requestsPerHour: 5000,
204
+ burstSize: 40,
205
+ },
206
+ timeoutMs: 90000,
207
+ },
208
+ 'qe-deployment-readiness': {
209
+ ...PERMISSIVE_POLICY,
210
+ agentType: 'qe-deployment-readiness',
211
+ },
212
+ 'qe-production-intelligence': {
213
+ ...PERMISSIVE_POLICY,
214
+ agentType: 'qe-production-intelligence',
215
+ },
216
+ 'qx-partner': {
217
+ ...PERMISSIVE_POLICY,
218
+ agentType: 'qx-partner',
219
+ },
220
+ // ============================================
221
+ // n8n Workflow Agents - Permissive
222
+ // ============================================
223
+ 'n8n-workflow-executor': {
224
+ ...PERMISSIVE_POLICY,
225
+ agentType: 'n8n-workflow-executor',
226
+ // Workflows may call arbitrary APIs
227
+ rateLimit: {
228
+ requestsPerMinute: 120,
229
+ requestsPerHour: 3000,
230
+ burstSize: 20,
231
+ },
232
+ },
233
+ 'n8n-security-auditor': {
234
+ ...PERMISSIVE_POLICY,
235
+ agentType: 'n8n-security-auditor',
236
+ },
237
+ 'n8n-chaos-tester': {
238
+ ...PERMISSIVE_POLICY,
239
+ agentType: 'n8n-chaos-tester',
240
+ rateLimit: {
241
+ requestsPerMinute: 150,
242
+ requestsPerHour: 4000,
243
+ burstSize: 30,
244
+ },
245
+ },
246
+ // ============================================
247
+ // Default Policy - Applied to unknown agent types
248
+ // ============================================
249
+ default: {
250
+ ...PERMISSIVE_POLICY,
251
+ agentType: 'default',
252
+ },
253
+ };
254
+ /**
255
+ * Get policy for an agent type
256
+ * Falls back to default if not found
257
+ */
258
+ function getNetworkPolicy(agentType) {
259
+ return exports.DEFAULT_NETWORK_POLICIES[agentType] || exports.DEFAULT_NETWORK_POLICIES['default'];
260
+ }
261
+ /**
262
+ * List all agent types with policies
263
+ */
264
+ function listPolicyAgentTypes() {
265
+ return Object.keys(exports.DEFAULT_NETWORK_POLICIES).filter((k) => k !== 'default');
266
+ }
267
+ /**
268
+ * Merge custom policy with default
269
+ */
270
+ function mergePolicy(agentType, customPolicy) {
271
+ const basePolicy = getNetworkPolicy(agentType);
272
+ return {
273
+ ...basePolicy,
274
+ ...customPolicy,
275
+ rateLimit: {
276
+ ...basePolicy.rateLimit,
277
+ ...customPolicy.rateLimit,
278
+ },
279
+ };
280
+ }
281
+ /**
282
+ * Create a restrictive policy for security-sensitive deployments
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * // Lock down an agent to only access LLM providers and specific APIs
287
+ * const policy = createRestrictivePolicy('qe-test-generator', [
288
+ * 'api.example.com',
289
+ * 'staging.example.com'
290
+ * ]);
291
+ * manager.registerPolicy(policy);
292
+ * ```
293
+ */
294
+ function createRestrictivePolicy(agentType, additionalDomains = []) {
295
+ const basePolicy = getNetworkPolicy(agentType);
296
+ return {
297
+ ...basePolicy,
298
+ allowedDomains: [...exports.LLM_PROVIDER_DOMAINS, ...exports.DEVELOPMENT_DOMAINS, ...additionalDomains],
299
+ blockUnknownDomains: true,
300
+ };
301
+ }
302
+ /**
303
+ * Enable restrictive mode for all default policies
304
+ * Call this when deploying in a security-sensitive environment
305
+ */
306
+ function enableRestrictiveModeGlobally() {
307
+ for (const policy of Object.values(exports.DEFAULT_NETWORK_POLICIES)) {
308
+ policy.allowedDomains = [...exports.LLM_PROVIDER_DOMAINS, ...exports.DEVELOPMENT_DOMAINS];
309
+ policy.blockUnknownDomains = true;
310
+ }
311
+ }
312
+ //# sourceMappingURL=default-policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-policies.js","sourceRoot":"","sources":["../../../../src/infrastructure/network/policies/default-policies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Types for Network Policy Enforcement
3
+ *
4
+ * Provides type definitions for agent network access control,
5
+ * domain whitelisting, rate limiting, and audit logging.
6
+ *
7
+ * @module infrastructure/network/types
8
+ * @see Issue #146 - Security Hardening: SP-3 Network Policy Enforcement
9
+ */
10
+ /**
11
+ * Network policy for an agent type
12
+ */
13
+ export interface NetworkPolicy {
14
+ /** Agent type this policy applies to */
15
+ agentType: string;
16
+ /** Allowed domains for network access */
17
+ allowedDomains: string[];
18
+ /** Rate limiting configuration */
19
+ rateLimit: RateLimitConfig;
20
+ /** Enable audit logging for this agent type */
21
+ auditLogging: boolean;
22
+ /** Block requests to domains not in allowedDomains */
23
+ blockUnknownDomains: boolean;
24
+ /** Custom headers to add to requests */
25
+ customHeaders?: Record<string, string>;
26
+ /** Timeout for requests in ms */
27
+ timeoutMs?: number;
28
+ }
29
+ /**
30
+ * Rate limit configuration
31
+ */
32
+ export interface RateLimitConfig {
33
+ /** Maximum requests per minute */
34
+ requestsPerMinute: number;
35
+ /** Maximum requests per hour */
36
+ requestsPerHour: number;
37
+ /** Burst size for token bucket */
38
+ burstSize: number;
39
+ }
40
+ /**
41
+ * Policy check result
42
+ */
43
+ export interface PolicyCheckResult {
44
+ /** Whether the request is allowed */
45
+ allowed: boolean;
46
+ /** Policy that was applied */
47
+ policy: NetworkPolicy;
48
+ /** Reason if blocked */
49
+ reason?: PolicyBlockReason;
50
+ /** Details about the block */
51
+ details?: string;
52
+ /** Rate limit status */
53
+ rateLimitStatus?: RateLimitStatus;
54
+ }
55
+ /**
56
+ * Reasons for blocking a request
57
+ */
58
+ export type PolicyBlockReason = 'domain_not_allowed' | 'rate_limit_exceeded' | 'policy_not_found' | 'agent_blocked';
59
+ /**
60
+ * Rate limit status
61
+ */
62
+ export interface RateLimitStatus {
63
+ /** Whether currently rate limited */
64
+ limited: boolean;
65
+ /** Current request count in window */
66
+ currentRate: number;
67
+ /** Remaining requests in window */
68
+ remaining: number;
69
+ /** Time until rate limit resets (ms) */
70
+ resetIn: number;
71
+ /** Retry after time if limited (ms) */
72
+ retryAfter?: number;
73
+ }
74
+ /**
75
+ * Audit entry for network requests
76
+ */
77
+ export interface AuditEntry {
78
+ /** Entry ID */
79
+ id: string;
80
+ /** Timestamp of the request */
81
+ timestamp: Date;
82
+ /** Agent ID making the request */
83
+ agentId: string;
84
+ /** Agent type */
85
+ agentType: string;
86
+ /** Target domain */
87
+ domain: string;
88
+ /** Full URL (optional, may be redacted) */
89
+ url?: string;
90
+ /** Action taken */
91
+ action: AuditAction;
92
+ /** Reason for action */
93
+ reason?: string;
94
+ /** HTTP method */
95
+ requestMethod?: string;
96
+ /** Request path */
97
+ requestPath?: string;
98
+ /** Response status code */
99
+ responseStatus?: number;
100
+ /** Response time in ms */
101
+ responseTimeMs?: number;
102
+ /** Request body size */
103
+ requestSizeBytes?: number;
104
+ /** Response body size */
105
+ responseSizeBytes?: number;
106
+ /** Additional metadata */
107
+ metadata?: Record<string, unknown>;
108
+ }
109
+ /**
110
+ * Audit action types
111
+ */
112
+ export type AuditAction = 'allowed' | 'blocked' | 'rate_limited';
113
+ /**
114
+ * Query filter for audit entries
115
+ */
116
+ export interface AuditQueryFilter {
117
+ /** Filter by agent ID */
118
+ agentId?: string;
119
+ /** Filter by agent type */
120
+ agentType?: string;
121
+ /** Filter by domain */
122
+ domain?: string;
123
+ /** Filter by action */
124
+ action?: AuditAction;
125
+ /** Start timestamp */
126
+ since?: Date;
127
+ /** End timestamp */
128
+ until?: Date;
129
+ /** Maximum entries to return */
130
+ limit?: number;
131
+ /** Offset for pagination */
132
+ offset?: number;
133
+ }
134
+ /**
135
+ * Audit statistics
136
+ */
137
+ export interface AuditStats {
138
+ /** Total requests */
139
+ totalRequests: number;
140
+ /** Allowed requests */
141
+ allowedRequests: number;
142
+ /** Blocked requests */
143
+ blockedRequests: number;
144
+ /** Rate limited requests */
145
+ rateLimitedRequests: number;
146
+ /** Requests by domain */
147
+ byDomain: Record<string, number>;
148
+ /** Requests by agent type */
149
+ byAgentType: Record<string, number>;
150
+ /** Average response time */
151
+ avgResponseTimeMs: number;
152
+ /** Time period for stats */
153
+ since: Date;
154
+ /** Stats collection timestamp */
155
+ timestamp: Date;
156
+ }
157
+ /**
158
+ * Network policy manager configuration
159
+ */
160
+ export interface NetworkPolicyManagerConfig {
161
+ /** Default policy for unknown agent types */
162
+ defaultPolicy: NetworkPolicy;
163
+ /** Enable audit logging */
164
+ enableAuditLogging: boolean;
165
+ /** Maximum audit entries to keep in memory */
166
+ maxAuditEntries: number;
167
+ /** Persist audit log to file */
168
+ persistAuditLog?: boolean;
169
+ /** Audit log file path */
170
+ auditLogPath?: string;
171
+ /** Enable debug logging */
172
+ debug: boolean;
173
+ }
174
+ /**
175
+ * Network policy error
176
+ */
177
+ export declare class NetworkPolicyError extends Error {
178
+ readonly reason: PolicyBlockReason;
179
+ readonly details?: Record<string, unknown> | undefined;
180
+ constructor(message: string, reason: PolicyBlockReason, details?: Record<string, unknown> | undefined);
181
+ }
182
+ /**
183
+ * Rate limiter interface
184
+ */
185
+ export interface IRateLimiter {
186
+ /** Check if request is allowed (doesn't consume) */
187
+ check(agentId: string): RateLimitStatus;
188
+ /** Consume a request (returns status) */
189
+ consume(agentId: string): RateLimitStatus;
190
+ /** Reset rate limit for agent */
191
+ reset(agentId: string): void;
192
+ /** Get current status for agent */
193
+ getStatus(agentId: string): RateLimitStatus;
194
+ }
195
+ /**
196
+ * Event types for network policy events
197
+ */
198
+ export type NetworkPolicyEventType = 'request_allowed' | 'request_blocked' | 'request_rate_limited' | 'policy_updated' | 'policy_violation';
199
+ /**
200
+ * Network policy event
201
+ */
202
+ export interface NetworkPolicyEvent {
203
+ type: NetworkPolicyEventType;
204
+ timestamp: Date;
205
+ agentId: string;
206
+ agentType: string;
207
+ domain?: string;
208
+ details?: Record<string, unknown>;
209
+ }
210
+ /**
211
+ * Event handler type
212
+ */
213
+ export type NetworkPolicyEventHandler = (event: NetworkPolicyEvent) => void | Promise<void>;
214
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/network/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Types for Network Policy Enforcement
4
+ *
5
+ * Provides type definitions for agent network access control,
6
+ * domain whitelisting, rate limiting, and audit logging.
7
+ *
8
+ * @module infrastructure/network/types
9
+ * @see Issue #146 - Security Hardening: SP-3 Network Policy Enforcement
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NetworkPolicyError = void 0;
13
+ /**
14
+ * Network policy error
15
+ */
16
+ class NetworkPolicyError extends Error {
17
+ constructor(message, reason, details) {
18
+ super(message);
19
+ this.reason = reason;
20
+ this.details = details;
21
+ this.name = 'NetworkPolicyError';
22
+ }
23
+ }
24
+ exports.NetworkPolicyError = NetworkPolicyError;
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/infrastructure/network/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAsOH;;GAEG;AACH,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YACE,OAAe,EACC,MAAyB,EACzB,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AATD,gDASC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Resource Monitor for Docker Containers
3
+ *
4
+ * Monitors CPU, memory, disk, and network usage for sandboxed agent containers.
5
+ * Provides real-time stats and threshold-based alerts.
6
+ *
7
+ * @module infrastructure/sandbox/ResourceMonitor
8
+ * @see Issue #146 - Security Hardening: Docker Sandboxing
9
+ */
10
+ import type Docker from 'dockerode';
11
+ import type { ResourceStats, SandboxEventHandler } from './types.js';
12
+ /**
13
+ * Resource threshold configuration
14
+ */
15
+ export interface ResourceThresholds {
16
+ /** CPU usage percentage threshold (0-100) */
17
+ cpuPercent: number;
18
+ /** Memory usage percentage threshold (0-100) */
19
+ memoryPercent: number;
20
+ /** Disk usage percentage threshold (0-100) */
21
+ diskPercent: number;
22
+ }
23
+ /**
24
+ * Default resource thresholds for alerts
25
+ */
26
+ export declare const DEFAULT_THRESHOLDS: ResourceThresholds;
27
+ /**
28
+ * Resource monitor configuration
29
+ */
30
+ export interface ResourceMonitorConfig {
31
+ /** Monitoring interval in milliseconds */
32
+ intervalMs: number;
33
+ /** Resource thresholds for alerts */
34
+ thresholds: ResourceThresholds;
35
+ /** Enable automatic OOM prevention */
36
+ enableOomPrevention: boolean;
37
+ /** Memory threshold for OOM prevention (percentage) */
38
+ oomPreventionThreshold: number;
39
+ }
40
+ /**
41
+ * Default monitor configuration
42
+ */
43
+ export declare const DEFAULT_MONITOR_CONFIG: ResourceMonitorConfig;
44
+ /**
45
+ * ResourceMonitor class for tracking container resource usage
46
+ */
47
+ export declare class ResourceMonitor {
48
+ private docker;
49
+ private config;
50
+ private containers;
51
+ private monitorInterval;
52
+ private eventHandlers;
53
+ private isRunning;
54
+ constructor(docker: Docker, config?: Partial<ResourceMonitorConfig>);
55
+ /**
56
+ * Start monitoring a container
57
+ */
58
+ addContainer(containerId: string, agentId: string, agentType: string): void;
59
+ /**
60
+ * Stop monitoring a container
61
+ */
62
+ removeContainer(containerId: string): void;
63
+ /**
64
+ * Start the monitoring loop
65
+ */
66
+ start(): void;
67
+ /**
68
+ * Stop the monitoring loop
69
+ */
70
+ stop(): void;
71
+ /**
72
+ * Get stats for a specific container
73
+ */
74
+ getStats(containerId: string): Promise<ResourceStats | null>;
75
+ /**
76
+ * Get cached stats for a container (no API call)
77
+ */
78
+ getCachedStats(containerId: string): ResourceStats | null;
79
+ /**
80
+ * Get stats for all monitored containers
81
+ */
82
+ getAllStats(): Promise<Map<string, ResourceStats>>;
83
+ /**
84
+ * Add event handler
85
+ */
86
+ on(handler: SandboxEventHandler): void;
87
+ /**
88
+ * Remove event handler
89
+ */
90
+ off(handler: SandboxEventHandler): void;
91
+ /**
92
+ * Collect stats for all monitored containers
93
+ */
94
+ private collectAllStats;
95
+ /**
96
+ * Collect stats and check thresholds for a container
97
+ */
98
+ private collectAndCheckContainer;
99
+ /**
100
+ * Collect resource stats for a container
101
+ */
102
+ private collectContainerStats;
103
+ /**
104
+ * Parse Docker stats response into ResourceStats
105
+ */
106
+ private parseDockerStats;
107
+ /**
108
+ * Check resource thresholds and emit events
109
+ */
110
+ private checkThresholds;
111
+ /**
112
+ * Emit event to all handlers
113
+ */
114
+ private emitEvent;
115
+ /**
116
+ * Get monitoring status
117
+ */
118
+ getStatus(): {
119
+ running: boolean;
120
+ containerCount: number;
121
+ intervalMs: number;
122
+ };
123
+ }
124
+ //# sourceMappingURL=ResourceMonitor.d.ts.map