@theokit/sdk 4.16.0 → 4.16.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.16.2
4
+
5
+ ### Patch Changes
6
+
7
+ - fix(session): `Agent.compact` hydrates the per-cwd registry from disk on a miss (same D21 path as `Agent.resume`) — a fresh process compacting a persisted session no longer fails with UnknownAgentError. Found live in the M50 probe.
8
+
9
+ ## 4.16.1
10
+
11
+ ### Patch Changes
12
+
13
+ - fix(session): the compaction summarizer resolves its provider the same way the RUN does (M4 rule — the explicit API key outranks the model prefix): an sk-or- key + `openai/…` model summarizes via OpenRouter with the full slug, instead of 401ing against OpenAI. Found live in the M50 tmux probe.
14
+
3
15
  ## 4.16.0
4
16
 
5
17
  ### Minor Changes
package/dist/cron.cjs CHANGED
@@ -5860,6 +5860,44 @@ var init_router = __esm({
5860
5860
  }
5861
5861
  });
5862
5862
 
5863
+ // src/internal/local-agent/real-local-run-provider.ts
5864
+ var real_local_run_provider_exports = {};
5865
+ __export(real_local_run_provider_exports, {
5866
+ detectPrimaryProvider: () => detectPrimaryProvider,
5867
+ inferProviderFromApiKey: () => inferProviderFromApiKey
5868
+ });
5869
+ function inferProviderFromApiKey(apiKey) {
5870
+ if (apiKey === void 0 || apiKey.length === 0) return void 0;
5871
+ const byPrefix = [
5872
+ { provider: "openrouter", prefix: "sk-or-" },
5873
+ { provider: "anthropic", prefix: "sk-ant-" },
5874
+ { provider: "openai", prefix: "sk-" }
5875
+ ];
5876
+ for (const { provider, prefix } of byPrefix) {
5877
+ if (apiKey.startsWith(prefix) && getProviderProfile(provider) !== void 0) {
5878
+ return provider;
5879
+ }
5880
+ }
5881
+ return void 0;
5882
+ }
5883
+ function detectPrimaryProvider() {
5884
+ if (process.env.ANTHROPIC_API_KEY !== void 0 && process.env.ANTHROPIC_API_KEY.length > 0) {
5885
+ return "anthropic";
5886
+ }
5887
+ if (process.env.OPENAI_API_KEY !== void 0 && process.env.OPENAI_API_KEY.length > 0) {
5888
+ return "openai";
5889
+ }
5890
+ if (process.env.OPENROUTER_API_KEY !== void 0 && process.env.OPENROUTER_API_KEY.length > 0) {
5891
+ return "openrouter";
5892
+ }
5893
+ return "openai";
5894
+ }
5895
+ var init_real_local_run_provider = __esm({
5896
+ "src/internal/local-agent/real-local-run-provider.ts"() {
5897
+ init_providers();
5898
+ }
5899
+ });
5900
+
5863
5901
  // src/internal/session/compact-session.ts
5864
5902
  var compact_session_exports = {};
5865
5903
  __export(compact_session_exports, {
@@ -5922,13 +5960,20 @@ function buildDefaultSummarizer(opts) {
5922
5960
  const { compressConversationWindow: compressConversationWindow2 } = await Promise.resolve().then(() => (init_compression_summarizer(), compression_summarizer_exports));
5923
5961
  const { resolveCompressionModel: resolveCompressionModel2 } = await Promise.resolve().then(() => (init_compression_model_registry(), compression_model_registry_exports));
5924
5962
  const { resolveProviderChain: resolveProviderChain2 } = await Promise.resolve().then(() => (init_router(), router_exports));
5963
+ const { inferProviderFromApiKey: inferProviderFromApiKey2, detectPrimaryProvider: detectPrimaryProvider2 } = await Promise.resolve().then(() => (init_real_local_run_provider(), real_local_run_provider_exports));
5964
+ const keyProvider = inferProviderFromApiKey2(opts.apiKey);
5965
+ const modelPrefix = opts.agentModel.includes("/") ? opts.agentModel.slice(0, opts.agentModel.indexOf("/")) : void 0;
5966
+ const provider = keyProvider ?? modelPrefix ?? detectPrimaryProvider2();
5925
5967
  let model;
5926
- try {
5927
- model = resolveCompressionModel2(opts.agentModel);
5928
- } catch {
5968
+ if (keyProvider !== void 0 && keyProvider !== modelPrefix) {
5929
5969
  model = opts.agentModel;
5970
+ } else {
5971
+ try {
5972
+ model = resolveCompressionModel2(opts.agentModel);
5973
+ } catch {
5974
+ model = opts.agentModel;
5975
+ }
5930
5976
  }
5931
- const provider = model.includes("/") ? model.slice(0, model.indexOf("/")) : "openai";
5932
5977
  const callLlm = async (m, system, user) => {
5933
5978
  const chain = resolveProviderChain2({
5934
5979
  primary: provider,
@@ -15533,35 +15578,7 @@ function registerPluginProviderProfiles(entries) {
15533
15578
 
15534
15579
  // src/internal/local-agent/real-local-run.ts
15535
15580
  init_async_local_storage();
15536
-
15537
- // src/internal/local-agent/real-local-run-provider.ts
15538
- init_providers();
15539
- function inferProviderFromApiKey(apiKey) {
15540
- if (apiKey === void 0 || apiKey.length === 0) return void 0;
15541
- const byPrefix = [
15542
- { provider: "openrouter", prefix: "sk-or-" },
15543
- { provider: "anthropic", prefix: "sk-ant-" },
15544
- { provider: "openai", prefix: "sk-" }
15545
- ];
15546
- for (const { provider, prefix } of byPrefix) {
15547
- if (apiKey.startsWith(prefix) && getProviderProfile(provider) !== void 0) {
15548
- return provider;
15549
- }
15550
- }
15551
- return void 0;
15552
- }
15553
- function detectPrimaryProvider() {
15554
- if (process.env.ANTHROPIC_API_KEY !== void 0 && process.env.ANTHROPIC_API_KEY.length > 0) {
15555
- return "anthropic";
15556
- }
15557
- if (process.env.OPENAI_API_KEY !== void 0 && process.env.OPENAI_API_KEY.length > 0) {
15558
- return "openai";
15559
- }
15560
- if (process.env.OPENROUTER_API_KEY !== void 0 && process.env.OPENROUTER_API_KEY.length > 0) {
15561
- return "openrouter";
15562
- }
15563
- return "openai";
15564
- }
15581
+ init_real_local_run_provider();
15565
15582
 
15566
15583
  // src/a2a/subagent.ts
15567
15584
  init_agent_factory_registry();
@@ -19869,7 +19886,11 @@ var Agent = class _Agent {
19869
19886
  * @public
19870
19887
  */
19871
19888
  static async compact(agentId, options = {}) {
19872
- const reg = getRegisteredAgent(agentId);
19889
+ let reg = getRegisteredAgent(agentId);
19890
+ if (reg === void 0) {
19891
+ await hydrateRegistryFromDisk(process.cwd());
19892
+ reg = getRegisteredAgent(agentId);
19893
+ }
19873
19894
  if (reg === void 0 || reg.runtime !== "local") {
19874
19895
  throw new UnknownAgentError(`No local agent "${agentId}" registered \u2014 compact targets local sessions.`);
19875
19896
  }