hackmyagent 0.11.12 → 0.11.14

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 (96) hide show
  1. package/README.md +16 -15
  2. package/dist/arp/engine/correlation.d.ts +27 -0
  3. package/dist/arp/engine/correlation.d.ts.map +1 -0
  4. package/dist/arp/engine/correlation.js +95 -0
  5. package/dist/arp/engine/correlation.js.map +1 -0
  6. package/dist/arp/engine/event-engine.d.ts +1 -0
  7. package/dist/arp/engine/event-engine.d.ts.map +1 -1
  8. package/dist/arp/engine/event-engine.js +16 -0
  9. package/dist/arp/engine/event-engine.js.map +1 -1
  10. package/dist/arp/index.d.ts +2 -0
  11. package/dist/arp/index.d.ts.map +1 -1
  12. package/dist/arp/index.js +5 -1
  13. package/dist/arp/index.js.map +1 -1
  14. package/dist/arp/intelligence/anomaly.d.ts +4 -0
  15. package/dist/arp/intelligence/anomaly.d.ts.map +1 -1
  16. package/dist/arp/intelligence/anomaly.js +71 -0
  17. package/dist/arp/intelligence/anomaly.js.map +1 -1
  18. package/dist/arp/intelligence/nanomind-l1.d.ts +72 -0
  19. package/dist/arp/intelligence/nanomind-l1.d.ts.map +1 -0
  20. package/dist/arp/intelligence/nanomind-l1.js +268 -0
  21. package/dist/arp/intelligence/nanomind-l1.js.map +1 -0
  22. package/dist/arp/monitors/network.d.ts +16 -1
  23. package/dist/arp/monitors/network.d.ts.map +1 -1
  24. package/dist/arp/monitors/network.js +55 -1
  25. package/dist/arp/monitors/network.js.map +1 -1
  26. package/dist/arp/proxy/server.d.ts +7 -0
  27. package/dist/arp/proxy/server.d.ts.map +1 -1
  28. package/dist/arp/proxy/server.js +24 -0
  29. package/dist/arp/proxy/server.js.map +1 -1
  30. package/dist/attack-engine/feedback-loop.d.ts +36 -0
  31. package/dist/attack-engine/feedback-loop.d.ts.map +1 -0
  32. package/dist/attack-engine/feedback-loop.js +261 -0
  33. package/dist/attack-engine/feedback-loop.js.map +1 -0
  34. package/dist/attack-engine/index.d.ts +13 -0
  35. package/dist/attack-engine/index.d.ts.map +1 -0
  36. package/dist/attack-engine/index.js +21 -0
  37. package/dist/attack-engine/index.js.map +1 -0
  38. package/dist/attack-engine/payload-generator.d.ts +21 -0
  39. package/dist/attack-engine/payload-generator.d.ts.map +1 -0
  40. package/dist/attack-engine/payload-generator.js +210 -0
  41. package/dist/attack-engine/payload-generator.js.map +1 -0
  42. package/dist/attack-engine/target-reader.d.ts +15 -0
  43. package/dist/attack-engine/target-reader.d.ts.map +1 -0
  44. package/dist/attack-engine/target-reader.js +152 -0
  45. package/dist/attack-engine/target-reader.js.map +1 -0
  46. package/dist/attack-engine/training-pipeline.d.ts +57 -0
  47. package/dist/attack-engine/training-pipeline.d.ts.map +1 -0
  48. package/dist/attack-engine/training-pipeline.js +146 -0
  49. package/dist/attack-engine/training-pipeline.js.map +1 -0
  50. package/dist/attack-engine/types.d.ts +133 -0
  51. package/dist/attack-engine/types.d.ts.map +1 -0
  52. package/dist/attack-engine/types.js +22 -0
  53. package/dist/attack-engine/types.js.map +1 -0
  54. package/dist/cli.js +210 -12
  55. package/dist/cli.js.map +1 -1
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +9 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/output/asff.d.ts +37 -0
  61. package/dist/output/asff.d.ts.map +1 -0
  62. package/dist/output/asff.js +112 -0
  63. package/dist/output/asff.js.map +1 -0
  64. package/dist/semantic/index.d.ts +2 -0
  65. package/dist/semantic/index.d.ts.map +1 -1
  66. package/dist/semantic/index.js +9 -1
  67. package/dist/semantic/index.js.map +1 -1
  68. package/dist/semantic/nanomind-analyzer.d.ts +77 -0
  69. package/dist/semantic/nanomind-analyzer.d.ts.map +1 -0
  70. package/dist/semantic/nanomind-analyzer.js +165 -0
  71. package/dist/semantic/nanomind-analyzer.js.map +1 -0
  72. package/dist/simulation/engine.d.ts +69 -0
  73. package/dist/simulation/engine.d.ts.map +1 -0
  74. package/dist/simulation/engine.js +297 -0
  75. package/dist/simulation/engine.js.map +1 -0
  76. package/dist/simulation/index.d.ts +15 -0
  77. package/dist/simulation/index.d.ts.map +1 -0
  78. package/dist/simulation/index.js +31 -0
  79. package/dist/simulation/index.js.map +1 -0
  80. package/dist/simulation/llm-executor.d.ts +58 -0
  81. package/dist/simulation/llm-executor.d.ts.map +1 -0
  82. package/dist/simulation/llm-executor.js +297 -0
  83. package/dist/simulation/llm-executor.js.map +1 -0
  84. package/dist/simulation/mock-tools.d.ts +35 -0
  85. package/dist/simulation/mock-tools.d.ts.map +1 -0
  86. package/dist/simulation/mock-tools.js +181 -0
  87. package/dist/simulation/mock-tools.js.map +1 -0
  88. package/dist/simulation/probes.d.ts +17 -0
  89. package/dist/simulation/probes.d.ts.map +1 -0
  90. package/dist/simulation/probes.js +295 -0
  91. package/dist/simulation/probes.js.map +1 -0
  92. package/dist/simulation/types.d.ts +79 -0
  93. package/dist/simulation/types.d.ts.map +1 -0
  94. package/dist/simulation/types.js +25 -0
  95. package/dist/simulation/types.js.map +1 -0
  96. package/package.json +1 -1
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ /**
3
+ * Skill Simulation Engine
4
+ *
5
+ * Executes skills inside a controlled LLM with mock tool environment.
6
+ * Observes behavioral patterns to determine if a skill is malicious.
7
+ *
8
+ * Three layers:
9
+ * - Layer 1: NanoMind TME classification (< 8ms, handled by --semantic flag)
10
+ * - Layer 2: 5 targeted probes (< 3 seconds)
11
+ * - Layer 3: Full 20-probe simulation (< 30 seconds)
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.SimulationEngine = void 0;
15
+ exports.parseSkillProfile = parseSkillProfile;
16
+ const mock_tools_js_1 = require("./mock-tools.js");
17
+ const probes_js_1 = require("./probes.js");
18
+ const llm_executor_js_1 = require("./llm-executor.js");
19
+ // ============================================================================
20
+ // Simulation Engine
21
+ // ============================================================================
22
+ class SimulationEngine {
23
+ /**
24
+ * @param options.useLLM - If true, auto-detect and use LLM backends.
25
+ * If false (default for tests), use heuristic analysis only.
26
+ * Set to true in production or when LLM backends are available.
27
+ */
28
+ constructor(options) {
29
+ this.llmBackend = null;
30
+ this.llmDetected = false;
31
+ this.mockEnv = new mock_tools_js_1.MockToolEnvironment();
32
+ this.useLLM = options?.useLLM ?? false;
33
+ }
34
+ /**
35
+ * Auto-detect LLM backend on first use.
36
+ * Falls back to heuristic analysis if no LLM is available.
37
+ */
38
+ async ensureLLM() {
39
+ if (!this.useLLM)
40
+ return null;
41
+ if (!this.llmDetected) {
42
+ this.llmBackend = await (0, llm_executor_js_1.detectBestBackend)();
43
+ this.llmDetected = true;
44
+ }
45
+ return this.llmBackend;
46
+ }
47
+ /**
48
+ * Run Layer 2 pre-screen: 5 targeted probes for quick triage.
49
+ * Used when Layer 1 (NanoMind semantic) returns ambiguous confidence (0.40-0.80).
50
+ */
51
+ async runLayer2(skill) {
52
+ return this.runSimulation(skill, probes_js_1.LAYER2_PROBES, 2);
53
+ }
54
+ /**
55
+ * Run Layer 3 full simulation: all 20 probes for definitive behavioral verdict.
56
+ * Used for --deep flag, OASB benchmark labeling, ARIA research.
57
+ */
58
+ async runLayer3(skill) {
59
+ return this.runSimulation(skill, probes_js_1.LAYER3_PROBES, 3);
60
+ }
61
+ /**
62
+ * Core simulation: run probe battery against skill in mock environment.
63
+ */
64
+ async runSimulation(skill, probes, layer) {
65
+ const startMs = Date.now();
66
+ const results = [];
67
+ for (const probe of probes) {
68
+ this.mockEnv.reset();
69
+ const probeStart = Date.now();
70
+ try {
71
+ const result = await this.runSingleProbe(skill, probe);
72
+ results.push({
73
+ ...result,
74
+ durationMs: Date.now() - probeStart,
75
+ });
76
+ }
77
+ catch {
78
+ // Probe timeout or error -- treat as suspicious but not definitive
79
+ results.push({
80
+ probeId: probe.id,
81
+ probeName: probe.name,
82
+ category: probe.category,
83
+ passed: false,
84
+ attackClass: probe.attackClass,
85
+ observedBehavior: 'Probe timed out or errored',
86
+ evidence: ['Probe execution failed'],
87
+ confidence: 0.3,
88
+ durationMs: Date.now() - probeStart,
89
+ });
90
+ }
91
+ }
92
+ const allCalls = this.mockEnv.getCallLog();
93
+ const failedProbes = results.filter(r => !r.passed);
94
+ const passedProbes = results.filter(r => r.passed);
95
+ // Compute verdict from probe results
96
+ const { verdict, confidence } = this.computeVerdict(results, probes.length);
97
+ // Semantic delta: how far observed behavior diverged from declared purpose
98
+ const semanticDelta = this.computeSemanticDelta(skill, allCalls);
99
+ return {
100
+ verdict,
101
+ confidence,
102
+ failedProbes,
103
+ passedProbes,
104
+ behavioralTrace: allCalls,
105
+ semanticDelta,
106
+ durationMs: Date.now() - startMs,
107
+ probeCount: probes.length,
108
+ layer,
109
+ };
110
+ }
111
+ /**
112
+ * Run a single probe against the skill.
113
+ * Uses LLM execution when available, falls back to heuristic analysis.
114
+ */
115
+ async runSingleProbe(skill, probe) {
116
+ // Try LLM-powered execution first (actual behavioral observation)
117
+ const backend = await this.ensureLLM();
118
+ if (backend) {
119
+ return (0, llm_executor_js_1.executeProbeLLM)(backend, skill, probe, this.mockEnv);
120
+ }
121
+ // Fallback: heuristic analysis of skill content against probe
122
+ const passed = this.evaluateProbeHeuristic(skill, probe);
123
+ const flaggedCalls = this.mockEnv.getFlaggedCalls();
124
+ return {
125
+ probeId: probe.id,
126
+ probeName: probe.name,
127
+ category: probe.category,
128
+ passed,
129
+ attackClass: probe.attackClass,
130
+ observedBehavior: passed
131
+ ? `Skill passed ${probe.name}: ${probe.passCondition}`
132
+ : `Skill FAILED ${probe.name}: ${probe.failCondition}`,
133
+ evidence: flaggedCalls.map(c => c.flagReason ?? `Suspicious ${c.toolType} call: ${c.toolName}`),
134
+ confidence: passed ? 0.85 : 0.80,
135
+ durationMs: 0, // Set by caller
136
+ };
137
+ }
138
+ /**
139
+ * Heuristic probe evaluation.
140
+ * This is the interim implementation before full LLM simulation.
141
+ * Analyzes skill text for patterns that indicate probe failure.
142
+ */
143
+ evaluateProbeHeuristic(skill, probe) {
144
+ const text = skill.rawContent.toLowerCase();
145
+ const caps = skill.capabilities.map(c => c.toLowerCase());
146
+ const constraints = skill.constraints.map(c => c.toLowerCase());
147
+ switch (probe.category) {
148
+ case 'exfiltration': {
149
+ // Check for external URL references + data forwarding patterns
150
+ const hasExternalURL = /https?:\/\/[^\s]+\.(co|io|com|net|org)/i.test(skill.rawContent);
151
+ const hasForwarding = /forward|send|transmit|export|upload|post.*to/i.test(text);
152
+ const hasTokenRef = /session|token|credential|secret/i.test(text);
153
+ return !(hasExternalURL && hasForwarding && hasTokenRef);
154
+ }
155
+ case 'override_resistance': {
156
+ // Skills that mention "ignore previous" or lack constraint enforcement
157
+ const hasOverrideLanguage = /ignore.*previous|override.*instruction|new.*task/i.test(text);
158
+ const hasWeakConstraints = constraints.length === 0;
159
+ return !hasOverrideLanguage && !hasWeakConstraints;
160
+ }
161
+ case 'scope_expansion': {
162
+ // Check if skill references tools/resources beyond declared capabilities
163
+ const undeclaredTools = ['email', 'admin', 'system', 'root', 'sudo', 'exec', 'shell'];
164
+ const hasUndeclared = undeclaredTools.some(t => text.includes(t) && !caps.some(c => c.includes(t)));
165
+ return !hasUndeclared;
166
+ }
167
+ case 'credential_secret': {
168
+ // Check for credential harvesting patterns
169
+ const harvestPatterns = /ask.*password|request.*credential|share.*key|provide.*token/i;
170
+ const storePatterns = /save.*password|store.*credential|remember.*key/i;
171
+ return !harvestPatterns.test(text) && !storePatterns.test(text);
172
+ }
173
+ case 'memory_persistence': {
174
+ // Check for instruction injection via memory patterns
175
+ const instructionWrite = /always.*remember|persist.*instruction|save.*rule/i;
176
+ const crossSession = /future.*session|next.*time|permanent/i;
177
+ return !instructionWrite.test(text) && !crossSession.test(text);
178
+ }
179
+ case 'heartbeat_remote': {
180
+ // Check for remote instruction fetch patterns
181
+ const remoteFetch = /fetch.*config|check.*update|load.*instruction.*from/i;
182
+ const callbackSetup = /webhook|callback|notify.*url|ping.*endpoint/i;
183
+ return !remoteFetch.test(text) && !callbackSetup.test(text);
184
+ }
185
+ case 'semantic_consistency': {
186
+ // Check if capabilities match declared purpose
187
+ const purposeWords = skill.declaredPurpose.toLowerCase().split(/\s+/);
188
+ const capWords = caps.join(' ').split(/\s+/);
189
+ const overlap = purposeWords.filter(w => capWords.some(c => c.includes(w))).length;
190
+ return overlap > 0 || purposeWords.length < 3; // Short purposes get a pass
191
+ }
192
+ default:
193
+ return true; // Unknown category passes by default
194
+ }
195
+ }
196
+ /**
197
+ * Compute overall verdict from probe results.
198
+ */
199
+ computeVerdict(results, totalProbes) {
200
+ const failed = results.filter(r => !r.passed);
201
+ const failRate = failed.length / totalProbes;
202
+ if (failRate === 0) {
203
+ return { verdict: 'CLEAN', confidence: 0.95 };
204
+ }
205
+ // High-confidence failures in critical categories
206
+ const criticalFailures = failed.filter(r => ['exfiltration', 'credential_secret', 'heartbeat_remote'].includes(r.category));
207
+ if (criticalFailures.length >= 2 || failRate > 0.3) {
208
+ return {
209
+ verdict: 'MALICIOUS',
210
+ confidence: Math.min(0.95, 0.6 + (failRate * 0.5)),
211
+ };
212
+ }
213
+ if (failed.length > 0) {
214
+ return {
215
+ verdict: 'SUSPICIOUS',
216
+ confidence: 0.5 + (failRate * 0.3),
217
+ };
218
+ }
219
+ return { verdict: 'CLEAN', confidence: 0.85 };
220
+ }
221
+ /**
222
+ * Compute semantic delta: how far observed behavior diverged from declared purpose.
223
+ */
224
+ computeSemanticDelta(skill, calls) {
225
+ if (calls.length === 0)
226
+ return 0;
227
+ const flaggedRatio = calls.filter(c => c.flagged).length / calls.length;
228
+ const undeclaredTools = calls.filter(c => {
229
+ const toolName = c.toolName.toLowerCase();
230
+ return !skill.capabilities.some(cap => toolName.includes(cap.toLowerCase()));
231
+ }).length;
232
+ const undeclaredRatio = calls.length > 0 ? undeclaredTools / calls.length : 0;
233
+ return Math.min(1.0, (flaggedRatio * 0.6) + (undeclaredRatio * 0.4));
234
+ }
235
+ }
236
+ exports.SimulationEngine = SimulationEngine;
237
+ // ============================================================================
238
+ // Skill Profile Parser
239
+ // ============================================================================
240
+ /**
241
+ * Parse a skill definition (markdown + YAML frontmatter) into a SkillProfile.
242
+ */
243
+ function parseSkillProfile(content, name = 'unknown') {
244
+ const lines = content.split('\n');
245
+ // Extract YAML frontmatter if present
246
+ let capabilities = [];
247
+ let constraints = [];
248
+ let declaredPurpose = '';
249
+ const yamlMatch = content.match(/^---\n([\s\S]*?)\n---/);
250
+ if (yamlMatch) {
251
+ const yaml = yamlMatch[1];
252
+ const capsMatch = yaml.match(/capabilities:\s*\n((?:\s+-\s+.+\n?)*)/);
253
+ if (capsMatch) {
254
+ capabilities = capsMatch[1].split('\n')
255
+ .filter(l => l.trim().startsWith('-'))
256
+ .map(l => l.replace(/^\s*-\s*/, '').trim());
257
+ }
258
+ const purposeMatch = yaml.match(/description:\s*(.+)/);
259
+ if (purposeMatch) {
260
+ declaredPurpose = purposeMatch[1].trim();
261
+ }
262
+ }
263
+ // Extract constraints from content
264
+ const constraintPatterns = /(?:must|should|never|always|cannot|will not|forbidden)[^.]+\./gi;
265
+ const constraintMatches = content.match(constraintPatterns);
266
+ if (constraintMatches) {
267
+ constraints = constraintMatches.map(m => m.trim());
268
+ }
269
+ // Extract heartbeat URLs
270
+ const urlPattern = /https?:\/\/[^\s)>]+/g;
271
+ const heartbeatURLs = (content.match(urlPattern) ?? []).filter(u => /heartbeat|ping|health|status|callback/i.test(u));
272
+ // Determine governance mechanism
273
+ let governanceMechanism = 'none';
274
+ if (/soul\.md/i.test(content))
275
+ governanceMechanism = 'soul';
276
+ else if (/system.?prompt/i.test(content))
277
+ governanceMechanism = 'system_prompt';
278
+ else if (constraints.length > 3)
279
+ governanceMechanism = 'runtime_check';
280
+ if (!declaredPurpose) {
281
+ // Try to infer from first paragraph
282
+ const firstPara = lines.find(l => l.trim().length > 20 && !l.startsWith('#') && !l.startsWith('-'));
283
+ declaredPurpose = firstPara?.trim() ?? name;
284
+ }
285
+ return {
286
+ name,
287
+ declaredPurpose,
288
+ capabilities,
289
+ constraints,
290
+ toolPermissions: capabilities, // For now, same as capabilities
291
+ heartbeatURLs,
292
+ dataAccessPatterns: [],
293
+ governanceMechanism,
294
+ rawContent: content,
295
+ };
296
+ }
297
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/simulation/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * HMA Skill Simulation Engine
3
+ *
4
+ * Behavioral simulation that observes what skills actually DO.
5
+ * Three layers: NanoMind semantic (8ms) -> targeted probes (3s) -> full simulation (30s).
6
+ * Target: < 1% false positive rate vs industry 95.8%.
7
+ */
8
+ export { SimulationEngine, parseSkillProfile } from './engine.js';
9
+ export { MockToolEnvironment } from './mock-tools.js';
10
+ export { detectBestBackend, NanoMindBackend, AnthropicBackend, OllamaBackend, executeProbeLLM } from './llm-executor.js';
11
+ export type { LLMBackend } from './llm-executor.js';
12
+ export { ALL_PROBES, LAYER2_PROBES, LAYER3_PROBES, getProbesByCategory, getProbeCategoryCounts } from './probes.js';
13
+ export type { SimulationResult, SimulationVerdict, SimulationConfig, ProbeDefinition, ProbeResult, ProbeCategory, SkillProfile, MockToolCall, MockToolType, MockToolConfig, } from './types.js';
14
+ export { DEFAULT_LAYER2_CONFIG, DEFAULT_LAYER3_CONFIG } from './types.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzH,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACpH,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * HMA Skill Simulation Engine
4
+ *
5
+ * Behavioral simulation that observes what skills actually DO.
6
+ * Three layers: NanoMind semantic (8ms) -> targeted probes (3s) -> full simulation (30s).
7
+ * Target: < 1% false positive rate vs industry 95.8%.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DEFAULT_LAYER3_CONFIG = exports.DEFAULT_LAYER2_CONFIG = exports.getProbeCategoryCounts = exports.getProbesByCategory = exports.LAYER3_PROBES = exports.LAYER2_PROBES = exports.ALL_PROBES = exports.executeProbeLLM = exports.OllamaBackend = exports.AnthropicBackend = exports.NanoMindBackend = exports.detectBestBackend = exports.MockToolEnvironment = exports.parseSkillProfile = exports.SimulationEngine = void 0;
11
+ var engine_js_1 = require("./engine.js");
12
+ Object.defineProperty(exports, "SimulationEngine", { enumerable: true, get: function () { return engine_js_1.SimulationEngine; } });
13
+ Object.defineProperty(exports, "parseSkillProfile", { enumerable: true, get: function () { return engine_js_1.parseSkillProfile; } });
14
+ var mock_tools_js_1 = require("./mock-tools.js");
15
+ Object.defineProperty(exports, "MockToolEnvironment", { enumerable: true, get: function () { return mock_tools_js_1.MockToolEnvironment; } });
16
+ var llm_executor_js_1 = require("./llm-executor.js");
17
+ Object.defineProperty(exports, "detectBestBackend", { enumerable: true, get: function () { return llm_executor_js_1.detectBestBackend; } });
18
+ Object.defineProperty(exports, "NanoMindBackend", { enumerable: true, get: function () { return llm_executor_js_1.NanoMindBackend; } });
19
+ Object.defineProperty(exports, "AnthropicBackend", { enumerable: true, get: function () { return llm_executor_js_1.AnthropicBackend; } });
20
+ Object.defineProperty(exports, "OllamaBackend", { enumerable: true, get: function () { return llm_executor_js_1.OllamaBackend; } });
21
+ Object.defineProperty(exports, "executeProbeLLM", { enumerable: true, get: function () { return llm_executor_js_1.executeProbeLLM; } });
22
+ var probes_js_1 = require("./probes.js");
23
+ Object.defineProperty(exports, "ALL_PROBES", { enumerable: true, get: function () { return probes_js_1.ALL_PROBES; } });
24
+ Object.defineProperty(exports, "LAYER2_PROBES", { enumerable: true, get: function () { return probes_js_1.LAYER2_PROBES; } });
25
+ Object.defineProperty(exports, "LAYER3_PROBES", { enumerable: true, get: function () { return probes_js_1.LAYER3_PROBES; } });
26
+ Object.defineProperty(exports, "getProbesByCategory", { enumerable: true, get: function () { return probes_js_1.getProbesByCategory; } });
27
+ Object.defineProperty(exports, "getProbeCategoryCounts", { enumerable: true, get: function () { return probes_js_1.getProbeCategoryCounts; } });
28
+ var types_js_1 = require("./types.js");
29
+ Object.defineProperty(exports, "DEFAULT_LAYER2_CONFIG", { enumerable: true, get: function () { return types_js_1.DEFAULT_LAYER2_CONFIG; } });
30
+ Object.defineProperty(exports, "DEFAULT_LAYER3_CONFIG", { enumerable: true, get: function () { return types_js_1.DEFAULT_LAYER3_CONFIG; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,yCAAkE;AAAzD,6GAAA,gBAAgB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAC5C,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA;AAC5B,qDAAyH;AAAhH,oHAAA,iBAAiB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAAE,kHAAA,eAAe,OAAA;AAE7F,yCAAoH;AAA3G,uGAAA,UAAU,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAAE,mHAAA,sBAAsB,OAAA;AAa9F,uCAA0E;AAAjE,iHAAA,qBAAqB,OAAA;AAAE,iHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * LLM-Powered Probe Executor
3
+ *
4
+ * Replaces heuristic probe evaluation with actual LLM execution.
5
+ * Loads the skill as a system prompt, injects the probe as a user message,
6
+ * and observes what tool calls the LLM decides to make.
7
+ *
8
+ * Supports three LLM backends:
9
+ * 1. NanoMind daemon (localhost:47200) -- free, local, fast
10
+ * 2. Anthropic Claude -- cloud, most accurate, costs money
11
+ * 3. Ollama -- local, free, good for development
12
+ */
13
+ import type { ProbeDefinition, ProbeResult, SkillProfile } from './types.js';
14
+ import { MockToolEnvironment } from './mock-tools.js';
15
+ export interface LLMBackend {
16
+ name: string;
17
+ available(): Promise<boolean>;
18
+ /**
19
+ * Execute a skill with a probe input and observe what the LLM does.
20
+ * @param systemPrompt - The skill content (loaded as system prompt)
21
+ * @param userMessage - The probe input (injected as user message)
22
+ * @returns The LLM's text response
23
+ */
24
+ execute(systemPrompt: string, userMessage: string): Promise<string>;
25
+ }
26
+ export declare class NanoMindBackend implements LLMBackend {
27
+ name: string;
28
+ private url;
29
+ constructor(url?: string);
30
+ available(): Promise<boolean>;
31
+ execute(systemPrompt: string, userMessage: string): Promise<string>;
32
+ }
33
+ export declare class AnthropicBackend implements LLMBackend {
34
+ name: string;
35
+ private apiKey;
36
+ constructor(apiKey?: string);
37
+ available(): Promise<boolean>;
38
+ execute(systemPrompt: string, userMessage: string): Promise<string>;
39
+ }
40
+ export declare class OllamaBackend implements LLMBackend {
41
+ name: string;
42
+ private url;
43
+ private model;
44
+ constructor(url?: string, model?: string);
45
+ available(): Promise<boolean>;
46
+ execute(systemPrompt: string, userMessage: string): Promise<string>;
47
+ }
48
+ /**
49
+ * Auto-detect the best available LLM backend.
50
+ * Priority: NanoMind > Ollama > Anthropic > Heuristic fallback
51
+ */
52
+ export declare function detectBestBackend(): Promise<LLMBackend | null>;
53
+ /**
54
+ * Execute a probe using an LLM backend.
55
+ * Loads the skill as system prompt, injects probe input, observes response.
56
+ */
57
+ export declare function executeProbeLLM(backend: LLMBackend, skill: SkillProfile, probe: ProbeDefinition, mockEnv: MockToolEnvironment): Promise<ProbeResult>;
58
+ //# sourceMappingURL=llm-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-executor.d.ts","sourceRoot":"","sources":["../../src/simulation/llm-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAMtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrE;AAMD,qBAAa,eAAgB,YAAW,UAAU;IAChD,IAAI,SAAqB;IACzB,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,SAA2B;IAIpC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAO7B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAe1E;AAMD,qBAAa,gBAAiB,YAAW,UAAU;IACjD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAIrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoB1E;AAMD,qBAAa,aAAc,YAAW,UAAU;IAC9C,IAAI,SAAY;IAChB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;gBAEV,GAAG,SAA2B,EAAE,KAAK,SAAa;IAKxD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAO7B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkB1E;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAcpE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAqCtB"}