zerogpu-cli 3.7.1 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/chatCompletions.d.ts +3 -0
- package/dist/commands/chatCompletions.d.ts.map +1 -0
- package/dist/commands/chatCompletions.js +45 -0
- package/dist/commands/chatCompletions.js.map +1 -0
- package/dist/commands/embeddings.d.ts +4 -0
- package/dist/commands/embeddings.d.ts.map +1 -0
- package/dist/commands/embeddings.js +26 -0
- package/dist/commands/embeddings.js.map +1 -0
- package/dist/commands/moderations.d.ts +4 -0
- package/dist/commands/moderations.d.ts.map +1 -0
- package/dist/commands/moderations.js +24 -0
- package/dist/commands/moderations.js.map +1 -0
- package/dist/commands/responses.d.ts +3 -0
- package/dist/commands/responses.d.ts.map +1 -0
- package/dist/commands/responses.js +37 -0
- package/dist/commands/responses.js.map +1 -0
- package/dist/lib/request.d.ts +11 -0
- package/dist/lib/request.d.ts.map +1 -0
- package/dist/lib/request.js +85 -0
- package/dist/lib/request.js.map +1 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -33,6 +33,11 @@ The official command-line interface for [ZeroGPU](https://zerogpu.ai) — run fa
|
|
|
33
33
|
- [`extract_json`](#extract_json)
|
|
34
34
|
- [`extract_pii`](#extract_pii)
|
|
35
35
|
- [`redact_pii`](#redact_pii)
|
|
36
|
+
- [Endpoints](#endpoints)
|
|
37
|
+
- [`responses`](#responses)
|
|
38
|
+
- [`chat_completions`](#chat_completions)
|
|
39
|
+
- [`moderations`](#moderations)
|
|
40
|
+
- [`embeddings`](#embeddings)
|
|
36
41
|
- [Environment Variables](#environment-variables)
|
|
37
42
|
- [Output](#output)
|
|
38
43
|
- [Troubleshooting](#troubleshooting)
|
|
@@ -301,6 +306,63 @@ zerogpu redact_pii "Call Sarah at 415-555-0100 or email sarah@acme.com."
|
|
|
301
306
|
|
|
302
307
|
---
|
|
303
308
|
|
|
309
|
+
### Endpoints
|
|
310
|
+
|
|
311
|
+
Call a ZeroGPU API endpoint directly, with any model. These commands keep no model list: the model you pass is sent as-is, so a model the platform adds or renames works without a CLI update. They are the stable surface the ZeroGPU agent plugins build on.
|
|
312
|
+
|
|
313
|
+
Text comes from the positional argument, or from stdin when there isn't one, which keeps very large prompts off the command line.
|
|
314
|
+
|
|
315
|
+
| Option | Applies to | Description |
|
|
316
|
+
|---|---|---|
|
|
317
|
+
| `-m, --model <model>` | all | **Required.** Model id, sent exactly as given. |
|
|
318
|
+
| `-i, --instructions <text>` | `responses`, `chat_completions` | `responses`: the `instructions` field. `chat_completions`: a system message ahead of the text. |
|
|
319
|
+
| `--metadata <json>` | `responses`, `chat_completions` | JSON object sent as `metadata` — the per-model options such as `usecase`, `labels`, `schema`, `threshold`. |
|
|
320
|
+
| `--body <json>` | all | Extra top-level request fields, e.g. `'{"max_output_tokens":256}'`. Fields set by the other options take precedence. |
|
|
321
|
+
| `--raw` | `responses`, `chat_completions` | Print the full API response instead of only the model's text. |
|
|
322
|
+
|
|
323
|
+
`responses` and `chat_completions` print the model's text, pretty-printed when it is JSON. `moderations` and `embeddings` print the full response. Every call is recorded for `cost_savings`, like the task commands.
|
|
324
|
+
|
|
325
|
+
#### `responses`
|
|
326
|
+
|
|
327
|
+
POST to `/v1/responses`.
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
zerogpu responses "Email John Smith at john@acme.com." -m gliner-multi-pii-v1 \
|
|
331
|
+
--metadata '{"usecase":"redact","mask":"label"}'
|
|
332
|
+
|
|
333
|
+
# Long input from a file, on stdin
|
|
334
|
+
zerogpu responses -m gpt-oss-120b -i "Summarize this report." < report.txt
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
#### `chat_completions`
|
|
338
|
+
|
|
339
|
+
POST to `/v1/chat/completions`. Also available as `chat-completions`.
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
zerogpu chat_completions "Explique la mise en cache en une phrase." -m qwen3-30b-a3b-fp8
|
|
343
|
+
|
|
344
|
+
zerogpu chat_completions "The app uses Python 3.11 and PostgreSQL 15." -m gliner2-base-v1 \
|
|
345
|
+
--metadata '{"usecase":"ner","labels":["programming language","database"],"threshold":0.3}'
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
#### `moderations`
|
|
349
|
+
|
|
350
|
+
POST to `/v1/moderations`.
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
zerogpu moderations "Screen this comment before we publish it." -m zlm-v1-moderation-edge
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
#### `embeddings`
|
|
357
|
+
|
|
358
|
+
POST to `/v1/embeddings`.
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
zerogpu embeddings "ZeroGPU runs small models at the edge." -m all-minilm-l6-v2
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
304
366
|
## Environment Variables
|
|
305
367
|
|
|
306
368
|
| Variable | Purpose |
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuFpC,wBAAgB,YAAY,IAAI,OAAO,CA8BtC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAIxC"}
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import updateNotifier from "update-notifier";
|
|
6
6
|
import { registerChatCommand } from "./commands/chat.js";
|
|
7
|
+
import { registerChatCompletionsCommand } from "./commands/chatCompletions.js";
|
|
7
8
|
import { registerChatThinkingCommand } from "./commands/chatThinking.js";
|
|
8
9
|
import { registerClassifyDomainCommand } from "./commands/classifyDomain.js";
|
|
9
10
|
import { registerClassifyIabCommand } from "./commands/classifyIab.js";
|
|
@@ -11,12 +12,15 @@ import { registerClassifyIabEnrichedCommand } from "./commands/classifyIabEnrich
|
|
|
11
12
|
import { registerClassifyStructuredCommand } from "./commands/classifyStructured.js";
|
|
12
13
|
import { registerClassifyZeroShotCommand } from "./commands/classifyZeroShot.js";
|
|
13
14
|
import { registerCostSavingsCommand } from "./commands/costSavings.js";
|
|
15
|
+
import { registerEmbeddingsCommand } from "./commands/embeddings.js";
|
|
14
16
|
import { registerExtractEntitiesCommand } from "./commands/extractEntities.js";
|
|
15
17
|
import { registerExtractJsonCommand } from "./commands/extractJson.js";
|
|
16
18
|
import { registerExtractPiiCommand } from "./commands/extractPii.js";
|
|
17
19
|
import { registerGenerateFollowupsCommand } from "./commands/generateFollowups.js";
|
|
18
20
|
import { registerLoginCommand } from "./commands/login.js";
|
|
21
|
+
import { registerModerationsCommand } from "./commands/moderations.js";
|
|
19
22
|
import { registerRedactPiiCommand } from "./commands/redactPii.js";
|
|
23
|
+
import { registerResponsesCommand } from "./commands/responses.js";
|
|
20
24
|
import { registerStatusCommand } from "./commands/status.js";
|
|
21
25
|
import { registerSummarizeCommand } from "./commands/summarize.js";
|
|
22
26
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -94,6 +98,10 @@ export function buildProgram() {
|
|
|
94
98
|
registerSummarizeCommand(program);
|
|
95
99
|
registerChatCommand(program);
|
|
96
100
|
registerChatThinkingCommand(program);
|
|
101
|
+
registerResponsesCommand(program);
|
|
102
|
+
registerChatCompletionsCommand(program);
|
|
103
|
+
registerModerationsCommand(program);
|
|
104
|
+
registerEmbeddingsCommand(program);
|
|
97
105
|
registerCostSavingsCommand(program);
|
|
98
106
|
return program;
|
|
99
107
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC1B,CAAC;AAEvC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;SACvC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,OAAe;IACtD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC9B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC9B,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2BAA2B,GAAG,CAAC,OAAO,4CAA4C,qBAAqB,aAAa;YAClH,wDAAwD;YACxD,mCAAmC,CACtC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,GAAG;QACH,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;KACzC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EACL,qEAAqE;gBACrE,6DAA6D;gBAC7D,6BAA6B;SAChC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,QAAQ,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EACL,8DAA8D;gBAC9D,gCAAgC;SACnC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,MAAM,CAAC,MAAM,sEAAsE,CAC3G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,6BAA6B,CAAC,CAAC;IAExE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC5C,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,iCAAiC,CAAC,OAAO,CAAC,CAAC;IAC3C,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC1C,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAc;IAChC,kBAAkB,EAAE,CAAC;IACrB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatCompletions.d.ts","sourceRoot":"","sources":["../../src/commands/chatCompletions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsDrE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CHAT_COMPLETIONS_ENDPOINT, toResponsesUsage, } from "../lib/chatCompletions.js";
|
|
2
|
+
import { fail, parseJsonObject, postJson, printContent, printJson, requireApiKey, resolveInput, } from "../lib/request.js";
|
|
3
|
+
import { recordAndMaybeNotify } from "../lib/savings.js";
|
|
4
|
+
export function registerChatCompletionsCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("chat_completions [text]")
|
|
7
|
+
.alias("chat-completions")
|
|
8
|
+
.description("Call the Chat Completions API (/v1/chat/completions) with any model. Reads text from stdin when no argument is given.")
|
|
9
|
+
.requiredOption("-m, --model <model>", "Model id, sent exactly as given.")
|
|
10
|
+
.option("-i, --instructions <instructions>", "System message sent ahead of the text.")
|
|
11
|
+
.option("--metadata <json>", 'JSON object sent as `metadata`, e.g. \'{"usecase":"ner","labels":["person"],"threshold":0.3}\'')
|
|
12
|
+
.option("--body <json>", "JSON object of extra top-level request fields. Fields set by other options take precedence.")
|
|
13
|
+
.option("--raw", "Print the full API response instead of only the message content.")
|
|
14
|
+
.action(async (text, opts) => {
|
|
15
|
+
const apiKey = requireApiKey();
|
|
16
|
+
const extra = parseJsonObject(opts.body, "--body");
|
|
17
|
+
const metadata = parseJsonObject(opts.metadata, "--metadata");
|
|
18
|
+
const input = await resolveInput(text);
|
|
19
|
+
const body = {
|
|
20
|
+
...extra,
|
|
21
|
+
model: opts.model,
|
|
22
|
+
messages: [
|
|
23
|
+
...(opts.instructions !== undefined
|
|
24
|
+
? [{ role: "system", content: opts.instructions }]
|
|
25
|
+
: []),
|
|
26
|
+
{ role: "user", content: input },
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
if (metadata)
|
|
30
|
+
body.metadata = metadata;
|
|
31
|
+
const data = (await postJson(CHAT_COMPLETIONS_ENDPOINT, apiKey, body));
|
|
32
|
+
if (opts.raw) {
|
|
33
|
+
printJson(data);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const content = data.choices?.[0]?.message?.content;
|
|
37
|
+
if (!content) {
|
|
38
|
+
fail("Response did not contain any message content.", JSON.stringify(data, null, 2));
|
|
39
|
+
}
|
|
40
|
+
printContent(content);
|
|
41
|
+
}
|
|
42
|
+
recordAndMaybeNotify({ model: opts.model, usage: toResponsesUsage(data.usage) });
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=chatCompletions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatCompletions.js","sourceRoot":"","sources":["../../src/commands/chatCompletions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAUzD,MAAM,UAAU,8BAA8B,CAAC,OAAgB;IAC7D,OAAO;SACJ,OAAO,CAAC,yBAAyB,CAAC;SAClC,KAAK,CAAC,kBAAkB,CAAC;SACzB,WAAW,CACV,uHAAuH,CACxH;SACA,cAAc,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;SACzE,MAAM,CAAC,mCAAmC,EAAE,wCAAwC,CAAC;SACrF,MAAM,CACL,mBAAmB,EACnB,gGAAgG,CACjG;SACA,MAAM,CACL,eAAe,EACf,6FAA6F,CAC9F;SACA,MAAM,CAAC,OAAO,EAAE,kEAAkE,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAA4B,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,GAA4B;YACpC,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE;gBACR,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;oBACjC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClD,CAAC,CAAC,EAAE,CAAC;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;aACjC;SACF,CAAC;QACF,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAC1B,yBAAyB,EACzB,MAAM,EACN,IAAI,CACL,CAA+B,CAAC;QAEjC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/commands/embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAE1E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BhE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toResponsesUsage } from "../lib/chatCompletions.js";
|
|
2
|
+
import { parseJsonObject, postJson, printJson, requireApiKey, resolveInput, } from "../lib/request.js";
|
|
3
|
+
import { recordAndMaybeNotify } from "../lib/savings.js";
|
|
4
|
+
export const EMBEDDINGS_ENDPOINT = "https://api.zerogpu.ai/v1/embeddings";
|
|
5
|
+
export function registerEmbeddingsCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command("embeddings [text]")
|
|
8
|
+
.description("Call the Embeddings API (/v1/embeddings) with any model and print the response. Reads text from stdin when no argument is given.")
|
|
9
|
+
.requiredOption("-m, --model <model>", "Model id, sent exactly as given.")
|
|
10
|
+
.option("--body <json>", "JSON object of extra top-level request fields. Fields set by other options take precedence.")
|
|
11
|
+
.action(async (text, opts) => {
|
|
12
|
+
const apiKey = requireApiKey();
|
|
13
|
+
const extra = parseJsonObject(opts.body, "--body");
|
|
14
|
+
const input = await resolveInput(text);
|
|
15
|
+
const data = (await postJson(EMBEDDINGS_ENDPOINT, apiKey, {
|
|
16
|
+
...extra,
|
|
17
|
+
model: opts.model,
|
|
18
|
+
input,
|
|
19
|
+
}));
|
|
20
|
+
printJson(data);
|
|
21
|
+
// Embedding models bill input tokens only; the API reports no completion
|
|
22
|
+
// tokens, so the output side is estimated and priced at zero.
|
|
23
|
+
recordAndMaybeNotify({ model: opts.model, usage: toResponsesUsage(data.usage) });
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/commands/embeddings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,eAAe,EACf,QAAQ,EACR,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,sCAAsC,CAAC;AAE1E,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,kIAAkI,CACnI;SACA,cAAc,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;SACzE,MAAM,CACL,eAAe,EACf,6FAA6F,CAC9F;SACA,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAsC,EAAE,EAAE;QACjF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE;YACxD,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK;SACN,CAAC,CAAqC,CAAC;QAExC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhB,yEAAyE;QACzE,8DAA8D;QAC9D,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moderations.d.ts","sourceRoot":"","sources":["../../src/commands/moderations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { toResponsesUsage } from "../lib/chatCompletions.js";
|
|
2
|
+
import { parseJsonObject, postJson, printJson, requireApiKey, resolveInput, } from "../lib/request.js";
|
|
3
|
+
import { recordAndMaybeNotify } from "../lib/savings.js";
|
|
4
|
+
export const MODERATIONS_ENDPOINT = "https://api.zerogpu.ai/v1/moderations";
|
|
5
|
+
export function registerModerationsCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command("moderations [text]")
|
|
8
|
+
.description("Call the Moderations API (/v1/moderations) with any model and print the response. Reads text from stdin when no argument is given.")
|
|
9
|
+
.requiredOption("-m, --model <model>", "Model id, sent exactly as given.")
|
|
10
|
+
.option("--body <json>", "JSON object of extra top-level request fields. Fields set by other options take precedence.")
|
|
11
|
+
.action(async (text, opts) => {
|
|
12
|
+
const apiKey = requireApiKey();
|
|
13
|
+
const extra = parseJsonObject(opts.body, "--body");
|
|
14
|
+
const input = await resolveInput(text);
|
|
15
|
+
const data = (await postJson(MODERATIONS_ENDPOINT, apiKey, {
|
|
16
|
+
...extra,
|
|
17
|
+
model: opts.model,
|
|
18
|
+
input,
|
|
19
|
+
}));
|
|
20
|
+
printJson(data);
|
|
21
|
+
recordAndMaybeNotify({ model: opts.model, usage: toResponsesUsage(data.usage) });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=moderations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moderations.js","sourceRoot":"","sources":["../../src/commands/moderations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,eAAe,EACf,QAAQ,EACR,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uCAAuC,CAAC;AAE5E,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CACV,oIAAoI,CACrI;SACA,cAAc,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;SACzE,MAAM,CACL,eAAe,EACf,6FAA6F,CAC9F;SACA,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAsC,EAAE,EAAE;QACjF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;YACzD,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK;SACN,CAAC,CAAqC,CAAC;QAExC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhB,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/commands/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC/D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { fail, parseJsonObject, postJson, printContent, printJson, requireApiKey, resolveInput, } from "../lib/request.js";
|
|
2
|
+
import { RESPONSES_ENDPOINT, extractOutputText, } from "../lib/responses.js";
|
|
3
|
+
import { recordAndMaybeNotify } from "../lib/savings.js";
|
|
4
|
+
export function registerResponsesCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("responses [text]")
|
|
7
|
+
.description("Call the Responses API (/v1/responses) with any model. Reads text from stdin when no argument is given.")
|
|
8
|
+
.requiredOption("-m, --model <model>", "Model id, sent exactly as given.")
|
|
9
|
+
.option("-i, --instructions <instructions>", "System instructions.")
|
|
10
|
+
.option("--metadata <json>", 'JSON object sent as `metadata`, e.g. \'{"usecase":"redact","mask":"label"}\'')
|
|
11
|
+
.option("--body <json>", "JSON object of extra top-level request fields. Fields set by other options take precedence.")
|
|
12
|
+
.option("--raw", "Print the full API response instead of only the output text.")
|
|
13
|
+
.action(async (text, opts) => {
|
|
14
|
+
const apiKey = requireApiKey();
|
|
15
|
+
const extra = parseJsonObject(opts.body, "--body");
|
|
16
|
+
const metadata = parseJsonObject(opts.metadata, "--metadata");
|
|
17
|
+
const input = await resolveInput(text);
|
|
18
|
+
const body = { ...extra, model: opts.model, input };
|
|
19
|
+
if (opts.instructions !== undefined)
|
|
20
|
+
body.instructions = opts.instructions;
|
|
21
|
+
if (metadata)
|
|
22
|
+
body.metadata = metadata;
|
|
23
|
+
const data = (await postJson(RESPONSES_ENDPOINT, apiKey, body));
|
|
24
|
+
if (opts.raw) {
|
|
25
|
+
printJson(data);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const content = extractOutputText(data);
|
|
29
|
+
if (!content) {
|
|
30
|
+
fail("Response did not contain any output text.", JSON.stringify(data, null, 2));
|
|
31
|
+
}
|
|
32
|
+
printContent(content);
|
|
33
|
+
}
|
|
34
|
+
recordAndMaybeNotify({ model: opts.model, usage: data.usage });
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=responses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/commands/responses.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAUzD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CACV,yGAAyG,CAC1G;SACA,cAAc,CAAC,qBAAqB,EAAE,kCAAkC,CAAC;SACzE,MAAM,CAAC,mCAAmC,EAAE,sBAAsB,CAAC;SACnE,MAAM,CACL,mBAAmB,EACnB,8EAA8E,CAC/E;SACA,MAAM,CACL,eAAe,EACf,6FAA6F,CAC9F;SACA,MAAM,CAAC,OAAO,EAAE,8DAA8D,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAsB,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,IAAI,GAA4B,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAC7E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3E,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAyB,CAAC;QAExF,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACnF,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function fail(...lines: string[]): never;
|
|
2
|
+
export declare function requireApiKey(): string;
|
|
3
|
+
export interface InputStream extends AsyncIterable<Buffer | string> {
|
|
4
|
+
isTTY?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveInput(text: string | undefined, stdin?: InputStream): Promise<string>;
|
|
7
|
+
export declare function parseJsonObject(value: string | undefined, flag: string): Record<string, unknown> | undefined;
|
|
8
|
+
export declare function postJson(endpoint: string, apiKey: string, body: Record<string, unknown>): Promise<unknown>;
|
|
9
|
+
export declare function printContent(content: string): void;
|
|
10
|
+
export declare function printJson(payload: unknown): void;
|
|
11
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"AAMA,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAG9C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,GAAE,WAA2B,GACjC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAarC;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CASlD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getApiKey } from "./auth.js";
|
|
2
|
+
// Shared plumbing for the endpoint commands — `responses`, `chat_completions`,
|
|
3
|
+
// `moderations`, and `embeddings`. They send whatever model the caller names
|
|
4
|
+
// and keep no model list, so a new or renamed model never needs a CLI release.
|
|
5
|
+
export function fail(...lines) {
|
|
6
|
+
for (const line of lines)
|
|
7
|
+
console.error(line);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
export function requireApiKey() {
|
|
11
|
+
const resolved = getApiKey();
|
|
12
|
+
if (!resolved) {
|
|
13
|
+
fail("You're not fully signed in yet. Run 'zerogpu login' to set your API key.");
|
|
14
|
+
}
|
|
15
|
+
return resolved.apiKey;
|
|
16
|
+
}
|
|
17
|
+
// Text comes from the positional argument, or from stdin when it is piped, which
|
|
18
|
+
// keeps very large prompts off the command line. Trailing newlines from stdin are
|
|
19
|
+
// dropped, the same way shell `$(...)` drops them.
|
|
20
|
+
export async function resolveInput(text, stdin = process.stdin) {
|
|
21
|
+
let input = text;
|
|
22
|
+
if (input === undefined && !stdin.isTTY) {
|
|
23
|
+
const chunks = [];
|
|
24
|
+
for await (const chunk of stdin)
|
|
25
|
+
chunks.push(Buffer.from(chunk));
|
|
26
|
+
input = Buffer.concat(chunks).toString("utf8").replace(/[\r\n]+$/, "");
|
|
27
|
+
}
|
|
28
|
+
if (!input)
|
|
29
|
+
fail("No input text. Pass it as an argument or pipe it on stdin.");
|
|
30
|
+
return input;
|
|
31
|
+
}
|
|
32
|
+
export function parseJsonObject(value, flag) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = JSON.parse(value);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
fail(`Invalid ${flag} JSON: ${message}`);
|
|
42
|
+
}
|
|
43
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
44
|
+
fail(`${flag} must be a JSON object.`);
|
|
45
|
+
}
|
|
46
|
+
return parsed;
|
|
47
|
+
}
|
|
48
|
+
export async function postJson(endpoint, apiKey, body) {
|
|
49
|
+
let response;
|
|
50
|
+
try {
|
|
51
|
+
response = await fetch(endpoint, {
|
|
52
|
+
method: "POST",
|
|
53
|
+
headers: {
|
|
54
|
+
"content-type": "application/json",
|
|
55
|
+
"x-api-key": apiKey,
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify(body),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
62
|
+
fail(`Request failed: ${message}`);
|
|
63
|
+
}
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
const errBody = await response.text();
|
|
66
|
+
fail(`Request failed with status ${response.status}.`, ...(errBody ? [errBody] : []));
|
|
67
|
+
}
|
|
68
|
+
return response.json();
|
|
69
|
+
}
|
|
70
|
+
// Pretty-print model output that is JSON; print anything else verbatim.
|
|
71
|
+
export function printContent(content) {
|
|
72
|
+
let parsed;
|
|
73
|
+
try {
|
|
74
|
+
parsed = JSON.parse(content);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
console.log(content);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
81
|
+
}
|
|
82
|
+
export function printJson(payload) {
|
|
83
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zerogpu-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"description": "Command-line interface for ZeroGPU.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
"test:watch": "vitest",
|
|
24
24
|
"lint": "eslint .",
|
|
25
25
|
"format": "prettier --write .",
|
|
26
|
-
"prepublishOnly": "npm run build"
|
|
26
|
+
"prepublishOnly": "npm run build",
|
|
27
|
+
"bump": "npm version patch --no-git-tag-version",
|
|
28
|
+
"bump:minor": "npm version minor --no-git-tag-version",
|
|
29
|
+
"bump:major": "npm version major --no-git-tag-version"
|
|
27
30
|
},
|
|
28
31
|
"keywords": [
|
|
29
32
|
"zerogpu",
|