@newpeak/barista-cli 0.2.314 → 0.2.315
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/dist/commands/liberica/runner/__tests__/volumes.test.d.ts +2 -0
- package/dist/commands/liberica/runner/__tests__/volumes.test.d.ts.map +1 -0
- package/dist/commands/liberica/runner/__tests__/volumes.test.js +83 -0
- package/dist/commands/liberica/runner/__tests__/volumes.test.js.map +1 -0
- package/dist/commands/liberica/runner/images/add.d.ts.map +1 -1
- package/dist/commands/liberica/runner/images/add.js +17 -1
- package/dist/commands/liberica/runner/images/add.js.map +1 -1
- package/dist/commands/liberica/runner/images/edit.d.ts.map +1 -1
- package/dist/commands/liberica/runner/images/edit.js +17 -1
- package/dist/commands/liberica/runner/images/edit.js.map +1 -1
- package/dist/commands/liberica/runner/jobs/add.d.ts.map +1 -1
- package/dist/commands/liberica/runner/jobs/add.js +17 -1
- package/dist/commands/liberica/runner/jobs/add.js.map +1 -1
- package/dist/commands/liberica/runner/volumes.d.ts +38 -0
- package/dist/commands/liberica/runner/volumes.d.ts.map +1 -0
- package/dist/commands/liberica/runner/volumes.js +80 -0
- package/dist/commands/liberica/runner/volumes.js.map +1 -0
- package/package.json +1 -1
- package/skills/barista-cli/data/commands.json +3 -2
- package/skills/barista-cli/data/commands.yaml +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumes.test.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/__tests__/volumes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
2
|
+
import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { JsonOptionError, resolveJsonOption, resolveVolumesJson } from '../volumes.js';
|
|
6
|
+
describe('runner JSON option resolution (Issue 20261103221)', () => {
|
|
7
|
+
let dir;
|
|
8
|
+
let validFile;
|
|
9
|
+
let brokenFile;
|
|
10
|
+
beforeAll(() => {
|
|
11
|
+
dir = mkdtempSync(join(tmpdir(), 'barista-volumes-'));
|
|
12
|
+
validFile = join(dir, 'volumes.json');
|
|
13
|
+
brokenFile = join(dir, 'broken.json');
|
|
14
|
+
writeFileSync(validFile, '[{"source":"liberica-ws-1","target":"/workspace","mode":"rw"}]', 'utf-8');
|
|
15
|
+
writeFileSync(brokenFile, '[{source:liberica-ws-1,target:/workspace}]', 'utf-8');
|
|
16
|
+
});
|
|
17
|
+
afterAll(() => {
|
|
18
|
+
rmSync(dir, { recursive: true, force: true });
|
|
19
|
+
});
|
|
20
|
+
it('returns normalized JSON for a valid inline value', () => {
|
|
21
|
+
const out = resolveVolumesJson({
|
|
22
|
+
volumesJson: ' [ {"target":"/workspace","source":"liberica-ws-1"} ] ',
|
|
23
|
+
});
|
|
24
|
+
expect(out).toBe('[{"target":"/workspace","source":"liberica-ws-1"}]');
|
|
25
|
+
});
|
|
26
|
+
it('reads @file syntax', () => {
|
|
27
|
+
const out = resolveVolumesJson({ volumesJson: `@${validFile}` });
|
|
28
|
+
expect(JSON.parse(out)).toEqual([
|
|
29
|
+
{ source: 'liberica-ws-1', target: '/workspace', mode: 'rw' },
|
|
30
|
+
]);
|
|
31
|
+
});
|
|
32
|
+
it('reads --volumes-json-file', () => {
|
|
33
|
+
const out = resolveJsonOption({
|
|
34
|
+
option: '--volumes-json',
|
|
35
|
+
file: validFile,
|
|
36
|
+
fileOption: '--volumes-json-file',
|
|
37
|
+
});
|
|
38
|
+
expect(out).toContain('/workspace');
|
|
39
|
+
});
|
|
40
|
+
it('rejects invalid JSON locally with the raw text and Windows hint', () => {
|
|
41
|
+
let error;
|
|
42
|
+
try {
|
|
43
|
+
resolveVolumesJson({ volumesJson: '[{source:liberica-ws-1,target:/workspace}]' });
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
error = err;
|
|
47
|
+
}
|
|
48
|
+
expect(error).toBeInstanceOf(JsonOptionError);
|
|
49
|
+
const e = error;
|
|
50
|
+
expect(e.code).toBe('JSON_INVALID');
|
|
51
|
+
expect(e.message).toContain('[{source:liberica-ws-1,target:/workspace}]');
|
|
52
|
+
expect(e.message).toContain('PowerShell');
|
|
53
|
+
expect(e.message).toContain('--volumes-json @file.json');
|
|
54
|
+
});
|
|
55
|
+
it('rejects a broken JSON file', () => {
|
|
56
|
+
expect(() => resolveVolumesJson({ volumesJson: `@${brokenFile}` })).toThrow(JsonOptionError);
|
|
57
|
+
});
|
|
58
|
+
it('rejects inline + file together', () => {
|
|
59
|
+
let error;
|
|
60
|
+
try {
|
|
61
|
+
resolveVolumesJson({ volumesJson: '[]', volumesJsonFile: validFile });
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
error = err;
|
|
65
|
+
}
|
|
66
|
+
expect(error.code).toBe('MUTUALLY_EXCLUSIVE');
|
|
67
|
+
});
|
|
68
|
+
it('reports a missing file clearly', () => {
|
|
69
|
+
let error;
|
|
70
|
+
try {
|
|
71
|
+
resolveVolumesJson({ volumesJsonFile: join(dir, 'nope.json') });
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
error = err;
|
|
75
|
+
}
|
|
76
|
+
expect(error.code).toBe('FILE_READ_FAILED');
|
|
77
|
+
});
|
|
78
|
+
it('returns undefined when the option is absent or empty', () => {
|
|
79
|
+
expect(resolveVolumesJson({})).toBeUndefined();
|
|
80
|
+
expect(resolveVolumesJson({ volumesJson: ' ' })).toBeUndefined();
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=volumes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumes.test.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/__tests__/volumes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,2BAA2B,IAAI,OAAO,CAoHrD"}
|
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { configManager } from '../../../../core/config/manager.js';
|
|
4
4
|
import { apiClient } from '../../../../core/api/client.js';
|
|
5
5
|
import { parseRunnerTags } from './tags.js';
|
|
6
|
+
import { resolveVolumesJson } from '../volumes.js';
|
|
6
7
|
function formatPreview(data) {
|
|
7
8
|
const lines = [];
|
|
8
9
|
lines.push(` ${chalk.gray('Name:')} ${data.imageName}`);
|
|
@@ -33,6 +34,7 @@ export function createRunnerImageAddCommand() {
|
|
|
33
34
|
.option('--memory-mb <number>', 'Container memory limit (MB)', parseInt)
|
|
34
35
|
.option('--cpu-shares <number>', 'CPU shares', parseInt)
|
|
35
36
|
.option('--volumes-json <json>', 'Default mount volumes as JSON array [{source,target,mode}] (bind source = absolute host path; volume source = bare docker volume name)')
|
|
37
|
+
.option('--volumes-json-file <path>', 'Read volumes JSON from a UTF-8 file (same as --volumes-json @file; avoids Windows quote stripping)')
|
|
36
38
|
.option('--runner-tags <tags>', 'Runner placement tags (comma-separated)')
|
|
37
39
|
.option('--network-mode <mode>', 'Container network mode (e.g. bridge/host)')
|
|
38
40
|
.option('--description <text>', 'Description')
|
|
@@ -64,13 +66,27 @@ export function createRunnerImageAddCommand() {
|
|
|
64
66
|
}
|
|
65
67
|
process.exit(1);
|
|
66
68
|
}
|
|
69
|
+
let volumesJson;
|
|
70
|
+
try {
|
|
71
|
+
volumesJson = resolveVolumesJson(options);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const e = err;
|
|
75
|
+
if (jsonOutput) {
|
|
76
|
+
console.log(JSON.stringify({ success: false, error: { code: e.code, message: e.message } }));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.error(chalk.red(`\n✗ ${e.message}\n`));
|
|
80
|
+
}
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
67
83
|
const data = {
|
|
68
84
|
imageName,
|
|
69
85
|
imageUrl,
|
|
70
86
|
imageTag: options.imageTag,
|
|
71
87
|
memoryMb: options.memoryMb,
|
|
72
88
|
cpuShares: options.cpuShares,
|
|
73
|
-
volumesJson
|
|
89
|
+
volumesJson,
|
|
74
90
|
runnerTags: parseRunnerTags(options.runnerTags),
|
|
75
91
|
networkMode: options.networkMode,
|
|
76
92
|
description: options.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,4BAA4B,IAAI,OAAO,CA+GtD"}
|
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { configManager } from '../../../../core/config/manager.js';
|
|
4
4
|
import { apiClient } from '../../../../core/api/client.js';
|
|
5
5
|
import { parseRunnerTags } from './tags.js';
|
|
6
|
+
import { resolveVolumesJson } from '../volumes.js';
|
|
6
7
|
export function createRunnerImageEditCommand() {
|
|
7
8
|
const editCommand = new Command('edit');
|
|
8
9
|
editCommand.description('Edit an agent image');
|
|
@@ -14,6 +15,7 @@ export function createRunnerImageEditCommand() {
|
|
|
14
15
|
.option('--memory-mb <number>', 'Container memory limit (MB)', parseInt)
|
|
15
16
|
.option('--cpu-shares <number>', 'CPU shares', parseInt)
|
|
16
17
|
.option('--volumes-json <json>', 'Default mount volumes as JSON array [{source,target,mode}] (bind source = absolute host path; volume source = bare docker volume name)')
|
|
18
|
+
.option('--volumes-json-file <path>', 'Read volumes JSON from a UTF-8 file (same as --volumes-json @file; avoids Windows quote stripping)')
|
|
17
19
|
.option('--runner-tags <tags>', 'Runner placement tags (comma-separated)')
|
|
18
20
|
.option('--network-mode <mode>', 'Container network mode (e.g. bridge/host)')
|
|
19
21
|
.option('--description <text>', 'Description')
|
|
@@ -34,6 +36,20 @@ export function createRunnerImageEditCommand() {
|
|
|
34
36
|
}
|
|
35
37
|
process.exit(1);
|
|
36
38
|
}
|
|
39
|
+
let volumesJson;
|
|
40
|
+
try {
|
|
41
|
+
volumesJson = resolveVolumesJson(options);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
const e = err;
|
|
45
|
+
if (jsonOutput) {
|
|
46
|
+
console.log(JSON.stringify({ success: false, error: { code: e.code, message: e.message } }));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.error(chalk.red(`\n✗ ${e.message}\n`));
|
|
50
|
+
}
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
37
53
|
const data = {
|
|
38
54
|
agentImageId: id,
|
|
39
55
|
imageName: options.imageName,
|
|
@@ -41,7 +57,7 @@ export function createRunnerImageEditCommand() {
|
|
|
41
57
|
imageTag: options.imageTag,
|
|
42
58
|
memoryMb: options.memoryMb,
|
|
43
59
|
cpuShares: options.cpuShares,
|
|
44
|
-
volumesJson
|
|
60
|
+
volumesJson,
|
|
45
61
|
runnerTags: parseRunnerTags(options.runnerTags),
|
|
46
62
|
networkMode: options.networkMode,
|
|
47
63
|
description: options.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/images/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/jobs/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/jobs/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,wBAAgB,yBAAyB,IAAI,OAAO,CAgInD"}
|
|
@@ -4,6 +4,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
4
4
|
import { configManager } from '../../../../core/config/manager.js';
|
|
5
5
|
import { apiClient } from '../../../../core/api/client.js';
|
|
6
6
|
import { emitRunnerJobError } from '../../../../utils/runner-error.js';
|
|
7
|
+
import { resolveVolumesJson } from '../volumes.js';
|
|
7
8
|
const ENV_KEY_BLACKLIST = [
|
|
8
9
|
'PATH',
|
|
9
10
|
'HOME',
|
|
@@ -52,6 +53,7 @@ export function createRunnerJobAddCommand() {
|
|
|
52
53
|
.option('--timeout-seconds <number>', 'Timeout in seconds (default: 5400)', parseInt)
|
|
53
54
|
.option('--priority <number>', 'Priority (0 normal / 1 high / 2 urgent)', parseInt)
|
|
54
55
|
.option('--volumes-json <json>', 'Volume override items as JSON string')
|
|
56
|
+
.option('--volumes-json-file <path>', 'Read volumes JSON from a UTF-8 file (same as --volumes-json @file; avoids Windows quote stripping)')
|
|
55
57
|
.option('--env-map <key=value>', 'Business env override (repeatable, credentials excluded)', collectEnv, [])
|
|
56
58
|
.option('--dry-run', 'Preview without making API call')
|
|
57
59
|
.option('--json', 'Output as JSON')
|
|
@@ -89,6 +91,20 @@ export function createRunnerJobAddCommand() {
|
|
|
89
91
|
for (const e of envList) {
|
|
90
92
|
envMap[e.key] = e.value;
|
|
91
93
|
}
|
|
94
|
+
let volumesJson;
|
|
95
|
+
try {
|
|
96
|
+
volumesJson = resolveVolumesJson(options);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
const e = err;
|
|
100
|
+
if (jsonOutput) {
|
|
101
|
+
console.log(JSON.stringify({ success: false, error: { code: e.code, message: e.message } }));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.error(chalk.red(`\n✗ ${e.message}\n`));
|
|
105
|
+
}
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
92
108
|
const data = {
|
|
93
109
|
runnerType,
|
|
94
110
|
refType: options.refType,
|
|
@@ -97,7 +113,7 @@ export function createRunnerJobAddCommand() {
|
|
|
97
113
|
command: options.command,
|
|
98
114
|
timeoutSeconds,
|
|
99
115
|
priority,
|
|
100
|
-
volumesJson
|
|
116
|
+
volumesJson,
|
|
101
117
|
envMap: Object.keys(envMap).length > 0 ? envMap : undefined,
|
|
102
118
|
};
|
|
103
119
|
const idempotencyKey = randomUUID();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/jobs/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/runner/jobs/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON 入参选项的统一解析(Issue 20261103221)。
|
|
3
|
+
*
|
|
4
|
+
* 背景:Windows PowerShell 5.1 调用原生 exe 时会剥掉内联参数里的双引号,
|
|
5
|
+
* `--volumes-json '[{"source":"x"}]'` 到 CLI 手里会变成 `[{source:x}]` —— 直接转发给后端
|
|
6
|
+
* 会得到一个误导性的安全错误(A983006)。所以:
|
|
7
|
+
*
|
|
8
|
+
* 1. 支持从文件读:`--volumes-json @file.json` 或 `--volumes-json-file file.json`;
|
|
9
|
+
* 2. 发送前本地 JSON.parse 校验,非法时明确报错(回显原文 + 提示引号坑),不再请求后端。
|
|
10
|
+
*/
|
|
11
|
+
export declare class JsonOptionError extends Error {
|
|
12
|
+
readonly code: string;
|
|
13
|
+
constructor(code: string, message: string);
|
|
14
|
+
}
|
|
15
|
+
export interface JsonOptionSource {
|
|
16
|
+
/** 选项名(错误文案用),如 `--volumes-json` */
|
|
17
|
+
option: string;
|
|
18
|
+
/** 内联值(可能是 `@file.json`) */
|
|
19
|
+
inline?: string;
|
|
20
|
+
/** 专用文件选项的值 */
|
|
21
|
+
file?: string;
|
|
22
|
+
/** 专用文件选项名,如 `--volumes-json-file` */
|
|
23
|
+
fileOption: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 解析一个 JSON 选项,返回规范化后的 JSON 字符串(未提供时返回 undefined)。
|
|
27
|
+
*
|
|
28
|
+
* - `file` 优先于内联;两者同时提供 → MUTUALLY_EXCLUSIVE
|
|
29
|
+
* - 内联值以 `@` 开头 → 当作文件路径读取
|
|
30
|
+
* - 校验失败 → JSON_INVALID(含原文与 PowerShell 提示)
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveJsonOption(source: JsonOptionSource): string | undefined;
|
|
33
|
+
/** runner images add/edit 与 jobs add 共用的 `--volumes-json` 解析。 */
|
|
34
|
+
export declare function resolveVolumesJson(options: {
|
|
35
|
+
volumesJson?: string;
|
|
36
|
+
volumesJsonFile?: string;
|
|
37
|
+
}): string | undefined;
|
|
38
|
+
//# sourceMappingURL=volumes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumes.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/runner/volumes.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKlB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAiBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAuC9E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,GAAG,SAAS,CAOrB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* JSON 入参选项的统一解析(Issue 20261103221)。
|
|
4
|
+
*
|
|
5
|
+
* 背景:Windows PowerShell 5.1 调用原生 exe 时会剥掉内联参数里的双引号,
|
|
6
|
+
* `--volumes-json '[{"source":"x"}]'` 到 CLI 手里会变成 `[{source:x}]` —— 直接转发给后端
|
|
7
|
+
* 会得到一个误导性的安全错误(A983006)。所以:
|
|
8
|
+
*
|
|
9
|
+
* 1. 支持从文件读:`--volumes-json @file.json` 或 `--volumes-json-file file.json`;
|
|
10
|
+
* 2. 发送前本地 JSON.parse 校验,非法时明确报错(回显原文 + 提示引号坑),不再请求后端。
|
|
11
|
+
*/
|
|
12
|
+
export class JsonOptionError extends Error {
|
|
13
|
+
code;
|
|
14
|
+
constructor(code, message) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.code = code;
|
|
17
|
+
this.name = 'JsonOptionError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const WINDOWS_HINT = 'Windows PowerShell 会剥掉内联 JSON 的双引号;推荐 --volumes-json @file.json(或 --volumes-json-file file.json)';
|
|
21
|
+
/** 读取文件(不存在/不可读时给出明确错误)。 */
|
|
22
|
+
function readOptionFile(path, origin) {
|
|
23
|
+
try {
|
|
24
|
+
return readFileSync(path, 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
throw new JsonOptionError('FILE_READ_FAILED', `${origin} 读取文件失败:${path}(${err.message})`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 解析一个 JSON 选项,返回规范化后的 JSON 字符串(未提供时返回 undefined)。
|
|
32
|
+
*
|
|
33
|
+
* - `file` 优先于内联;两者同时提供 → MUTUALLY_EXCLUSIVE
|
|
34
|
+
* - 内联值以 `@` 开头 → 当作文件路径读取
|
|
35
|
+
* - 校验失败 → JSON_INVALID(含原文与 PowerShell 提示)
|
|
36
|
+
*/
|
|
37
|
+
export function resolveJsonOption(source) {
|
|
38
|
+
const { option, inline, file, fileOption } = source;
|
|
39
|
+
if (inline !== undefined && file !== undefined) {
|
|
40
|
+
throw new JsonOptionError('MUTUALLY_EXCLUSIVE', `${option} 与 ${fileOption} 不能同时使用`);
|
|
41
|
+
}
|
|
42
|
+
let raw;
|
|
43
|
+
if (file !== undefined) {
|
|
44
|
+
raw = readOptionFile(file, fileOption);
|
|
45
|
+
}
|
|
46
|
+
else if (inline !== undefined) {
|
|
47
|
+
const trimmed = inline.trim();
|
|
48
|
+
if (trimmed.startsWith('@')) {
|
|
49
|
+
const path = trimmed.slice(1).trim();
|
|
50
|
+
if (!path) {
|
|
51
|
+
throw new JsonOptionError('FILE_READ_FAILED', `${option} @ 后面缺少文件路径`);
|
|
52
|
+
}
|
|
53
|
+
raw = readOptionFile(path, option);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
raw = inline;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (raw === undefined)
|
|
60
|
+
return undefined;
|
|
61
|
+
const text = raw.trim();
|
|
62
|
+
if (text === '')
|
|
63
|
+
return undefined;
|
|
64
|
+
try {
|
|
65
|
+
return JSON.stringify(JSON.parse(text));
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw new JsonOptionError('JSON_INVALID', `${option} 不是合法 JSON(${err.message})\n收到的原文:${text}\n提示:${WINDOWS_HINT}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** runner images add/edit 与 jobs add 共用的 `--volumes-json` 解析。 */
|
|
72
|
+
export function resolveVolumesJson(options) {
|
|
73
|
+
return resolveJsonOption({
|
|
74
|
+
option: '--volumes-json',
|
|
75
|
+
inline: options.volumesJson,
|
|
76
|
+
file: options.volumesJsonFile,
|
|
77
|
+
fileOption: '--volumes-json-file',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=volumes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumes.js","sourceRoot":"","sources":["../../../../src/commands/liberica/runner/volumes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAEtB;IADlB,YACkB,IAAY,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAaD,MAAM,YAAY,GAChB,kGAAkG,CAAC;AAErG,4BAA4B;AAC5B,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc;IAClD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,GAAG,MAAM,WAAW,IAAI,IAAK,GAAa,CAAC,OAAO,GAAG,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,eAAe,CACvB,oBAAoB,EACpB,GAAG,MAAM,MAAM,UAAU,SAAS,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,GAAuB,CAAC;IAE5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,GAAG,MAAM,aAAa,CAAC,CAAC;YACxE,CAAC;YACD,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAElC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,cAAc,EACd,GAAG,MAAM,cAAe,GAAa,CAAC,OAAO,YAAY,IAAI,QAAQ,YAAY,EAAE,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,kBAAkB,CAAC,OAGlC;IACC,OAAO,iBAAiB,CAAC;QACvB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,UAAU,EAAE,qBAAqB;KAClC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_metadata": {
|
|
3
|
-
"generatedAt": "2026-11-
|
|
3
|
+
"generatedAt": "2026-11-03T10:53:10.715Z",
|
|
4
4
|
"source": "src/commands/",
|
|
5
5
|
"generator": "src/skills/barista-cli/scripts/generate.ts"
|
|
6
6
|
},
|
|
@@ -3950,7 +3950,8 @@
|
|
|
3950
3950
|
"description": "List runner type candidates, or remove a type from a runner",
|
|
3951
3951
|
"json": true,
|
|
3952
3952
|
"dry-run": true
|
|
3953
|
-
}
|
|
3953
|
+
},
|
|
3954
|
+
"volumes": {}
|
|
3954
3955
|
}
|
|
3955
3956
|
},
|
|
3956
3957
|
"runner/images": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# ★ 自动生成。修改源码后重新生成:npm run generate-skills-data
|
|
2
|
-
# ★ 生成时间: 2026-11-
|
|
2
|
+
# ★ 生成时间: 2026-11-03T10:53:10.724Z
|
|
3
3
|
|
|
4
4
|
global:
|
|
5
5
|
# ── 全局 ──
|
|
@@ -2549,6 +2549,7 @@ liberica:
|
|
|
2549
2549
|
runner-types:
|
|
2550
2550
|
description: "List runner type candidates, or remove a type from a runner"
|
|
2551
2551
|
options: [--json, --dry-run]
|
|
2552
|
+
volumes:
|
|
2552
2553
|
runner/images:
|
|
2553
2554
|
group: "其他"
|
|
2554
2555
|
description: "Manage agent images"
|