@wastedcode/memex 0.1.0 → 0.1.2

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 (41) hide show
  1. package/README.md +99 -183
  2. package/dist/cli/client.d.ts +10 -1
  3. package/dist/cli/client.js +12 -2
  4. package/dist/cli/client.js.map +1 -1
  5. package/dist/cli/commands/config.js +10 -5
  6. package/dist/cli/commands/config.js.map +1 -1
  7. package/dist/cli/commands/login.js +14 -6
  8. package/dist/cli/commands/login.js.map +1 -1
  9. package/dist/cli/commands/setup-token.d.ts +2 -0
  10. package/dist/cli/commands/setup-token.js +41 -0
  11. package/dist/cli/commands/setup-token.js.map +1 -0
  12. package/dist/daemon/auth.d.ts +16 -6
  13. package/dist/daemon/auth.js +50 -22
  14. package/dist/daemon/auth.js.map +1 -1
  15. package/dist/daemon/namespace.js +8 -2
  16. package/dist/daemon/namespace.js.map +1 -1
  17. package/dist/daemon/routes.d.ts +5 -1
  18. package/dist/daemon/routes.js +42 -9
  19. package/dist/daemon/routes.js.map +1 -1
  20. package/dist/daemon/runner.js +4 -0
  21. package/dist/daemon/runner.js.map +1 -1
  22. package/dist/daemon/scaffold.d.ts +14 -0
  23. package/dist/daemon/scaffold.js +49 -1
  24. package/dist/daemon/scaffold.js.map +1 -1
  25. package/dist/daemon/server.js +1 -0
  26. package/dist/daemon/server.js.map +1 -1
  27. package/dist/daemon.js +1 -1
  28. package/dist/daemon.js.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/constants.js +1 -1
  32. package/dist/lib/constants.js.map +1 -1
  33. package/dist/lib/errors.js +4 -2
  34. package/dist/lib/errors.js.map +1 -1
  35. package/dist/lib/prompts/ingest.js +8 -1
  36. package/dist/lib/prompts/ingest.js.map +1 -1
  37. package/dist/lib/prompts/wiki.js +13 -3
  38. package/dist/lib/prompts/wiki.js.map +1 -1
  39. package/dist/standalone/memex.mjs +241 -52
  40. package/dist/standalone/memex.mjs.map +4 -4
  41. package/package.json +8 -1
package/README.md CHANGED
@@ -1,20 +1,64 @@
1
1
  # Memex
2
2
 
3
- Isolated, queued `claude -p` runtime for persistent knowledge bases.
3
+ **Stop re-discovering what you already know.** Memex is an LLM runtime that builds and maintains a personal wiki from your raw sources — so the knowledge compounds instead of disappearing into chat history.
4
4
 
5
- Each wiki gets its own filesystem namespace, job queue, and customizable Claude configuration. A privileged daemon handles namespace isolation and process spawning; unprivileged users interact through the `memex` CLI.
5
+ ## The problem
6
6
 
7
- ## Why
7
+ Most people's experience with LLMs and documents looks like RAG: upload files, retrieve chunks, generate an answer, forget everything. Ask the same subtle question tomorrow and the LLM starts from scratch. Nothing accumulates. There's no memory between sessions, no synthesis across sources, no evolving understanding. Your tenth conversation is no smarter than your first.
8
8
 
