@diffexai/diffex 0.2.1 → 0.2.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +5 -725
  3. package/THIRD-PARTY-NOTICES.txt +6 -2
  4. package/dist/config.d.ts +2 -0
  5. package/dist/config.js +2 -0
  6. package/dist/core/prompt-templates.js +6 -1
  7. package/dist/core/system-prompt.js +9 -8
  8. package/dist/node_modules/@diffexai/diffex-agent-core/THIRD-PARTY-NOTICES.txt +6 -2
  9. package/dist/node_modules/@diffexai/diffex-agent-core/distribution-components.json +4 -4
  10. package/dist/node_modules/@diffexai/diffex-agent-core/distribution-files.json +1 -1
  11. package/dist/node_modules/@diffexai/diffex-agent-core/package.json +1 -6
  12. package/dist/node_modules/@diffexai/diffex-ai/THIRD-PARTY-NOTICES.txt +6 -2
  13. package/dist/node_modules/@diffexai/diffex-ai/dist/cli.js +0 -0
  14. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/.manifest.json +1 -1
  15. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/openrouter.json +1 -1
  16. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  17. package/dist/node_modules/@diffexai/diffex-ai/distribution-components.json +3 -3
  18. package/dist/node_modules/@diffexai/diffex-ai/distribution-files.json +4 -4
  19. package/dist/node_modules/@diffexai/diffex-ai/package.json +1 -6
  20. package/dist/node_modules/@diffexai/diffex-client/THIRD-PARTY-NOTICES.txt +6 -2
  21. package/dist/node_modules/@diffexai/diffex-client/distribution-components.json +3 -3
  22. package/dist/node_modules/@diffexai/diffex-client/distribution-files.json +1 -1
  23. package/dist/node_modules/@diffexai/diffex-client/package.json +1 -6
  24. package/dist/node_modules/@diffexai/diffex-harness-state/THIRD-PARTY-NOTICES.txt +6 -2
  25. package/dist/node_modules/@diffexai/diffex-harness-state/distribution-components.json +2 -2
  26. package/dist/node_modules/@diffexai/diffex-harness-state/distribution-files.json +1 -1
  27. package/dist/node_modules/@diffexai/diffex-harness-state/package.json +1 -6
  28. package/dist/node_modules/@diffexai/diffex-protocol/THIRD-PARTY-NOTICES.txt +6 -2
  29. package/dist/node_modules/@diffexai/diffex-protocol/distribution-components.json +2 -2
  30. package/dist/node_modules/@diffexai/diffex-protocol/distribution-files.json +1 -1
  31. package/dist/node_modules/@diffexai/diffex-protocol/package.json +1 -6
  32. package/dist/node_modules/@diffexai/diffex-telemetry/THIRD-PARTY-NOTICES.txt +6 -2
  33. package/dist/node_modules/@diffexai/diffex-telemetry/distribution-components.json +2 -2
  34. package/dist/node_modules/@diffexai/diffex-telemetry/distribution-files.json +1 -1
  35. package/dist/node_modules/@diffexai/diffex-telemetry/package.json +1 -6
  36. package/dist/node_modules/@diffexai/diffex-tui/THIRD-PARTY-NOTICES.txt +6 -2
  37. package/dist/node_modules/@diffexai/diffex-tui/distribution-components.json +2 -2
  38. package/dist/node_modules/@diffexai/diffex-tui/distribution-files.json +1 -1
  39. package/dist/node_modules/@diffexai/diffex-tui/package.json +1 -6
  40. package/distribution-components.json +13 -13
  41. package/distribution-files.json +36 -64
  42. package/docs/installation.md +118 -0
  43. package/docs/quickstart.md +7 -24
  44. package/npm-shrinkwrap.json +2 -2
  45. package/package.json +36 -10
  46. package/release/distribution-manifest.json +7 -6
  47. package/release/install-package-lock.json +5 -5
  48. package/release/install-package.json +2 -2
  49. package/NOTICE +0 -6
  50. package/dist/node_modules/@diffexai/diffex-agent-core/NOTICE +0 -6
  51. package/dist/node_modules/@diffexai/diffex-ai/NOTICE +0 -6
  52. package/dist/node_modules/@diffexai/diffex-client/NOTICE +0 -6
  53. package/dist/node_modules/@diffexai/diffex-harness-state/NOTICE +0 -6
  54. package/dist/node_modules/@diffexai/diffex-protocol/NOTICE +0 -6
  55. package/dist/node_modules/@diffexai/diffex-telemetry/NOTICE +0 -6
  56. package/dist/node_modules/@diffexai/diffex-tui/NOTICE +0 -6
  57. package/docs/development.md +0 -71
  58. package/docs/docs.json +0 -160
  59. package/docs/images/doom-extension.png +0 -0
  60. package/docs/images/exy.png +0 -0
  61. package/docs/index.md +0 -78
  62. package/docs/invocation-traces.md +0 -82
  63. package/docs/termux.md +0 -127
  64. package/docs/windows.md +0 -17
