@memnexus-ai/cli 1.7.217 → 1.7.219

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.
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import { isRateLimitError, isServiceUnavailableError, isQuotaError, getRetryAfterMs, sleep } from '../lib/retry';
2
3
  /** Number of deletions within the window that triggers the guard. */
3
4
  export declare const BULK_DELETE_GUARD_THRESHOLD = 5;
4
5
  /** Rolling window in milliseconds (60 seconds). */
@@ -66,16 +67,7 @@ export declare function parseBatchIds(values: string[] | undefined): string[];
66
67
  export declare function isValidIsoDate(value: string): boolean;
67
68
  /** Split ids into pages of at most `size` (default 100). */
68
69
  export declare function chunkIds(ids: string[], size?: number): string[][];
69
- /** True when an error is an HTTP 429 (rate limited). */
70
- export declare function isRateLimitError(error: any): boolean;
71
- /**
72
- * Extract the server's Retry-After hint in milliseconds, or null if absent.
73
- * The API surfaces it as a body field (`retryAfter`, seconds) on 429s
74
- * (see lib/errors.ts) and may also send a Retry-After header; we honor both.
75
- */
76
- export declare function getRetryAfterMs(error: any): number | null;
77
- /** Promise-based sleep. Extracted so tests can inject a no-op/spy. */
78
- export declare function sleep(ms: number): Promise<void>;
70
+ export { isRateLimitError, isServiceUnavailableError, isQuotaError, getRetryAfterMs, sleep };
79
71
  export interface BulkDeleteDeps {
80
72
  /** Deletes one page (≤100 ids) and returns the server's counts. */
81
73
  deleteFn: (ids: string[]) => Promise<BulkDeleteResult>;
@@ -122,6 +114,175 @@ export declare function runBulkDeletePaged(ids: string[], deps: Omit<BulkDeleteD
122
114
  * id. Used by `--all`. Stops when a page returns fewer than the page size.
123
115
  */
124
116
  export declare function collectAllMemoryIds(listFn: (params: any) => Promise<any>, filterParams?: Record<string, unknown>, pageSize?: number): Promise<string[]>;
117
+ /** Default parallel creates when MX_CREATE_CONCURRENCY is unset. */
118
+ export declare const BATCH_CREATE_DEFAULT_CONCURRENCY = 4;
119
+ /** Clamp band for MX_CREATE_CONCURRENCY (mirrors the RECALL_MAX_MS clamp convention). */
120
+ export declare const BATCH_CREATE_CONCURRENCY_MIN = 1;
121
+ export declare const BATCH_CREATE_CONCURRENCY_MAX = 8;
122
+ /** Max retries per item on 429/503 before giving up (mirrors batch delete). */
123
+ export declare const BATCH_CREATE_MAX_RETRIES = 3;
124
+ /**
125
+ * Hard cap on total stdin bytes read (128 MB) before we abort. A mistaken
126
+ * multi-GB pipe would otherwise accumulate unbounded and OOM the CLI
127
+ * (CWE-400, client-side); we fail closed with a clear error instead. Matches
128
+ * the 64KB-class file-bound precedent from v3.89a — generous enough that any
129
+ * legitimate JSONL batch fits, small enough that a runaway pipe stops early.
130
+ */
131
+ export declare const BATCH_CREATE_MAX_STDIN_BYTES: number;
132
+ /**
133
+ * Hard cap on a single JSONL line length (1 MB). A line longer than this is
134
+ * rejected as a per-line parse error BEFORE JSON.parse (bounding parser memory),
135
+ * preserving the one-result-line-per-input-line contract instead of aborting
136
+ * the whole stream. A single memory body never legitimately approaches 1 MB.
137
+ */
138
+ export declare const BATCH_CREATE_MAX_LINE_BYTES: number;
139
+ /**
140
+ * Fields a JSONL create line may carry. Mirrors the single-create option map
141
+ * (createMemory body). Any other key is rejected per-line — a typo like
142
+ * "contnet" fails that line loudly instead of silently dropping the content.
143
+ * `supersedes` is intentionally excluded: it is a separate relationship call in
144
+ * single-create, out of scope for the streaming path (noted in the PR).
145
+ */
146
+ export declare const BATCH_CREATE_ALLOWED_KEYS: Set<string>;
147
+ /** True when a create should be retried: 429 (rate limited) or 503 (transient). */
148
+ export declare function isRetryableCreateError(error: any): boolean;
149
+ export interface BatchCreateItem {
150
+ /** 1-based input line number (blank lines are skipped, so this is not dense). */
151
+ line: number;
152
+ /** Parsed createMemory body; absent when the line failed to parse/validate. */
153
+ data?: Record<string, unknown>;
154
+ /** Set when the line could not be parsed or validated. */
155
+ parseError?: string;
156
+ }
157
+ /**
158
+ * Machine-readable reason on a FAILED result line. Absent on success. Lets a
159
+ * script branch on the failure class without string-matching `error`:
160
+ * - PARSE_ERROR the input line was not a valid createMemory object.
161
+ * - CREATE_FAILED the create request failed (after retries) for this line.
162
+ * - QUOTA_STOPPED a 402 on this line stopped the stream early.
163
+ * - NOT_ATTEMPTED never sent because the stream stopped early on a quota.
164
+ * - OUTPUT_CLOSED never sent because the stdout sink closed early (EPIPE).
165
+ */
166
+ export type BatchCreateResultCode = 'PARSE_ERROR' | 'CREATE_FAILED' | 'QUOTA_STOPPED' | 'NOT_ATTEMPTED' | 'OUTPUT_CLOSED';
167
+ export interface BatchCreateResult {
168
+ line: number;
169
+ ok: boolean;
170
+ id?: string;
171
+ error?: string;
172
+ /** Failure class (absent on success). */
173
+ code?: BatchCreateResultCode;
174
+ }
175
+ export interface BatchCreateSummary {
176
+ total: number;
177
+ ok: number;
178
+ failed: number;
179
+ /** Lines never attempted because the stream stopped early (quota or sink close). */
180
+ notAttempted: number;
181
+ /** True when a 402 stopped the stream early. */
182
+ quotaStopped: boolean;
183
+ /** 429/503 responses observed across all items and retries. */
184
+ rateLimitedCount: number;
185
+ /** Result lines successfully written to the sink (< ok+failed if the sink died). */
186
+ delivered: number;
187
+ /** True when the stdout sink threw (EPIPE / reader closed early). */
188
+ outputClosed: boolean;
189
+ }
190
+ /**
191
+ * Parse and validate one JSONL line into a createMemory body.
192
+ *
193
+ * Returns `{ data }` on success or `{ error }` on failure. Rejects: non-JSON,
194
+ * non-object lines, unknown keys, and a missing/blank `content`. `conversationId`
195
+ * defaults to "NEW" (mirrors single-create). `topics` accepts a JSON array or a
196
+ * comma-separated string; `importance` accepts a number or numeric string.
197
+ */
198
+ export declare function parseJsonlCreateLine(raw: string): {
199
+ data?: Record<string, unknown>;
200
+ error?: string;
201
+ };
202
+ /**
203
+ * Resolve the create concurrency from MX_CREATE_CONCURRENCY, clamped to
204
+ * [MIN, MAX]. Out-of-band values are clamped to the nearest bound (non-numeric →
205
+ * default) and warn once on stderr — mirrors the RECALL_MAX_MS clamp convention
206
+ * (import-time band + single WARN).
207
+ */
208
+ export declare function resolveCreateConcurrency(raw: string | undefined, warn?: (msg: string) => void): number;
209
+ export interface BatchCreateItemDeps {
210
+ createFn: (data: Record<string, unknown>) => Promise<{
211
+ id?: string;
212
+ }>;
213
+ sleep: (ms: number) => Promise<void>;
214
+ maxRetries?: number;
215
+ defaultRetryMs?: number;
216
+ onRateLimited?: (waitMs: number) => void;
217
+ }
218
+ /**
219
+ * Create one memory, retrying on 429/503 up to `maxRetries` times, honoring the
220
+ * server's Retry-After hint (falls back to linear backoff). A 402 (quota) is
221
+ * NOT retried — it rethrows immediately so the pool can stop the stream early.
222
+ */
223
+ export declare function batchCreateWithRetry(data: Record<string, unknown>, deps: BatchCreateItemDeps): Promise<{
224
+ id?: string;
225
+ }>;
226
+ export interface RunBatchCreateDeps extends BatchCreateItemDeps {
227
+ /** Number of parallel creates in flight (already clamped by the caller). */
228
+ concurrency: number;
229
+ /** Emitted once per result in COMPLETION order (not-attempted appended last). */
230
+ onResult?: (result: BatchCreateResult) => void;
231
+ }
232
+ /**
233
+ * Run `items` through a bounded-concurrency worker pool. Each valid line becomes
234
+ * one createMemory call with per-item 429/503 retry; each parse-error line
235
+ * resolves immediately as a failure. Results are emitted via `onResult` in
236
+ * COMPLETION order, with the input line number attached.
237
+ *
238
+ * A 402 (quota exhausted) STOPS the stream early: the offending line is reported
239
+ * as failed, no new lines are pulled, in-flight creates drain, and every
240
+ * not-yet-pulled line is emitted as a not-attempted failure in line order. This
241
+ * mirrors the batch-delete early-abort contract — the caller always gets one
242
+ * result line per input line, never a dropped report (the v3.90 lesson).
243
+ *
244
+ * If the sink (`onResult`, i.e. stdout) THROWS — the classic `... | head`
245
+ * EPIPE — that is a distinct terminal condition, NOT a create failure. The
246
+ * create for that line already succeeded and is counted; we stop pulling new
247
+ * work, emit nothing further to the dead sink, and set `outputClosed` so the
248
+ * caller can print an accounting to stderr (which is still open). `emit` is
249
+ * guarded so a sink throw can never be misread as a create failure (which would
250
+ * duplicate the line) nor propagate uncaught.
251
+ */
252
+ export declare function runBatchCreate(items: BatchCreateItem[], deps: RunBatchCreateDeps): Promise<BatchCreateSummary>;
253
+ /**
254
+ * Split raw stdin into non-blank lines, each paired with its 1-based input line
255
+ * number and parse result. Blank/whitespace-only lines are skipped silently (a
256
+ * trailing newline is normal in JSONL and is not an error).
257
+ */
258
+ export declare function buildBatchCreateItems(raw: string): BatchCreateItem[];
259
+ /** Thrown by readStdinRaw when accumulated stdin exceeds the byte cap. */
260
+ export declare class StdinTooLargeError extends Error {
261
+ readonly bytes: number;
262
+ readonly limit: number;
263
+ readonly code = "STDIN_TOO_LARGE";
264
+ constructor(bytes: number, limit: number);
265
+ }
266
+ /**
267
+ * Read all of stdin as a single string (no whitespace splitting), aborting once
268
+ * accumulated bytes exceed `maxBytes`. Without the cap a mistaken multi-GB pipe
269
+ * would grow `data` unbounded and OOM the CLI (CWE-400); we fail closed with a
270
+ * StdinTooLargeError instead. `maxBytes` is injectable for tests; production
271
+ * uses BATCH_CREATE_MAX_STDIN_BYTES.
272
+ */
273
+ export declare function readStdinRaw(maxBytes?: number): Promise<string>;
274
+ /**
275
+ * `mx memories create --stdin-jsonl`: streaming batch create. Reads JSONL from
276
+ * stdin (one createMemory body per line), fires bounded-concurrency creates, and
277
+ * writes one JSONL result line per input line to stdout in completion order.
278
+ *
279
+ * stdout is PURE JSONL: the ONLY writes are the per-line result objects below.
280
+ * Every status/warning/summary goes to stderr. There is no session-preamble
281
+ * printer on this command path, so the #4176-class stdout-pollution bug cannot
282
+ * occur here — but the split is enforced deliberately so a future preamble can
283
+ * never leak into the machine-readable stream.
284
+ */
285
+ export declare function handleStreamingCreate(maxStdinBytes?: number): Promise<void>;
125
286
  /**
126
287
  * Register memory management commands
127
288
  * @param program - Commander program instance
@@ -1 +1 @@
1
- {"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../../src/commands/memories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../../src/commands/memories.ts"],"names":[],"mappings":"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"}