ndomo 0.1.0 → 0.2.1

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 (65) hide show
  1. package/.env.example +4 -0
  2. package/README.es.md +29 -23
  3. package/README.md +64 -24
  4. package/bun.lock +447 -0
  5. package/docs/configuration.md +4 -4
  6. package/docs/installation.md +53 -34
  7. package/docs/installer.md +164 -0
  8. package/docs/integrations.md +1 -1
  9. package/docs/web-ui.md +124 -0
  10. package/package.json +43 -4
  11. package/scripts/install.sh +28 -0
  12. package/scripts/smoke-install.sh +47 -0
  13. package/scripts/smoke-web.sh +335 -0
  14. package/src/cli/__tests__/install.test.ts +733 -0
  15. package/src/cli/index.ts +8 -0
  16. package/src/cli/install.ts +1273 -0
  17. package/src/config/__tests__/schema.test.ts +223 -0
  18. package/src/config/schema.ts +129 -16
  19. package/src/http/__tests__/auth.test.ts +10 -10
  20. package/src/http/__tests__/spa.test.ts +296 -0
  21. package/src/http/auth.ts +8 -1
  22. package/src/http/server.ts +71 -2
  23. package/.bun-version +0 -1
  24. package/.dockerignore +0 -79
  25. package/.editorconfig +0 -18
  26. package/.github/CODEOWNERS +0 -8
  27. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -62
  28. package/.github/ISSUE_TEMPLATE/config.yml +0 -2
  29. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -34
  30. package/.github/dependabot.yml +0 -36
  31. package/.github/pull_request_template.md +0 -24
  32. package/.github/release.yml +0 -30
  33. package/.github/workflows/gitleaks.yml +0 -28
  34. package/.github/workflows/release-please.yml +0 -27
  35. package/.github/workflows/smoke.yml +0 -29
  36. package/.husky/commit-msg +0 -1
  37. package/CHANGELOG.md +0 -114
  38. package/Dockerfile +0 -32
  39. package/bin/ndomo-analyses.ts +0 -4
  40. package/bin/ndomo-status.ts +0 -4
  41. package/biome.json +0 -57
  42. package/commitlint.config.js +0 -3
  43. package/opencode.json +0 -5
  44. package/release-please-config.json +0 -11
  45. package/scripts/dev-bust-cache.sh +0 -164
  46. package/scripts/smoke-e2e.ts +0 -704
  47. package/scripts/smoke-hot.ts +0 -417
  48. package/scripts/smoke-v4.ts +0 -256
  49. package/scripts/smoke-v5.ts +0 -397
  50. package/scripts/uninstall.sh +0 -224
  51. package/src/index.ts +0 -37
  52. package/src/lib.ts +0 -65
  53. package/src/mem/scoped.ts +0 -65
  54. package/src/orchestrator/background.test.ts +0 -268
  55. package/src/orchestrator/background.ts +0 -293
  56. package/src/orchestrator/memory-hook.ts +0 -182
  57. package/src/orchestrator/reconciler.ts +0 -123
  58. package/src/orchestrator/scheduler.test.ts +0 -300
  59. package/src/orchestrator/scheduler.ts +0 -243
  60. package/src/plugin.test.ts +0 -2574
  61. package/src/plugin.ts +0 -1690
  62. package/src/worktrees/manager.ts +0 -236
  63. package/src/worktrees/state.ts +0 -87
  64. package/tests/integration/ranger-flow.test.ts +0 -257
  65. package/tsconfig.json +0 -31
package/.env.example CHANGED
@@ -17,3 +17,7 @@ OPENCODE_SERVER_PASSWORD=
17
17
 
18
18
  # OpenCode server URL for SDK client (default: http://localhost:4096)
19
19
  OPENCODE_SERVER_URL=http://localhost:4096