@@ -1,5 +1,9 @@
1
- Diffex modifications copyright 2026 Luntraa, Inc.
2
- Pi-derived portions retain the complete MIT terms in LICENSE.
1
+ Diffex
2
+ Copyright 2026 Luntraa, Inc.
3
+
4
+ Where this distribution contains Pi Agent Harness-derived portions,
5
+ those portions retain their MIT terms and copyright notice in LICENSE.
6
+ The Apache-2.0 package declaration does not replace third-party terms.
3
7
 
4
8
  ===== highlight.js@11.9.0 (BSD-3-Clause) =====
5
9
  BSD 3-Clause License
package/dist/config.d.ts CHANGED
@@ -67,6 +67,8 @@ export declare const APP_NAME: string;
67
67
  export declare const APP_TITLE: string;
68
68
  export declare const CONFIG_DIR_NAME: string;
69
69
  export declare const VERSION: string;
70
+ /** Set by distribution staging, independently of the user's NODE_ENV. */
71
+ export declare const IS_PRODUCTION_DISTRIBUTION: boolean;
70
72
  export declare const ENV_AGENT_DIR = "DIFFEX_CODING_AGENT_DIR";
71
73
  export declare const ENV_SESSION_DIR = "DIFFEX_CODING_AGENT_SESSION_DIR";
72
74
  export declare function expandTildePath(path: string): string;
package/dist/config.js CHANGED
@@ -393,6 +393,8 @@ export const APP_NAME = diffexConfigName || "diffex";
393
393
  export const APP_TITLE = diffexConfigName ? APP_NAME : "Diffex";
394
394
  export const CONFIG_DIR_NAME = pkg.diffexConfig?.configDir || ".diffex";
395
395
  export const VERSION = pkg.version || "0.0.0";
396
+ /** Set by distribution staging, independently of the user's NODE_ENV. */
397
+ export const IS_PRODUCTION_DISTRIBUTION = isBunBinary || pkg.diffexConfig?.production === true;
396
398
  export const ENV_AGENT_DIR = "DIFFEX_CODING_AGENT_DIR";
397
399
  export const ENV_SESSION_DIR = "DIFFEX_CODING_AGENT_SESSION_DIR";
398
400
  export function expandTildePath(path) {
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync, statSync } from "fs";
2
2
  import { basename, dirname, join, resolve, sep } from "path";
3
- import { CONFIG_DIR_NAME } from "../config.js";
3
+ import { CONFIG_DIR_NAME, IS_PRODUCTION_DISTRIBUTION } from "../config.js";
4
4
  import { parseFrontmatter } from "../utils/frontmatter.js";
5
5
  import { resolvePath } from "../utils/paths.js";
6
6
  import { createSyntheticSourceInfo } from "./source-info.js";
