jinzd-ai-cli 0.1.42 → 0.1.44

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/CLAUDE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 项目简介
4
4
 
5
- 一个跨平台的 REPL 风格 AI 对话工具,支持多个主流 AI 提供商(Claude、Gemini、DeepSeek、智谱清言、Kimi),
5
+ 一个跨平台的 REPL 风格 AI 对话工具,支持多个主流 AI 提供商(OpenAI、Claude、Gemini、DeepSeek、智谱清言、Kimi),
6
6
  带有 **AI 工具调用(Agentic)** 能力,支持执行 bash 命令、读写文件、运行交互式程序、流式生成大文档。
7
7
  代理支持(`proxy` 配置字段 + 环境变量),Gemini 完整支持(2.5 Pro/Flash,array items schema 修复)。
8
8
  **MCP 协议支持**:可接入外部 MCP 服务器,自动发现并注册工具,无缝融入 agentic 循环。
@@ -31,6 +31,7 @@ src/
31
31
  │ ├── openai-compatible.ts # DeepSeek/Zhipu/Kimi 共用基类;实现 chatWithTools + buildToolResultMessages
32
32
  │ ├── claude.ts # Anthropic SDK provider
33
33
  │ ├── gemini.ts # Google Generative AI provider(role: assistant → model)
34
+ │ ├── openai.ts # OpenAI provider(GPT-5.4/5/4.1/4o/o3/o4-mini)
34
35
  │ ├── deepseek.ts / zhipu.ts / kimi.ts # 继承 OpenAICompatibleProvider,只声明 defaultBaseUrl 和 info
35
36
  ├── config/
36
37
  │ ├── schema.ts # Zod schema(含 timeouts / customBaseUrls / defaultModels)
@@ -158,6 +159,7 @@ MCP 工具名格式:`mcp__<serverId>__<toolName>`,如 `mcp__filesystem__read
158
159
  ## 环境变量(优先级高于配置文件)
159
160
 
160
161
  ```
162
+ AICLI_API_KEY_OPENAI OpenAI API Key
161
163
  AICLI_API_KEY_CLAUDE Claude API Key
162
164
  AICLI_API_KEY_GEMINI Gemini API Key
163
165
  AICLI_API_KEY_DEEPSEEK DeepSeek API Key
@@ -8,7 +8,7 @@ import { platform } from "os";
8
8
  import chalk from "chalk";
9
9
 
10
10
  // src/core/constants.ts
11
- var VERSION = "0.1.42";
11
+ var VERSION = "0.1.44";
12
12
  var APP_NAME = "ai-cli";
13
13
  var CONFIG_DIR_NAME = ".aicli";
14
14
  var CONFIG_FILE_NAME = "config.json";
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  SUBAGENT_MAX_ROUNDS_LIMIT,
30
30
  VERSION,
31
31
  runTestsTool
32
- } from "./chunk-GVILO6BX.js";
32
+ } from "./chunk-SRI4AVIJ.js";
33
33
 
34
34
  // src/index.ts
35
35
  import { program } from "commander";
@@ -176,6 +176,7 @@ var ENV_KEY_MAP = {
176
176
  deepseek: "AICLI_API_KEY_DEEPSEEK",
177
177
  zhipu: "AICLI_API_KEY_ZHIPU",
178
178
  kimi: "AICLI_API_KEY_KIMI",
179
+ openai: "AICLI_API_KEY_OPENAI",
179
180
  "google-search": "AICLI_API_KEY_GOOGLESEARCH"
180
181
  };
