@heyditto/cli 2.0.1 → 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.
Files changed (46) hide show
  1. package/README.md +167 -1
  2. package/dist/agents/claude.d.ts +11 -0
  3. package/dist/agents/claude.js +48 -0
  4. package/dist/agents/claude.js.map +1 -0
  5. package/dist/agents/codex.d.ts +13 -0
  6. package/dist/agents/codex.js +48 -0
  7. package/dist/agents/codex.js.map +1 -0
  8. package/dist/agents/launch.d.ts +25 -0
  9. package/dist/agents/launch.js +376 -0
  10. package/dist/agents/launch.js.map +1 -0
  11. package/dist/agents/sessions.d.ts +28 -0
  12. package/dist/agents/sessions.js +63 -0
  13. package/dist/agents/sessions.js.map +1 -0
  14. package/dist/agents/types.d.ts +50 -0
  15. package/dist/agents/types.js +44 -0
  16. package/dist/agents/types.js.map +1 -0
  17. package/dist/agents/worktree.d.ts +19 -0
  18. package/dist/agents/worktree.js +72 -0
  19. package/dist/agents/worktree.js.map +1 -0
  20. package/dist/api.d.ts +178 -0
  21. package/dist/api.js +163 -0
  22. package/dist/api.js.map +1 -0
  23. package/dist/browser.d.ts +2 -0
  24. package/dist/browser.js +17 -0
  25. package/dist/browser.js.map +1 -0
  26. package/dist/cli.js +107 -24
  27. package/dist/cli.js.map +1 -1
  28. package/dist/commands.d.ts +77 -0
  29. package/dist/commands.js +638 -0
  30. package/dist/commands.js.map +1 -0
  31. package/dist/config.d.ts +8 -0
  32. package/dist/config.js +18 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/device-login.d.ts +28 -0
  35. package/dist/device-login.js +43 -0
  36. package/dist/device-login.js.map +1 -0
  37. package/dist/endpoint-format.d.ts +9 -0
  38. package/dist/endpoint-format.js +21 -0
  39. package/dist/endpoint-format.js.map +1 -0
  40. package/dist/mcp-session.d.ts +40 -0
  41. package/dist/mcp-session.js +133 -0
  42. package/dist/mcp-session.js.map +1 -0
  43. package/dist/store.d.ts +26 -0
  44. package/dist/store.js +61 -0
  45. package/dist/store.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -4,7 +4,15 @@ export declare function apiBaseURL(): string;
4
4
  export declare function mcpServerURL(): string;
5
5
  export declare function configDir(): string;
6
6
  export declare function authFilePath(): string;
7
+ /** Directory holding one JSON record per coding-agent session launched by the CLI. */
8
+ export declare function sessionsDir(): string;
9
+ /** Ditto web app base URL (browser pages: /device, /settings/…, /agent/claim). */
10
+ export declare function appBaseURL(): string;
7
11
  export declare function newKeyURL(): string;
12
+ /** Ditto developer console base URL (inference endpoints live at /endpoints and /endpoints/<id>). */
13
+ export declare function developerBaseURL(): string;
14
+ /** An endpoint's page in the developer console, or the endpoints list when no id is given. */
15
+ export declare function endpointURL(id?: string): string;
8
16
  export declare function agentSignupURL(): string;
9
17
  export type ApiKeySource = "env" | "config" | "none";
