@dahch/muninn 0.1.0 → 0.2.0

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 (50) hide show
  1. package/README.md +260 -17
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +18 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/memory.d.ts.map +1 -1
  7. package/dist/commands/memory.js +52 -3
  8. package/dist/commands/memory.js.map +1 -1
  9. package/dist/commands/setup.d.ts +3 -0
  10. package/dist/commands/setup.d.ts.map +1 -0
  11. package/dist/commands/setup.js +397 -0
  12. package/dist/commands/setup.js.map +1 -0
  13. package/dist/db/client.d.ts +17 -1
  14. package/dist/db/client.d.ts.map +1 -1
  15. package/dist/db/client.js +54 -0
  16. package/dist/db/client.js.map +1 -1
  17. package/dist/db/schema.sql +2 -0
  18. package/dist/mcp/server.d.ts +27 -6
  19. package/dist/mcp/server.d.ts.map +1 -1
  20. package/dist/mcp/server.js +156 -15
  21. package/dist/mcp/server.js.map +1 -1
  22. package/dist/service/memory-service.d.ts +121 -4
  23. package/dist/service/memory-service.d.ts.map +1 -1
  24. package/dist/service/memory-service.js +665 -45
  25. package/dist/service/memory-service.js.map +1 -1
  26. package/dist/setup/index.d.ts +6 -0
  27. package/dist/setup/index.d.ts.map +1 -0
  28. package/dist/setup/index.js +6 -0
  29. package/dist/setup/index.js.map +1 -0
  30. package/dist/setup/json-target.d.ts +30 -0
  31. package/dist/setup/json-target.d.ts.map +1 -0
  32. package/dist/setup/json-target.js +263 -0
  33. package/dist/setup/json-target.js.map +1 -0
  34. package/dist/setup/portable.d.ts +56 -0
  35. package/dist/setup/portable.d.ts.map +1 -0
  36. package/dist/setup/portable.js +365 -0
  37. package/dist/setup/portable.js.map +1 -0
  38. package/dist/setup/registry.d.ts +54 -0
  39. package/dist/setup/registry.d.ts.map +1 -0
  40. package/dist/setup/registry.js +225 -0
  41. package/dist/setup/registry.js.map +1 -0
  42. package/dist/setup/rules-target.d.ts +31 -0
  43. package/dist/setup/rules-target.d.ts.map +1 -0
  44. package/dist/setup/rules-target.js +270 -0
  45. package/dist/setup/rules-target.js.map +1 -0
  46. package/dist/setup/toml-target.d.ts +62 -0
  47. package/dist/setup/toml-target.d.ts.map +1 -0
  48. package/dist/setup/toml-target.js +869 -0
  49. package/dist/setup/toml-target.js.map +1 -0
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -10,22 +10,48 @@ engine as a plain Node/Bun library and a CLI.
10
10
  It used to live inside [Huginn](https://github.com/dahch/huginn); it is now an independent
11
11
  package with no dependency on the orchestrator.
12
12
 
13
- ## What it gives you
13
+ ## Overview
14
14
 
15
15
  - **Observations with categories** — `decision`, `convention`, `discovery`, `bugfix`,
16
16
  `architecture` — searchable with SQLite **FTS5 + BM25** ranking.
17
+ - **Decision supersession** — saving a decision with `supersedesTopicKey` atomically marks the
18
+ project's active decisions with that topic key as `superseded`, linking each to its replacement.
19
+ Search and context hide superseded observations by default; pass `includeSuperseded` to see them.
20
+ - **Read-only session brief** — the library, MCP `muninn_bootstrap` tool, and
21
+ `muninn memory brief` render the same deterministic Markdown view of project identity, active
22
+ decisions, recent activity, path-selected indexed symbols, related graph neighbors, and counts.
23
+ Bootstrap reads an existing database without DDL or project insertion and fails open when memory
24
+ is missing or unusable.
17
25
  - **A symbol graph** — the TypeScript Compiler API extracts files, functions, classes,
18
- interfaces and modules from your sources, plus the `imports`/`calls`/`extends`/`implements`/
19
- `references` edges between them, and links observations to symbols.
26
+ interfaces and modules from your sources, plus the `imports`/`extends`/`implements`/
27
+ `references` edges between them, and links observations to symbols. The schema also reserves a
28
+ `calls` relation, but the current indexer does not emit call edges.
29
+ - **Graph-aware recovery** — `MemoryService.neighbors` traverses stored dependency edges in both
30
+ directions, grouped by relation and direction, with deduplication, cycle protection, depth at most
31
+ 2 (default 1), and at most 50 neighbors (default 20). Briefs expand these neighbors by default,
32
+ and `muninn_inspect_symbol` adds a bounded depth-1 traversal.
20
33
  - **MCP tools** for agents: `muninn_context`, `muninn_save`, `muninn_search`,
21
- `muninn_link_symbol`, `muninn_inspect_symbol`, `muninn_verify_contract`, `muninn_stats`.
34
+ `muninn_link_symbol`, `muninn_inspect_symbol`, `muninn_verify_contract`, `muninn_stats`,
35
+ `muninn_bootstrap`.
22
36
  - **Contract verification** — the same TypeScript execution-contract check as a CLI command
23
37
  (`muninn check`) and as the `muninn_verify_contract` MCP tool.
24
38
  - **JSONL sync** — export/import the whole memory as portable line-delimited JSON.
39
+ - **Agent setup** — `muninn setup` lists the supported agent catalog and installs a `muninn` MCP
40
+ entry into standard `mcpServers`, OpenCode `mcp`, and Codex TOML configurations, plus the
41
+ project-agnostic portable file at `{home}/.muninn/mcp.json`. It supports `--agent`, `--project`,
42
+ `--list`, `--status`, `--dry-run`, `--force`, `--home`, and `--no-rules`, preserves unrelated
43
+ configuration, and never modifies the legacy Huginn file. Codex TOML is merged safely, and selected
44
+ agents receive an idempotent marked rules block with legacy-block detection.
25
45
  - **Local-first and self-contained** — no embeddings, no network, no server: one SQLite file
26
46
  and one process.
27
47
 
28
- ## Install
48
+ ## Prerequisites
49
+
50
+ - Node.js 20 or newer (the published package also runs under Bun)
51
+ - A C/C++ toolchain for `better-sqlite3`'s native module when a prebuilt binary is unavailable
52
+ - Git only if you want repository discovery and sanitized remote metadata; Muninn works outside a repository
53
+
54
+ ## Getting Started
29
55
 
30
56
  ```sh
31
57
  npm install -g @dahch/muninn # CLI + MCP server
@@ -33,7 +59,13 @@ npm install -g @dahch/muninn # CLI + MCP server
33
59
  npm install @dahch/muninn
34
60
  ```
35
61
 
36
- Requires Node.js >= 20 (or Bun).
62
+ From a checkout, install the locked dependencies and initialize memory for this repository:
63
+
64
+ ```sh
65
+ npm ci
66
+ npm run build
67
+ node dist/cli.js memory init --project .
68
+ ```
37
69
 
38
70
  ## CLI
39
71
 
@@ -42,10 +74,14 @@ muninn memory init [--db <path>] [--project <path>]
42
74
  muninn memory search <query> [--category <cat>] [--limit <n>] [--project <path>]
43
75
  muninn memory sync [--import] [--file <path>] [--project <path>]
44
76
  muninn memory index [files...] [--project <path>] [--db <path>]
77
+ muninn memory brief [--project <path>] [--paths a,b] [--budget <n>] [--db <path>]
45
78
 
46
79
  muninn check [files...] [--project <path>]
47
80
 
48
81
  muninn mcp run [--db <path>] [--project <path>]
82
+
83
+ muninn setup [--list] [--agent <id|all|id,id>] [--project <path>] [--home <path>]
84
+ [--portable|--no-portable] [--no-rules] [--force] [--dry-run] [--status]
49
85
  ```
50
86
 
51
87
  The database resolves to `<git-root>/.huginn/muninn.db` inside a repository and to
@@ -53,6 +89,14 @@ The database resolves to `<git-root>/.huginn/muninn.db` inside a repository and
53
89
  Both the database file and the project record are resolved from the **same** root, so
54
90
  `--project X` can never write into another project's database.
55
91
 
92
+ `muninn memory brief` is read-only. `--paths` accepts up to 20 comma-separated files or directories
93
+ (relative to the project root, or absolute inside it) and selects only indexed symbols. `--budget`
94
+ limits the complete Markdown output to a positive integer no greater than 20,000 characters; the
95
+ default is 8,000. Briefs expand dependency neighbors by default; `getSessionBrief({ expandGraph:
96
+ false })` and MCP `expandGraph` / `expand_graph` disable that section. If the selected symbols have no
97
+ stored dependencies, the section is omitted and a note explains why. A missing, inaccessible, or
98
+ corrupt database yields an empty brief with an explanatory note instead of being created or repaired.
99
+
56
100
  ## MCP
57
101
 
58
102
  Register Muninn with any MCP-capable agent. For example, a Claude Code / Codex / Cursor config
@@ -70,12 +114,113 @@ Register Muninn with any MCP-capable agent. For example, a Claude Code / Codex /
70
114
  ```
71
115
 
72
116
  OpenCode uses the same shape under the `mcp` key with `"type": "local"` and a `command` array.
73
- Huginn's `huginn setup` writes this for you in every runtime it knows about.
74
117
 
75
118
  ```sh
76
119
  muninn mcp run --project .
77
120
  ```
78
121
 
122
+ `muninn setup --list` shows every supported destination and where its configuration lives. With
123
+ `--agent`, setup merges the `muninn` entry into the selected destinations (JSON or Codex TOML), installs
124
+ marked usage rules unless `--no-rules` is given, and includes the portable file unless `--no-portable`
125
+ is given; `--project` supplies the absolute project path used by project-contained configuration files
126
+ and rules. Codex TOML merging is supported with safe atomic writes and read-only diagnostics.
127
+
128
+ The `muninn_save` tool accepts `supersedesTopicKey` / `supersedes_topic_key`, and
129
+ `muninn_search` / `muninn_context` accept `includeSuperseded` / `include_superseded`. Existing
130
+ calls keep working: replacement is opt-in and retrieval excludes superseded observations by
131
+ default.
132
+
133
+ `muninn_bootstrap` optionally accepts `paths` (at most 20), `budgetChars` / `budget_chars`
134
+ (default 8,000, maximum 20,000), and `expandGraph` / `expand_graph` (default `true`, disabling the
135
+ related-symbol expansion). It returns the shared service-rendered Markdown directly, not a JSON
136
+ wrapper, and does not create or initialize a database when called on a default server.
137
+
138
+ ## Agent Setup
139
+
140
+ `muninn setup` manages the portable destination `{home}/.muninn/mcp.json` and the JSON- and
141
+ TOML-format agent destinations in the catalog.
142
+
143
+ ```sh
144
+ muninn setup --list # print the catalog without writing
145
+ muninn setup # write/merge the portable entry
146
+ muninn setup --agent cursor,pi --project . # configure selected agents + portable
147
+ muninn setup --agent all --project . # every catalog destination + portable
148
+ muninn setup --agent opencode --no-portable # only the selected destination
149
+ muninn setup --agent cursor --no-rules # configure without installing rules
150
+ muninn setup --status --agent claude --project . # selected agents + portable, read-only
151
+ muninn setup --dry-run --agent all --project . # report intended actions without writing
152
+ ```
153
+
154
+ The catalog is `cursor`, `claude`, `opencode`, `devin`, `qwen`, `codex`, `agy`, `kimi`, `pi`,
155
+ `commandcode`, `omp`, `mcode`, and `mimo`. Path templates expand `{project}`, `{home}`, and
156
+ `{opencodeConfigDir}`; `MUNINN_AGENT_<ID>_MCP_PATH` (colon-separated) overrides a target's paths, and
157
+ `HUGINN_AGENT_<ID>_MCP_PATH` is accepted as an equivalent fallback. `MUNINN_OPENCODE_CONFIG_DIR`
158
+ overrides the OpenCode config directory (`HUGINN_OPENCODE_CONFIG_DIR` is the fallback). Project-contained
159
+ config files get `--project <absolute path>`; shared user-level and portable files never pin a project.
160
+
161
+ Standard entries are `{ "command": "muninn", "args": ["mcp", "run"] }` under `mcpServers.muninn`.
162
+ OpenCode uses `{ "type": "local", "command": ["muninn", "mcp", "run"], "enabled": true }` under
163
+ `mcp.muninn`. Setup merges only the Muninn entry, preserves unrelated keys and servers, and leaves the
164
+ legacy `{home}/.huginn/mcp.json` untouched (it only reports it when present).
165
+
166
+ Diagnostic states are `absent`, `registered`, `legacy`, `conflict`, and `malformed`. A conflicting
167
+ entry, or a JSON target whose existing entry still invokes the legacy `huginn` command (`legacy`), is
168
+ skipped without `--force`. For the portable file, `legacy` means the portable config is missing while
169
+ `{home}/.huginn/mcp.json` exists: setup writes the portable entry and only reports the legacy file.
170
+ Malformed JSON, a non-regular file, a final-component symlink, or a protected path fails with exit
171
+ code 1. Writes are atomic, new files use mode `0o600`, new parent directories use `0o700`, and existing
172
+ permissions are preserved. Re-running setup over a correct entry is byte-for-byte idempotent and
173
+ reports `changed: false`. `--list`, `--status`, and `--dry-run` never create or modify files,
174
+ directories, or temporary files.
175
+
176
+ Codex uses a dependency-free TOML writer that merges `[mcp_servers.muninn]`, preserves unrelated
177
+ tables and keys, and applies the same conflict, permission, atomic-write, and symlink rules as JSON
178
+ destinations. A forced replacement can discard comments and formatting inside the replaced Muninn
179
+ region; unrelated content outside it is preserved where feasible. Malformed TOML, including duplicate
180
+ table definitions, is reported with its path and cause, leaves the original untouched, and status
181
+ continues to inspect the remaining destinations before exiting 1.
182
+
183
+ Selected agents also receive a Markdown rules block delimited by `<!-- muninn:rules:start -->` and
184
+ `<!-- muninn:rules:end -->`. It recommends `muninn_bootstrap` at session start, `muninn_search` and
185
+ `muninn_inspect_symbol` before designing a change, and `muninn_verify_contract` before completing code.
186
+ Setup appends the block to an existing rules file, creates the file only when a write is needed, and
187
+ replaces only its own marked block on later runs. Agents that share a rules file (for example the
188
+ various `AGENTS.md` destinations) receive one deduplicated block. Without `--agent`, rules are neither
189
+ read nor written; `--no-rules` suppresses them for an explicit selection.
190
+
191
+ A prior `<!-- huginn:muninn-rules:start -->` block is reported as `stale` and left byte-identical
192
+ without `--force`; with `--force` it is replaced while surrounding prose is preserved. Unmatched,
193
+ duplicate, unterminated, crossed, or nested managed/legacy markers are fatal and leave the file
194
+ untouched. Rules paths use the same containment and symlink checks as MCP configuration, and writes
195
+ preserve existing permissions or use `0o600` for new files. Status reports `absent`, `present`, `stale`,
196
+ or `malformed` per rules file and identifies the selected agents that share it; normal setup and dry-run
197
+ report `written`, `present`, `stale`, or `failed`. A selected agent binary missing from `PATH` produces
198
+ a nonfatal `not installed` warning and does not change the exit code. Targets with no meaningful local
199
+ executable (`cursor`, `devin`) are not probed and never warn.
200
+
201
+ ## Architecture
202
+
203
+ Muninn is one `MemoryService` core with three adapters: the CLI, the MCP stdio server, and the
204
+ library. Storage is a single embedded SQLite database with FTS5. The AST indexer writes through the
205
+ service/database boundary; contract verification is a separate read-only TypeScript pass.
206
+
207
+ ```mermaid
208
+ flowchart LR
209
+ Agent["MCP-capable agent"] -->|stdio JSON-RPC| MCP["MCP server\nmuninn mcp run"]
210
+ CLI["CLI\nmuninn ..."] --> Service["MemoryService"]
211
+ Library["Node/Bun library"] --> Service
212
+ MCP --> Service
213
+ Service --> DB[("SQLite + FTS5\n.huginn/muninn.db")]
214
+ Service <--> JSONL["JSONL export/import\n.huginn/memories.jsonl"]
215
+ Indexer["AST indexer\nTypeScript Compiler API"] --> Service
216
+ CLI --> Verifier["Contract verifier\nTypeScript Compiler API"]
217
+ MCP --> Verifier
218
+ CLI --> Setup["Agent setup\nJSON/TOML catalog + portable"]
219
+ ```
220
+
221
+ See [`DESIGN.md`](./DESIGN.md) for the schema, service transactions, MCP validation pipeline, CLI
222
+ parsing, contract verifier and indexer internals.
223
+
79
224
  ## Library
80
225
 
81
226
  ```ts
@@ -87,53 +232,117 @@ memory.saveObservation({
87
232
  category: "decision",
88
233
  title: "Auth is a port",
89
234
  content: "Tokens are validated behind an AuthPort so the transport can change.",
235
+ topicKey: "auth-boundary",
90
236
  symbols: ["src/auth/port.ts"],
91
237
  });
92
238
 
239
+ // Replaces earlier active decisions with the same topic key in this project.
240
+ memory.saveObservation({
241
+ category: "decision",
242
+ title: "Auth is a middleware boundary",
243
+ content: "Tokens are validated in middleware before any handler runs.",
244
+ topicKey: "auth-boundary",
245
+ supersedesTopicKey: "auth-boundary",
246
+ });
247
+
248
+ // Superseded decisions are hidden unless explicitly requested.
249
+ const history = memory.search({
250
+ query: "token validation",
251
+ includeSuperseded: true,
252
+ });
253
+
93
254
  indexFilesIntoMuninn(memory, ["src/auth/port.ts"], { projectRoot: process.cwd() });
94
255
 
95
256
  for (const hit of memory.search({ query: "token validation", limit: 5 })) {
96
257
  console.log(hit.category, hit.title, hit.rank);
97
258
  }
98
259
 
260
+ // The same bounded Markdown used by the MCP tool and CLI.
261
+ const brief = memory.getSessionBrief({ paths: ["src/auth"], budgetChars: 8000 });
262
+ console.log(brief.markdown);
263
+
264
+ // Bounded, deterministic dependency neighbors (depth max 2, limit max 50).
265
+ const graph = memory.neighbors("src/auth/port.ts::TokenValidator", { depth: 2 });
266
+ console.log(graph?.groups);
267
+
99
268
  memory.close();
100
269
  ```
101
270
 
271
+ For bootstrap without initializing anything, use the standalone read-only entry point:
272
+
273
+ ```ts
274
+ import { readSessionBrief } from "@dahch/muninn";
275
+
276
+ const brief = readSessionBrief({
277
+ projectRoot: process.cwd(),
278
+ paths: ["src/service"],
279
+ budgetChars: 8000,
280
+ });
281
+ console.log(brief.markdown);
282
+ ```
283
+
102
284
  Subpath entry points are available for narrower imports:
103
285
 
104
286
  | Import | Contents |
105
287
  |---|---|
106
288
  | `@dahch/muninn` | everything below |
107
289
  | `@dahch/muninn/db` | SQLite client, schema, path resolution, project records |
108
- | `@dahch/muninn/service` | `MemoryService` (save, search, context, linking, sync, stats) |
290
+ | `@dahch/muninn/service` | `MemoryService` (save, search, context, linking, sync, stats, session brief, graph neighbors) |
109
291
  | `@dahch/muninn/indexer` | AST symbol/dependency extraction and indexing |
110
292
  | `@dahch/muninn/mcp` | MCP server, tool registry, bounded stdio transport |
111
293
  | `@dahch/muninn/contracts` | TypeScript contract verification |
112
294
  | `@dahch/muninn/util` | terminal-text sanitizer |
113
295
 
296
+ ## Environment Variables
297
+
298
+ Muninn has no required environment variables. Configuration is passed as CLI flags or
299
+ `MemoryService` options.
300
+
301
+ | Variable | Type | Default | Purpose |
302
+ |---|---|---|---|
303
+ | `MUNINN_DEBUG` | string (presence is enough) | unset | Emit the `[muninn] mcp run: stdin closed by the client; shutting down.` diagnostic on stderr when the parent closes stdin. |
304
+ | `HUGINN_DEBUG` | string (presence is enough) | unset | Legacy alias for `MUNINN_DEBUG`, retained for Huginn compatibility. |
305
+ | `MUNINN_AGENT_<ID>_MCP_PATH` | string (colon-separated paths) | the catalog paths for that agent | Replace a setup target's MCP configuration paths. `<ID>` is the uppercase agent ID, for example `MUNINN_AGENT_CURSOR_MCP_PATH`; an all-empty override is rejected. |
306
+ | `HUGINN_AGENT_<ID>_MCP_PATH` | string (colon-separated paths) | unset | Legacy fallback for `MUNINN_AGENT_<ID>_MCP_PATH`, retained for Huginn compatibility. |
307
+ | `MUNINN_OPENCODE_CONFIG_DIR` | string (directory path) | `{home}/.config/opencode` | Directory used to expand the OpenCode target's `{opencodeConfigDir}` marker. |
308
+ | `HUGINN_OPENCODE_CONFIG_DIR` | string (directory path) | unset | Legacy fallback for `MUNINN_OPENCODE_CONFIG_DIR`, retained for Huginn compatibility. |
309
+ | `PATH` | string (platform path list) | inherited | Used by `muninn setup --agent` to detect each selected agent's executable for the nonfatal `not installed` warning. |
310
+ | `PATHEXT` | string (semicolon-separated extensions, Windows only) | `.EXE;.CMD;.BAT;.COM` | Windows executable extensions used by the same lookup; ignored on other platforms. |
311
+
114
312
  ## Security notes
115
313
 
314
+ - Session bootstrap opens an existing database read-only. It never creates a directory or file, runs
315
+ DDL/migrations, or inserts a project row; path selections are confined to the project root.
116
316
  - Every path Muninn writes to — the SQLite file and the JSONL export — is screened: a symlink on
117
317
  the final component is refused, and a project-relative path must resolve inside the project, so
118
318
  a repository cannot redirect the write outside itself (the `src/util/path-safety.ts` rule, with
119
319
  the tests in `test/db.test.ts` and `test/service.test.ts`).
120
320
  - The MCP stdio transport is bounded and survives a dead parent instead of crashing or hanging.
121
321
  - MCP tool inputs are validated with zod; unknown tools and bad arguments fail closed.
322
+ - Setup screens its config and legacy paths with the path-safety helper, refuses a final-component
323
+ symlink, merges only the `muninn` entry, and writes through an exclusive temporary file + atomic
324
+ rename. Neither `--status` nor `--dry-run` creates files or directories.
122
325
 
123
- ## Development
124
-
125
- The design of the engine — SQLite/FTS5 schema, service core, MCP server, CLI, contract verifier and
126
- AST indexer — is documented in [`DESIGN.md`](./DESIGN.md), moved here from the orchestrator's design
127
- document when Muninn became its own package.
326
+ ## Available Scripts
128
327
 
129
328
  ```sh
130
- npm ci
329
+ npm run dev # run src/cli.ts directly with Bun
131
330
  npm run build # tsc -> dist/ (+ schema.sql, +x cli.js)
132
- npm test # vitest run (storage, service, indexer, MCP, CLI)
331
+ npm test # vitest run (storage, service, session brief, graph, indexer, MCP, CLI, contracts, setup)
332
+ npm run test:watch # vitest in watch mode
133
333
  npm run typecheck # tsc --noEmit
134
- bun run src/cli.ts memory init --project .
334
+ npm run prepublishOnly # build + test + typecheck (npm lifecycle hook)
335
+ ```
336
+
337
+ Run the built CLI without installing it globally:
338
+
339
+ ```sh
340
+ node dist/cli.js memory init --project .
341
+ node dist/cli.js memory search "auth boundary" --project .
135
342
  ```
136
343
 
344
+ ### Releasing
345
+
137
346
  Publishing is tag-driven, but only once the package exists. The **first** publish is manual, from a
138
347
  logged-in machine, because npm's trusted publishing attaches to a package page that has to exist first:
139
348
 
@@ -146,7 +355,41 @@ After that, configure the trusted publisher on npm (repository `dahch/muninn`, w
146
355
  `publish.yml`) and tagged releases need no token at all: `git tag v0.1.1 && git push origin v0.1.1`
147
356
  runs the workflow, which checks the tag against `package.json`, builds, tests and publishes over
148
357
  OIDC. A run whose version is already on npm skips the publish step and refreshes the GitHub release
149
- instead, so re-tagging to fix a message stays safe.
358
+ instead, so re-tagging to fix a message stays safe. The release job copies the matching version
359
+ section from [`CHANGELOG.md`](./CHANGELOG.md).
360
+
361
+ ## Project Structure
362
+
363
+ ```text
364
+ src/
365
+ cli.ts argument parsing, command routing, process entry point
366
+ commands/ memory (init/search/sync/index/brief), mcp run, check, setup
367
+ db/ SQLite client, schema.sql, path and project resolution
368
+ service/ MemoryService: save, search, context, links, sync, stats, brief, neighbors
369
+ indexer/ TypeScript/JavaScript AST symbol and dependency extraction
370
+ mcp/ MCP server, tool registry, Zod schemas, bounded stdio transport
371
+ contracts/ in-process TypeScript contract verification
372
+ setup/ agent catalog/path resolution, JSON/TOML target merge, marked rules
373
+ install/diagnose, and portable MCP install/diagnose
374
+ util/ terminal-text sanitizer and path-safety helpers
375
+ test/ Vitest integration suites for db, service, session brief, graph, indexer, MCP, CLI, contracts, setup
376
+ ```
377
+
378
+ ## Documentation
379
+
380
+ - [`SPEC.md`](./SPEC.md) — product behaviour, domain model, use cases and constraints.
381
+ - [`DESIGN.md`](./DESIGN.md) — technical design, schema, data flow and internals.
382
+ - [`ADR.md`](./ADR.md) — architecture decision records and their implementation status.
383
+ - [`CHANGELOG.md`](./CHANGELOG.md) — release notes.
384
+ - [`plan.md`](./plan.md) — staged plan for the agent-setup work.
385
+ - [`AGENTS.md`](./AGENTS.md) — repository conventions for coding agents; no `.opencode/agents/` are defined.
386
+
387
+ ## Contributing
388
+
389
+ Keep changes aligned with the current contract: update both `src/db/schema.sql` and the `SCHEMA_SQL`
390
+ fallback in `src/db/client.ts`, add or update a Vitest suite under `test/`, and run
391
+ `npm run build && npm test && npm run typecheck` before opening a pull request. Add a new ADR for a
392
+ new architectural decision instead of rewriting an existing one.
150
393
 
151
394
  ## License
152
395
 
package/dist/cli.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- export declare const VERSION = "0.1.0";
2
+ export declare const VERSION = "0.2.0";
3
3
  export interface ParsedArgs {
4
4
  [key: string]: string | boolean | undefined | string[];
5
5
  _command?: string;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAoBA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAiBD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8BpD;AAED,wBAAgB,KAAK,IAAI,MAAM,CAoB9B;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DxD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqBA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAwBD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8BpD;AAED,wBAAgB,KAAK,IAAI,MAAM,CAwB9B;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoExD"}
package/dist/cli.js CHANGED
@@ -17,7 +17,8 @@ import { realpathSync } from "node:fs";
17
17
  import { fileURLToPath } from "node:url";
18
18
  import { handleMcpCommand, handleMemoryCommand } from "./commands/memory.js";
19
19
  import { handleCheckCommand } from "./commands/check.js";
20
- export const VERSION = "0.1.0";
20
+ import { handleSetupCommand } from "./commands/setup.js";
21
+ export const VERSION = "0.2.0";
21
22
  /**
22
23
  * Flags that never consume the next argv entry as their value. `--import` is the
23
24
  * one that matters in practice: `muninn memory sync --import backup.jsonl` must
@@ -31,6 +32,13 @@ const BOOLEAN_FLAGS = new Set([
31
32
  "--import",
32
33
  "--json",
33
34
  "--quiet",
35
+ "--force",
36
+ "--dry-run",
37
+ "--status",
38
+ "--portable",
39
+ "--no-portable",
40
+ "--no-rules",
41
+ "--list",
34
42
  ]);
35
43
  /**
36
44
  * Parses argv into flags plus positionals.
@@ -79,13 +87,17 @@ Usage:
79
87
  muninn memory search <query> [--category <cat>] [--limit <n>] [--project <path>]
80
88
  muninn memory sync [--import] [--file <path>] [--project <path>]
81
89
  muninn memory index [files...] [--project <path>] [--db <path>]
90
+ muninn memory brief [--project <path>] [--paths a,b] [--budget <n>] [--db <path>]
82
91
  muninn check [files...] [--project <path>]
83
92
  muninn mcp run [--db <path>] [--project <path>]
93
+ muninn setup [--list] [--agent <id|all|id,id>] [--project <path>] [--home <path>]
94
+ [--portable|--no-portable] [--no-rules] [--force] [--dry-run] [--status]
84
95
 
85
96
  Commands:
86
- memory query and manage the persistent codebase memory (init, search, sync, index)
97
+ memory query and manage the persistent codebase memory (init, search, sync, index, brief)
87
98
  mcp start the Muninn MCP server for agent memory integration (run)
88
99
  check verify TypeScript execution contracts and pre-emit diagnostics
100
+ setup list, install, and diagnose Muninn agent and portable MCP configurations
89
101
 
90
102
  Storage:
91
103
  The database resolves to <git-root>/.huginn/muninn.db inside a repository and
@@ -141,6 +153,10 @@ export async function main(argv) {
141
153
  await handleCheckCommand(files, args);
142
154
  return;
143
155
  }
156
+ if (command === "setup") {
157
+ await handleSetupCommand(args);
158
+ return;
159
+ }
144
160
  console.error(`Unknown command: ${command}`);
145
161
  console.log(usage());
146
162
  process.exitCode = 1;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAS/B;;;;GAIG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,WAAW;IACX,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,GAAG,GAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,GAAG,GAAG,CAAC;YACd,IAAI,KAAK,GAAqB,IAAI,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACd,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IACE,IAAI,KAAK,SAAS;oBAClB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtD,CAAC;oBACD,KAAK,GAAG,IAAI,CAAC;oBACb,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,YAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE9B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IACE,OAAO,KAAK,SAAS;QACrB,OAAO,KAAK,MAAM;QAClB,OAAO,KAAK,QAAQ;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI;QACvB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EACnB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,WAAW,GAAI,IAAI,CAAC,YAAqC,IAAI,EAAE,CAAC;QACtE,MAAM,UAAU,GACd,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ;YAChC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBACpC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS,CAAC;QAClB,MAAM,mBAAmB,CACvB,UAAU,EACV,IAAoD,EACpD,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,WAAW,GAAI,IAAI,CAAC,YAAqC,IAAI,EAAE,CAAC;QACtE,MAAM,UAAU,GACd,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ;YAChC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBACpC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS,CAAC;QAClB,MAAM,gBAAgB,CAAC,UAAU,EAAE,IAAoD,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,WAAW,GAAI,IAAI,CAAC,YAAqC,IAAI,EAAE,CAAC;QACtE,MAAM,KAAK,GACT,WAAW,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO;gBACpE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,EAAE,CAAC;QACX,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAoD,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,kBAAkB,CAAC,IAAoD,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,WAAW,EAAE,EAAE,CAAC;IAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACjD,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AA6BA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBrD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAevC;AAED,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAClD,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAkKf;AAsDD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAkCA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBrD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC;AAED,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAClD,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Nf;AAsDD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC,CAoFf"}
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import chalk from "chalk";
4
- import { MemoryService } from "../service/memory-service.js";
4
+ import { MemoryService, MAX_SESSION_BRIEF_BUDGET, MAX_SESSION_BRIEF_PATHS, readSessionBrief, } from "../service/memory-service.js";
5
5
  import { startMcpServer } from "../mcp/server.js";
6
6
  import { indexFilesIntoMuninn } from "../indexer/ast-indexer.js";
7
7
  import { sanitizeTerminalText } from "../util/text.js";
@@ -60,12 +60,14 @@ Usage:
60
60
  muninn memory search <query> [--category <cat>] [--limit <n>] [--project <path>]
61
61
  muninn memory sync [--import] [--file <path>] [--project <path>]
62
62
  muninn memory index [files...] [--project <path>] [--db <path>]
63
+ muninn memory brief [--project <path>] [--paths a,b] [--budget <n>] [--db <path>]
63
64
 
64
65
  Subcommands:
65
66
  init Initialize SQLite database and verify schema
66
67
  search Search observations with BM25 relevance ranking
67
68
  sync Export observations to disk (.jsonl) or import with --import
68
69
  index Index AST symbols and dependencies into Muninn memory
70
+ brief Print a bounded read-only session brief (Markdown)
69
71
  `);
70
72
  }
71
73
  export function printMcpUsage() {
@@ -181,6 +183,46 @@ export async function handleMemoryCommand(subcommand, args, positionals) {
181
183
  }
182
184
  return;
183
185
  }
186
+ if (subcommand === "brief") {
187
+ const rawPaths = typeof args["--paths"] === "string" ? args["--paths"] : undefined;
188
+ const paths = rawPaths === undefined
189
+ ? undefined
190
+ : rawPaths
191
+ .split(",")
192
+ .map((p) => p.trim())
193
+ .filter(Boolean);
194
+ if (paths && paths.length > MAX_SESSION_BRIEF_PATHS) {
195
+ console.error(chalk.red(`Error: At most ${MAX_SESSION_BRIEF_PATHS} paths may be requested.`));
196
+ process.exitCode = 1;
197
+ return;
198
+ }
199
+ let budgetChars;
200
+ if (typeof args["--budget"] === "string") {
201
+ const parsedBudget = Number(args["--budget"]);
202
+ if (!Number.isInteger(parsedBudget) ||
203
+ parsedBudget <= 0 ||
204
+ parsedBudget > MAX_SESSION_BRIEF_BUDGET) {
205
+ console.error(chalk.red(`Error: --budget must be a positive integer no greater than ${MAX_SESSION_BRIEF_BUDGET}.`));
206
+ process.exitCode = 1;
207
+ return;
208
+ }
209
+ budgetChars = parsedBudget;
210
+ }
211
+ try {
212
+ const brief = readSessionBrief({
213
+ dbPath,
214
+ projectRoot,
215
+ paths,
216
+ budgetChars,
217
+ });
218
+ console.log(brief.markdown);
219
+ }
220
+ catch (err) {
221
+ console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
222
+ process.exitCode = 1;
223
+ }
224
+ return;
225
+ }
184
226
  if (subcommand === "index") {
185
227
  const rawFiles = positionals && positionals.length > 0
186
228
  ? positionals
@@ -264,10 +306,11 @@ export async function handleMcpCommand(subcommand, args) {
264
306
  return;
265
307
  }
266
308
  if (subcommand === "run") {
267
- const { server, transport, service } = await startMcpServer({
309
+ const started = await startMcpServer({
268
310
  dbPath,
269
311
  projectRoot,
270
312
  });
313
+ const { server, transport } = started;
271
314
  try {
272
315
  // Protocol failures were previously discarded (AC-30.3): surface them on
273
316
  // stderr (never stdout — that stream carries JSON-RPC) without aborting.
@@ -313,7 +356,13 @@ export async function handleMcpCommand(subcommand, args) {
313
356
  });
314
357
  }
315
358
  finally {
316
- service?.close?.();
359
+ if (typeof started.closeService === "function") {
360
+ started.closeService();
361
+ }
362
+ else {
363
+ // Compatibility with injected test doubles that predate the lazy handle.
364
+ started.service?.close?.();
365
+ }
317
366
  await server?.close?.();
318
367
  }
319
368
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function printSetupUsage(): void;
2
+ export declare function handleSetupCommand(args: Record<string, string | boolean | undefined>): Promise<void>;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuCA,wBAAgB,eAAe,IAAI,IAAI,CAmBtC;AAgND,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC,CAgMf"}