graphstore-cli
Advanced tools
+5
-1
@@ -132,3 +132,7 @@ #!/usr/bin/env node | ||
| data.command("edge-list").option("--src <id>").option("--dst <id>").option("--rel <rel>").action(async (o) => print(await request("/v1/edges?" + new URLSearchParams(Object.fromEntries(Object.entries(o).filter(([, v]) => v)))), { json: p.opts().json })); | ||
| data.command("search <text>").description("Full-text search node bodies and properties").action(async (text) => print(await request("/v1/search?" + new URLSearchParams({ q: text })), { json: p.opts().json })); | ||
| data.command("search <text>").description("Hybrid lexical and semantic search").option("--mode <mode>", "hybrid, lexical, or semantic", "hybrid").option("--type <type>", "filter to one node type").option("--limit <n>", "maximum results", "50").action(async (text, o) => print(await request("/v1/search?" + new URLSearchParams(Object.fromEntries(Object.entries({ q: text, mode: o.mode, type: o.type, limit: o.limit }).filter(([, v]) => v)))), { json: p.opts().json })); | ||
| data.command("semantic-types").description("List node types enabled for semantic embeddings").action(async () => print(await request("/v1/semantic/types"), { json: p.opts().json })); | ||
| data.command("semantic-enable <type>").description("Enable and backfill Vectorize embeddings for a text-rich node type").action(async (type) => print(await request("/v1/semantic/types", { method: "POST", body: { type } }), { json: p.opts().json })); | ||
| data.command("semantic-disable <type>").description("Disable a node type and remove its vectors").action(async (type) => print(await request(`/v1/semantic/types/${encodeURIComponent(type)}`, { method: "DELETE" }), { json: p.opts().json })); | ||
| data.command("semantic-reindex").description("Rebuild embeddings after an interrupted write or migration").option("--type <type>").action(async (o) => print(await request("/v1/semantic/reindex", { method: "POST", body: { type: o.type } }), { json: p.opts().json })); | ||
| data.command("index-list").action(async () => print(await request("/v1/indexes"), { json: p.opts().json })); | ||
@@ -135,0 +139,0 @@ data.command("index-create <path>").option("--type <type>", "text, number, integer, or boolean", "text").action(async (path, o) => print(await request("/v1/indexes", { method: "POST", body: { path, type: o.type } }), { json: p.opts().json })); |
+1
-1
| { | ||
| "name": "graphstore-cli", | ||
| "version": "0.1.4", | ||
| "version": "0.1.5", | ||
| "description": "CLI for the Graphstore agent-first graph database", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+9
-0
@@ -26,1 +26,10 @@ # graphstore-cli | ||
| ``` | ||
| Hybrid search combines SQLite FTS5 with optional Cloudflare Vectorize embeddings. Enable embeddings only for text-rich node types: | ||
| ```bash | ||
| gs data semantic-enable observation | ||
| gs data search "what did we decide about backups?" --mode hybrid --type observation | ||
| ``` | ||
| Graph exports and backups store the semantic type allowlist, not derived vectors. Restore regenerates embeddings from restored nodes. |
17694
9.94%188
2.73%35
34.62%