@vm0/cli 9.234.0 → 9.235.1

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 (90) hide show
  1. package/{agent-TL6MTFM7.js → agent-MCLYVNS5.js} +5 -5
  2. package/{banking-6QADOXHV.js → banking-45TM73IF.js} +3 -3
  3. package/{chat-ZKVV55AC.js → chat-LVWSUW6F.js} +4 -4
  4. package/{chunk-XYITXRVX.js → chunk-4KZ7UG4F.js} +2 -2
  5. package/{chunk-SGCCXZ3T.js → chunk-5NTRYPAA.js} +4 -4
  6. package/{chunk-FUZ73GKT.js → chunk-CKYERE4B.js} +457 -4
  7. package/chunk-CKYERE4B.js.map +1 -0
  8. package/{chunk-6AN3CHXL.js → chunk-D2UXUA2F.js} +2 -2
  9. package/{chunk-IYUKQBVQ.js → chunk-DHDATY33.js} +3 -3
  10. package/{chunk-4TMTHWHL.js → chunk-FCEX4CBA.js} +2 -2
  11. package/{chunk-RL5SDF24.js → chunk-GQVFGBLA.js} +2 -2
  12. package/{chunk-U2NMSY2J.js → chunk-GSHZUORA.js} +2 -2
  13. package/{chunk-SJOPQIHJ.js → chunk-MV5RG747.js} +2 -2
  14. package/{chunk-WC74FEVL.js → chunk-OLPSMKCP.js} +3 -3
  15. package/{chunk-WJ6BAKAY.js → chunk-V3DWQTJZ.js} +2 -2
  16. package/{computer-use-U64LNRZP.js → computer-use-QWGKCJ3T.js} +3 -3
  17. package/{connector-SKHC4IRW.js → connector-RORMXAS6.js} +4 -4
  18. package/{credit-7NOYUQ7G.js → credit-J33ZLWTE.js} +4 -4
  19. package/{developer-support-I72T2GOZ.js → developer-support-LSKJWYF2.js} +3 -3
  20. package/{doctor-SHY37GQF.js → doctor-WWMSGHOL.js} +7 -7
  21. package/{generate-4U6JPSMI.js → generate-LS3A4HFY.js} +4 -4
  22. package/{github-ABNSITJ5.js → github-KYQOBXHC.js} +3 -3
  23. package/{goal-LYXD4FJC.js → goal-ONXE27VV.js} +3 -3
  24. package/{host-JW4F373D.js → host-SWP42ESF.js} +3 -3
  25. package/index.js +14 -14
  26. package/{logs-2OPKUMKV.js → logs-YULZPEWR.js} +7 -7
  27. package/{maps-7DZBLVSW.js → maps-2FUSODXL.js} +3 -3
  28. package/memory-QR76AHGB.js +640 -0
  29. package/memory-QR76AHGB.js.map +1 -0
  30. package/{model-I3RPZKKY.js → model-QFNYJFNQ.js} +4 -4
  31. package/{model-provider-VX3O5XCG.js → model-provider-MEGZNU2V.js} +4 -4
  32. package/{org-C3TOMTSN.js → org-F7H45AZQ.js} +3 -3
  33. package/package.json +1 -1
  34. package/{phone-RGI2TQH3.js → phone-MDGVR6AY.js} +3 -3
  35. package/{preference-Q6SRDOW6.js → preference-U7OCLIRY.js} +3 -3
  36. package/{relationship-GC3YCWMN.js → relationship-S5QEEZYR.js} +3 -3
  37. package/{resource-OJNH7UQM.js → resource-MMYAOAH7.js} +3 -3
  38. package/{search-VUNOOXMU.js → search-Q7YM257L.js} +7 -7
  39. package/{secret-75TTJFD2.js → secret-TQOXPAA4.js} +4 -4
  40. package/{slack-VDFQDHRF.js → slack-HUMDTX5W.js} +3 -3
  41. package/{telegram-KI5FBJXY.js → telegram-3LET544R.js} +3 -3
  42. package/{variable-C3M5XQ23.js → variable-6O6MVPL3.js} +3 -3
  43. package/{video-LLHNDJS6.js → video-TFJWBQSQ.js} +2 -2
  44. package/{web-TGBUTLP4.js → web-KYJU4G7S.js} +3 -3
  45. package/{whoami-VV7DNI2H.js → whoami-KBSVVBGI.js} +5 -5
  46. package/{workflow-PNJG3AIM.js → workflow-IRKB4STI.js} +3 -3
  47. package/zero.js +33 -33
  48. package/chunk-FUZ73GKT.js.map +0 -1
  49. package/memory-AJFIEBVQ.js +0 -302
  50. package/memory-AJFIEBVQ.js.map +0 -1
  51. /package/{agent-TL6MTFM7.js.map → agent-MCLYVNS5.js.map} +0 -0
  52. /package/{banking-6QADOXHV.js.map → banking-45TM73IF.js.map} +0 -0
  53. /package/{chat-ZKVV55AC.js.map → chat-LVWSUW6F.js.map} +0 -0
  54. /package/{chunk-XYITXRVX.js.map → chunk-4KZ7UG4F.js.map} +0 -0
  55. /package/{chunk-SGCCXZ3T.js.map → chunk-5NTRYPAA.js.map} +0 -0
  56. /package/{chunk-6AN3CHXL.js.map → chunk-D2UXUA2F.js.map} +0 -0
  57. /package/{chunk-IYUKQBVQ.js.map → chunk-DHDATY33.js.map} +0 -0
  58. /package/{chunk-4TMTHWHL.js.map → chunk-FCEX4CBA.js.map} +0 -0
  59. /package/{chunk-RL5SDF24.js.map → chunk-GQVFGBLA.js.map} +0 -0
  60. /package/{chunk-U2NMSY2J.js.map → chunk-GSHZUORA.js.map} +0 -0
  61. /package/{chunk-SJOPQIHJ.js.map → chunk-MV5RG747.js.map} +0 -0
  62. /package/{chunk-WC74FEVL.js.map → chunk-OLPSMKCP.js.map} +0 -0
  63. /package/{chunk-WJ6BAKAY.js.map → chunk-V3DWQTJZ.js.map} +0 -0
  64. /package/{computer-use-U64LNRZP.js.map → computer-use-QWGKCJ3T.js.map} +0 -0
  65. /package/{connector-SKHC4IRW.js.map → connector-RORMXAS6.js.map} +0 -0
  66. /package/{credit-7NOYUQ7G.js.map → credit-J33ZLWTE.js.map} +0 -0
  67. /package/{developer-support-I72T2GOZ.js.map → developer-support-LSKJWYF2.js.map} +0 -0
  68. /package/{doctor-SHY37GQF.js.map → doctor-WWMSGHOL.js.map} +0 -0
  69. /package/{generate-4U6JPSMI.js.map → generate-LS3A4HFY.js.map} +0 -0
  70. /package/{github-ABNSITJ5.js.map → github-KYQOBXHC.js.map} +0 -0
  71. /package/{goal-LYXD4FJC.js.map → goal-ONXE27VV.js.map} +0 -0
  72. /package/{host-JW4F373D.js.map → host-SWP42ESF.js.map} +0 -0
  73. /package/{logs-2OPKUMKV.js.map → logs-YULZPEWR.js.map} +0 -0
  74. /package/{maps-7DZBLVSW.js.map → maps-2FUSODXL.js.map} +0 -0
  75. /package/{model-I3RPZKKY.js.map → model-QFNYJFNQ.js.map} +0 -0
  76. /package/{model-provider-VX3O5XCG.js.map → model-provider-MEGZNU2V.js.map} +0 -0
  77. /package/{org-C3TOMTSN.js.map → org-F7H45AZQ.js.map} +0 -0
  78. /package/{phone-RGI2TQH3.js.map → phone-MDGVR6AY.js.map} +0 -0
  79. /package/{preference-Q6SRDOW6.js.map → preference-U7OCLIRY.js.map} +0 -0
  80. /package/{relationship-GC3YCWMN.js.map → relationship-S5QEEZYR.js.map} +0 -0
  81. /package/{resource-OJNH7UQM.js.map → resource-MMYAOAH7.js.map} +0 -0
  82. /package/{search-VUNOOXMU.js.map → search-Q7YM257L.js.map} +0 -0
  83. /package/{secret-75TTJFD2.js.map → secret-TQOXPAA4.js.map} +0 -0
  84. /package/{slack-VDFQDHRF.js.map → slack-HUMDTX5W.js.map} +0 -0
  85. /package/{telegram-KI5FBJXY.js.map → telegram-3LET544R.js.map} +0 -0
  86. /package/{variable-C3M5XQ23.js.map → variable-6O6MVPL3.js.map} +0 -0
  87. /package/{video-LLHNDJS6.js.map → video-TFJWBQSQ.js.map} +0 -0
  88. /package/{web-TGBUTLP4.js.map → web-KYJU4G7S.js.map} +0 -0
  89. /package/{whoami-VV7DNI2H.js.map → whoami-KBSVVBGI.js.map} +0 -0
  90. /package/{workflow-PNJG3AIM.js.map → workflow-IRKB4STI.js.map} +0 -0
