@heyditto/cli 1.1.3 → 1.3.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
@@ -4,11 +4,12 @@
4
4
 
5
5
  ```bash
6
6
  npm install -g @heyditto/cli
7
- export DITTO_API_KEY=ditto_mcp_… # https://app.heyditto.ai/mcp/newkey
7
+ heyditto init --agent --json
8
8
 
9
- ditto save "I prefer TypeScript over JS for new projects"
10
- ditto search "language preferences"
11
- ditto subjects "memory architecture" --top-k 5
9
+ heyditto save "I prefer TypeScript over JS for new projects"
10
+ heyditto search "language preferences"
11
+ heyditto fetch <id> --memory-format outline
12
+ heyditto subjects "memory architecture" --top-k 5
12
13
  ```
13
14
 
14
15
  ## Install
@@ -19,7 +20,7 @@ npm install -g @heyditto/cli
19
20
  npx -y @heyditto/cli search "what did I say about X"
20
21
  ```
21
22
 
22
- The package installs two equivalent binaries: `ditto` and `heyditto`. They run the same CLI — use whichever you prefer.
23
+ The package installs two equivalent binaries: `ditto` and `heyditto`. They run the same CLI — use whichever you prefer. We recommend **`heyditto`** on macOS because Apple ships `/usr/bin/ditto` (a file-copy utility) that can shadow the npm CLI.
23
24
 
24
25
  ### macOS: name collision with Apple's `/usr/bin/ditto`
25
26
 
@@ -41,7 +42,20 @@ You can also reorder your `PATH` so the npm global bin comes before `/usr/bin`,
41
42
 
42
43
  ## Auth
43
44
 
44
- Set `DITTO_API_KEY` in your environment. Get a key at **https://app.heyditto.ai/mcp/newkey**.
45
+ Agents can self-provision without a browser, email, or OTP:
46
+
47
+ ```bash
48
+ heyditto init --agent --json
49
+ ```
50
+
51
+ The command creates a free claimable agent account, stores the key in
52
+ your CLI config directory (defaults to `~/.config/heyditto/cli/config.json`;
53
+ override with `DITTO_CONFIG_DIR`), and prints the agent key plus a claim URL.
54
+ Humans claim the account later from `claimURL`; agents should share that link,
55
+ not the `ditto_mcp_...` API key. The claim token is carried in the query string
56
+ (`?t=...`).
57
+
58
+ For a human-owned key, get one at **https://app.heyditto.ai/mcp/newkey**.
45
59
 
46
60
  ```bash
47
61
  export DITTO_API_KEY=ditto_mcp_…
@@ -51,15 +65,22 @@ export DITTO_API_KEY=ditto_mcp_…
51
65
  ## Commands
52
66
 
53
67
  ```
54
- ditto save <content> [--source <s>] [--source-context <c>]
55
- ditto search <query>...
56
- ditto fetch <pair-id>...
57
- ditto subjects <query> [--top-k <n>]
58
- ditto memories <subject-id>...
59
- ditto network <pair-id> [--limit <n>]
60
- ditto status
61
- ditto config
62
- ditto help
68
+ heyditto save <content> [--source <s>] [--source-context <c>]
69
+ heyditto search <query>... [--include-public] [--filter-username <u>]
70
+ heyditto fetch <id>... [--memory-format full|outline|blocks]
71
+ heyditto list [--username <u>] [--limit <n>] [--offset <n>] [--source <s>]
72
+ heyditto update <id> [--content <text>|--content-file <path>] [--title <t>]
73
+ [--source-context <c>] [--edits-json <json>|--edits-file <path>]
74
+ [--base-revision <n>]
75
+ heyditto publish <id> [--title <t>] [--privacy-mode <mode>]
76
+ heyditto unpublish (--memory-id <id>|--share-id <id>|<id>)
77
+ heyditto subjects <query> [--top-k <n>]
78
+ heyditto memories <subject-id>... [--query <q>]
79
+ heyditto network <pair-id> [--limit <n>]
80
+ heyditto init --agent [--agent-caller <name>] [--json]
81
+ heyditto status
82
+ heyditto config
83
+ heyditto help
63
84
  ```
64
85
 
65
86
  ### `save`
@@ -67,25 +88,66 @@ ditto help
67
88
  Persist a memory pair from an external source.
68
89
 
69
90
  ```bash
70
- ditto save "Project X uses Bun + SolidJS, deployed to Cloud Run"
71
- ditto save "$(cat note.md)" --source document --source-context note.md
91
+ heyditto save "Project X uses Bun + SolidJS, deployed to Cloud Run"
92
+ heyditto save "$(cat note.md)" --source document --source-context note.md
72
93
  ```
73
94
 
74
95
  ### `search`
75
96
 
76
97
  Semantic search across memories. Multiple positional args become an array of queries.