20
+
21
+ # Web UI build-time API base (default: empty = same-origin). Set when SPA and API
22
+ # are on different origins (e.g., VITE_API_BASE=https://api.example.com during dev).
23
+ # VITE_API_BASE=
package/README.es.md CHANGED
@@ -36,25 +36,25 @@ ndomo es un plugin de orquestación multi-agente para [OpenCode](https://github.
36
36
  ## Inicio Rápido
37
37
 
38
38
  ```bash
39
- # Instalación rápida (interactivo, preguntará por provider)
40
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash
39
+ # Instalación rápida (interactivo, preguntará por HTTP)
40
+ bunx ndomo install
41
41
 
42
- # No interactivo con provider preestablecido
43
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --provider=opencode --no-provider-prompt
42
+ # No interactivo con preset + HTTP habilitado
43
+ bunx ndomo install --preset=budget --enable-http
44
44
 
45
- # Con preset budget + DCP
46
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --preset=budget --with-dcp
45
+ # Con DCP
46
+ bunx ndomo install --with-dcp
47
47
  ```
48
48
 
49
- Por defecto la instalación aplica `presets.default` de `config/ndomo.config.json`. Usa `--preset=budget` para modelos más económicos, `--provider=ID` para sobrescribir el prefijo de provider.
49
+ Por defecto la instalación aplica `presets.default` de `config/ndomo.config.json`. Usa `--preset=budget` para modelos más económicos, `--provider=ID` para sobrescribir el prefijo de provider, `--enable-http` para activar el servidor HTTP.
50
50
 
51
51
  O desde el código fuente:
52
52
 
53
53
  ```bash
54
- git clone <repo-url> ndomo
54
+ git clone https://github.com/nicosup98/ndomo-v2 ndomo
55
55
  cd ndomo
56
56
  bun install
57
- opencode
57
+ bun run src/cli/install.ts
58
58
  ```
59
59
 
60
60
  Dentro de OpenCode, verifica que todos los agentes respondan:
@@ -67,30 +67,31 @@ ping all agents
67
67
 
68
68
  **Requisitos:** [bun](https://bun.sh) >= 1.1.0, OpenCode instalado y configurado con al menos un proveedor autenticado.
69
69
 
70
- Instalación vía curl (recomendada):
70
+ Instalación vía bunx (recomendada):
71
71
 
72
72
  ```bash
73
- # Instalación interactiva (preguntará por provider)
74
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash
73
+ # Instalación interactiva (preguntará por HTTP)
74
+ bunx ndomo install
75
75
 
76
76
  # Con provider preestablecido (no interactivo)
77
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --provider=opencode --no-provider-prompt
77
+ bunx ndomo install --provider=opencode --no-provider-prompt
78
78
 
79
79
  # Con preset budget + DCP
80
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --preset=budget --with-dcp
80
+ bunx ndomo install --preset=budget --with-dcp
81
81
  ```
82
82
 
83
83
  O desde un clon local:
84
84
 
85
85
  ```bash
86
- git clone <repo-url> ndomo
86
+ git clone https://github.com/nicosup98/ndomo-v2 ndomo
87
87
  cd ndomo
88
- ./scripts/install.sh # con preset default
89
- ./scripts/install.sh --preset=budget # con modelos budget
90
- ./scripts/install.sh --with-dcp # incluye plugin DCP
88
+ bun install
89
+ bun run src/cli/install.ts # con preset default
90
+ bun run src/cli/install.ts --preset=budget # con modelos budget
91
+ bun run src/cli/install.ts --with-dcp # incluye plugin DCP
91
92
  ```
92
93
 
93
- Ver [docs/installation.md](docs/installation.md) para pasos detallados.
94
+ Ver [docs/installer.md](docs/installer.md) para pasos detallados.
94
95
 
95
96
  **Flags:**
96
97
 
@@ -100,10 +101,15 @@ Ver [docs/installation.md](docs/installation.md) para pasos detallados.
100
101
  | `--no-provider-prompt` | Omite el prompt interactivo de provider. El preset se aplica igualmente; no se realiza ninguna sobrescritura de prefijo de provider. |
101
102
  | `--preset=NAME` | Selecciona un preset de `config/ndomo.config.json::presets[NAME]`. El preset es la fuente de verdad para los modelos de agentes al instalar. (default: `default`, opciones: `default`, `budget`) |
102
103
  | `--with-dcp` | Instala y configura el plugin DCP. |
103
- | `--repo=URL` | Sobrescribe la URL del repositorio (para instalaciones vía pipe desde un fork). |
104
- | `--branch=NAME` | Sobrescribe la rama del repositorio (para instalaciones vía pipe desde ramas dev). |
105
-
106
- **Desinstalación:** `./scripts/uninstall.sh [--keep-data]`
104
+ | `--dry-run` | Imprime los cambios planeados sin escribir archivos. |
105
+ | `--skip-deps` | Omite el paso de dependencias (`bun install`). |
106
+ | `--enable-http` | Activa automáticamente el servidor HTTP (escribe bloque http en `ndomo.config.json`). |
107
+ | `--disable-http` | Omite por completo el prompt automático de HTTP (default en no-TTY / CI). |
108
+ | `--port=N` | Puerto del servidor HTTP (default: `4097`). |
109
+ | `--cors-origins=CSV` | Orígenes CORS del HTTP, separados por comas (default: `*`). |
110
+ | `--auth-required=BOOL` | Requisito de auth HTTP (default: `true`). |
111
+
112
+ **Desinstalación:** `bunx ndomo install --uninstall` or `./scripts/uninstall.sh [--keep-data]`
107
113
 
108
114
  ## Base de Datos de Planes y Tareas
109
115
 
package/README.md CHANGED
@@ -36,25 +36,25 @@ ndomo is a multi-agent orchestration plugin for [OpenCode](https://github.com/op
36
36
  ## Quick Start
37
37
 
38
38
  ```bash
39
- # Quick install (interactive, will prompt for provider)
40
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash
39
+ # Quick install (interactive, will prompt for HTTP)
40
+ bunx ndomo install
41
41
 
42
- # Non-interactive with provider preset
43
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --provider=opencode --no-provider-prompt
42
+ # Non-interactive with preset + HTTP enabled
43
+ bunx ndomo install --preset=budget --enable-http
44
44
 
45
- # With budget preset + DCP
46
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --preset=budget --with-dcp
45
+ # With DCP
46
+ bunx ndomo install --with-dcp
47
47
  ```
48
48
 
49
- By default the install applies `presets.default` from `config/ndomo.config.json`. Use `--preset=budget` for cheaper models, `--provider=ID` to override the provider prefix.
49
+ By default the install applies `presets.default` from `config/ndomo.config.json`. Use `--preset=budget` for cheaper models, `--provider=ID` to override the provider prefix. See [docs/installer.md](docs/installer.md) for the full flag reference.
50
50
 
51
51
  Or from source:
52
52
 
53
53
  ```bash
54
- git clone <repo-url> ndomo
54
+ git clone https://github.com/nicosup98/ndomo-v2 ndomo
55
55
  cd ndomo
56
56
  bun install
57
- opencode
57
+ bun run src/cli/install.ts
58
58
  ```
59
59
 
60
60
  Inside OpenCode, verify all agents respond:
@@ -67,43 +67,51 @@ ping all agents
67
67
 
68
68
  **Prerequisites:** [bun](https://bun.sh) >= 1.1.0, OpenCode installed and configured with at least one authenticated provider.
69
69
 
70
- Install via curl (recommended):
70
+ Install via bunx (recommended):
71
71
 
72
72
  ```bash
73
- # Interactive install (will prompt for provider)
74
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash
73
+ # Interactive install (will prompt for HTTP)
74
+ bunx ndomo install
75
75
 
76
76
  # With provider preset (non-interactive)
77
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --provider=opencode --no-provider-prompt
77
+ bunx ndomo install --provider=opencode --no-provider-prompt
78
78
 
79
79
  # With budget preset + DCP
80
- curl -fsSL https://raw.githubusercontent.com/darrenhinde/OpenAgentsControl/main/install.sh | bash -s -- --preset=budget --with-dcp
80
+ bunx ndomo install --preset=budget --with-dcp
81
81
  ```
82
82
 
83
83
  Or from a local clone:
84
84
 
85
85
  ```bash
86
- git clone <repo-url> ndomo
86
+ git clone https://github.com/nicosup98/ndomo-v2 ndomo
87
87
  cd ndomo
88
- ./scripts/install.sh # with default preset
89
- ./scripts/install.sh --preset=budget # with budget models
90
- ./scripts/install.sh --with-dcp # include DCP plugin
88
+ bun install
89
+ bun run src/cli/install.ts # default preset
90
+ bun run src/cli/install.ts --preset=budget # budget models
91
+ bun run src/cli/install.ts --with-dcp # include DCP plugin
91
92
  ```
92
93
 
93
- See [docs/installation.md](docs/installation.md) for detailed steps.
94
+ See [docs/installer.md](docs/installer.md) for detailed steps and full flag reference.
95
+
96
+ > **Migration note:** `scripts/install.sh` is preserved in the published tarball as a **compat shim for users coming from `curl -fsSL ... | bash`** (the pre-0.2.0 install path). It is deprecated — new installs should use `bunx ndomo install`. The shim is not removed to avoid breaking legacy one-liners, but no new features will be added there.
94
97
 
95
98
  **Flags:**
96
99
 
97
100
  | Flag | Description |
98
101
  |---|---|
99
- | `--provider=ID` | Override the provider prefix for all agents. The model ID is taken from the active preset; only the `provider/` segment of the `model:` field is swapped. Example: preset gives `opencode-go/minimax-m2.7`, `--provider=opencode` rewrites to `opencode/minimax-m2.7`. |
102
+ | `--provider=ID` | Override the provider prefix for all agents. The model ID is taken from the active preset; only the `provider/` segment of the `model:` field is swapped. |
100
103
  | `--no-provider-prompt` | Skip the interactive provider prompt. The preset is still applied; no provider prefix override is performed. |
101
- | `--preset=NAME` | Select preset from `config/ndomo.config.json::presets[NAME]`. The preset is the source of truth for agent models at install time. (default: `default`, options: `default`, `budget`) |
104
+ | `--preset=NAME` | Select preset from `config/ndomo.config.json::presets[NAME]`. (default: `default`, options: `default`, `budget`) |
102
105
  | `--with-dcp` | Install and configure the DCP plugin. |
103
- | `--repo=URL` | Override repository URL (for piped installs from a fork). |
104
- | `--branch=NAME` | Override repository branch (for piped installs from dev branches). |
106
+ | `--dry-run` | Print planned changes without writing files. |
107
+ | `--skip-deps` | Skip the `bun install` dependency step. |
108
+ | `--enable-http` | Auto-enable HTTP server (writes http block to `ndomo.config.json`). |
109
+ | `--disable-http` | Skip the HTTP auto-prompt entirely (default in non-TTY / CI). |
110
+ | `--port=N` | HTTP server port (default: `4097`). |
111
+ | `--cors-origins=CSV` | HTTP CORS origins, comma-separated (default: `*`). |
112
+ | `--auth-required=BOOL` | HTTP auth requirement (default: `true`). |
105
113
 
106
- **Uninstall:** `./scripts/uninstall.sh [--keep-data]`
114
+ **Uninstall:** `bunx ndomo install --uninstall` or `./scripts/uninstall.sh [--keep-data]`
107
115
 
108
116
  ## Plans & Tasks DB
109
117
 
@@ -158,10 +166,42 @@ ndomo bundles 7 skills under `skills/`:
158
166
 
159
167
  See [docs/integrations.md](docs/integrations.md) for details.
160
168
 
169
+ ## Web UI
170
+
171
+ The HTTP server includes a read-only Vue 3 SPA for browsing plans, tasks, and sessions in the browser. Single-port topology — the same Elysia process serves both the API (`/api/*`) and the SPA (everything else, with hash-mode fallback).
172
+
173
+ See [docs/web-ui.md](docs/web-ui.md) for architecture, build pipeline, and extension guide.
174
+
175
+ Quick start:
176
+
177
+ ```bash
178
+ bun run web:build # build SPA -> src/http/web/
179
+ NDOMO_HTTP_ENABLED=true OPENCODE_SERVER_PASSWORD=secret bun run src/cli/serve.ts
180
+ # Open http://localhost:4097/
181
+ ```
182
+
183
+ Vite dev mode (HMR):
184
+
185
+ ```bash
186
+ # Terminal 1: server
187
+ NDOMO_HTTP_ENABLED=true OPENCODE_SERVER_PASSWORD=secret bun run src/cli/serve.ts
188
+ # Terminal 2: SPA dev
189
+ bun run web:dev
190
+ # Open http://localhost:5173/
191
+ ```
192
+
161
193
  ## Optional HTTP server
162
194
 
163
195
  Expose ndomo's SQLite state and OpenCode SDK event stream over HTTP+SSE via an embedded Elysia server. Phase 1 ships read-only REST endpoints (`/api/plans`, `/api/tasks`, `/api/sessions`) and a live SSE relay (`/api/events`).
164
196
 
197
+ **Recommended: use the installer flag to enable HTTP:**
198
+
199
+ ```bash
200
+ bunx ndomo install --enable-http
201
+ ```
202
+
203
+ Or set env vars manually and start the server:
204
+
165
205
  ```bash
166
206
  export NDOMO_HTTP_ENABLED=true
167
207
  export OPENCODE_SERVER_PASSWORD='pick-a-strong-passphrase'