@pasko70/pibo 1.16.0 → 1.16.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.
Files changed (37) hide show
  1. package/dist/apps/chat/model-catalog.js +2 -0
  2. package/dist/apps/{context-files-ui/assets/dist-CZOCrCg8.js → chat-ui/assets/dist-BISHtc7t.js} +1 -1
  3. package/dist/apps/{context-files-ui/assets/dist-BZscbUy_.js → chat-ui/assets/dist-CGlkj4C3.js} +1 -1
  4. package/dist/apps/chat-ui/assets/{dist-D4pAJPG3.js → dist-CNZT1Z0L.js} +1 -1
  5. package/dist/apps/chat-ui/assets/{dist-DCr1bDLp.js → dist-CsgWBaSD.js} +1 -1
  6. package/dist/apps/chat-ui/assets/{dist-ClTBuMxL.js → dist-DDJJ8GK-.js} +1 -1
  7. package/dist/apps/{context-files-ui/assets/dist-B8GCRy-W.js → chat-ui/assets/dist-DXkRuRed.js} +1 -1
  8. package/dist/apps/{context-files-ui/assets/dist-CFbqQ7A8.js → chat-ui/assets/dist-DltoBBze.js} +1 -1
  9. package/dist/apps/chat-ui/assets/{dist-4-l8R83g.js → dist-DoMBxyQP.js} +1 -1
  10. package/dist/apps/chat-ui/assets/{dist-DbW63bQx.js → dist-I7cqk1W9.js} +1 -1
  11. package/dist/apps/chat-ui/assets/{dist-DyeQntkx.js → dist-gWAQGdkD.js} +1 -1
  12. package/dist/apps/chat-ui/assets/index-CiKRTg5a.js +237 -0
  13. package/dist/apps/chat-ui/index.html +1 -1
  14. package/dist/apps/chat-vscode-web/assets/index-JHIrxu8c.js +41 -0
  15. package/dist/apps/chat-vscode-web/index.html +1 -1
  16. package/dist/apps/{chat-ui/assets/dist-D_inCXoq.js → context-files-ui/assets/dist-B7gXtTZC.js} +1 -1
  17. package/dist/apps/{chat-ui/assets/dist-BKc5qFOn.js → context-files-ui/assets/dist-BD262Ouw.js} +1 -1
  18. package/dist/apps/context-files-ui/assets/{dist-C3bTw5ib.js → dist-BKuGdcnX.js} +1 -1
  19. package/dist/apps/context-files-ui/assets/{dist-D_65A0Jm.js → dist-C-Jm45P4.js} +1 -1
  20. package/dist/apps/{chat-ui/assets/dist-B9-pH_ss.js → context-files-ui/assets/dist-CHdx1Jri.js} +1 -1
  21. package/dist/apps/context-files-ui/assets/{dist-dXgL1mFo.js → dist-CULMH-fB.js} +1 -1
  22. package/dist/apps/context-files-ui/assets/{dist-DsVkw0QH.js → dist-Cjq6RWEt.js} +1 -1
  23. package/dist/apps/{chat-ui/assets/dist-CfT2OdUN.js → context-files-ui/assets/dist-CntqFySz.js} +1 -1
  24. package/dist/apps/context-files-ui/assets/{dist-4oHMVqMd.js → dist-DxEGebCR.js} +1 -1
  25. package/dist/apps/context-files-ui/assets/{dist-D9wOh84K.js → dist-kPuQud7t.js} +1 -1
  26. package/dist/apps/context-files-ui/assets/index-DZWsbuvg.js +202 -0
  27. package/dist/apps/context-files-ui/index.html +1 -1
  28. package/dist/apps/vscode-artifacts/latest.vsix +0 -0
  29. package/dist/apps/vscode-artifacts/{pibo-vscode-ext-1.16.0.vsix → pibo-vscode-ext-1.16.1.vsix} +0 -0
  30. package/dist/core/runtime.js +2 -0
  31. package/dist/plugins/builtin.js +1 -0
  32. package/dist/providers/openai-compat.js +6 -1
  33. package/dist/providers/qwen-token-plan.js +67 -0
  34. package/package.json +1 -1
  35. package/dist/apps/chat-ui/assets/index-CMTOlTY9.js +0 -473
  36. package/dist/apps/chat-vscode-web/assets/index-BeTXIfmQ.js +0 -275
  37. package/dist/apps/context-files-ui/assets/index-DiJwk6ni.js +0 -438
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Pibo Context Files</title>
7
- <script type="module" crossorigin src="/apps/context-files/assets/index-DiJwk6ni.js"></script>
7
+ <script type="module" crossorigin src="/apps/context-files/assets/index-DZWsbuvg.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/apps/context-files/assets/dist-D1KyNDg5.js">
9
9
  <link rel="stylesheet" crossorigin href="/apps/context-files/assets/index-Cs4XQITe.css">