9
- `claude -p` gives you something the API can't: Claude Code's full file tool suite (Read, Write, Edit, Glob, Grep) running natively against a real filesystem. The wiki IS the filesystem, and Claude operates on it with the same tools a human developer would use.
9
+ ## The idea
10
+
11
+ Instead of retrieving from raw documents at query time, Memex has the LLM **incrementally build and maintain a persistent wiki** — a structured, interlinked collection of markdown files that sits between you and your sources.
12
+
13
+ When you add a new source, the LLM doesn't just index it for later retrieval. It reads it, extracts the key information, and integrates it into the existing wiki — updating entity pages, revising topic summaries, noting where new data contradicts old claims, strengthening the evolving synthesis. The knowledge is compiled once and kept current.
14
+
15
+ **The wiki is a persistent, compounding artifact.** The cross-references are already there. The contradictions have been flagged. The synthesis reflects everything you've ingested. Every source makes the whole richer. Every question you ask can be filed back as a new page, so your explorations compound too.
16
+
17
+ You never write the wiki yourself. You source, explore, and ask questions. The LLM does the summarizing, cross-referencing, filing, and bookkeeping that makes a knowledge base actually useful over time. The tedious part of maintaining a knowledge base isn't the reading or the thinking — it's the bookkeeping. LLMs don't get bored, don't forget to update a cross-reference, and can touch 15 files in one pass.
18
+
19
+ This can apply to anything where you accumulate knowledge over time:
20
+
21
+ - **Research** — reading papers over weeks, building up an evolving synthesis with citations and cross-references
22
+ - **Reading a book** — filing each chapter, building out pages for characters, themes, and plot threads as you go
23
+ - **Business intelligence** — competitive analysis, customer signals, market trends fed from Slack, calls, and reports
24
+ - **Personal** — health, goals, self-improvement, journal entries, podcast notes, building a structured picture of yourself
25
+ - **Learning** — course notes, hobby deep-dives, trip planning, anything you want organized rather than scattered
26
+
27
+ The idea is related in spirit to Vannevar Bush's [Memex](https://en.wikipedia.org/wiki/Memex) (1945) — a personal, curated knowledge store with associative trails between documents. Bush's vision was closer to this than to what the web became: private, actively curated, with the connections between documents as valuable as the documents themselves. The part he couldn't solve was who does the maintenance. The LLM handles that.
28
+
29
+ ## Why Memex
30
+
31
+ **Just files, no RAG.** The wiki is a directory of markdown files. No vector databases, no embeddings, no retrieval pipelines. Claude is already smart enough to grep through files, read what's relevant, and figure out what to update. The simplest architecture that works.
32
+
33
+ **Safe by default.** Each wiki runs in its own Linux mount namespace — Claude can only see `/workspace`, not your home directory, not other wikis, not the host filesystem. No Docker required. Tool access is restricted to file operations (Read, Write, Edit, Glob, Grep) unless you explicitly opt in to more.
34
+
35
+ **CLI-first.** Everything is a single command: `memex ingest`, `memex query`, `memex lint`. Runs from your existing Claude machine. No web UI to host, no API keys to juggle beyond what you already have for Claude.
36
+
37
+ **Feed it from anywhere.** Ingest markdown, PDFs, HTML, images, plain text — anything Claude can read. Clip web articles with Obsidian Web Clipper, pipe in Slack exports, drop in meeting transcripts. Add MCP servers to pull directly from Notion, Google Drive, or any app with an API. Local files or remote sources, it all compiles into the same wiki.
10
38
 
