@bitkyc08/opencodex 2.13.0 → 2.14.0

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 (55) hide show
  1. package/gui/dist/assets/index-Co12XTT-.js +76 -0
  2. package/gui/dist/index.html +1 -1
  3. package/package.json +1 -1
  4. package/src/adapters/cursor/discovery.ts +4 -1
  5. package/src/adapters/cursor/effort-map.ts +5 -1
  6. package/src/adapters/cursor/request-builder.ts +3 -3
  7. package/src/adapters/google.ts +25 -5
  8. package/src/adapters/openai-chat.ts +182 -6
  9. package/src/adapters/openai-responses.ts +17 -7
  10. package/src/codex/catalog/bundled.ts +16 -0
  11. package/src/codex/catalog/metadata.ts +180 -5
  12. package/src/codex/catalog/parsing.ts +7 -6
  13. package/src/codex/catalog/sync.ts +73 -6
  14. package/src/codex/catalog.ts +1 -1
  15. package/src/codex/convergence.ts +20 -0
  16. package/src/codex/prompt-journal.ts +50 -13
  17. package/src/codex/prompt-layers.ts +1 -1
  18. package/src/config.ts +57 -0
  19. package/src/generated/compatibility-version.json +64 -48
  20. package/src/generated/model-metadata.ts +3 -3
  21. package/src/lib/local-provider-reload-contract.ts +100 -0
  22. package/src/oauth/login-cli.ts +52 -26
  23. package/src/providers/derive.ts +2 -0
  24. package/src/providers/openai-sidecar.ts +9 -2
  25. package/src/providers/quota.ts +57 -0
  26. package/src/providers/registry.ts +53 -25
  27. package/src/responses/state.ts +22 -0
  28. package/src/router.ts +1 -0
  29. package/src/server/claude-messages.ts +57 -11
  30. package/src/server/direct-local-http.ts +7 -3
  31. package/src/server/images.ts +6 -0
  32. package/src/server/index.ts +51 -11
  33. package/src/server/live.ts +117 -13
  34. package/src/server/local-provider-reload-client.ts +137 -0
  35. package/src/server/management/config-routes.ts +20 -3
  36. package/src/server/management/logs-usage-routes.ts +28 -0
  37. package/src/server/management/model-routes.ts +11 -3
  38. package/src/server/management/model-rows.ts +18 -3
  39. package/src/server/management/provider-routes.ts +107 -3
  40. package/src/server/management-auth.ts +65 -1
  41. package/src/server/proxy-liveness.ts +1 -0
  42. package/src/server/responses/agent-task-recovery-cache.ts +143 -0
  43. package/src/server/responses/agent-task-recovery.ts +460 -0
  44. package/src/server/responses/compact.ts +4 -2
  45. package/src/server/responses/core.ts +142 -6
  46. package/src/server/responses/encrypted-payload.ts +4 -1
  47. package/src/server/search.ts +4 -0
  48. package/src/types.ts +27 -0
  49. package/src/usage/expected-prices.ts +11 -0
  50. package/src/vision/describe.ts +4 -0
  51. package/src/web-search/anthropic-executor.ts +5 -1
  52. package/src/web-search/executor.ts +9 -1
  53. package/src/web-search/index.ts +5 -0
  54. package/src/web-search/loop.ts +42 -5
  55. package/gui/dist/assets/index-BHldBl6_.js +0 -76
