theclawbay 0.6.5 → 0.6.7

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.
@@ -5,7 +5,7 @@ export declare const MANAGED_END = "# theclawbay-managed:end";
5
5
  export declare const HISTORY_PROVIDER_NEUTRALIZE_SOURCES: Set<string>;
6
6
  export declare const HISTORY_PROVIDER_DB_MIGRATE_SOURCES: string[];
7
7
  export declare const CODEX_MODEL_CONTEXT_WINDOW = 272000;
8
- export declare const CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT = 240000;
8
+ export declare const CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT = 200000;
9
9
  export type CodexFeatureFlagSnapshot = {
10
10
  hadFeaturesTable: boolean;
11
11
  appsHadKey: boolean;
@@ -35,7 +35,7 @@ exports.HISTORY_PROVIDER_DB_MIGRATE_SOURCES = ["openai", providers_1.DEFAULT_PRO
35
35
  // Keep the compact trigger below the long-context pricing threshold so Codex
36
36
  // compacts before customers are likely to enter the higher-priced tier.
37
37
  exports.CODEX_MODEL_CONTEXT_WINDOW = 272000;
38
- exports.CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT = 240000;
38
+ exports.CODEX_MODEL_AUTO_COMPACT_TOKEN_LIMIT = 200000;
39
39
  function removeProviderTable(source, providerId) {
40
40
  const header = `[model_providers.${providerId}]`;
41
41
  const lines = source.split(/\r?\n/);
@@ -25,9 +25,9 @@ const SUPPORTED_MODEL_CONFIG = new Map(SUPPORTED_MODELS.map((model) => [model.id
25
25
  const TEMPLATE_MODEL_IDS = TARGET_MODEL_IDS;
26
26
  const TARGET_MODEL_LABEL_TEXT = "the current The Claw Bay model catalog";
27
27
  const AUTO_COMPACT_TOKEN_LIMIT_BY_MODEL_ID = new Map([
28
- ["gpt-5.6", 240000],
29
- ["gpt-5.6-sol", 240000],
30
- ["gpt-5.6-terra", 240000],
28
+ ["gpt-5.6", 200000],
29
+ ["gpt-5.6-sol", 200000],
30
+ ["gpt-5.6-terra", 200000],
31
31
  ]);
32
32
  const DEFAULT_REASONING_LEVELS = [
33
33
  { effort: "low", description: "Fast responses with lighter reasoning" },
@@ -35,6 +35,22 @@ const DEFAULT_REASONING_LEVELS = [
35
35
  { effort: "high", description: "Greater reasoning depth for complex problems" },
36
36
  { effort: "xhigh", description: "Extra high reasoning depth for complex problems" },
37
37
  ];
38
+ const GPT56_MODEL_IDS = new Set(["gpt-5.6", "gpt-5.6-sol", "gpt-5.6-terra"]);
39
+ const GPT56_REASONING_LEVELS = [
40
+ ...DEFAULT_REASONING_LEVELS,
41
+ { effort: "max", description: "Maximum reasoning depth for the hardest problems" },
42
+ { effort: "ultra", description: "Maximum reasoning with automatic task delegation" },
43
+ ];
44
+ const GPT56_FAST_SERVICE_TIERS = [
45
+ {
46
+ id: "priority",
47
+ name: "Fast",
48
+ description: "1.5x speed, increased usage",
49
+ },
50
+ ];
51
+ const GPT56_SOL_AVAILABILITY_NUX = {
52
+ message: "GPT-5.6 Sol is the flagship tier for complex coding, research, and ambitious agentic work.",
53
+ };
38
54
  const FALLBACK_BASE_INSTRUCTIONS = `You are Codex, a coding agent based on GPT-5. You and the user share the same workspace and collaborate to achieve the user's goals.
39
55
 
40
56
  ## General
@@ -42,6 +58,14 @@ const FALLBACK_BASE_INSTRUCTIONS = `You are Codex, a coding agent based on GPT-5
42
58
  - Prefer rg or rg --files for search when available.
43
59
  - Make safe, minimal code changes that preserve user work.
44
60
  - Explain what changed and any remaining risk clearly.`;
61
+ const GPT56_MODEL_MESSAGES = {
62
+ instructions_template: `{{base_instructions}}`,
63
+ instructions_variables: {
64
+ base_instructions: FALLBACK_BASE_INSTRUCTIONS,
65
+ personality_default: "",
66
+ },
67
+ approvals: null,
68
+ };
45
69
  function objectRecordOr(value) {
46
70
  if (typeof value === "object" && value !== null && !Array.isArray(value)) {
47
71
  return value;
@@ -176,6 +200,37 @@ function applySeedMarker(model) {
176
200
  function seedDescription(modelId) {
177
201
  return SUPPORTED_MODEL_CONFIG.get(modelId)?.note ?? "The Claw Bay model.";
178
202
  }
203
+ function applyGpt56CodexMetadata(seed, modelId) {
204
+ if (!GPT56_MODEL_IDS.has(modelId))
205
+ return;
206
+ seed.minimal_client_version = "0.144.0";
207
+ seed.supported_reasoning_levels = cloneJson(GPT56_REASONING_LEVELS);
208
+ seed.default_reasoning_level = modelId === "gpt-5.6-terra" ? "medium" : "low";
209
+ seed.apply_patch_tool_type = "freeform";
210
+ seed.web_search_tool_type = "text_and_image";
211
+ seed.supports_image_detail_original = true;
212
+ seed.tool_mode = "code_mode_only";
213
+ seed.multi_agent_version = "v2";
214
+ seed.use_responses_lite = true;
215
+ seed.include_skills_usage_instructions = false;
216
+ seed.auto_review_model_override = null;
217
+ seed.comp_hash = "3000";
218
+ seed.reasoning_summary_format = "experimental";
219
+ seed.default_reasoning_summary = "none";
220
+ seed.upgrade = null;
221
+ seed.experimental_supported_tools = [];
222
+ seed.supports_search_tool = true;
223
+ seed.default_service_tier = null;
224
+ seed.service_tiers = cloneJson(GPT56_FAST_SERVICE_TIERS);
225
+ seed.additional_speed_tiers = ["fast"];
226
+ seed.model_messages = cloneJson(GPT56_MODEL_MESSAGES);
227
+ if (modelId === "gpt-5.6" || modelId === "gpt-5.6-sol") {
228
+ seed.availability_nux = cloneJson(GPT56_SOL_AVAILABILITY_NUX);
229
+ }
230
+ else {
231
+ seed.availability_nux = null;
232
+ }
233
+ }
179
234
  function normalizeSeedModel(template, modelId) {
180
235
  const modelConfig = SUPPORTED_MODEL_CONFIG.get(modelId);
181
236
  const seed = applySeedMarker(template ?? {});
@@ -244,6 +299,7 @@ function normalizeSeedModel(template, modelId) {
244
299
  if (typeof seed.prefer_websockets !== "boolean") {
245
300
  seed.prefer_websockets = true;
246
301
  }
302
+ applyGpt56CodexMetadata(seed, modelId);
247
303
  return seed;
248
304
  }
249
305
  function buildSeedModel(models, modelId) {
@@ -445,8 +501,17 @@ async function ensureCodexModelCacheHasGpt54(params) {
445
501
  if (existingModel) {
446
502
  const currentFingerprint = fingerprintModel(existingModel);
447
503
  if (hasSeedMarker(existingModel)) {
448
- if (!trackedFingerprint || trackedFingerprint !== currentFingerprint) {
449
- nextState[modelId] = currentFingerprint;
504
+ const normalizedSeed = normalizeSeedModel(existingModel, modelId);
505
+ const normalizedFingerprint = fingerprintModel(normalizedSeed);
506
+ if (normalizedFingerprint !== currentFingerprint) {
507
+ doc.models = doc.models.map((entry) => (entry.slug === modelId ? normalizedSeed : entry));
508
+ nextState[modelId] = normalizedFingerprint;
509
+ changed = true;
510
+ stateChanged = true;
511
+ continue;
512
+ }
513
+ if (!trackedFingerprint || trackedFingerprint !== normalizedFingerprint) {
514
+ nextState[modelId] = normalizedFingerprint;
450
515
  stateChanged = true;
451
516
  }
452
517
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "theclawbay",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "CLI for connecting Codex, Hermes Agent, Gemini-compatible apps, Continue, Cline, GSD, OpenClaw, OpenCode, Kilo, Roo Code, Aider, experimental Trae, and experimental Zo to The Claw Bay.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -138,9 +138,9 @@
138
138
  "note": "Lowest-cost large-context DeepSeek model for fast iterations.",
139
139
  "tone": "sea",
140
140
  "provider": "deepseek",
141
- "inputPer1M": 0.14,
142
- "cachedInputPer1M": 0.0028,
143
- "outputPer1M": 0.28,
141
+ "inputPer1M": 0.043,
142
+ "cachedInputPer1M": 0.001,
143
+ "outputPer1M": 0.085,
144
144
  "contextWindow": 1000000
145
145
  },
146
146
  {
@@ -149,9 +149,9 @@
149
149
  "note": "Flagship large-context DeepSeek model for heavier reasoning work.",
150
150
  "tone": "coral",
151
151
  "provider": "deepseek",
152
- "inputPer1M": 0.435,
153
- "cachedInputPer1M": 0.003625,
154
- "outputPer1M": 0.87,
152
+ "inputPer1M": 0.127,
153
+ "cachedInputPer1M": 0.002,
154
+ "outputPer1M": 0.254,
155
155
  "contextWindow": 1000000
156
156
  },
157
157
  {