10
18
  export interface ResolvedKey {
package/dist/config.js CHANGED
@@ -21,8 +21,25 @@ export function configDir() {
21
21
  export function authFilePath() {
22
22
  return path.join(configDir(), "config.json");
23
23
  }
24
+ /** Directory holding one JSON record per coding-agent session launched by the CLI. */
25
+ export function sessionsDir() {
26
+ return path.join(configDir(), "sessions");
27
+ }
28
+ /** Ditto web app base URL (browser pages: /device, /settings/…, /agent/claim). */
29
+ export function appBaseURL() {
30
+ return (process.env.DITTO_APP_BASE || "https://app.heyditto.ai").replace(/\/+$/, "");
31
+ }
24
32
  export function newKeyURL() {
25
- return "https://app.heyditto.ai/mcp/newkey";
33
+ return `${appBaseURL()}/mcp/newkey`;
34
+ }
35
+ /** Ditto developer console base URL (inference endpoints live at /endpoints and /endpoints/<id>). */
36
+ export function developerBaseURL() {
37
+ return (process.env.DITTO_DEVELOPER_BASE || "https://developer.heyditto.ai").replace(/\/+$/, "");
38
+ }
39
+ /** An endpoint's page in the developer console, or the endpoints list when no id is given. */
40
+ export function endpointURL(id) {
41
+ const base = `${developerBaseURL()}/endpoints`;
42
+ return id ? `${base}/${encodeURIComponent(id)}` : base;
26
43
  }
27
44
  export function agentSignupURL() {
28
45
  return `${apiBaseURL()}/api/v5/agents/signup`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAsC,CAAC;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;AAE1C,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,UAAU,EAAE,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,oCAAoC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,UAAU,EAAE,uBAAuB,CAAC;AAChD,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type DeviceIntent, type SelectedEndpoint } from "./api.js";
2
+ export interface DeviceLoginHooks {
3
+ /** Why the browser is being opened; the web page specializes its copy on it. */
4
+ intent: DeviceIntent;
5
+ /** Called with the code and the URL the user must visit. */
6
+ onCode: (userCode: string, url: string) => void;
7
+ /** Called once per poll while waiting. */
8
+ onWaiting?: () => void;
9
+ }
10
+ export interface DeviceLoginResult {
11
+ apiKey: string;
12
+ /** Endpoint the user picked in the browser, when the intent asked for one. */
13
+ endpoint?: SelectedEndpoint;
14
+ /** The browser asked the CLI to remember `endpoint` as its default. */
15
+ setDefault?: boolean;
16
+ }
17
+ /** Builds the URL to open: the backend's complete URI, else the bare page plus the code. */
18
+ export declare function verificationLink(code: {
19
+ verification_url: string;
20
+ verification_uri_complete?: string;
21
+ user_code: string;
22
+ }): string;
23
+ /**
24
+ * Runs the browser device-login flow and resolves to the minted API key plus
25
+ * whatever the browser chose for the CLI. Polls once quickly, then at the
26
+ * server's interval (backing off on slow_down) until approval, denial, or expiry.
27
+ */
28
+ export declare function deviceLogin(hooks: DeviceLoginHooks): Promise<DeviceLoginResult>;
@@ -0,0 +1,43 @@
1
+ import { pollDeviceToken, requestDeviceCode } from "./api.js";
2
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
3
+ /** Builds the URL to open: the backend's complete URI, else the bare page plus the code. */
4
+ export function verificationLink(code) {
5
+ if (code.verification_uri_complete)
6
+ return code.verification_uri_complete;
7
+ const sep = code.verification_url.includes("?") ? "&" : "?";
8
+ return `${code.verification_url}${sep}code=${encodeURIComponent(code.user_code)}`;
9
+ }
10
+ /**
11
+ * Runs the browser device-login flow and resolves to the minted API key plus
12
+ * whatever the browser chose for the CLI. Polls once quickly, then at the
13
+ * server's interval (backing off on slow_down) until approval, denial, or expiry.
14
+ */
15
+ export async function deviceLogin(hooks) {
16
+ const code = await requestDeviceCode({ intent: hooks.intent });
17
+ hooks.onCode(code.user_code, verificationLink(code));
18
+ const deadline = Date.now() + Math.max(30, code.expires_in || 600) * 1000;
19
+ let interval = Math.max(2, code.interval || 5) * 1000;
20
+ let wait = 1000;
21
+ while (Date.now() < deadline) {
22
+ await sleep(wait);
23
+ wait = interval;
24
+ const result = await pollDeviceToken(code.device_code);
25
+ switch (result.status) {
26
+ case "ok":
27
+ return { apiKey: result.accessToken, endpoint: result.endpoint, setDefault: result.setDefault };
28
+ case "pending":
29
+ hooks.onWaiting?.();
30
+ break;
31
+ case "slow_down":
32
+ interval += 5000;
33
+ wait = interval;
34
+ break;
35
+ case "denied":
36
+ throw new Error("login was denied in the browser");
37
+ case "expired":
38
+ throw new Error("the login code expired before it was approved; run `heyditto login` again");
39
+ }
40
+ }
41
+ throw new Error("timed out waiting for browser approval; run `heyditto login` again");
42
+ }
43
+ //# sourceMappingURL=device-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-login.js","sourceRoot":"","sources":["../src/device-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExG,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAmBtF,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,IAAyF;IACxH,IAAI,IAAI,CAAC,yBAAyB;QAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,OAAO,GAAG,IAAI,CAAC,gBAAgB,GAAG,GAAG,QAAQ,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1E,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,GAAG,QAAQ,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,IAAI;gBACP,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YAClG,KAAK,SAAS;gBACZ,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,WAAW;gBACd,QAAQ,IAAI,IAAI,CAAC;gBACjB,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,KAAK,SAAS;gBACZ,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { InferenceEndpoint } from "./api.js";
2
+ /**
3
+ * Renders the backend's activation notice for an endpoint that cannot serve
4
+ * requests yet. The copy comes from the server; the CLI only fills in the
5
+ * agent's claim token when it has one.
6
+ */
7
+ export declare function formatActivation(endpoint: InferenceEndpoint, storedClaimURL: string | undefined): string;
8
+ /** Resolved activation link (with the claim token merged in), if the endpoint has one. */
9
+ export declare function activationLink(endpoint: InferenceEndpoint, storedClaimURL: string | undefined): string | undefined;
@@ -0,0 +1,21 @@
1
+ import { mergeActivationURL } from "./store.js";
2
+ /**
3
+ * Renders the backend's activation notice for an endpoint that cannot serve
4
+ * requests yet. The copy comes from the server; the CLI only fills in the
5
+ * agent's claim token when it has one.
6
+ */
7
+ export function formatActivation(endpoint, storedClaimURL) {
8
+ const a = endpoint.activation;
9
+ if (!a)
10
+ return `Endpoint ${endpoint.slug} is inactive (${endpoint.status ?? "unknown"}).`;
11
+ const lines = [a.message.trim()];
12
+ if (a.url)
13
+ lines.push("", `Activation link: ${mergeActivationURL(a.url, storedClaimURL)}`);
14
+ return lines.join("\n");
15
+ }
16
+ /** Resolved activation link (with the claim token merged in), if the endpoint has one. */
17
+ export function activationLink(endpoint, storedClaimURL) {
18
+ const url = endpoint.activation?.url;
19
+ return url ? mergeActivationURL(url, storedClaimURL) : undefined;
20
+ }
21
+ //# sourceMappingURL=endpoint-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-format.js","sourceRoot":"","sources":["../src/endpoint-format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA2B,EAAE,cAAkC;IAC9F,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,YAAY,QAAQ,CAAC,IAAI,iBAAiB,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC;IAC1F,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,QAA2B,EAAE,cAAkC;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Explicit MCP sessions: `heyditto session new` picks an id that every later
3
+ * MCP request carries as X-Ditto-Session-Id, so saves and searches land in one
4
+ * thread inside the agent the key is attached to. The name rides once on
5
+ * X-Ditto-Session-Name (the backend titles the thread with it).
6
+ */
7
+ export declare const SESSION_ID_HEADER = "X-Ditto-Session-Id";
8
+ export declare const SESSION_NAME_HEADER = "X-Ditto-Session-Name";
9
+ /** Overrides the stored active session so scripts and spawned shells can pin one. */
10
+ export declare const SESSION_ENV = "DITTO_SESSION_ID";
11
+ export declare const SESSION_ID_PATTERN: RegExp;
12
+ export interface McpSessionRecord {
13
+ id: string;
14
+ name?: string;
15
+ createdAt: string;
16
+ lastUsedAt?: string;
17
+ endedAt?: string;
18
+ /** True once X-Ditto-Session-Name went out on a successful request. */
19
+ nameSent?: boolean;
20
+ }
21
+ export interface ActiveSession {
22
+ id: string;
23
+ name?: string;
24
+ createdAt?: string;
25
+ source: "env" | "config";
26
+ /** Send the name header on the next request. */
27
+ sendName: boolean;
28
+ }
29
+ export declare function sessionsHistoryPath(): string;
30
+ export declare function readSessionHistory(): Promise<McpSessionRecord[]>;
31
+ export declare function upsertSessionRecord(record: McpSessionRecord): Promise<void>;
32
+ /** The session every MCP request should be tagged with, or undefined. */
33
+ export declare function resolveActiveSession(): Promise<ActiveSession | undefined>;
34
+ /** Pure: the extra headers for one MCP request. */
35
+ export declare function sessionHeaders(active: ActiveSession | undefined): Record<string, string>;
36
+ /** Record a successful request: the name is sent once, lastUsedAt moves. */
37
+ export declare function markSessionUsed(active: ActiveSession | undefined): Promise<void>;
38
+ export declare function startSession(name: string | undefined, id?: string): Promise<McpSessionRecord>;
39
+ export declare function useSession(id: string): Promise<McpSessionRecord>;
40
+ export declare function endSession(): Promise<McpSessionRecord | undefined>;
@@ -0,0 +1,133 @@
1
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { randomUUID } from "node:crypto";
3
+ import path from "node:path";
4
+ import { configDir } from "./config.js";
5
+ import { readStoredAuth, updateStoredAuth } from "./store.js";
6
+ /**
7
+ * Explicit MCP sessions: `heyditto session new` picks an id that every later
8
+ * MCP request carries as X-Ditto-Session-Id, so saves and searches land in one
9
+ * thread inside the agent the key is attached to. The name rides once on
10
+ * X-Ditto-Session-Name (the backend titles the thread with it).
11
+ */
12
+ export const SESSION_ID_HEADER = "X-Ditto-Session-Id";
13
+ export const SESSION_NAME_HEADER = "X-Ditto-Session-Name";
14
+ /** Overrides the stored active session so scripts and spawned shells can pin one. */
15
+ export const SESSION_ENV = "DITTO_SESSION_ID";
16
+ export const SESSION_ID_PATTERN = /^[A-Za-z0-9._:@-]{1,128}$/;
17
+ const HISTORY_LIMIT = 200;
18
+ export function sessionsHistoryPath() {
19
+ return path.join(configDir(), "mcp-sessions.json");
20
+ }
21
+ export async function readSessionHistory() {
22
+ try {
23
+ const raw = await readFile(sessionsHistoryPath(), "utf-8");
24
+ const parsed = JSON.parse(raw);
25
+ return Array.isArray(parsed.sessions) ? parsed.sessions : [];
26
+ }
27
+ catch (err) {
28
+ if (err.code === "ENOENT")
29
+ return [];
30
+ throw err;
31
+ }
32
+ }
33
+ async function writeSessionHistory(sessions) {
34
+ const file = sessionsHistoryPath();
35
+ await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
36
+ const trimmed = [...sessions]
37
+ .sort((a, b) => (b.createdAt > a.createdAt ? 1 : b.createdAt < a.createdAt ? -1 : 0))
38
+ .slice(0, HISTORY_LIMIT);
39
+ await writeFile(file, `${JSON.stringify({ sessions: trimmed }, null, 2)}\n`, { mode: 0o600 });
40
+ await chmod(file, 0o600);
41
+ }
42
+ export async function upsertSessionRecord(record) {
43
+ const history = await readSessionHistory();
44
+ const idx = history.findIndex((s) => s.id === record.id);
45
+ if (idx >= 0)
46
+ history[idx] = { ...history[idx], ...record };
47
+ else
48
+ history.push(record);
49
+ await writeSessionHistory(history);
50
+ }
51
+ /** The session every MCP request should be tagged with, or undefined. */
52
+ export async function resolveActiveSession() {
53
+ const envID = process.env[SESSION_ENV]?.trim();
54
+ if (envID) {
55
+ if (!SESSION_ID_PATTERN.test(envID))
56
+ throw new Error(`${SESSION_ENV} must match ${SESSION_ID_PATTERN}`);
57
+ return { id: envID, source: "env", sendName: false };
58
+ }
59
+ const stored = (await readStoredAuth())?.activeSession;
60
+ if (!stored?.id)
61
+ return undefined;
62
+ const history = await readSessionHistory();
63
+ const record = history.find((s) => s.id === stored.id);
64
+ const name = record?.name ?? stored.name;
65
+ return {
66
+ id: stored.id,
67
+ name,
68
+ createdAt: record?.createdAt ?? stored.createdAt,
69
+ source: "config",
70
+ sendName: Boolean(name) && !record?.nameSent,
71
+ };
72
+ }
73
+ /** Pure: the extra headers for one MCP request. */
74
+ export function sessionHeaders(active) {
75
+ if (!active)
76
+ return {};
77
+ const headers = { [SESSION_ID_HEADER]: active.id };
78
+ if (active.sendName && active.name)
79
+ headers[SESSION_NAME_HEADER] = active.name;
80
+ return headers;
81
+ }
82
+ /** Record a successful request: the name is sent once, lastUsedAt moves. */
83
+ export async function markSessionUsed(active) {
84
+ if (!active || active.source !== "config")
85
+ return;
86
+ const history = await readSessionHistory();
87
+ const record = history.find((s) => s.id === active.id);
88
+ if (!record)
89
+ return;
90
+ await upsertSessionRecord({ ...record, lastUsedAt: new Date().toISOString(), nameSent: record.nameSent || active.sendName });
91
+ }
92
+ export async function startSession(name, id) {
93
+ const sessionID = id?.trim() || randomUUID();
94
+ if (!SESSION_ID_PATTERN.test(sessionID))
95
+ throw new Error(`session id must match ${SESSION_ID_PATTERN}`);
96
+ const record = { id: sessionID, createdAt: new Date().toISOString() };
97
+ const cleaned = name?.trim();
98
+ if (cleaned)
99
+ record.name = cleaned;
100
+ await upsertSessionRecord(record);
101
+ await updateStoredAuth({ activeSession: { id: record.id, name: record.name, createdAt: record.createdAt } });
102
+ return record;
103
+ }
104
+ export async function useSession(id) {
105
+ const wanted = id.trim();
106
+ const history = await readSessionHistory();
107
+ const record = history.find((s) => s.id === wanted || (wanted.length >= 6 && s.id.startsWith(wanted)));
108
+ if (!record) {
109
+ if (!SESSION_ID_PATTERN.test(wanted))
110
+ throw new Error(`no local session "${wanted}"; see \`heyditto session list\``);
111
+ // An id minted elsewhere (another machine, the app) can still be pinned.
112
+ const fresh = { id: wanted, createdAt: new Date().toISOString(), nameSent: true };
113
+ await upsertSessionRecord(fresh);
114
+ await updateStoredAuth({ activeSession: { id: fresh.id, createdAt: fresh.createdAt } });
115
+ return fresh;
116
+ }
117
+ const revived = { ...record, endedAt: undefined };
118
+ await upsertSessionRecord(revived);
119
+ await updateStoredAuth({ activeSession: { id: revived.id, name: revived.name, createdAt: revived.createdAt } });
120
+ return revived;
121
+ }
122
+ export async function endSession() {
123
+ const stored = (await readStoredAuth())?.activeSession;
124
+ if (!stored?.id)
125
+ return undefined;
126
+ const history = await readSessionHistory();
127
+ const record = history.find((s) => s.id === stored.id);
128
+ const ended = { ...(record ?? { id: stored.id, createdAt: stored.createdAt ?? new Date().toISOString() }), endedAt: new Date().toISOString() };
129
+ await upsertSessionRecord(ended);
130
+ await updateStoredAuth({ activeSession: undefined });
131
+ return ended;
132
+ }
133
+ //# sourceMappingURL=mcp-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-session.js","sourceRoot":"","sources":["../src/mcp-session.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -6,9 +6,35 @@ export interface StoredAuth {
6
6
  agentCaller?: string;
7
7
  claimURL?: string;
8
8
  createdAt?: string;
9
+ /** Endpoint slug or id used by `heyditto claude` / `heyditto codex` when --endpoint is omitted. */
10
+ defaultEndpoint?: string;
11
+ /** Explicit MCP session (`heyditto session new`) sent as X-Ditto-Session-Id on every request. */
12
+ activeSession?: {
13
+ id: string;
14
+ name?: string;
15
+ createdAt?: string;
16
+ };
9
17
  }
10
18
  export declare function readStoredAuth(): Promise<StoredAuth | undefined>;
11
19
  export declare function readStoredKey(): Promise<string | undefined>;
12
20
  export declare function writeStoredAuth(auth: StoredAuth): Promise<void>;
21
+ /** Merge fields into the stored auth file without dropping the saved key or agent fields. */
22
+ export declare function updateStoredAuth(partial: Partial<StoredAuth>): Promise<StoredAuth>;
13
23
  export declare function writeStoredKey(key: string): Promise<void>;
24
+ /**
25
+ * Saves a human login. Merges into the existing file so the default endpoint
26
+ * and the explicit MCP session survive a re-login, while any agent-account
27
+ * fields from a previous `heyditto init` are cleared (the key now belongs to a
28
+ * person, not a claimable agent).
29
+ */
30
+ export declare function saveLogin(key: string, extra?: {
31
+ defaultEndpoint?: string;
32
+ }): Promise<StoredAuth>;
33
+ /**
34
+ * The backend only stores a hash of an agent's claim token, so activation links
35
+ * it returns for agent-created endpoints carry no `t=`. The CLI holds the
36
+ * plaintext claim URL from `heyditto init`; copy its token onto the backend URL
37
+ * so the agent hands its user one working link.
38
+ */
39
+ export declare function mergeActivationURL(activationURL: string, storedClaimURL: string | undefined): string;
14
40
  export declare function clearStoredKey(): Promise<boolean>;
package/dist/store.js CHANGED
@@ -27,12 +27,73 @@ export async function writeStoredAuth(auth) {
27
27
  await writeFile(path, `${JSON.stringify({ ...auth, apiKey: cleaned }, null, 2)}\n`, { mode: 0o600 });
28
28
  await chmod(path, 0o600);
29
29
  }
30
+ /** Merge fields into the stored auth file without dropping the saved key or agent fields. */
31
+ export async function updateStoredAuth(partial) {
32
+ const current = (await readStoredAuth()) ?? {};
33
+ const merged = { ...current, ...partial };
34
+ for (const [k, v] of Object.entries(partial)) {
35
+ if (v === undefined)
36
+ delete merged[k];
37
+ }
38
+ const path = authFilePath();
39
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
40
+ await writeFile(path, `${JSON.stringify(merged, null, 2)}\n`, { mode: 0o600 });
41
+ await chmod(path, 0o600);
42
+ return merged;
43
+ }
30
44
  export async function writeStoredKey(key) {
31
45
  const cleaned = key.trim();
32
46
  if (!cleaned)
33
47
  throw new Error("refusing to store empty api key");
34
48
  await writeStoredAuth({ apiKey: cleaned });
35
49
  }
50
+ /**
51
+ * Saves a human login. Merges into the existing file so the default endpoint
52
+ * and the explicit MCP session survive a re-login, while any agent-account
53
+ * fields from a previous `heyditto init` are cleared (the key now belongs to a
54
+ * person, not a claimable agent).
55
+ */
56
+ export async function saveLogin(key, extra = {}) {
57
+ const cleaned = key.trim();
58
+ if (!cleaned)
59
+ throw new Error("refusing to store empty api key");
60
+ const partial = {
61
+ apiKey: cleaned,
62
+ agentMode: undefined,
63
+ agentAccountID: undefined,
64
+ agentUserID: undefined,
65
+ agentCaller: undefined,
66
+ claimURL: undefined,
67
+ createdAt: new Date().toISOString(),
68
+ };
69
+ if (extra.defaultEndpoint)
70
+ partial.defaultEndpoint = extra.defaultEndpoint;
71
+ return updateStoredAuth(partial);
72
+ }
73
+ /**
74
+ * The backend only stores a hash of an agent's claim token, so activation links
75
+ * it returns for agent-created endpoints carry no `t=`. The CLI holds the
76
+ * plaintext claim URL from `heyditto init`; copy its token onto the backend URL
77
+ * so the agent hands its user one working link.
78
+ */
79
+ export function mergeActivationURL(activationURL, storedClaimURL) {
80
+ if (!storedClaimURL)
81
+ return activationURL;
82
+ let target;
83
+ let claim;
84
+ try {
85
+ target = new URL(activationURL);
86
+ claim = new URL(storedClaimURL);
87
+ }
88
+ catch {
89
+ return activationURL;
90
+ }
91
+ const token = claim.searchParams.get("t");
92
+ if (!token || target.searchParams.has("t"))
93
+ return activationURL;
94
+ target.searchParams.set("t", token);
95
+ return target.toString();
96
+ }
36
97
  export async function clearStoredKey() {
37
98
  try {
38
99
  await rm(authFilePath());
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAgB;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACnE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyditto/cli",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "description": "Ditto Memory CLI — save, search, fetch, and traverse the Ditto memory graph from the shell.",
5
5
  "type": "module",
6
6
  "bin": {