@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.
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +27 -8
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +11 -14
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/README.md +3 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/clipboard.linux-x64-gnu.node +0 -0
- package/node_modules/@mariozechner/{clipboard-darwin-arm64 → clipboard-linux-x64-gnu}/package.json +8 -5
- package/package.json +2 -2
- package/slingshot/index.js +78 -78
- package/node_modules/@mariozechner/clipboard-darwin-arm64/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-darwin-arm64/clipboard.darwin-arm64.node +0 -0
- package/node_modules/@mariozechner/clipboard-darwin-universal/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-darwin-universal/clipboard.darwin-universal.node +0 -0
- package/node_modules/@mariozechner/clipboard-darwin-universal/package.json +0 -19
|
@@ -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
|
|
11896
|
+
cacheRead: 0,
|
|
11878
11897
|
cacheWrite: 0,
|
|
11879
11898
|
},
|
|
11880
11899
|
contextWindow: 262144,
|
|
11881
|
-
maxTokens:
|
|
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.
|
|
11893
|
-
output:
|
|
11911
|
+
input: 0.1875,
|
|
11912
|
+
output: 1.125,
|
|
11894
11913
|
cacheRead: 0,
|
|
11895
|
-
cacheWrite: 0.
|
|
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.
|
|
11927
|
-
output: 1.
|
|
11945
|
+
input: 0.325,
|
|
11946
|
+
output: 1.95,
|
|
11928
11947
|
cacheRead: 0,
|
|
11929
|
-
cacheWrite: 0.
|
|
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 || "
|
|
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
|
-
|
|
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
|
-
|
|
1034
|
+
return null;
|
|
1039
1035
|
const payload = JSON.parse(atob(parts[1]));
|
|
1040
1036
|
const accountId = payload?.[JWT_CLAIM_PATH]?.chatgpt_account_id;
|
|
1041
|
-
|
|
1042
|
-
throw new Error("No account ID in token");
|
|
1043
|
-
return accountId;
|
|
1037
|
+
return accountId || null;
|
|
1044
1038
|
}
|
|
1045
1039
|
catch {
|
|
1046
|
-
|
|
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
|
-
|
|
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);
|
|
Binary file
|
package/node_modules/@mariozechner/{clipboard-darwin-arm64 → clipboard-linux-x64-gnu}/package.json
RENAMED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@mariozechner/clipboard-
|
|
2
|
+
"name": "@mariozechner/clipboard-linux-x64-gnu",
|
|
3
3
|
"version": "0.3.6",
|
|
4
4
|
"os": [
|
|
5
|
-
"
|
|
5
|
+
"linux"
|
|
6
6
|
],
|
|
7
7
|
"cpu": [
|
|
8
|
-
"
|
|
8
|
+
"x64"
|
|
9
9
|
],
|
|
10
|
-
"main": "clipboard.
|
|
10
|
+
"main": "clipboard.linux-x64-gnu.node",
|
|
11
11
|
"files": [
|
|
12
|
-
"clipboard.
|
|
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-
|
|
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-
|
|
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",
|