@code-yeongyu/senpi-ai 2026.9.28-7 → 2026.9.29-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.
Files changed (75) hide show
  1. package/dist/api/anthropic-messages.d.ts.map +1 -1
  2. package/dist/api/anthropic-messages.js +59 -10
  3. package/dist/api/anthropic-messages.js.map +1 -1
  4. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  5. package/dist/api/bedrock-converse-stream.js +10 -3
  6. package/dist/api/bedrock-converse-stream.js.map +1 -1
  7. package/dist/api/openai-completions.d.ts.map +1 -1
  8. package/dist/api/openai-completions.js +13 -8
  9. package/dist/api/openai-completions.js.map +1 -1
  10. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  11. package/dist/api/openai-responses-shared.js +4 -1
  12. package/dist/api/openai-responses-shared.js.map +1 -1
  13. package/dist/api/openai-responses.d.ts.map +1 -1
  14. package/dist/api/openai-responses.js +10 -7
  15. package/dist/api/openai-responses.js.map +1 -1
  16. package/dist/auth/types.d.ts +7 -0
  17. package/dist/auth/types.d.ts.map +1 -1
  18. package/dist/auth/types.js.map +1 -1
  19. package/dist/cursor/context-limit-store.d.ts.map +1 -1
  20. package/dist/cursor/context-limit-store.js +23 -18
  21. package/dist/cursor/context-limit-store.js.map +1 -1
  22. package/dist/models.d.ts.map +1 -1
  23. package/dist/models.js +3 -2
  24. package/dist/models.js.map +1 -1
  25. package/dist/providers/amazon-bedrock.js +13 -13
  26. package/dist/providers/amazon-bedrock.js.map +1 -1
  27. package/dist/providers/data/.manifest.json +1 -1
  28. package/dist/providers/data/amazon-bedrock.json +1 -1
  29. package/dist/providers/data/anthropic.json +1 -1
  30. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  31. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  32. package/dist/providers/data/github-copilot.json +1 -1
  33. package/dist/providers/data/mistral.json +1 -1
  34. package/dist/providers/data/opencode.json +1 -1
  35. package/dist/providers/data/opengateway.json +1 -1
  36. package/dist/providers/data/openrouter.json +1 -1
  37. package/dist/providers/data/together.json +1 -1
  38. package/dist/providers/data/venice.json +1 -1
  39. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  40. package/dist/providers/google-vertex.d.ts.map +1 -1
  41. package/dist/providers/google-vertex.js +3 -5
  42. package/dist/providers/google-vertex.js.map +1 -1
  43. package/dist/session-resources.d.ts.map +1 -1
  44. package/dist/session-resources.js +2 -1
  45. package/dist/session-resources.js.map +1 -1
  46. package/dist/utils/block-symbols.d.ts +4 -0
  47. package/dist/utils/block-symbols.d.ts.map +1 -1
  48. package/dist/utils/block-symbols.js +10 -6
  49. package/dist/utils/block-symbols.js.map +1 -1
  50. package/dist/utils/claude-code-version-cache.d.ts +12 -0
  51. package/dist/utils/claude-code-version-cache.d.ts.map +1 -0
  52. package/dist/utils/claude-code-version-cache.js +60 -0
  53. package/dist/utils/claude-code-version-cache.js.map +1 -0
  54. package/dist/utils/claude-code-version.d.ts +78 -0
  55. package/dist/utils/claude-code-version.d.ts.map +1 -0
  56. package/dist/utils/claude-code-version.js +203 -0
  57. package/dist/utils/claude-code-version.js.map +1 -0
  58. package/dist/utils/cursor-context-limit.d.ts.map +1 -1
  59. package/dist/utils/cursor-context-limit.js +51 -45
  60. package/dist/utils/cursor-context-limit.js.map +1 -1
  61. package/dist/utils/overflow.d.ts.map +1 -1
  62. package/dist/utils/overflow.js +2 -0
  63. package/dist/utils/overflow.js.map +1 -1
  64. package/dist/utils/process-singleton.d.ts +10 -0
  65. package/dist/utils/process-singleton.d.ts.map +1 -0
  66. package/dist/utils/process-singleton.js +18 -0
  67. package/dist/utils/process-singleton.js.map +1 -0
  68. package/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  69. package/dist/utils/prompt-cache-ttl.js +3 -2
  70. package/dist/utils/prompt-cache-ttl.js.map +1 -1
  71. package/dist/utils/tool-schema-compat.d.ts +2 -0
  72. package/dist/utils/tool-schema-compat.d.ts.map +1 -1
  73. package/dist/utils/tool-schema-compat.js +28 -9
  74. package/dist/utils/tool-schema-compat.js.map +1 -1
  75. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAMX,+BAA+B,EAK/B,MAAM,uDAAuD,CAAC;AAI/D,OAAO,KAAK,EACX,wBAAwB,EAKxB,OAAO,EAGP,KAAK,EAGL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAGb,IAAI,EAIJ,MAAM,aAAa,CAAC;AAkDrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA0ElE,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAC2B,CAAC;AACzE,eAAO,MAAM,kBAAkB,SAAU,MAAM,UAAU,IAAI,EAAE,WAS9D,CAAC;AA4EF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AA+FhE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAmvBD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CAgezE,CAAC;AAyFF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CA+ClF,CAAC;AAmJF,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACxB,+BAA+B,CAkBjC"}
