@wu529778790/open-im 1.11.8-beta.30 → 1.11.8-beta.31
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/README.md +23 -5
- package/dist/config/types.d.ts +2 -1
- package/dist/config-web-page-i18n.d.ts +4 -0
- package/dist/config-web-page-i18n.js +4 -0
- package/dist/config-web-payload.d.ts +1 -0
- package/dist/config-web-payload.js +2 -0
- package/dist/config.js +8 -3
- package/dist/shared/ai-task.js +1 -1
- package/package.json +1 -1
- package/web/dist/assets/{index-CbAuy3si.js → index-DZiLymq8.js} +12 -12
- package/web/dist/index.html +1 -1
package/README.md
CHANGED
|
@@ -88,12 +88,30 @@ open-im start
|
|
|
88
88
|
| `/review` | 代码审查 |
|
|
89
89
|
| `/explain` | 解释项目结构 |
|
|
90
90
|
|
|
91
|
-
###
|
|
91
|
+
### 权限与确认
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
Claude 使用 Agent SDK 集成,open-im 默认不替 Claude 做额外的允许/拒绝协议。Claude 需要用户确认时,会按它自己的原生交互语义发问;你在 IM 里回复选项、确认或补充说明即可继续同一个会话。
|
|
94
|
+
|
|
95
|
+
如果你希望 Claude 也进入自动执行模式,可以在 Web 控制台的 **AI 工具配置 → Claude Code → 跳过 Claude 权限确认** 打开,或在配置文件里设置:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"tools": {
|
|
100
|
+
"claude": {
|
|
101
|
+
"skipPermissions": true
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
也可以用环境变量临时覆盖:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
OPEN_IM_SKIP_PERMISSIONS=true open-im start # 跳过权限确认
|
|
111
|
+
OPEN_IM_SKIP_PERMISSIONS=false open-im start # 使用 Claude 原生确认
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Codex、CodeBuddy、OpenCode 仍保持原来的自动执行默认行为。
|
|
97
115
|
|
|
98
116
|
## 会话接力
|
|
99
117
|
|
package/dist/config/types.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export interface Config {
|
|
|
38
38
|
*/
|
|
39
39
|
claudeSessionIdleTtlMinutes: number;
|
|
40
40
|
claudeModel?: string;
|
|
41
|
-
/** 是否跳过 AI
|
|
41
|
+
/** 是否跳过 AI 工具的权限确认。未配置时由具体工具决定默认行为。 */
|
|
42
42
|
skipPermissions?: boolean;
|
|
43
43
|
logDir: string;
|
|
44
44
|
logLevel: LogLevel;
|
|
@@ -180,6 +180,7 @@ export interface FilePlatformClawbot {
|
|
|
180
180
|
export interface FileToolClaude {
|
|
181
181
|
cliPath?: string;
|
|
182
182
|
workDir?: string;
|
|
183
|
+
/** Claude SDK 是否跳过原生权限确认。默认 false,保留 Claude 自身确认流程。 */
|
|
183
184
|
skipPermissions?: boolean;
|
|
184
185
|
/** 空闲会话回收间隔(分钟),0 表示关闭 */
|
|
185
186
|
sessionIdleTtlMinutes?: number;
|
|
@@ -130,6 +130,8 @@ export declare const PAGE_TEXTS: {
|
|
|
130
130
|
readonly claudeAuthToken: "ANTHROPIC_AUTH_TOKEN";
|
|
131
131
|
readonly claudeBaseUrl: "ANTHROPIC_BASE_URL";
|
|
132
132
|
readonly claudeModel: "ANTHROPIC_MODEL";
|
|
133
|
+
readonly claudeSkipPermissions: "Skip Claude permission prompts";
|
|
134
|
+
readonly claudeSkipPermissionsTip: "Off by default. Claude SDK will ask for permission in its native flow; open-im just forwards the conversation. Turn this on only if you want bypassPermissions-style automation.";
|
|
133
135
|
readonly claudeProxy: "Proxy (optional)";
|
|
134
136
|
readonly hookPort: "Hook port";
|
|
135
137
|
readonly logLevel: "Log level";
|
|
@@ -355,6 +357,8 @@ export declare const PAGE_TEXTS: {
|
|
|
355
357
|
readonly codexApiKey: "OPENAI_API_KEY";
|
|
356
358
|
readonly codexApiKeyTip: "设置 Codex 使用的 OpenAI API Key。也可以在下方编辑 auth 文件。";
|
|
357
359
|
readonly claudeConfigPath: "配置文件位置";
|
|
360
|
+
readonly claudeSkipPermissions: "跳过 Claude 权限确认";
|
|
361
|
+
readonly claudeSkipPermissionsTip: "默认关闭。Claude SDK 会按自己的原生流程请求权限,open-im 只负责转发对话。只有你想要 bypassPermissions 式自动执行时才打开。";
|
|
358
362
|
readonly claudeProxy: "代理(可选)";
|
|
359
363
|
readonly hookPort: "Hook 端口";
|
|
360
364
|
readonly logLevel: "日志级别";
|
|
@@ -130,6 +130,8 @@ export const PAGE_TEXTS = {
|
|
|
130
130
|
claudeAuthToken: "ANTHROPIC_AUTH_TOKEN",
|
|
131
131
|
claudeBaseUrl: "ANTHROPIC_BASE_URL",
|
|
132
132
|
claudeModel: "ANTHROPIC_MODEL",
|
|
133
|
+
claudeSkipPermissions: "Skip Claude permission prompts",
|
|
134
|
+
claudeSkipPermissionsTip: "Off by default. Claude SDK will ask for permission in its native flow; open-im just forwards the conversation. Turn this on only if you want bypassPermissions-style automation.",
|
|
133
135
|
claudeProxy: "Proxy (optional)",
|
|
134
136
|
hookPort: "Hook port",
|
|
135
137
|
logLevel: "Log level",
|
|
@@ -356,6 +358,8 @@ export const PAGE_TEXTS = {
|
|
|
356
358
|
codexApiKey: "OPENAI_API_KEY",
|
|
357
359
|
codexApiKeyTip: "\u8bbe\u7f6e Codex \u4f7f\u7528\u7684 OpenAI API Key\u3002\u4e5f\u53ef\u4ee5\u5728\u4e0b\u65b9\u7f16\u8f91 auth \u6587\u4ef6\u3002",
|
|
358
360
|
claudeConfigPath: "\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e",
|
|
361
|
+
claudeSkipPermissions: "\u8df3\u8fc7 Claude \u6743\u9650\u786e\u8ba4",
|
|
362
|
+
claudeSkipPermissionsTip: "\u9ed8\u8ba4\u5173\u95ed\u3002Claude SDK \u4f1a\u6309\u81ea\u5df1\u7684\u539f\u751f\u6d41\u7a0b\u8bf7\u6c42\u6743\u9650\uff0copen-im \u53ea\u8d1f\u8d23\u8f6c\u53d1\u5bf9\u8bdd\u3002\u53ea\u6709\u4f60\u60f3\u8981 bypassPermissions \u5f0f\u81ea\u52a8\u6267\u884c\u65f6\u624d\u6253\u5f00\u3002",
|
|
359
363
|
claudeProxy: "\u4ee3\u7406\uff08\u53ef\u9009\uff09",
|
|
360
364
|
hookPort: "Hook \u7aef\u53e3",
|
|
361
365
|
logLevel: "\u65e5\u5fd7\u7ea7\u522b",
|
|
@@ -92,6 +92,7 @@ export function buildInitialPayload(file) {
|
|
|
92
92
|
claudeBaseUrl: claudeEnv.ANTHROPIC_BASE_URL ?? "",
|
|
93
93
|
claudeModel: claudeEnv.ANTHROPIC_MODEL ?? "",
|
|
94
94
|
claudeProxy: file.tools?.claude?.proxy ?? "",
|
|
95
|
+
claudeSkipPermissions: file.tools?.claude?.skipPermissions ?? false,
|
|
95
96
|
codexCliPath: file.tools?.codex?.cliPath ?? "codex",
|
|
96
97
|
codebuddyCliPath: file.tools?.codebuddy?.cliPath ?? "codebuddy",
|
|
97
98
|
opencodeCliPath: file.tools?.opencode?.cliPath ?? "opencode",
|
|
@@ -177,6 +178,7 @@ export function toFileConfig(payload, existing) {
|
|
|
177
178
|
...existing.tools?.claude,
|
|
178
179
|
workDir: clean(payload.ai.claudeWorkDir) ?? process.cwd(),
|
|
179
180
|
proxy: clean(payload.ai.claudeProxy),
|
|
181
|
+
skipPermissions: payload.ai.claudeSkipPermissions,
|
|
180
182
|
// model is now saved to ~/.claude/settings.json as env var
|
|
181
183
|
},
|
|
182
184
|
codex: {
|
package/dist/config.js
CHANGED
|
@@ -246,9 +246,14 @@ export function loadConfig() {
|
|
|
246
246
|
const opencodeCliPath = process.env.OPENCODE_CLI_PATH ?? topencode.cliPath ?? resolveWindowsCliPath(AI_TOOL_BY_ID.opencode.cliDefault ?? 'opencode');
|
|
247
247
|
const opencodeModel = process.env.OPENCODE_MODEL ?? topencode.model;
|
|
248
248
|
const claudeWorkDir = process.env.CLAUDE_WORK_DIR ?? tc.workDir ?? process.cwd();
|
|
249
|
-
const skipPermissions =
|
|
250
|
-
|
|
251
|
-
|
|
249
|
+
const skipPermissions = (() => {
|
|
250
|
+
const raw = process.env.OPEN_IM_SKIP_PERMISSIONS?.trim().toLowerCase();
|
|
251
|
+
if (raw === 'true' || raw === '1' || raw === 'yes')
|
|
252
|
+
return true;
|
|
253
|
+
if (raw === 'false' || raw === '0' || raw === 'no')
|
|
254
|
+
return false;
|
|
255
|
+
return tc.skipPermissions;
|
|
256
|
+
})();
|
|
252
257
|
const envIdleRaw = process.env.OPEN_IM_CLAUDE_SESSION_IDLE_TTL_MINUTES;
|
|
253
258
|
const envIdleParsed = envIdleRaw !== undefined && envIdleRaw !== '' ? Number.parseInt(envIdleRaw, 10) : NaN;
|
|
254
259
|
const fileIdle = tc.sessionIdleTtlMinutes;
|
package/dist/shared/ai-task.js
CHANGED
|
@@ -182,7 +182,7 @@ function buildCompletionNote(result, sessionManager, ctx) {
|
|
|
182
182
|
}
|
|
183
183
|
function buildRunOptions(config, sessionManager, ctx, aiCommand, toolAdapter) {
|
|
184
184
|
const defaultSkipPermissions = toolAdapter.interactionMode === 'native'
|
|
185
|
-
? false
|
|
185
|
+
? (config.skipPermissions ?? false)
|
|
186
186
|
: (config.skipPermissions ?? true);
|
|
187
187
|
return {
|
|
188
188
|
model: aiCommand === 'claude'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wu529778790/open-im",
|
|
3
|
-
"version": "1.11.8-beta.
|
|
3
|
+
"version": "1.11.8-beta.31",
|
|
4
4
|
"description": "Your AI coding assistant, in every chat app. Multi-platform IM bridge for Claude Code, Codex, and CodeBuddy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|