10
10
  </head>
@@ -22,6 +22,7 @@ import { DEFAULT_USER_TIMEZONE } from "./user-settings.js";
22
22
  import { registerMiniMaxProvider } from "../providers/minimax.js";
23
23
  import { registerGlmProvider } from "../providers/glm.js";
24
24
  import { registerOpenAiGpt56Models } from "../providers/openai-gpt56.js";
25
+ import { registerQwenTokenPlanProvider } from "../providers/qwen-token-plan.js";
25
26
  import { PIBO_APP_CONTEXT } from "../app-context.js";
26
27
  import { createRuntimeToolDefinition } from "../tools/runtime/tool.js";
27
28
  import { RuntimeSessionRegistry } from "../tools/runtime/registry.js";
@@ -291,6 +292,7 @@ export async function createPiboRuntime(options = {}) {
291
292
  registerOpenAiGpt56Models(services.modelRegistry);
292
293
  registerMiniMaxProvider(services.modelRegistry);
293
294
  registerGlmProvider(services.modelRegistry);
295
+ registerQwenTokenPlanProvider(services.modelRegistry);
294
296
  const ownsLocalRuntimeRegistry = options.runtimeToolController === undefined && profile.tools.some(isEnabledRuntimeTool);
295
297
  const localRuntimeRegistry = ownsLocalRuntimeRegistry ? new RuntimeSessionRegistry({ cwd: runtimeCwd }) : undefined;
296
298
  const runtimeToolController = options.runtimeToolController
@@ -22,6 +22,7 @@ const LOGIN_PROVIDERS = [
22
22
  { id: "openai-codex", name: "OpenAI (ChatGPT Plus/Pro)", authMethods: ["device_code"] },
23
23
  { id: "openai", name: "OpenAI API", authMethods: ["api_key"] },
24
24
  { id: "anthropic", name: "Anthropic", authMethods: ["api_key"] },
25
+ { id: "qwen-token-plan", name: "Qwen Token Plan", authMethods: ["api_key"] },
25
26
  { id: "kimi-coding", name: "Kimi for Coding", authMethods: ["api_key"] },
26
27
  { id: "google", name: "Google Gemini", authMethods: ["api_key"] },
27
28
  { id: "groq", name: "Groq", authMethods: ["api_key"] },
@@ -8,6 +8,8 @@ export function buildOpenAiCompatConfig(spec, baseModels = []) {
8
8
  api: OPENAI_COMPLETIONS_API,
9
9
  baseUrl: spec.baseUrl,
10
10
  reasoning: Boolean(model.reasoning),
11
+ thinkingLevelMap: model.thinkingLevelMap ? { ...model.thinkingLevelMap } : undefined,
12
+ compat: model.compat ? { ...model.compat } : undefined,
11
13
  input: [...model.input],
12
14
  cost: { ...model.cost },
13
15
  contextWindow: model.contextWindow,
@@ -19,6 +21,8 @@ export function buildOpenAiCompatConfig(spec, baseModels = []) {
19
21
  api: OPENAI_COMPLETIONS_API,
20
22
  baseUrl: spec.baseUrl,
21
23
  reasoning: model.reasoning ?? false,
24
+ thinkingLevelMap: model.thinkingLevelMap ? { ...model.thinkingLevelMap } : undefined,
25
+ compat: model.compat ? { ...model.compat } : undefined,
22
26
  input: [...model.input],
23
27
  cost: { ...model.cost },
24
28
  contextWindow: model.contextWindow,
@@ -30,9 +34,10 @@ export function buildOpenAiCompatConfig(spec, baseModels = []) {
30
34
  for (const entry of customEntries)
31
35
  byId.set(entry.id, entry);
32
36
  return {
37
+ name: spec.name,
33
38
  baseUrl: spec.baseUrl,
34
39
  api: OPENAI_COMPLETIONS_API,
35
- apiKey: spec.apiKeyEnv,
40
+ apiKey: `$${spec.apiKeyEnv}`,
36
41
  models: [...byId.values()],
37
42
  };
38
43
  }
@@ -0,0 +1,67 @@
1
+ import { OPENAI_COMPLETIONS_API, registerOpenAiCompatProvider, resetOpenAiCompatProviderRegistration, unregisterOpenAiCompatProvider, } from "./openai-compat.js";
2
+ export const QWEN_TOKEN_PLAN_PROVIDER_ID = "qwen-token-plan";
3
+ export const QWEN_TOKEN_PLAN_PROVIDER_NAME = "Qwen Token Plan";
4
+ export const QWEN_TOKEN_PLAN_DEFAULT_BASE_URL = "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1";
5
+ export const QWEN_TOKEN_PLAN_API_KEY_ENV = "QWEN_TOKEN_PLAN_API_KEY";
6
+ const QWEN_COMPAT = {
7
+ supportsStore: false,
8
+ supportsDeveloperRole: false,
9
+ thinkingFormat: "qwen",
10
+ maxTokensField: "max_tokens",
11
+ };
12
+ function qwenModel(id, name, input) {
13
+ return {
14
+ id,
15
+ name,
16
+ reasoning: true,
17
+ compat: QWEN_COMPAT,
18
+ contextWindow: 1_000_000,
19
+ maxTokens: 65_536,
20
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
21
+ input,
22
+ };
23
+ }
24
+ export const QWEN_TOKEN_PLAN_MODELS = [
25
+ qwenModel("qwen3.7-max", "Qwen3.7 Max", ["text"]),
26
+ qwenModel("qwen3.7-plus", "Qwen3.7 Plus", ["text", "image"]),
27
+ qwenModel("qwen3.6-plus", "Qwen3.6 Plus", ["text", "image"]),
28
+ qwenModel("qwen3.6-flash", "Qwen3.6 Flash", ["text", "image"]),
29
+ ];
30
+ function resolveBaseUrl() {
31
+ const envOverride = process.env.PIBO_QWEN_TOKEN_PLAN_BASE_URL;
32
+ return envOverride && envOverride.length > 0
33
+ ? envOverride
34
+ : QWEN_TOKEN_PLAN_DEFAULT_BASE_URL;
35
+ }
36
+ function buildQwenTokenPlanSpec() {
37
+ return {
38
+ id: QWEN_TOKEN_PLAN_PROVIDER_ID,
39
+ name: QWEN_TOKEN_PLAN_PROVIDER_NAME,
40
+ baseUrl: resolveBaseUrl(),
41
+ apiKeyEnv: QWEN_TOKEN_PLAN_API_KEY_ENV,
42
+ models: QWEN_TOKEN_PLAN_MODELS,
43
+ };
44
+ }
45
+ export function isQwenTokenPlanProvider(provider) {
46
+ return provider === QWEN_TOKEN_PLAN_PROVIDER_ID;
47
+ }
48
+ export function findQwenTokenPlanModel(modelRegistry, model) {
49
+ if (!model?.provider || !model.id)
50
+ return undefined;
51
+ if (!isQwenTokenPlanProvider(model.provider))
52
+ return undefined;
53
+ return modelRegistry.find(model.provider, model.id);
54
+ }
55
+ export function registerQwenTokenPlanProvider(modelRegistry) {
56
+ return registerOpenAiCompatProvider(modelRegistry, buildQwenTokenPlanSpec(), { baseModels: [] });
57
+ }
58
+ export function unregisterQwenTokenPlanProvider(modelRegistry) {
59
+ unregisterOpenAiCompatProvider(modelRegistry, QWEN_TOKEN_PLAN_PROVIDER_ID);
60
+ }
61
+ export function resetQwenTokenPlanProviderRegistration() {
62
+ resetOpenAiCompatProviderRegistration();
63
+ }
64
+ export function getDefaultQwenTokenPlanModels() {
65
+ return QWEN_TOKEN_PLAN_MODELS;
66
+ }
67
+ export { OPENAI_COMPLETIONS_API };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pasko70/pibo",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  "packages/workflows",