98
+ Use `--include-public` to also search public DittoHub memories, optionally scoped
99
+ with `--filter-username <u>`.
77
100
 
78
101
  ```bash
79
- ditto search "typescript preferences"
80
- ditto search "typescript" "language choices"
102
+ heyditto search "typescript preferences"
103
+ heyditto search "typescript" "language choices"
104
+ heyditto search "launch notes" --include-public --filter-username peyton
81
105
  ```
82
106
 
83
107
  ### `fetch`
84
108
 
85
- Fetch the full conversation text for memory pair ids (output of `search`).
109
+ Fetch memory content for private pair ids or public share ids. The default
110
+ `--memory-format full` returns the full body. Use `outline` to get stable block
111
+ ids before a structured `update`, or `blocks` when you need each block body.
86
112
 
87
113
  ```bash
88
- ditto fetch 3a1084ae-235a-433d-9493-2335a0dfeb57
114
+ heyditto fetch 3a1084ae-235a-433d-9493-2335a0dfeb57
115
+ heyditto fetch 3a1084ae-235a-433d-9493-2335a0dfeb57 --memory-format outline --output json
116
+ ```
117
+
118
+ ### `list`
119
+
120
+ List saved memories, or public DittoHub publishes for a username.
121
+
122
+ ```bash
123
+ heyditto list --limit 10
124
+ heyditto list --username peyton --limit 10 --output json
125
+ ```
126
+
127
+ ### `update`
128
+
129
+ Edit a saved memory in place. Replace the full body with `--content` or
130
+ `--content-file`, or use block edits after fetching `--memory-format outline`.
131
+ Block edits require the current revision returned by `save` or a previous
132
+ `update`.
133
+
134
+ ```bash
135
+ heyditto update <memory-id> --content-file revised.md --output json
136
+ heyditto fetch <memory-id> --memory-format outline --output json
137
+ heyditto update <memory-id> \
138
+ --edits-json '[{"op":"replace_text","blockId":"2","find":"old","replace":"new","expectedCount":1}]' \
139
+ --base-revision 3 \
140
+ --output json
141
+ ```
142
+
143
+ ### `publish` / `unpublish`
144
+
145
+ Publish a saved memory to the user's public DittoHub profile, or disable an
146
+ existing share without deleting the private memory.
147
+
148
+ ```bash
149
+ heyditto publish <memory-id> --title "Launch notes" --privacy-mode scan_and_block --output json
150
+ heyditto unpublish --share-id abc123def4 --output json
89
151
  ```
90
152
 
91
153
  ### `subjects`
@@ -93,8 +155,8 @@ ditto fetch 3a1084ae-235a-433d-9493-2335a0dfeb57
93
155
  Search the subject (topic) graph. Returns subject ids you can pass to `memories` or `network`.
94
156
 
95
157
  ```bash
96
- ditto subjects "memory architecture"
97
- ditto subjects "performance" --top-k 5
158
+ heyditto subjects "memory architecture"
159
+ heyditto subjects "performance" --top-k 5
98
160
  ```
99
161
 
100
162
  ### `memories`
@@ -102,7 +164,8 @@ ditto subjects "performance" --top-k 5
102
164
  Fetch memory previews scoped to specific subjects.
103
165
 
104
166
  ```bash
105
- ditto memories <subject-id>
167
+ heyditto memories <subject-id>
168
+ heyditto memories <subject-id> --query "deployment tradeoffs"
106
169
  ```
107
170
 
108
171
  ### `network`
@@ -110,20 +173,27 @@ ditto memories <subject-id>
110
173
  Traverse a memory's network (related memories via shared subjects).
111
174
 
112
175
  ```bash
113
- ditto network <pair-id> --limit 30
176
+ heyditto network <pair-id> --limit 30
114
177
  ```
115
178
 
116
179
  ### `status`
117
180
 
118
181
  Print whether `DITTO_API_KEY` is set and the configured MCP endpoint resolves.
119
182
 
183
+ ### `init --agent`
184
+
185
+ Create a free claimable agent account and save its key locally. Use `--json` for
186
+ machine-readable output that includes `apiKey`, `userID`, and `claimURL`.
187
+ Share `claimURL` with the human owner; keep `apiKey` local to the agent. The
188
+ claim URL uses a `?t=...` query parameter.
189
+
120
190
  ### `config`
121
191
 
122
192
  Print a Claude Desktop / Cursor / generic-MCP-client config snippet for the Ditto memory server.
123
193
 
124
194
  ## Environment
125
195
 
126
- - `DITTO_API_KEY` (required) — MCP API key. https://app.heyditto.ai/mcp/newkey
196
+ - `DITTO_API_KEY` (optional) — MCP API key override. Agents can instead run `heyditto init --agent --json` for no-human setup.
127
197
  - `DITTO_API_BASE` (optional) — API base URL. Defaults to `https://api.heyditto.ai`. Useful for local dev (`http://localhost:3400`).