11
- The tradeoff is that `claude -p` is single-threaded and process-heavy. Memex compensates with per-wiki queuing and namespace isolation rather than fighting the CLI's concurrency model.
39
+ **Fully yours to shape.** Edit `.claude.md` to change how the LLM thinks about your domain. Whitelist extra tools. Swap models. The prompts, conventions, and filing structure are all configurable the wiki evolves with you, not against a fixed template.
40
+
41
+ ## What Memex does
42
+
43
+ Memex wraps `claude -p` (Claude Code's programmatic mode) into a daemon that gives each wiki its own isolated filesystem, job queue, and configuration. Claude operates on the wiki with the same file tools a developer would use — Read, Write, Edit, Glob, Grep — against a real filesystem of markdown files.
44
+
45
+ Three layers:
46
+
47
+ 1. **Raw sources** — your curated collection of articles, papers, images, data files. Immutable. The LLM reads them but never modifies them.
48
+ 2. **The wiki** — LLM-generated markdown. Summaries, entity pages, concept pages, cross-references, an index. The LLM owns this layer entirely.
49
+ 3. **The schema** — conventions for how the wiki is structured. Co-evolved by you and the LLM over time.
50
+
51
+ Three operations:
52
+
53
+ - **Ingest** — drop a source in, the LLM reads it, writes a summary, updates the index, and touches every related page across the wiki.
54
+ - **Query** — ask a question, the LLM searches the wiki and synthesizes an answer grounded in your accumulated knowledge. Good answers get filed back as new pages.
55
+ - **Lint** — health-check the wiki. Find contradictions, orphan pages, missing cross-references, stale claims. The LLM fixes what it can and flags what needs your judgment.
12
56
 
13
57
  ## Quick start
14
58
 
15
59
  ```bash
16
60
  # Install
17
- npm install -g memex
61
+ npm install -g @wastedcode/memex
18
62
 
19
63
  # Start the daemon (requires CAP_SYS_ADMIN for namespace isolation)
20
64
  sudo memex serve
@@ -25,8 +69,8 @@ memex create my-wiki --name "My Knowledge Base"
25
69
  # Authenticate Claude for this wiki
26
70
  memex login my-wiki
27
71
 
28
- # Ingest a document
29
- memex ingest my-wiki notes.md report.pdf
72
+ # Ingest some sources
73
+ memex ingest my-wiki paper.pdf notes.md article.html
30
74
 
31
75
  # Ask a question
32
76
  memex query my-wiki "What are the key themes across these documents?"
@@ -35,6 +79,26 @@ memex query my-wiki "What are the key themes across these documents?"
35
79
  memex lint my-wiki
36
80
  ```
37
81
 
82
+ ## Commands
83
+
84
+ | Command | Description |
85
+ |---------|-------------|
86
+ | `memex serve` | Start the daemon |
87
+ | `memex create <wiki>` | Create a new wiki |
88
+ | `memex destroy <wiki>` | Destroy a wiki |
89
+ | `memex config <wiki> --edit` | Edit wiki conventions in `$EDITOR` |
90
+ | `memex config <wiki> --set-key` | Set API key |
91
+ | `memex config <wiki> --model opus` | Set default model |
92
+ | `memex login <wiki>` | Authenticate Claude (OAuth) |
93
+ | `memex ingest <wiki> <files...>` | Ingest source documents |
94
+ | `memex query <wiki> "question"` | Ask a question against the wiki |
95
+ | `memex lint <wiki>` | Run wiki health check |
96
+ | `memex logs <wiki>` | View audit log |
97
+ | `memex list` | List all wikis |
98
+ | `memex status <wiki>` | Check job status |
99
+
100
+ Most commands block until complete. Pass `--async` to get a job ID and check status later.
101
+
38
102
  ## How it works
39
103
 
40
104
  ```
@@ -74,128 +138,35 @@ memex lint my-wiki
74
138
  └──────────────────────────────────────────────────────────────┘
75
139
  ```
76
140
 
77
- **Serialize, don't parallelize.** Each wiki's queue processes jobs one at a time. This prevents concurrent writes to the same wiki files. Independent wikis run in parallel.
78
-
79
- **Isolation through namespaces, not containers.** Mount namespaces give you filesystem isolation without Docker's overhead. Claude cannot see the host filesystem, other wikis, or anything outside `/workspace`.
80
-
81
- ## Commands
82
-
83
- | Command | Description |
84
- |---------|-------------|
85
- | `memex serve` | Start the daemon |
86
- | `memex create <wiki> [--name "..."]` | Create a new wiki |
87
- | `memex destroy <wiki> [--keep-data]` | Destroy a wiki |
88
- | `memex config <wiki> --edit` | Open `.claude.md` in `$EDITOR` |
89
- | `memex config <wiki> --set-key` | Set API key for this wiki |
90
- | `memex config <wiki> --model opus` | Set default model |
91
- | `memex login <wiki>` | Authenticate Claude (OAuth) |
92
- | `memex ingest <wiki> <files...>` | Ingest source files into the wiki |
93
- | `memex query <wiki> "question"` | Ask a question against the wiki |
94
- | `memex lint <wiki>` | Run wiki health check |
95
- | `memex logs <wiki> [--tail N]` | View audit log |
96
- | `memex list` | List all wikis |
97
- | `memex status <wiki> [jobId]` | Check job status |
98
-
99
- Most commands block until the job completes. Pass `--async` to get a job ID and check status later.
100
-
101
- ## Architecture
102
-
103
- ### Per-wiki workspace
104
-
105
- Each wiki gets an isolated directory:
106
-
107
- ```
108
- /var/lib/memex/wikis/{wikiId}/
109
- .claude.md # Wiki-specific Claude conventions (user-editable)
110
- .claude/ # Claude credentials (per-wiki, isolated)
111
- .tools/
112
- mcp.json # MCP server configuration (optional)
113
- allowed-tools.txt # Extra tools beyond the base set (optional)
114
- wiki/
115
- _schema.md # Filing conventions — the LLM's institutional memory
116
- _index.md # Table of contents — one-line summary of every page
117
- _log.md # Chronological activity log
118
- raw/ # Immutable source documents (never modified by Claude)
119
- themes/ # (example — categories emerge from content)
120
- customers/
121
- ...
122
- ```
123
-
124
- ### Three layers
141
+ Each wiki's queue processes jobs serially no concurrent writes. Independent wikis run in parallel. Mount namespaces provide filesystem isolation without Docker overhead.
125
142
 
126
- 1. **Raw sources** (`wiki/raw/`) — Immutable. Claude reads from them but never modifies them. Your source of truth.
127
- 2. **The wiki** (`wiki/`) — LLM-generated markdown. Summaries, entity pages, concept pages, cross-references. Claude owns this layer entirely.
128
- 3. **The schema** (`_schema.md`, `.claude.md`) — How the wiki is structured, what conventions to follow. Co-evolved by user and LLM.
129
-
130
- ### Job types
131
-
132
- | Type | What it does | Max turns | Timeout |
133
- |------|-------------|-----------|---------|
134
- | `ingest` | Process raw sources into wiki pages | 25 | 5 min |
135
- | `query` | Search wiki and answer a question | 15 | 2 min |
136
- | `lint` | Health check — find and fix issues | 30 | 10 min |
137
-
138
- ### Auto-lint
139
-
140
- After every 10 ingests (configurable), the daemon automatically queues a lint job. This keeps the wiki healthy as it grows — finding contradictions, orphan pages, missing cross-references, and index drift.
141
-
142
- ## Security
143
-
144
- **Namespace isolation** prevents Claude from accessing files outside the wiki's directory. This is the primary security boundary.
145
-
146
- **Tool restriction** — Only `Read`, `Write`, `Edit`, `Glob`, `Grep` are available by default. No `Bash` (shell escape), no `WebSearch`/`WebFetch` (external calls), no `Agent` (sub-agents). Users can opt into higher-risk tools per-wiki via `.tools/allowed-tools.txt`.
147
-
148
- **Per-wiki credentials** — Each wiki gets its own Claude authentication. Credentials are stored in the wiki's `.claude/` directory, isolated by the mount namespace.
149
-
150
- **Audit log** — Every operation is recorded with the wiki, action, and detail.
151
-
152
- ## Credential setup
143
+ ## Customization
153
144
 
154
- Each wiki needs Claude credentials. Three options:
145
+ ### Wiki conventions (`.claude.md`)
155
146
 
156
- **Copy existing OAuth credentials (recommended):**
157
- ```bash
158
- # Uses ~/.claude/.credentials.json by default
159
- memex login my-wiki
147
+ The most important customization point. This file extends the base system prompt with domain-specific behavior:
160
148
 
161
- # Or specify a path
162
- memex login my-wiki --credentials /path/to/.credentials.json
163
- ```
149
+ ```markdown
150
+ # Wiki Conventions
164
151
 
165
- If you've already run `claude auth login` on this machine, your credentials are at `~/.claude/.credentials.json`. This copies them into the wiki's isolated config directory.
152
+ ## Domain
153
+ This knowledge base tracks competitive intelligence in the SaaS analytics space.
166
154
 
167
- **API key:**
168
- ```bash
169
- memex login my-wiki --api-key sk-ant-...
170
- ```
155
+ ## Filing conventions
156
+ - Organize competitors under competitors/{name}.md
157
+ - Track pricing changes with dates
158
+ - Flag acquisitions and funding rounds prominently
171
159
 
172
- **Global fallback:**
173
- ```bash
174
- # Set on the daemon's environment (e.g. in the systemd unit)
175
- Environment=ANTHROPIC_API_KEY=sk-ant-...
160
+ ## Things to ignore
161
+ - Job postings
162
+ - Social media noise without substance
176
163
  ```
177
164
 
178
- Credentials are checked in order: per-wiki API key > per-wiki OAuth > global `ANTHROPIC_API_KEY` env var on the daemon.
179
-
180
- ## Customization
181
-
182
- ### `.claude.md`
165
+ Edit with `memex config my-wiki --edit`.
183
166
 
184
- The most important customization point. This file is auto-discovered by Claude Code and extends the base system prompt. Use it to define:
167
+ ### MCP servers (`.tools/mcp.json`)
185
168
 
186
- - Domain vocabulary
187
- - Filing conventions specific to your wiki
188
- - Categories and page structures
189
- - What to ignore or deprioritize
190
- - How to handle specific types of content
191
-
192
- ```bash
193
- memex config my-wiki --edit
194
- ```
195
-
196
- ### `.tools/mcp.json`
197
-
198
- Add external data sources via MCP servers:
169
+ Connect external data sources:
199
170
 
200
171
  ```json
201
172
  {
@@ -209,83 +180,28 @@ Add external data sources via MCP servers:
209
180
  }
210
181
  ```
211
182
 
212
- ### `.tools/allowed-tools.txt`
183
+ ### Tool whitelist (`.tools/allowed-tools.txt`)
213
184
 
214
- Extend the tool set beyond the safe defaults:
185
+ By default, Claude only gets safe file tools. Opt into more:
215
186
 
216
187
  ```
217
188
  Bash
218
189
  WebSearch
219
190
  ```
220
191
 
221
- Use with caution — `Bash` gives Claude shell access inside the namespace.
222
-
223
- ## Deployment
224
-
225
- ### systemd (recommended)
226
-
227
- ```bash
228
- sudo cp systemd/memex.service /etc/systemd/system/
229
- sudo systemctl enable --now memex
230
- ```
231
-
232
- The unit file grants `CAP_SYS_ADMIN` via `AmbientCapabilities` and creates the required directories automatically.
233
-
234
- ```bash
235
- # Lifecycle
236
- systemctl start memex # Start the daemon
237
- systemctl stop memex # Graceful shutdown (finishes current job)
238
- systemctl restart memex # Stop + start
239
- journalctl -u memex -f # Tail logs
240
-
241
- # Status
242
- systemctl status memex # Process state, recent log lines
243
- ```
244
-
245
- ### Why `memex serve` blocks
246
-
247
- `memex serve` runs in the foreground deliberately. This is the standard pattern for systemd-managed daemons:
248
-
249
- - **systemd owns the lifecycle** — backgrounding, restarts, boot ordering, and capability grants are its job, not the application's.
250
- - **Logging is automatic** — stdout/stderr go straight to `journalctl`. No log file management needed.
251
- - **Graceful shutdown works** — systemd sends SIGTERM, the daemon finishes the current job, closes the socket, and exits cleanly.
252
- - **`Type=simple`** — systemd tracks the exact PID it spawned. Self-daemonizing (double-fork) breaks this and is a legacy SysV init pattern.
253
-
254
- If you're running without systemd (development, containers), just background it yourself:
255
-
256
- ```bash
257
- sudo memex serve & # Background in shell
258
- sudo memex serve &>/dev/null & # Silent background
259
- ```
260
-
261
- ### Manual
262
-
263
- ```bash
264
- sudo memex serve
265
- ```
266
-
267
- Requires root or `CAP_SYS_ADMIN` for mount namespace creation.
268
-
269
- ## Environment variables
270
-
271
- | Variable | Default | Description |
272
- |----------|---------|-------------|
273
- | `MEMEX_DATA_DIR` | `/var/lib/memex` | Data directory (wikis, database) |
274
- | `MEMEX_RUN_DIR` | `/run/memex` | Runtime directory (socket, namespaces) |
275
- | `MEMEX_SOCKET_PATH` | `/run/memex/memex.sock` | Unix socket path |
276
- | `ANTHROPIC_API_KEY` | — | Global fallback API key |
277
-
278
192
  ## Requirements
279
193
 
280
194
  - Node.js >= 20
281
- - Linux with mount namespace support (`unshare`, `nsenter` from util-linux)
195
+ - Linux with mount namespace support
282
196
  - `CAP_SYS_ADMIN` capability (or root)
283
197
  - `claude` CLI installed and in `$PATH`
284
198
 
285
- ## The idea
199
+ ## Documentation
286
200
 
287
- Related in spirit to Vannevar Bush's Memex (1945) — a personal, curated knowledge store with associative trails between documents. The part Bush couldn't solve was who does the maintenance. The LLM handles that.
201
+ - **[Architecture](docs/architecture.md)**design principles, components, data flow, filesystem layout
202
+ - **[Operations](docs/operations.md)** — installation, deployment, wiki lifecycle, debugging
203
+ - **[Prompt design](docs/prompts.md)** — how the system prompt, job prompts, and conventions work together
288
204
 
289
- Most people's experience with LLMs and documents is RAG: retrieve chunks, generate answers, forget everything. Nothing compounds. Memex is different — the LLM incrementally builds and maintains a persistent wiki. The cross-references are already there. The contradictions have been flagged. The synthesis reflects everything ingested. Every source makes the whole richer.
205
+ ## License
290
206
 
291
- You never write the wiki yourself. You source, explore, and ask questions. The LLM does the summarizing, cross-referencing, filing, and bookkeeping that makes a knowledge base actually useful over time.
207
+ MIT
@@ -16,11 +16,20 @@ export declare class MemexClient {
16
16
  destroyWiki(id: string, keepData?: boolean): Promise<ApiResponse<unknown>>;
17
17
  updateConfig(wikiId: string, config: WikiConfig): Promise<ApiResponse<Wiki>>;
18
18
  chownWiki(wikiId: string, uid: number): Promise<ApiResponse<Wiki>>;
19
- setApiKey(wikiId: string, key: string): Promise<ApiResponse<unknown>>;
19
+ setGlobalToken(token: string): Promise<ApiResponse<unknown>>;
20
+ setWikiToken(wikiId: string, token: string): Promise<ApiResponse<unknown>>;
20
21
  setCredentials(wikiId: string, credentials: string): Promise<ApiResponse<unknown>>;
21
22
  submitJob(wikiId: string, type: JobType, payload: object, wait?: boolean): Promise<ApiResponse<QueueJob>>;
22
23
  getJob(wikiId: string, jobId: number): Promise<ApiResponse<QueueJob>>;
23
24
  listJobs(wikiId: string): Promise<ApiResponse<QueueJob[]>>;
25
+ listFiles(wikiId: string, prefix?: string): Promise<ApiResponse<{
26
+ path: string;
27
+ type: "file" | "directory";
28
+ }[]>>;
29
+ readFile(wikiId: string, filePath: string): Promise<ApiResponse<{
30
+ path: string;
31
+ content: string;
32
+ }>>;
24
33
  getAuditLog(wikiId: string, limit?: number): Promise<ApiResponse<AuditEntry[]>>;
25
34
  /**
26
35
  * Upload a local file to the daemon for ingestion into a wiki's raw/ directory.
@@ -127,8 +127,11 @@ export class MemexClient {
127
127
  chownWiki(wikiId, uid) {
128
128
  return this.request('POST', `/wikis/${wikiId}/chown`, { uid });
129
129
  }
130
- setApiKey(wikiId, key) {
131
- return this.request('POST', `/wikis/${wikiId}/api-key`, { key });
130
+ setGlobalToken(token) {
131
+ return this.request('POST', '/auth/token', { token });
132
+ }
133
+ setWikiToken(wikiId, token) {
134
+ return this.request('POST', `/wikis/${wikiId}/token`, { token });
132
135
  }
133
136
  setCredentials(wikiId, credentials) {
134
137
  return this.request('POST', `/wikis/${wikiId}/credentials`, { credentials });
@@ -143,6 +146,13 @@ export class MemexClient {
143
146
  listJobs(wikiId) {
144
147
  return this.request('GET', `/wikis/${wikiId}/jobs`);
145
148
  }
149
+ listFiles(wikiId, prefix) {
150
+ const path = `/wikis/${wikiId}/files` + (prefix ? `?prefix=${encodeURIComponent(prefix)}` : '');
151
+ return this.request('GET', path);
152
+ }
153
+ readFile(wikiId, filePath) {
154
+ return this.request('GET', `/wikis/${wikiId}/files/${filePath}`);
155
+ }
146
156
  getAuditLog(wikiId, limit) {
147
157
  const path = `/wikis/${wikiId}/logs` + (limit ? `?limit=${limit}` : '');
148
158
  return this.request('GET', path);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export const configCommand = new Command('config')
8
8
  .description('Configure a wiki')
9
9
  .argument('<wikiId>', 'Wiki to configure')
10
10
  .option('--edit', 'Open .claude.md in $EDITOR')
11
- .option('--set-key', 'Set the API key for this wiki')
11
+ .option('--set-token', 'Set an OAuth token for this wiki (from `claude setup-token`)')
12
12
  .option('--model <model>', 'Set the default model (e.g., sonnet, opus, haiku)')
13
13
  .option('--allowed-tools <tools>', 'Set allowed tools (comma-separated, e.g., WebSearch,WebFetch)')
14
14
  .option('--list-tools', 'Show available tools and current configuration')
@@ -33,14 +33,19 @@ export const configCommand = new Command('config')
33
33
  }
34
34
  return;
35
35
  }
36
- if (opts.setKey) {
37
- const key = await promptSecret('API key: ');
38
- const resp = await client.setApiKey(wikiId, key);
36
+ if (opts.setToken) {
37
+ const token = await promptSecret('OAuth token (from `claude setup-token`): ');
38
+ if (!token.startsWith('sk-ant-oat01-')) {
39
+ console.error(`Error: Token must start with 'sk-ant-oat01-'.`);
40
+ console.error(`\nGenerate one by running: claude setup-token`);
41
+ process.exit(1);
42
+ }
43
+ const resp = await client.setWikiToken(wikiId, token);
39
44
  if (!resp.ok) {
40
45
  console.error(`Error: ${resp.error}`);
41
46
  process.exit(1);
42
47
  }
43
- console.log(`API key set for '${wikiId}'`);
48
+ console.log(`OAuth token set for '${wikiId}'`);
44
49
  return;
45
50
  }
46
51
  if (opts.listTools) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export const loginCommand = new Command('login')
8
8
  .description('Copy Claude credentials into a wiki')
9
9
  .argument('<wikiId>', 'Wiki to authenticate')
10
10
  .option('--credentials <path>', 'Path to .credentials.json', DEFAULT_CREDS_PATH)
11
- .option('--api-key <key>', 'Use an API key instead of OAuth credentials')
11
+ .option('--token <token>', 'Use an OAuth token from `claude setup-token`')
12
12
  .action(async (wikiId, opts) => {
13
13
  const client = new MemexClient();
14
14
  const wikiResp = await client.getWiki(wikiId);
@@ -16,21 +16,29 @@ export const loginCommand = new Command('login')
16
16
  console.error(`Error: ${wikiResp.error}`);
17
17
  process.exit(1);
18
18
  }
19
- // API key mode
20
- if (opts.apiKey) {
21
- const resp = await client.setApiKey(wikiId, opts.apiKey);
19
+ // OAuth token mode
20
+ if (opts.token) {
21
+ if (!opts.token.startsWith('sk-ant-oat01-')) {
22
+ console.error(`Error: Token must start with 'sk-ant-oat01-'.`);
23
+ console.error(`\nGenerate one by running: claude setup-token`);
24
+ process.exit(1);
25
+ }
26
+ const resp = await client.setWikiToken(wikiId, opts.token);
22
27
  if (!resp.ok) {
23
28
  console.error(`Error: ${resp.error}`);
24
29
  process.exit(1);
25
30
  }
26
- console.log(`API key stored for wiki '${wikiId}'.`);
31
+ console.log(`OAuth token stored for wiki '${wikiId}'.`);
27
32
  return;
28
33
  }
29
34
  // Credentials file mode (default)
30
35
  const credsPath = opts.credentials;
31
36
  if (!existsSync(credsPath)) {
32
37
  console.error(`Error: Credentials file not found: ${credsPath}`);
33
- console.error(`\nRun 'claude auth login' first, or pass --credentials <path>`);
38
+ console.error(`\nOptions:`);
39
+ console.error(` 1. Run 'claude auth login' first, then re-run this command`);
40
+ console.error(` 2. Run 'claude setup-token' and use: memex login ${wikiId} --token <token>`);
41
+ console.error(` 3. Set globally: memex setup-token <token>`);
34
42
  process.exit(1);
35
43
  }
36
44
  const credentials = readFileSync(credsPath, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC5C,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAA8C,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,eAAe;IACf,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,IAAI,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,oBAAoB,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,aAAa,MAAM,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const setupTokenCommand: Command;
@@ -0,0 +1,41 @@
1
+ import { Command } from 'commander';
2
+ import { MemexClient } from '../client.js';
3
+ const TOKEN_PREFIX = 'sk-ant-oat01-';
4
+ export const setupTokenCommand = new Command('setup-token')
5
+ .description('Store a long-lived OAuth token from `claude setup-token` for all wikis')
6
+ .argument('<token>', 'OAuth token (sk-ant-oat01-...)')
7
+ .option('--wiki <wikiId>', 'Store for a specific wiki only (instead of globally)')
8
+ .action(async (token, opts) => {
9
+ // Validate token format
10
+ if (!token.startsWith(TOKEN_PREFIX)) {
11
+ console.error(`Error: Token must start with '${TOKEN_PREFIX}'.`);
12
+ console.error(`\nGenerate one by running: claude setup-token`);
13
+ process.exit(1);
14
+ }
15
+ const client = new MemexClient();
16
+ if (opts.wiki) {
17
+ // Per-wiki token
18
+ const wikiResp = await client.getWiki(opts.wiki);
19
+ if (!wikiResp.ok) {
20
+ console.error(`Error: ${wikiResp.error}`);
21
+ process.exit(1);
22
+ }
23
+ const resp = await client.setWikiToken(opts.wiki, token);
24
+ if (!resp.ok) {
25
+ console.error(`Error: ${resp.error}`);
26
+ process.exit(1);
27
+ }
28
+ console.log(`OAuth token stored for wiki '${opts.wiki}'.`);
29
+ }
30
+ else {
31
+ // Global token
32
+ const resp = await client.setGlobalToken(token);
33
+ if (!resp.ok) {
34
+ console.error(`Error: ${resp.error}`);
35
+ process.exit(1);
36
+ }
37
+ console.log('Global OAuth token stored.');
38
+ console.log('All wikis without per-wiki credentials will use this token.');
39
+ }
40
+ });
41
+ //# sourceMappingURL=setup-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-token.js","sourceRoot":"","sources":["../../../src/cli/commands/setup-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,YAAY,GAAG,eAAe,CAAC;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACxD,WAAW,CAAC,wEAAwE,CAAC;KACrF,QAAQ,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACrD,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAuB,EAAE,EAAE;IACvD,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,iCAAiC,YAAY,IAAI,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,iBAAiB;QACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,eAAe;QACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC,CAAC"}