181
182
  var EnvLoader = class {
@@ -1179,6 +1180,8 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
1179
1180
  // src/providers/zhipu.ts
1180
1181
  var ZhipuProvider = class extends OpenAICompatibleProvider {
1181
1182
  defaultBaseUrl = "https://open.bigmodel.cn/api/paas/v4";
1183
+ // GLM-5 等深度思考模型生成长内容需要较长时间,默认 5 分钟
1184
+ defaultTimeout = 3e5;
1182
1185
  info = {
1183
1186
  id: "zhipu",
1184
1187
  displayName: "\u667A\u8C31\u6E05\u8A00 (GLM)",
@@ -1476,6 +1479,104 @@ var KimiProvider = class extends OpenAICompatibleProvider {
1476
1479
  }
1477
1480
  };
1478
1481
 
1482
+ // src/providers/openai.ts
1483
+ var OpenAIProvider = class extends OpenAICompatibleProvider {
1484
+ defaultBaseUrl = "https://api.openai.com/v1";
1485
+ info = {
1486
+ id: "openai",
1487
+ displayName: "OpenAI",
1488
+ defaultModel: "gpt-4o",
1489
+ apiKeyEnvVar: "AICLI_API_KEY_OPENAI",
1490
+ requiresApiKey: true,
1491
+ baseUrl: this.defaultBaseUrl,
1492
+ models: [
1493
+ // GPT-5.4 系列(最新旗舰,1.05M 上下文)
1494
+ {
1495
+ id: "gpt-5.4",
1496
+ displayName: "GPT-5.4",
1497
+ contextWindow: 105e4,
1498
+ supportsStreaming: true
1499
+ },
1500
+ {
1501
+ id: "gpt-5.4-pro",
1502
+ displayName: "GPT-5.4 Pro",
1503
+ contextWindow: 105e4,
1504
+ supportsStreaming: true
1505
+ },
1506
+ // GPT-5 系列(400K 上下文)
1507
+ {
1508
+ id: "gpt-5",
1509
+ displayName: "GPT-5",
1510
+ contextWindow: 4e5,
1511
+ supportsStreaming: true
1512
+ },
1513
+ {
1514
+ id: "gpt-5-mini",
1515
+ displayName: "GPT-5 Mini",
1516
+ contextWindow: 4e5,
1517
+ supportsStreaming: true
1518
+ },
1519
+ {
1520
+ id: "gpt-5-nano",
1521
+ displayName: "GPT-5 Nano",
1522
+ contextWindow: 4e5,
1523
+ supportsStreaming: true
1524
+ },
1525
+ // GPT-4.1 系列(1M 上下文)
1526
+ {
1527
+ id: "gpt-4.1",
1528
+ displayName: "GPT-4.1",
1529
+ contextWindow: 1048576,
1530
+ supportsStreaming: true
1531
+ },
1532
+ {
1533
+ id: "gpt-4.1-mini",
1534
+ displayName: "GPT-4.1 Mini",
1535
+ contextWindow: 1048576,
1536
+ supportsStreaming: true
1537
+ },
1538
+ {
1539
+ id: "gpt-4.1-nano",
1540
+ displayName: "GPT-4.1 Nano",
1541
+ contextWindow: 1048576,
1542
+ supportsStreaming: true
1543
+ },
1544
+ // GPT-4o 系列(128K 上下文)
1545
+ {
1546
+ id: "gpt-4o",
1547
+ displayName: "GPT-4o",
1548
+ contextWindow: 128e3,
1549
+ supportsStreaming: true
1550
+ },
1551
+ {
1552
+ id: "gpt-4o-mini",
1553
+ displayName: "GPT-4o Mini",
1554
+ contextWindow: 128e3,
1555
+ supportsStreaming: true
1556
+ },
1557
+ // 推理模型(200K 上下文)
1558
+ {
1559
+ id: "o3",
1560
+ displayName: "o3",
1561
+ contextWindow: 2e5,
1562
+ supportsStreaming: true
1563
+ },
1564
+ {
1565
+ id: "o3-mini",
1566
+ displayName: "o3 Mini",
1567
+ contextWindow: 2e5,
1568
+ supportsStreaming: true
1569
+ },
1570
+ {
1571
+ id: "o4-mini",
1572
+ displayName: "o4 Mini",
1573
+ contextWindow: 2e5,
1574
+ supportsStreaming: true
1575
+ }
1576
+ ]
1577
+ };
1578
+ };
1579
+
1479
1580
  // src/providers/custom.ts
1480
1581
  var CustomProvider = class extends OpenAICompatibleProvider {
1481
1582
  defaultBaseUrl;
@@ -1516,7 +1617,8 @@ var BUILT_IN_PROVIDERS = [
1516
1617
  GeminiProvider,
1517
1618
  DeepSeekProvider,
1518
1619
  ZhipuProvider,
1519
- KimiProvider
1620
+ KimiProvider,
1621
+ OpenAIProvider
1520
1622
  ];
1521
1623
  var ProviderRegistry = class {
1522
1624
  providers = /* @__PURE__ */ new Map();
@@ -2053,8 +2155,8 @@ var Renderer = class {
2053
2155
  console.log(label("\u63CF\u8FF0") + chalk2.white(DESCRIPTION));
2054
2156
  console.log(label("\u4F5C\u8005") + theme.warning(AUTHOR) + theme.dim(" <" + AUTHOR_EMAIL + ">"));
2055
2157
  console.log(HR);
2056
- console.log(theme.dim(" \u652F\u6301\u7684 Provider\uFF086\u4E2A\uFF09\uFF1A"));
2057
- console.log(theme.dim(" DeepSeek \xB7 Kimi (Moonshot) \xB7 Claude (Anthropic)"));
2158
+ console.log(theme.dim(" \u652F\u6301\u7684 Provider\uFF087\u4E2A\uFF09\uFF1A"));
2159
+ console.log(theme.dim(" OpenAI \xB7 DeepSeek \xB7 Kimi (Moonshot) \xB7 Claude (Anthropic)"));
2058
2160
  console.log(theme.dim(" Gemini (Google) \xB7 \u667A\u8C31\u6E05\u8A00 \xB7 \u81EA\u5B9A\u4E49 OpenAI \u517C\u5BB9"));
2059
2161
  console.log(HR);
2060
2162
  const mcpToolCount = mcpInfo?.tools ?? 0;
@@ -3786,7 +3888,7 @@ ${hint}` : "")
3786
3888
  description: "Run project tests and show structured report",
3787
3889
  usage: "/test [command|filter]",
3788
3890
  async execute(args, _ctx) {
3789
- const { executeTests } = await import("./run-tests-P5BWRR7N.js");
3891
+ const { executeTests } = await import("./run-tests-JGXZ7PGK.js");
3790
3892
  const argStr = args.join(" ").trim();
3791
3893
  let testArgs = {};
3792
3894
  if (argStr) {
@@ -6884,7 +6986,8 @@ var PROVIDERS = [
6884
6986
  { value: "gemini", name: "Gemini (Google)" },
6885
6987
  { value: "deepseek", name: "DeepSeek" },
6886
6988
  { value: "zhipu", name: "\u667A\u8C31\u6E05\u8A00 (GLM)" },
6887
- { value: "kimi", name: "Kimi (Moonshot AI)" }
6989
+ { value: "kimi", name: "Kimi (Moonshot AI)" },
6990
+ { value: "openai", name: "OpenAI" }
6888
6991
  ];
6889
6992
  function maskKey(key) {
6890
6993
  if (key.length <= 10) return "****";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-GVILO6BX.js";
5
+ } from "./chunk-SRI4AVIJ.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.1.42",
3
+ "version": "0.1.44",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",