@llmindset/hf-mcp 0.2.33 → 0.2.34
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/hf-api-call.d.ts.map +1 -1
- package/dist/hf-api-call.js +4 -0
- package/dist/hf-api-call.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/api-client.d.ts +19 -0
- package/dist/jobs/api-client.d.ts.map +1 -0
- package/dist/jobs/api-client.js +104 -0
- package/dist/jobs/api-client.js.map +1 -0
- package/dist/jobs/commands/inspect.d.ts +5 -0
- package/dist/jobs/commands/inspect.d.ts.map +1 -0
- package/dist/jobs/commands/inspect.js +21 -0
- package/dist/jobs/commands/inspect.js.map +1 -0
- package/dist/jobs/commands/logs.d.ts +4 -0
- package/dist/jobs/commands/logs.d.ts.map +1 -0
- package/dist/jobs/commands/logs.js +24 -0
- package/dist/jobs/commands/logs.js.map +1 -0
- package/dist/jobs/commands/ps.d.ts +4 -0
- package/dist/jobs/commands/ps.d.ts.map +1 -0
- package/dist/jobs/commands/ps.js +23 -0
- package/dist/jobs/commands/ps.js.map +1 -0
- package/dist/jobs/commands/run.d.ts +5 -0
- package/dist/jobs/commands/run.d.ts.map +1 -0
- package/dist/jobs/commands/run.js +89 -0
- package/dist/jobs/commands/run.js.map +1 -0
- package/dist/jobs/commands/scheduled.d.ts +10 -0
- package/dist/jobs/commands/scheduled.d.ts.map +1 -0
- package/dist/jobs/commands/scheduled.js +111 -0
- package/dist/jobs/commands/scheduled.js.map +1 -0
- package/dist/jobs/commands/utils.d.ts +19 -0
- package/dist/jobs/commands/utils.d.ts.map +1 -0
- package/dist/jobs/commands/utils.js +99 -0
- package/dist/jobs/commands/utils.js.map +1 -0
- package/dist/jobs/formatters.d.ts +6 -0
- package/dist/jobs/formatters.d.ts.map +1 -0
- package/dist/jobs/formatters.js +98 -0
- package/dist/jobs/formatters.js.map +1 -0
- package/dist/jobs/sse-handler.d.ts +12 -0
- package/dist/jobs/sse-handler.d.ts.map +1 -0
- package/dist/jobs/sse-handler.js +80 -0
- package/dist/jobs/sse-handler.js.map +1 -0
- package/dist/jobs/tool.d.ts +35 -0
- package/dist/jobs/tool.d.ts.map +1 -0
- package/dist/jobs/tool.js +333 -0
- package/dist/jobs/tool.js.map +1 -0
- package/dist/jobs/types.d.ts +295 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +95 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/tool-ids.d.ts +3 -2
- package/dist/tool-ids.d.ts.map +1 -1
- package/dist/tool-ids.js +10 -2
- package/dist/tool-ids.js.map +1 -1
- package/dist/types/tool-result.d.ts +1 -0
- package/dist/types/tool-result.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/hf-api-call.ts +6 -0
- package/src/index.ts +1 -0
- package/src/jobs/api-client.ts +195 -0
- package/src/jobs/commands/inspect.ts +38 -0
- package/src/jobs/commands/logs.ts +36 -0
- package/src/jobs/commands/ps.ts +40 -0
- package/src/jobs/commands/run.ts +134 -0
- package/src/jobs/commands/scheduled.ts +189 -0
- package/src/jobs/commands/utils.ts +158 -0
- package/src/jobs/formatters.ts +149 -0
- package/src/jobs/sse-handler.ts +144 -0
- package/src/jobs/tool.ts +435 -0
- package/src/jobs/types.ts +237 -0
- package/src/tool-ids.ts +11 -1
- package/src/types/tool-result.ts +6 -0
- package/test/jobs/command-translation.spec.ts +277 -0
- package/test/jobs/formatters.spec.ts +267 -0
- package/test/jobs/uv-command.spec.ts +81 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { parse as parseShellArgs } from 'shell-quote';
|
|
2
|
+
const SPECIAL_PARAMS = new Set(['*', '@', '#', '?', '!', '-', '_']);
|
|
3
|
+
function isEnvToken(entry) {
|
|
4
|
+
return Boolean(entry && typeof entry === 'object' && entry.type === 'env');
|
|
5
|
+
}
|
|
6
|
+
function formatEnvReference(key) {
|
|
7
|
+
if (key === '') {
|
|
8
|
+
return '$';
|
|
9
|
+
}
|
|
10
|
+
if (key === '$') {
|
|
11
|
+
return '$$';
|
|
12
|
+
}
|
|
13
|
+
if (/^[A-Za-z0-9_]+$/.test(key)) {
|
|
14
|
+
return `$${key}`;
|
|
15
|
+
}
|
|
16
|
+
if (SPECIAL_PARAMS.has(key)) {
|
|
17
|
+
return `$${key}`;
|
|
18
|
+
}
|
|
19
|
+
return `\${${key}}`;
|
|
20
|
+
}
|
|
21
|
+
export function parseTimeout(timeout) {
|
|
22
|
+
const timeUnits = {
|
|
23
|
+
s: 1,
|
|
24
|
+
m: 60,
|
|
25
|
+
h: 3600,
|
|
26
|
+
d: 86400,
|
|
27
|
+
};
|
|
28
|
+
const match = timeout.match(/^(\d+(?:\.\d+)?)(s|m|h|d)$/);
|
|
29
|
+
if (!match || !match[1] || !match[2]) {
|
|
30
|
+
const seconds = parseInt(timeout, 10);
|
|
31
|
+
if (!isNaN(seconds)) {
|
|
32
|
+
return seconds;
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Invalid timeout format: "${timeout}". Use format like "5m", "2h", "30s", or plain seconds.`);
|
|
35
|
+
}
|
|
36
|
+
const value = parseFloat(match[1]);
|
|
37
|
+
const unit = match[2];
|
|
38
|
+
return Math.floor(value * timeUnits[unit]);
|
|
39
|
+
}
|
|
40
|
+
export function parseImageSource(image) {
|
|
41
|
+
const spacePrefixes = [
|
|
42
|
+
'https://huggingface.co/spaces/',
|
|
43
|
+
'https://hf.co/spaces/',
|
|
44
|
+
'huggingface.co/spaces/',
|
|
45
|
+
'hf.co/spaces/',
|
|
46
|
+
];
|
|
47
|
+
for (const prefix of spacePrefixes) {
|
|
48
|
+
if (image.startsWith(prefix)) {
|
|
49
|
+
return { spaceId: image.substring(prefix.length) };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { dockerImage: image };
|
|
53
|
+
}
|
|
54
|
+
export function parseCommand(command) {
|
|
55
|
+
if (Array.isArray(command)) {
|
|
56
|
+
return { command, arguments: [] };
|
|
57
|
+
}
|
|
58
|
+
const parsed = parseShellArgs(command, key => ({ type: 'env', key }));
|
|
59
|
+
const stringArgs = [];
|
|
60
|
+
for (const arg of parsed) {
|
|
61
|
+
if (typeof arg === 'string') {
|
|
62
|
+
stringArgs.push(arg);
|
|
63
|
+
}
|
|
64
|
+
else if (isEnvToken(arg)) {
|
|
65
|
+
stringArgs.push(formatEnvReference(arg.key));
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new Error(`Unsupported shell syntax in command: "${command}". ` +
|
|
69
|
+
`Please use an array format for commands with complex shell operators, ` +
|
|
70
|
+
`or use simple quoted strings.`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (stringArgs.length === 0) {
|
|
74
|
+
throw new Error(`Invalid command: "${command}". Command cannot be empty.`);
|
|
75
|
+
}
|
|
76
|
+
return { command: stringArgs, arguments: [] };
|
|
77
|
+
}
|
|
78
|
+
export function createJobSpec(args) {
|
|
79
|
+
if (!args.image) {
|
|
80
|
+
throw new Error('image parameter is required. Provide a Docker image (e.g., "python:3.12") or Space URL.');
|
|
81
|
+
}
|
|
82
|
+
if (!args.command) {
|
|
83
|
+
throw new Error('command parameter is required. Provide a command as string or array.');
|
|
84
|
+
}
|
|
85
|
+
const imageSource = parseImageSource(args.image);
|
|
86
|
+
const { command, arguments: cmdArgs } = parseCommand(args.command);
|
|
87
|
+
const timeoutSeconds = args.timeout ? parseTimeout(args.timeout) : undefined;
|
|
88
|
+
const spec = {
|
|
89
|
+
...imageSource,
|
|
90
|
+
command,
|
|
91
|
+
arguments: cmdArgs,
|
|
92
|
+
flavor: args.flavor || 'cpu-basic',
|
|
93
|
+
environment: args.env || {},
|
|
94
|
+
secrets: args.secrets || {},
|
|
95
|
+
timeoutSeconds,
|
|
96
|
+
};
|
|
97
|
+
return spec;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/jobs/commands/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JobInfo, ScheduledJobInfo } from './types.js';
|
|
2
|
+
export declare function formatJobsTable(jobs: JobInfo[]): string;
|
|
3
|
+
export declare function formatScheduledJobsTable(jobs: ScheduledJobInfo[]): string;
|
|
4
|
+
export declare function formatJobDetails(jobs: JobInfo | JobInfo[]): string;
|
|
5
|
+
export declare function formatScheduledJobDetails(jobs: ScheduledJobInfo | ScheduledJobInfo[]): string;
|
|
6
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/jobs/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqD5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAkCvD;AAKD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAsCzE;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,MAAM,CAIlE;AAKD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAI7F"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
function truncate(str, maxLength) {
|
|
2
|
+
if (str.length <= maxLength) {
|
|
3
|
+
return str;
|
|
4
|
+
}
|
|
5
|
+
return str.substring(0, maxLength - 3) + '...';
|
|
6
|
+
}
|
|
7
|
+
function formatDate(dateStr) {
|
|
8
|
+
if (!dateStr) {
|
|
9
|
+
return 'N/A';
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const date = new Date(dateStr);
|
|
13
|
+
return date.toISOString().replace('T', ' ').substring(0, 19);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return dateStr;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function formatCommand(command) {
|
|
20
|
+
if (!command || command.length === 0) {
|
|
21
|
+
return 'N/A';
|
|
22
|
+
}
|
|
23
|
+
return command.join(' ');
|
|
24
|
+
}
|
|
25
|
+
function getImageOrSpace(job) {
|
|
26
|
+
if (job.spaceId) {
|
|
27
|
+
return job.spaceId;
|
|
28
|
+
}
|
|
29
|
+
if (job.dockerImage) {
|
|
30
|
+
return job.dockerImage;
|
|
31
|
+
}
|
|
32
|
+
return 'N/A';
|
|
33
|
+
}
|
|
34
|
+
export function formatJobsTable(jobs) {
|
|
35
|
+
if (jobs.length === 0) {
|
|
36
|
+
return 'No jobs found.';
|
|
37
|
+
}
|
|
38
|
+
const longestIdLength = Math.max(...jobs.map((job) => job.id.length));
|
|
39
|
+
const idColumnWidth = Math.max(longestIdLength, 'JOB ID'.length);
|
|
40
|
+
const colWidths = {
|
|
41
|
+
id: idColumnWidth,
|
|
42
|
+
image: 20,
|
|
43
|
+
command: 30,
|
|
44
|
+
created: 19,
|
|
45
|
+
status: 12,
|
|
46
|
+
};
|
|
47
|
+
const header = `| ${'JOB ID'.padEnd(colWidths.id)} | ${'IMAGE/SPACE'.padEnd(colWidths.image)} | ${'COMMAND'.padEnd(colWidths.command)} | ${'CREATED'.padEnd(colWidths.created)} | ${'STATUS'.padEnd(colWidths.status)} |`;
|
|
48
|
+
const separator = `|${'-'.repeat(colWidths.id + 2)}|${'-'.repeat(colWidths.image + 2)}|${'-'.repeat(colWidths.command + 2)}|${'-'.repeat(colWidths.created + 2)}|${'-'.repeat(colWidths.status + 2)}|`;
|
|
49
|
+
const rows = jobs.map((job) => {
|
|
50
|
+
const id = job.id;
|
|
51
|
+
const image = truncate(getImageOrSpace(job), colWidths.image);
|
|
52
|
+
const command = truncate(formatCommand(job.command), colWidths.command);
|
|
53
|
+
const created = truncate(formatDate(job.createdAt), colWidths.created);
|
|
54
|
+
const status = truncate(job.status.stage, colWidths.status);
|
|
55
|
+
return `| ${id.padEnd(colWidths.id)} | ${image.padEnd(colWidths.image)} | ${command.padEnd(colWidths.command)} | ${created.padEnd(colWidths.created)} | ${status.padEnd(colWidths.status)} |`;
|
|
56
|
+
});
|
|
57
|
+
return [header, separator, ...rows].join('\n');
|
|
58
|
+
}
|
|
59
|
+
export function formatScheduledJobsTable(jobs) {
|
|
60
|
+
if (jobs.length === 0) {
|
|
61
|
+
return 'No scheduled jobs found.';
|
|
62
|
+
}
|
|
63
|
+
const longestIdLength = Math.max(...jobs.map((job) => job.id.length));
|
|
64
|
+
const idColumnWidth = Math.max(longestIdLength, 'ID'.length);
|
|
65
|
+
const colWidths = {
|
|
66
|
+
id: idColumnWidth,
|
|
67
|
+
schedule: 12,
|
|
68
|
+
image: 18,
|
|
69
|
+
command: 25,
|
|
70
|
+
lastRun: 19,
|
|
71
|
+
nextRun: 19,
|
|
72
|
+
suspend: 9,
|
|
73
|
+
};
|
|
74
|
+
const header = `| ${'ID'.padEnd(colWidths.id)} | ${'SCHEDULE'.padEnd(colWidths.schedule)} | ${'IMAGE/SPACE'.padEnd(colWidths.image)} | ${'COMMAND'.padEnd(colWidths.command)} | ${'LAST RUN'.padEnd(colWidths.lastRun)} | ${'NEXT RUN'.padEnd(colWidths.nextRun)} | ${'SUSPENDED'.padEnd(colWidths.suspend)} |`;
|
|
75
|
+
const separator = `|${'-'.repeat(colWidths.id + 2)}|${'-'.repeat(colWidths.schedule + 2)}|${'-'.repeat(colWidths.image + 2)}|${'-'.repeat(colWidths.command + 2)}|${'-'.repeat(colWidths.lastRun + 2)}|${'-'.repeat(colWidths.nextRun + 2)}|${'-'.repeat(colWidths.suspend + 2)}|`;
|
|
76
|
+
const rows = jobs.map((job) => {
|
|
77
|
+
const id = job.id;
|
|
78
|
+
const schedule = truncate(job.schedule, colWidths.schedule);
|
|
79
|
+
const image = truncate(getImageOrSpace(job.jobSpec), colWidths.image);
|
|
80
|
+
const command = truncate(formatCommand(job.jobSpec.command), colWidths.command);
|
|
81
|
+
const lastRun = truncate(formatDate(job.lastRun), colWidths.lastRun);
|
|
82
|
+
const nextRun = truncate(formatDate(job.nextRun), colWidths.nextRun);
|
|
83
|
+
const suspend = job.suspend ? 'Yes' : 'No';
|
|
84
|
+
return `| ${id.padEnd(colWidths.id)} | ${schedule.padEnd(colWidths.schedule)} | ${image.padEnd(colWidths.image)} | ${command.padEnd(colWidths.command)} | ${lastRun.padEnd(colWidths.lastRun)} | ${nextRun.padEnd(colWidths.nextRun)} | ${suspend.padEnd(colWidths.suspend)} |`;
|
|
85
|
+
});
|
|
86
|
+
return [header, separator, ...rows].join('\n');
|
|
87
|
+
}
|
|
88
|
+
export function formatJobDetails(jobs) {
|
|
89
|
+
const jobArray = Array.isArray(jobs) ? jobs : [jobs];
|
|
90
|
+
const json = JSON.stringify(jobArray, null, 2);
|
|
91
|
+
return `\`\`\`json\n${json}\n\`\`\``;
|
|
92
|
+
}
|
|
93
|
+
export function formatScheduledJobDetails(jobs) {
|
|
94
|
+
const jobArray = Array.isArray(jobs) ? jobs : [jobs];
|
|
95
|
+
const json = JSON.stringify(jobArray, null, 2);
|
|
96
|
+
return `\`\`\`json\n${json}\n\`\`\``;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/jobs/formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface SseLogOptions {
|
|
2
|
+
maxDuration?: number;
|
|
3
|
+
maxLines?: number;
|
|
4
|
+
token?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SseLogResult {
|
|
7
|
+
logs: string[];
|
|
8
|
+
finished: boolean;
|
|
9
|
+
truncated: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function fetchJobLogs(url: string, options?: SseLogOptions): Promise<SseLogResult>;
|
|
12
|
+
//# sourceMappingURL=sse-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-handler.d.ts","sourceRoot":"","sources":["../../src/jobs/sse-handler.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAE7B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,YAAY;IAE5B,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,QAAQ,EAAE,OAAO,CAAC;IAElB,SAAS,EAAE,OAAO,CAAC;CACnB;AAUD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6GlG"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export async function fetchJobLogs(url, options = {}) {
|
|
2
|
+
const { maxDuration = 10000, maxLines = 20, token } = options;
|
|
3
|
+
const logLines = [];
|
|
4
|
+
let finished = false;
|
|
5
|
+
let truncated = false;
|
|
6
|
+
const controller = new AbortController();
|
|
7
|
+
const timeoutId = setTimeout(() => {
|
|
8
|
+
controller.abort();
|
|
9
|
+
truncated = true;
|
|
10
|
+
}, maxDuration);
|
|
11
|
+
try {
|
|
12
|
+
const headers = {
|
|
13
|
+
Accept: 'text/event-stream',
|
|
14
|
+
};
|
|
15
|
+
if (token) {
|
|
16
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
17
|
+
}
|
|
18
|
+
const response = await fetch(url, {
|
|
19
|
+
headers,
|
|
20
|
+
signal: controller.signal,
|
|
21
|
+
});
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(`Failed to fetch logs: ${response.status} ${response.statusText}`);
|
|
24
|
+
}
|
|
25
|
+
if (!response.body) {
|
|
26
|
+
throw new Error('Response body is null');
|
|
27
|
+
}
|
|
28
|
+
const reader = response.body.getReader();
|
|
29
|
+
const decoder = new TextDecoder();
|
|
30
|
+
let buffer = '';
|
|
31
|
+
while (true) {
|
|
32
|
+
const { done, value } = await reader.read();
|
|
33
|
+
if (done) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
buffer += decoder.decode(value, { stream: true });
|
|
37
|
+
const lines = buffer.split('\n');
|
|
38
|
+
buffer = lines.pop() || '';
|
|
39
|
+
for (const line of lines) {
|
|
40
|
+
if (line.startsWith('data: ')) {
|
|
41
|
+
try {
|
|
42
|
+
const jsonStr = line.substring(6);
|
|
43
|
+
const event = JSON.parse(jsonStr);
|
|
44
|
+
if (event.data.startsWith('===== Job started')) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (event.data.startsWith('===== Job finished')) {
|
|
48
|
+
finished = true;
|
|
49
|
+
logLines.push(event.data);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
logLines.push(event.data);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (finished) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
await reader.cancel();
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.name !== 'AbortError') {
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
clearTimeout(timeoutId);
|
|
72
|
+
}
|
|
73
|
+
const lastLines = logLines.slice(-maxLines);
|
|
74
|
+
return {
|
|
75
|
+
logs: lastLines,
|
|
76
|
+
finished,
|
|
77
|
+
truncated: truncated && !finished,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=sse-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-handler.js","sourceRoot":"","sources":["../../src/jobs/sse-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolResult } from '../types/tool-result.js';
|
|
3
|
+
export * from './types.js';
|
|
4
|
+
export { JobsApiClient } from './api-client.js';
|
|
5
|
+
export declare const HF_JOBS_TOOL_CONFIG: {
|
|
6
|
+
readonly name: "hf_jobs";
|
|
7
|
+
readonly description: string;
|
|
8
|
+
readonly schema: z.ZodObject<{
|
|
9
|
+
command: z.ZodOptional<z.ZodString>;
|
|
10
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
command?: string | undefined;
|
|
13
|
+
args?: Record<string, any> | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
command?: string | undefined;
|
|
16
|
+
args?: Record<string, any> | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
readonly annotations: {
|
|
19
|
+
readonly title: "HuggingFace Jobs";
|
|
20
|
+
readonly destructiveHint: false;
|
|
21
|
+
readonly readOnlyHint: false;
|
|
22
|
+
readonly openWorldHint: true;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare class HfJobsTool {
|
|
26
|
+
private client;
|
|
27
|
+
private hfToken?;
|
|
28
|
+
private isAuthenticated;
|
|
29
|
+
constructor(hfToken?: string, isAuthenticated?: boolean, namespace?: string);
|
|
30
|
+
execute(params: {
|
|
31
|
+
command?: string;
|
|
32
|
+
args?: Record<string, unknown>;
|
|
33
|
+
}): Promise<ToolResult>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/jobs/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAe1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAmOhD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAuBtB,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,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAqIhG"}
|