mem-os-python 1.6.27__py3-none-any.whl
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.
- mem_os_python-1.6.27.dist-info/METADATA +1032 -0
- mem_os_python-1.6.27.dist-info/RECORD +253 -0
- mem_os_python-1.6.27.dist-info/WHEEL +4 -0
- mem_os_python-1.6.27.dist-info/entry_points.txt +2 -0
- mem_os_python-1.6.27.dist-info/licenses/LICENSE +21 -0
- memos/__init__.py +16 -0
- memos/_js/adapters/anthropic.d.ts +279 -0
- memos/_js/adapters/anthropic.d.ts.map +1 -0
- memos/_js/adapters/anthropic.js +348 -0
- memos/_js/adapters/anthropic.js.map +1 -0
- memos/_js/adapters/base.d.ts +10 -0
- memos/_js/adapters/base.d.ts.map +1 -0
- memos/_js/adapters/base.js +2 -0
- memos/_js/adapters/base.js.map +1 -0
- memos/_js/adapters/openai.d.ts +264 -0
- memos/_js/adapters/openai.d.ts.map +1 -0
- memos/_js/adapters/openai.js +342 -0
- memos/_js/adapters/openai.js.map +1 -0
- memos/_js/apps/explorer.d.ts +244 -0
- memos/_js/apps/explorer.d.ts.map +1 -0
- memos/_js/apps/explorer.js +738 -0
- memos/_js/apps/explorer.js.map +1 -0
- memos/_js/citations.d.ts +65 -0
- memos/_js/citations.d.ts.map +1 -0
- memos/_js/citations.js +143 -0
- memos/_js/citations.js.map +1 -0
- memos/_js/cli-browse.d.ts +3 -0
- memos/_js/cli-browse.d.ts.map +1 -0
- memos/_js/cli-browse.js +129 -0
- memos/_js/cli-browse.js.map +1 -0
- memos/_js/cli-completion.d.ts +31 -0
- memos/_js/cli-completion.d.ts.map +1 -0
- memos/_js/cli-completion.js +340 -0
- memos/_js/cli-completion.js.map +1 -0
- memos/_js/cli-help.d.ts +18 -0
- memos/_js/cli-help.d.ts.map +1 -0
- memos/_js/cli-help.js +357 -0
- memos/_js/cli-help.js.map +1 -0
- memos/_js/cli.d.ts +28 -0
- memos/_js/cli.d.ts.map +1 -0
- memos/_js/cli.js +2880 -0
- memos/_js/cli.js.map +1 -0
- memos/_js/compression.d.ts +25 -0
- memos/_js/compression.d.ts.map +1 -0
- memos/_js/compression.js +319 -0
- memos/_js/compression.js.map +1 -0
- memos/_js/confidence-machine.d.ts +99 -0
- memos/_js/confidence-machine.d.ts.map +1 -0
- memos/_js/confidence-machine.js +222 -0
- memos/_js/confidence-machine.js.map +1 -0
- memos/_js/context-pack.d.ts +506 -0
- memos/_js/context-pack.d.ts.map +1 -0
- memos/_js/context-pack.js +1435 -0
- memos/_js/context-pack.js.map +1 -0
- memos/_js/contradictions.d.ts +160 -0
- memos/_js/contradictions.d.ts.map +1 -0
- memos/_js/contradictions.js +255 -0
- memos/_js/contradictions.js.map +1 -0
- memos/_js/dashboard.d.ts +30 -0
- memos/_js/dashboard.d.ts.map +1 -0
- memos/_js/dashboard.js +302 -0
- memos/_js/dashboard.js.map +1 -0
- memos/_js/ebbinghaus.d.ts +29 -0
- memos/_js/ebbinghaus.d.ts.map +1 -0
- memos/_js/ebbinghaus.js +32 -0
- memos/_js/ebbinghaus.js.map +1 -0
- memos/_js/embedding-queue.d.ts +190 -0
- memos/_js/embedding-queue.d.ts.map +1 -0
- memos/_js/embedding-queue.js +316 -0
- memos/_js/embedding-queue.js.map +1 -0
- memos/_js/embeddings.d.ts +187 -0
- memos/_js/embeddings.d.ts.map +1 -0
- memos/_js/embeddings.js +633 -0
- memos/_js/embeddings.js.map +1 -0
- memos/_js/entity-extraction.d.ts +54 -0
- memos/_js/entity-extraction.d.ts.map +1 -0
- memos/_js/entity-extraction.js +325 -0
- memos/_js/entity-extraction.js.map +1 -0
- memos/_js/entity-index.d.ts +93 -0
- memos/_js/entity-index.d.ts.map +1 -0
- memos/_js/entity-index.js +165 -0
- memos/_js/entity-index.js.map +1 -0
- memos/_js/event-memory.d.ts +147 -0
- memos/_js/event-memory.d.ts.map +1 -0
- memos/_js/event-memory.js +290 -0
- memos/_js/event-memory.js.map +1 -0
- memos/_js/external-import.d.ts +98 -0
- memos/_js/external-import.d.ts.map +1 -0
- memos/_js/external-import.js +669 -0
- memos/_js/external-import.js.map +1 -0
- memos/_js/fidelity.d.ts +367 -0
- memos/_js/fidelity.d.ts.map +1 -0
- memos/_js/fidelity.js +911 -0
- memos/_js/fidelity.js.map +1 -0
- memos/_js/graph-expansion.d.ts +119 -0
- memos/_js/graph-expansion.d.ts.map +1 -0
- memos/_js/graph-expansion.js +213 -0
- memos/_js/graph-expansion.js.map +1 -0
- memos/_js/graph-mermaid.d.ts +13 -0
- memos/_js/graph-mermaid.d.ts.map +1 -0
- memos/_js/graph-mermaid.js +32 -0
- memos/_js/graph-mermaid.js.map +1 -0
- memos/_js/graph.d.ts +170 -0
- memos/_js/graph.d.ts.map +1 -0
- memos/_js/graph.js +482 -0
- memos/_js/graph.js.map +1 -0
- memos/_js/harness.d.ts +63 -0
- memos/_js/harness.d.ts.map +1 -0
- memos/_js/harness.js +93 -0
- memos/_js/harness.js.map +1 -0
- memos/_js/importance.d.ts +118 -0
- memos/_js/importance.d.ts.map +1 -0
- memos/_js/importance.js +144 -0
- memos/_js/importance.js.map +1 -0
- memos/_js/index.d.ts +51 -0
- memos/_js/index.d.ts.map +1 -0
- memos/_js/index.js +53 -0
- memos/_js/index.js.map +1 -0
- memos/_js/mcp.d.ts +58 -0
- memos/_js/mcp.d.ts.map +1 -0
- memos/_js/mcp.js +1853 -0
- memos/_js/mcp.js.map +1 -0
- memos/_js/memory.d.ts +1762 -0
- memos/_js/memory.d.ts.map +1 -0
- memos/_js/memory.js +6283 -0
- memos/_js/memory.js.map +1 -0
- memos/_js/procedural.d.ts +74 -0
- memos/_js/procedural.d.ts.map +1 -0
- memos/_js/procedural.js +125 -0
- memos/_js/procedural.js.map +1 -0
- memos/_js/project-config.d.ts +68 -0
- memos/_js/project-config.d.ts.map +1 -0
- memos/_js/project-config.js +59 -0
- memos/_js/project-config.js.map +1 -0
- memos/_js/proof-of-forgetting.d.ts +57 -0
- memos/_js/proof-of-forgetting.d.ts.map +1 -0
- memos/_js/proof-of-forgetting.js +80 -0
- memos/_js/proof-of-forgetting.js.map +1 -0
- memos/_js/provenance.d.ts +122 -0
- memos/_js/provenance.d.ts.map +1 -0
- memos/_js/provenance.js +182 -0
- memos/_js/provenance.js.map +1 -0
- memos/_js/quarantine-commands.d.ts +23 -0
- memos/_js/quarantine-commands.d.ts.map +1 -0
- memos/_js/quarantine-commands.js +42 -0
- memos/_js/quarantine-commands.js.map +1 -0
- memos/_js/quarantine.d.ts +120 -0
- memos/_js/quarantine.d.ts.map +1 -0
- memos/_js/quarantine.js +873 -0
- memos/_js/quarantine.js.map +1 -0
- memos/_js/redact.d.ts +12 -0
- memos/_js/redact.d.ts.map +1 -0
- memos/_js/redact.js +26 -0
- memos/_js/redact.js.map +1 -0
- memos/_js/repl.d.ts +57 -0
- memos/_js/repl.d.ts.map +1 -0
- memos/_js/repl.js +295 -0
- memos/_js/repl.js.map +1 -0
- memos/_js/rerank-local.d.ts +61 -0
- memos/_js/rerank-local.d.ts.map +1 -0
- memos/_js/rerank-local.js +210 -0
- memos/_js/rerank-local.js.map +1 -0
- memos/_js/retain-filter.d.ts +98 -0
- memos/_js/retain-filter.d.ts.map +1 -0
- memos/_js/retain-filter.js +232 -0
- memos/_js/retain-filter.js.map +1 -0
- memos/_js/retrieval.d.ts +265 -0
- memos/_js/retrieval.d.ts.map +1 -0
- memos/_js/retrieval.js +1018 -0
- memos/_js/retrieval.js.map +1 -0
- memos/_js/revert.d.ts +77 -0
- memos/_js/revert.d.ts.map +1 -0
- memos/_js/revert.js +252 -0
- memos/_js/revert.js.map +1 -0
- memos/_js/scope.d.ts +30 -0
- memos/_js/scope.d.ts.map +1 -0
- memos/_js/scope.js +71 -0
- memos/_js/scope.js.map +1 -0
- memos/_js/semantic-screen.d.ts +152 -0
- memos/_js/semantic-screen.d.ts.map +1 -0
- memos/_js/semantic-screen.js +290 -0
- memos/_js/semantic-screen.js.map +1 -0
- memos/_js/session-hooks.d.ts +127 -0
- memos/_js/session-hooks.d.ts.map +1 -0
- memos/_js/session-hooks.js +482 -0
- memos/_js/session-hooks.js.map +1 -0
- memos/_js/storage/sqlite.d.ts +427 -0
- memos/_js/storage/sqlite.d.ts.map +1 -0
- memos/_js/storage/sqlite.js +2428 -0
- memos/_js/storage/sqlite.js.map +1 -0
- memos/_js/sync.d.ts +213 -0
- memos/_js/sync.d.ts.map +1 -0
- memos/_js/sync.js +389 -0
- memos/_js/sync.js.map +1 -0
- memos/_js/tamper-log.d.ts +98 -0
- memos/_js/tamper-log.d.ts.map +1 -0
- memos/_js/tamper-log.js +327 -0
- memos/_js/tamper-log.js.map +1 -0
- memos/_js/temporal.d.ts +92 -0
- memos/_js/temporal.d.ts.map +1 -0
- memos/_js/temporal.js +536 -0
- memos/_js/temporal.js.map +1 -0
- memos/_js/time-travel.d.ts +38 -0
- memos/_js/time-travel.d.ts.map +1 -0
- memos/_js/time-travel.js +46 -0
- memos/_js/time-travel.js.map +1 -0
- memos/_js/timestamp-format.d.ts +18 -0
- memos/_js/timestamp-format.d.ts.map +1 -0
- memos/_js/timestamp-format.js +52 -0
- memos/_js/timestamp-format.js.map +1 -0
- memos/_js/triple-extraction.d.ts +31 -0
- memos/_js/triple-extraction.d.ts.map +1 -0
- memos/_js/triple-extraction.js +116 -0
- memos/_js/triple-extraction.js.map +1 -0
- memos/_js/types.d.ts +2474 -0
- memos/_js/types.d.ts.map +1 -0
- memos/_js/types.js +20 -0
- memos/_js/types.js.map +1 -0
- memos/_js/updater.d.ts +95 -0
- memos/_js/updater.d.ts.map +1 -0
- memos/_js/updater.js +268 -0
- memos/_js/updater.js.map +1 -0
- memos/_js/version.d.ts +17 -0
- memos/_js/version.d.ts.map +1 -0
- memos/_js/version.js +34 -0
- memos/_js/version.js.map +1 -0
- memos/_js/vision/clip-query-cache.d.ts +58 -0
- memos/_js/vision/clip-query-cache.d.ts.map +1 -0
- memos/_js/vision/clip-query-cache.js +79 -0
- memos/_js/vision/clip-query-cache.js.map +1 -0
- memos/_js/vision/clip.d.ts +113 -0
- memos/_js/vision/clip.d.ts.map +1 -0
- memos/_js/vision/clip.js +224 -0
- memos/_js/vision/clip.js.map +1 -0
- memos/_js/vision/fake-clip.d.ts +55 -0
- memos/_js/vision/fake-clip.d.ts.map +1 -0
- memos/_js/vision/fake-clip.js +122 -0
- memos/_js/vision/fake-clip.js.map +1 -0
- memos/_js/vision/index.d.ts +15 -0
- memos/_js/vision/index.d.ts.map +1 -0
- memos/_js/vision/index.js +13 -0
- memos/_js/vision/index.js.map +1 -0
- memos/_js/vision/store.d.ts +137 -0
- memos/_js/vision/store.d.ts.map +1 -0
- memos/_js/vision/store.js +383 -0
- memos/_js/vision/store.js.map +1 -0
- memos/adapters/__init__.py +0 -0
- memos/adapters/crewai.py +385 -0
- memos/adapters/langchain.py +301 -0
- memos/adapters/ollama.py +396 -0
- memos/server/__init__.py +0 -0
- memos/server/main.py +547 -0
- memos/server/routes.py +360 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/apps/explorer.ts"],"names":[],"mappings":"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"}
|
memos/_js/citations.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory-grounded citations.
|
|
3
|
+
*
|
|
4
|
+
* Every memory injected into a context pack can carry a citable token
|
|
5
|
+
* like `[mem:a3f9]`: short enough to quote in an agent's answer, stable
|
|
6
|
+
* enough to trace back to the full source memory. `resolveCitation`
|
|
7
|
+
* (on `MemOS`) turns a token back into the memory — its text,
|
|
8
|
+
* timestamps, source, and tags — and `memos cite <id>` exposes the same
|
|
9
|
+
* lookup on the CLI.
|
|
10
|
+
*
|
|
11
|
+
* Token scheme: `mem:` + the first 4 hex chars of the node id (dashes
|
|
12
|
+
* stripped, lowercase). Four chars keeps citations cheap in the prompt;
|
|
13
|
+
* when two pack items would collide, the pack renderer lengthens the
|
|
14
|
+
* colliding tokens until they are unique *within the pack* (git-style).
|
|
15
|
+
* Globally, `resolveCitation` prefix-matches the token against stored
|
|
16
|
+
* ids and reports `ambiguous` with the candidate list instead of
|
|
17
|
+
* guessing when a short token matches more than one memory.
|
|
18
|
+
*
|
|
19
|
+
* @module @mem-os/citations
|
|
20
|
+
*/
|
|
21
|
+
import type { MemoryNode } from "./types.js";
|
|
22
|
+
/** Minimum/maximum hex length accepted in a citation token. */
|
|
23
|
+
export declare const CITATION_MIN_HEX = 4;
|
|
24
|
+
export declare const CITATION_MAX_HEX = 32;
|
|
25
|
+
/**
|
|
26
|
+
* The citable short id for a memory: first 4 hex chars of the node id
|
|
27
|
+
* (dashes stripped, lowercase). Non-hex ids fall back to the first 4
|
|
28
|
+
* characters as-is.
|
|
29
|
+
*/
|
|
30
|
+
export declare function shortCitationId(id: string): string;
|
|
31
|
+
/** Render the citation token for a memory id, e.g. `[mem:a3f9]`. */
|
|
32
|
+
export declare function citationToken(id: string): string;
|
|
33
|
+
/** Render a citation token with an explicit hex body (pack renderer). */
|
|
34
|
+
export declare function citationTokenForHex(hex: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Normalize user input to a hex prefix: accepts `[mem:a3f9]`, bare
|
|
37
|
+
* `a3f9`, a full dashed uuid, or a dashless id. Returns null when the
|
|
38
|
+
* input carries no usable hex.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseCitationToken(input: string): string | null;
|
|
41
|
+
/** Outcome of tracing a citation token back to its source memory. */
|
|
42
|
+
export type CitationResolution = {
|
|
43
|
+
status: "resolved";
|
|
44
|
+
token: string;
|
|
45
|
+
memory: MemoryNode;
|
|
46
|
+
} | {
|
|
47
|
+
status: "not_found";
|
|
48
|
+
token: string;
|
|
49
|
+
} | {
|
|
50
|
+
status: "ambiguous";
|
|
51
|
+
token: string;
|
|
52
|
+
candidates: MemoryNode[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Assign citation tokens to pack items, unique within the pack.
|
|
56
|
+
* Tokens start at 4 hex chars and lengthen (git-style) only for items
|
|
57
|
+
* that would otherwise collide.
|
|
58
|
+
*/
|
|
59
|
+
export declare function assignCitationTokens(ids: string[]): Map<string, string>;
|
|
60
|
+
/**
|
|
61
|
+
* Render a citation resolution exactly as the `memos cite` CLI prints
|
|
62
|
+
* it (shared so tests assert on the real output bytes).
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatCitationResolution(resolution: CitationResolution, asJson?: boolean): string;
|
|
65
|
+
//# sourceMappingURL=citations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citations.d.ts","sourceRoot":"","sources":["../src/citations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ/D;AAED,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,kBAAkB,EAC9B,MAAM,GAAE,OAAe,GACtB,MAAM,CAqDR"}
|
memos/_js/citations.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory-grounded citations.
|
|
3
|
+
*
|
|
4
|
+
* Every memory injected into a context pack can carry a citable token
|
|
5
|
+
* like `[mem:a3f9]`: short enough to quote in an agent's answer, stable
|
|
6
|
+
* enough to trace back to the full source memory. `resolveCitation`
|
|
7
|
+
* (on `MemOS`) turns a token back into the memory — its text,
|
|
8
|
+
* timestamps, source, and tags — and `memos cite <id>` exposes the same
|
|
9
|
+
* lookup on the CLI.
|
|
10
|
+
*
|
|
11
|
+
* Token scheme: `mem:` + the first 4 hex chars of the node id (dashes
|
|
12
|
+
* stripped, lowercase). Four chars keeps citations cheap in the prompt;
|
|
13
|
+
* when two pack items would collide, the pack renderer lengthens the
|
|
14
|
+
* colliding tokens until they are unique *within the pack* (git-style).
|
|
15
|
+
* Globally, `resolveCitation` prefix-matches the token against stored
|
|
16
|
+
* ids and reports `ambiguous` with the candidate list instead of
|
|
17
|
+
* guessing when a short token matches more than one memory.
|
|
18
|
+
*
|
|
19
|
+
* @module @mem-os/citations
|
|
20
|
+
*/
|
|
21
|
+
/** Minimum/maximum hex length accepted in a citation token. */
|
|
22
|
+
export const CITATION_MIN_HEX = 4;
|
|
23
|
+
export const CITATION_MAX_HEX = 32;
|
|
24
|
+
/**
|
|
25
|
+
* The citable short id for a memory: first 4 hex chars of the node id
|
|
26
|
+
* (dashes stripped, lowercase). Non-hex ids fall back to the first 4
|
|
27
|
+
* characters as-is.
|
|
28
|
+
*/
|
|
29
|
+
export function shortCitationId(id) {
|
|
30
|
+
const hex = id.replace(/-/g, "").toLowerCase();
|
|
31
|
+
if (/^[0-9a-f]+$/.test(hex))
|
|
32
|
+
return hex.slice(0, CITATION_MIN_HEX);
|
|
33
|
+
return id.slice(0, CITATION_MIN_HEX);
|
|
34
|
+
}
|
|
35
|
+
/** Render the citation token for a memory id, e.g. `[mem:a3f9]`. */
|
|
36
|
+
export function citationToken(id) {
|
|
37
|
+
return `[mem:${shortCitationId(id)}]`;
|
|
38
|
+
}
|
|
39
|
+
/** Render a citation token with an explicit hex body (pack renderer). */
|
|
40
|
+
export function citationTokenForHex(hex) {
|
|
41
|
+
return `[mem:${hex.toLowerCase()}]`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Normalize user input to a hex prefix: accepts `[mem:a3f9]`, bare
|
|
45
|
+
* `a3f9`, a full dashed uuid, or a dashless id. Returns null when the
|
|
46
|
+
* input carries no usable hex.
|
|
47
|
+
*/
|
|
48
|
+
export function parseCitationToken(input) {
|
|
49
|
+
let text = input.trim();
|
|
50
|
+
const wrapped = /^\[mem:([0-9a-fA-F]+)\]$/.exec(text);
|
|
51
|
+
if (wrapped)
|
|
52
|
+
text = wrapped[1];
|
|
53
|
+
const hex = text.replace(/-/g, "").toLowerCase();
|
|
54
|
+
if (!/^[0-9a-f]+$/.test(hex))
|
|
55
|
+
return null;
|
|
56
|
+
if (hex.length < 2 || hex.length > CITATION_MAX_HEX)
|
|
57
|
+
return null;
|
|
58
|
+
return hex;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Assign citation tokens to pack items, unique within the pack.
|
|
62
|
+
* Tokens start at 4 hex chars and lengthen (git-style) only for items
|
|
63
|
+
* that would otherwise collide.
|
|
64
|
+
*/
|
|
65
|
+
export function assignCitationTokens(ids) {
|
|
66
|
+
const normalized = ids.map((id) => id.replace(/-/g, "").toLowerCase());
|
|
67
|
+
let length = CITATION_MIN_HEX;
|
|
68
|
+
for (;;) {
|
|
69
|
+
const seen = new Map();
|
|
70
|
+
for (const n of normalized) {
|
|
71
|
+
const key = n.slice(0, length);
|
|
72
|
+
seen.set(key, (seen.get(key) ?? 0) + 1);
|
|
73
|
+
}
|
|
74
|
+
const unique = [...seen.values()].every((c) => c === 1);
|
|
75
|
+
if (unique || length >= CITATION_MAX_HEX)
|
|
76
|
+
break;
|
|
77
|
+
length += 1;
|
|
78
|
+
}
|
|
79
|
+
const tokens = new Map();
|
|
80
|
+
ids.forEach((id, i) => {
|
|
81
|
+
tokens.set(id, citationTokenForHex(normalized[i].slice(0, length)));
|
|
82
|
+
});
|
|
83
|
+
return tokens;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Render a citation resolution exactly as the `memos cite` CLI prints
|
|
87
|
+
* it (shared so tests assert on the real output bytes).
|
|
88
|
+
*/
|
|
89
|
+
export function formatCitationResolution(resolution, asJson = false) {
|
|
90
|
+
if (asJson) {
|
|
91
|
+
return JSON.stringify(resolution.status === "resolved"
|
|
92
|
+
? {
|
|
93
|
+
status: resolution.status,
|
|
94
|
+
token: resolution.token,
|
|
95
|
+
memory: resolution.memory,
|
|
96
|
+
}
|
|
97
|
+
: resolution.status === "ambiguous"
|
|
98
|
+
? {
|
|
99
|
+
status: resolution.status,
|
|
100
|
+
token: resolution.token,
|
|
101
|
+
candidates: resolution.candidates.map((c) => ({
|
|
102
|
+
id: c.id,
|
|
103
|
+
token: citationToken(c.id),
|
|
104
|
+
content: c.content,
|
|
105
|
+
harness: c.harness ?? "unknown",
|
|
106
|
+
})),
|
|
107
|
+
}
|
|
108
|
+
: { status: resolution.status, token: resolution.token }, null, 2);
|
|
109
|
+
}
|
|
110
|
+
if (resolution.status === "not_found") {
|
|
111
|
+
return `No memory found for citation ${resolution.token}.`;
|
|
112
|
+
}
|
|
113
|
+
if (resolution.status === "ambiguous") {
|
|
114
|
+
const lines = [
|
|
115
|
+
`Citation ${resolution.token} is ambiguous — ${resolution.candidates.length} memories share the prefix:`,
|
|
116
|
+
];
|
|
117
|
+
for (const c of resolution.candidates) {
|
|
118
|
+
lines.push(` ${citationToken(c.id)} ${c.id}`);
|
|
119
|
+
lines.push(` ${oneLine(c.content, 120)}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push(`Use a longer token (more hex chars) to disambiguate.`);
|
|
122
|
+
return lines.join("\n");
|
|
123
|
+
}
|
|
124
|
+
const m = resolution.memory;
|
|
125
|
+
const lines = [
|
|
126
|
+
`${resolution.token} → ${m.id}`,
|
|
127
|
+
``,
|
|
128
|
+
m.content,
|
|
129
|
+
``,
|
|
130
|
+
`Type: ${m.type} Source: ${m.source} Trust: ${m.trustScore}`,
|
|
131
|
+
`Harness: ${m.harness ?? "unknown"}`,
|
|
132
|
+
`Tags: ${m.tags.length > 0 ? m.tags.join(", ") : "(none)"}`,
|
|
133
|
+
`Created: ${new Date(m.createdAt).toISOString()}`,
|
|
134
|
+
`Updated: ${new Date(m.updatedAt).toISOString()}`,
|
|
135
|
+
`Namespace: ${m.namespace}`,
|
|
136
|
+
];
|
|
137
|
+
return lines.join("\n");
|
|
138
|
+
}
|
|
139
|
+
function oneLine(text, max) {
|
|
140
|
+
const flat = text.replace(/\s+/g, " ").trim();
|
|
141
|
+
return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=citations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citations.js","sourceRoot":"","sources":["../src/citations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-browse.d.ts","sourceRoot":"","sources":["../src/cli-browse.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA8CzC,wBAAsB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuG3D"}
|
memos/_js/cli-browse.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// `memos browse` — interactive terminal browser for the local memory store.
|
|
2
|
+
//
|
|
3
|
+
// A dependency-free pager built entirely on existing MemOS APIs
|
|
4
|
+
// (getGraph / search / retrieve / forget) so it stays in sync with the SDK:
|
|
5
|
+
// browse everything, full-text search, inspect a memory's details, and
|
|
6
|
+
// forget entries without leaving the terminal.
|
|
7
|
+
//
|
|
8
|
+
// Console output is the entire UI here, so no-console is disabled file-wide.
|
|
9
|
+
/* eslint-disable no-console */
|
|
10
|
+
import * as readline from "node:readline/promises";
|
|
11
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
12
|
+
const PAGE_SIZE = 10;
|
|
13
|
+
function row(node, index) {
|
|
14
|
+
const content = node.content.length > 56 ? `${node.content.slice(0, 53)}...` : node.content;
|
|
15
|
+
return ` ${(index + 1).toString().padStart(3)} [${node.type}] ${node.id.slice(0, 8)} — ${content}`;
|
|
16
|
+
}
|
|
17
|
+
async function currentList(memos, query) {
|
|
18
|
+
if (query) {
|
|
19
|
+
const scored = await memos.search(query);
|
|
20
|
+
return scored.map((s) => s.node);
|
|
21
|
+
}
|
|
22
|
+
const graph = await memos.getGraph();
|
|
23
|
+
return graph.nodes;
|
|
24
|
+
}
|
|
25
|
+
function printPage(nodes, page, pages, query) {
|
|
26
|
+
console.log("\x1B[2J\x1B[H"); // clear screen, move cursor home
|
|
27
|
+
const title = query ? `search: "${query}"` : "all memories";
|
|
28
|
+
console.log(`MemOS browse — ${title} (${nodes.length})`);
|
|
29
|
+
console.log("");
|
|
30
|
+
if (nodes.length === 0) {
|
|
31
|
+
console.log(" (nothing to show)");
|
|
32
|
+
}
|
|
33
|
+
for (let i = page * PAGE_SIZE; i < Math.min((page + 1) * PAGE_SIZE, nodes.length); i++) {
|
|
34
|
+
console.log(row(nodes[i], i));
|
|
35
|
+
}
|
|
36
|
+
console.log("");
|
|
37
|
+
console.log(` page ${page + 1}/${pages} · <n> detail · n next · p prev · s <query> search · s clears · f <n> forget · q quit`);
|
|
38
|
+
}
|
|
39
|
+
export async function runBrowse(memos) {
|
|
40
|
+
const rl = readline.createInterface({ input, output });
|
|
41
|
+
let query = "";
|
|
42
|
+
let page = 0;
|
|
43
|
+
try {
|
|
44
|
+
while (true) {
|
|
45
|
+
let nodes = [];
|
|
46
|
+
try {
|
|
47
|
+
nodes = await currentList(memos, query);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.log(` search failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
const pages = Math.max(1, Math.ceil(nodes.length / PAGE_SIZE));
|
|
53
|
+
if (page >= pages)
|
|
54
|
+
page = pages - 1;
|
|
55
|
+
printPage(nodes, page, pages, query);
|
|
56
|
+
const answer = (await rl.question("browse> ")).trim();
|
|
57
|
+
if (!answer)
|
|
58
|
+
continue;
|
|
59
|
+
if (answer === "q" || answer === "quit" || answer === "exit") {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
if (answer === "n" || answer === "next") {
|
|
63
|
+
page = Math.min(page + 1, pages - 1);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (answer === "p" || answer === "prev") {
|
|
67
|
+
page = Math.max(page - 1, 0);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (answer === "s") {
|
|
71
|
+
query = "";
|
|
72
|
+
page = 0;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (answer.startsWith("s ")) {
|
|
76
|
+
query = answer.slice(2).trim();
|
|
77
|
+
page = 0;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (answer.startsWith("f ")) {
|
|
81
|
+
const index = Number.parseInt(answer.slice(2), 10);
|
|
82
|
+
const node = Number.isInteger(index) ? nodes[index - 1] : undefined;
|
|
83
|
+
if (!node) {
|
|
84
|
+
console.log(" no such row — pick a number from the list");
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const confirmed = (await rl.question(` forget ${node.id.slice(0, 8)} "${node.content.slice(0, 40)}"? (y/N) `))
|
|
88
|
+
.trim()
|
|
89
|
+
.toLowerCase();
|
|
90
|
+
if (confirmed === "y" || confirmed === "yes") {
|
|
91
|
+
await memos.forget(node.id);
|
|
92
|
+
console.log(" forgotten.");
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(" kept.");
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const index = Number.parseInt(answer, 10);
|
|
100
|
+
if (Number.isInteger(index)) {
|
|
101
|
+
const node = nodes[index - 1];
|
|
102
|
+
if (!node) {
|
|
103
|
+
console.log(" no such row");
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const full = (await memos.retrieve(node.id)) ?? node;
|
|
107
|
+
console.log("\x1B[2J\x1B[H");
|
|
108
|
+
console.log(`id ${full.id}`);
|
|
109
|
+
console.log(`type ${full.type}`);
|
|
110
|
+
console.log(`created ${"createdAt" in full ? String(full.createdAt) : "—"}`);
|
|
111
|
+
const tags = "tags" in full && Array.isArray(full.tags)
|
|
112
|
+
? full.tags.join(", ")
|
|
113
|
+
: "";
|
|
114
|
+
if (tags)
|
|
115
|
+
console.log(`tags ${tags}`);
|
|
116
|
+
console.log("");
|
|
117
|
+
console.log(full.content);
|
|
118
|
+
console.log("");
|
|
119
|
+
await rl.question(" (enter to go back) ");
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
console.log(" ? — try a row number, n, p, s <query>, f <n>, or q");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
rl.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=cli-browse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-browse.js","sourceRoot":"","sources":["../src/cli-browse.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,gEAAgE;AAChE,4EAA4E;AAC5E,uEAAuE;AACvE,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,+BAA+B;AAE/B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAKhE,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,SAAS,GAAG,CAAC,IAAgB,EAAE,KAAa;IAC1C,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9E,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;AACvG,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAY,EAAE,KAAa;IACpD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AAED,SAAS,SAAS,CAChB,KAAmB,EACnB,IAAY,EACZ,KAAa,EACb,KAAa;IAEb,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,iCAAiC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IACD,KACE,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EACxB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAClD,CAAC,EAAE,EACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,uFAAuF,CACnH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAY;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,KAAK,GAAiB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CACT,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;YAC/D,IAAI,IAAI,IAAI,KAAK;gBAAE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACpC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7D,MAAM;YACR,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,KAAK,GAAG,EAAE,CAAC;gBACX,IAAI,GAAG,CAAC,CAAC;gBACT,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,CAAC;gBACT,SAAS;YACX,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,GAAG,CAChB,MAAM,EAAE,CAAC,QAAQ,CACf,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CACzE,CACF;qBACE,IAAI,EAAE;qBACN,WAAW,EAAE,CAAC;gBACjB,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;oBAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CACT,cAAc,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CACnE,CAAC;gBACF,MAAM,IAAI,GACR,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtB,CAAC,CAAC,EAAE,CAAC;gBACT,IAAI,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell completion for the `memos` CLI.
|
|
3
|
+
*
|
|
4
|
+
* `memos completion <bash|zsh|fish>` prints a completion script to stdout.
|
|
5
|
+
* The scripts are generated from the canonical command list in
|
|
6
|
+
* `./cli-help.js` plus the per-command flag table below, so they can never
|
|
7
|
+
* drift out of sync with the CLI itself.
|
|
8
|
+
*
|
|
9
|
+
* Install:
|
|
10
|
+
* # bash
|
|
11
|
+
* memos completion bash >> ~/.bashrc
|
|
12
|
+
* # zsh (needs a dir on your $fpath, e.g. ~/.zfunc)
|
|
13
|
+
* memos completion zsh > ~/.zfunc/_memos
|
|
14
|
+
* # fish
|
|
15
|
+
* memos completion fish > ~/.config/fish/completions/memos.fish
|
|
16
|
+
*
|
|
17
|
+
* @module @memos/cli-completion
|
|
18
|
+
*/
|
|
19
|
+
export type CompletionShell = "bash" | "zsh" | "fish";
|
|
20
|
+
export declare const COMPLETION_SHELLS: readonly CompletionShell[];
|
|
21
|
+
/**
|
|
22
|
+
* Escape a string for embedding in a single-quoted shell string.
|
|
23
|
+
* Both zsh and fish treat backslash as literal inside single quotes, so
|
|
24
|
+
* `\'` does NOT escape — the portable idiom is '\'' (end quote, escaped
|
|
25
|
+
* quote, reopen quote). CodeQL js/incomplete-sanitization flags the
|
|
26
|
+
* backslash form.
|
|
27
|
+
*/
|
|
28
|
+
export declare function shSingleQuoteEscape(s: string): string;
|
|
29
|
+
/** Generate the completion script for a shell, or null for unknown shells. */
|
|
30
|
+
export declare function getCompletionScript(shell: string): string | null;
|
|
31
|
+
//# sourceMappingURL=cli-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-completion.d.ts","sourceRoot":"","sources":["../src/cli-completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAIvD,CAAC;AAoPF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AA8HD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhE"}
|