@xcanwin/manyoyo 3.7.6 → 3.7.7
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 +1 -1
- package/bin/manyoyo.js +6 -6
- package/config.example.json +17 -17
- package/docker/manyoyo.Dockerfile +48 -48
- package/docs/README_EN.md +27 -27
- package/package.json +39 -39
package/README.md
CHANGED
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: 检测缓存,不存在则下载
|
|
@@ -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
|
@@ -195,27 +195,27 @@ Refer to `config.example.json` for all available options:
|
|
|
195
195
|
|
|
196
196
|
```json5
|
|
197
197
|
{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
198
|
+
// Container basic configuration
|
|
199
|
+
"containerName": "myy-dev", // Default container name
|
|
200
|
+
"hostPath": "/path/to/project", // Default host working directory
|
|
201
|
+
"containerPath": "/path/to/project", // Default container working directory
|
|
202
|
+
"imageName": "localhost/xcanwin/manyoyo", // Default image name
|
|
203
|
+
"imageVersion": "1.6.4-full", // Default image version
|
|
204
|
+
"containerMode": "common", // Container nesting mode (common, dind, sock)
|
|
205
|
+
|
|
206
|
+
// Environment variable configuration
|
|
207
|
+
"envFile": [
|
|
208
|
+
"claude" // Corresponds to ~/.manyoyo/env/claude.env
|
|
209
|
+
],
|
|
210
|
+
"env": [], // Default environment variables array
|
|
211
|
+
|
|
212
|
+
// Other configuration
|
|
213
|
+
"volumes": [], // Default volume mounts array
|
|
214
|
+
"shellPrefix": "", // Default command prefix
|
|
215
|
+
"shell": "", // Default execute command
|
|
216
|
+
"yolo": "", // Default YOLO mode (c, gm, cx, oc)
|
|
217
|
+
"quiet": [], // Default quiet options array (supports ["tip", "cmd"] format)
|
|
218
|
+
"imageBuildArgs": [] // Default image build arguments
|
|
219
219
|
}
|
|
220
220
|
```
|
|
221
221
|
|
|
@@ -235,8 +235,8 @@ mkdir -p ~/.manyoyo/
|
|
|
235
235
|
|
|
236
236
|
cat > ~/.manyoyo/manyoyo.json << 'EOF'
|
|
237
237
|
{
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
"imageName": "localhost/xcanwin/manyoyo",
|
|
239
|
+
"imageVersion": "1.6.4-full"
|
|
240
240
|
}
|
|
241
241
|
EOF
|
|
242
242
|
```
|
|
@@ -248,10 +248,10 @@ mkdir -p ~/.manyoyo/run/
|
|
|
248
248
|
|
|
249
249
|
cat > ~/.manyoyo/run/c.json << 'EOF'
|
|
250
250
|
{
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
"envFile": [
|
|
252
|
+
"anthropic_[claudecode]_claudecode" // Automatically loads ~/.manyoyo/env/claude.env
|
|
253
|
+
],
|
|
254
|
+
"yolo": "c"
|
|
255
255
|
}
|
|
256
256
|
EOF
|
|
257
257
|
|
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.7",
|
|
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
|
}
|