128
198
 
129
199
  ## Output
@@ -136,8 +206,8 @@ Every data command and `status` accepts `--output <format>`, where `<format>` is
136
206
  - `raw` — the full MCP response envelope as JSON.
137
207
 
138
208
  ```bash
139
- ditto search "X" --output json | jq '.results[] | {id, similarity, preview: .userPreview}'
140
- ditto status --output json | jq '.tools'
209
+ heyditto search "X" --output json | jq '.results[] | {id, similarity, preview: .userPreview}'
210
+ heyditto status --output json | jq '.tools'
141
211
  ```
142
212
 
143
213
  ## Related
package/dist/cli.js CHANGED
@@ -1,13 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { spawn } from "node:child_process";
3
+ import { readFile } from "node:fs/promises";
3
4
  import { createInterface } from "node:readline/promises";
4
5
  import { parseArgs } from "node:util";
5
6
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
6
7
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
7
- import { apiBaseURL, authFilePath, mcpServerURL, newKeyURL, packageName, packageVersion, resolveApiKey, } from "./config.js";
8
- import { clearStoredKey, writeStoredKey } from "./store.js";
8
+ import { agentSignupURL, apiBaseURL, authFilePath, mcpServerURL, newKeyURL, packageName, packageVersion, resolveApiKey, } from "./config.js";
9
+ import { clearStoredKey, readStoredAuth, writeStoredAuth, writeStoredKey } from "./store.js";
9
10
  const OUTPUT_FORMATS = ["json", "text", "markdown", "raw"];
10
11
  const outputOption = { type: "string" };
