@psnext/slingcli 2.4.20260527-3 → 2.4.20260528-1
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/bin/sling.js +17 -26
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +39 -5
- package/node_modules/@nodable/entities/package.json +1 -1
- package/node_modules/@nodable/entities/src/EntityDecoder.js +1 -1
- package/node_modules/@nodable/entities/src/entities.js +0 -18
- package/package.json +2 -2
- package/slingshot/index.js +163 -163
package/bin/sling.js
CHANGED
|
@@ -116,9 +116,8 @@ function shouldSkipAutoInstall(argv) {
|
|
|
116
116
|
return false;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
function
|
|
120
|
-
|
|
121
|
-
return isTruthyFlag(process.env.SKIP_SLING_PACKAGE_UPDATE_CHECK);
|
|
119
|
+
function shouldUpdateDefaultPackage(argv) {
|
|
120
|
+
return argv.includes("--update-package");
|
|
122
121
|
}
|
|
123
122
|
|
|
124
123
|
function hasUpdateRequest(argv) {
|
|
@@ -134,7 +133,7 @@ function stripSlingWrapperFlags(argv) {
|
|
|
134
133
|
// which does not recognize them.
|
|
135
134
|
return argv.filter(
|
|
136
135
|
(arg) =>
|
|
137
|
-
arg !== "--
|
|
136
|
+
arg !== "--update-package" &&
|
|
138
137
|
arg !== "-y" &&
|
|
139
138
|
arg !== "--yes",
|
|
140
139
|
);
|
|
@@ -165,7 +164,7 @@ function syncBundledSkills() {
|
|
|
165
164
|
async function checkAndInstallPackages(argv = process.argv.slice(2)) {
|
|
166
165
|
if (shouldSkipAutoInstall(argv)) return;
|
|
167
166
|
|
|
168
|
-
const configPath = path.resolve(__dirname, "../sling-default-packages.json");
|
|
167
|
+
const configPath = IS_DEV ? path.resolve(__dirname, "./sling-default-packages.json") : path.resolve(__dirname, "../sling-default-packages.json");
|
|
169
168
|
if (!existsSync(configPath)) return;
|
|
170
169
|
|
|
171
170
|
let installed = new Set();
|
|
@@ -195,7 +194,7 @@ async function checkAndInstallPackages(argv = process.argv.slice(2)) {
|
|
|
195
194
|
console.log(`✓ Removed ${u}`);
|
|
196
195
|
} catch (err) {
|
|
197
196
|
console.error(`✗ Failed to remove ${u}:`, err.message);
|
|
198
|
-
console.error(`
|
|
197
|
+
console.error(`You may need to manually remove it with: sling remove ${u}`);
|
|
199
198
|
}
|
|
200
199
|
}
|
|
201
200
|
|
|
@@ -203,26 +202,18 @@ async function checkAndInstallPackages(argv = process.argv.slice(2)) {
|
|
|
203
202
|
for (const u of unsupported) installed.delete(u);
|
|
204
203
|
|
|
205
204
|
const config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
206
|
-
const
|
|
205
|
+
const updateDefaultPackage = shouldUpdateDefaultPackage(argv);
|
|
207
206
|
|
|
208
|
-
if (
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
console.log(`✓ Updated ${pkg}`);
|
|
218
|
-
} catch (err) {
|
|
219
|
-
console.error(`✗ Failed to update ${pkg}:`, err.message);
|
|
220
|
-
console.error(` You can manually update it later with: sling update ${pkg}`);
|
|
221
|
-
}
|
|
207
|
+
if (updateDefaultPackage) {
|
|
208
|
+
try {
|
|
209
|
+
// Update extension packages only. Running one update command here keeps
|
|
210
|
+
// wrapper/package-manager behavior consistent with manual `sling update`.
|
|
211
|
+
await runCommand(process.execPath, [__filename, "update", "--extensions"]);
|
|
212
|
+
console.log("✓ Updated installed packages");
|
|
213
|
+
} catch (err) {
|
|
214
|
+
console.error("✗ Failed to update installed packages:", err.message);
|
|
215
|
+
console.error("You can manually update them later with: sling update --extensions");
|
|
222
216
|
}
|
|
223
|
-
} else {
|
|
224
|
-
console.log("Skipping default package updates and installs (--skip-pkg-update).");
|
|
225
|
-
return;
|
|
226
217
|
}
|
|
227
218
|
const packages = (config.packages || []).filter((p) => {
|
|
228
219
|
const source = typeof p === "object" && p !== null ? p.source : p;
|
|
@@ -240,7 +231,7 @@ async function checkAndInstallPackages(argv = process.argv.slice(2)) {
|
|
|
240
231
|
console.log(`✓ Installed ${pkg}`);
|
|
241
232
|
} catch (err) {
|
|
242
233
|
console.error(`✗ Failed to install ${pkg}:`, err.message);
|
|
243
|
-
console.error(`
|
|
234
|
+
console.error(`You can manually install it later with: sling install ${pkg}`);
|
|
244
235
|
}
|
|
245
236
|
}
|
|
246
237
|
} catch (err) {
|
|
@@ -396,7 +387,7 @@ async function run() {
|
|
|
396
387
|
setGlobalDispatcher(new EnvHttpProxyAgent({ bodyTimeout: 0, headersTimeout: 0 }));
|
|
397
388
|
await productionOnly(checkForUpdate, rawArgs);
|
|
398
389
|
syncBundledSkills();
|
|
399
|
-
await
|
|
390
|
+
await checkAndInstallPackages(rawArgs);
|
|
400
391
|
setBedrockProviderModule(bedrockProviderModule);
|
|
401
392
|
let args = applyNoEnv(stripSlingWrapperFlags(rawArgs));
|
|
402
393
|
args = await promptInstallScopeIfNeeded(args);
|
|
@@ -7620,6 +7620,23 @@ export const MODELS = {
|
|
|
7620
7620
|
contextWindow: 262144,
|
|
7621
7621
|
maxTokens: 65536,
|
|
7622
7622
|
},
|
|
7623
|
+
"mimo-v2.5-free": {
|
|
7624
|
+
id: "mimo-v2.5-free",
|
|
7625
|
+
name: "MiMo V2.5 Free",
|
|
7626
|
+
api: "openai-completions",
|
|
7627
|
+
provider: "opencode",
|
|
7628
|
+
baseUrl: "https://opencode.ai/zen/v1",
|
|
7629
|
+
reasoning: true,
|
|
7630
|
+
input: ["text", "image"],
|
|
7631
|
+
cost: {
|
|
7632
|
+
input: 0,
|
|
7633
|
+
output: 0,
|
|
7634
|
+
cacheRead: 0,
|
|
7635
|
+
cacheWrite: 0,
|
|
7636
|
+
},
|
|
7637
|
+
contextWindow: 1000000,
|
|
7638
|
+
maxTokens: 128000,
|
|
7639
|
+
},
|
|
7623
7640
|
"minimax-m2.5": {
|
|
7624
7641
|
id: "minimax-m2.5",
|
|
7625
7642
|
name: "MiniMax M2.5",
|
|
@@ -9287,7 +9304,7 @@ export const MODELS = {
|
|
|
9287
9304
|
cacheRead: 0,
|
|
9288
9305
|
cacheWrite: 0,
|
|
9289
9306
|
},
|
|
9290
|
-
contextWindow:
|
|
9307
|
+
contextWindow: 262144,
|
|
9291
9308
|
maxTokens: 8192,
|
|
9292
9309
|
},
|
|
9293
9310
|
"minimax/minimax-m2.7": {
|
|
@@ -9749,6 +9766,23 @@ export const MODELS = {
|
|
|
9749
9766
|
contextWindow: 262144,
|
|
9750
9767
|
maxTokens: 262142,
|
|
9751
9768
|
},
|
|
9769
|
+
"moonshotai/kimi-k2.6:free": {
|
|
9770
|
+
id: "moonshotai/kimi-k2.6:free",
|
|
9771
|
+
name: "MoonshotAI: Kimi K2.6 (free)",
|
|
9772
|
+
api: "openai-completions",
|
|
9773
|
+
provider: "openrouter",
|
|
9774
|
+
baseUrl: "https://openrouter.ai/api/v1",
|
|
9775
|
+
reasoning: true,
|
|
9776
|
+
input: ["text", "image"],
|
|
9777
|
+
cost: {
|
|
9778
|
+
input: 0,
|
|
9779
|
+
output: 0,
|
|
9780
|
+
cacheRead: 0,
|
|
9781
|
+
cacheWrite: 0,
|
|
9782
|
+
},
|
|
9783
|
+
contextWindow: 262144,
|
|
9784
|
+
maxTokens: 4096,
|
|
9785
|
+
},
|
|
9752
9786
|
"nex-agi/deepseek-v3.1-nex-n1": {
|
|
9753
9787
|
id: "nex-agi/deepseek-v3.1-nex-n1",
|
|
9754
9788
|
name: "Nex AGI: DeepSeek V3.1 Nex N1",
|
|
@@ -11878,13 +11912,13 @@ export const MODELS = {
|
|
|
11878
11912
|
reasoning: true,
|
|
11879
11913
|
input: ["text"],
|
|
11880
11914
|
cost: {
|
|
11881
|
-
input: 0.
|
|
11882
|
-
output: 0.
|
|
11883
|
-
cacheRead: 0.
|
|
11915
|
+
input: 0.063,
|
|
11916
|
+
output: 0.21,
|
|
11917
|
+
cacheRead: 0.020999999999999998,
|
|
11884
11918
|
cacheWrite: 0,
|
|
11885
11919
|
},
|
|
11886
11920
|
contextWindow: 262144,
|
|
11887
|
-
maxTokens:
|
|
11921
|
+
maxTokens: 4096,
|
|
11888
11922
|
},
|
|
11889
11923
|
"thedrummer/rocinante-12b": {
|
|
11890
11924
|
id: "thedrummer/rocinante-12b",
|
|
@@ -293,7 +293,7 @@ export default class EntityDecoder {
|
|
|
293
293
|
decode(str) {
|
|
294
294
|
if (typeof str !== 'string' || str.length === 0) return str;
|
|
295
295
|
//TODO: check if needed
|
|
296
|
-
|
|
296
|
+
if (str.indexOf('&') === -1) return str; // fast path — no entities at all
|
|
297
297
|
|
|
298
298
|
const original = str;
|
|
299
299
|
const chunks = [];
|
|
@@ -34,7 +34,6 @@ export const BASIC_LATIN = {
|
|
|
34
34
|
num: '#',
|
|
35
35
|
dollar: '$',
|
|
36
36
|
percent: '%',
|
|
37
|
-
amp: '&',
|
|
38
37
|
ast: '*',
|
|
39
38
|
commat: '@',
|
|
40
39
|
lowbar: '_',
|
|
@@ -466,9 +465,6 @@ export const CYRILLIC = {
|
|
|
466
465
|
*/
|
|
467
466
|
export const MATH = {
|
|
468
467
|
plus: '+',
|
|
469
|
-
minus: '−',
|
|
470
|
-
mnplus: '∓',
|
|
471
|
-
mp: '∓',
|
|
472
468
|
pm: '±',
|
|
473
469
|
times: '×',
|
|
474
470
|
div: '÷',
|
|
@@ -541,10 +537,6 @@ export const MATH = {
|
|
|
541
537
|
bumpe: '≏',
|
|
542
538
|
bumpeq: '≏',
|
|
543
539
|
HumpEqual: '≏',
|
|
544
|
-
dotminus: '∸',
|
|
545
|
-
minusd: '∸',
|
|
546
|
-
plusdo: '∔',
|
|
547
|
-
dotplus: '∔',
|
|
548
540
|
le: '≤',
|
|
549
541
|
LessEqual: '≤',
|
|
550
542
|
ge: '≥',
|
|
@@ -661,7 +653,6 @@ export const MATH_ADVANCED = {
|
|
|
661
653
|
wreath: '≀',
|
|
662
654
|
nsime: '≄',
|
|
663
655
|
nsimeq: '≄',
|
|
664
|
-
nsimeq: '≄',
|
|
665
656
|
ncong: '≇',
|
|
666
657
|
simne: '≆',
|
|
667
658
|
ncongdot: '⩭̸',
|
|
@@ -778,10 +769,6 @@ export const ARROWS = {
|
|
|
778
769
|
mapsto: '↦',
|
|
779
770
|
mapstodown: '↧',
|
|
780
771
|
crarr: '↵',
|
|
781
|
-
nwarrow: '↖',
|
|
782
|
-
nearrow: '↗',
|
|
783
|
-
searrow: '↘',
|
|
784
|
-
swarrow: '↙',
|
|
785
772
|
nleftarrow: '↚',
|
|
786
773
|
nleftrightarrow: '↮',
|
|
787
774
|
nrightarrow: '↛',
|
|
@@ -822,7 +809,6 @@ export const ARROWS = {
|
|
|
822
809
|
ldrushar: '⥋',
|
|
823
810
|
rdldhar: '⥩',
|
|
824
811
|
lrhard: '⥭',
|
|
825
|
-
rlhar: '⇌',
|
|
826
812
|
uharr: '↾',
|
|
827
813
|
uharl: '↿',
|
|
828
814
|
dharr: '⇂',
|
|
@@ -838,7 +824,6 @@ export const ARROWS = {
|
|
|
838
824
|
nhArr: '⇎',
|
|
839
825
|
nlarr: '↚',
|
|
840
826
|
nlArr: '⇍',
|
|
841
|
-
nrarr: '↛',
|
|
842
827
|
nrArr: '⇏',
|
|
843
828
|
larrb: '⇤',
|
|
844
829
|
LeftArrowBar: '⇤',
|
|
@@ -1000,7 +985,6 @@ export const PUNCTUATION = {
|
|
|
1000
985
|
DiacriticalDot: '˙',
|
|
1001
986
|
DiacriticalDoubleAcute: '˝',
|
|
1002
987
|
grave: '`',
|
|
1003
|
-
acute: '´',
|
|
1004
988
|
};
|
|
1005
989
|
|
|
1006
990
|
/**
|
|
@@ -1014,7 +998,6 @@ export const CURRENCY = {
|
|
|
1014
998
|
yen: '¥',
|
|
1015
999
|
euro: '€',
|
|
1016
1000
|
dollar: '$',
|
|
1017
|
-
euro: '€',
|
|
1018
1001
|
fnof: 'ƒ',
|
|
1019
1002
|
inr: '₹',
|
|
1020
1003
|
af: '؋',
|
|
@@ -1114,7 +1097,6 @@ export const MISC_SYMBOLS = {
|
|
|
1114
1097
|
Vdash: '⊩',
|
|
1115
1098
|
dashv: '⊣',
|
|
1116
1099
|
vDash: '⊨',
|
|
1117
|
-
Vdash: '⊩',
|
|
1118
1100
|
Vvdash: '⊪',
|
|
1119
1101
|
nvdash: '⊬',
|
|
1120
1102
|
nvDash: '⊭',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@psnext/slingcli",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.20260528-1",
|
|
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.
|
|
32
|
+
"slingVersion": "2.4.20260528-1",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@earendil-works/pi-tui": "file:../.sling-pack/earendil-works-pi-tui-0.75.5.tgz",
|
|
35
35
|
"@earendil-works/pi-ai": "file:../.sling-pack/earendil-works-pi-ai-0.75.5.tgz",
|