@llmindset/hf-mcp 0.2.34 → 0.2.36
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/docs-search/docs-semantic-search.js +1 -1
- package/dist/docs-search/docs-semantic-search.js.map +1 -1
- package/dist/jobs/api-client.d.ts.map +1 -1
- package/dist/jobs/api-client.js +8 -17
- package/dist/jobs/api-client.js.map +1 -1
- package/dist/jobs/commands/run.d.ts.map +1 -1
- package/dist/jobs/commands/run.js +4 -24
- package/dist/jobs/commands/run.js.map +1 -1
- package/dist/jobs/commands/scheduled.d.ts +2 -2
- package/dist/jobs/commands/scheduled.d.ts.map +1 -1
- package/dist/jobs/commands/scheduled.js +7 -23
- package/dist/jobs/commands/scheduled.js.map +1 -1
- package/dist/jobs/commands/utils.d.ts +1 -0
- package/dist/jobs/commands/utils.d.ts.map +1 -1
- package/dist/jobs/commands/utils.js +23 -2
- package/dist/jobs/commands/utils.js.map +1 -1
- package/dist/jobs/commands/uv-utils.d.ts +7 -0
- package/dist/jobs/commands/uv-utils.d.ts.map +1 -0
- package/dist/jobs/commands/uv-utils.js +23 -0
- package/dist/jobs/commands/uv-utils.js.map +1 -0
- package/dist/jobs/tool.js +4 -4
- package/dist/jobs/tool.js.map +1 -1
- package/package.json +2 -2
- package/src/docs-search/docs-semantic-search.ts +1 -1
- package/src/jobs/api-client.ts +9 -17
- package/src/jobs/commands/run.ts +4 -39
- package/src/jobs/commands/scheduled.ts +15 -36
- package/src/jobs/commands/utils.ts +35 -2
- package/src/jobs/commands/uv-utils.ts +33 -0
- package/src/jobs/tool.ts +4 -4
- package/test/jobs/command-translation.spec.ts +54 -0
|
@@ -4,7 +4,7 @@ import { escapeMarkdown, estimateTokens } from '../utilities.js';
|
|
|
4
4
|
import { DOC_FETCH_CONFIG } from './doc-fetch.js';
|
|
5
5
|
export const DOCS_SEMANTIC_SEARCH_CONFIG = {
|
|
6
6
|
name: 'hf_doc_search',
|
|
7
|
-
description: 'Search and Discover Hugging Face Product and Library documentation.
|
|
7
|
+
description: 'Search and Discover Hugging Face Product and Library documentation. Send an empty query to discover structure and navigation instructions. ' +
|
|
8
8
|
'You MUST consult this tool for the most up-to-date information when using Hugging Face libraries. Combine with the Product filter to focus results.',
|
|
9
9
|
schema: z.object({
|
|
10
10
|
query: z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-semantic-search.js","sourceRoot":"","sources":["../../src/docs-search/docs-semantic-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C,IAAI,EAAE,eAAe;IACrB,WAAW,EACV,
|
|
1
|
+
{"version":3,"file":"docs-semantic-search.js","sourceRoot":"","sources":["../../src/docs-search/docs-semantic-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/jobs/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgBvF,qBAAa,aAAc,SAAQ,SAAS;IAC3C,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAW1C,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBjD,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/jobs/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgBvF,qBAAa,aAAc,SAAQ,SAAS;IAC3C,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAW1C,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBjD,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWhD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAQ9C,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBzF,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWlE,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWtF,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7E,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9E,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQnF"}
|
package/dist/jobs/api-client.js
CHANGED
|
@@ -19,23 +19,14 @@ export class JobsApiClient extends HfApiCall {
|
|
|
19
19
|
async runJob(jobSpec, namespace) {
|
|
20
20
|
const ns = await this.getNamespace(namespace);
|
|
21
21
|
const url = `https://huggingface.co/api/jobs/${ns}`;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
body: JSON.stringify(jobSpec),
|
|
31
|
-
});
|
|
32
|
-
console.error('[Jobs API] Success:', result.id);
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error('[Jobs API] Error:', error);
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
22
|
+
const result = await this.fetchFromApi(url, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
headers: {
|
|
25
|
+
'Content-Type': 'application/json',
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify(jobSpec),
|
|
28
|
+
});
|
|
29
|
+
return result;
|
|
39
30
|
}
|
|
40
31
|
async listJobs(namespace) {
|
|
41
32
|
const ns = await this.getNamespace(namespace);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/jobs/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAiB9C,MAAM,OAAO,aAAc,SAAQ,SAAS;IACnC,cAAc,GAAkB,IAAI,CAAC;IAE7C,YAAY,OAAgB,EAAE,SAAkB;QAE/C,KAAK,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,IAAI,CAAC;IACzC,CAAC;IAMD,KAAK,CAAC,YAAY,CAAC,SAAkB;QACpC,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAiB,sCAAsC,CAAC,CAAC;QAC/F,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAMD,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,SAAkB;QAChD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,mCAAmC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/jobs/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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,CAiDtG;AAMD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCpG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createJobSpec } from './utils.js';
|
|
2
2
|
import { fetchJobLogs } from '../sse-handler.js';
|
|
3
|
+
import { buildUvCommand, UV_DEFAULT_IMAGE, wrapInlineScript } from './uv-utils.js';
|
|
3
4
|
export async function runCommand(args, client, token) {
|
|
4
5
|
const jobSpec = createJobSpec({
|
|
5
6
|
image: args.image,
|
|
@@ -8,6 +9,7 @@ export async function runCommand(args, client, token) {
|
|
|
8
9
|
env: args.env,
|
|
9
10
|
secrets: args.secrets,
|
|
10
11
|
timeout: args.timeout,
|
|
12
|
+
hfToken: token,
|
|
11
13
|
});
|
|
12
14
|
const job = await client.runJob(jobSpec, args.namespace);
|
|
13
15
|
const jobUrl = `https://huggingface.co/jobs/${job.owner.name}/${job.id}`;
|
|
@@ -39,20 +41,14 @@ To inspect: \`hf_jobs("inspect", {"job_id": "${job.id}"})\``;
|
|
|
39
41
|
return response;
|
|
40
42
|
}
|
|
41
43
|
export async function uvCommand(args, client, token) {
|
|
42
|
-
const image =
|
|
44
|
+
const image = UV_DEFAULT_IMAGE;
|
|
43
45
|
const scriptSource = args.script;
|
|
44
46
|
let command;
|
|
45
47
|
if (scriptSource.startsWith('http://') || scriptSource.startsWith('https://')) {
|
|
46
48
|
command = buildUvCommand(scriptSource, args);
|
|
47
49
|
}
|
|
48
50
|
else if (scriptSource.includes('\n')) {
|
|
49
|
-
const
|
|
50
|
-
const depsPart = args.with_deps && args.with_deps.length > 0
|
|
51
|
-
? args.with_deps.map(dep => `--with ${dep}`).join(' ')
|
|
52
|
-
: '';
|
|
53
|
-
const pythonPart = args.python ? `-p ${args.python}` : '';
|
|
54
|
-
const uvArgs = [depsPart, pythonPart].filter(Boolean).join(' ');
|
|
55
|
-
const shellSnippet = `echo "${encoded}" | base64 -d | uv run${uvArgs ? ` ${uvArgs}` : ''} -`;
|
|
51
|
+
const shellSnippet = wrapInlineScript(scriptSource, args);
|
|
56
52
|
command = ['/bin/sh', '-lc', shellSnippet];
|
|
57
53
|
}
|
|
58
54
|
else {
|
|
@@ -70,20 +66,4 @@ export async function uvCommand(args, client, token) {
|
|
|
70
66
|
};
|
|
71
67
|
return runCommand(runArgs, client, token);
|
|
72
68
|
}
|
|
73
|
-
function buildUvCommand(script, args) {
|
|
74
|
-
const parts = ['uv', 'run'];
|
|
75
|
-
if (args.with_deps && args.with_deps.length > 0) {
|
|
76
|
-
for (const dep of args.with_deps) {
|
|
77
|
-
parts.push('--with', dep);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (args.python) {
|
|
81
|
-
parts.push('-p', args.python);
|
|
82
|
-
}
|
|
83
|
-
parts.push(script);
|
|
84
|
-
if (args.script_args && args.script_args.length > 0) {
|
|
85
|
-
parts.push(...args.script_args);
|
|
86
|
-
}
|
|
87
|
-
return parts.join(' ');
|
|
88
|
-
}
|
|
89
69
|
//# sourceMappingURL=run.js.map
|
|
@@ -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,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/jobs/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ScheduledRunArgs, ScheduledUvArgs, ScheduledPsArgs, ScheduledJobArgs } from '../types.js';
|
|
2
2
|
import type { JobsApiClient } from '../api-client.js';
|
|
3
|
-
export declare function scheduledRunCommand(args: ScheduledRunArgs, client: JobsApiClient): Promise<string>;
|
|
4
|
-
export declare function scheduledUvCommand(args: ScheduledUvArgs, client: JobsApiClient): Promise<string>;
|
|
3
|
+
export declare function scheduledRunCommand(args: ScheduledRunArgs, client: JobsApiClient, token?: string): Promise<string>;
|
|
4
|
+
export declare function scheduledUvCommand(args: ScheduledUvArgs, client: JobsApiClient, token?: string): Promise<string>;
|
|
5
5
|
export declare function scheduledPsCommand(args: ScheduledPsArgs, client: JobsApiClient): Promise<string>;
|
|
6
6
|
export declare function scheduledInspectCommand(args: ScheduledJobArgs, client: JobsApiClient): Promise<string>;
|
|
7
7
|
export declare function scheduledDeleteCommand(args: ScheduledJobArgs, client: JobsApiClient): Promise<string>;
|
|
@@ -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;
|
|
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,CA+BjB;AAMD,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CA+BjB;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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { formatScheduledJobsTable, formatScheduledJobDetails } from '../formatters.js';
|
|
2
2
|
import { createJobSpec } from './utils.js';
|
|
3
|
-
|
|
3
|
+
import { buildUvCommand, UV_DEFAULT_IMAGE, wrapInlineScript } from './uv-utils.js';
|
|
4
|
+
export async function scheduledRunCommand(args, client, token) {
|
|
4
5
|
const jobSpec = createJobSpec({
|
|
5
6
|
image: args.image,
|
|
6
7
|
command: args.command,
|
|
@@ -8,6 +9,7 @@ export async function scheduledRunCommand(args, client) {
|
|
|
8
9
|
env: args.env,
|
|
9
10
|
secrets: args.secrets,
|
|
10
11
|
timeout: args.timeout,
|
|
12
|
+
hfToken: token,
|
|
11
13
|
});
|
|
12
14
|
const scheduledSpec = {
|
|
13
15
|
schedule: args.schedule,
|
|
@@ -25,17 +27,15 @@ export async function scheduledRunCommand(args, client) {
|
|
|
25
27
|
To inspect: \`hf_jobs("scheduled inspect", {"scheduled_job_id": "${scheduledJob.id}"})\`
|
|
26
28
|
To list all: \`hf_jobs("scheduled ps")\``;
|
|
27
29
|
}
|
|
28
|
-
export async function scheduledUvCommand(args, client) {
|
|
29
|
-
const image =
|
|
30
|
+
export async function scheduledUvCommand(args, client, token) {
|
|
31
|
+
const image = UV_DEFAULT_IMAGE;
|
|
30
32
|
const scriptSource = args.script;
|
|
31
33
|
let command;
|
|
32
34
|
if (scriptSource.startsWith('http://') || scriptSource.startsWith('https://')) {
|
|
33
35
|
command = buildUvCommand(scriptSource, args);
|
|
34
36
|
}
|
|
35
37
|
else if (scriptSource.includes('\n')) {
|
|
36
|
-
|
|
37
|
-
const deps = args.with_deps && args.with_deps.length > 0 ? args.with_deps.map((dep) => `--with ${dep}`).join(' ') + ' ' : '';
|
|
38
|
-
command = `echo "${encoded}" | base64 -d | uv run ${deps}${args.python ? `-p ${args.python}` : ''} -`;
|
|
38
|
+
command = wrapInlineScript(scriptSource, args);
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
41
|
command = buildUvCommand(scriptSource, args);
|
|
@@ -52,23 +52,7 @@ export async function scheduledUvCommand(args, client) {
|
|
|
52
52
|
detach: args.detach,
|
|
53
53
|
namespace: args.namespace,
|
|
54
54
|
};
|
|
55
|
-
return scheduledRunCommand(scheduledRunArgs, client);
|
|
56
|
-
}
|
|
57
|
-
function buildUvCommand(script, args) {
|
|
58
|
-
const parts = ['uv', 'run'];
|
|
59
|
-
if (args.with_deps && args.with_deps.length > 0) {
|
|
60
|
-
for (const dep of args.with_deps) {
|
|
61
|
-
parts.push('--with', dep);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (args.python) {
|
|
65
|
-
parts.push('-p', args.python);
|
|
66
|
-
}
|
|
67
|
-
parts.push(script);
|
|
68
|
-
if (args.script_args && args.script_args.length > 0) {
|
|
69
|
-
parts.push(...args.script_args);
|
|
70
|
-
}
|
|
71
|
-
return parts.join(' ');
|
|
55
|
+
return scheduledRunCommand(scheduledRunArgs, client, token);
|
|
72
56
|
}
|
|
73
57
|
export async function scheduledPsCommand(args, client) {
|
|
74
58
|
const allJobs = await client.listScheduledJobs(args.namespace);
|
|
@@ -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;
|
|
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,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMnF,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;KACd,CAAC,CAAC;IAGH,MAAM,aAAa,GAAqB;QACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO;KACP,CAAC;IAGF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpF,OAAO;;wBAEgB,YAAY,CAAC,EAAE;gBACvB,YAAY,CAAC,QAAQ;iBACpB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACpC,YAAY,CAAC,OAAO,IAAI,KAAK;;mEAEsB,YAAY,CAAC,EAAE;yCACzC,CAAC;AAC1C,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,IAAqB,EACrB,MAAqB,EACrB,KAAc;IAGd,MAAM,KAAK,GAAG,gBAAgB,CAAC;IAG/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,IAAI,OAAe,CAAC;IAEpB,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/E,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACP,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,gBAAgB,GAAqB;QAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK;QACL,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;KACzB,CAAC;IAEF,OAAO,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAqB,EAAE,MAAqB;IAEpF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAG/D,IAAI,IAAI,GAAG,OAAO,CAAC;IAGnB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAGD,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,0BAA0B,CAAC;QACnC,CAAC;QACD,OAAO,6EAA6E,CAAC;IACtF,CAAC;IAED,OAAO,qBAAqB,IAAI,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM;;EAE3D,KAAK,EAAE,CAAC;AACV,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAsB,EAAE,MAAqB;IAC1F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,iCAAiC,gBAAgB,EAAE,CAAC;AAC5D,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAsB,EAAE,MAAqB;IACzF,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvE,OAAO,mBAAmB,IAAI,CAAC,gBAAgB,oBAAoB,CAAC;AACrE,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAsB,EAAE,MAAqB;IAC1F,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAExE,OAAO,mBAAmB,IAAI,CAAC,gBAAgB;;iEAEiB,IAAI,CAAC,gBAAgB,OAAO,CAAC;AAC9F,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAsB,EAAE,MAAqB;IACzF,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvE,OAAO,mBAAmB,IAAI,CAAC,gBAAgB;;mEAEmB,IAAI,CAAC,gBAAgB,OAAO,CAAC;AAChG,CAAC"}
|
|
@@ -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;AAqC3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBpD;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;
|
|
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;AAqC3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBpD;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;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;CACjB,GAAG,OAAO,CA0BV"}
|
|
@@ -75,6 +75,25 @@ export function parseCommand(command) {
|
|
|
75
75
|
}
|
|
76
76
|
return { command: stringArgs, arguments: [] };
|
|
77
77
|
}
|
|
78
|
+
function replaceTokenPlaceholder(value, hfToken) {
|
|
79
|
+
if (!hfToken) {
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
if (value === '$HF_TOKEN' || value === '${HF_TOKEN}') {
|
|
83
|
+
return hfToken;
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
function transformEnvMap(map, hfToken) {
|
|
88
|
+
if (!map) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
const transformedEntries = Object.entries(map).map(([key, value]) => [
|
|
92
|
+
key,
|
|
93
|
+
replaceTokenPlaceholder(value, hfToken),
|
|
94
|
+
]);
|
|
95
|
+
return Object.fromEntries(transformedEntries);
|
|
96
|
+
}
|
|
78
97
|
export function createJobSpec(args) {
|
|
79
98
|
if (!args.image) {
|
|
80
99
|
throw new Error('image parameter is required. Provide a Docker image (e.g., "python:3.12") or Space URL.');
|
|
@@ -85,13 +104,15 @@ export function createJobSpec(args) {
|
|
|
85
104
|
const imageSource = parseImageSource(args.image);
|
|
86
105
|
const { command, arguments: cmdArgs } = parseCommand(args.command);
|
|
87
106
|
const timeoutSeconds = args.timeout ? parseTimeout(args.timeout) : undefined;
|
|
107
|
+
const environment = transformEnvMap(args.env, args.hfToken) || {};
|
|
108
|
+
const secrets = transformEnvMap(args.secrets, args.hfToken) || {};
|
|
88
109
|
const spec = {
|
|
89
110
|
...imageSource,
|
|
90
111
|
command,
|
|
91
112
|
arguments: cmdArgs,
|
|
92
113
|
flavor: args.flavor || 'cpu-basic',
|
|
93
|
-
environment
|
|
94
|
-
secrets
|
|
114
|
+
environment,
|
|
115
|
+
secrets,
|
|
95
116
|
timeoutSeconds,
|
|
96
117
|
};
|
|
97
118
|
return spec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { UvArgs } from '../types.js';
|
|
2
|
+
export declare const UV_DEFAULT_IMAGE = "ghcr.io/astral-sh/uv:python3.12-bookworm";
|
|
3
|
+
type UvCommandOptions = Pick<UvArgs, 'with_deps' | 'python' | 'script_args'>;
|
|
4
|
+
export declare function buildUvCommand(script: string, args: UvCommandOptions): string;
|
|
5
|
+
export declare function wrapInlineScript(script: string, args: UvCommandOptions): string;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=uv-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uv-utils.d.ts","sourceRoot":"","sources":["../../../src/jobs/commands/uv-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,gBAAgB,6CAA6C,CAAC;AAE3E,KAAK,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC;AAE7E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAoB7E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAI/E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const UV_DEFAULT_IMAGE = 'ghcr.io/astral-sh/uv:python3.12-bookworm';
|
|
2
|
+
export function buildUvCommand(script, args) {
|
|
3
|
+
const parts = ['uv', 'run'];
|
|
4
|
+
if (args.with_deps && args.with_deps.length > 0) {
|
|
5
|
+
for (const dep of args.with_deps) {
|
|
6
|
+
parts.push('--with', dep);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
if (args.python) {
|
|
10
|
+
parts.push('-p', args.python);
|
|
11
|
+
}
|
|
12
|
+
parts.push(script);
|
|
13
|
+
if (args.script_args && args.script_args.length > 0) {
|
|
14
|
+
parts.push(...args.script_args);
|
|
15
|
+
}
|
|
16
|
+
return parts.join(' ');
|
|
17
|
+
}
|
|
18
|
+
export function wrapInlineScript(script, args) {
|
|
19
|
+
const encoded = Buffer.from(script).toString('base64');
|
|
20
|
+
const baseCommand = buildUvCommand('-', args);
|
|
21
|
+
return `echo "${encoded}" | base64 -d | ${baseCommand}`;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=uv-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uv-utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/uv-utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAI3E,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAsB;IACpE,MAAM,KAAK,GAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAsB;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,SAAS,OAAO,mBAAmB,WAAW,EAAE,CAAC;AACzD,CAAC"}
|
package/dist/jobs/tool.js
CHANGED
|
@@ -178,7 +178,7 @@ hf_jobs("scheduled run", {
|
|
|
178
178
|
- Parsed with POSIX shell semantics (quotes, escaping)
|
|
179
179
|
- Good for simple commands: \`"python script.py"\`
|
|
180
180
|
- Shell operators (|, &&, >, etc.) are NOT supported - use array with \`bash -c\` instead
|
|
181
|
-
-
|
|
181
|
+
- \`$HF_TOKEN\` stays literal in the command. To forward your authenticated token, add \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\`.
|
|
182
182
|
|
|
183
183
|
**Multiline inline scripts:**
|
|
184
184
|
- Automatically wrapped in \`["/bin/sh", "-lc", "..."]\` for shell execution
|
|
@@ -188,7 +188,7 @@ hf_jobs("scheduled run", {
|
|
|
188
188
|
|
|
189
189
|
- Jobs default to detached mode (return immediately with job ID)
|
|
190
190
|
- Use Hub resources directly: \`load_dataset('squad')\`, \`AutoModel.from_pretrained('bert-base')\`
|
|
191
|
-
-
|
|
191
|
+
- To access private Hub assets, include \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\` (or \`${'${HF_TOKEN}'}\`) so the server injects your bearer token.
|
|
192
192
|
- Logs are time-limited (10s max) - check job page for full logs
|
|
193
193
|
- For shell pipes/operators, use: \`["bash", "-c", "cmd1 | cmd2"]\`
|
|
194
194
|
`;
|
|
@@ -268,10 +268,10 @@ export class HfJobsTool {
|
|
|
268
268
|
result = await cancelCommand(args, this.client);
|
|
269
269
|
break;
|
|
270
270
|
case 'scheduled run':
|
|
271
|
-
result = await scheduledRunCommand(args, this.client);
|
|
271
|
+
result = await scheduledRunCommand(args, this.client, this.hfToken);
|
|
272
272
|
break;
|
|
273
273
|
case 'scheduled uv':
|
|
274
|
-
result = await scheduledUvCommand(args, this.client);
|
|
274
|
+
result = await scheduledUvCommand(args, this.client, this.hfToken);
|
|
275
275
|
break;
|
|
276
276
|
case 'scheduled ps':
|
|
277
277
|
result = await scheduledPsCommand(args, this.client);
|
package/dist/jobs/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/jobs/tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/jobs/tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llmindset/hf-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.36",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@huggingface/hub": "^2.
|
|
26
|
+
"@huggingface/hub": "^2.6.12",
|
|
27
27
|
"@mcp-ui/server": "^5.12.0",
|
|
28
28
|
"shell-quote": "^1.8.3",
|
|
29
29
|
"turndown": "^7.2.0",
|
|
@@ -10,7 +10,7 @@ import type { ToolResult } from '../types/tool-result.js';
|
|
|
10
10
|
export const DOCS_SEMANTIC_SEARCH_CONFIG = {
|
|
11
11
|
name: 'hf_doc_search',
|
|
12
12
|
description:
|
|
13
|
-
'Search and Discover Hugging Face Product and Library documentation.
|
|
13
|
+
'Search and Discover Hugging Face Product and Library documentation. Send an empty query to discover structure and navigation instructions. ' +
|
|
14
14
|
'You MUST consult this tool for the most up-to-date information when using Hugging Face libraries. Combine with the Product filter to focus results.',
|
|
15
15
|
schema: z.object({
|
|
16
16
|
query: z
|
package/src/jobs/api-client.ts
CHANGED
|
@@ -53,23 +53,15 @@ export class JobsApiClient extends HfApiCall {
|
|
|
53
53
|
const url = `https://huggingface.co/api/jobs/${ns}`;
|
|
54
54
|
|
|
55
55
|
// Debug logging (will be visible in server logs)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
body: JSON.stringify(jobSpec),
|
|
66
|
-
});
|
|
67
|
-
console.error('[Jobs API] Success:', result.id);
|
|
68
|
-
return result;
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.error('[Jobs API] Error:', error);
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
56
|
+
|
|
57
|
+
const result = await this.fetchFromApi<JobInfo>(url, {
|
|
58
|
+
method: 'POST',
|
|
59
|
+
headers: {
|
|
60
|
+
'Content-Type': 'application/json',
|
|
61
|
+
},
|
|
62
|
+
body: JSON.stringify(jobSpec),
|
|
63
|
+
});
|
|
64
|
+
return result;
|
|
73
65
|
}
|
|
74
66
|
|
|
75
67
|
/**
|
package/src/jobs/commands/run.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { RunArgs, UvArgs } from '../types.js';
|
|
|
2
2
|
import type { JobsApiClient } from '../api-client.js';
|
|
3
3
|
import { createJobSpec } from './utils.js';
|
|
4
4
|
import { fetchJobLogs } from '../sse-handler.js';
|
|
5
|
+
import { buildUvCommand, UV_DEFAULT_IMAGE, wrapInlineScript } from './uv-utils.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Execute the 'run' command
|
|
@@ -16,6 +17,7 @@ export async function runCommand(args: RunArgs, client: JobsApiClient, token?: s
|
|
|
16
17
|
env: args.env,
|
|
17
18
|
secrets: args.secrets,
|
|
18
19
|
timeout: args.timeout,
|
|
20
|
+
hfToken: token,
|
|
19
21
|
});
|
|
20
22
|
|
|
21
23
|
// Submit job
|
|
@@ -63,26 +65,18 @@ To inspect: \`hf_jobs("inspect", {"job_id": "${job.id}"})\``;
|
|
|
63
65
|
*/
|
|
64
66
|
export async function uvCommand(args: UvArgs, client: JobsApiClient, token?: string): Promise<string> {
|
|
65
67
|
// UV jobs use a standard UV image unless overridden
|
|
66
|
-
const image =
|
|
68
|
+
const image = UV_DEFAULT_IMAGE;
|
|
67
69
|
|
|
68
70
|
// Detect script source and build command
|
|
69
71
|
const scriptSource = args.script;
|
|
70
72
|
let command: string | string[];
|
|
71
73
|
|
|
72
|
-
// Check if script is a URL
|
|
73
74
|
if (scriptSource.startsWith('http://') || scriptSource.startsWith('https://')) {
|
|
74
75
|
// URL - download and run
|
|
75
76
|
command = buildUvCommand(scriptSource, args);
|
|
76
77
|
} else if (scriptSource.includes('\n')) {
|
|
77
78
|
// Inline multi-line script - encode it
|
|
78
|
-
const
|
|
79
|
-
const depsPart =
|
|
80
|
-
args.with_deps && args.with_deps.length > 0
|
|
81
|
-
? args.with_deps.map(dep => `--with ${dep}`).join(' ')
|
|
82
|
-
: '';
|
|
83
|
-
const pythonPart = args.python ? `-p ${args.python}` : '';
|
|
84
|
-
const uvArgs = [depsPart, pythonPart].filter(Boolean).join(' ');
|
|
85
|
-
const shellSnippet = `echo "${encoded}" | base64 -d | uv run${uvArgs ? ` ${uvArgs}` : ''} -`;
|
|
79
|
+
const shellSnippet = wrapInlineScript(scriptSource, args);
|
|
86
80
|
command = ['/bin/sh', '-lc', shellSnippet];
|
|
87
81
|
} else {
|
|
88
82
|
// Assume it's a URL or path - UV will handle it
|
|
@@ -103,32 +97,3 @@ export async function uvCommand(args: UvArgs, client: JobsApiClient, token?: str
|
|
|
103
97
|
|
|
104
98
|
return runCommand(runArgs, client, token);
|
|
105
99
|
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Build UV command with options
|
|
109
|
-
*/
|
|
110
|
-
function buildUvCommand(script: string, args: UvArgs): string {
|
|
111
|
-
const parts: string[] = ['uv', 'run'];
|
|
112
|
-
|
|
113
|
-
// Add dependencies
|
|
114
|
-
if (args.with_deps && args.with_deps.length > 0) {
|
|
115
|
-
for (const dep of args.with_deps) {
|
|
116
|
-
parts.push('--with', dep);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Add Python version
|
|
121
|
-
if (args.python) {
|
|
122
|
-
parts.push('-p', args.python);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Add script
|
|
126
|
-
parts.push(script);
|
|
127
|
-
|
|
128
|
-
// Add script arguments
|
|
129
|
-
if (args.script_args && args.script_args.length > 0) {
|
|
130
|
-
parts.push(...args.script_args);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return parts.join(' ');
|
|
134
|
-
}
|
|
@@ -8,12 +8,17 @@ import type {
|
|
|
8
8
|
import type { JobsApiClient } from '../api-client.js';
|
|
9
9
|
import { formatScheduledJobsTable, formatScheduledJobDetails } from '../formatters.js';
|
|
10
10
|
import { createJobSpec } from './utils.js';
|
|
11
|
+
import { buildUvCommand, UV_DEFAULT_IMAGE, wrapInlineScript } from './uv-utils.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Execute 'scheduled run' command
|
|
14
15
|
* Creates a scheduled job
|
|
15
16
|
*/
|
|
16
|
-
export async function scheduledRunCommand(
|
|
17
|
+
export async function scheduledRunCommand(
|
|
18
|
+
args: ScheduledRunArgs,
|
|
19
|
+
client: JobsApiClient,
|
|
20
|
+
token?: string
|
|
21
|
+
): Promise<string> {
|
|
17
22
|
// Create job spec
|
|
18
23
|
const jobSpec = createJobSpec({
|
|
19
24
|
image: args.image,
|
|
@@ -22,6 +27,7 @@ export async function scheduledRunCommand(args: ScheduledRunArgs, client: JobsAp
|
|
|
22
27
|
env: args.env,
|
|
23
28
|
secrets: args.secrets,
|
|
24
29
|
timeout: args.timeout,
|
|
30
|
+
hfToken: token,
|
|
25
31
|
});
|
|
26
32
|
|
|
27
33
|
// Create scheduled job spec
|
|
@@ -49,9 +55,13 @@ To list all: \`hf_jobs("scheduled ps")\``;
|
|
|
49
55
|
* Execute 'scheduled uv' command
|
|
50
56
|
* Creates a scheduled UV job
|
|
51
57
|
*/
|
|
52
|
-
export async function scheduledUvCommand(
|
|
58
|
+
export async function scheduledUvCommand(
|
|
59
|
+
args: ScheduledUvArgs,
|
|
60
|
+
client: JobsApiClient,
|
|
61
|
+
token?: string
|
|
62
|
+
): Promise<string> {
|
|
53
63
|
// For UV, use standard UV image
|
|
54
|
-
const image =
|
|
64
|
+
const image = UV_DEFAULT_IMAGE;
|
|
55
65
|
|
|
56
66
|
// Build UV command (similar to regular uv command)
|
|
57
67
|
const scriptSource = args.script;
|
|
@@ -60,10 +70,7 @@ export async function scheduledUvCommand(args: ScheduledUvArgs, client: JobsApiC
|
|
|
60
70
|
if (scriptSource.startsWith('http://') || scriptSource.startsWith('https://')) {
|
|
61
71
|
command = buildUvCommand(scriptSource, args);
|
|
62
72
|
} else if (scriptSource.includes('\n')) {
|
|
63
|
-
|
|
64
|
-
const deps =
|
|
65
|
-
args.with_deps && args.with_deps.length > 0 ? args.with_deps.map((dep) => `--with ${dep}`).join(' ') + ' ' : '';
|
|
66
|
-
command = `echo "${encoded}" | base64 -d | uv run ${deps}${args.python ? `-p ${args.python}` : ''} -`;
|
|
73
|
+
command = wrapInlineScript(scriptSource, args);
|
|
67
74
|
} else {
|
|
68
75
|
command = buildUvCommand(scriptSource, args);
|
|
69
76
|
}
|
|
@@ -82,35 +89,7 @@ export async function scheduledUvCommand(args: ScheduledUvArgs, client: JobsApiC
|
|
|
82
89
|
namespace: args.namespace,
|
|
83
90
|
};
|
|
84
91
|
|
|
85
|
-
return scheduledRunCommand(scheduledRunArgs, client);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Build UV command with options
|
|
90
|
-
*/
|
|
91
|
-
function buildUvCommand(
|
|
92
|
-
script: string,
|
|
93
|
-
args: { with_deps?: string[]; python?: string; script_args?: string[] }
|
|
94
|
-
): string {
|
|
95
|
-
const parts: string[] = ['uv', 'run'];
|
|
96
|
-
|
|
97
|
-
if (args.with_deps && args.with_deps.length > 0) {
|
|
98
|
-
for (const dep of args.with_deps) {
|
|
99
|
-
parts.push('--with', dep);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (args.python) {
|
|
104
|
-
parts.push('-p', args.python);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
parts.push(script);
|
|
108
|
-
|
|
109
|
-
if (args.script_args && args.script_args.length > 0) {
|
|
110
|
-
parts.push(...args.script_args);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return parts.join(' ');
|
|
92
|
+
return scheduledRunCommand(scheduledRunArgs, client, token);
|
|
114
93
|
}
|
|
115
94
|
|
|
116
95
|
/**
|
|
@@ -121,6 +121,36 @@ export function parseCommand(command: string | string[]): { command: string[]; a
|
|
|
121
121
|
return { command: stringArgs, arguments: [] };
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Replace HF token placeholder with actual token if available
|
|
126
|
+
*/
|
|
127
|
+
function replaceTokenPlaceholder(value: string, hfToken?: string): string {
|
|
128
|
+
if (!hfToken) {
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (value === '$HF_TOKEN' || value === '${HF_TOKEN}') {
|
|
133
|
+
return hfToken;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function transformEnvMap(
|
|
140
|
+
map: Record<string, string> | undefined,
|
|
141
|
+
hfToken?: string
|
|
142
|
+
): Record<string, string> | undefined {
|
|
143
|
+
if (!map) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const transformedEntries = Object.entries(map).map<[string, string]>(([key, value]) => [
|
|
148
|
+
key,
|
|
149
|
+
replaceTokenPlaceholder(value, hfToken),
|
|
150
|
+
]);
|
|
151
|
+
return Object.fromEntries(transformedEntries) as Record<string, string>;
|
|
152
|
+
}
|
|
153
|
+
|
|
124
154
|
/**
|
|
125
155
|
* Create a JobSpec from run command arguments
|
|
126
156
|
*/
|
|
@@ -131,6 +161,7 @@ export function createJobSpec(args: {
|
|
|
131
161
|
env?: Record<string, string>;
|
|
132
162
|
secrets?: Record<string, string>;
|
|
133
163
|
timeout?: string;
|
|
164
|
+
hfToken?: string;
|
|
134
165
|
}): JobSpec {
|
|
135
166
|
// Validate required fields
|
|
136
167
|
if (!args.image) {
|
|
@@ -143,14 +174,16 @@ export function createJobSpec(args: {
|
|
|
143
174
|
const imageSource = parseImageSource(args.image);
|
|
144
175
|
const { command, arguments: cmdArgs } = parseCommand(args.command);
|
|
145
176
|
const timeoutSeconds = args.timeout ? parseTimeout(args.timeout) : undefined;
|
|
177
|
+
const environment = transformEnvMap(args.env, args.hfToken) || {};
|
|
178
|
+
const secrets = transformEnvMap(args.secrets, args.hfToken) || {};
|
|
146
179
|
|
|
147
180
|
const spec: JobSpec = {
|
|
148
181
|
...imageSource,
|
|
149
182
|
command,
|
|
150
183
|
arguments: cmdArgs,
|
|
151
184
|
flavor: args.flavor || 'cpu-basic',
|
|
152
|
-
environment
|
|
153
|
-
secrets
|
|
185
|
+
environment,
|
|
186
|
+
secrets,
|
|
154
187
|
timeoutSeconds,
|
|
155
188
|
};
|
|
156
189
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { UvArgs } from '../types.js';
|
|
2
|
+
|
|
3
|
+
export const UV_DEFAULT_IMAGE = 'ghcr.io/astral-sh/uv:python3.12-bookworm';
|
|
4
|
+
|
|
5
|
+
type UvCommandOptions = Pick<UvArgs, 'with_deps' | 'python' | 'script_args'>;
|
|
6
|
+
|
|
7
|
+
export function buildUvCommand(script: string, args: UvCommandOptions): string {
|
|
8
|
+
const parts: string[] = ['uv', 'run'];
|
|
9
|
+
|
|
10
|
+
if (args.with_deps && args.with_deps.length > 0) {
|
|
11
|
+
for (const dep of args.with_deps) {
|
|
12
|
+
parts.push('--with', dep);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (args.python) {
|
|
17
|
+
parts.push('-p', args.python);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
parts.push(script);
|
|
21
|
+
|
|
22
|
+
if (args.script_args && args.script_args.length > 0) {
|
|
23
|
+
parts.push(...args.script_args);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return parts.join(' ');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function wrapInlineScript(script: string, args: UvCommandOptions): string {
|
|
30
|
+
const encoded = Buffer.from(script).toString('base64');
|
|
31
|
+
const baseCommand = buildUvCommand('-', args);
|
|
32
|
+
return `echo "${encoded}" | base64 -d | ${baseCommand}`;
|
|
33
|
+
}
|
package/src/jobs/tool.ts
CHANGED
|
@@ -239,7 +239,7 @@ hf_jobs("scheduled run", {
|
|
|
239
239
|
- Parsed with POSIX shell semantics (quotes, escaping)
|
|
240
240
|
- Good for simple commands: \`"python script.py"\`
|
|
241
241
|
- Shell operators (|, &&, >, etc.) are NOT supported - use array with \`bash -c\` instead
|
|
242
|
-
-
|
|
242
|
+
- \`$HF_TOKEN\` stays literal in the command. To forward your authenticated token, add \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\`.
|
|
243
243
|
|
|
244
244
|
**Multiline inline scripts:**
|
|
245
245
|
- Automatically wrapped in \`["/bin/sh", "-lc", "..."]\` for shell execution
|
|
@@ -249,7 +249,7 @@ hf_jobs("scheduled run", {
|
|
|
249
249
|
|
|
250
250
|
- Jobs default to detached mode (return immediately with job ID)
|
|
251
251
|
- Use Hub resources directly: \`load_dataset('squad')\`, \`AutoModel.from_pretrained('bert-base')\`
|
|
252
|
-
-
|
|
252
|
+
- To access private Hub assets, include \`secrets: { "HF_TOKEN": "$HF_TOKEN" }\` (or \`${'${HF_TOKEN}'}\`) so the server injects your bearer token.
|
|
253
253
|
- Logs are time-limited (10s max) - check job page for full logs
|
|
254
254
|
- For shell pipes/operators, use: \`["bash", "-c", "cmd1 | cmd2"]\`
|
|
255
255
|
`;
|
|
@@ -360,11 +360,11 @@ export class HfJobsTool {
|
|
|
360
360
|
break;
|
|
361
361
|
|
|
362
362
|
case 'scheduled run':
|
|
363
|
-
result = await scheduledRunCommand(args as ScheduledRunArgs, this.client);
|
|
363
|
+
result = await scheduledRunCommand(args as ScheduledRunArgs, this.client, this.hfToken);
|
|
364
364
|
break;
|
|
365
365
|
|
|
366
366
|
case 'scheduled uv':
|
|
367
|
-
result = await scheduledUvCommand(args as ScheduledUvArgs, this.client);
|
|
367
|
+
result = await scheduledUvCommand(args as ScheduledUvArgs, this.client, this.hfToken);
|
|
368
368
|
break;
|
|
369
369
|
|
|
370
370
|
case 'scheduled ps':
|
|
@@ -245,6 +245,60 @@ describe('Jobs Command Translation', () => {
|
|
|
245
245
|
expect(spec.secrets).toEqual({ API_KEY: 'secret123' });
|
|
246
246
|
});
|
|
247
247
|
|
|
248
|
+
it('should keep HF_TOKEN literal when no expansion token provided', () => {
|
|
249
|
+
const spec = createJobSpec({
|
|
250
|
+
image: 'python:3.12',
|
|
251
|
+
command: 'echo $HF_TOKEN',
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
expect(spec.command).toEqual(['echo', '$HF_TOKEN']);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it('should keep command literal even when hfToken provided', () => {
|
|
258
|
+
const spec = createJobSpec({
|
|
259
|
+
image: 'python:3.12',
|
|
260
|
+
command: 'echo $HF_TOKEN',
|
|
261
|
+
hfToken: 'hf_secret_999',
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
expect(spec.command).toEqual(['echo', '$HF_TOKEN']);
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it('should inject HF_TOKEN into secrets when placeholder provided', () => {
|
|
268
|
+
const spec = createJobSpec({
|
|
269
|
+
image: 'python:3.12',
|
|
270
|
+
command: 'python script.py',
|
|
271
|
+
secrets: { HF_TOKEN: '$HF_TOKEN', OTHER: 'keep' },
|
|
272
|
+
hfToken: 'hf_secret_123',
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
expect(spec.secrets).toEqual({ HF_TOKEN: 'hf_secret_123', OTHER: 'keep' });
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
it('should inject HF_TOKEN into env when placeholder provided', () => {
|
|
279
|
+
const spec = createJobSpec({
|
|
280
|
+
image: 'python:3.12',
|
|
281
|
+
command: 'python script.py',
|
|
282
|
+
env: { HF_TOKEN: '${HF_TOKEN}', NAME: 'demo' },
|
|
283
|
+
hfToken: 'hf_env_456',
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
expect(spec.environment).toEqual({ HF_TOKEN: 'hf_env_456', NAME: 'demo' });
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
it('should leave other env values unchanged', () => {
|
|
290
|
+
const spec = createJobSpec({
|
|
291
|
+
image: 'python:3.12',
|
|
292
|
+
command: 'python script.py',
|
|
293
|
+
env: { NAME: 'demo' },
|
|
294
|
+
secrets: { API_KEY: 'secret123' },
|
|
295
|
+
hfToken: 'hf_env_456',
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
expect(spec.environment).toEqual({ NAME: 'demo' });
|
|
299
|
+
expect(spec.secrets).toEqual({ API_KEY: 'secret123' });
|
|
300
|
+
});
|
|
301
|
+
|
|
248
302
|
it('should parse and include timeout', () => {
|
|
249
303
|
const spec = createJobSpec({
|
|
250
304
|
image: 'python:3.12',
|