@@ -650,7 +650,7 @@ function commit(
650
650
  try {
651
651
  // 1. recovery first: a journal on disk means an earlier attempt never
652
652
  // committed, and we must not stack a second transaction on top of it.
653
- const recovered = recoverJournal(journalPath);
653
+ const recovered = recoverJournal(journalPath, { configPath, storePath });
654
654
  if (!recovered.ok) return { ok: false, error: "recovery_required", detail: recovered.detail };
655
655
 
656
656
  // 2. re-read and compare against the caller's edit base.
package/src/config.ts CHANGED
@@ -78,6 +78,7 @@ import { isCodexReasoningEffort, modelRecordValue } from "./reasoning-effort";
78
78
  import {
79
79
  COST4_RATE_KEYS,
80
80
  isValidCost4Rate,
81
+ refreshPreservedProviderOwner,
81
82
  refreshUserCostOverlays,
82
83
  withPreservedDiskOnlyProviders,
83
84
  } from "./usage/user-cost-overlays";
@@ -1130,6 +1131,13 @@ const clientIntegrationsSchema = z.object({
1130
1131
  "claude-desktop": z.boolean().optional().catch(undefined),
1131
1132
  }).passthrough();
1132
1133
 
1134
+ const agentTaskRecoverySchema = z.object({
1135
+ enabled: z.boolean().optional(),
1136
+ model: z.string().trim().min(1).optional(),
1137
+ timeoutMs: z.number().int().min(1_000).max(120_000).optional(),
1138
+ cacheEntries: z.number().int().min(1).max(512).optional(),
1139
+ }).strict();
1140
+
1133
1141
  const configSchema = z.object({
1134
1142
  port: z.number().int().min(0).max(65535).default(10100),
1135
1143
  managementUsageMaxReadBytes: z.number().int().positive().default(64 * 1024 * 1024),
@@ -1168,6 +1176,8 @@ const configSchema = z.object({
1168
1176
  providerContextCaps: z.record(z.string(), z.number().int().positive()).optional(),
1169
1177
  contextCapValue: z.number().int().positive().optional(),
1170
1178
  multiAgentGuidanceEnabled: z.boolean().optional(),
1179
+ // Invalid optional recovery config must not discard unrelated provider/account state.
1180
+ agentTaskRecovery: agentTaskRecoverySchema.optional().catch(undefined),
1171
1181
  // These selections pre-date schema validation and used to pass through as
1172
1182
  // unknown fields. Invalid hand edits must disable only the optional
1173
1183
  // delegation/native-default feature, not reject the whole config and hide
@@ -1903,6 +1913,20 @@ function warnDegradedUpstreamHostCircuitThreshold(rawParsed: unknown): void {
1903
1913
  if (warning) console.warn(`⚠️ config.json ${warning}. Other settings were preserved.`);
1904
1914
  }
1905
1915
 
1916
+ function malformedAgentTaskRecoveryWarning(rawParsed: unknown): string | null {
1917
+ const raw = rawConfigRecord(rawParsed);
1918
+ if (!raw || !Object.hasOwn(raw, "agentTaskRecovery")) return null;
1919
+ const result = agentTaskRecoverySchema.safeParse(raw.agentTaskRecovery);
1920
+ if (result.success) return null;
1921
+ const field = result.error.issues[0]?.path.join(".");
1922
+ return `agentTaskRecovery${field ? `.${field}` : ""} ignored: invalid experimental recovery configuration`;
1923
+ }
1924
+
1925
+ function warnDegradedAgentTaskRecovery(rawParsed: unknown): void {
1926
+ const warning = malformedAgentTaskRecoveryWarning(rawParsed);
1927
+ if (warning) console.warn(`⚠️ config.json ${warning}. Other settings were preserved.`);
1928
+ }
1929
+
1906
1930
  type NativeSubagentPersistedField = "injectionModel" | "injectionEffort" | "syncCodexSubagentDefaults";
1907
1931
 
1908
1932
  function rawConfigRecord(rawParsed: unknown): Record<string, unknown> | null {
@@ -2005,6 +2029,7 @@ export function loadConfig(): OcxConfig {
2005
2029
  warnDegradedNativeSubagentConfig(parsed, config);
2006
2030
  warnDegradedCodexAccountPicker(parsed);
2007
2031
  warnDegradedUpstreamHostCircuitThreshold(parsed);
2032
+ warnDegradedAgentTaskRecovery(parsed);
2008
2033
  return withRefreshedCostOverlays(normalizeClaudeSubagentEffort(normalizeNativeSubagentSync(config, parsed), parsed));
2009
2034
  }
2010
2035
  // Schema validation failed — merge defaults into the raw object instead of
@@ -2027,6 +2052,7 @@ export function loadConfig(): OcxConfig {
2027
2052
  warnDegradedNativeSubagentConfig(parsed, config);
2028
2053
  warnDegradedCodexAccountPicker(parsed);
2029
2054
  warnDegradedUpstreamHostCircuitThreshold(parsed);
2055
+ warnDegradedAgentTaskRecovery(parsed);
2030
2056
  return withRefreshedCostOverlays(normalizeClaudeSubagentEffort(normalizeNativeSubagentSync(config, parsed), parsed));
2031
2057
  }
2032
2058
  // Merge couldn't fix it — truly broken config
@@ -2086,6 +2112,8 @@ function validFileConfigDiagnostics(config: OcxConfig, rawParsed: unknown): Conf
2086
2112
  if (pickerWarning) warnings.push(pickerWarning);
2087
2113
  const hostCircuitWarning = malformedUpstreamHostCircuitThresholdWarning(rawParsed);
2088
2114
  if (hostCircuitWarning) warnings.push(hostCircuitWarning);
2115
+ const recoveryWarning = malformedAgentTaskRecoveryWarning(rawParsed);
2116
+ if (recoveryWarning) warnings.push(recoveryWarning);
2089
2117
  if (syncDisabledReason) {
2090
2118
  warnings.push(`syncCodexSubagentDefaults ignored: ${syncDisabledReason}`);
2091
2119
  }
@@ -2167,6 +2195,16 @@ function upstreamHostCircuitThresholdError(value: unknown): string | null {
2167
2195
  return `schema_invalid: upstreamHostCircuitThreshold: must be an integer from 0 to ${UPSTREAM_HOST_CIRCUIT_MAX_THRESHOLD}`;
2168
2196
  }
2169
2197
 
2198
+ function agentTaskRecoveryError(value: unknown): string | null {
2199
+ const raw = rawConfigRecord(value);
2200
+ if (!raw || !Object.hasOwn(raw, "agentTaskRecovery") || raw.agentTaskRecovery === undefined) return null;
2201
+ const result = agentTaskRecoverySchema.safeParse(raw.agentTaskRecovery);
2202
+ if (result.success) return null;
2203
+ const issue = result.error.issues[0];
2204
+ const field = issue?.path.join(".");
2205
+ return `schema_invalid: agentTaskRecovery${field ? `.${field}` : ""}: ${issue?.message ?? "invalid configuration"}`;
2206
+ }
2207
+
2170
2208
  /**
2171
2209
  * Same reasoning as {@link blankHostnameError}, and more urgent: the read path degrades a
2172
2210
  * malformed selection-order map to undefined, which on a write would drop every entry the
@@ -2262,6 +2300,7 @@ export function validateConfigCandidate(value: unknown): { ok: true; config: Ocx
2262
2300
  ?? claudeSubagentEffortError(value)
2263
2301
  ?? appOwnedMemoryBudgetError(value)
2264
2302
  ?? upstreamHostCircuitThresholdError(value)
2303
+ ?? agentTaskRecoveryError(value)
2265
2304
  ?? googleAntigravityStaticCatalogVersionError(value)
2266
2305
  ?? codexAccountPrioritiesError(value)
2267
2306
  ?? codexAccountPickerEnabledError(value)
@@ -2744,6 +2783,24 @@ export function armClaudeCodeBaseline(config: OcxConfig): void {
2744
2783
  claudeCodeBaseline.set(config, structuredClone(config.claudeCode));
2745
2784
  }
2746
2785
 
2786
+ /**
2787
+ * Adopt one schema-validated provider that was read from the authoritative disk
2788
+ * config into a long-lived server config without rebasing any unrelated field.
2789
+ * Updating the matching baseline row keeps a later guarded save from treating the
2790
+ * adopted provider as an unsaved live edit that should defeat a newer disk change.
2791
+ */
2792
+ export function adoptPersistedProviderIntoLiveConfig(
2793
+ config: OcxConfig,
2794
+ name: string,
2795
+ provider: OcxProviderConfig,
2796
+ persistedConfig?: OcxConfig,
2797
+ ): void {
2798
+ config.providers[name] = structuredClone(provider);
2799
+ const baseline = liveConfigBaseline.get(config);
2800
+ if (baseline) baseline.providers[name] = structuredClone(provider);
2801
+ if (persistedConfig) refreshPreservedProviderOwner(config, persistedConfig);
2802
+ }
2803
+
2747
2804
  /** Test seam only: is this instance armed? */
2748
2805
  export function claudeCodeBaselineArmed(config: OcxConfig): boolean {
2749
2806
  return claudeCodeBaseline.has(config);
@@ -10,11 +10,11 @@
10
10
  },
11
11
  {
12
12
  "path": "package.json",
13
- "sha256": "1ff3c1bce888f5c8ef7f93955fcb1fcaf4dcdb36ad1c0a1c703ead55d9f0e278"
13
+ "sha256": "e26551c48502bd6a0c8d98eaf138efef1fa4c8741b0cea797ecc22cb05e74643"
14
14
  },
15
15
  {
16
16
  "path": "scripts/model-metadata.source.json",
17
- "sha256": "7a9351238123fe98ebef43ca5345584792720a0c37c47a17954588eaaf2c2c2a"
17
+ "sha256": "942a62ca772697b9aca043e955deea895228de272ed15049e61fce0912430637"
18
18
  },
19
19
  {
20
20
  "path": "src/AGENTS.md",
@@ -70,11 +70,11 @@
70
70
  },
71
71
  {
72
72
  "path": "src/adapters/cursor/discovery.ts",
73
- "sha256": "5369563e9b396e84a71798ca5631462d7408c53b13834b5cc7ac112db18303d2"
73
+ "sha256": "687a1bb1084d67bd59d0793abddd3e778f366ce6d371d7b3efd7af6aeb835147"
74
74
  },
75
75
  {
76
76
  "path": "src/adapters/cursor/effort-map.ts",
77
- "sha256": "f0f0cf87793635b4947189a9ca4ee8a8e2efae9de2d5566aca2c43eb323a2087"
77
+ "sha256": "77c0bc930ed26dcec014bd5ce186d3232781e8b7c2adb314a133d7d60158cbc8"
78
78
  },
79
79
  {
80
80
  "path": "src/adapters/cursor/exec-policy.ts",
@@ -158,7 +158,7 @@
158
158
  },
159
159
  {
160
160
  "path": "src/adapters/cursor/request-builder.ts",
161
- "sha256": "9613d5b38fef9cf689665905785ac4a0a6f674336e35fb22b430968032d02734"
161
+ "sha256": "d2a9a7fe975c4c858df2bcb5b2b2c5ba43a931b1a959a18dcc504613fabc1eb1"
162
162
  },
163
163
  {
164
164
  "path": "src/adapters/cursor/thread-continuity.ts",
@@ -210,7 +210,7 @@
210
210
  },
211
211
  {
212
212
  "path": "src/adapters/google.ts",
213
- "sha256": "01df2062d6902ad506bd3b35301ce186fff61a502096e2830ae2d3382dd94b51"
213
+ "sha256": "b2e57cd169f7b2a044624d64df557aff05424c06c026ffd055f0e009770325a4"
214
214
  },
215
215
  {
216
216
  "path": "src/adapters/identity.ts",
@@ -270,11 +270,11 @@
270
270
  },
271
271
  {
272
272
  "path": "src/adapters/openai-chat.ts",
273
- "sha256": "af2905f797cee387f090ec3edcda34611b61c1339f84384297c2be8816a59e28"
273
+ "sha256": "86f37048af20ddbdd635a3e8f60369441c8d9481745fcf071ccbbe4daf7bc54b"
274
274
  },
275
275
  {
276
276
  "path": "src/adapters/openai-responses.ts",
277
- "sha256": "80ebaba83efabafa0035b5a091dfed8c10dccdeda2f1ea270415ac16e113f374"
277
+ "sha256": "67c8971279554b0e63c2bf85981189f92f27fe3f73a618a8198f7e4980fda14b"
278
278
  },
279
279
  {
280
280
  "path": "src/adapters/run-turn-queue.ts",
@@ -630,7 +630,7 @@
630
630
  },
631
631
  {
632
632
  "path": "src/codex/catalog.ts",
633
- "sha256": "f1490f679d430d015eafae668017eb40a2fda72959419794a91ee9d0a6434952"
633
+ "sha256": "b3a69c6d7093c4acd570f02e2704d8e3c804c14114e461444d208e9d69db1670"
634
634
  },
635
635
  {
636
636
  "path": "src/codex/catalog/account-models.ts",
@@ -642,7 +642,7 @@
642
642
  },
643
643
  {
644
644
  "path": "src/codex/catalog/bundled.ts",
645
- "sha256": "a33a7981d6c3a1dd3200a8e311ae37308fe5fc84a292df26b9bc91aa0426204b"
645
+ "sha256": "56c31dd8063b60fc433a91933f7a4289128ca0b359c123362e151964c1cca34b"
646
646
  },
647
647
  {
648
648
  "path": "src/codex/catalog/effort.ts",
@@ -658,7 +658,7 @@
658
658
  },
659
659
  {
660
660
  "path": "src/codex/catalog/metadata.ts",
661
- "sha256": "fc103af095eb6dfc88ec805cb9e71b4b2d405ef41ba932f2b7f51caf9515595d"
661
+ "sha256": "49066e273177f772fa0adc6ee9ecb8258e3b9591d244d01fc3f6fdf0d2e695a6"
662
662
  },
663
663
  {
664
664
  "path": "src/codex/catalog/native-models.ts",
@@ -666,7 +666,7 @@
666
666
  },
667
667
  {
668
668
  "path": "src/codex/catalog/parsing.ts",
669
- "sha256": "70ddc9e2a0aa9719255fddc30680c6286b6c383509283fa5abce35d3672ee6d7"
669
+ "sha256": "630f020fda702d07a90f1ff147a03ca284d69e32482d4e4c3020c25cd988e4ce"
670
670
  },
671
671
  {
672
672
  "path": "src/codex/catalog/provider-fetch.ts",
@@ -674,7 +674,7 @@
674
674
  },
675
675
  {
676
676
  "path": "src/codex/catalog/sync.ts",
677
- "sha256": "9eb9969c8dab31ee2879d6a2cc13247f9ea56dba756c8fae3a6f1b9f553a5be7"
677
+ "sha256": "06b4ffdf20f60e81ba881e2390e099910aaa14da8b95ce4568471e5757af7861"
678
678
  },
679
679
  {
680
680
  "path": "src/codex/codex-write-lock.ts",
@@ -686,7 +686,7 @@
686
686
  },
687
687
  {
688
688
  "path": "src/codex/convergence.ts",
689
- "sha256": "d5c7d5554c3b5aead1472e0392eae18e6011d8c14b43ea4d611db5f1ecb80f81"
689
+ "sha256": "6048df4a3e0263dc380169b7ad7085782743a70b6e6a3b45c0debea640221919"
690
690
  },
691
691
  {
692
692
  "path": "src/codex/custom-model-catalog-migration.ts",
@@ -862,11 +862,11 @@
862
862
  },
863
863
  {
864
864
  "path": "src/codex/prompt-journal.ts",
865
- "sha256": "b24a810efe080505c69736177f0a86e65bf8e8c8f5d2facffbb93e3197145ab7"
865
+ "sha256": "00334537b0ff8cb7ca6389eeab75358c289fb14c8705b889b23938eb7280fdda"
866
866
  },
867
867
  {
868
868
  "path": "src/codex/prompt-layers.ts",
869
- "sha256": "c8f68d86bab9e102aae25b7e59f15c1d272d1b6fc4e72e3c331b8a4e54e938f5"
869
+ "sha256": "d5da651c319cb2f398c9c0553606784d101efe1618232b4c51f2a16fa777d796"
870
870
  },
871
871
  {
872
872
  "path": "src/codex/prompt-lock.ts",
@@ -958,11 +958,11 @@
958
958
  },
959
959
  {
960
960
  "path": "src/config.ts",
961
- "sha256": "85cb62d598162e66356cc685ad701850f09bb57c6d9c47463146af0ed409cde4"
961
+ "sha256": "dbbabcdc1f62870ed69ecc6da675b7f82705d3f97179ad4841ad4ca368cd5932"
962
962
  },
963
963
  {
964
964
  "path": "src/generated/model-metadata.ts",
965
- "sha256": "6c072475b28762a71214bc5323304f528e072782784d76332548622c6785a39d"
965
+ "sha256": "12d453abc120f97c01d97e67dca7f5fdb3d0bb3255180125ea24b5159786f98a"
966
966
  },
967
967
  {
968
968
  "path": "src/github/star-state.ts",
@@ -1564,6 +1564,10 @@
1564
1564
  "path": "src/lib/local-management-capability.ts",
1565
1565
  "sha256": "1150af62dd3f0d45337d5b3b681224bea89eab293d42d6e3c9dba3c8245fbb67"
1566
1566
  },
1567
+ {
1568
+ "path": "src/lib/local-provider-reload-contract.ts",
1569
+ "sha256": "5f8d45771de21edf801129e9221e2b2a8ba43a3328472b36362f21198d0af260"
1570
+ },
1567
1571
  {
1568
1572
  "path": "src/lib/open-url.ts",
1569
1573
  "sha256": "a6db7ec7181ccb4e95411b2c7499fdd00f3dd48bebcdaca099da086c0dae2e59"
@@ -1766,7 +1770,7 @@
1766
1770
  },
1767
1771
  {
1768
1772
  "path": "src/oauth/login-cli.ts",
1769
- "sha256": "82657a857638fe05ef4ec79d4dc641a2780d3be3f92253b9fe45fb589ac6b23e"
1773
+ "sha256": "fb3fdbb504545f24f55c1251982f797d9b88989a4088141c19670ce5f1f5c8aa"
1770
1774
  },
1771
1775
  {
1772
1776
  "path": "src/oauth/nous.ts",
@@ -1830,7 +1834,7 @@
1830
1834
  },
1831
1835
  {
1832
1836
  "path": "src/providers/derive.ts",
1833
- "sha256": "e3c05c3f115a5917af763e5c372d5f2629be3620cfa257ab25c4e38c7631981f"
1837
+ "sha256": "b1954dd4f9f0552346b5510d519cf9f5ed1f7a54d0c7edc60cd5a648ed52d094"
1834
1838
  },
1835
1839
  {
1836
1840
  "path": "src/providers/free-directory.ts",
@@ -1866,7 +1870,7 @@
1866
1870
  },
1867
1871
  {
1868
1872
  "path": "src/providers/openai-sidecar.ts",
1869
- "sha256": "52201dcd58b7658e75e9765edbdb58a90f2faefa2b89a387b10e918f4be00f1d"
1873
+ "sha256": "d07ec55e8600563fa9cbdb9e535cfecb8163b8235aa44547c9359f6ca8ce62d1"
1870
1874
  },
1871
1875
  {
1872
1876
  "path": "src/providers/openai-tier-startup.ts",
@@ -1894,11 +1898,11 @@
1894
1898
  },
1895
1899
  {
1896
1900
  "path": "src/providers/quota.ts",
1897
- "sha256": "bb60eb09ce4970d6e865229981a91b5e5d1f4f4196106b65a602a14b815dfc3e"
1901
+ "sha256": "d2d0f30c3e8dad900c8dce0ba0278a975f809b5e39830def8d59fe8663aefa99"
1898
1902
  },
1899
1903
  {
1900
1904
  "path": "src/providers/registry.ts",
1901
- "sha256": "fcee740159250616dfd16f3cf8c998fd12f29f25f1b4b760d1b8b2b1724e1d98"
1905
+ "sha256": "e840dcdf478cfcdee036d8de79a849a4ed303f7f25a01a4caff616d57b0d3855"
1902
1906
  },
1903
1907
  {
1904
1908
  "path": "src/providers/slug-codec.ts",
@@ -1946,7 +1950,7 @@
1946
1950
  },
1947
1951
  {
1948
1952
  "path": "src/responses/state.ts",
1949
- "sha256": "930af89127963316f092a68e4af8a0987a89a9bdcb22584e5018d25c635c55c4"
1953
+ "sha256": "7d5586e7b48ced98e9ca38ee077fc828a53ab2425651c258688b43fb608542e7"
1950
1954
  },
1951
1955
  {
1952
1956
  "path": "src/responses/tool-groups.ts",
@@ -1954,7 +1958,7 @@
1954
1958
  },
1955
1959
  {
1956
1960
  "path": "src/router.ts",
1957
- "sha256": "a47d5b2cd1c0a47fea5b808333643ad8ccdb7dd0ebf2a43a07df4fbf7e0977ab"
1961
+ "sha256": "a431e4b5b86e615cdcb2ccb635b3c285bc8579dc93ec2d41f53af1ebb97cdc5a"
1958
1962
  },
1959
1963
  {
1960
1964
  "path": "src/routing/analytics.ts",
@@ -2062,11 +2066,11 @@
2062
2066
  },
2063
2067
  {
2064
2068
  "path": "src/server/claude-messages.ts",
2065
- "sha256": "64be4290b7cff0729754ff092110acf6f89759106f9742c5f2919bd56c9fcbde"
2069
+ "sha256": "6d9218ef7c399b8b914f341bbad363ccbf56d326f5e3dacd5b174150994914bc"
2066
2070
  },
2067
2071
  {
2068
2072
  "path": "src/server/direct-local-http.ts",
2069
- "sha256": "5415d320edde225d0c3d545d0fc7e6e49baede992a8c86939ace51d06a98971d"
2073
+ "sha256": "4cdeb115d076e6efbb137b532568f826b5760acd4f99e902e0f61833d98b2f39"
2070
2074
  },
2071
2075
  {
2072
2076
  "path": "src/server/effort-policy.ts",
@@ -2086,11 +2090,11 @@
2086
2090
  },
2087
2091
  {
2088
2092
  "path": "src/server/images.ts",
2089
- "sha256": "91fb82ae4c955f39b0ed2fd76724030c8f4b8a4e4245abfbfe86f35e504e1d5d"
2093
+ "sha256": "17d01617b52acdbf9e6f443b2cf07a5e426aaf7eb73daada16a73f07dbca58c7"
2090
2094
  },
2091
2095
  {
2092
2096
  "path": "src/server/index.ts",
2093
- "sha256": "82ebf4973cc31922ddb25b9c85f659d2e8eaa6d45755b279885b30749a86e474"
2097
+ "sha256": "5bd284761bb05a0069f10c6cd6a686b2a600665de5d77e39579936b77747ebca"
2094
2098
  },
2095
2099
  {
2096
2100
  "path": "src/server/lifecycle.ts",
@@ -2098,19 +2102,23 @@
2098
2102
  },
2099
2103
  {
2100
2104
  "path": "src/server/live.ts",
2101
- "sha256": "d92bf6e4a4eeeb144b48fb5ec99d2068fc3327ff49fc7dff755f7e9a9c1b457c"
2105
+ "sha256": "ce0cd3ed3c36fec1490ab0121691c85563e2ea91226ea0084e2468db812f23b3"
2102
2106
  },
2103
2107
  {
2104
2108
  "path": "src/server/local-management-read-client.ts",
2105
2109
  "sha256": "af2b5e25ed8b8aa063426ed3a82f0a526d193fd3f0c6168f65adfcd8e14362fe"
2106
2110
  },
2111
+ {
2112
+ "path": "src/server/local-provider-reload-client.ts",
2113
+ "sha256": "dc98f454f0d26839abea341a1e3f73d37f55583d5d16a9248420fc6d9e68d25f"
2114
+ },
2107
2115
  {
2108
2116
  "path": "src/server/management-api.ts",
2109
2117
  "sha256": "ccd670a1618afc1ec6611771ec2519ea6c216d0ef43aa9e1114a3a98a9f0e030"
2110
2118
  },
2111
2119
  {
2112
2120
  "path": "src/server/management-auth.ts",
2113
- "sha256": "344c758702a52a59a2d2ccf8461fb3d479d866d9672766000a5177512cbe55a2"
2121
+ "sha256": "9aa9986e875e55092fc0e4092b924e882a23a51e0ece4e7ab2b2ac49681d1b3a"
2114
2122
  },
2115
2123
  {
2116
2124
  "path": "src/server/management/agent-settings-routes.ts",
@@ -2134,7 +2142,7 @@
2134
2142
  },
2135
2143
  {
2136
2144
  "path": "src/server/management/config-routes.ts",
2137
- "sha256": "1cac8721830682d209128de59b9a6245defbe74e0e98611dbbdd4fecb853892e"
2145
+ "sha256": "999e5668ca4cfe4f0bade38b11546fc40382c3396d5c50e46cd019f0e0fd50f8"
2138
2146
  },
2139
2147
  {
2140
2148
  "path": "src/server/management/context.ts",
@@ -2154,15 +2162,15 @@
2154
2162
  },
2155
2163
  {
2156
2164
  "path": "src/server/management/logs-usage-routes.ts",
2157
- "sha256": "3a84d93d6c45e533a3fd84991f683eb256cc0dfa25d584e42cc67df74fd65ac0"
2165
+ "sha256": "bcd6c00783c78a3dd1a5b71a482f15595fefcf07610506729e309bd312b3e2f2"
2158
2166
  },
2159
2167
  {
2160
2168
  "path": "src/server/management/model-routes.ts",
2161
- "sha256": "d137a22b3122778f2b8db6e25a2d9eb4f377d35c37f5afb5ef1e2bba71b2490d"
2169
+ "sha256": "a217d38124fd6257b6a65c29f226030e1a51eaea525ac14e1d9509db11cb1a0e"
2162
2170
  },
2163
2171
  {
2164
2172
  "path": "src/server/management/model-rows.ts",
2165
- "sha256": "043ea58af5b284f5c3913626cfadedb289eabc2f992b28a085ad405ff6027ad0"
2173
+ "sha256": "7d928cd0e8791f194ece9dfe050923f645d2df6db1e00b30e760004a60018847"
2166
2174
  },
2167
2175
  {
2168
2176
  "path": "src/server/management/native-integration-routes.ts",
@@ -2174,7 +2182,7 @@
2174
2182
  },
2175
2183
  {
2176
2184
  "path": "src/server/management/provider-routes.ts",
2177
- "sha256": "2ee58ba4f6f2a9de6bc458dc4e78ae1eb1b095ada1de8f3e3922dec25301cc80"
2185
+ "sha256": "d5a5a4980f1a5cf56a994a8d2b454c86c376ec9161b3e67903b1fc768bf59cf2"
2178
2186
  },
2179
2187
  {
2180
2188
  "path": "src/server/management/request-history-routes.ts",
@@ -2230,7 +2238,7 @@
2230
2238
  },
2231
2239
  {
2232
2240
  "path": "src/server/proxy-liveness.ts",
2233
- "sha256": "722454703ac2aa710ae0568a2ada618e350bbe250bb16a8feda3829ef4950e74"
2241
+ "sha256": "4f130fa8b85506829b90e9955140fdc1ac2f28e6bbe9b0fd1f5ae39c5834c547"
2234
2242
  },
2235
2243
  {
2236
2244
  "path": "src/server/readiness.ts",
@@ -2288,21 +2296,29 @@
2288
2296
  "path": "src/server/responses.ts",
2289
2297
  "sha256": "13b7d051380ff7ce29e7a85027b4ad494f93d3595aec9554aef5491fee07fb08"
2290
2298
  },
2299
+ {
2300
+ "path": "src/server/responses/agent-task-recovery-cache.ts",
2301
+ "sha256": "421f63bda46ffc74a26c7f2a2d8df2ac2f489e678bc6e27d27fd8592d108d577"
2302
+ },
2303
+ {
2304
+ "path": "src/server/responses/agent-task-recovery.ts",
2305
+ "sha256": "5c20cb0be2697fe716d47e45f5ed0b3d44248cb5f3a467bbbb656f6759ea5f82"
2306
+ },
2291
2307
  {
2292
2308
  "path": "src/server/responses/collaboration.ts",
2293
2309
  "sha256": "e3bcb01890c2d5e3b2f5032de223a537455c21bf06a134e4f5c828c6b56dc243"
2294
2310
  },
2295
2311
  {
2296
2312
  "path": "src/server/responses/compact.ts",
2297
- "sha256": "589decda83ed277d3b69635a3e3bf3abdc11374cb3c93895e8f806b4d7dc81d7"
2313
+ "sha256": "942bbcf300d9edc851334594c366d4bfc24cd9c8d7097327a3906cc8183d174a"
2298
2314
  },
2299
2315
  {
2300
2316
  "path": "src/server/responses/core.ts",
2301
- "sha256": "e604c4206aef8e1726a648b34485bb741823cecd211eede95f8d03351d22538d"
2317
+ "sha256": "d3152413a69957fd952e0f6dd8a5e0837aea6d1f0a71f4693580e4176221f317"
2302
2318
  },
2303
2319
  {
2304
2320
  "path": "src/server/responses/encrypted-payload.ts",
2305
- "sha256": "cf0923b59773552294d804dd8f06e549802a3394a432ff1c3de97d1a391f26a7"
2321
+ "sha256": "d0f83a3a8f5bdce327fe32e744f8bfbc8695e7cb2981a1dffc67daf8aa302d93"
2306
2322
  },
2307
2323
  {
2308
2324
  "path": "src/server/responses/fetch-helpers.ts",
@@ -2326,7 +2342,7 @@
2326
2342
  },
2327
2343
  {
2328
2344
  "path": "src/server/search.ts",
2329
- "sha256": "4a777b38b22983999f1aeeb5c2b790b7915730fcfa4e7612e36807f301a4d066"
2345
+ "sha256": "62a6c940ca5d967ea2a766e6d864c6df77e74130c99d0cacf4f4380cb01fbb5a"
2330
2346
  },
2331
2347
  {
2332
2348
  "path": "src/server/sse-frame-buffer.ts",
@@ -2442,7 +2458,7 @@
2442
2458
  },
2443
2459
  {
2444
2460
  "path": "src/types.ts",
2445
- "sha256": "2d4ff8d613b137e6ef483542e53be28e13e5480f4edc9c6798d8804661546da0"
2461
+ "sha256": "d911cdcf36b5694e58918b7e76b94b42c3bf94962ef4a41b93ae01629be36016"
2446
2462
  },
2447
2463
  {
2448
2464
  "path": "src/update/badge.ts",
@@ -2494,7 +2510,7 @@
2494
2510
  },
2495
2511
  {
2496
2512
  "path": "src/usage/expected-prices.ts",
2497
- "sha256": "0e06e0b9d8c7b51f5c2c6ce74194fd92f603cb461c64a5c115eac5767db0fe57"
2513
+ "sha256": "4773850e6417bba4d2ab5bfa7694203aa6898bc72d218e702d03cfe1cc3d2ff9"
2498
2514
  },
2499
2515
  {
2500
2516
  "path": "src/usage/log.ts",
@@ -2522,7 +2538,7 @@
2522
2538
  },
2523
2539
  {
2524
2540
  "path": "src/vision/describe.ts",
2525
- "sha256": "7908356c8640fe411f97de3e6c31482b6d910e601c102d1dc02f43027195ceba"
2541
+ "sha256": "04673cb73b34adb94a450a07abcd14a8b80c80e3dad17584dbe344260f49984e"
2526
2542
  },
2527
2543
  {
2528
2544
  "path": "src/vision/eligibility.ts",
@@ -2538,11 +2554,11 @@
2538
2554
  },
2539
2555
  {
2540
2556
  "path": "src/web-search/anthropic-executor.ts",
2541
- "sha256": "2c9106fc3a3f6dd39b2e3137f0dbd15cff14bb86c5b60aa23435ca9e41c4aa72"
2557
+ "sha256": "dc7be63143d4ba70cb5e8127fe2d5231bbabb724ee4715a091bfcc336d48eb32"
2542
2558
  },
2543
2559
  {
2544
2560
  "path": "src/web-search/executor.ts",
2545
- "sha256": "6f5cb295009aaf4341158817edeadf694299630e975c0155760345d07c4f6321"
2561
+ "sha256": "1fc1c960ff4b85b9af4d4828a49c67695cb8712cc207f4118fd360ebab321c4c"
2546
2562
  },
2547
2563
  {
2548
2564
  "path": "src/web-search/format-result.ts",
@@ -2550,11 +2566,11 @@
2550
2566
  },
2551
2567
  {
2552
2568
  "path": "src/web-search/index.ts",
2553
- "sha256": "20dc195360b43b632fb2de5499357363f71349134c4e2f97ae6fc3241991cbd5"
2569
+ "sha256": "d8f043b344f916c63ae8d09323a2f894c1c98b76feae7921e67152fcc1db4b5f"
2554
2570
  },
2555
2571
  {
2556
2572
  "path": "src/web-search/loop.ts",
2557
- "sha256": "e9e696e94b7706ba24c0b58d737ff5ccbd72b3fe42d9837d4479d0de797adcac"
2573
+ "sha256": "7934594b240697a96d081114d0922655f3e3d4d4b8a4f6518bf5d339e35d353a"
2558
2574
  },
2559
2575
  {
2560
2576
  "path": "src/web-search/parse.ts",