@heyditto/cli 2.1.0 → 2.2.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
@@ -85,7 +85,25 @@ requires backend support — see
85
85
  [ditto-assistant/backend#1199](https://github.com/ditto-assistant/backend/issues/1199)),
86
86
  so picking the right name at init avoids a stuck label.
87
87
 
88
- For a human-owned key, get one at **https://app.heyditto.ai/mcp/newkey**.
88
+ ### Humans: sign in through the browser
89
+
90
+ ```bash
91
+ heyditto login
92
+ ```
93
+
94
+ opens the Ditto web app with a one-time device code (sign in with Google, X, Apple
95
+ or GitHub, or create an account), approves it, and hands the key back to the CLI —
96
+ nothing to copy. `heyditto claude` / `heyditto codex` run the same flow
97
+ automatically on first use, and the web page lets you pick or create the
98
+ inference endpoint to launch through, so a fresh machine needs exactly one
99
+ command:
100
+
101
+ ```bash
102
+ npx @heyditto/cli@latest claude --yolo --worktree
103
+ ```
104
+
105
+ You can still paste a key from **https://app.heyditto.ai/mcp/newkey**
106
+ (`heyditto login <key>`, `--paste`, or `--stdin`), or set it in the environment:
89
107
 
90
108
  ```bash
91
109
  export DITTO_API_KEY=ditto_mcp_…
@@ -314,10 +332,11 @@ Print a Claude Desktop / Cursor / generic-MCP-client config snippet for the Ditt
314
332
  ## Coding agents
315
333
 
316
334
  `heyditto claude` and `heyditto codex` launch Claude Code or Codex through one of
317
- your Ditto **inference endpoints** (Settings → Developer → Inference endpoints
318
- in the Ditto app). Each launch:
335
+ your Ditto **inference endpoints** (managed at https://developer.heyditto.ai/endpoints;
336
+ the Ditto app's Settings → Developer page still works too). Each launch:
319
337
 
320
- 1. lists your endpoints and lets you pick one (or uses `--endpoint` / the saved default),
338
+ 1. signs you in through the browser if this machine has no key yet, then uses
339
+ the endpoint you picked there, `--endpoint`, the saved default, or a picker,
321
340
  2. mints a temporary endpoint key (optionally capped with `--budget <tokens>`),
322
341
  3. starts the agent with that key and a fresh `X-Ditto-Session-Id`, so the
323
342
  session becomes its own thread with full traces under the endpoint,
@@ -370,9 +389,35 @@ How the wiring works:
370
389
 
371
390
  ### `endpoints`
372
391
 
373
- List your inference endpoints with model and spend. `--set-default <slug>` picks
374
- the one used when `--endpoint` is omitted; `--output json` includes the gateway
375
- base URL.
392
+ Manage the inference endpoints the launchers route through — a CLI mirror of
393
+ the developer console at https://developer.heyditto.ai/endpoints (`open` takes
394
+ you to an endpoint's page there; set `DITTO_DEVELOPER_BASE` to point elsewhere):
395
+
396
+ ```
397
+ heyditto endpoints [--set-default <slug>] [--clear-default] list (* = default)
398
+ heyditto endpoints create [--name <n>] [--slug <s>] [--model <id>] [--default]
399
+ heyditto endpoints show <endpoint>
400
+ heyditto endpoints use <endpoint> make it the default
401
+ heyditto endpoints pick choose the default interactively
402
+ heyditto endpoints open [endpoint] open the editor in the Ditto app
403
+ heyditto endpoints set <endpoint> --model … --system-prompt … --spend-limit <tokens|none>
404
+ --spend-period … --record-trace on|off --recall on|off
405
+ --record on|off --memory-depth <n>
406
+ heyditto endpoints delete <endpoint> [--yes]
407
+ heyditto endpoints keys <endpoint> list keys
408
+ heyditto endpoints keys revoke <endpoint> <keyId> [--yes]
409
+ ```
410
+
411
+ Endpoints spend your Ditto credits, so deleting one, revoking a key or raising a
412
+ spend limit asks you to type the slug back; pass `--yes` in scripts. `--output
413
+ json` is available everywhere and includes the gateway base URL.
414
+
415
+ **Agent accounts.** An agent set up with `heyditto init` can create and manage
416
+ endpoints too, but an endpoint created by an unclaimed agent starts **inactive**:
417
+ it serves requests once the person the agent works for claims the agent and
418
+ subscribes to Ditto Hero. The CLI prints the server's explanation together with
419
+ an activation link (the agent's claim link plus the endpoint) — hand that link
420
+ to the user.
376
421
 
377
422
  ### `sessions`
378
423
 
@@ -1,3 +1,4 @@
1
+ import { type InferenceEndpoint } from "../api.js";
1
2
  import { type Harness } from "./types.js";
2
3
  export interface LaunchOptions {
3
4
  endpoint?: string;
@@ -16,5 +17,9 @@ export interface LaunchOptions {
16
17
  name?: string;
17
18
  dryRun?: boolean;
18
19
  }
20
+ /** Interactive numbered picker; also accepts a slug or id. Exported for `heyditto endpoints pick`. */
21
+ export declare function pickEndpoint(endpoints: InferenceEndpoint[], defaultSlug?: string): Promise<InferenceEndpoint>;
22
+ /** Refuses to launch against an endpoint the backend marked inactive (e.g. awaiting the user's plan). */
23
+ export declare function assertEndpointActive(endpoint: InferenceEndpoint): Promise<void>;
19
24
  /** Launches a coding harness against a Ditto inference endpoint with a temporary key. */
20
25
  export declare function launchHarness(harness: Harness, rawArgs: string[], options: LaunchOptions): Promise<void>;
@@ -2,8 +2,12 @@ import { spawn, spawnSync } from "node:child_process";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import os from "node:os";
4
4
  import { createInterface } from "node:readline/promises";
5
- import { createKey, listEndpoints, revokeKey, } from "../api.js";
6
- import { readStoredAuth } from "../store.js";
5
+ import { ApiError, createEndpoint, createKey, findEndpoint, isEndpointPending, listEndpoints, revokeKey, } from "../api.js";
6
+ import { openInBrowser } from "../browser.js";
7
+ import { endpointURL, resolveApiKey } from "../config.js";
8
+ import { deviceLogin } from "../device-login.js";
9
+ import { formatActivation } from "../endpoint-format.js";
10
+ import { readStoredAuth, saveLogin, updateStoredAuth } from "../store.js";
7
11
  import { planClaude } from "./claude.js";
8
12
  import { planCodex } from "./codex.js";
9
13
  import { latestSession, readSession, writeSession } from "./sessions.js";
@@ -40,51 +44,132 @@ function formatSpend(e) {
40
44
  return `${used.toLocaleString()} tokens used, no limit`;
41
45
  return `${used.toLocaleString()} / ${e.spendLimitTokens.toLocaleString()} tokens${e.spendPeriod && e.spendPeriod !== "never" ? ` per ${e.spendPeriod.replace(/ly$/, "")}` : ""}`;
42
46
  }
43
- async function pickEndpoint(endpoints) {
44
- if (!process.stdin.isTTY || !process.stderr.isTTY) {
45
- throw new Error("no endpoint selected. Pass --endpoint <slug>, or set a default with `heyditto endpoints --set-default <slug>`.");
47
+ function interactive() {
48
+ return Boolean(process.stdin.isTTY && process.stderr.isTTY);
49
+ }
50
+ async function ask(question) {
51
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
52
+ try {
53
+ return (await rl.question(question)).trim();
54
+ }
55
+ finally {
56
+ rl.close();
57
+ }
58
+ }
59
+ /** Yes/no prompt with Enter defaulting to yes. */
60
+ async function confirmYes(question) {
61
+ const answer = (await ask(`${question} [Y/n] `)).toLowerCase();
62
+ return answer === "" || answer === "y" || answer === "yes";
63
+ }
64
+ /** Interactive numbered picker; also accepts a slug or id. Exported for `heyditto endpoints pick`. */
65
+ export async function pickEndpoint(endpoints, defaultSlug) {
66
+ if (!interactive()) {
67
+ throw new Error("no endpoint selected. Pass --endpoint <slug>, or set a default with `heyditto endpoints use <slug>`.");
46
68
  }
47
69
  process.stderr.write("Ditto inference endpoints:\n\n");
48
70
  endpoints.forEach((e, i) => {
49
- process.stderr.write(` ${i + 1}) ${e.slug} ${e.name !== e.slug ? `(${e.name}) ` : ""}model=${e.model}\n`);
71
+ const marks = [
72
+ e.slug === defaultSlug ? "default" : "",
73
+ isEndpointPending(e) ? "inactive" : "",
74
+ ].filter(Boolean);
75
+ process.stderr.write(` ${i + 1}) ${e.slug} ${e.name !== e.slug ? `(${e.name}) ` : ""}model=${e.model}${marks.length ? ` [${marks.join(", ")}]` : ""}\n`);
50
76
  process.stderr.write(` ${formatSpend(e)}${e.recordTrace ? " · traces on" : " · traces off"}\n`);
51
77
  });
52
78
  process.stderr.write("\n");
53
79
  const rl = createInterface({ input: process.stdin, output: process.stderr });
54
80
  try {
55
81
  for (;;) {
56
- const answer = (await rl.question(`Connect to which endpoint? [1-${endpoints.length}] `)).trim();
82
+ const answer = (await rl.question(`Connect to which endpoint? [1-${endpoints.length}, or a slug] `)).trim();
57
83
  const idx = Number(answer);
58
84
  if (Number.isInteger(idx) && idx >= 1 && idx <= endpoints.length)
59
85
  return endpoints[idx - 1];
60
- const bySlug = endpoints.find((e) => e.slug === answer || e.id === answer);
86
+ const bySlug = findEndpoint(endpoints, answer);
61
87
  if (bySlug)
62
88
  return bySlug;
63
- process.stderr.write("Pick a number from the list.\n");
89
+ process.stderr.write(`Pick a number from 1 to ${endpoints.length}, or type an endpoint slug.\n`);
64
90
  }
65
91
  }
66
92
  finally {
67
93
  rl.close();
68
94
  }
69
95
  }
70
- async function resolveEndpoint(wanted, endpoints) {
96
+ /** Refuses to launch against an endpoint the backend marked inactive (e.g. awaiting the user's plan). */
97
+ export async function assertEndpointActive(endpoint) {
98
+ if (!isEndpointPending(endpoint))
99
+ return;
100
+ const stored = await readStoredAuth();
101
+ const details = formatActivation(endpoint, stored?.claimURL);
102
+ throw new Error(`endpoint "${endpoint.slug}" is not active yet (${endpoint.status}).\n\n${details}`);
103
+ }
104
+ async function resolveEndpoint(wanted, endpoints, selected) {
71
105
  if (endpoints.length === 0) {
72
- throw new Error("you have no inference endpoints yet. Create one in the Ditto app: Settings → Developer → Inference endpoints.");
106
+ if (interactive() && (await confirmYes("You have no inference endpoints yet. Create your first one now?"))) {
107
+ const created = await createEndpoint({});
108
+ log(`created endpoint ${created.slug} (model ${created.model})`);
109
+ await updateStoredAuth({ defaultEndpoint: created.slug });
110
+ return created;
111
+ }
112
+ throw new Error(`you have no inference endpoints yet. Create one with \`heyditto endpoints create\`, or at ${endpointURL()}.`);
73
113
  }
74
114
  const stored = (await readStoredAuth())?.defaultEndpoint;
75
- const target = wanted?.trim() || stored?.trim();
76
- if (target) {
77
- const match = endpoints.find((e) => e.slug === target || e.id === target);
115
+ if (wanted?.trim()) {
116
+ const match = findEndpoint(endpoints, wanted);
78
117
  if (match)
79
118
  return match;
80
- if (wanted) {
81
- throw new Error(`no endpoint named "${target}". Available: ${endpoints.map((e) => e.slug).join(", ")}`);
82
- }
83
- log(`default endpoint "${target}" no longer exists; pick another`);
119
+ throw new Error(`no endpoint named "${wanted.trim()}". Available: ${endpoints.map((e) => e.slug).join(", ")}`);
120
+ }
121
+ if (selected) {
122
+ // Chosen in the browser moments ago during the device login.
123
+ const match = findEndpoint(endpoints, selected.id) ?? findEndpoint(endpoints, selected.slug);
124
+ if (match)
125
+ return match;
126
+ log(`endpoint "${selected.slug}" picked in the browser is not in your list; pick another`);
127
+ }
128
+ if (stored?.trim()) {
129
+ const match = findEndpoint(endpoints, stored);
130
+ if (match)
131
+ return match;
132
+ log(`default endpoint "${stored.trim()}" no longer exists; pick another`);
84
133
  }
85
134
  if (endpoints.length === 1)
86
135
  return endpoints[0];
87
- return pickEndpoint(endpoints);
136
+ const picked = await pickEndpoint(endpoints, stored);
137
+ if (await confirmYes(`Use ${picked.slug} by default next time?`)) {
138
+ await updateStoredAuth({ defaultEndpoint: picked.slug });
139
+ log(`default endpoint set to ${picked.slug} (change it with \`heyditto endpoints use <slug>\`)`);
140
+ }
141
+ return picked;
142
+ }
143
+ /**
144
+ * First run: no key saved anywhere. On a terminal, run the browser device
145
+ * flow with the harness as the intent so the web page can offer the endpoint
146
+ * picker; the browser hands back the key and (optionally) the chosen endpoint.
147
+ */
148
+ async function ensureLoggedIn(harness) {
149
+ const { key } = await resolveApiKey();
150
+ if (key)
151
+ return undefined;
152
+ if (!interactive()) {
153
+ // Non-interactive callers (CI, agents) must log in explicitly.
154
+ await listEndpoints(); // throws the shared "no Ditto API key configured" error
155
+ return undefined;
156
+ }
157
+ log(`no Ditto login yet — opening your browser to sign in and pick an endpoint for ${harness === "claude" ? "Claude Code" : "Codex"}.`);
158
+ return browserLogin(harness);
159
+ }
160
+ /** Runs the browser device flow for a harness and saves the result. */
161
+ async function browserLogin(harness) {
162
+ const result = await deviceLogin({
163
+ intent: harness,
164
+ onCode: (userCode, url) => {
165
+ process.stderr.write(`\n ${url}\n\n Code: ${userCode}\n\n`);
166
+ openInBrowser(url);
167
+ process.stderr.write("Waiting for approval in the browser (Ctrl+C to cancel)…\n");
168
+ },
169
+ });
170
+ await saveLogin(result.apiKey, result.setDefault && result.endpoint ? { defaultEndpoint: result.endpoint.slug } : {});
171
+ log(`logged in${result.endpoint ? `; endpoint ${result.endpoint.slug}${result.setDefault ? " saved as default" : ""}` : ""}`);
172
+ return result.endpoint;
88
173
  }
