@xcanwin/manyoyo 3.7.6 → 3.7.8
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 +2 -1
- package/bin/manyoyo.js +6 -6
- package/config.example.json +17 -17
- package/docker/manyoyo.Dockerfile +49 -49
- package/docs/README_EN.md +28 -27
- package/package.json +39 -39
package/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="https://www.npmjs.com/package/@xcanwin/manyoyo"><img alt="npm" src="https://img.shields.io/npm/v/@xcanwin/manyoyo?style=flat-square" /></a>
|
|
5
5
|
<a href="https://github.com/xcanwin/manyoyo/actions/workflows/npm-publish.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/xcanwin/manyoyo/npm-publish.yml?style=flat-square" /></a>
|
|
6
|
+
<a href="https://github.com/xcanwin/manyoyo/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/badge/License-MIT-yellow.svg" /></a>
|
|
6
7
|
</p>
|
|
7
8
|
|
|
8
9
|
<p align="center">
|
|
@@ -205,7 +206,7 @@ manyoyo --ef openai_[gpt]_codex -x codex
|
|
|
205
206
|
|
|
206
207
|
// 环境变量配置
|
|
207
208
|
"envFile": [
|
|
208
|
-
|
|
209
|
+
"claude" // 对应 ~/.manyoyo/env/claude.env
|
|
209
210
|
],
|
|
210
211
|
"env": [], // 默认环境变量数组
|
|
211
212
|
|
package/bin/manyoyo.js
CHANGED
|
@@ -483,7 +483,7 @@ async function prepareBuildCache(imageTool) {
|
|
|
483
483
|
const nodeTargetPath = path.join(nodeCacheDir, shasum);
|
|
484
484
|
runCmd('curl', ['-fsSL', nodeUrl, '-o', nodeTargetPath], { stdio: 'inherit' });
|
|
485
485
|
timestamps[nodeKey] = now.toISOString();
|
|
486
|
-
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null,
|
|
486
|
+
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null, 4));
|
|
487
487
|
console.log(`${GREEN}✓ Node.js 下载完成${NC}`);
|
|
488
488
|
} catch (e) {
|
|
489
489
|
console.error(`${RED}错误: Node.js 下载失败${NC}`);
|
|
@@ -515,7 +515,7 @@ async function prepareBuildCache(imageTool) {
|
|
|
515
515
|
const srcDir = path.join(tmpDir, 'usr', 'share', 'jdtls');
|
|
516
516
|
runCmd('tar', ['-czf', jdtlsPath, '-C', srcDir, '.'], { stdio: 'inherit' });
|
|
517
517
|
timestamps[jdtlsKey] = now.toISOString();
|
|
518
|
-
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null,
|
|
518
|
+
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null, 4));
|
|
519
519
|
console.log(`${GREEN}✓ JDT LSP 下载完成${NC}`);
|
|
520
520
|
} catch (e) {
|
|
521
521
|
console.error(`${RED}错误: JDT LSP 下载失败${NC}`);
|
|
@@ -565,7 +565,7 @@ async function prepareBuildCache(imageTool) {
|
|
|
565
565
|
|
|
566
566
|
// Save timestamp immediately after successful download
|
|
567
567
|
timestamps[goplsKey] = now.toISOString();
|
|
568
|
-
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null,
|
|
568
|
+
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null, 4));
|
|
569
569
|
console.log(`${GREEN}✓ gopls 下载完成${NC}`);
|
|
570
570
|
|
|
571
571
|
// Clean up temp directory (with go clean for mod cache)
|
|
@@ -586,7 +586,7 @@ async function prepareBuildCache(imageTool) {
|
|
|
586
586
|
}
|
|
587
587
|
|
|
588
588
|
// Save timestamps
|
|
589
|
-
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null,
|
|
589
|
+
fs.writeFileSync(timestampFile, JSON.stringify(timestamps, null, 4));
|
|
590
590
|
console.log(`${GREEN}✅ 构建缓存准备完成${NC}\n`);
|
|
591
591
|
}
|
|
592
592
|
|
|
@@ -711,7 +711,7 @@ function setupCommander() {
|
|
|
711
711
|
"Vendor": "xcanwin",
|
|
712
712
|
"Version": "v1.0.0",
|
|
713
713
|
"Description": "AI Agent CLI Sandbox"
|
|
714
|
-
}, null,
|
|
714
|
+
}, null, 4));
|
|
715
715
|
process.exit(0);
|
|
716
716
|
}
|
|
717
717
|
|
|
@@ -824,7 +824,7 @@ function setupCommander() {
|
|
|
824
824
|
suffix: EXEC_COMMAND_SUFFIX
|
|
825
825
|
}
|
|
826
826
|
};
|
|
827
|
-
console.log(JSON.stringify(finalConfig, null,
|
|
827
|
+
console.log(JSON.stringify(finalConfig, null, 4));
|
|
828
828
|
process.exit(0);
|
|
829
829
|
}
|
|
830
830
|
|
package/config.example.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
2
|
+
// MANYOYO 全局配置文件,保存到 ~/.manyoyo/manyoyo.json
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
// 覆盖型参数(命令行 > 运行配置 > 全局配置)
|
|
5
|
+
"containerName": "myy-dev",
|
|
6
|
+
"hostPath": "/path/to/your/project",
|
|
7
|
+
"containerPath": "/path/to/your/project",
|
|
8
|
+
"imageName": "localhost/xcanwin/manyoyo",
|
|
9
|
+
"imageVersion": "1.6.4-full",
|
|
10
|
+
"containerMode": "common",
|
|
11
|
+
"shellPrefix": "",
|
|
12
|
+
"shell": "",
|
|
13
|
+
"yolo": "",
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
// 合并型参数(配置文件和命令行会累加)
|
|
16
|
+
"env": ["IS_SANDBOX=1"],
|
|
17
|
+
"envFile": [],
|
|
18
|
+
"volumes": [],
|
|
19
|
+
"imageBuildArgs": [],
|
|
20
|
+
"quiet": ["tip", "cmd"]
|
|
21
21
|
}
|
|
@@ -11,9 +11,9 @@ COPY ./docker/cache/ /cache/
|
|
|
11
11
|
RUN <<EOX
|
|
12
12
|
# 确定架构
|
|
13
13
|
case "$TARGETARCH" in
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
amd64) ARCH_NODE="x64"; ARCH_GO="amd64" ;;
|
|
15
|
+
arm64) ARCH_NODE="arm64"; ARCH_GO="arm64" ;;
|
|
16
|
+
*) ARCH_NODE="$TARGETARCH"; ARCH_GO="$TARGETARCH" ;;
|
|
17
17
|
esac
|
|
18
18
|
|
|
19
19
|
# Node.js: 检测缓存,不存在则下载
|
|
@@ -74,7 +74,7 @@ RUN <<EOX
|
|
|
74
74
|
apt-get update -y
|
|
75
75
|
apt-get install -y --no-install-recommends --reinstall ca-certificates openssl
|
|
76
76
|
update-ca-certificates
|
|
77
|
-
apt-get install -y --no-install-recommends curl wget net-tools iputils-ping git lsof socat ncat dnsutils \
|
|
77
|
+
apt-get install -y --no-install-recommends curl wget net-tools iputils-ping git lsof socat ncat dnsutils ssh \
|
|
78
78
|
nano jq file tree ripgrep less bc xxd \
|
|
79
79
|
tar zip unzip gzip make sqlite3 \
|
|
80
80
|
supervisor
|
|
@@ -124,13 +124,13 @@ RUN <<EOX
|
|
|
124
124
|
mkdir -p ~/.claude/plugins/marketplaces/
|
|
125
125
|
cat > ~/.claude.json <<EOF
|
|
126
126
|
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
"bypassPermissionsModeAccepted": true,
|
|
128
|
+
"hasCompletedOnboarding": true,
|
|
129
|
+
"env": {
|
|
130
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
131
|
+
"CLAUDE_CODE_HIDE_ACCOUNT_INFO": "1",
|
|
132
|
+
"DISABLE_AUTOUPDATER": "1"
|
|
133
|
+
}
|
|
134
134
|
}
|
|
135
135
|
EOF
|
|
136
136
|
GIT_SSL_NO_VERIFY=$GIT_SSL_NO_VERIFY claude plugin marketplace add anthropics/claude-plugins-official
|
|
@@ -146,22 +146,22 @@ EOF
|
|
|
146
146
|
mkdir -p ~/.gemini/
|
|
147
147
|
cat > ~/.gemini/settings.json <<EOF
|
|
148
148
|
{
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
"privacy": {
|
|
150
|
+
"usageStatisticsEnabled": false
|
|
151
|
+
},
|
|
152
|
+
"security": {
|
|
153
|
+
"auth": {
|
|
154
|
+
"selectedType": "oauth-personal"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"general": {
|
|
158
|
+
"previewFeatures": true,
|
|
159
|
+
"disableAutoUpdate": true,
|
|
160
|
+
"disableUpdateNag": true
|
|
161
|
+
},
|
|
162
|
+
"model": {
|
|
163
|
+
"name": "gemini-3-pro-preview"
|
|
155
164
|
}
|
|
156
|
-
},
|
|
157
|
-
"general": {
|
|
158
|
-
"previewFeatures": true,
|
|
159
|
-
"disableAutoUpdate": true,
|
|
160
|
-
"disableUpdateNag": true
|
|
161
|
-
},
|
|
162
|
-
"model": {
|
|
163
|
-
"name": "gemini-3-pro-preview"
|
|
164
|
-
}
|
|
165
165
|
}
|
|
166
166
|
EOF
|
|
167
167
|
;; esac
|
|
@@ -181,11 +181,11 @@ EOF
|
|
|
181
181
|
mkdir -p ~/.copilot/
|
|
182
182
|
cat > ~/.copilot/config.json <<EOF
|
|
183
183
|
{
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
184
|
+
"banner": "never",
|
|
185
|
+
"model": "gemini-3-pro-preview",
|
|
186
|
+
"render_markdown": true,
|
|
187
|
+
"screen_reader": false,
|
|
188
|
+
"theme": "auto"
|
|
189
189
|
}
|
|
190
190
|
EOF
|
|
191
191
|
;; esac
|
|
@@ -196,26 +196,26 @@ EOF
|
|
|
196
196
|
mkdir -p ~/.config/opencode/
|
|
197
197
|
cat > ~/.config/opencode/opencode.json <<EOF
|
|
198
198
|
{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
199
|
+
"\$schema": "https://opencode.ai/config.json",
|
|
200
|
+
"autoupdate": false,
|
|
201
|
+
"model": "Custom-Provider/{env:OPENAI_MODEL}",
|
|
202
|
+
"provider": {
|
|
203
|
+
"Custom-Provider": {
|
|
204
|
+
"npm": "@ai-sdk/openai-compatible",
|
|
205
|
+
"options": {
|
|
206
|
+
"baseURL": "{env:OPENAI_BASE_URL}",
|
|
207
|
+
"apiKey": "{env:OPENAI_API_KEY}",
|
|
208
|
+
"headers": {
|
|
209
|
+
"User-Agent": "opencode"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"models": {
|
|
213
|
+
"{env:OPENAI_MODEL}": {},
|
|
214
|
+
"claude-sonnet-4-5-20250929": {},
|
|
215
|
+
"gpt-5.2": {}
|
|
216
|
+
}
|
|
210
217
|
}
|
|
211
|
-
},
|
|
212
|
-
"models": {
|
|
213
|
-
"{env:OPENAI_MODEL}": {},
|
|
214
|
-
"claude-sonnet-4-5-20250929": {},
|
|
215
|
-
"gpt-5.2": {}
|
|
216
|
-
}
|
|
217
218
|
}
|
|
218
|
-
}
|
|
219
219
|
}
|
|
220
220
|
EOF
|
|
221
221
|
;; esac
|
package/docs/README_EN.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="https://www.npmjs.com/package/@xcanwin/manyoyo"><img alt="npm" src="https://img.shields.io/npm/v/@xcanwin/manyoyo?style=flat-square" /></a>
|
|
5
5
|
<a href="https://github.com/xcanwin/manyoyo/actions/workflows/npm-publish.yml"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/xcanwin/manyoyo/npm-publish.yml?style=flat-square" /></a>
|
|
6
|
+
<a href="https://github.com/xcanwin/manyoyo/blob/main/LICENSE"><img alt="license" src="https://img.shields.io/badge/License-MIT-yellow.svg" /></a>
|
|
6
7
|
</p>
|
|
7
8
|
|
|
8
9
|
<p align="center">
|
|
@@ -195,27 +196,27 @@ Refer to `config.example.json` for all available options:
|
|
|
195
196
|
|
|
196
197
|
```json5
|
|
197
198
|
{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
199
|
+
// Container basic configuration
|
|
200
|
+
"containerName": "myy-dev", // Default container name
|
|
201
|
+
"hostPath": "/path/to/project", // Default host working directory
|
|
202
|
+
"containerPath": "/path/to/project", // Default container working directory
|
|
203
|
+
"imageName": "localhost/xcanwin/manyoyo", // Default image name
|
|
204
|
+
"imageVersion": "1.6.4-full", // Default image version
|
|
205
|
+
"containerMode": "common", // Container nesting mode (common, dind, sock)
|
|
206
|
+
|
|
207
|
+
// Environment variable configuration
|
|
208
|
+
"envFile": [
|
|
209
|
+
"claude" // Corresponds to ~/.manyoyo/env/claude.env
|
|
210
|
+
],
|
|
211
|
+
"env": [], // Default environment variables array
|
|
212
|
+
|
|
213
|
+
// Other configuration
|
|
214
|
+
"volumes": [], // Default volume mounts array
|
|
215
|
+
"shellPrefix": "", // Default command prefix
|
|
216
|
+
"shell": "", // Default execute command
|
|
217
|
+
"yolo": "", // Default YOLO mode (c, gm, cx, oc)
|
|
218
|
+
"quiet": [], // Default quiet options array (supports ["tip", "cmd"] format)
|
|
219
|
+
"imageBuildArgs": [] // Default image build arguments
|
|
219
220
|
}
|
|
220
221
|
```
|
|
221
222
|
|
|
@@ -235,8 +236,8 @@ mkdir -p ~/.manyoyo/
|
|
|
235
236
|
|
|
236
237
|
cat > ~/.manyoyo/manyoyo.json << 'EOF'
|
|
237
238
|
{
|
|
238
|
-
|
|
239
|
-
|
|
239
|
+
"imageName": "localhost/xcanwin/manyoyo",
|
|
240
|
+
"imageVersion": "1.6.4-full"
|
|
240
241
|
}
|
|
241
242
|
EOF
|
|
242
243
|
```
|
|
@@ -248,10 +249,10 @@ mkdir -p ~/.manyoyo/run/
|
|
|
248
249
|
|
|
249
250
|
cat > ~/.manyoyo/run/c.json << 'EOF'
|
|
250
251
|
{
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
252
|
+
"envFile": [
|
|
253
|
+
"anthropic_[claudecode]_claudecode" // Automatically loads ~/.manyoyo/env/claude.env
|
|
254
|
+
],
|
|
255
|
+
"yolo": "c"
|
|
255
256
|
}
|
|
256
257
|
EOF
|
|
257
258
|
|
package/package.json
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
2
|
+
"name": "@xcanwin/manyoyo",
|
|
3
|
+
"version": "3.7.8",
|
|
4
|
+
"imageVersion": "1.6.5",
|
|
5
|
+
"description": "AI Agent CLI Security Sandbox",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ai", "agent", "sandbox", "docker", "cli", "container", "development"
|
|
8
|
+
],
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/xcanwin/manyoyo.git"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "xcanwin",
|
|
15
|
+
"type": "commonjs",
|
|
16
|
+
"main": "bin/manyoyo.js",
|
|
17
|
+
"bin": {
|
|
18
|
+
"manyoyo": "bin/manyoyo.js",
|
|
19
|
+
"myy": "bin/manyoyo.js"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"install-link": "npm link",
|
|
23
|
+
"test": "node bin/manyoyo.js --help"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://github.com/xcanwin/manyoyo",
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=22.0.0"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"bin/manyoyo.js",
|
|
31
|
+
"README.md",
|
|
32
|
+
"docs/README_EN.md",
|
|
33
|
+
"LICENSE",
|
|
34
|
+
"docker/manyoyo.Dockerfile",
|
|
35
|
+
"config.example.json"
|
|
36
|
+
],
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"commander": "^12.0.0",
|
|
39
|
+
"json5": "^2.2.3"
|
|
40
|
+
}
|
|
41
41
|
}
|