@llmindset/hf-mcp 0.3.12 → 0.3.13
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/jobs/commands/run.d.ts.map +1 -1
- package/dist/jobs/commands/run.js +7 -1
- package/dist/jobs/commands/run.js.map +1 -1
- package/dist/jobs/commands/scheduled.d.ts.map +1 -1
- package/dist/jobs/commands/scheduled.js +2 -0
- package/dist/jobs/commands/scheduled.js.map +1 -1
- package/dist/jobs/commands/utils.d.ts +3 -1
- package/dist/jobs/commands/utils.d.ts.map +1 -1
- package/dist/jobs/commands/utils.js +76 -1
- package/dist/jobs/commands/utils.js.map +1 -1
- package/dist/jobs/jobs-tool.d.ts.map +1 -1
- package/dist/jobs/jobs-tool.js +60 -3
- package/dist/jobs/jobs-tool.js.map +1 -1
- package/dist/jobs/types.d.ts +22 -0
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/types.js +16 -1
- package/dist/jobs/types.js.map +1 -1
- package/package.json +1 -1
- package/src/jobs/commands/run.ts +7 -1
- package/src/jobs/commands/scheduled.ts +2 -0
- package/src/jobs/commands/utils.ts +95 -5
- package/src/jobs/jobs-tool.ts +60 -3
- package/src/jobs/types.ts +35 -1
- package/test/jobs/command-translation.spec.ts +88 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDtG;AAMD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpG"}
|
|
@@ -10,6 +10,7 @@ export async function runCommand(args, client, token) {
|
|
|
10
10
|
secrets: args.secrets,
|
|
11
11
|
timeout: args.timeout,
|
|
12
12
|
hfToken: token,
|
|
13
|
+
volumes: args.volumes,
|
|
13
14
|
});
|
|
14
15
|
const job = await client.runJob(jobSpec, args.namespace);
|
|
15
16
|
const jobUrl = `https://huggingface.co/jobs/${job.owner.name}/${job.id}`;
|
|
@@ -24,7 +25,11 @@ export async function runCommand(args, client, token) {
|
|
|
24
25
|
To inspect, call this tool with \`{"operation": "inspect", "args": {"job_id": "${job.id}"}}\``;
|
|
25
26
|
}
|
|
26
27
|
const logsUrl = client.getLogsUrl(job.id, job.owner.name);
|
|
27
|
-
const logResult = await fetchJobLogs(logsUrl, {
|
|
28
|
+
const logResult = await fetchJobLogs(logsUrl, {
|
|
29
|
+
token,
|
|
30
|
+
maxDuration: DEFAULT_LOG_WAIT_MS,
|
|
31
|
+
maxLines: DEFAULT_MAX_LOG_LINES,
|
|
32
|
+
});
|
|
28
33
|
let response = `Job started: ${job.id}\n\n`;
|
|
29
34
|
if (logResult.logs.length > 0) {
|
|
30
35
|
response += `**Logs (last ${DEFAULT_MAX_LOG_LINES} lines):**\n\`\`\`\n`;
|
|
@@ -52,6 +57,7 @@ export async function uvCommand(args, client, token) {
|
|
|
52
57
|
timeout: args.timeout,
|
|
53
58
|
detach: args.detach,
|
|
54
59
|
namespace: args.namespace,
|
|
60
|
+
volumes: args.volumes,
|
|
55
61
|
};
|
|
56
62
|
return runCommand(runArgs, client, token);
|
|
57
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/jobs/commands/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMnE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAa,EAAE,MAAqB,EAAE,KAAc;IAEpF,MAAM,OAAO,GAAG,aAAa,CAAC;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/jobs/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/scheduled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"scheduled.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/scheduled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAStD,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAMD,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAMD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBtG;AAMD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5G;AAMD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3G;AAMD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5G;AAMD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3G"}
|
|
@@ -10,6 +10,7 @@ export async function scheduledRunCommand(args, client, token) {
|
|
|
10
10
|
secrets: args.secrets,
|
|
11
11
|
timeout: args.timeout,
|
|
12
12
|
hfToken: token,
|
|
13
|
+
volumes: args.volumes,
|
|
13
14
|
});
|
|
14
15
|
const scheduledSpec = {
|
|
15
16
|
schedule: args.schedule,
|
|
@@ -41,6 +42,7 @@ export async function scheduledUvCommand(args, client, token) {
|
|
|
41
42
|
timeout: args.timeout,
|
|
42
43
|
detach: args.detach,
|
|
43
44
|
namespace: args.namespace,
|
|
45
|
+
volumes: args.volumes,
|
|
44
46
|
};
|
|
45
47
|
return scheduledRunCommand(scheduledRunArgs, client, token);
|
|
46
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled.js","sourceRoot":"","sources":["../../../src/jobs/commands/scheduled.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,IAAsB,EACtB,MAAqB,EACrB,KAAc;IAGd,MAAM,OAAO,GAAG,aAAa,CAAC;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"scheduled.js","sourceRoot":"","sources":["../../../src/jobs/commands/scheduled.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JobSpec } from '../types.js';
|
|
1
|
+
import type { JobSpec, JobVolume } from '../types.js';
|
|
2
2
|
export declare function parseTimeout(timeout: string): number;
|
|
3
3
|
export declare function parseImageSource(image: string): {
|
|
4
4
|
dockerImage?: string;
|
|
@@ -8,6 +8,7 @@ export declare function parseCommand(command: string | string[]): {
|
|
|
8
8
|
command: string[];
|
|
9
9
|
arguments?: string[];
|
|
10
10
|
};
|
|
11
|
+
export declare function parseVolumes(volumes?: string[]): JobVolume[] | undefined;
|
|
11
12
|
export declare function createJobSpec(args: {
|
|
12
13
|
image: string;
|
|
13
14
|
command: string | string[];
|
|
@@ -16,5 +17,6 @@ export declare function createJobSpec(args: {
|
|
|
16
17
|
secrets?: Record<string, string>;
|
|
17
18
|
timeout?: string;
|
|
18
19
|
hfToken?: string;
|
|
20
|
+
volumes?: string[];
|
|
19
21
|
}): JobSpec;
|
|
20
22
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAgDrE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBpD;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB1F;AAMD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAiCpG;AAsED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,CAMxE;AAmCD,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CA8BV"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { parse as parseShellArgs } from 'shell-quote';
|
|
2
2
|
const SPECIAL_PARAMS = new Set(['*', '@', '#', '?', '!', '-', '_']);
|
|
3
|
+
const HF_VOLUME_PREFIX = 'hf://';
|
|
4
|
+
const VOLUME_FORMAT_HELP = 'Expected format: hf://[TYPE/]OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw], ' +
|
|
5
|
+
'e.g. hf://datasets/org/dataset:/data:ro or hf://buckets/org/bucket:/output.';
|
|
6
|
+
const HF_VOLUME_TYPES = {
|
|
7
|
+
models: 'model',
|
|
8
|
+
datasets: 'dataset',
|
|
9
|
+
spaces: 'space',
|
|
10
|
+
buckets: 'bucket',
|
|
11
|
+
};
|
|
12
|
+
const SINGULAR_VOLUME_TYPES = new Set(['model', 'dataset', 'space', 'bucket']);
|
|
3
13
|
function isEnvToken(entry) {
|
|
4
14
|
return Boolean(entry && typeof entry === 'object' && entry.type === 'env');
|
|
5
15
|
}
|
|
@@ -55,7 +65,7 @@ export function parseCommand(command) {
|
|
|
55
65
|
if (Array.isArray(command)) {
|
|
56
66
|
return { command, arguments: [] };
|
|
57
67
|
}
|
|
58
|
-
const parsed = parseShellArgs(command, key => ({ type: 'env', key }));
|
|
68
|
+
const parsed = parseShellArgs(command, (key) => ({ type: 'env', key }));
|
|
59
69
|
const stringArgs = [];
|
|
60
70
|
for (const arg of parsed) {
|
|
61
71
|
if (typeof arg === 'string') {
|
|
@@ -75,6 +85,67 @@ export function parseCommand(command) {
|
|
|
75
85
|
}
|
|
76
86
|
return { command: stringArgs, arguments: [] };
|
|
77
87
|
}
|
|
88
|
+
function invalidVolume(rawSpec, message) {
|
|
89
|
+
return new Error(`Invalid volume "${rawSpec}". ${message} ${VOLUME_FORMAT_HELP}`);
|
|
90
|
+
}
|
|
91
|
+
function parseVolume(rawSpec) {
|
|
92
|
+
let spec = rawSpec;
|
|
93
|
+
let readOnly;
|
|
94
|
+
if (spec.endsWith(':ro')) {
|
|
95
|
+
readOnly = true;
|
|
96
|
+
spec = spec.slice(0, -3);
|
|
97
|
+
}
|
|
98
|
+
else if (spec.endsWith(':rw')) {
|
|
99
|
+
readOnly = false;
|
|
100
|
+
spec = spec.slice(0, -3);
|
|
101
|
+
}
|
|
102
|
+
if (!spec.startsWith(HF_VOLUME_PREFIX)) {
|
|
103
|
+
throw invalidVolume(rawSpec, `Volume source must start with "${HF_VOLUME_PREFIX}".`);
|
|
104
|
+
}
|
|
105
|
+
const body = spec.slice(HF_VOLUME_PREFIX.length);
|
|
106
|
+
const mountSeparator = body.lastIndexOf(':/');
|
|
107
|
+
if (mountSeparator === -1) {
|
|
108
|
+
throw invalidVolume(rawSpec, 'Missing mount path.');
|
|
109
|
+
}
|
|
110
|
+
const sourcePart = body.slice(0, mountSeparator);
|
|
111
|
+
const mountPath = body.slice(mountSeparator + 1);
|
|
112
|
+
if (!sourcePart) {
|
|
113
|
+
throw invalidVolume(rawSpec, 'Missing Hub source before mount path.');
|
|
114
|
+
}
|
|
115
|
+
if (!mountPath.startsWith('/') || mountPath === '/') {
|
|
116
|
+
throw invalidVolume(rawSpec, `Mount path must be a non-empty absolute path, got "${mountPath}".`);
|
|
117
|
+
}
|
|
118
|
+
const segments = sourcePart.split('/');
|
|
119
|
+
const firstSegment = segments[0];
|
|
120
|
+
if (!firstSegment) {
|
|
121
|
+
throw invalidVolume(rawSpec, 'Missing Hub source type or owner.');
|
|
122
|
+
}
|
|
123
|
+
if (SINGULAR_VOLUME_TYPES.has(firstSegment)) {
|
|
124
|
+
throw invalidVolume(rawSpec, `Type prefix must be plural, got "${firstSegment}/".`);
|
|
125
|
+
}
|
|
126
|
+
const explicitType = HF_VOLUME_TYPES[firstSegment];
|
|
127
|
+
const type = explicitType ?? 'model';
|
|
128
|
+
const locationSegments = explicitType ? segments.slice(1) : segments;
|
|
129
|
+
if (locationSegments.length < 2 || !locationSegments[0] || !locationSegments[1]) {
|
|
130
|
+
throw invalidVolume(rawSpec, 'Hub source must include OWNER/NAME.');
|
|
131
|
+
}
|
|
132
|
+
const source = `${locationSegments[0]}/${locationSegments[1]}`;
|
|
133
|
+
const path = locationSegments.slice(2).join('/') || undefined;
|
|
134
|
+
const volume = { type, source, mountPath };
|
|
135
|
+
if (readOnly !== undefined) {
|
|
136
|
+
volume.readOnly = readOnly;
|
|
137
|
+
}
|
|
138
|
+
if (path) {
|
|
139
|
+
volume.path = path;
|
|
140
|
+
}
|
|
141
|
+
return volume;
|
|
142
|
+
}
|
|
143
|
+
export function parseVolumes(volumes) {
|
|
144
|
+
if (!volumes || volumes.length === 0) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
return volumes.map(parseVolume);
|
|
148
|
+
}
|
|
78
149
|
function replaceTokenPlaceholder(value, hfToken) {
|
|
79
150
|
if (!hfToken) {
|
|
80
151
|
return value;
|
|
@@ -106,6 +177,7 @@ export function createJobSpec(args) {
|
|
|
106
177
|
const timeoutSeconds = args.timeout ? parseTimeout(args.timeout) : undefined;
|
|
107
178
|
const environment = transformEnvMap(args.env, args.hfToken) || {};
|
|
108
179
|
const secrets = transformEnvMap(args.secrets, args.hfToken) || {};
|
|
180
|
+
const volumes = parseVolumes(args.volumes);
|
|
109
181
|
const spec = {
|
|
110
182
|
...imageSource,
|
|
111
183
|
command,
|
|
@@ -115,6 +187,9 @@ export function createJobSpec(args) {
|
|
|
115
187
|
secrets,
|
|
116
188
|
timeoutSeconds,
|
|
117
189
|
};
|
|
190
|
+
if (volumes) {
|
|
191
|
+
spec.volumes = volumes;
|
|
192
|
+
}
|
|
118
193
|
return spec;
|
|
119
194
|
}
|
|
120
195
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs-tool.d.ts","sourceRoot":"","sources":["../../src/jobs/jobs-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAiB1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"jobs-tool.d.ts","sourceRoot":"","sources":["../../src/jobs/jobs-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAiB1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgZhD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;CAiBtB,CAAC;AAKX,qBAAa,UAAU;IACtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,eAAe,CAAU;gBAErB,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;IASrE,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CA2KlG"}
|
package/dist/jobs/jobs-tool.js
CHANGED
|
@@ -252,6 +252,42 @@ Manage compute jobs on Hugging Face infrastructure.
|
|
|
252
252
|
|
|
253
253
|
${renderExampleSection('Run a simple job', 'run')}${renderExampleSection('Run a Python script with UV', 'uv')}
|
|
254
254
|
|
|
255
|
+
## Deep Hub Dataset/Repo Analysis
|
|
256
|
+
|
|
257
|
+
Use Jobs for deep analysis prompts involving Hugging Face datasets, models, Spaces, repos, traces, or large Hub files—especially when the user asks to "analyze", "find trends", "process all rows/files", "run a complete analysis", "take your time", or "install/use Python libraries".
|
|
258
|
+
|
|
259
|
+
Recommended workflow:
|
|
260
|
+
1. Inspect the repo with \`hub_repo_details\` for schema, splits, and parquet URLs.
|
|
261
|
+
2. Run \`operation: "uv"\` with a self-contained Python script; do not call \`{"operation": "uv"}\` by itself except to request help.
|
|
262
|
+
3. Always put third-party packages in \`with_deps\`; do not assume packages like \`pandas\`, \`polars\`, \`pyarrow\`, \`datasets\`, or \`huggingface_hub\` are installed. Prefer \`with_deps\` over relying on inline PEP 723 script metadata.
|
|
263
|
+
4. Prefer converted parquet URLs for Hub datasets when available; they are often more reliable for mixed JSONL/session repos than \`datasets.load_dataset(...)\`.
|
|
264
|
+
5. Print the final report at the end of the job. If the initial response only shows installation logs or partial output, call \`logs\` with the exact returned job ID and a larger \`tail\`, e.g. \`{"tail": 500}\`.
|
|
265
|
+
6. Jobs do not automatically inherit the MCP server's Hugging Face token inside the container. For private/gated data or uploads, pass \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\`.
|
|
266
|
+
|
|
267
|
+
Example:
|
|
268
|
+
\`\`\`json
|
|
269
|
+
{
|
|
270
|
+
"operation": "uv",
|
|
271
|
+
"args": {
|
|
272
|
+
"with_deps": ["polars", "pyarrow", "huggingface_hub"],
|
|
273
|
+
"timeout": "60m",
|
|
274
|
+
"flavor": "cpu-upgrade",
|
|
275
|
+
"script": "import polars as pl\\nurl = 'PARQUET_URL_FROM_HUB_REPO_DETAILS'\\ndf = pl.read_parquet(url)\\nprint(df.shape)\\nprint(df.head())"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
\`\`\`
|
|
279
|
+
|
|
280
|
+
If output is incomplete, fetch more logs:
|
|
281
|
+
\`\`\`json
|
|
282
|
+
{
|
|
283
|
+
"operation": "logs",
|
|
284
|
+
"args": {
|
|
285
|
+
"job_id": "JOB_ID_FROM_RUN_RESPONSE",
|
|
286
|
+
"tail": 500
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
\`\`\`
|
|
290
|
+
|
|
255
291
|
## Hardware Flavors
|
|
256
292
|
|
|
257
293
|
${HARDWARE_FLAVORS_SECTION}
|
|
@@ -272,6 +308,28 @@ ${HARDWARE_FLAVORS_SECTION}
|
|
|
272
308
|
- Include newline characters directly in the argument (e.g., \`"first line\\nsecond line"\`)
|
|
273
309
|
- UV inline scripts are automatically base64-decoded inside the container; just send the raw script text
|
|
274
310
|
|
|
311
|
+
## Volumes
|
|
312
|
+
|
|
313
|
+
Attach Hub repositories or buckets into the job container with \`hf://\` volume URLs.
|
|
314
|
+
|
|
315
|
+
Format: \`hf://[TYPE/]OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]\`
|
|
316
|
+
|
|
317
|
+
- \`TYPE\` is one of \`models\`, \`datasets\`, \`spaces\`, or \`buckets\`; omitted type defaults to models.
|
|
318
|
+
- \`OWNER/NAME\` source IDs are required.
|
|
319
|
+
- \`:ro\` and \`:rw\` are optional; backend defaults are preserved when omitted.
|
|
320
|
+
|
|
321
|
+
Example:
|
|
322
|
+
\`\`\`json
|
|
323
|
+
{
|
|
324
|
+
"operation": "run",
|
|
325
|
+
"args": {
|
|
326
|
+
"image": "python:3.12",
|
|
327
|
+
"command": ["python", "-c", "import os; print(os.listdir('/data'))"],
|
|
328
|
+
"volumes": ["hf://datasets/org/dataset:/data:ro"]
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
\`\`\`
|
|
332
|
+
|
|
275
333
|
### Show command-specific help
|
|
276
334
|
Call this tool with:
|
|
277
335
|
\`\`\`json
|
|
@@ -288,9 +346,8 @@ Call this tool with:
|
|
|
288
346
|
`;
|
|
289
347
|
export const HF_JOBS_TOOL_CONFIG = {
|
|
290
348
|
name: 'hf_jobs',
|
|
291
|
-
description: '
|
|
292
|
-
'
|
|
293
|
-
'Call this tool with no operation for full usage instructions and examples. ',
|
|
349
|
+
description: 'Remote compute for Hugging Face workflows. Run Python/UV or Docker jobs to deeply analyze Hub datasets, repos, traces, models, and large files; compute trends/statistics; run batch inference/evaluation; or perform long-running work with installed libraries. ' +
|
|
350
|
+
'Use for dataset/repo analysis prompts when local chat inspection is insufficient. Includes submit, logs, inspect, cancel, schedule, and volume mounting.',
|
|
294
351
|
schema: z.object({
|
|
295
352
|
operation: z
|
|
296
353
|
.enum(OPERATION_NAMES)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs-tool.js","sourceRoot":"","sources":["../../src/jobs/jobs-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs-tool.js","sourceRoot":"","sources":["../../src/jobs/jobs-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/jobs/types.d.ts
CHANGED
|
@@ -14,6 +14,15 @@ export interface JobOwner {
|
|
|
14
14
|
name: string;
|
|
15
15
|
type: 'user' | 'org';
|
|
16
16
|
}
|
|
17
|
+
export type JobVolumeType = 'bucket' | 'model' | 'dataset' | 'space';
|
|
18
|
+
export interface JobVolume {
|
|
19
|
+
type: JobVolumeType;
|
|
20
|
+
source: string;
|
|
21
|
+
mountPath: string;
|
|
22
|
+
revision?: string;
|
|
23
|
+
readOnly?: boolean;
|
|
24
|
+
path?: string;
|
|
25
|
+
}
|
|
17
26
|
export interface JobInfo {
|
|
18
27
|
id: string;
|
|
19
28
|
createdAt: string;
|
|
@@ -42,6 +51,7 @@ export interface JobSpec {
|
|
|
42
51
|
secrets?: Record<string, string>;
|
|
43
52
|
flavor: string;
|
|
44
53
|
timeoutSeconds?: number;
|
|
54
|
+
volumes?: JobVolume[];
|
|
45
55
|
}
|
|
46
56
|
export interface ScheduledJobSpec {
|
|
47
57
|
schedule: string;
|
|
@@ -71,6 +81,7 @@ export declare const runArgsSchema: z.ZodObject<{
|
|
|
71
81
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
72
82
|
secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
73
83
|
timeout: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
84
|
+
volumes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
74
85
|
detach: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
75
86
|
}, "strip", z.ZodTypeAny, {
|
|
76
87
|
timeout: string;
|
|
@@ -81,6 +92,7 @@ export declare const runArgsSchema: z.ZodObject<{
|
|
|
81
92
|
namespace?: string | undefined;
|
|
82
93
|
env?: Record<string, string> | undefined;
|
|
83
94
|
secrets?: Record<string, string> | undefined;
|
|
95
|
+
volumes?: string[] | undefined;
|
|
84
96
|
}, {
|
|
85
97
|
command: string | string[];
|
|
86
98
|
timeout?: string | undefined;
|
|
@@ -89,6 +101,7 @@ export declare const runArgsSchema: z.ZodObject<{
|
|
|
89
101
|
flavor?: "cpu-basic" | "zero-a10g" | "cpu-upgrade" | "cpu-performance" | "cpu-xl" | "sprx8" | "inf2x6" | "t4-small" | "t4-medium" | "l4x1" | "l4x4" | "l40sx1" | "l40sx4" | "l40sx8" | "a10g-small" | "a10g-large" | "a10g-largex2" | "a10g-largex4" | "a100-large" | "a100x4" | "a100x8" | undefined;
|
|
90
102
|
env?: Record<string, string> | undefined;
|
|
91
103
|
secrets?: Record<string, string> | undefined;
|
|
104
|
+
volumes?: string[] | undefined;
|
|
92
105
|
detach?: boolean | undefined;
|
|
93
106
|
}>;
|
|
94
107
|
export declare const uvArgsSchema: z.ZodObject<{
|
|
@@ -102,6 +115,7 @@ export declare const uvArgsSchema: z.ZodObject<{
|
|
|
102
115
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
103
116
|
secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
104
117
|
timeout: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
118
|
+
volumes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
105
119
|
detach: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
106
120
|
}, "strip", z.ZodTypeAny, {
|
|
107
121
|
timeout: string;
|
|
@@ -111,6 +125,7 @@ export declare const uvArgsSchema: z.ZodObject<{
|
|
|
111
125
|
namespace?: string | undefined;
|
|
112
126
|
env?: Record<string, string> | undefined;
|
|
113
127
|
secrets?: Record<string, string> | undefined;
|
|
128
|
+
volumes?: string[] | undefined;
|
|
114
129
|
with_deps?: string[] | undefined;
|
|
115
130
|
script_args?: string[] | undefined;
|
|
116
131
|
python?: string | undefined;
|
|
@@ -121,6 +136,7 @@ export declare const uvArgsSchema: z.ZodObject<{
|
|
|
121
136
|
flavor?: "cpu-basic" | "zero-a10g" | "cpu-upgrade" | "cpu-performance" | "cpu-xl" | "sprx8" | "inf2x6" | "t4-small" | "t4-medium" | "l4x1" | "l4x4" | "l40sx1" | "l40sx4" | "l40sx8" | "a10g-small" | "a10g-large" | "a10g-largex2" | "a10g-largex4" | "a100-large" | "a100x4" | "a100x8" | undefined;
|
|
122
137
|
env?: Record<string, string> | undefined;
|
|
123
138
|
secrets?: Record<string, string> | undefined;
|
|
139
|
+
volumes?: string[] | undefined;
|
|
124
140
|
detach?: boolean | undefined;
|
|
125
141
|
with_deps?: string[] | undefined;
|
|
126
142
|
script_args?: string[] | undefined;
|
|
@@ -185,6 +201,7 @@ export declare const scheduledRunArgsSchema: z.ZodObject<{
|
|
|
185
201
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
186
202
|
secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
187
203
|
timeout: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
204
|
+
volumes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
188
205
|
detach: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
189
206
|
} & {
|
|
190
207
|
schedule: z.ZodString;
|
|
@@ -200,6 +217,7 @@ export declare const scheduledRunArgsSchema: z.ZodObject<{
|
|
|
200
217
|
namespace?: string | undefined;
|
|
201
218
|
env?: Record<string, string> | undefined;
|
|
202
219
|
secrets?: Record<string, string> | undefined;
|
|
220
|
+
volumes?: string[] | undefined;
|
|
203
221
|
}, {
|
|
204
222
|
command: string | string[];
|
|
205
223
|
schedule: string;
|
|
@@ -209,6 +227,7 @@ export declare const scheduledRunArgsSchema: z.ZodObject<{
|
|
|
209
227
|
flavor?: "cpu-basic" | "zero-a10g" | "cpu-upgrade" | "cpu-performance" | "cpu-xl" | "sprx8" | "inf2x6" | "t4-small" | "t4-medium" | "l4x1" | "l4x4" | "l40sx1" | "l40sx4" | "l40sx8" | "a10g-small" | "a10g-large" | "a10g-largex2" | "a10g-largex4" | "a100-large" | "a100x4" | "a100x8" | undefined;
|
|
210
228
|
env?: Record<string, string> | undefined;
|
|
211
229
|
secrets?: Record<string, string> | undefined;
|
|
230
|
+
volumes?: string[] | undefined;
|
|
212
231
|
detach?: boolean | undefined;
|
|
213
232
|
suspend?: boolean | undefined;
|
|
214
233
|
}>;
|
|
@@ -223,6 +242,7 @@ export declare const scheduledUvArgsSchema: z.ZodObject<{
|
|
|
223
242
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
224
243
|
secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
225
244
|
timeout: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
245
|
+
volumes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
226
246
|
detach: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
227
247
|
} & {
|
|
228
248
|
schedule: z.ZodString;
|
|
@@ -237,6 +257,7 @@ export declare const scheduledUvArgsSchema: z.ZodObject<{
|
|
|
237
257
|
namespace?: string | undefined;
|
|
238
258
|
env?: Record<string, string> | undefined;
|
|
239
259
|
secrets?: Record<string, string> | undefined;
|
|
260
|
+
volumes?: string[] | undefined;
|
|
240
261
|
with_deps?: string[] | undefined;
|
|
241
262
|
script_args?: string[] | undefined;
|
|
242
263
|
python?: string | undefined;
|
|
@@ -248,6 +269,7 @@ export declare const scheduledUvArgsSchema: z.ZodObject<{
|
|
|
248
269
|
flavor?: "cpu-basic" | "zero-a10g" | "cpu-upgrade" | "cpu-performance" | "cpu-xl" | "sprx8" | "inf2x6" | "t4-small" | "t4-medium" | "l4x1" | "l4x4" | "l40sx1" | "l40sx4" | "l40sx8" | "a10g-small" | "a10g-large" | "a10g-largex2" | "a10g-largex4" | "a100-large" | "a100x4" | "a100x8" | undefined;
|
|
249
270
|
env?: Record<string, string> | undefined;
|
|
250
271
|
secrets?: Record<string, string> | undefined;
|
|
272
|
+
volumes?: string[] | undefined;
|
|
251
273
|
detach?: boolean | undefined;
|
|
252
274
|
with_deps?: string[] | undefined;
|
|
253
275
|
script_args?: string[] | undefined;
|
package/dist/jobs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW,oEAAqE,CAAC;AAE9F,eAAO,MAAM,WAAW,sMAiBd,CAAC;AAEX,eAAO,MAAM,mBAAmB,qBAAsB,CAAC;AAEvD,eAAO,MAAM,WAAW,yQAAoE,CAAC;AAE7F,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAYrD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAKlF,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAKD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CACrB;AAMD,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,WAAW,OAAO;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"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"}
|
package/dist/jobs/types.js
CHANGED
|
@@ -50,6 +50,12 @@ export const runArgsSchema = commonArgsSchema.extend({
|
|
|
50
50
|
.optional()
|
|
51
51
|
.describe('Secrets as key-value pairs. Use HF_TOKEN=$HF_TOKEN to include your token'),
|
|
52
52
|
timeout: z.string().optional().describe('Max duration (e.g., "5m", "2h", "30s"). Default: 30m').default('30m'),
|
|
53
|
+
volumes: z
|
|
54
|
+
.array(z.string())
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Volume mounts using hf:// URLs. Format: hf://TYPE/OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]. ' +
|
|
57
|
+
'TYPE is models, datasets, spaces, or buckets. ' +
|
|
58
|
+
'Examples: ["hf://datasets/org/ds:/data:ro", "hf://buckets/org/b:/output"].'),
|
|
53
59
|
detach: z
|
|
54
60
|
.boolean()
|
|
55
61
|
.optional()
|
|
@@ -70,7 +76,16 @@ export const uvArgsSchema = commonArgsSchema.extend({
|
|
|
70
76
|
.optional()
|
|
71
77
|
.describe('Secrets as key-value pairs. Use HF_TOKEN=$HF_TOKEN to include your token'),
|
|
72
78
|
timeout: z.string().optional().default('30m').describe('Max duration'),
|
|
73
|
-
|
|
79
|
+
volumes: z
|
|
80
|
+
.array(z.string())
|
|
81
|
+
.optional()
|
|
82
|
+
.describe('Volume mounts using hf:// URLs. Format: hf://TYPE/OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]. ' +
|
|
83
|
+
'TYPE is models, datasets, spaces, or buckets.'),
|
|
84
|
+
detach: z
|
|
85
|
+
.boolean()
|
|
86
|
+
.optional()
|
|
87
|
+
.default(false)
|
|
88
|
+
.describe('If true, return immediately with job ID. If false (default), tail logs for up to 10 seconds.'),
|
|
74
89
|
});
|
|
75
90
|
export const psArgsSchema = commonArgsSchema.extend({
|
|
76
91
|
all: z.boolean().optional().default(false).describe('Show all jobs (default: only running)'),
|
package/dist/jobs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,CAAU,CAAC;AAE9F,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,OAAO;IACP,WAAW;IACX,UAAU;IACV,WAAW;IACX,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,QAAQ;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,GAAG,mBAAmB,CAAU,CAAC;AAI7F,SAAS,6BAA6B,CAAkB,MAAU;IACjE,KAAK,MAAM,CAAC;AACb,CAAC;AAED,6BAA6B,EAA2C,CAAC;AACzE,6BAA6B,EAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/jobs/commands/run.ts
CHANGED
|
@@ -18,6 +18,7 @@ export async function runCommand(args: RunArgs, client: JobsApiClient, token?: s
|
|
|
18
18
|
secrets: args.secrets,
|
|
19
19
|
timeout: args.timeout,
|
|
20
20
|
hfToken: token,
|
|
21
|
+
volumes: args.volumes,
|
|
21
22
|
});
|
|
22
23
|
|
|
23
24
|
// Submit job
|
|
@@ -39,7 +40,11 @@ export async function runCommand(args: RunArgs, client: JobsApiClient, token?: s
|
|
|
39
40
|
|
|
40
41
|
// Not detached - fetch logs
|
|
41
42
|
const logsUrl = client.getLogsUrl(job.id, job.owner.name);
|
|
42
|
-
const logResult = await fetchJobLogs(logsUrl, {
|
|
43
|
+
const logResult = await fetchJobLogs(logsUrl, {
|
|
44
|
+
token,
|
|
45
|
+
maxDuration: DEFAULT_LOG_WAIT_MS,
|
|
46
|
+
maxLines: DEFAULT_MAX_LOG_LINES,
|
|
47
|
+
});
|
|
43
48
|
|
|
44
49
|
let response = `Job started: ${job.id}\n\n`;
|
|
45
50
|
|
|
@@ -80,6 +85,7 @@ export async function uvCommand(args: UvArgs, client: JobsApiClient, token?: str
|
|
|
80
85
|
timeout: args.timeout,
|
|
81
86
|
detach: args.detach,
|
|
82
87
|
namespace: args.namespace,
|
|
88
|
+
volumes: args.volumes,
|
|
83
89
|
};
|
|
84
90
|
|
|
85
91
|
return runCommand(runArgs, client, token);
|
|
@@ -28,6 +28,7 @@ export async function scheduledRunCommand(
|
|
|
28
28
|
secrets: args.secrets,
|
|
29
29
|
timeout: args.timeout,
|
|
30
30
|
hfToken: token,
|
|
31
|
+
volumes: args.volumes,
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
// Create scheduled job spec
|
|
@@ -78,6 +79,7 @@ export async function scheduledUvCommand(
|
|
|
78
79
|
timeout: args.timeout,
|
|
79
80
|
detach: args.detach,
|
|
80
81
|
namespace: args.namespace,
|
|
82
|
+
volumes: args.volumes,
|
|
81
83
|
};
|
|
82
84
|
|
|
83
85
|
return scheduledRunCommand(scheduledRunArgs, client, token);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JobSpec } from '../types.js';
|
|
1
|
+
import type { JobSpec, JobVolume, JobVolumeType } from '../types.js';
|
|
2
2
|
import { parse as parseShellArgs } from 'shell-quote';
|
|
3
3
|
|
|
4
4
|
interface EnvToken {
|
|
@@ -7,6 +7,17 @@ interface EnvToken {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
const SPECIAL_PARAMS = new Set(['*', '@', '#', '?', '!', '-', '_']);
|
|
10
|
+
const HF_VOLUME_PREFIX = 'hf://';
|
|
11
|
+
const VOLUME_FORMAT_HELP =
|
|
12
|
+
'Expected format: hf://[TYPE/]OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw], ' +
|
|
13
|
+
'e.g. hf://datasets/org/dataset:/data:ro or hf://buckets/org/bucket:/output.';
|
|
14
|
+
const HF_VOLUME_TYPES: Record<string, JobVolumeType> = {
|
|
15
|
+
models: 'model',
|
|
16
|
+
datasets: 'dataset',
|
|
17
|
+
spaces: 'space',
|
|
18
|
+
buckets: 'bucket',
|
|
19
|
+
};
|
|
20
|
+
const SINGULAR_VOLUME_TYPES = new Set(['model', 'dataset', 'space', 'bucket']);
|
|
10
21
|
|
|
11
22
|
function isEnvToken(entry: unknown): entry is EnvToken {
|
|
12
23
|
return Boolean(entry && typeof entry === 'object' && (entry as EnvToken).type === 'env');
|
|
@@ -50,9 +61,7 @@ export function parseTimeout(timeout: string): number {
|
|
|
50
61
|
if (!isNaN(seconds)) {
|
|
51
62
|
return seconds;
|
|
52
63
|
}
|
|
53
|
-
throw new Error(
|
|
54
|
-
`Invalid timeout format: "${timeout}". Use format like "5m", "2h", "30s", or plain seconds.`
|
|
55
|
-
);
|
|
64
|
+
throw new Error(`Invalid timeout format: "${timeout}". Use format like "5m", "2h", "30s", or plain seconds.`);
|
|
56
65
|
}
|
|
57
66
|
|
|
58
67
|
const value = parseFloat(match[1]);
|
|
@@ -93,7 +102,7 @@ export function parseCommand(command: string | string[]): { command: string[]; a
|
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
// Parse the command string using shell-quote for POSIX-compliant parsing
|
|
96
|
-
const parsed = parseShellArgs<EnvToken>(command, key => ({ type: 'env', key }));
|
|
105
|
+
const parsed = parseShellArgs<EnvToken>(command, (key) => ({ type: 'env', key }));
|
|
97
106
|
|
|
98
107
|
// Convert parsed result to string array
|
|
99
108
|
// shell-quote can return various types (strings, objects for operators, etc.)
|
|
@@ -121,6 +130,82 @@ export function parseCommand(command: string | string[]): { command: string[]; a
|
|
|
121
130
|
return { command: stringArgs, arguments: [] };
|
|
122
131
|
}
|
|
123
132
|
|
|
133
|
+
function invalidVolume(rawSpec: string, message: string): Error {
|
|
134
|
+
return new Error(`Invalid volume "${rawSpec}". ${message} ${VOLUME_FORMAT_HELP}`);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function parseVolume(rawSpec: string): JobVolume {
|
|
138
|
+
let spec = rawSpec;
|
|
139
|
+
let readOnly: boolean | undefined;
|
|
140
|
+
|
|
141
|
+
if (spec.endsWith(':ro')) {
|
|
142
|
+
readOnly = true;
|
|
143
|
+
spec = spec.slice(0, -3);
|
|
144
|
+
} else if (spec.endsWith(':rw')) {
|
|
145
|
+
readOnly = false;
|
|
146
|
+
spec = spec.slice(0, -3);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (!spec.startsWith(HF_VOLUME_PREFIX)) {
|
|
150
|
+
throw invalidVolume(rawSpec, `Volume source must start with "${HF_VOLUME_PREFIX}".`);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const body = spec.slice(HF_VOLUME_PREFIX.length);
|
|
154
|
+
const mountSeparator = body.lastIndexOf(':/');
|
|
155
|
+
if (mountSeparator === -1) {
|
|
156
|
+
throw invalidVolume(rawSpec, 'Missing mount path.');
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const sourcePart = body.slice(0, mountSeparator);
|
|
160
|
+
const mountPath = body.slice(mountSeparator + 1);
|
|
161
|
+
if (!sourcePart) {
|
|
162
|
+
throw invalidVolume(rawSpec, 'Missing Hub source before mount path.');
|
|
163
|
+
}
|
|
164
|
+
if (!mountPath.startsWith('/') || mountPath === '/') {
|
|
165
|
+
throw invalidVolume(rawSpec, `Mount path must be a non-empty absolute path, got "${mountPath}".`);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const segments = sourcePart.split('/');
|
|
169
|
+
const firstSegment = segments[0];
|
|
170
|
+
if (!firstSegment) {
|
|
171
|
+
throw invalidVolume(rawSpec, 'Missing Hub source type or owner.');
|
|
172
|
+
}
|
|
173
|
+
if (SINGULAR_VOLUME_TYPES.has(firstSegment)) {
|
|
174
|
+
throw invalidVolume(rawSpec, `Type prefix must be plural, got "${firstSegment}/".`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const explicitType = HF_VOLUME_TYPES[firstSegment];
|
|
178
|
+
const type = explicitType ?? 'model';
|
|
179
|
+
const locationSegments = explicitType ? segments.slice(1) : segments;
|
|
180
|
+
if (locationSegments.length < 2 || !locationSegments[0] || !locationSegments[1]) {
|
|
181
|
+
throw invalidVolume(rawSpec, 'Hub source must include OWNER/NAME.');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const source = `${locationSegments[0]}/${locationSegments[1]}`;
|
|
185
|
+
const path = locationSegments.slice(2).join('/') || undefined;
|
|
186
|
+
const volume: JobVolume = { type, source, mountPath };
|
|
187
|
+
|
|
188
|
+
if (readOnly !== undefined) {
|
|
189
|
+
volume.readOnly = readOnly;
|
|
190
|
+
}
|
|
191
|
+
if (path) {
|
|
192
|
+
volume.path = path;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return volume;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Parse hf:// volume mount strings into the Jobs API payload shape.
|
|
200
|
+
*/
|
|
201
|
+
export function parseVolumes(volumes?: string[]): JobVolume[] | undefined {
|
|
202
|
+
if (!volumes || volumes.length === 0) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return volumes.map(parseVolume);
|
|
207
|
+
}
|
|
208
|
+
|
|
124
209
|
/**
|
|
125
210
|
* Replace HF token placeholder with actual token if available
|
|
126
211
|
*/
|
|
@@ -162,6 +247,7 @@ export function createJobSpec(args: {
|
|
|
162
247
|
secrets?: Record<string, string>;
|
|
163
248
|
timeout?: string;
|
|
164
249
|
hfToken?: string;
|
|
250
|
+
volumes?: string[];
|
|
165
251
|
}): JobSpec {
|
|
166
252
|
// Validate required fields
|
|
167
253
|
if (!args.image) {
|
|
@@ -176,6 +262,7 @@ export function createJobSpec(args: {
|
|
|
176
262
|
const timeoutSeconds = args.timeout ? parseTimeout(args.timeout) : undefined;
|
|
177
263
|
const environment = transformEnvMap(args.env, args.hfToken) || {};
|
|
178
264
|
const secrets = transformEnvMap(args.secrets, args.hfToken) || {};
|
|
265
|
+
const volumes = parseVolumes(args.volumes);
|
|
179
266
|
|
|
180
267
|
const spec: JobSpec = {
|
|
181
268
|
...imageSource,
|
|
@@ -186,6 +273,9 @@ export function createJobSpec(args: {
|
|
|
186
273
|
secrets,
|
|
187
274
|
timeoutSeconds,
|
|
188
275
|
};
|
|
276
|
+
if (volumes) {
|
|
277
|
+
spec.volumes = volumes;
|
|
278
|
+
}
|
|
189
279
|
|
|
190
280
|
return spec;
|
|
191
281
|
}
|
package/src/jobs/jobs-tool.ts
CHANGED
|
@@ -337,6 +337,42 @@ Manage compute jobs on Hugging Face infrastructure.
|
|
|
337
337
|
|
|
338
338
|
${renderExampleSection('Run a simple job', 'run')}${renderExampleSection('Run a Python script with UV', 'uv')}
|
|
339
339
|
|
|
340
|
+
## Deep Hub Dataset/Repo Analysis
|
|
341
|
+
|
|
342
|
+
Use Jobs for deep analysis prompts involving Hugging Face datasets, models, Spaces, repos, traces, or large Hub files—especially when the user asks to "analyze", "find trends", "process all rows/files", "run a complete analysis", "take your time", or "install/use Python libraries".
|
|
343
|
+
|
|
344
|
+
Recommended workflow:
|
|
345
|
+
1. Inspect the repo with \`hub_repo_details\` for schema, splits, and parquet URLs.
|
|
346
|
+
2. Run \`operation: "uv"\` with a self-contained Python script; do not call \`{"operation": "uv"}\` by itself except to request help.
|
|
347
|
+
3. Always put third-party packages in \`with_deps\`; do not assume packages like \`pandas\`, \`polars\`, \`pyarrow\`, \`datasets\`, or \`huggingface_hub\` are installed. Prefer \`with_deps\` over relying on inline PEP 723 script metadata.
|
|
348
|
+
4. Prefer converted parquet URLs for Hub datasets when available; they are often more reliable for mixed JSONL/session repos than \`datasets.load_dataset(...)\`.
|
|
349
|
+
5. Print the final report at the end of the job. If the initial response only shows installation logs or partial output, call \`logs\` with the exact returned job ID and a larger \`tail\`, e.g. \`{"tail": 500}\`.
|
|
350
|
+
6. Jobs do not automatically inherit the MCP server's Hugging Face token inside the container. For private/gated data or uploads, pass \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\`.
|
|
351
|
+
|
|
352
|
+
Example:
|
|
353
|
+
\`\`\`json
|
|
354
|
+
{
|
|
355
|
+
"operation": "uv",
|
|
356
|
+
"args": {
|
|
357
|
+
"with_deps": ["polars", "pyarrow", "huggingface_hub"],
|
|
358
|
+
"timeout": "60m",
|
|
359
|
+
"flavor": "cpu-upgrade",
|
|
360
|
+
"script": "import polars as pl\\nurl = 'PARQUET_URL_FROM_HUB_REPO_DETAILS'\\ndf = pl.read_parquet(url)\\nprint(df.shape)\\nprint(df.head())"
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
\`\`\`
|
|
364
|
+
|
|
365
|
+
If output is incomplete, fetch more logs:
|
|
366
|
+
\`\`\`json
|
|
367
|
+
{
|
|
368
|
+
"operation": "logs",
|
|
369
|
+
"args": {
|
|
370
|
+
"job_id": "JOB_ID_FROM_RUN_RESPONSE",
|
|
371
|
+
"tail": 500
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
\`\`\`
|
|
375
|
+
|
|
340
376
|
## Hardware Flavors
|
|
341
377
|
|
|
342
378
|
${HARDWARE_FLAVORS_SECTION}
|
|
@@ -357,6 +393,28 @@ ${HARDWARE_FLAVORS_SECTION}
|
|
|
357
393
|
- Include newline characters directly in the argument (e.g., \`"first line\\nsecond line"\`)
|
|
358
394
|
- UV inline scripts are automatically base64-decoded inside the container; just send the raw script text
|
|
359
395
|
|
|
396
|
+
## Volumes
|
|
397
|
+
|
|
398
|
+
Attach Hub repositories or buckets into the job container with \`hf://\` volume URLs.
|
|
399
|
+
|
|
400
|
+
Format: \`hf://[TYPE/]OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]\`
|
|
401
|
+
|
|
402
|
+
- \`TYPE\` is one of \`models\`, \`datasets\`, \`spaces\`, or \`buckets\`; omitted type defaults to models.
|
|
403
|
+
- \`OWNER/NAME\` source IDs are required.
|
|
404
|
+
- \`:ro\` and \`:rw\` are optional; backend defaults are preserved when omitted.
|
|
405
|
+
|
|
406
|
+
Example:
|
|
407
|
+
\`\`\`json
|
|
408
|
+
{
|
|
409
|
+
"operation": "run",
|
|
410
|
+
"args": {
|
|
411
|
+
"image": "python:3.12",
|
|
412
|
+
"command": ["python", "-c", "import os; print(os.listdir('/data'))"],
|
|
413
|
+
"volumes": ["hf://datasets/org/dataset:/data:ro"]
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
\`\`\`
|
|
417
|
+
|
|
360
418
|
### Show command-specific help
|
|
361
419
|
Call this tool with:
|
|
362
420
|
\`\`\`json
|
|
@@ -378,9 +436,8 @@ Call this tool with:
|
|
|
378
436
|
export const HF_JOBS_TOOL_CONFIG = {
|
|
379
437
|
name: 'hf_jobs',
|
|
380
438
|
description:
|
|
381
|
-
'
|
|
382
|
-
'
|
|
383
|
-
'Call this tool with no operation for full usage instructions and examples. ',
|
|
439
|
+
'Remote compute for Hugging Face workflows. Run Python/UV or Docker jobs to deeply analyze Hub datasets, repos, traces, models, and large files; compute trends/statistics; run batch inference/evaluation; or perform long-running work with installed libraries. ' +
|
|
440
|
+
'Use for dataset/repo analysis prompts when local chat inspection is insufficient. Includes submit, logs, inspect, cancel, schedule, and volume mounting.',
|
|
384
441
|
schema: z.object({
|
|
385
442
|
operation: z
|
|
386
443
|
.enum(OPERATION_NAMES)
|
package/src/jobs/types.ts
CHANGED
|
@@ -60,6 +60,20 @@ export interface JobOwner {
|
|
|
60
60
|
type: 'user' | 'org';
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Hugging Face Hub volume mounted into a Job container.
|
|
65
|
+
*/
|
|
66
|
+
export type JobVolumeType = 'bucket' | 'model' | 'dataset' | 'space';
|
|
67
|
+
|
|
68
|
+
export interface JobVolume {
|
|
69
|
+
type: JobVolumeType;
|
|
70
|
+
source: string;
|
|
71
|
+
mountPath: string;
|
|
72
|
+
revision?: string;
|
|
73
|
+
readOnly?: boolean;
|
|
74
|
+
path?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
63
77
|
/**
|
|
64
78
|
* Job information from API
|
|
65
79
|
* Based on OpenAPI schema
|
|
@@ -97,6 +111,7 @@ export interface JobSpec {
|
|
|
97
111
|
secrets?: Record<string, string>;
|
|
98
112
|
flavor: string;
|
|
99
113
|
timeoutSeconds?: number;
|
|
114
|
+
volumes?: JobVolume[];
|
|
100
115
|
}
|
|
101
116
|
|
|
102
117
|
/**
|
|
@@ -164,6 +179,14 @@ export const runArgsSchema = commonArgsSchema.extend({
|
|
|
164
179
|
.optional()
|
|
165
180
|
.describe('Secrets as key-value pairs. Use HF_TOKEN=$HF_TOKEN to include your token'),
|
|
166
181
|
timeout: z.string().optional().describe('Max duration (e.g., "5m", "2h", "30s"). Default: 30m').default('30m'),
|
|
182
|
+
volumes: z
|
|
183
|
+
.array(z.string())
|
|
184
|
+
.optional()
|
|
185
|
+
.describe(
|
|
186
|
+
'Volume mounts using hf:// URLs. Format: hf://TYPE/OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]. ' +
|
|
187
|
+
'TYPE is models, datasets, spaces, or buckets. ' +
|
|
188
|
+
'Examples: ["hf://datasets/org/ds:/data:ro", "hf://buckets/org/b:/output"].'
|
|
189
|
+
),
|
|
167
190
|
detach: z
|
|
168
191
|
.boolean()
|
|
169
192
|
.optional()
|
|
@@ -187,7 +210,18 @@ export const uvArgsSchema = commonArgsSchema.extend({
|
|
|
187
210
|
.optional()
|
|
188
211
|
.describe('Secrets as key-value pairs. Use HF_TOKEN=$HF_TOKEN to include your token'),
|
|
189
212
|
timeout: z.string().optional().default('30m').describe('Max duration'),
|
|
190
|
-
|
|
213
|
+
volumes: z
|
|
214
|
+
.array(z.string())
|
|
215
|
+
.optional()
|
|
216
|
+
.describe(
|
|
217
|
+
'Volume mounts using hf:// URLs. Format: hf://TYPE/OWNER/NAME[/PATH]:/MOUNT_PATH[:ro|:rw]. ' +
|
|
218
|
+
'TYPE is models, datasets, spaces, or buckets.'
|
|
219
|
+
),
|
|
220
|
+
detach: z
|
|
221
|
+
.boolean()
|
|
222
|
+
.optional()
|
|
223
|
+
.default(false)
|
|
224
|
+
.describe('If true, return immediately with job ID. If false (default), tail logs for up to 10 seconds.'),
|
|
191
225
|
});
|
|
192
226
|
|
|
193
227
|
// PS command args
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
parseTimeout,
|
|
4
|
+
parseImageSource,
|
|
5
|
+
parseCommand,
|
|
6
|
+
parseVolumes,
|
|
7
|
+
createJobSpec,
|
|
8
|
+
} from '../../src/jobs/commands/utils.js';
|
|
3
9
|
|
|
4
10
|
describe('Jobs Command Translation', () => {
|
|
5
11
|
describe('parseTimeout', () => {
|
|
@@ -104,7 +110,7 @@ describe('Jobs Command Translation', () => {
|
|
|
104
110
|
});
|
|
105
111
|
|
|
106
112
|
it('should handle single-quoted strings', () => {
|
|
107
|
-
const result = parseCommand(
|
|
113
|
+
const result = parseCommand('python -c \'print("Hello world!")\'');
|
|
108
114
|
expect(result.command).toEqual(['python', '-c', 'print("Hello world!")']);
|
|
109
115
|
});
|
|
110
116
|
|
|
@@ -203,6 +209,67 @@ describe('Jobs Command Translation', () => {
|
|
|
203
209
|
});
|
|
204
210
|
});
|
|
205
211
|
|
|
212
|
+
describe('parseVolumes', () => {
|
|
213
|
+
it('should parse explicit model volume', () => {
|
|
214
|
+
expect(parseVolumes(['hf://models/org/model:/model'])).toEqual([
|
|
215
|
+
{ type: 'model', source: 'org/model', mountPath: '/model' },
|
|
216
|
+
]);
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
it('should parse implicit model volume with owner and name', () => {
|
|
220
|
+
expect(parseVolumes(['hf://org/model:/model'])).toEqual([
|
|
221
|
+
{ type: 'model', source: 'org/model', mountPath: '/model' },
|
|
222
|
+
]);
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
it('should parse dataset volume with read-only suffix', () => {
|
|
226
|
+
expect(parseVolumes(['hf://datasets/org/ds:/data:ro'])).toEqual([
|
|
227
|
+
{ type: 'dataset', source: 'org/ds', mountPath: '/data', readOnly: true },
|
|
228
|
+
]);
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
it('should parse bucket subpath with read-write suffix', () => {
|
|
232
|
+
expect(parseVolumes(['hf://buckets/org/b/sub/dir:/output:rw'])).toEqual([
|
|
233
|
+
{
|
|
234
|
+
type: 'bucket',
|
|
235
|
+
source: 'org/b',
|
|
236
|
+
path: 'sub/dir',
|
|
237
|
+
mountPath: '/output',
|
|
238
|
+
readOnly: false,
|
|
239
|
+
},
|
|
240
|
+
]);
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
it('should parse multiple volumes', () => {
|
|
244
|
+
expect(parseVolumes(['hf://datasets/org/ds:/data:ro', 'hf://buckets/org/b:/output'])).toEqual([
|
|
245
|
+
{ type: 'dataset', source: 'org/ds', mountPath: '/data', readOnly: true },
|
|
246
|
+
{ type: 'bucket', source: 'org/b', mountPath: '/output' },
|
|
247
|
+
]);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
it('should omit empty volumes', () => {
|
|
251
|
+
expect(parseVolumes()).toBeUndefined();
|
|
252
|
+
expect(parseVolumes([])).toBeUndefined();
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('should reject missing hf prefix', () => {
|
|
256
|
+
expect(() => parseVolumes(['datasets/org/ds:/data'])).toThrow(/Invalid volume.*hf:\/\//);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it('should reject single-segment source ids', () => {
|
|
260
|
+
expect(() => parseVolumes(['hf://gpt2:/model'])).toThrow(/OWNER\/NAME/);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it('should reject singular type prefixes', () => {
|
|
264
|
+
expect(() => parseVolumes(['hf://dataset/org/ds:/data'])).toThrow(/plural/);
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it('should reject invalid mount paths', () => {
|
|
268
|
+
expect(() => parseVolumes(['hf://datasets/org/ds:/'])).toThrow(/Mount path/);
|
|
269
|
+
expect(() => parseVolumes(['hf://datasets/org/ds:data'])).toThrow(/Missing mount path/);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
|
|
206
273
|
describe('createJobSpec', () => {
|
|
207
274
|
it('should create a basic job spec', () => {
|
|
208
275
|
const spec = createJobSpec({
|
|
@@ -327,5 +394,24 @@ describe('Jobs Command Translation', () => {
|
|
|
327
394
|
|
|
328
395
|
expect(spec.command).toEqual(['bash', '-c', 'echo hello']);
|
|
329
396
|
});
|
|
397
|
+
|
|
398
|
+
it('should include volumes when provided', () => {
|
|
399
|
+
const spec = createJobSpec({
|
|
400
|
+
image: 'python:3.12',
|
|
401
|
+
command: ['echo', 'hi'],
|
|
402
|
+
volumes: ['hf://datasets/org/ds:/data:ro'],
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
expect(spec.volumes).toEqual([{ type: 'dataset', source: 'org/ds', mountPath: '/data', readOnly: true }]);
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it('should omit volumes when not provided', () => {
|
|
409
|
+
const spec = createJobSpec({
|
|
410
|
+
image: 'python:3.12',
|
|
411
|
+
command: ['echo', 'hi'],
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
expect(spec).not.toHaveProperty('volumes');
|
|
415
|
+
});
|
|
330
416
|
});
|
|
331
417
|
});
|