1
+ {"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAMX,+BAA+B,EAK/B,MAAM,uDAAuD,CAAC;AAI/D,OAAO,KAAK,EACX,wBAAwB,EAKxB,OAAO,EAGP,KAAK,EAGL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAGb,IAAI,EAIJ,MAAM,aAAa,CAAC;AAwDrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA6ElE,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAC2B,CAAC;AACzE,eAAO,MAAM,kBAAkB,SAAU,MAAM,UAAU,IAAI,EAAE,WAS9D,CAAC;AA4EF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AAsGhE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAmvBD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CA0gBzE,CAAC;AAyFF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CA+ClF,CAAC;AAoJF,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACxB,+BAA+B,CAkBjC"}
@@ -4,6 +4,7 @@ import { readProviderDiagnostic } from "../provider-diagnostic.js";
4
4
  import { registerSessionResourceCleanup } from "../session-resources.js";
5
5
  import { isVideoMimeType } from "../types.js";
6
6
  import { combineAbortSignals } from "../utils/abort-signals.js";
7
+ import { claudeCodeVersionTooOldHint, getClaudeCodeVersion, isClaudeCodeVersionTooOldError, recoverClaudeCodeVersion, } from "../utils/claude-code-version.js";
7
8
  import { splitDeferredTools } from "../utils/deferred-tools.js";
8
9
  import { appendAssistantMessageDiagnostic } from "../utils/diagnostics.js";
9
10
  import { AssistantMessageEventStream } from "../utils/event-stream.js";
@@ -63,8 +64,11 @@ function getCacheControl(model, cacheRetention, env) {
63
64
  cacheControl: { type: "ephemeral", ...(ttl && { ttl }) },
64
65
  };
65
66
  }
66
- // Stealth mode: Mimic Claude Code's tool naming exactly
67
- const claudeCodeVersion = "2.1.280";
67
+ // Stealth mode: Mimic Claude Code's identity and tool naming exactly.
68
+ // The bundled Claude Code version and the floor of the advertised `claude-cli/<version>`
69
+ // (see utils/claude-code-version.ts). Keep this exact declaration: a downstream installer
70
+ // (oh-my-openagent) rewrites it byte-for-byte in the installed dist and bundle.
71
+ const claudeCodeVersion = "2.1.284";
68
72
  // Claude Code 2.x tool names (canonical casing)
69
73
  // Source: https://cchistory.mariozechner.at/data/prompts-2.1.11.md
70
74
  // To update: https://github.com/badlogic/cchistory
@@ -178,7 +182,14 @@ const NATIVE_XHIGH_EFFORT_MODEL_MARKERS = [
178
182
  * this as `compat.supportsDisabledThinking: false`, but `models.json` entries and third-party
179
183
  * gateway rows carry no generated compat, so the family fact has to live here as well.
180
184
  */
181
- const DISABLED_THINKING_REJECTING_MODEL_MARKERS = ["fable-5", "mythos-5", "opus-5-5", "opus-5.5"];
185
+ const DISABLED_THINKING_REJECTING_MODEL_MARKERS = [
186
+ "fable-5",
187
+ "mythos-5",
188
+ "opus-5-5",
189
+ "opus-5.5",
190
+ "sonnet-5-5",
191
+ "sonnet-5.5",
192
+ ];
182
193
  const UNSUPPORTED_NATIVE_COMPUTER_TOOL_MODEL_MARKERS = [
183
194
  "opus-4-6",
184
195
  "opus-4.6",
@@ -847,12 +858,13 @@ export const stream = (model, context, options) => {
847
858
  const requestSignal = combinedAbort.signal;
848
859
  try {
849
860
  let client;
850
- let isOAuth;
861
+ let isOAuth = false;
862
+ let advertisedClaudeCodeVersion;
851
863
  let usageModel = model;
852
864
  let inputTransformations;
865
+ let openClient;
853
866
  if (options?.client) {
854
867
  client = options.client;
855
- isOAuth = false;
856
868
  }
857
869
  else {
858
870
  const apiKey = options?.apiKey;
@@ -868,10 +880,36 @@ export const stream = (model, context, options) => {
868
880
  }
869
881
  const cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env, "short");
870
882
  const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
871
- const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, context), options?.refusalFallbacks !== undefined, optionsHeaders, options?.fetch, copilotDynamicHeaders, cacheSessionId, options?.env);
872
- client = created.client;
873
- isOAuth = created.isOAuthToken;
883
+ openClient = () => {
884
+ const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, context), options?.refusalFallbacks !== undefined, optionsHeaders, options?.fetch, copilotDynamicHeaders, cacheSessionId, options?.env);
885
+ client = created.client;
886
+ isOAuth = created.isOAuthToken;
887
+ advertisedClaudeCodeVersion = created.claudeCodeVersion;
888
+ };
889
+ openClient();
874
890
  }
891
+ // One retry per request: a `claude_code_version_too_old` 400 names the version Anthropic
892
+ // wants, so the fingerprint is raised and the same request goes out again with it.
893
+ let claudeCodeVersionRetried = false;
894
+ const retryWithNewerClaudeCode = async (error) => {
895
+ if (claudeCodeVersionRetried ||
896
+ openClient === undefined ||
897
+ advertisedClaudeCodeVersion === undefined ||
898
+ !isClaudeCodeVersionTooOldError(error)) {
899
+ return false;
900
+ }
901
+ const next = await recoverClaudeCodeVersion(error, claudeCodeVersion, advertisedClaudeCodeVersion, options?.env);
902
+ if (next === undefined)
903
+ return false;
904
+ claudeCodeVersionRetried = true;
905
+ openClient();
906
+ return true;
907
+ };
908
+ const noteTooOldClaudeCode = (error) => {
909
+ if (advertisedClaudeCodeVersion !== undefined && isClaudeCodeVersionTooOldError(error)) {
910
+ error.message = `${error.message}\n${claudeCodeVersionTooOldHint(advertisedClaudeCodeVersion)}`;
911
+ }
912
+ };
875
913
  const fallbackKey = unsignedThinkingFallbackKey(model, options?.sessionId);
876
914
  let unsignedThinkingReplay = fallbackKey && unsignedThinkingTextReplayFallbacks.has(fallbackKey)
877
915
  ? "text"
@@ -921,6 +959,16 @@ export const stream = (model, context, options) => {
921
959
  unsignedThinkingTextReplayFallbacks.add(fallbackKey);
922
960
  return createRequest();
923
961
  }
962
+ if (await retryWithNewerClaudeCode(error)) {
963
+ try {
964
+ return await createRequest();
965
+ }
966
+ catch (retryError) {
967
+ noteTooOldClaudeCode(retryError);
968
+ throw retryError;
969
+ }
970
+ }
971
+ noteTooOldClaudeCode(error);
924
972
  throw error;
925
973
  }
926
974
  }, {
@@ -1421,6 +1469,7 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
1421
1469
  }
1422
1470
  // OAuth: Bearer auth, Claude Code identity headers
1423
1471
  if (apiKey && isOAuthToken(apiKey)) {
1472
+ const advertisedClaudeCodeVersion = getClaudeCodeVersion(claudeCodeVersion, env);
1424
1473
  const client = new Anthropic({
1425
1474
  apiKey: null,
1426
1475
  authToken: apiKey,
@@ -1431,11 +1480,11 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
1431
1480
  accept: "application/json",
1432
1481
  "anthropic-dangerous-direct-browser-access": "true",
1433
1482
  "anthropic-beta": ["claude-code-20250219", "oauth-2025-04-20", ...betaFeatures].join(","),
1434
- "user-agent": `claude-cli/${claudeCodeVersion}`,
1483
+ "user-agent": `claude-cli/${advertisedClaudeCodeVersion}`,
1435
1484
  "x-app": "cli",
1436
1485
  }, model.headers, optionsHeaders)),
1437
1486
  });
1438
- return { client, isOAuthToken: true };
1487
+ return { client, isOAuthToken: true, claudeCodeVersion: advertisedClaudeCodeVersion };
1439
1488
  }
1440
1489
  // API key auth
1441
1490
  const affinityCompat = getAnthropicCompat(model);