89
174
  function forwardSignals(child) {
90
175
  // Ctrl+C reaches the child directly through the shared terminal; the
@@ -152,8 +237,25 @@ export async function launchHarness(harness, rawArgs, options) {
152
237
  if (!record.harnessSessionId)
153
238
  resumeLast = true;
154
239
  }
155
- const catalog = await listEndpoints();
156
- const endpoint = await resolveEndpoint(options.endpoint ?? record?.endpointSlug, catalog.endpoints);
240
+ let selected = options.dryRun ? undefined : await ensureLoggedIn(harness);
241
+ let catalog;
242
+ try {
243
+ catalog = await listEndpoints();
244
+ }
245
+ catch (err) {
246
+ // A saved key that lapsed (device-flow keys expire) sends the user back
247
+ // through the browser instead of a dead 401.
248
+ if (!(err instanceof ApiError) || err.status !== 401 || options.dryRun || !interactive())
249
+ throw err;
250
+ const { source } = await resolveApiKey();
251
+ if (source !== "config")
252
+ throw err;
253
+ log("your saved Ditto login is no longer valid — opening your browser to sign in again.");
254
+ selected = await browserLogin(harness);
255
+ catalog = await listEndpoints();
256
+ }
257
+ const endpoint = await resolveEndpoint(options.endpoint ?? record?.endpointSlug, catalog.endpoints, selected);
258
+ await assertEndpointActive(endpoint);
157
259
  let cwd = record?.worktree ?? process.cwd();
158
260
  let worktreePath = record?.worktree;
159
261
  if (options.worktree !== undefined && options.worktree !== false) {
@@ -209,7 +311,7 @@ export async function launchHarness(harness, rawArgs, options) {
209
311
  .filter(Boolean)
210
312
  .join(" ");
211
313
  log(banner);
212
- log(`traces: Ditto app → Settings → Developer → Inference endpoints → ${endpoint.slug}`);
314
+ log(`traces: ${endpointURL(endpoint.id)}`);
213
315
  if (options.dryRun) {
214
316
  const env = Object.fromEntries(Object.entries(plan.envSet).map(([k, v]) => [k, v === DRY_RUN_KEY ? "<key>" : v]));
215
317
  process.stdout.write(`${JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/agents/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/agents/launch.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts CHANGED
@@ -5,24 +5,62 @@ export declare class ApiError extends Error {
5
5
  constructor(message: string, status: number, body: string);
6
6
  }
7
7
  export declare function apiBase(): string;
8
+ /** Shared "not logged in" message: browser login first, then the alternatives. */
9
+ export declare const NO_KEY_MESSAGE: string;
8
10
  export declare function apiFetch<T>(path: string, init?: {
9
11
  method?: string;
10
12
  body?: unknown;
11
13
  auth?: boolean;
12
14
  }): Promise<T>;
15
+ export type EndpointStatus = "active" | "pending_plan";
16
+ /** Backend-controlled copy explaining why an endpoint cannot serve requests yet. */
17
+ export interface EndpointActivation {
18
+ state: string;
19
+ reason: "agent_unclaimed" | "plan_required" | string;
20
+ requiredTier?: number;
21
+ requiredTierName?: string;
22
+ priceHint?: string;
23
+ message: string;
24
+ /** Link to hand to the user; for agent accounts the CLI adds the claim token (see mergeActivationURL). */
25
+ url?: string;
26
+ }
13
27
  export interface InferenceEndpoint {
14
28
  id: string;
15
29
  slug: string;
16
30
  name: string;
17
31
  model: string;
32
+ systemPrompt?: string;
18
33
  spendPeriod?: string;
19
34
  spendLimitTokens?: number | null;
20
35
  spentTokens?: number;
36
+ memoryDepth?: number;
37
+ maxToolRounds?: number;
21
38
  recordTrace?: boolean;
39
+ recordAttachments?: boolean;
22
40
  recallEnabled?: boolean;
23
41
  recordEnabled?: boolean;
24
42
  tools?: string[];
43
+ modelMode?: string;
44
+ billingMode?: string;
45
+ status?: EndpointStatus | string;
46
+ activation?: EndpointActivation;
47
+ createdAt?: string;
48
+ updatedAt?: string;
49
+ }
50
+ /** Partial body for POST / PATCH /api/v5/inference/endpoints. */
51
+ export interface EndpointInput {
52
+ name?: string;
53
+ slug?: string;
54
+ model?: string;
55
+ systemPrompt?: string;
56
+ spendLimitTokens?: number | null;
57
+ spendPeriod?: string;
58
+ recordTrace?: boolean;
59
+ recallEnabled?: boolean;
60
+ recordEnabled?: boolean;
61
+ memoryDepth?: number;
25
62
  }
63
+ export declare function isEndpointPending(e: InferenceEndpoint): boolean;
26
64
  export interface InferenceEndpointsResponse {
27
65
  baseUrl: string;
28
66
  endpoints: InferenceEndpoint[];
@@ -30,6 +68,16 @@ export interface InferenceEndpointsResponse {
30
68
  used?: number;
31
69
  }
32
70
  export declare function listEndpoints(): Promise<InferenceEndpointsResponse>;
71
+ export declare function createEndpoint(input?: EndpointInput): Promise<InferenceEndpoint>;
72
+ export declare function updateEndpoint(id: string, patch: EndpointInput): Promise<InferenceEndpoint>;
73
+ export declare function deleteEndpoint(id: string): Promise<void>;
74
+ /** Finds one endpoint by slug or id from the catalog (there is no GET-by-id route). */
75
+ export declare function findEndpoint(endpoints: InferenceEndpoint[], ref: string): InferenceEndpoint | undefined;
76
+ export declare function getEndpoint(ref: string): Promise<{
77
+ endpoint: InferenceEndpoint;
78
+ catalog: InferenceEndpointsResponse;
79
+ }>;
80
+ export declare function listKeys(endpointId: string): Promise<InferenceKey[]>;
33
81
  export interface InferenceKey {
34
82
  id: string;
35
83
  endpointId: string;
@@ -39,6 +87,10 @@ export interface InferenceKey {
39
87
  expiresAt?: string | null;
40
88
  spendLimitTokens?: number | null;
41
89
  spendPeriod?: string;
90
+ spentTokens?: number;
91
+ createdAt?: string;
92
+ lastUsedAt?: string | null;
93
+ revokedAt?: string | null;
42
94
  }
43
95
  export interface CreateKeyInput {
44
96
  name: string;
@@ -60,17 +112,33 @@ export interface InferenceSession {
60
112
  lastSeenAt?: string;
61
113
  }
62
114
  export declare function listRemoteSessions(endpointId: string): Promise<InferenceSession[]>;
115
+ /** What the CLI was asked to do; the web page specializes its onboarding on it. */
116
+ export type DeviceIntent = "login" | "claude" | "codex";
117
+ export declare const DEVICE_CLIENT = "heyditto-cli";
63
118
  export interface DeviceCode {
64
119
  device_code: string;
65
120
  user_code: string;
66
121
  verification_url: string;
122
+ /** Backend-built URL carrying the code and the intent (RFC 8628 §3.3.1). */
123
+ verification_uri_complete?: string;
67
124
  expires_in: number;
68
125
  interval: number;
69
126
  }
70
- export declare function requestDeviceCode(): Promise<DeviceCode>;
127
+ export declare function requestDeviceCode(input: {
128
+ intent: DeviceIntent;
129
+ }): Promise<DeviceCode>;
130
+ /** Endpoint the browser picked for the CLI during the device flow. */
131
+ export interface SelectedEndpoint {
132
+ id: string;
133
+ slug: string;
134
+ name?: string;
135
+ model?: string;
136
+ }
71
137
  export type DeviceTokenResult = {
72
138
  status: "ok";
73
139
  accessToken: string;
140
+ endpoint?: SelectedEndpoint;
141
+ setDefault?: boolean;
74
142
  } | {
75
143
  status: "pending";
76
144
  } | {
package/dist/api.js CHANGED
@@ -1,3 +1,4 @@
1
+ import os from "node:os";
1
2
  import { packageName, packageVersion, resolveApiKey } from "./config.js";
2
3
  /** Minimal authenticated REST client for the Ditto management API. */
3
4
  export class ApiError extends Error {
@@ -16,13 +17,15 @@ export function apiBase() {
16
17
  function userAgent() {
17
18
  return `${packageName}/${packageVersion}`;
18
19
  }
20
+ /** Shared "not logged in" message: browser login first, then the alternatives. */
21
+ export const NO_KEY_MESSAGE = "no Ditto API key configured.\n\n" +
22
+ " Run: heyditto login (opens your browser)\n" +
23
+ " Or: heyditto login <key> (save an existing key)\n" +
24
+ " Or: heyditto init --json (create a claimable agent account, no browser)\n";
19
25
  async function requireKey() {
20
26
  const { key } = await resolveApiKey();
21
- if (!key) {
22
- throw new Error("no Ditto API key configured.\n\n" +
23
- " Run: heyditto login\n" +
24
- " Or save an existing key with: heyditto login <key>\n");
25
- }
27
+ if (!key)
28
+ throw new Error(NO_KEY_MESSAGE);
26
29
  return key;
27
30
  }
28
31
  export async function apiFetch(path, init = {}) {
@@ -60,6 +63,9 @@ export async function apiFetch(path, init = {}) {
60
63
  return undefined;
61
64
  return (await response.json());
62
65
  }
66
+ export function isEndpointPending(e) {
67
+ return e.status === "pending_plan" || (e.status !== undefined && e.status !== "active");
68
+ }
63
69
  export async function listEndpoints() {
64
70
  const res = await apiFetch("/api/v5/inference/endpoints");
65
71
  return {
@@ -69,6 +75,36 @@ export async function listEndpoints() {
69
75
  used: res.used,
70
76
  };
71
77
  }
78
+ const endpointsPath = "/api/v5/inference/endpoints";
79
+ function endpointPath(id) {
80
+ return `${endpointsPath}/${encodeURIComponent(id)}`;
81
+ }
82
+ export async function createEndpoint(input = {}) {
83
+ return apiFetch(endpointsPath, { method: "POST", body: input });
84
+ }
85
+ export async function updateEndpoint(id, patch) {
86
+ return apiFetch(endpointPath(id), { method: "PATCH", body: patch });
87
+ }
88
+ export async function deleteEndpoint(id) {
89
+ await apiFetch(endpointPath(id), { method: "DELETE" });
90
+ }
91
+ /** Finds one endpoint by slug or id from the catalog (there is no GET-by-id route). */
92
+ export function findEndpoint(endpoints, ref) {
93
+ const wanted = ref.trim();
94
+ return endpoints.find((e) => e.slug === wanted || e.id === wanted);
95
+ }
96
+ export async function getEndpoint(ref) {
97
+ const catalog = await listEndpoints();
98
+ const endpoint = findEndpoint(catalog.endpoints, ref);
99
+ if (!endpoint) {
100
+ throw new Error(`no endpoint named "${ref.trim()}". Available: ${catalog.endpoints.map((e) => e.slug).join(", ") || "(none — create one with `heyditto endpoints create`)"}`);
101
+ }
102
+ return { endpoint, catalog };
103
+ }
104
+ export async function listKeys(endpointId) {
105
+ const res = await apiFetch(`${endpointPath(endpointId)}/keys`);
106
+ return Array.isArray(res) ? res : (res.keys ?? []);
107
+ }
72
108
  export async function createKey(endpointId, input) {
73
109
  const key = await apiFetch(`/api/v5/inference/endpoints/${encodeURIComponent(endpointId)}/keys`, { method: "POST", body: input });
74
110
  if (!key.key)
@@ -82,10 +118,16 @@ export async function listRemoteSessions(endpointId) {
82
118
  const res = await apiFetch(`/api/v5/inference/endpoints/${encodeURIComponent(endpointId)}/sessions`);
83
119
  return res.sessions ?? [];
84
120
  }
85
- export async function requestDeviceCode() {
121
+ export const DEVICE_CLIENT = "heyditto-cli";
122
+ export async function requestDeviceCode(input) {
86
123
  const res = await apiFetch("/api/v2/mcp/device-code", {
87
124
  method: "POST",
88
- body: {},
125
+ body: {
126
+ client: DEVICE_CLIENT,
127
+ client_version: packageVersion,
128
+ intent: input.intent,
129
+ hostname: os.hostname().slice(0, 128),
130
+ },
89
131
  auth: false,
90
132
  });
91
133
  if (!res.device_code || !res.user_code || !res.verification_url) {
@@ -99,8 +141,10 @@ export async function pollDeviceToken(deviceCode) {
99
141
  auth: false,
100
142
  body: { device_code: deviceCode, grant_type: "urn:ietf:params:oauth:grant-type:device_code" },
101
143
  });
102
- if (res.access_token)
103
- return { status: "ok", accessToken: res.access_token };
144
+ if (res.access_token) {
145
+ const endpoint = res.endpoint && res.endpoint.id && res.endpoint.slug ? res.endpoint : undefined;
146
+ return { status: "ok", accessToken: res.access_token, endpoint, setDefault: Boolean(res.set_default) };
147
+ }
104
148
  switch (res.error) {
105
149
  case "authorization_pending":
106
150
  return { status: "pending" };
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /** Best-effort: open a URL in the user's default browser without blocking. */
2
+ export declare function openInBrowser(url: string): void;
@@ -0,0 +1,17 @@
1
+ import { spawn } from "node:child_process";
2
+ /** Best-effort: open a URL in the user's default browser without blocking. */
3
+ export function openInBrowser(url) {
4
+ const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
5
+ const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
6
+ try {
7
+ const child = spawn(cmd, args, { stdio: "ignore", detached: true });
8
+ child.on("error", () => {
9
+ /* swallow: best-effort */
10
+ });
11
+ child.unref();
12
+ }
13
+ catch {
14
+ /* swallow: best-effort */
15
+ }
16
+ }
17
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,GAAG,GACP,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,0BAA0B;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;AACH,CAAC"}