@agimon-ai/doompi 0.0.1-alpha.21 → 0.0.1-alpha.23

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 (2) hide show
  1. package/README.md +160 -101
  2. package/package.json +22 -20
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Doompi
1
+ # DoomPi
2
2
 
3
3
  **A coding agent that loads only the skills and tools you name.**
4
4
 
@@ -6,14 +6,15 @@
6
6
  > wakes up with database tools, browser controls, and their small novel of schemas. This
7
7
  > is our config.
8
8
 
9
- Doompi is a configuration framework for [Pi](https://github.com/earendil-works/pi)
10
- tailored for people whose agent has one MCP server too many. It turns extensions, skills,
9
+ DoomPi is an opinionated, composable distribution of [Pi](https://github.com/earendil-works/pi). It is closer
10
+ in spirit to Spacemacs, Doom Emacs, or a curated Neovim setup than to a single plugin. It is tailored
11
+ for people whose agent has one MCP server too many. It turns extensions, skills,
11
12
  MCP servers, and system prompts into config instead of background noise.
12
13
 
13
- ![Doompi terminal interface showing tasks, Plan mode, and the Leader menu](https://cdn.jsdelivr.net/npm/@agimon-ai/doompi@latest/assets/doompi-tui.png)
14
+ ![DoomPi terminal interface showing tasks, Plan mode, and the Leader menu](https://cdn.jsdelivr.net/npm/@agimon-ai/doompi@latest/assets/doompi-tui.png)
14
15
 
15
16
  Plugin systems scope what an agent knows. Nothing scopes what it can reach. Claude Code's
16
- `enableAllProjectMcpServers` and static denylist are repository-wide. Doompi draws that
17
+ `enableAllProjectMcpServers` and static denylist are repository-wide. DoomPi draws that
17
18
  boundary around the session. Pick a major mode and some domains; add a profile if you want
18
19
  one. Four YAML files decide what loads; `doompi --explain` tells you what got in, why, and
19
20
  what it costs before launch.
@@ -30,6 +31,14 @@ npm install -g @agimon-ai/doompi
30
31
 
31
32
  The package pins and installs the upstream Pi version used by `dpi`.
32
33
 
34
+ ## Status and requirements
35
+
36
+ DoomPi is alpha software. Configuration and package boundaries may still change between alpha releases.
37
+
38
+ - Node.js 22.19.0 or newer
39
+ - macOS or Linux on arm64 or x64 for the bundled Runner backend
40
+ - Pi 0.84.2 and Pi TUI 0.84.2 for packages that declare them as peer requirements
41
+
33
42
  ## Try DoomPi without replacing your Pi setup
34
43
 
35
44
  `dpi` is the comparison runner. Use it to try DoomPi beside your current `pi` customization
@@ -51,43 +60,14 @@ not register DoomPi in either normal Pi settings file.
51
60
 
52
61
  ### Sync storage and worktrees
53
62
 
54
- Generated sync artifacts are kept out of the repository at:
55
-
56
- ```text
57
- ~/.pi/.doom/sync/<repo-label>--<repo-id-32hex>/
58
- shared-cache/objects/<full-build-sha256>/
59
- worktrees/<worktree-label>--<worktree-id-32hex>/
60
- ```
63
+ DoomPi stores generated sync state under `~/.pi/.doom/sync`, outside the repository. Each
64
+ Git worktree gets isolated runtime state while immutable build artifacts may be shared.
61
65
 
62
- The repository identity comes from Git's canonical common directory, while each
63
- worktree gets its own identity. Linked worktrees therefore share immutable,
64
- content-addressed build objects but never share state, `dist`, manifests, staged
65
- resources, or per-process `run` files. Runtime loading uses only verified artifacts
66
- materialized in the current worktree directory; it never loads directly from the
67
- shared cache. The global `~/.pi/.doom/*.yaml` configuration and persistent
68
- `~/.pi/.doom/plugin-cache` behavior are unchanged.
69
-
70
- Older releases may have written state under `<repository>/.pi/doom`. That location
71
- is a read-only fallback only when the corresponding home-scoped state is absent.
72
- `doompi sync --check` reports that migration is required, and `doompi sync` rebuilds
73
- into the home-scoped worktree namespace rather than copying the legacy files. DoomPi
74
- does not automatically delete legacy, orphaned, or unused generated directories.
75
-
76
- For a fair comparison, `dpi` lets Pi merge the same ordinary settings from
77
- `~/.pi/agent/settings.json` and `<repo>/.pi/settings.json`. It then overlays only these
78
- DoomPi-owned values in memory:
79
-
80
- ```json
81
- {
82
- "extensions": ["@agimon-ai/doompi", "!extensions/**"],
83
- "themes": ["themes/doom-pi-dark.json"],
84
- "theme": "doom-pi-dark",
85
- "quietStartup": true
86
- }
87
- ```
66
+ `dpi` preserves Pi's normal global and repository settings, then applies DoomPi's extension
67
+ and theme settings in memory. It never writes those values to `.pi/settings.json`.
88
68
 
89
- Those four values are never written by `dpi`, including when Pi saves an unrelated option.
90
- Every other value keeps Pi's normal global/project precedence and trust handling.
69
+ Run `doompi sync --check` to detect stale or legacy state. Run `doompi sync` to rebuild it
70
+ in the current home-scoped layout.
91
71
 
92
72
  When you are comfortable with DoomPi and no longer need the side-by-side experiment, register
93
73
  it for normal Pi:
@@ -108,7 +88,7 @@ doompi --domains analytics --explain
108
88
 
109
89
  ## Philosophy
110
90
 
111
- An agent does not need every tool for every job. Doompi separates the base session from
91
+ An agent does not need every tool for every job. DoomPi separates the base session from
112
92
  the things you switch on for a while: modes choose behavior, domains choose subject
113
93
  matter, and profiles choose a point of view.
114
94
 
@@ -119,14 +99,14 @@ or whatever else you do. Define as many as you like; only one is active at a tim
119
99
  can switch it without leaving the session.
120
100
 
121
101
  Minor modes are battery-included switches inside that base. They start off, stack freely,
122
- and keep their model tools and skills out of context until turned on. Doompi ships six:
102
+ and keep their model tools and skills out of context until turned on. DoomPi ships six:
123
103
 
124
- - **Help mode** expose package-owned guidance only while you need it.
125
- - **Plan mode** make the repository read-only while you agree on an approach.
126
- - **Loop mode** run a prompt now, then run it again on a schedule.
127
- - **Goal mode** keep one objective in view until it is done or dismissed.
128
- - **Workflow mode** run jobs with dependencies, timeouts, and artifacts.
129
- - **Voice mode** replace typing with local speech.
104
+ - **Help mode:** expose package-owned guidance only while you need it.
105
+ - **Plan mode:** remove Pi's file-editing tools while you agree on an approach.
106
+ - **Loop mode:** run a prompt now, then run it again on a schedule.
107
+ - **Goal mode:** keep one objective in view until it is done or dismissed.
108
+ - **Workflow mode:** run jobs with dependencies, timeouts, and artifacts.
109
+ - **Voice mode:** replace typing with local speech.
130
110
 
131
111
  ### Domains
132
112
 
@@ -143,7 +123,7 @@ plugins:
143
123
  entries:
144
124
  remote-review:
145
125
  source: url
146
- url: https://github.com/acme/review-plugin.git
126
+ url: '<REVIEW_PLUGIN_GIT_URL>'
147
127
  ref: v1.2.0
148
128
 
149
129
  domains:
@@ -213,8 +193,8 @@ Together they can dispatch structured jobs from one live session.
213
193
 
214
194
  #### Workflows
215
195
 
216
- GitHub Actions already has a decent vocabulary for long jobs, so Doompi reuses it. Each job
217
- declares the Doompi session it wants. Here, implementation gets coding tools; the release
196
+ GitHub Actions already has a decent vocabulary for long jobs, so DoomPi reuses it. Each job
197
+ declares the DoomPi session it wants. Here, implementation gets coding tools; the release
218
198
  note waits for it and gets marketing context plus a brand voice:
219
199
 
220
200
  ```yaml
@@ -223,21 +203,21 @@ on:
223
203
 
224
204
  jobs:
225
205
  implement:
206
+ runs-on: ubuntu-latest
226
207
  steps:
227
208
  - name: Build the feature
228
209
  timeout-minutes: 180
229
- artifacts: [implementation/report.md]
230
210
  interactiveRun:
231
211
  default: |
232
212
  doompi --major-mode dev --domains development --auto-stop \
233
213
  --cwd "$PWD" "$JOB_SYSTEM_PROMPT"
234
214
 
235
215
  release-note:
216
+ runs-on: ubuntu-latest
236
217
  needs: implement
237
218
  steps:
238
219
  - name: Write the release note
239
220
  timeout-minutes: 30
240
- artifacts: [marketing/release-note.md]
241
221
  interactiveRun:
242
222
  default: |
243
223
  doompi --major-mode marketing --domains marketing \
@@ -253,51 +233,65 @@ it. One session becomes the dispatcher instead of the place every job has to fit
253
233
 
254
234
  ## Features
255
235
 
256
- Doompi is a distribution, not one giant extension. Each package owns one job; shared TUI
236
+ DoomPi is a distribution, not one giant extension. Each package owns one job; shared TUI
257
237
  and session contracts make them behave like one. Use the defaults together or replace
258
238
  them one at a time.
259
239
 
260
- ### Configuration and composition
240
+ ### Foundation and interface
241
+
242
+ #### Configuration and composition
261
243
 
262
244
  [`@agimon-ai/doompi`][pkg-doompi] is both an extension and the command-line config compiler. `dpi init`
263
245
  creates repository config for an isolated experiment, while `doompi init` creates the personal
264
- config and registers the permanent Pi integration. The sync commands resolve every major mode
265
- and domain into a distribution Pi can load quickly. A large major mode with 15 extensions adds
266
- only 400 ms of code startup time.
246
+ config and registers the permanent Pi integration. The sync commands resolve every major mode and domain into a distribution Pi can load quickly.
247
+
248
+ #### Supporting packages
249
+
250
+ [`@agimon-ai/doompi-config`][pkg-doompi-config] resolves the four YAML files and exposes the
251
+ configuration API. [`@agimon-ai/doompi-extension-contracts`][pkg-doompi-extension-contracts]
252
+ contains the shared protocol and Leader contracts used by extension authors.
253
+ [`@agimon-ai/doompi-file-edit`][pkg-doompi-file-edit] opens files in the configured editor and
254
+ keeps the edit timeline. [`@agimon-ai/doompi-log`][pkg-doompi-log] collects session events, while
255
+ [`@agimon-ai/doompi-telemetry`][pkg-doompi-telemetry] is the library-level telemetry adapter.
256
+
257
+ Runner selects one native artifact automatically; do not install these directly:
258
+ [`darwin-arm64`][pkg-rmux-darwin-arm64], [`darwin-x64`][pkg-rmux-darwin-x64],
259
+ [`linux-arm64`][pkg-rmux-linux-arm64], or [`linux-x64`][pkg-rmux-linux-x64].
267
260
 
268
- ### Leader key
261
+ #### Leader key
269
262
 
270
263
  [`@agimon-ai/doompi-ui`][pkg-doompi-ui] turns `SPC` into a map of the available commands. It stays out of
271
264
  the way when a draft is not empty, and other packages contribute bindings through one
272
265
  leader API instead of hardcoding their own menus.
273
266
 
274
- ### Agent team
267
+ ### Coordinated work
275
268
 
276
- [`@agimon-ai/doompi-team`][pkg-doompi-team] runs named subagents asynchronously against a shared task board.
277
- They can work in parallel, message one another, and use the model policy attached to the
278
- selected Team package entry. `SPC a l` lists available agents; `SPC a r` opens current-session runs and
279
- their controls.
269
+ #### Agent team
280
270
 
281
- ### Tasks
271
+ [`@agimon-ai/doompi-team`][pkg-doompi-team] runs named subagents asynchronously. It owns agents,
272
+ runs, membership, intercom, and model policy; Task owns the persistent task graph used for
273
+ delegation. Agents can work in parallel and message one another. `SPC a l` lists available agents;
274
+ `SPC a r` opens current-session runs and their controls.
275
+
276
+ #### Tasks
282
277
 
283
278
  [`@agimon-ai/doompi-task`][pkg-doompi-task] keeps a task graph on disk, not a disposable checklist in the
284
- transcript. Dependencies and delegation survive compaction, and work can be handed to a
285
- subagentincluding a smaller model when the job does not need the expensive one. Seeded
279
+ transcript. Dependencies persist independently of transcript compaction, and work can be handed to
280
+ a subagent, including a smaller model when the job does not need the expensive one. Seeded
286
281
  `minimal` and `copilot` modes select its `task` layer; omit that layer when a major mode
287
282
  should not expose the task tool.
288
283
 
289
- ### Runner
284
+ #### Runner
290
285
 
291
286
  [`@agimon-ai/doompi-runner`][pkg-doompi-runner] replaces Pi's blocking `bash` tool with
292
287
  supervised command execution in the generated default Copilot mode. Short commands still return
293
- inline; commands that pass the configurable threshold60 seconds by defaultmove into the
288
+ inline; commands that pass the configurable threshold of 60 seconds by default move into the
294
289
  background with durable logs. Use `background: true` for an immediate detached run or
295
- `interactive: true` when the command needs terminal input. Runner IDs, controls, and logs survive
296
- compaction and context rewrites and remain available through Runner Space at `SPC r r` or the
297
- `doom-runner` CLI. Platform-specific RMUX binaries are selected automatically, with a fallback
290
+ `interactive: true` when the command needs terminal input. Runner IDs and durable logs remain available to the current session through Runner Space at
291
+ `SPC r r` or the `doom-runner` CLI. Platform-specific RMUX binaries are selected automatically, with a fallback
298
292
  when RMUX is unavailable. Custom modes must include the `runner` layer to replace `bash`.
299
293
 
300
- ### Auto-compact
294
+ #### Auto-compact
301
295
 
302
296
  Ordinary compaction waits for one summary to save an overgrown session.
303
297
  [`@agimon-ai/doompi-autocompact`][pkg-doompi-autocompact] leaves checkpoints instead:
@@ -307,71 +301,76 @@ Ordinary compaction waits for one summary to save an overgrown session.
307
301
  result is ready to use.
308
302
  3. On the third pass, it combines them again and forces compaction.
309
303
 
310
- The work runs off-thread. Each checkpoint carries the live plan, task graph, team state,
311
- and user request with it, so coordination does not have to be guessed back out of prose.
304
+ The work runs off-thread and can make up to three additional summarization calls. The standard
305
+ adapter preserves staged conversation checkpoints; Task and Team keep their own state rather than
306
+ being embedded as special snapshots in the compact summary.
307
+
308
+ ### Context and access
312
309
 
313
- ### Help mode
310
+ #### Help mode
314
311
 
315
312
  [`@agimon-ai/doompi-help`][pkg-doompi-help] keeps package guidance out of the default prompt. A fresh parent
316
313
  session performs no Help retrieval and exposes no Help skills. Use `SPC h e`, or the existing
317
314
  `minor_mode` client in headless sessions, to activate the package indexes; use the same action
318
315
  to deactivate them before the next interaction. The initial contributors expose
319
- `doompi-help`, `workflow-help`, and `doompi-config-help`. Child sessions never assemble the
320
- Help runtime.
316
+ `doompi-help`, `workflow-help`, and `doompi-config-help`. DoomPi's default child-session assembly does not include the Help runtime.
321
317
 
322
- ### MCP
318
+ #### MCP
323
319
 
324
320
  [`@agimon-ai/doompi-mcp`][pkg-doompi-mcp] is the gate between a session and its servers. It reads `.mcp.json`
325
321
  and other common formats, then exposes only the servers and proxy upstreams allowed by the
326
322
  selected domains. Switch domains and that boundary reloads with them.
327
323
 
328
- ### Ask user question
324
+ #### Ask user question
329
325
 
330
326
  [`@agimon-ai/doompi-user-feedback`][pkg-doompi-user-feedback] gives the agent a structured question that actually
331
327
  waits for an answer. In autonomous Voice mode it skips the modal, narrates the choices,
332
328
  and accepts the next spoken response as an ordinary user message.
333
329
 
334
- ### Logging and telemetry
330
+ #### Logging and telemetry
331
+
332
+ DoomPi logging records operational metadata such as counters, spans, session IDs, tool names, and
333
+ errors. Callers remain responsible for values they attach to telemetry. `SPC h l` opens current-session
334
+ metrics, and [`@agimon-ai/log-sink-mcp`][pkg-log-sink-mcp] provides historical lookup when a sink is
335
+ configured.
335
336
 
336
- Doompi telemetry records counters and spans, never prompt text or file content, in a local
337
- SQLite database by default. `SPC h l` opens the metrics, and
338
- [`@agimon-ai/log-sink-mcp`][pkg-log-sink-mcp] gives the agent CLI tools for inspecting its own
339
- runs.
337
+ ### Modes and automation
340
338
 
341
- ### Plan mode
339
+ #### Plan mode
342
340
 
343
- A promise to "only plan" is not a permission boundary. [`@agimon-ai/doompi-plan`][pkg-doompi-plan] makes the
344
- repository read-only while the agent explores, persists the plan, and hands it back for
345
- approval. Use `SPC p p` for normal planning, `SPC p d` for debug planning, `SPC p f` for
341
+ A promise to "only plan" is not a permission boundary. [`@agimon-ai/doompi-plan`][pkg-doompi-plan]
342
+ removes Pi's `edit` and `write` tools while the agent explores, persists the plan, and hands it back
343
+ for approval. It does not sandbox Bash, external tools, or the operating system. Use `SPC p p` for normal planning, `SPC p d` for debug planning, `SPC p f` for
346
344
  the Fable flow, and `SPC p e` to exit. Turn it on when the approach should be settled
347
345
  before the files move.
348
346
 
349
- ### Loop mode
347
+ #### Loop mode
350
348
 
351
349
  [`@agimon-ai/doompi-loop`][pkg-doompi-loop] is an in-session scheduler. It runs a prompt immediately and then
352
350
  repeats it on an interval; several loops can coexist. Use `SPC l s` to start one and
353
351
  `SPC l l` to list or stop them. It is for recurring checks and prompts that belong to the
354
352
  current session.
355
353
 
356
- ### Goal mode
354
+ #### Goal mode
357
355
 
358
356
  [`@agimon-ai/doompi-goal`][pkg-doompi-goal] pins one objective to the session until it completes or you end
359
357
  it. Use `SPC g g` for status, `SPC g s` to start, `SPC g e` to end, and `SPC g p` for
360
358
  history. Finished goals leave the prompt and tools behind but remain in history when you
361
359
  want to restart one.
362
360
 
363
- ### Workflow mode
361
+ #### Workflow mode
364
362
 
365
363
  [`@agimon-ai/doompi-workflow`][pkg-doompi-workflow] runs GitHub Actions-style job graphs with dependencies,
366
- timeouts, artifacts, and a separate Doompi session for each step. Use `SPC w w` to launch,
364
+ timeouts, artifacts, and a separate DoomPi session for each step. Use `SPC w w` to launch,
367
365
  `SPC w l` to manage, `SPC w r` to recover a failed run, and `SPC w e` to give the agent
368
366
  workflow tools or take them back. It is for work that needs hard job boundaries and
369
367
  explicit handoffs rather than one long conversation.
370
368
 
371
- ### Voice mode
369
+ #### Voice mode
372
370
 
373
- [`@agimon-ai/doompi-voice`][pkg-doompi-voice] records and transcribes speech locally; audio stays on the
374
- machine. `SPC v v` is one-shot manual dictation and never enables Voice tools. `SPC v a`
371
+ [`@agimon-ai/doompi-voice`][pkg-doompi-voice] captures PCM audio through the local platform helper and
372
+ can transcribe it locally. Transcript text, session state, and model requests may still cross process
373
+ or provider boundaries according to the configured engines. `SPC v v` is one-shot manual dictation and never enables Voice tools. `SPC v a`
375
374
  toggles autonomous capture; only its exact-active TUI session receives the two Voice
376
375
  façades plus the standalone `narrate` tool.
377
376
 
@@ -392,7 +391,7 @@ available, and the same model continues to provide bounded command correction.
392
391
 
393
392
  ## Configuration
394
393
 
395
- Doompi reads four configuration files:
394
+ DoomPi reads four configuration files:
396
395
 
397
396
  - `config.yaml` defines runtime settings such as trust, editor, planning, and voice behavior.
398
397
  - `modes.yaml` defines extension layers and major modes.
@@ -400,7 +399,7 @@ Doompi reads four configuration files:
400
399
  - `profiles.yaml` supplies persona files and environment defaults.
401
400
 
402
401
  Each matrix file has two optional layers: personal defaults in `~/.pi/.doom/` and repository
403
- overrides in `<repository>/.doom/`. Doompi loads both. Unique named entries from either layer
402
+ overrides in `<repository>/.doom/`. DoomPi loads both. Unique named entries from either layer
404
403
  remain available; a same-named repository entry replaces the complete personal entry. Plugin
405
404
  and profile roots from both layers are retained. Relative paths in personal config resolve
406
405
  from `~/.pi/.doom/`; relative paths in repository config resolve from the repository root.
@@ -434,7 +433,7 @@ majorMode:
434
433
  layers: [team, review]
435
434
  ```
436
435
 
437
- Order matters: Doompi assembles layers and their packages from left to right. Put settings
436
+ Order matters: DoomPi assembles layers and their packages from left to right. Put settings
438
437
  under the package that consumes them; a layer is composition, not a mystery bag of shared
439
438
  configuration. Home and repository `layers` and `majorMode` records merge by name, with the
440
439
  repository definition winning a collision.
@@ -456,7 +455,7 @@ plugins:
456
455
  entries:
457
456
  remote-review:
458
457
  source: url
459
- url: https://github.com/acme/review-plugin.git
458
+ url: '<REVIEW_PLUGIN_GIT_URL>'
460
459
  ref: v1.2.0
461
460
  published-research:
462
461
  source: npm
@@ -499,7 +498,7 @@ amount of repository context is none.
499
498
 
500
499
  A profile directory becomes discoverable when it directly contains `profile.md`, `SOUL.md`,
501
500
  or `AGENTS.md`. A root may be one profile or a container of direct-child profiles. The folder
502
- name becomes the profile name; Doompi concatenates those three files in that order.
501
+ name becomes the profile name; DoomPi concatenates those three files in that order.
503
502
 
504
503
  ```yaml
505
504
  profiles:
@@ -541,6 +540,58 @@ DPI without registering it in normal Pi settings. `doompi sync --check` turns dr
541
540
  non-zero exit code for CI. If the explanation is surprising, fix the YAML before paying a model
542
541
  to be surprised with you.
543
542
 
543
+ ## Trust and data boundaries
544
+
545
+ DoomPi executes the extensions, remote Git/npm plugins, hooks, MCP stdio commands, workflows, and
546
+ shell commands you configure. Treat them as trusted executable code. Runner commands inherit the
547
+ process environment and operating-system privileges; their logs may contain command output and
548
+ secrets. MCP credentials may live in the system keyring or private configuration files.
549
+
550
+ Voice can keep PCM capture and transcription local when local engines are selected, but transcript
551
+ text and model requests follow the configured providers. Loop, Workflow, Plan, Autocompact, Team,
552
+ and autonomous Voice can make additional model calls. Telemetry is disabled or redirected through
553
+ its owning package's controls; values supplied by callers are not automatically scrubbed.
554
+
555
+ ## CLI reference
556
+
557
+ | Command or option | What it does |
558
+ | -------------------------------------------- | -------------------------------------------------------------------------------- |
559
+ | `dpi init`, `dpi sync`, `dpi` | Creates, synchronizes, and runs the repository-scoped comparison setup |
560
+ | `doompi init`, `doompi sync` | Seeds personal config, builds synchronized state, and registers DoomPi with Pi |
561
+ | `doompi sync --check` | Exits non-zero when synchronized state is stale or legacy state needs migration |
562
+ | `doompi compat <codex\|claude\|antigravity>` | Resolves the selected matrix and launches the compatibility adapter |
563
+ | `doom-runner` | Inspects and controls supervised Runner processes and logs |
564
+ | `--explain` | Prints the resolved matrix and estimated prompt cost without launching Pi |
565
+ | `--emit-mcp <dir>`, `--no-mcp` | Writes the resolved MCP config or disables MCP for one run |
566
+ | `--cwd <path>`, `--auto-stop` | Chooses the working directory or exits after an interactive agent settles |
567
+ | `--` and remaining arguments | Forwards provider or Pi arguments unchanged where the selected command allows it |
568
+
569
+ ## Troubleshooting and direct use
570
+
571
+ - Run `doompi sync --check` to detect drift and `doompi sync` to rebuild synchronized state.
572
+ - If RMUX is unavailable on a supported target, Runner reports the fallback it uses. Linux native
573
+ artifacts require a compatible loader and libc environment.
574
+ - Leader menus and overlays require Pi's interactive TUI. Commands and tools remain the interface
575
+ for JSON, RPC, and other headless sessions where the owning package supports them.
576
+ - Install a directly loaded Pi subsystem with `pi install npm:@agimon-ai/<package>`. Library consumers
577
+ use `npm install`; native RMUX artifacts are selected by Runner and should not be installed directly.
578
+ The distribution remains the supported way to get the coordinated defaults.
579
+
580
+ ## Development
581
+
582
+ ```bash
583
+ nx build @agimon-ai/doompi
584
+ nx test @agimon-ai/doompi
585
+ nx typecheck @agimon-ai/doompi
586
+ nx lint @agimon-ai/doompi
587
+ ```
588
+
589
+ DoomPi is maintained by [Agimon](https://agimon.ai/about).
590
+
591
+ ## License
592
+
593
+ MIT
594
+
544
595
  ## Package release order
545
596
 
546
597
  Publish [`@agimon-ai/doompi-extension-contracts`][pkg-doompi-extension-contracts] first, then
@@ -550,6 +601,14 @@ by the release tooling.
550
601
 
551
602
  [pkg-doompi]: https://www.npmjs.com/package/@agimon-ai/doompi
552
603
  [pkg-doompi-ui]: https://www.npmjs.com/package/@agimon-ai/doompi-ui
604
+ [pkg-doompi-config]: https://www.npmjs.com/package/@agimon-ai/doompi-config
605
+ [pkg-doompi-file-edit]: https://www.npmjs.com/package/@agimon-ai/doompi-file-edit
606
+ [pkg-doompi-log]: https://www.npmjs.com/package/@agimon-ai/doompi-log
607
+ [pkg-doompi-telemetry]: https://www.npmjs.com/package/@agimon-ai/doompi-telemetry
608
+ [pkg-rmux-darwin-arm64]: https://www.npmjs.com/package/@agimon-ai/doompi-runner-rmux-darwin-arm64
609
+ [pkg-rmux-darwin-x64]: https://www.npmjs.com/package/@agimon-ai/doompi-runner-rmux-darwin-x64
610
+ [pkg-rmux-linux-arm64]: https://www.npmjs.com/package/@agimon-ai/doompi-runner-rmux-linux-arm64
611
+ [pkg-rmux-linux-x64]: https://www.npmjs.com/package/@agimon-ai/doompi-runner-rmux-linux-x64
553
612
  [pkg-doompi-team]: https://www.npmjs.com/package/@agimon-ai/doompi-team
554
613
  [pkg-doompi-task]: https://www.npmjs.com/package/@agimon-ai/doompi-task
555
614
  [pkg-doompi-runner]: https://www.npmjs.com/package/@agimon-ai/doompi-runner
package/package.json CHANGED
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi",
3
- "version": "0.0.1-alpha.21",
4
- "description": "Pi-based agent harness for repository automations and developer workflows",
3
+ "version": "0.0.1-alpha.23",
4
+ "description": "Opinionated, composable Pi distribution for scoped agent tools, skills, MCP servers, and developer workflows.",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "coding-agent",
8
8
  "developer-tools",
9
9
  "doompi",
10
+ "pi",
11
+ "pi-coding-agent",
10
12
  "pi-package"
11
13
  ],
12
14
  "homepage": "https://agimon.ai",
@@ -346,24 +348,24 @@
346
348
  "rolldown": "1.0.0-rc.17",
347
349
  "typebox": "1.1.38",
348
350
  "yaml": "2.9.0",
349
- "@agimon-ai/doompi-autocompact": "0.0.1-alpha.21",
350
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.21",
351
- "@agimon-ai/doompi-config": "0.0.1-alpha.21",
352
- "@agimon-ai/doompi-help": "0.0.1-alpha.4",
353
- "@agimon-ai/doompi-log": "0.0.1-alpha.21",
354
- "@agimon-ai/doompi-loop": "0.0.1-alpha.21",
355
- "@agimon-ai/doompi-file-edit": "0.0.1-alpha.21",
356
- "@agimon-ai/doompi-mcp": "0.0.1-alpha.21",
357
- "@agimon-ai/doompi-plan": "0.0.1-alpha.21",
358
- "@agimon-ai/doompi-goal": "0.0.1-alpha.11",
359
- "@agimon-ai/doompi-runner": "0.0.1-alpha.21",
360
- "@agimon-ai/doompi-telemetry": "0.0.1-alpha.21",
361
- "@agimon-ai/doompi-user-feedback": "0.0.1-alpha.10",
362
- "@agimon-ai/doompi-voice": "0.0.1-alpha.21",
363
- "@agimon-ai/doompi-workflow": "0.0.1-alpha.21",
364
- "@agimon-ai/doompi-team": "0.0.1-alpha.21",
365
- "@agimon-ai/doompi-ui": "0.0.1-alpha.21",
366
- "@agimon-ai/doompi-task": "0.0.1-alpha.21"
351
+ "@agimon-ai/doompi-autocompact": "0.0.1-alpha.23",
352
+ "@agimon-ai/doompi-config": "0.0.1-alpha.23",
353
+ "@agimon-ai/doompi-file-edit": "0.0.1-alpha.23",
354
+ "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.23",
355
+ "@agimon-ai/doompi-goal": "0.0.1-alpha.13",
356
+ "@agimon-ai/doompi-help": "0.0.1-alpha.6",
357
+ "@agimon-ai/doompi-log": "0.0.1-alpha.23",
358
+ "@agimon-ai/doompi-mcp": "0.0.1-alpha.23",
359
+ "@agimon-ai/doompi-loop": "0.0.1-alpha.23",
360
+ "@agimon-ai/doompi-plan": "0.0.1-alpha.23",
361
+ "@agimon-ai/doompi-runner": "0.0.1-alpha.23",
362
+ "@agimon-ai/doompi-task": "0.0.1-alpha.23",
363
+ "@agimon-ai/doompi-user-feedback": "0.0.1-alpha.12",
364
+ "@agimon-ai/doompi-telemetry": "0.0.1-alpha.23",
365
+ "@agimon-ai/doompi-team": "0.0.1-alpha.23",
366
+ "@agimon-ai/doompi-voice": "0.0.1-alpha.23",
367
+ "@agimon-ai/doompi-ui": "0.0.1-alpha.23",
368
+ "@agimon-ai/doompi-workflow": "0.0.1-alpha.23"
367
369
  },
368
370
  "devDependencies": {
369
371
  "@earendil-works/pi-ai": "0.84.2",