@@ -1,302 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __createRequire } from "node:module";
3
- const require = __createRequire(import.meta.url);
4
- import "./chunk-LTDQISD7.js";
5
- import {
6
- getZeroMemoryContext,
7
- recallZeroMemory,
8
- searchZeroMemory
9
- } from "./chunk-FUZ73GKT.js";
10
- import {
11
- withErrorHandler
12
- } from "./chunk-SJOPQIHJ.js";
13
- import {
14
- source_default
15
- } from "./chunk-JUTUEPIR.js";
16
- import "./chunk-LRHXR7JT.js";
17
- import {
18
- Command
19
- } from "./chunk-B3W2RUBP.js";
20
- import {
21
- init_esm_shims
22
- } from "./chunk-DIRAZ3YX.js";
23
-
24
- // src/commands/zero/memory/index.ts
25
- init_esm_shims();
26
-
27
- // src/commands/zero/memory/context.ts
28
- init_esm_shims();
29
-
30
- // src/commands/zero/memory/format.ts
31
- init_esm_shims();
32
- function formatDate(value) {
33
- if (!value) {
34
- return "unknown";
35
- }
36
- return new Intl.DateTimeFormat(void 0, {
37
- year: "numeric",
38
- month: "short",
39
- day: "numeric"
40
- }).format(new Date(value));
41
- }
42
- function formatKind(kind) {
43
- switch (kind) {
44
- case "key_fact": {
45
- return "key fact";
46
- }
47
- case "open_loop": {
48
- return "open loop";
49
- }
50
- case "preference": {
51
- return "preference";
52
- }
53
- }
54
- }
55
- function sourceSummary(memory) {
56
- const source = memory.sources[0];
57
- if (!source) {
58
- return "no source";
59
- }
60
- return `${source.provider}:${source.externalId} (${formatDate(source.occurredAt)})`;
61
- }
62
- function printMemoryRecall(memories) {
63
- if (memories.length === 0) {
64
- console.log("No memories found");
65
- console.log(
66
- source_default.dim(
67
- ' Try a broader query, for example: zero memory recall "pricing"'
68
- )
69
- );
70
- return;
71
- }
72
- console.log(source_default.green(`\u2713 Recalled ${memories.length} memories`));
73
- for (const memory of memories) {
74
- const entity = memory.relationship.entity.displayName;
75
- console.log(`- ${memory.text}`);
76
- console.log(
77
- source_default.dim(
78
- ` ${formatKind(memory.kind)} \xB7 ${entity} \xB7 confidence ${memory.confidence} \xB7 ${sourceSummary(memory)}`
79
- )
80
- );
81
- }
82
- }
83
- function printMemoryContext(response) {
84
- if (response.context.length === 0) {
85
- console.log("No memory context found");
86
- console.log(
87
- source_default.dim(' Try: zero memory context --query "customer follow up"')
88
- );
89
- return;
90
- }
91
- console.log(response.context);
92
- }
93
- function compactText(value) {
94
- const normalized = value.replace(/\s+/g, " ").trim();
95
- if (normalized.length <= 180) {
96
- return normalized;
97
- }
98
- return `${normalized.slice(0, 177)}...`;
99
- }
100
- function formatScore(score) {
101
- return score.toFixed(2);
102
- }
103
- function printMemorySearchResult(result) {
104
- if (result.kind === "memory") {
105
- const memory = result.memory;
106
- const entity = memory.relationship.entity.displayName;
107
- console.log(`- ${memory.text}`);
108
- console.log(
109
- source_default.dim(
110
- ` memory \xB7 ${formatKind(memory.kind)} \xB7 ${entity} \xB7 score ${formatScore(result.score)} \xB7 ${sourceSummary(memory)}`
111
- )
112
- );
113
- return;
114
- }
115
- const title = result.title ?? result.externalId;
116
- const citationUrl = result.citation.url ? ` \xB7 ${result.citation.url}` : "";
117
- console.log(`- ${title}`);
118
- console.log(source_default.dim(` document \xB7 ${compactText(result.text)}`));
119
- console.log(
120
- source_default.dim(
121
- ` ${result.provider}:${result.externalId} \xB7 ${result.contextSpace.displayName} \xB7 score ${formatScore(result.score)}${citationUrl}`
122
- )
123
- );
124
- }
125
- function printMemorySearch(response) {
126
- if (response.results.length === 0) {
127
- console.log("No memory or document results found");
128
- console.log(
129
- source_default.dim(' Try: zero memory search "security review" --mode hybrid')
130
- );
131
- return;
132
- }
133
- console.log(
134
- source_default.green(
135
- `\u2713 Found ${response.results.length} ${response.mode} memory results`
136
- )
137
- );
138
- for (const result of response.results) {
139
- printMemorySearchResult(result);
140
- }
141
- }
142
-
143
- // src/commands/zero/memory/context.ts
144
- function parseLimit(value) {
145
- if (value === void 0) {
146
- return void 0;
147
- }
148
- const parsed = Number(value);
149
- return Number.isInteger(parsed) ? parsed : void 0;
150
- }
151
- var contextCommand = new Command().name("context").description("Print prompt-ready structured memory context").option("--query <query>", "Optional query to focus the context").option("--limit <limit>", "Maximum memories to include").option("--json", "Print machine-readable JSON").addHelpText(
152
- "after",
153
- `
154
- Examples:
155
- General context: zero memory context
156
- Focus context: zero memory context --query "security review"
157
- Print JSON: zero memory context --query "Acme" --json
158
-
159
- Notes:
160
- - Uses the authenticated user's active organization
161
- - Requires relationship memory to be enabled for the organization
162
- - This command is read-only`
163
- ).action(
164
- withErrorHandler(async (options) => {
165
- const response = await getZeroMemoryContext({
166
- q: options.query,
167
- limit: parseLimit(options.limit)
168
- });
169
- if (options.json) {
170
- console.log(JSON.stringify(response));
171
- return;
172
- }
173
- printMemoryContext(response);
174
- })
175
- );
176
-
177
- // src/commands/zero/memory/recall.ts
178
- init_esm_shims();
179
- var MEMORY_KINDS = ["key_fact", "preference", "open_loop"];
180
- function parseLimit2(value) {
181
- if (value === void 0) {
182
- return void 0;
183
- }
184
- const parsed = Number(value);
185
- return Number.isInteger(parsed) ? parsed : void 0;
186
- }
187
- function parseKind(value) {
188
- if (value === void 0) {
189
- return void 0;
190
- }
191
- if (MEMORY_KINDS.some((kind) => {
192
- return kind === value;
193
- })) {
194
- return value;
195
- }
196
- console.error(source_default.red("\u2717 Unsupported memory kind"));
197
- console.error(source_default.dim(" Use one of: key_fact, preference, open_loop"));
198
- process.exit(1);
199
- }
200
- var recallCommand = new Command().name("recall").description("Recall structured memory by query").argument("<query>", "Recall query").option("--kind <kind>", "Filter by key_fact, preference, or open_loop").option("--limit <limit>", "Maximum memories to return").option("--json", "Print machine-readable JSON").addHelpText(
201
- "after",
202
- `
203
- Examples:
204
- Recall memory: zero memory recall "security review"
205
- Filter kind: zero memory recall "pricing" --kind open_loop
206
- Print JSON: zero memory recall "Acme" --json
207
-
208
- Notes:
209
- - Uses the authenticated user's active organization
210
- - Requires relationship memory to be enabled for the organization
211
- - This command is read-only`
212
- ).action(
213
- withErrorHandler(async (query, options) => {
214
- const response = await recallZeroMemory({
215
- q: query,
216
- kind: parseKind(options.kind),
217
- limit: parseLimit2(options.limit)
218
- });
219
- if (options.json) {
220
- console.log(JSON.stringify(response));
221
- return;
222
- }
223
- printMemoryRecall(response.memories);
224
- })
225
- );
226
-
227
- // src/commands/zero/memory/search.ts
228
- init_esm_shims();
229
- var MEMORY_SEARCH_MODES = ["hybrid", "memories", "documents"];
230
- var MEMORY_PROVIDERS = ["gmail", "slack", "github", "notion"];
231
- function parseLimit3(value) {
232
- if (value === void 0) {
233
- return void 0;
234
- }
235
- const parsed = Number(value);
236
- return Number.isInteger(parsed) ? parsed : void 0;
237
- }
238
- function parseMode(value) {
239
- if (value === void 0) {
240
- return void 0;
241
- }
242
- if (MEMORY_SEARCH_MODES.some((mode) => {
243
- return mode === value;
244
- })) {
245
- return value;
246
- }
247
- console.error(source_default.red("\u2717 Unsupported memory search mode"));
248
- console.error(source_default.dim(" Use one of: hybrid, memories, documents"));
249
- process.exit(1);
250
- }
251
- function parseProvider(value) {
252
- if (value === void 0) {
253
- return void 0;
254
- }
255
- if (MEMORY_PROVIDERS.some((provider) => {
256
- return provider === value;
257
- })) {
258
- return value;
259
- }
260
- console.error(source_default.red("\u2717 Unsupported memory provider"));
261
- console.error(source_default.dim(" Use one of: gmail, slack, github, notion"));
262
- process.exit(1);
263
- }
264
- var searchCommand = new Command().name("search").description("Search structured memory and document chunks").argument("<query>", "Search query").option(
265
- "--mode <mode>",
266
- "Search mode: hybrid, memories, or documents",
267
- "hybrid"
268
- ).option("--provider <provider>", "Filter documents by source provider").option("--limit <limit>", "Maximum results to return").option("--json", "Print machine-readable JSON").addHelpText(
269
- "after",
270
- `
271
- Examples:
272
- Hybrid search: zero memory search "security review"
273
- Documents only: zero memory search "retention policy" --mode documents
274
- GitHub documents: zero memory search "release plan" --provider github
275
- Print JSON: zero memory search "Acme" --json
276
-
277
- Notes:
278
- - Uses the authenticated user's active organization
279
- - Requires relationship memory to be enabled for the organization
280
- - This command is read-only`
281
- ).action(
282
- withErrorHandler(async (query, options) => {
283
- const response = await searchZeroMemory({
284
- q: query,
285
- mode: parseMode(options.mode),
286
- provider: parseProvider(options.provider),
287
- limit: parseLimit3(options.limit)
288
- });
289
- if (options.json) {
290
- console.log(JSON.stringify(response));
291
- return;
292
- }
293
- printMemorySearch(response);
294
- })
295
- );
296
-
297
- // src/commands/zero/memory/index.ts
298
- var zeroMemoryCommand = new Command().name("memory").description("Recall and search structured memory").addCommand(recallCommand).addCommand(searchCommand).addCommand(contextCommand);
299
- export {
300
- zeroMemoryCommand
301
- };
302
- //# sourceMappingURL=memory-AJFIEBVQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/zero/memory/index.ts","../src/commands/zero/memory/context.ts","../src/commands/zero/memory/format.ts","../src/commands/zero/memory/recall.ts","../src/commands/zero/memory/search.ts"],"sourcesContent":["import { Command } from \"commander\";\n\nimport { contextCommand } from \"./context\";\nimport { recallCommand } from \"./recall\";\nimport { searchCommand } from \"./search\";\n\nexport const zeroMemoryCommand = new Command()\n .name(\"memory\")\n .description(\"Recall and search structured memory\")\n .addCommand(recallCommand)\n .addCommand(searchCommand)\n .addCommand(contextCommand);\n","import { Command } from \"commander\";\n\nimport { getZeroMemoryContext } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { printMemoryContext } from \"./format\";\n\ninterface ContextOptions {\n readonly json?: boolean;\n readonly limit?: string;\n readonly query?: string;\n}\n\nfunction parseLimit(value: string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isInteger(parsed) ? parsed : undefined;\n}\n\nexport const contextCommand = new Command()\n .name(\"context\")\n .description(\"Print prompt-ready structured memory context\")\n .option(\"--query <query>\", \"Optional query to focus the context\")\n .option(\"--limit <limit>\", \"Maximum memories to include\")\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n General context: zero memory context\n Focus context: zero memory context --query \"security review\"\n Print JSON: zero memory context --query \"Acme\" --json\n\nNotes:\n - Uses the authenticated user's active organization\n - Requires relationship memory to be enabled for the organization\n - This command is read-only`,\n )\n .action(\n withErrorHandler(async (options: ContextOptions) => {\n const response = await getZeroMemoryContext({\n q: options.query,\n limit: parseLimit(options.limit),\n });\n\n if (options.json) {\n console.log(JSON.stringify(response));\n return;\n }\n\n printMemoryContext(response);\n }),\n );\n","import chalk from \"chalk\";\nimport type {\n MemoryContextResponse,\n MemoryRecallItem,\n MemorySearchResponse,\n MemorySearchResult,\n} from \"@vm0/api-contracts/contracts/zero-memory\";\n\nfunction formatDate(value: string | null): string {\n if (!value) {\n return \"unknown\";\n }\n return new Intl.DateTimeFormat(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n }).format(new Date(value));\n}\n\nfunction formatKind(kind: MemoryRecallItem[\"kind\"]): string {\n switch (kind) {\n case \"key_fact\": {\n return \"key fact\";\n }\n case \"open_loop\": {\n return \"open loop\";\n }\n case \"preference\": {\n return \"preference\";\n }\n }\n}\n\nfunction sourceSummary(memory: MemoryRecallItem): string {\n const source = memory.sources[0];\n if (!source) {\n return \"no source\";\n }\n return `${source.provider}:${source.externalId} (${formatDate(source.occurredAt)})`;\n}\n\nexport function printMemoryRecall(memories: readonly MemoryRecallItem[]): void {\n if (memories.length === 0) {\n console.log(\"No memories found\");\n console.log(\n chalk.dim(\n ' Try a broader query, for example: zero memory recall \"pricing\"',\n ),\n );\n return;\n }\n\n console.log(chalk.green(`✓ Recalled ${memories.length} memories`));\n for (const memory of memories) {\n const entity = memory.relationship.entity.displayName;\n console.log(`- ${memory.text}`);\n console.log(\n chalk.dim(\n ` ${formatKind(memory.kind)} · ${entity} · confidence ${memory.confidence} · ${sourceSummary(memory)}`,\n ),\n );\n }\n}\n\nexport function printMemoryContext(response: MemoryContextResponse): void {\n if (response.context.length === 0) {\n console.log(\"No memory context found\");\n console.log(\n chalk.dim(' Try: zero memory context --query \"customer follow up\"'),\n );\n return;\n }\n\n console.log(response.context);\n}\n\nfunction compactText(value: string): string {\n const normalized = value.replace(/\\s+/g, \" \").trim();\n if (normalized.length <= 180) {\n return normalized;\n }\n return `${normalized.slice(0, 177)}...`;\n}\n\nfunction formatScore(score: number): string {\n return score.toFixed(2);\n}\n\nfunction printMemorySearchResult(result: MemorySearchResult): void {\n if (result.kind === \"memory\") {\n const memory = result.memory;\n const entity = memory.relationship.entity.displayName;\n console.log(`- ${memory.text}`);\n console.log(\n chalk.dim(\n ` memory · ${formatKind(memory.kind)} · ${entity} · score ${formatScore(result.score)} · ${sourceSummary(memory)}`,\n ),\n );\n return;\n }\n\n const title = result.title ?? result.externalId;\n const citationUrl = result.citation.url ? ` · ${result.citation.url}` : \"\";\n console.log(`- ${title}`);\n console.log(chalk.dim(` document · ${compactText(result.text)}`));\n console.log(\n chalk.dim(\n ` ${result.provider}:${result.externalId} · ${result.contextSpace.displayName} · score ${formatScore(result.score)}${citationUrl}`,\n ),\n );\n}\n\nexport function printMemorySearch(response: MemorySearchResponse): void {\n if (response.results.length === 0) {\n console.log(\"No memory or document results found\");\n console.log(\n chalk.dim(' Try: zero memory search \"security review\" --mode hybrid'),\n );\n return;\n }\n\n console.log(\n chalk.green(\n `✓ Found ${response.results.length} ${response.mode} memory results`,\n ),\n );\n for (const result of response.results) {\n printMemorySearchResult(result);\n }\n}\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport type { MemoryRecallItemKind } from \"@vm0/api-contracts/contracts/zero-memory\";\n\nimport { recallZeroMemory } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { printMemoryRecall } from \"./format\";\n\ninterface RecallOptions {\n readonly json?: boolean;\n readonly kind?: string;\n readonly limit?: string;\n}\n\nconst MEMORY_KINDS = [\"key_fact\", \"preference\", \"open_loop\"] as const;\n\nfunction parseLimit(value: string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isInteger(parsed) ? parsed : undefined;\n}\n\nfunction parseKind(\n value: string | undefined,\n): MemoryRecallItemKind | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (\n MEMORY_KINDS.some((kind) => {\n return kind === value;\n })\n ) {\n return value as MemoryRecallItemKind;\n }\n console.error(chalk.red(\"✗ Unsupported memory kind\"));\n console.error(chalk.dim(\" Use one of: key_fact, preference, open_loop\"));\n process.exit(1);\n}\n\nexport const recallCommand = new Command()\n .name(\"recall\")\n .description(\"Recall structured memory by query\")\n .argument(\"<query>\", \"Recall query\")\n .option(\"--kind <kind>\", \"Filter by key_fact, preference, or open_loop\")\n .option(\"--limit <limit>\", \"Maximum memories to return\")\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Recall memory: zero memory recall \"security review\"\n Filter kind: zero memory recall \"pricing\" --kind open_loop\n Print JSON: zero memory recall \"Acme\" --json\n\nNotes:\n - Uses the authenticated user's active organization\n - Requires relationship memory to be enabled for the organization\n - This command is read-only`,\n )\n .action(\n withErrorHandler(async (query: string, options: RecallOptions) => {\n const response = await recallZeroMemory({\n q: query,\n kind: parseKind(options.kind),\n limit: parseLimit(options.limit),\n });\n\n if (options.json) {\n console.log(JSON.stringify(response));\n return;\n }\n\n printMemoryRecall(response.memories);\n }),\n );\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport type {\n MemorySearchMode,\n MemorySourceProvider,\n} from \"@vm0/api-contracts/contracts/zero-memory\";\n\nimport { searchZeroMemory } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { printMemorySearch } from \"./format\";\n\ninterface SearchOptions {\n readonly json?: boolean;\n readonly limit?: string;\n readonly mode?: string;\n readonly provider?: string;\n}\n\nconst MEMORY_SEARCH_MODES = [\"hybrid\", \"memories\", \"documents\"] as const;\nconst MEMORY_PROVIDERS = [\"gmail\", \"slack\", \"github\", \"notion\"] as const;\n\nfunction parseLimit(value: string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isInteger(parsed) ? parsed : undefined;\n}\n\nfunction parseMode(value: string | undefined): MemorySearchMode | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (\n MEMORY_SEARCH_MODES.some((mode) => {\n return mode === value;\n })\n ) {\n return value as MemorySearchMode;\n }\n console.error(chalk.red(\"✗ Unsupported memory search mode\"));\n console.error(chalk.dim(\" Use one of: hybrid, memories, documents\"));\n process.exit(1);\n}\n\nfunction parseProvider(\n value: string | undefined,\n): MemorySourceProvider | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (\n MEMORY_PROVIDERS.some((provider) => {\n return provider === value;\n })\n ) {\n return value as MemorySourceProvider;\n }\n console.error(chalk.red(\"✗ Unsupported memory provider\"));\n console.error(chalk.dim(\" Use one of: gmail, slack, github, notion\"));\n process.exit(1);\n}\n\nexport const searchCommand = new Command()\n .name(\"search\")\n .description(\"Search structured memory and document chunks\")\n .argument(\"<query>\", \"Search query\")\n .option(\n \"--mode <mode>\",\n \"Search mode: hybrid, memories, or documents\",\n \"hybrid\",\n )\n .option(\"--provider <provider>\", \"Filter documents by source provider\")\n .option(\"--limit <limit>\", \"Maximum results to return\")\n .option(\"--json\", \"Print machine-readable JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Hybrid search: zero memory search \"security review\"\n Documents only: zero memory search \"retention policy\" --mode documents\n GitHub documents: zero memory search \"release plan\" --provider github\n Print JSON: zero memory search \"Acme\" --json\n\nNotes:\n - Uses the authenticated user's active organization\n - Requires relationship memory to be enabled for the organization\n - This command is read-only`,\n )\n .action(\n withErrorHandler(async (query: string, options: SearchOptions) => {\n const response = await searchZeroMemory({\n q: query,\n mode: parseMode(options.mode),\n provider: parseProvider(options.provider),\n limit: parseLimit(options.limit),\n });\n\n if (options.json) {\n console.log(JSON.stringify(response));\n return;\n }\n\n printMemorySearch(response);\n }),\n );\n"],"mappings":"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","names":["parseLimit","parseLimit"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes