@psnext/slingcli 2.4.20260522-1 → 2.4.20260522-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.
@@ -4046,6 +4046,25 @@ export const MODELS = {
4046
4046
  contextWindow: 128000,
4047
4047
  maxTokens: 64000,
4048
4048
  },
4049
+ "gemini-3.5-flash": {
4050
+ id: "gemini-3.5-flash",
4051
+ name: "Gemini 3.5 Flash",
4052
+ api: "openai-completions",
4053
+ provider: "github-copilot",
4054
+ baseUrl: "https://api.individual.githubcopilot.com",
4055
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
4056
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
4057
+ reasoning: true,
4058
+ input: ["text", "image"],
4059
+ cost: {
4060
+ input: 0,
4061
+ output: 0,
4062
+ cacheRead: 0,
4063
+ cacheWrite: 0,
4064
+ },
4065
+ contextWindow: 128000,
4066
+ maxTokens: 64000,
4067
+ },
4049
4068
  "gpt-4.1": {
4050
4069
  id: "gpt-4.1",
4051
4070
  name: "GPT-4.1",
@@ -11874,11 +11893,11 @@ export const MODELS = {
11874
11893
  cost: {
11875
11894
  input: 0.15,
11876
11895
  output: 1,
11877
- cacheRead: 0.049999999999999996,
11896
+ cacheRead: 0,
11878
11897
  cacheWrite: 0,
11879
11898
  },
11880
11899
  contextWindow: 262144,
11881
- maxTokens: 262144,
11900
+ maxTokens: 262140,
11882
11901
  },
11883
11902
  "qwen/qwen3.6-flash": {
11884
11903
  id: "qwen/qwen3.6-flash",
@@ -11889,10 +11908,10 @@ export const MODELS = {
11889
11908
  reasoning: true,
11890
11909
  input: ["text", "image"],
11891
11910
  cost: {
11892
- input: 0.12375000000000001,
11893
- output: 0.7424999999999999,
11911
+ input: 0.1875,
11912
+ output: 1.125,
11894
11913
  cacheRead: 0,
11895
- cacheWrite: 0.1545,
11914
+ cacheWrite: 0.234375,
11896
11915
  },
11897
11916
  contextWindow: 1000000,
11898
11917
  maxTokens: 65536,
@@ -11923,10 +11942,10 @@ export const MODELS = {
11923
11942
  reasoning: true,
11924
11943
  input: ["text", "image"],
11925
11944
  cost: {
11926
- input: 0.1794,
11927
- output: 1.07315,
11945
+ input: 0.325,
11946
+ output: 1.95,
11928
11947
  cacheRead: 0,
11929
- cacheWrite: 0.2236,
11948
+ cacheWrite: 0.40625,
11930
11949
  },
11931
11950
  contextWindow: 1000000,
11932
11951
  maxTokens: 65536,
@@ -31,7 +31,7 @@ const DEFAULT_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
31
31
  const JWT_CLAIM_PATH = "https://api.openai.com/auth";
32
32
  const MAX_RETRIES = 3;
33
33
  const BASE_DELAY_MS = 1000;
34
- const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
34
+ const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode", "slingshot"]);
35
35
  const WEBSOCKET_MESSAGE_TOO_BIG_CLOSE_CODE = 1009;
36
36
  const CODEX_RESPONSE_STATUSES = new Set([
37
37
  "completed",
@@ -91,7 +91,7 @@ export const streamOpenAICodexResponses = (model, context, options) => {
91
91
  if (!apiKey) {
92
92
  throw new Error(`No API key for provider: ${model.provider}`);
93
93
  }
94
- const accountId = extractAccountId(apiKey);
94
+ const accountId = extractAccountId(apiKey) || "";
95
95
  let body = buildRequestBody(model, context, options);
96
96
  const nextBody = await options?.onPayload?.(body, model);
97
97
  if (nextBody !== undefined) {
@@ -265,7 +265,7 @@ function buildRequestBody(model, context, options) {
265
265
  stream: true,
266
266
  instructions: context.systemPrompt || "You are a helpful assistant.",
267
267
  input: messages,
268
- text: { verbosity: options?.textVerbosity || "low" },
268
+ text: { verbosity: options?.textVerbosity || "medium" },
269
269
  include: ["reasoning.encrypted_content"],
270
270
  prompt_cache_key: clampOpenAIPromptCacheKey(options?.sessionId),
271
271
  tool_choice: "auto",
@@ -322,11 +322,7 @@ function resolveCodexServiceTier(responseServiceTier, requestServiceTier) {
322
322
  function resolveCodexUrl(baseUrl) {
323
323
  const raw = baseUrl && baseUrl.trim().length > 0 ? baseUrl : DEFAULT_CODEX_BASE_URL;
324
324
  const normalized = raw.replace(/\/+$/, "");
325
- if (normalized.endsWith("/codex/responses"))
326
- return normalized;
327
- if (normalized.endsWith("/codex"))
328
- return `${normalized}/responses`;
329
- return `${normalized}/codex/responses`;
325
+ return `${normalized}/responses`;
330
326
  }
331
327
  function resolveCodexWebSocketUrl(baseUrl) {
332
328
  const url = new URL(resolveCodexUrl(baseUrl));
@@ -1035,15 +1031,13 @@ function extractAccountId(token) {
1035
1031
  try {
1036
1032
  const parts = token.split(".");
1037
1033
  if (parts.length !== 3)
1038
- throw new Error("Invalid token");
1034
+ return null;
1039
1035
  const payload = JSON.parse(atob(parts[1]));
1040
1036
  const accountId = payload?.[JWT_CLAIM_PATH]?.chatgpt_account_id;
1041
- if (!accountId)
1042
- throw new Error("No account ID in token");
1043
- return accountId;
1037
+ return accountId || null;
1044
1038
  }
1045
1039
  catch {
1046
- throw new Error("Failed to extract accountId from token");
1040
+ return null;
1047
1041
  }
1048
1042
  }
1049
1043
  function createCodexRequestId() {
@@ -1058,7 +1052,10 @@ function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token)
1058
1052
  headers.set(key, value);
1059
1053
  }
1060
1054
  headers.set("Authorization", `Bearer ${token}`);
1061
- headers.set("chatgpt-account-id", accountId);
1055
+ // Only set chatgpt-account-id if we have one (OpenAI-specific)
1056
+ if (accountId) {
1057
+ headers.set("chatgpt-account-id", accountId);
1058
+ }
1062
1059
  headers.set("originator", "pi");
1063
1060
  const userAgent = _os ? `pi (${_os.platform()} ${_os.release()}; ${_os.arch()})` : "pi (browser)";
1064
1061
  headers.set("User-Agent", userAgent);
@@ -0,0 +1,3 @@
1
+ # `@mariozechner/clipboard-linux-x64-gnu`
2
+
3
+ This is the **x86_64-unknown-linux-gnu** binary for `@mariozechner/clipboard`
@@ -1,20 +1,23 @@
1
1
  {
2
- "name": "@mariozechner/clipboard-darwin-arm64",
2
+ "name": "@mariozechner/clipboard-linux-x64-gnu",
3
3
  "version": "0.3.6",
4
4
  "os": [
5
- "darwin"
5
+ "linux"
6
6
  ],
7
7
  "cpu": [
8
- "arm64"
8
+ "x64"
9
9
  ],
10
- "main": "clipboard.darwin-arm64.node",
10
+ "main": "clipboard.linux-x64-gnu.node",
11
11
  "files": [
12
- "clipboard.darwin-arm64.node"
12
+ "clipboard.linux-x64-gnu.node"
13
13
  ],
14
14
  "license": "MIT",
15
15
  "engines": {
16
16
  "node": ">= 10"
17
17
  },
18
+ "libc": [
19
+ "glibc"
20
+ ],
18
21
  "repository": {
19
22
  "type": "git",
20
23
  "url": "https://github.com/badlogic/clipboard.git"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@psnext/slingcli",
3
- "version": "2.4.20260522-1",
3
+ "version": "2.4.20260522-2",
4
4
  "description": "Connects Sling CLI to Publicis Sapient Slingshot enterprise LLM gateway. Bundles the pi coding-agent runtime.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -29,7 +29,7 @@
29
29
  "type": "git",
30
30
  "url": "git+https://pscode.lioncloud.net/psaiproducts/slingcli.git"
31
31
  },
32
- "slingVersion": "2.4.20260522-1",
32
+ "slingVersion": "2.4.20260522-2",
33
33
  "dependencies": {
34
34
  "@earendil-works/pi-tui": "file:../.sling-pack/earendil-works-pi-tui-0.75.4.tgz",
35
35
  "@earendil-works/pi-ai": "file:../.sling-pack/earendil-works-pi-ai-0.75.4.tgz",