zerogpu-cli 3.7.2 → 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 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;AAmFpC,wBAAgB,YAAY,IAAI,OAAO,CA0BtC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAIxC"}
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":"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,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,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,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,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,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,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,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerChatCompletionsCommand(program: Command): void;
3
+ //# sourceMappingURL=chatCompletions.d.ts.map
@@ -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,4 @@
1
+ import { Command } from "commander";
2
+ export declare const EMBEDDINGS_ENDPOINT = "https://api.zerogpu.ai/v1/embeddings";
3
+ export declare function registerEmbeddingsCommand(program: Command): void;
4
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -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,4 @@
1
+ import { Command } from "commander";
2
+ export declare const MODERATIONS_ENDPOINT = "https://api.zerogpu.ai/v1/moderations";
3
+ export declare function registerModerationsCommand(program: Command): void;
4
+ //# sourceMappingURL=moderations.d.ts.map
@@ -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,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerResponsesCommand(program: Command): void;
3
+ //# sourceMappingURL=responses.d.ts.map
@@ -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.7.2",
3
+ "version": "3.8.0",
4
4
  "description": "Command-line interface for ZeroGPU.",
5
5
  "type": "module",
6
6
  "bin": {