12
+ const MEMORY_FORMATS = ["full", "outline", "blocks"];
11
13
  function parseOutputFormat(value) {
12
14
  if (!value)
13
15
  return "text";
@@ -15,6 +17,37 @@ function parseOutputFormat(value) {
15
17
  return value;
16
18
  throw new Error(`--output must be one of: ${OUTPUT_FORMATS.join(", ")}`);
17
19
  }
20
+ function parseMemoryFormat(value) {
21
+ if (!value)
22
+ return "full";
23
+ if (MEMORY_FORMATS.includes(value))
24
+ return value;
25
+ throw new Error(`--memory-format must be one of: ${MEMORY_FORMATS.join(", ")}`);
26
+ }
27
+ function parseIntegerOption(value, name) {
28
+ if (!value)
29
+ return undefined;
30
+ const n = Number.parseInt(value, 10);
31
+ if (!Number.isFinite(n))
32
+ throw new Error(`${name} must be an integer`);
33
+ return n;
34
+ }
35
+ function parseJSONOption(value, name) {
36
+ try {
37
+ return JSON.parse(value);
38
+ }
39
+ catch (err) {
40
+ throw new Error(`${name} must be valid JSON: ${err instanceof Error ? err.message : String(err)}`);
41
+ }
42
+ }
43
+ async function readTextFile(path, name) {
44
+ try {
45
+ return await readFile(path, "utf-8");
46
+ }
47
+ catch (err) {
48
+ throw new Error(`failed to read ${name} at ${path}: ${err instanceof Error ? err.message : String(err)}`);
49
+ }
50
+ }
18
51
  function extractTextBlock(result) {
19
52
  const r = result;
20
53
  if (!Array.isArray(r.content))
@@ -46,12 +79,19 @@ function usage() {
46
79
  return `${packageName} ${packageVersion}
47
80
 
48
81
  Usage:
49
- ditto save <content> [--source <s>] [--source-context <c>]
50
- ditto search <query>...
51
- ditto fetch <pair-id>...
52
- ditto subjects <query> [--top-k <n>]
53
- ditto memories <subject-id>...
54
- ditto network <pair-id> [--limit <n>]
82
+ heyditto save <content> [--source <s>] [--source-context <c>]
83
+ heyditto search <query>... [--include-public] [--filter-username <u>]
84
+ heyditto fetch <id>... [--memory-format full|outline|blocks]
85
+ heyditto list [--username <u>] [--limit <n>] [--offset <n>] [--source <s>]
86
+ heyditto update <id> [--content <text>|--content-file <path>] [--title <t>]
87
+ [--source-context <c>] [--edits-json <json>|--edits-file <path>]
88
+ [--base-revision <n>]
89
+ heyditto publish <id> [--title <t>] [--privacy-mode scan_and_block|scan_and_warn|scan_and_redact]
90
+ heyditto unpublish (--memory-id <id>|--share-id <id>|<id>)
91
+ heyditto subjects <query> [--top-k <n>]
92
+ heyditto memories <subject-id>... [--query <q>]
93
+ heyditto network <pair-id> [--limit <n>]
94
+ heyditto init --agent [--agent-caller <name>] [--json]
55
95
 
56
96
  All data commands (and 'status') accept --output <format>, where <format>
57
97
  is one of: json, text, markdown, raw. Default is 'text' (passthrough of
@@ -59,13 +99,14 @@ the server's text block, which is JSON for data commands). Use --output json
59
99
  to guarantee structured JSON output suitable for piping into 'jq'.
60
100
 
61
101
  Auth:
62
- ditto login [<key>] [--paste] [--stdin] Save an API key to ${authFilePath()}
63
- ditto logout Delete the saved key
64
- ditto status [--output <format>] Show endpoint, key source, live tools
65
- ditto config Print MCP client config snippet
102
+ heyditto init --agent [--json] Create a free, claimable agent account
103
+ heyditto login [<key>] [--paste] [--stdin] Save an API key to ${authFilePath()}
104
+ heyditto logout Delete the saved key
105
+ heyditto status [--output <format>] Show endpoint, key source, live tools
106
+ heyditto config Print MCP client config snippet
66
107
 
67
108
  Other:
68
- ditto help Show this message
109
+ heyditto help Show this message
69
110
 
70
111
  Note: on macOS, Apple ships /usr/bin/ditto (a file-copy utility). If 'ditto'
71
112
  runs the wrong tool, install with 'npm i -g @heyditto/cli' and invoke as
@@ -73,7 +114,8 @@ runs the wrong tool, install with 'npm i -g @heyditto/cli' and invoke as
73
114
 
74
115
  Environment:
75
116
  DITTO_API_KEY Optional override (takes precedence over the saved key).
76
- Get one at ${newKeyURL()}.
117
+ Run 'heyditto init --agent --json' for no-human setup, or get
118
+ a human-owned key at ${newKeyURL()}.
77
119
  DITTO_API_BASE Optional. Defaults to https://api.heyditto.ai.
78
120
  DITTO_CONFIG_DIR Optional. Defaults to $XDG_CONFIG_HOME/heyditto/cli or
79
121
  ~/.config/heyditto/cli.
@@ -83,9 +125,9 @@ async function getClient() {
83
125
  const { key, source } = await resolveApiKey();
84
126
  if (!key) {
85
127
  process.stderr.write(`error: no Ditto API key configured.\n\n` +
86
- ` 1. Get a key at ${newKeyURL()}\n` +
87
- ` 2. Save it with: ditto login <key>\n` +
88
- ` (or export DITTO_API_KEY=ditto_mcp_…)\n`);
128
+ ` Run: heyditto init --agent --json\n` +
129
+ ` Or save an existing key with: heyditto login <key>\n` +
130
+ ` Human-owned keys are available at ${newKeyURL()}.\n`);
89
131
  process.exit(1);
90
132
  }
91
133
  const client = new Client({ name: packageName, version: packageVersion });
@@ -181,7 +223,110 @@ async function cmdLogin(rest) {
181
223
  if (process.env.DITTO_API_KEY) {
182
224
  process.stderr.write(`note: DITTO_API_KEY is set in your environment and will override the saved key for this session.\n`);
183
225
  }
184
- process.stdout.write(`Run 'ditto status' to verify.\n`);
226
+ process.stdout.write(`Run 'heyditto status' to verify.\n`);
227
+ }
228
+ function defaultAgentCaller() {
229
+ return process.env.DITTO_AGENT_CALLER?.trim() || process.env.CURSOR_AGENT?.trim() || "agent";
230
+ }
231
+ async function cmdInit(rest) {
232
+ const { values } = parseArgs({
233
+ args: rest,
234
+ options: {
235
+ agent: { type: "boolean", default: false },
236
+ "agent-caller": { type: "string" },
237
+ json: { type: "boolean", default: false },
238
+ output: outputOption,
239
+ },
240
+ allowPositionals: true,
241
+ });
242
+ const output = values.json ? "json" : parseOutputFormat(values.output);
243
+ if (!values.agent) {
244
+ throw new Error("init currently supports only --agent");
245
+ }
246
+ const stored = await readStoredAuth();
247
+ if (stored?.apiKey && stored.agentMode) {
248
+ const existing = {
249
+ created: false,
250
+ accountID: stored.agentAccountID,
251
+ userID: stored.agentUserID,
252
+ apiKey: stored.apiKey,
253
+ agentCaller: stored.agentCaller,
254
+ claimURL: stored.claimURL,
255
+ status: "configured",
256
+ configPath: authFilePath(),
257
+ };
258
+ if (output === "json" || output === "raw") {
259
+ process.stdout.write(`${JSON.stringify(existing, null, 2)}\n`);
260
+ }
261
+ else {
262
+ process.stdout.write(`Agent account already configured at ${authFilePath()}\n`);
263
+ if (stored.claimURL)
264
+ process.stdout.write(`Claim later: ${stored.claimURL}\n`);
265
+ }
266
+ return;
267
+ }
268
+ if (stored?.apiKey) {
269
+ throw new Error(`a Ditto API key is already saved at ${authFilePath()}; run 'heyditto logout' before creating an agent account`);
270
+ }
271
+ const agentCaller = values["agent-caller"]?.trim() || defaultAgentCaller();
272
+ const response = await fetch(agentSignupURL(), {
273
+ method: "POST",
274
+ headers: {
275
+ "Content-Type": "application/json",
276
+ "User-Agent": `${packageName}/${packageVersion}`,
277
+ },
278
+ body: JSON.stringify({
279
+ agentCaller,
280
+ metadata: {
281
+ package: packageName,
282
+ version: packageVersion,
283
+ platform: process.platform,
284
+ arch: process.arch,
285
+ },
286
+ }),
287
+ });
288
+ if (!response.ok) {
289
+ const body = await response.text().catch(() => "");
290
+ throw new Error(`agent signup failed: HTTP ${response.status}${body ? ` - ${body}` : ""}`);
291
+ }
292
+ const signupRaw = (await response.json());
293
+ if (typeof signupRaw.accountID !== "string" ||
294
+ typeof signupRaw.userID !== "string" ||
295
+ typeof signupRaw.apiKeyID !== "number" ||
296
+ typeof signupRaw.apiKey !== "string" ||
297
+ typeof signupRaw.claimURL !== "string" ||
298
+ signupRaw.status !== "unclaimed" ||
299
+ typeof signupRaw.createdAt !== "string") {
300
+ throw new Error("agent signup failed: invalid response payload");
301
+ }
302
+ const signup = signupRaw;
303
+ await writeStoredAuth({
304
+ apiKey: signup.apiKey,
305
+ agentMode: true,
306
+ agentAccountID: signup.accountID,
307
+ agentUserID: signup.userID,
308
+ agentCaller: signup.agentCaller || agentCaller,
309
+ claimURL: signup.claimURL,
310
+ createdAt: signup.createdAt,
311
+ });
312
+ const result = {
313
+ created: true,
314
+ accountID: signup.accountID,
315
+ userID: signup.userID,
316
+ apiKeyID: signup.apiKeyID,
317
+ apiKey: signup.apiKey,
318
+ agentCaller: signup.agentCaller || agentCaller,
319
+ claimURL: signup.claimURL,
320
+ status: signup.status,
321
+ configPath: authFilePath(),
322
+ };
323
+ if (output === "json" || output === "raw") {
324
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
325
+ return;
326
+ }
327
+ process.stdout.write(`Created agent account ${signup.userID}\n`);
328
+ process.stdout.write(`Saved key to ${authFilePath()}\n`);
329
+ process.stdout.write(`Claim later: ${signup.claimURL}\n`);
185
330
  }
186
331
  async function cmdLogout(rest) {
187
332
  const { values } = parseArgs({
@@ -222,22 +367,155 @@ async function cmdSave(rest) {
222
367
  async function cmdSearch(rest) {
223
368
  const { values, positionals } = parseArgs({
224
369
  args: rest,
225
- options: { output: outputOption },
370
+ options: {
371
+ "include-public": { type: "boolean", default: false },
372
+ "filter-username": { type: "string" },
373
+ output: outputOption,
374
+ },
226
375
  allowPositionals: true,
227
376
  });
228
377
  const format = parseOutputFormat(values.output);
229
378
  requirePositionals(positionals, 1, "search");
230
- await callAndPrint("search_memories", { queries: positionals }, format);
379
+ const args = { queries: positionals };
380
+ if (values["include-public"])
381
+ args.includePublic = true;
382
+ if (values["filter-username"])
383
+ args.filterUsername = values["filter-username"];
384
+ await callAndPrint("search_memories", args, format);
231
385
  }
232
386
  async function cmdFetch(rest) {
233
387
  const { values, positionals } = parseArgs({
234
388
  args: rest,
235
- options: { output: outputOption },
389
+ options: { "memory-format": { type: "string" }, output: outputOption },
236
390
  allowPositionals: true,
237
391
  });
238
392
  const format = parseOutputFormat(values.output);
393
+ const memoryFormat = parseMemoryFormat(values["memory-format"]);
239
394
  requirePositionals(positionals, 1, "fetch");
240
- await callAndPrint("fetch_memories", { pairIds: positionals }, format);
395
+ await callAndPrint("fetch_memories", { ids: positionals, format: memoryFormat }, format);
396
+ }
397
+ async function cmdList(rest) {
398
+ const { values } = parseArgs({
399
+ args: rest,
400
+ options: {
401
+ username: { type: "string" },
402
+ limit: { type: "string" },
403
+ offset: { type: "string" },
404
+ source: { type: "string" },
405
+ output: outputOption,
406
+ },
407
+ allowPositionals: true,
408
+ });
409
+ const format = parseOutputFormat(values.output);
410
+ const args = {};
411
+ if (values.username)
412
+ args.username = values.username;
413
+ const limit = parseIntegerOption(values.limit, "--limit");
414
+ if (limit !== undefined)
415
+ args.limit = limit;
416
+ const offset = parseIntegerOption(values.offset, "--offset");
417
+ if (offset !== undefined)
418
+ args.offset = offset;
419
+ if (values.source)
420
+ args.source = values.source;
421
+ await callAndPrint("list_memories", args, format);
422
+ }
423
+ async function cmdUpdate(rest) {
424
+ const { values, positionals } = parseArgs({
425
+ args: rest,
426
+ options: {
427
+ content: { type: "string" },
428
+ "content-file": { type: "string" },
429
+ title: { type: "string" },
430
+ "source-context": { type: "string" },
431
+ "edits-json": { type: "string" },
432
+ "edits-file": { type: "string" },
433
+ "base-revision": { type: "string" },
434
+ output: outputOption,
435
+ },
436
+ allowPositionals: true,
437
+ });
438
+ const format = parseOutputFormat(values.output);
439
+ requirePositionals(positionals, 1, "update");
440
+ if (values.content && values["content-file"]) {
441
+ throw new Error("update: use either --content or --content-file, not both");
442
+ }
443
+ if (values["edits-json"] && values["edits-file"]) {
444
+ throw new Error("update: use either --edits-json or --edits-file, not both");
445
+ }
446
+ if ((values.content || values["content-file"]) && (values["edits-json"] || values["edits-file"])) {
447
+ throw new Error("update: content replacement and block edits are mutually exclusive");
448
+ }
449
+ const args = { memoryId: positionals[0] };
450
+ if (values.content)
451
+ args.content = values.content;
452
+ if (values["content-file"])
453
+ args.content = await readTextFile(values["content-file"], "--content-file");
454
+ if (values.title !== undefined)
455
+ args.title = values.title;
456
+ if (values["source-context"] !== undefined)
457
+ args.sourceContext = values["source-context"];
458
+ if (values["edits-json"] || values["edits-file"]) {
459
+ const raw = values["edits-json"] ?? (await readTextFile(values["edits-file"], "--edits-file"));
460
+ args.edits = parseJSONOption(raw, values["edits-json"] ? "--edits-json" : "--edits-file");
461
+ const baseRevision = parseIntegerOption(values["base-revision"], "--base-revision");
462
+ if (baseRevision === undefined) {
463
+ throw new Error("update: --base-revision is required with block edits");
464
+ }
465
+ args.baseRevision = baseRevision;
466
+ }
467
+ else {
468
+ const baseRevision = parseIntegerOption(values["base-revision"], "--base-revision");
469
+ if (baseRevision !== undefined)
470
+ args.baseRevision = baseRevision;
471
+ }
472
+ await callAndPrint("update_memory", args, format);
473
+ }
474
+ async function cmdPublish(rest) {
475
+ const { values, positionals } = parseArgs({
476
+ args: rest,
477
+ options: {
478
+ title: { type: "string" },
479
+ "privacy-mode": { type: "string" },
480
+ output: outputOption,
481
+ },
482
+ allowPositionals: true,
483
+ });
484
+ const format = parseOutputFormat(values.output);
485
+ requirePositionals(positionals, 1, "publish");
486
+ const args = { memoryId: positionals[0] };
487
+ if (values.title !== undefined)
488
+ args.title = values.title;
489
+ if (values["privacy-mode"] !== undefined)
490
+ args.privacyMode = values["privacy-mode"];
491
+ await callAndPrint("publish_memory", args, format);
492
+ }
493
+ async function cmdUnpublish(rest) {
494
+ const { values, positionals } = parseArgs({
495
+ args: rest,
496
+ options: {
497
+ "memory-id": { type: "string" },
498
+ "share-id": { type: "string" },
499
+ output: outputOption,
500
+ },
501
+ allowPositionals: true,
502
+ });
503
+ const format = parseOutputFormat(values.output);
504
+ const provided = [values["memory-id"], values["share-id"], positionals[0]].filter(Boolean);
505
+ if (provided.length !== 1) {
506
+ throw new Error("unpublish: provide exactly one of --memory-id, --share-id, or positional id");
507
+ }
508
+ const args = {};
509
+ if (values["memory-id"]) {
510
+ args.memoryId = values["memory-id"];
511
+ }
512
+ else if (values["share-id"]) {
513
+ args.shareId = values["share-id"];
514
+ }
515
+ else {
516
+ args.memoryId = positionals[0];
517
+ }
518
+ await callAndPrint("unpublish_memory", args, format);
241
519
  }
242
520
  async function cmdSubjects(rest) {
243
521
  const { values, positionals } = parseArgs({
@@ -248,23 +526,23 @@ async function cmdSubjects(rest) {
248
526
  const format = parseOutputFormat(values.output);
249
527
  requirePositionals(positionals, 1, "subjects");
250
528
  const args = { query: positionals.join(" ") };
251
- if (values["top-k"]) {
252
- const n = Number.parseInt(values["top-k"], 10);
253
- if (!Number.isFinite(n))
254
- throw new Error("--top-k must be an integer");
255
- args.topK = n;
256
- }
529
+ const topK = parseIntegerOption(values["top-k"], "--top-k");
530
+ if (topK !== undefined)
531
+ args.topK = topK;
257
532
  await callAndPrint("search_subjects", args, format);
258
533
  }
259
534
  async function cmdMemories(rest) {
260
535
  const { values, positionals } = parseArgs({
261
536
  args: rest,
262
- options: { output: outputOption },
537
+ options: { query: { type: "string" }, output: outputOption },
263
538
  allowPositionals: true,
264
539
  });
265
540
  const format = parseOutputFormat(values.output);
266
541
  requirePositionals(positionals, 1, "memories");
267
- await callAndPrint("search_memories_in_subjects", { subjectIds: positionals }, format);
542
+ const args = { subjectIds: positionals };
543
+ if (values.query)
544
+ args.query = values.query;
545
+ await callAndPrint("search_memories_in_subjects", args, format);
268
546
  }
269
547
  async function cmdNetwork(rest) {
270
548
  const { values, positionals } = parseArgs({
@@ -275,12 +553,9 @@ async function cmdNetwork(rest) {
275
553
  const format = parseOutputFormat(values.output);
276
554
  requirePositionals(positionals, 1, "network");
277
555
  const args = { pairId: positionals[0] };
278
- if (values.limit) {
279
- const n = Number.parseInt(values.limit, 10);
280
- if (!Number.isFinite(n))
281
- throw new Error("--limit must be an integer");
282
- args.limit = n;
283
- }
556
+ const limit = parseIntegerOption(values.limit, "--limit");
557
+ if (limit !== undefined)
558
+ args.limit = limit;
284
559
  await callAndPrint("get_memory_network", args, format);
285
560
  }
286
561
  async function cmdStatus(rest) {
@@ -290,13 +565,22 @@ async function cmdStatus(rest) {
290
565
  allowPositionals: true,
291
566
  });
292
567
  const format = parseOutputFormat(values.output);
293
- const { key, source } = await resolveApiKey();
568
+ const [{ key, source }, stored] = await Promise.all([resolveApiKey(), readStoredAuth()]);
294
569
  const report = {
295
570
  package: packageName,
296
571
  version: packageVersion,
297
572
  endpoint: mcpServerURL(),
298
573
  apiKey: { present: !!key, source },
299
574
  };
575
+ if (source === "config" && stored?.agentMode) {
576
+ report.agent = {
577
+ enabled: true,
578
+ accountID: stored.agentAccountID,
579
+ userID: stored.agentUserID,
580
+ caller: stored.agentCaller,
581
+ claimURL: stored.claimURL,
582
+ };
583
+ }
300
584
  if (key) {
301
585
  try {
302
586
  const client = await getClient();
@@ -327,7 +611,7 @@ async function cmdStatus(rest) {
327
611
  `api key: ${report.apiKey.present ? "set" : "MISSING"} (source: ${report.apiKey.source})`,
328
612
  ];
329
613
  if (!report.apiKey.present) {
330
- lines.push(``, `Get a key at ${newKeyURL()} and run 'ditto login <key>'.`);
614
+ lines.push(``, `Run 'heyditto init --agent --json' for no-human setup, or get a key at ${newKeyURL()} and run 'heyditto login <key>'.`);
331
615
  }
332
616
  else if (report.tools) {
333
617
  lines.push(`tools: ${report.tools.join(", ")}`);
@@ -335,6 +619,9 @@ async function cmdStatus(rest) {
335
619
  else if (report.connect && !report.connect.ok) {
336
620
  lines.push(`connect: FAILED — ${report.connect.error}`);
337
621
  }
622
+ if (report.agent?.claimURL) {
623
+ lines.push(`agent: unclaimed (${report.agent.caller || "agent"})`, `claim: ${report.agent.claimURL}`);
624
+ }
338
625
  process.stdout.write(`${lines.join("\n")}\n`);
339
626
  }
340
627
  function cmdConfig(rest) {
@@ -360,6 +647,9 @@ async function main() {
360
647
  const command = argv[0];
361
648
  const rest = argv.slice(1);
362
649
  switch (command) {
650
+ case "init":
651
+ await cmdInit(rest);
652
+ return;
363
653
  case "save":
364
654
  await cmdSave(rest);
365
655
  return;
@@ -369,6 +659,18 @@ async function main() {
369
659
  case "fetch":
370
660
  await cmdFetch(rest);
371
661
  return;
662
+ case "list":
663
+ await cmdList(rest);
664
+ return;
665
+ case "update":
666
+ await cmdUpdate(rest);
667
+ return;
668
+ case "publish":
669
+ await cmdPublish(rest);
670
+ return;
671
+ case "unpublish":
672
+ await cmdUnpublish(rest);
673
+ return;
372
674
  case "subjects":
373
675
  await cmdSubjects(rest);
374
676
  return;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare function mcpServerURL(): string;
5
5
  export declare function configDir(): string;
6
6
  export declare function authFilePath(): string;
7
7
  export declare function newKeyURL(): string;
8
+ export declare function agentSignupURL(): string;
8
9
  export type ApiKeySource = "env" | "config" | "none";
9
10
  export interface ResolvedKey {
10
11
  key?: string;
package/dist/config.js CHANGED
@@ -24,6 +24,9 @@ export function authFilePath() {
24
24
  export function newKeyURL() {
25
25
  return "https://app.heyditto.ai/mcp/newkey";
26
26
  }
27
+ export function agentSignupURL() {
28
+ return `${apiBaseURL()}/api/v5/agents/signup`;
29
+ }
27
30
  export async function resolveApiKey() {
28
31
  const envKey = process.env.DITTO_API_KEY?.trim();
29
32
  if (envKey)
@@ -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;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":"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"}
package/dist/store.d.ts CHANGED
@@ -1,3 +1,14 @@
1
+ export interface StoredAuth {
2
+ apiKey?: string;
3
+ agentMode?: boolean;
4
+ agentAccountID?: string;
5
+ agentUserID?: string;
6
+ agentCaller?: string;
7
+ claimURL?: string;
8
+ createdAt?: string;
9
+ }
10
+ export declare function readStoredAuth(): Promise<StoredAuth | undefined>;
1
11
  export declare function readStoredKey(): Promise<string | undefined>;
12
+ export declare function writeStoredAuth(auth: StoredAuth): Promise<void>;
2
13
  export declare function writeStoredKey(key: string): Promise<void>;
3
14
  export declare function clearStoredKey(): Promise<boolean>;
package/dist/store.js CHANGED
@@ -1,12 +1,11 @@
1
1
  import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
2
2
  import { dirname } from "node:path";
3
3
  import { authFilePath } from "./config.js";
4
- export async function readStoredKey() {
4
+ export async function readStoredAuth() {
5
5
  try {
6
6
  const raw = await readFile(authFilePath(), "utf-8");
7
7
  const parsed = JSON.parse(raw);
8
- const key = parsed.apiKey?.trim();
9
- return key && key.length > 0 ? key : undefined;
8
+ return parsed;
10
9
  }
11
10
  catch (err) {
12
11
  if (err.code === "ENOENT")
@@ -14,16 +13,26 @@ export async function readStoredKey() {
14
13
  throw err;
15
14
  }
16
15
  }
17
- export async function writeStoredKey(key) {
18
- const cleaned = key.trim();
16
+ export async function readStoredKey() {
17
+ const parsed = await readStoredAuth();
18
+ const key = parsed?.apiKey?.trim();
19
+ return key && key.length > 0 ? key : undefined;
20
+ }
21
+ export async function writeStoredAuth(auth) {
22
+ const cleaned = auth.apiKey?.trim();
19
23
  if (!cleaned)
20
24
  throw new Error("refusing to store empty api key");
21
25
  const path = authFilePath();
22
26
  await mkdir(dirname(path), { recursive: true, mode: 0o700 });
23
- await writeFile(path, `${JSON.stringify({ apiKey: cleaned }, null, 2)}\n`, { mode: 0o600 });
24
- // chmod again so existing files inherit 0o600 even if writeFile reused mode.
27
+ await writeFile(path, `${JSON.stringify({ ...auth, apiKey: cleaned }, null, 2)}\n`, { mode: 0o600 });
25
28
  await chmod(path, 0o600);
26
29
  }
30
+ export async function writeStoredKey(key) {
31
+ const cleaned = key.trim();
32
+ if (!cleaned)
33
+ throw new Error("refusing to store empty api key");
34
+ await writeStoredAuth({ apiKey: cleaned });
35
+ }
27
36
  export async function clearStoredKey() {
28
37
  try {
29
38
  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;AAM3C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,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,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,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,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,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,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,6EAA6E;IAC7E,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyditto/cli",
3
- "version": "1.1.3",
3
+ "version": "1.3.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": {