@@ -83,6 +83,8 @@ function loadTemplateFromFile(filePath, sourceInfo) {
83
83
  const rawContent = readFileSync(filePath, "utf-8");
84
84
  const { frontmatter, body } = parseFrontmatter(rawContent);
85
85
  const name = basename(filePath).replace(/\.md$/, "");
86
+ if (IS_PRODUCTION_DISTRIBUTION && name === "cl")
87
+ return null;
86
88
  // Get description from frontmatter or first non-empty line
87
89
  let description = frontmatter.description || "";
88
90
  if (!description) {
@@ -225,6 +227,9 @@ export function expandPromptTemplate(text, templates) {
225
227
  if (!match)
226
228
  return text;
227
229
  const templateName = match[1];
230
+ if (IS_PRODUCTION_DISTRIBUTION && templateName === "cl") {
231
+ throw new Error("/cl is unavailable in production Diffex installations.");
232
+ }
228
233
  const argsString = match[2] ?? "";
229
234
  const template = templates.find((t) => t.name === templateName);
230
235
  if (template) {
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * System prompt construction and project context loading
3
3
  */
4
- import { getDocsPath, getExamplesPath, getReadmePath } from "../config.js";
4
+ import { existsSync } from "node:fs";
5
+ import { getDocsPath, getExamplesPath } from "../config.js";
5
6
  import { formatSkillsForPrompt } from "./skills.js";
6
7
  /** Build the system prompt with tools, guidelines, and context */
7
8
  export function buildSystemPrompt(options) {
@@ -37,7 +38,6 @@ export function buildSystemPrompt(options) {
37
38
  return prompt;
38
39
  }
39
40
  // Get absolute paths to documentation and examples
40
- const readmePath = getReadmePath();
41
41
  const docsPath = getDocsPath();
42
42
  const examplesPath = getExamplesPath();
43
43
  // Build tools list based on selected tools.
@@ -85,13 +85,14 @@ Guidelines:
85
85
  ${guidelines}
86
86
 
87
87
  Diffex documentation (read only when the user asks about Diffex itself, its SDK, extensions, themes, skills, or TUI):
88
- - Main documentation: ${readmePath}
88
+ ${existsSync(docsPath)
89
+ ? `- Product website: https://diffex.ai/
89
90
  - Additional docs: ${docsPath}
90
- - Examples: ${examplesPath} (extensions, custom tools, SDK)
91
- - When reading Diffex docs or examples, resolve docs/... under Additional docs and examples/... under Examples, not the current working directory
92
- - When asked about: extensions (docs/extensions.md, examples/extensions/), themes (docs/themes.md), skills (docs/skills.md), prompt templates (docs/prompt-templates.md), TUI components (docs/tui.md), keybindings (docs/keybindings.md), SDK integrations (docs/sdk.md), custom providers (docs/custom-provider.md), adding models (docs/models.md), Diffex packages (docs/packages.md), environment variables (docs/environment-variables.md)
93
- - When working on Diffex topics, read the docs and examples, and follow .md cross-references before implementing
94
- - Always read Diffex.md files completely and follow links to related docs (e.g., tui.md for TUI API details)`;
91
+ ${existsSync(examplesPath) ? `- Examples: ${examplesPath} (extensions, custom tools, SDK)\n- When reading Diffex docs or examples, resolve docs/... under Additional docs and examples/... under Examples, not the current working directory` : "- Resolve docs/... under Additional docs, not the current working directory; example source files are not included in this installation"}
92
+ - When asked about: extensions (docs/extensions.md), themes (docs/themes.md), skills (docs/skills.md), prompt templates (docs/prompt-templates.md), TUI components (docs/tui.md), keybindings (docs/keybindings.md), SDK integrations (docs/sdk.md), custom providers (docs/custom-provider.md), adding models (docs/models.md), Diffex packages (docs/packages.md), environment variables (docs/environment-variables.md)
93
+ - When working on Diffex topics, read the docs and follow .md cross-references before implementing
94
+ - Always read Diffex.md files completely and follow links to related docs (e.g., tui.md for TUI API details)`
95
+ : "- Product website: https://diffex.ai/"}`;
95
96
  if (appendSection) {
96
97
  prompt += appendSection;
97
98
  }
@@ -1,2 +1,6 @@
1
- Diffex modifications copyright 2026 Luntraa, Inc.
2
- Pi-derived portions retain the complete MIT terms in LICENSE.
1
+ Diffex
2
+ Copyright 2026 Luntraa, Inc.
3
+
4
+ Where this distribution contains Pi Agent Harness-derived portions,
5
+ those portions retain their MIT terms and copyright notice in LICENSE.
6
+ The Apache-2.0 package declaration does not replace third-party terms.
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-agent-core",
4
- "version": "0.2.1",
5
- "sourceCommit": "f2a661684af35fe6e9a3209c6f9720144e1fd423",
4
+ "version": "0.2.2",
5
+ "sourceCommit": "dbe80a9dfe730c776a99be1ea9c439fe6b3cc023",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -10,12 +10,12 @@
10
10
  },
11
11
  {
12
12
  "name": "@diffexai/diffex-ai",
13
- "version": "^0.2.1",
13
+ "version": "^0.2.2",
14
14
  "distribution": "resolved separately by package manager; not bundled in this npm tarball"
15
15
  },
16
16
  {
17
17
  "name": "@diffexai/diffex-telemetry",
18
- "version": "^0.2.1",
18
+ "version": "^0.2.2",
19
19
  "distribution": "resolved separately by package manager; not bundled in this npm tarball"
20
20
  },
21
21
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "f2a661684af35fe6e9a3209c6f9720144e1fd423",
2
+ "sourceCommit": "dbe80a9dfe730c776a99be1ea9c439fe6b3cc023",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-agent-core",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "General-purpose agent with transport abstraction, state management, and attachment support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,11 +29,6 @@
29
29
  ],
30
30
  "author": "Mario Zechner",
31
31
  "license": "Apache-2.0",
32
- "repository": {
33
- "type": "git",
34
- "url": "git+https://github.com/diffexai/diffex.git",
35
- "directory": "packages/agent"
36
- },
37
32
  "engines": {
38
33
  "node": ">=22.19.0"
39
34
  },
@@ -1,2 +1,6 @@
1
- Diffex modifications copyright 2026 Luntraa, Inc.
2
- Pi-derived portions retain the complete MIT terms in LICENSE.
1
+ Diffex
2
+ Copyright 2026 Luntraa, Inc.
3
+
4
+ Where this distribution contains Pi Agent Harness-derived portions,
5
+ those portions retain their MIT terms and copyright notice in LICENSE.
6
+ The Apache-2.0 package declaration does not replace third-party terms.
File without changes
@@ -1 +1 @@
1
- {"schemaVersion":3,"generatedAt":"2026-09-13T14:38:12.454Z","structureHash":"c9b9d585746e127a26089c1a10848e04b14ea0f8769b2fc7bc24c55b4895d80c","files":{"amazon-bedrock.json":"8e0a8b7d5fe92926e402f0e690e19be3ea4366309c4ca2836fff420b380f73d5","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"6937a397c6c7cf654990d072734efad023b652b294b04961d43a5835d7d08156","azure-openai-responses.json":"787ba62322c46fbc69bc1fcb7c7cfc100b8f74211c72adf9766b6dbf5eae0c41","baseten.json":"c7cf9a7e7e6bee9c53005acf4706c25f954adaa64a9058535fb7e5b1d6920852","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"b558491cae89bc61ef95017e22a1ac3a1bd430d79ab779fb77391ca0a6b7849b","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"0dcc807a4e5827b488c6ceac87884ff6e735e01cf4f2ddfec9dd812e6fde041b","fireworks.json":"8fc7c3887a4a8e49451cbe4f57fdb147b889d9cd5a1480c46eaaa6b95c299afc","github-copilot.json":"37cfc1da3a6814e37e14c565ed0a1e41f2eb513b10aa8f11ac18f27fa392308c","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","kimi-coding.json":"ba42a26a69e5cb2122c0b384ba572efae93f42239ad86f26c2b7320a14aa75a1","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"e3a109306644bf2f2fa38fece50b2d3ce1dbe3b87b1f1b9e2d70cce7eb5c0ea1","moonshotai-cn.json":"63f77de8782dce6a8d4649b6075ee04c9732863ae85561e0867871220c558bde","moonshotai.json":"2a8dfb97eb905e991c22081dc09bd4a61c05b7fa9ac0d5c72d6930f601f490f1","nvidia.json":"d9fbf18e811fcf04521c3dad7bd8a31c6716938611de392548319acc560c1e0c","openai-codex.json":"4a73818291987693fcb53e9e61b4be3429ffd78b3f64ea877a34c5f9928c89e1","openai.json":"6fa1954abd6c5b301620a02a57412bd60bbfdf20465b9a3eb4d113f88dfb8f7b","opencode-go.json":"31c4434316c8a1b7fcc637b25f1147dd44da946a0b932ca10fb5ac594261dad7","opencode.json":"aa960b0665d65bf2b441ffdb727dbb640074d5232470c06df237f03b5efeacb0","openrouter.json":"14f7cd6992411e94e60e61b200b3aaad6d4371b60d11da6f1546db96cd2c1fbe","qwen-token-plan-cn.json":"e62dde34edb603376a1dc60b2a74a9c2605b9e81d81df55cc259796c45aa4793","qwen-token-plan-individual.json":"0e1578a5c0e11d65644bb42d1d6efee5af97a55a4881d0421ab68bd970d4d4ef","qwen-token-plan.json":"fe914313157ff41ab2f71977f0fdcfedb3a8a205d1092e3180f6799e5d7942fd","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","vercel-ai-gateway.json":"e6e9eb2c2da25c85d428dab15765c5c539d73003a7acd432b238c86c5a398121","xai.json":"282838b0546d63106c81f1703cdf5ed31ebfe0c5f13a4bec0d590472cbbe03f2","xiaomi-token-plan-ams.json":"7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3","xiaomi-token-plan-cn.json":"684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200","xiaomi-token-plan-sgp.json":"b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963","xiaomi.json":"810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448","zai-coding-cn.json":"abf4cbc22507b9d545842072b5e34bce230025fc20f7b1cc67db3782c1dc4b56","zai.json":"089af736a622b0a25e417493819f4e174884afba43235c5a1f17814057875627"}}
1
+ {"schemaVersion":3,"generatedAt":"2026-09-14T01:38:43.061Z","structureHash":"c9b9d585746e127a26089c1a10848e04b14ea0f8769b2fc7bc24c55b4895d80c","files":{"amazon-bedrock.json":"8e0a8b7d5fe92926e402f0e690e19be3ea4366309c4ca2836fff420b380f73d5","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"6937a397c6c7cf654990d072734efad023b652b294b04961d43a5835d7d08156","azure-openai-responses.json":"787ba62322c46fbc69bc1fcb7c7cfc100b8f74211c72adf9766b6dbf5eae0c41","baseten.json":"c7cf9a7e7e6bee9c53005acf4706c25f954adaa64a9058535fb7e5b1d6920852","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"b558491cae89bc61ef95017e22a1ac3a1bd430d79ab779fb77391ca0a6b7849b","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"0dcc807a4e5827b488c6ceac87884ff6e735e01cf4f2ddfec9dd812e6fde041b","fireworks.json":"8fc7c3887a4a8e49451cbe4f57fdb147b889d9cd5a1480c46eaaa6b95c299afc","github-copilot.json":"37cfc1da3a6814e37e14c565ed0a1e41f2eb513b10aa8f11ac18f27fa392308c","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","kimi-coding.json":"ba42a26a69e5cb2122c0b384ba572efae93f42239ad86f26c2b7320a14aa75a1","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"e3a109306644bf2f2fa38fece50b2d3ce1dbe3b87b1f1b9e2d70cce7eb5c0ea1","moonshotai-cn.json":"63f77de8782dce6a8d4649b6075ee04c9732863ae85561e0867871220c558bde","moonshotai.json":"2a8dfb97eb905e991c22081dc09bd4a61c05b7fa9ac0d5c72d6930f601f490f1","nvidia.json":"d9fbf18e811fcf04521c3dad7bd8a31c6716938611de392548319acc560c1e0c","openai-codex.json":"4a73818291987693fcb53e9e61b4be3429ffd78b3f64ea877a34c5f9928c89e1","openai.json":"6fa1954abd6c5b301620a02a57412bd60bbfdf20465b9a3eb4d113f88dfb8f7b","opencode-go.json":"31c4434316c8a1b7fcc637b25f1147dd44da946a0b932ca10fb5ac594261dad7","opencode.json":"aa960b0665d65bf2b441ffdb727dbb640074d5232470c06df237f03b5efeacb0","openrouter.json":"54df34bb4328e36b52560e2979bc9da3dcf0501093bd3c82cbbb3d7227eb48bd","qwen-token-plan-cn.json":"e62dde34edb603376a1dc60b2a74a9c2605b9e81d81df55cc259796c45aa4793","qwen-token-plan-individual.json":"0e1578a5c0e11d65644bb42d1d6efee5af97a55a4881d0421ab68bd970d4d4ef","qwen-token-plan.json":"fe914313157ff41ab2f71977f0fdcfedb3a8a205d1092e3180f6799e5d7942fd","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","vercel-ai-gateway.json":"f9ff06709a675af6723ee6983bf55143d21e1d24b52cd35b16e95834574c6667","xai.json":"282838b0546d63106c81f1703cdf5ed31ebfe0c5f13a4bec0d590472cbbe03f2","xiaomi-token-plan-ams.json":"7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3","xiaomi-token-plan-cn.json":"684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200","xiaomi-token-plan-sgp.json":"b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963","xiaomi.json":"810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448","zai-coding-cn.json":"abf4cbc22507b9d545842072b5e34bce230025fc20f7b1cc67db3782c1dc4b56","zai.json":"089af736a622b0a25e417493819f4e174884afba43235c5a1f17814057875627"}}