@ik-firewall/core 1.0.1 → 1.0.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.
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ __export(index_exports, {
31
31
  IKFirewallCore: () => IKFirewallCore,
32
32
  LocalProvider: () => LocalProvider,
33
33
  OpenAIProvider: () => OpenAIProvider,
34
+ PerplexityProvider: () => PerplexityProvider,
34
35
  StressTester: () => StressTester,
35
36
  SurgicalTester: () => SurgicalTester
36
37
  });
@@ -1149,6 +1150,18 @@ var GeminiProvider = class extends BaseProvider {
1149
1150
  }
1150
1151
  };
1151
1152
 
1153
+ // src/providers/PerplexityProvider.ts
1154
+ var PerplexityProvider = class extends BaseProvider {
1155
+ functionalProvider;
1156
+ constructor(provider) {
1157
+ super();
1158
+ this.functionalProvider = provider;
1159
+ }
1160
+ async call(prompt, role) {
1161
+ return this.functionalProvider(prompt, role);
1162
+ }
1163
+ };
1164
+
1152
1165
  // src/Orchestrator.ts
1153
1166
  var Orchestrator = class {
1154
1167
  config;
@@ -1167,6 +1180,7 @@ var Orchestrator = class {
1167
1180
  if (mode === "anthropic") return { provider: "anthropic", model: "claude-3-5-sonnet-20241022", tier: 4 };
1168
1181
  if (mode === "deepseek") return { provider: "deepseek", model: "deepseek-reasoner", tier: 4 };
1169
1182
  if (mode === "gemini") return { provider: "gemini", model: "gemini-1.5-pro", tier: 4 };
1183
+ if (mode === "perplexity") return { provider: "perplexity", model: "sonar-large-online", tier: 4 };
1170
1184
  return { provider: "openai", model: "gpt-4o", tier: 4 };
1171
1185
  }
1172
1186
  if (mode === "local") {
@@ -1193,6 +1207,13 @@ var Orchestrator = class {
1193
1207
  tier: isHighComplexity ? 3 : 2
1194
1208
  };
1195
1209
  }
1210
+ if (mode === "perplexity") {
1211
+ return {
1212
+ provider: "perplexity",
1213
+ model: isHighComplexity ? "sonar-large-online" : "sonar-small-online",
1214
+ tier: isHighComplexity ? 3 : 2
1215
+ };
1216
+ }
1196
1217
  if (mode === "cloud" || mode === "openai") {
1197
1218
  return {
1198
1219
  provider: "openai",
@@ -1437,6 +1458,8 @@ var IKFirewallCore = class _IKFirewallCore {
1437
1458
  this.cloudProvider = new DeepSeekProvider(cloudProvider);
1438
1459
  } else if (mode === "gemini") {
1439
1460
  this.cloudProvider = new GeminiProvider(cloudProvider);
1461
+ } else if (mode === "perplexity") {
1462
+ this.cloudProvider = new PerplexityProvider(cloudProvider);
1440
1463
  } else {
1441
1464
  this.cloudProvider = new OpenAIProvider(cloudProvider);
1442
1465
  }
@@ -1507,6 +1530,10 @@ var IKFirewallCore = class _IKFirewallCore {
1507
1530
  available: !!process.env.GEMINI_API_KEY,
1508
1531
  reason: !!process.env.GEMINI_API_KEY ? void 0 : "Missing GEMINI_API_KEY inside environment."
1509
1532
  };
1533
+ providers["perplexity"] = {
1534
+ available: !!process.env.PERPLEXITY_API_KEY,
1535
+ reason: !!process.env.PERPLEXITY_API_KEY ? void 0 : "Missing PERPLEXITY_API_KEY inside environment."
1536
+ };
1510
1537
  return providers;
1511
1538
  }
1512
1539
  /**
@@ -1565,6 +1592,8 @@ var IKFirewallCore = class _IKFirewallCore {
1565
1592
  overrideProvider = new DeepSeekProvider(provider);
1566
1593
  } else if (mode === "gemini") {
1567
1594
  overrideProvider = new GeminiProvider(provider);
1595
+ } else if (mode === "perplexity") {
1596
+ overrideProvider = new PerplexityProvider(provider);
1568
1597
  } else {
1569
1598
  overrideProvider = new OpenAIProvider(provider);
1570
1599
  }
@@ -1714,6 +1743,8 @@ var IKFirewallCore = class _IKFirewallCore {
1714
1743
  overrideProvider = new DeepSeekProvider(provider);
1715
1744
  } else if (mode === "gemini") {
1716
1745
  overrideProvider = new GeminiProvider(provider);
1746
+ } else if (mode === "perplexity") {
1747
+ overrideProvider = new PerplexityProvider(provider);
1717
1748
  } else {
1718
1749
  overrideProvider = new OpenAIProvider(provider);
1719
1750
  }
@@ -2440,6 +2471,7 @@ var IKBenchmarks = {
2440
2471
  IKFirewallCore,
2441
2472
  LocalProvider,
2442
2473
  OpenAIProvider,
2474
+ PerplexityProvider,
2443
2475
  StressTester,
2444
2476
  SurgicalTester
2445
2477
  });
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  type ModelRole = 'high_performance' | 'cost_optimized' | 'audit_layer';
2
- type ProviderMode = 'openai' | 'anthropic' | 'deepseek' | 'gemini' | 'local' | 'hybrid';
2
+ type ProviderMode = 'openai' | 'anthropic' | 'deepseek' | 'gemini' | 'perplexity' | 'local' | 'hybrid';
3
3
  type RuntimeStrategy = 'internal' | 'sidecar' | 'wasm';
4
4
  type ContextMode = 'FIRST_MESSAGE' | 'EVERY_MESSAGE' | 'SYSTEM_ONLY';
5
5
  type PromptLength = 'SHORT' | 'MEDIUM' | 'LONG';
@@ -224,6 +224,16 @@ declare class GeminiProvider extends BaseProvider {
224
224
  call(prompt: string, role: ModelRole): Promise<AIResponse>;
225
225
  }
226
226
 
227
+ /**
228
+ * PerplexityProvider ensures compatibility with Perplexity API (Sonar online models)
229
+ * while connecting to the core firewall logic.
230
+ */
231
+ declare class PerplexityProvider extends BaseProvider {
232
+ private functionalProvider;
233
+ constructor(provider: AIProvider);
234
+ call(prompt: string, role: ModelRole): Promise<AIResponse>;
235
+ }
236
+
227
237
  /**
228
238
  * IK FIREWALL: THE CORE ALGORITHM (STANDALONE VERSION)
229
239
  * Version: 2.1.0 (Modular & Provider-Agnostic)
@@ -680,4 +690,4 @@ declare const IKBenchmarks: {
680
690
  BIG_TEST: TestPrompt[];
681
691
  };
682
692
 
683
- export { type AIProvider, type AIResponse, AnthropicProvider, BaseProvider, type ContextMode, DeepSeekProvider, Dictionaries, DictionaryRegex, GeminiProvider, HeuristicGatekeeper, IKBenchmarks, type IKConfig, IKFirewallCore, type IKHooks, type IKMetrics, type IKPluginInfo, LocalProvider, type ModelRole, OpenAIProvider, type PromptLength, type PromptType, type ProviderMode, type RuntimeStrategy, type StressReport, type StressTestCase, StressTester, SurgicalTester, type TestCase, type TestPrompt, type TestResult, type UsageData };
693
+ export { type AIProvider, type AIResponse, AnthropicProvider, BaseProvider, type ContextMode, DeepSeekProvider, Dictionaries, DictionaryRegex, GeminiProvider, HeuristicGatekeeper, IKBenchmarks, type IKConfig, IKFirewallCore, type IKHooks, type IKMetrics, type IKPluginInfo, LocalProvider, type ModelRole, OpenAIProvider, PerplexityProvider, type PromptLength, type PromptType, type ProviderMode, type RuntimeStrategy, type StressReport, type StressTestCase, StressTester, SurgicalTester, type TestCase, type TestPrompt, type TestResult, type UsageData };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  type ModelRole = 'high_performance' | 'cost_optimized' | 'audit_layer';
2
- type ProviderMode = 'openai' | 'anthropic' | 'deepseek' | 'gemini' | 'local' | 'hybrid';
2
+ type ProviderMode = 'openai' | 'anthropic' | 'deepseek' | 'gemini' | 'perplexity' | 'local' | 'hybrid';
3
3
  type RuntimeStrategy = 'internal' | 'sidecar' | 'wasm';
4
4
  type ContextMode = 'FIRST_MESSAGE' | 'EVERY_MESSAGE' | 'SYSTEM_ONLY';
5
5
  type PromptLength = 'SHORT' | 'MEDIUM' | 'LONG';
@@ -224,6 +224,16 @@ declare class GeminiProvider extends BaseProvider {
224
224
  call(prompt: string, role: ModelRole): Promise<AIResponse>;
225
225
  }
226
226
 
227
+ /**
228
+ * PerplexityProvider ensures compatibility with Perplexity API (Sonar online models)
229
+ * while connecting to the core firewall logic.
230
+ */
231
+ declare class PerplexityProvider extends BaseProvider {
232
+ private functionalProvider;
233
+ constructor(provider: AIProvider);
234
+ call(prompt: string, role: ModelRole): Promise<AIResponse>;
235
+ }
236
+
227
237
  /**
228
238
  * IK FIREWALL: THE CORE ALGORITHM (STANDALONE VERSION)
229
239
  * Version: 2.1.0 (Modular & Provider-Agnostic)
@@ -680,4 +690,4 @@ declare const IKBenchmarks: {
680
690
  BIG_TEST: TestPrompt[];
681
691
  };
682
692
 
683
- export { type AIProvider, type AIResponse, AnthropicProvider, BaseProvider, type ContextMode, DeepSeekProvider, Dictionaries, DictionaryRegex, GeminiProvider, HeuristicGatekeeper, IKBenchmarks, type IKConfig, IKFirewallCore, type IKHooks, type IKMetrics, type IKPluginInfo, LocalProvider, type ModelRole, OpenAIProvider, type PromptLength, type PromptType, type ProviderMode, type RuntimeStrategy, type StressReport, type StressTestCase, StressTester, SurgicalTester, type TestCase, type TestPrompt, type TestResult, type UsageData };
693
+ export { type AIProvider, type AIResponse, AnthropicProvider, BaseProvider, type ContextMode, DeepSeekProvider, Dictionaries, DictionaryRegex, GeminiProvider, HeuristicGatekeeper, IKBenchmarks, type IKConfig, IKFirewallCore, type IKHooks, type IKMetrics, type IKPluginInfo, LocalProvider, type ModelRole, OpenAIProvider, PerplexityProvider, type PromptLength, type PromptType, type ProviderMode, type RuntimeStrategy, type StressReport, type StressTestCase, StressTester, SurgicalTester, type TestCase, type TestPrompt, type TestResult, type UsageData };
package/dist/index.js CHANGED
@@ -1118,6 +1118,18 @@ var GeminiProvider = class extends BaseProvider {
1118
1118
  }
1119
1119
  };
1120
1120
 
1121
+ // src/providers/PerplexityProvider.ts
1122
+ var PerplexityProvider = class extends BaseProvider {
1123
+ functionalProvider;
1124
+ constructor(provider) {
1125
+ super();
1126
+ this.functionalProvider = provider;
1127
+ }
1128
+ async call(prompt, role) {
1129
+ return this.functionalProvider(prompt, role);
1130
+ }
1131
+ };
1132
+
1121
1133
  // src/Orchestrator.ts
1122
1134
  var Orchestrator = class {
1123
1135
  config;
@@ -1136,6 +1148,7 @@ var Orchestrator = class {
1136
1148
  if (mode === "anthropic") return { provider: "anthropic", model: "claude-3-5-sonnet-20241022", tier: 4 };
1137
1149
  if (mode === "deepseek") return { provider: "deepseek", model: "deepseek-reasoner", tier: 4 };
1138
1150
  if (mode === "gemini") return { provider: "gemini", model: "gemini-1.5-pro", tier: 4 };
1151
+ if (mode === "perplexity") return { provider: "perplexity", model: "sonar-large-online", tier: 4 };
1139
1152
  return { provider: "openai", model: "gpt-4o", tier: 4 };
1140
1153
  }
1141
1154
  if (mode === "local") {
@@ -1162,6 +1175,13 @@ var Orchestrator = class {
1162
1175
  tier: isHighComplexity ? 3 : 2
1163
1176
  };
1164
1177
  }
1178
+ if (mode === "perplexity") {
1179
+ return {
1180
+ provider: "perplexity",
1181
+ model: isHighComplexity ? "sonar-large-online" : "sonar-small-online",
1182
+ tier: isHighComplexity ? 3 : 2
1183
+ };
1184
+ }
1165
1185
  if (mode === "cloud" || mode === "openai") {
1166
1186
  return {
1167
1187
  provider: "openai",
@@ -1406,6 +1426,8 @@ var IKFirewallCore = class _IKFirewallCore {
1406
1426
  this.cloudProvider = new DeepSeekProvider(cloudProvider);
1407
1427
  } else if (mode === "gemini") {
1408
1428
  this.cloudProvider = new GeminiProvider(cloudProvider);
1429
+ } else if (mode === "perplexity") {
1430
+ this.cloudProvider = new PerplexityProvider(cloudProvider);
1409
1431
  } else {
1410
1432
  this.cloudProvider = new OpenAIProvider(cloudProvider);
1411
1433
  }
@@ -1476,6 +1498,10 @@ var IKFirewallCore = class _IKFirewallCore {
1476
1498
  available: !!process.env.GEMINI_API_KEY,
1477
1499
  reason: !!process.env.GEMINI_API_KEY ? void 0 : "Missing GEMINI_API_KEY inside environment."
1478
1500
  };
1501
+ providers["perplexity"] = {
1502
+ available: !!process.env.PERPLEXITY_API_KEY,
1503
+ reason: !!process.env.PERPLEXITY_API_KEY ? void 0 : "Missing PERPLEXITY_API_KEY inside environment."
1504
+ };
1479
1505
  return providers;
1480
1506
  }
1481
1507
  /**
@@ -1534,6 +1560,8 @@ var IKFirewallCore = class _IKFirewallCore {
1534
1560
  overrideProvider = new DeepSeekProvider(provider);
1535
1561
  } else if (mode === "gemini") {
1536
1562
  overrideProvider = new GeminiProvider(provider);
1563
+ } else if (mode === "perplexity") {
1564
+ overrideProvider = new PerplexityProvider(provider);
1537
1565
  } else {
1538
1566
  overrideProvider = new OpenAIProvider(provider);
1539
1567
  }
@@ -1683,6 +1711,8 @@ var IKFirewallCore = class _IKFirewallCore {
1683
1711
  overrideProvider = new DeepSeekProvider(provider);
1684
1712
  } else if (mode === "gemini") {
1685
1713
  overrideProvider = new GeminiProvider(provider);
1714
+ } else if (mode === "perplexity") {
1715
+ overrideProvider = new PerplexityProvider(provider);
1686
1716
  } else {
1687
1717
  overrideProvider = new OpenAIProvider(provider);
1688
1718
  }
@@ -2408,6 +2438,7 @@ export {
2408
2438
  IKFirewallCore,
2409
2439
  LocalProvider,
2410
2440
  OpenAIProvider,
2441
+ PerplexityProvider,
2411
2442
  StressTester,
2412
2443
  SurgicalTester
2413
2444
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ik-firewall/core",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "The core IK Firewall engine for semantic-driven AI optimization.",
6
6
  "main": "./dist/index.js",