@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 CHANGED
@@ -116,9 +116,8 @@ function shouldSkipAutoInstall(argv) {
116
116
  return false;
117
117
  }
118
118
 
119
- function shouldSkipDefaultPackageUpdates(argv) {
120
- if (argv.includes("--skip-pkg-update")) return true;
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 !== "--skip-pkg-update" &&
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(` You may need to manually remove it with: sling remove ${u}`);
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 skipDefaultPackageUpdate = shouldSkipDefaultPackageUpdates(argv);
205
+ const updateDefaultPackage = shouldUpdateDefaultPackage(argv);
207
206
 
208
- if (!skipDefaultPackageUpdate) {
209
- const updatePackages = (config.packages || []).filter((p) => {
210
- const source = typeof p === "object" && p !== null ? p.source : p;
211
- return installed.has(source);
212
- });
213
- for (const pkg of updatePackages) {
214
- console.log(`Updating ${pkg}...`);
215
- try {
216
- await runCommand(process.execPath, [__filename, "update", pkg]);
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(` You can manually install it later with: sling install ${pkg}`);
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 productionOnly(checkAndInstallPackages, rawArgs);
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: 204800,
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.06599999999999999,
11882
- output: 0.26,
11883
- cacheRead: 0.029,
11915
+ input: 0.063,
11916
+ output: 0.21,
11917
+ cacheRead: 0.020999999999999998,
11884
11918
  cacheWrite: 0,
11885
11919
  },
11886
11920
  contextWindow: 262144,
11887
- maxTokens: 262144,
11921
+ maxTokens: 4096,
11888
11922
  },
11889
11923
  "thedrummer/rocinante-12b": {
11890
11924
  id: "thedrummer/rocinante-12b",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodable/entities",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Entity parser for XML, HTML, External entites with security and NCR control",
5
5
  "main": "./src/index.js",
6
6
  "type": "module",
@@ -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
- //if (str.indexOf('&') === -1) return str; // fast path — no entities at all
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.20260527-3",
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.20260527-3",
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",