@cogitator-ai/cli 0.5.20 → 0.6.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 (99) hide show
  1. package/README.md +98 -40
  2. package/dist/commands/add.d.ts +11 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +79 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/assistant.d.ts.map +1 -1
  7. package/dist/commands/assistant.js +14 -12
  8. package/dist/commands/assistant.js.map +1 -1
  9. package/dist/commands/build.d.ts.map +1 -1
  10. package/dist/commands/build.js +12 -10
  11. package/dist/commands/build.js.map +1 -1
  12. package/dist/commands/daemon.d.ts.map +1 -1
  13. package/dist/commands/daemon.js +17 -13
  14. package/dist/commands/daemon.js.map +1 -1
  15. package/dist/commands/deploy.d.ts +35 -1
  16. package/dist/commands/deploy.d.ts.map +1 -1
  17. package/dist/commands/deploy.js +134 -76
  18. package/dist/commands/deploy.js.map +1 -1
  19. package/dist/commands/dev.d.ts +14 -0
  20. package/dist/commands/dev.d.ts.map +1 -0
  21. package/dist/commands/dev.js +84 -0
  22. package/dist/commands/dev.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +5 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +52 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/eval.d.ts +12 -0
  28. package/dist/commands/eval.d.ts.map +1 -0
  29. package/dist/commands/eval.js +90 -0
  30. package/dist/commands/eval.js.map +1 -0
  31. package/dist/commands/init.d.ts +9 -51
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +87 -400
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/logs.d.ts.map +1 -1
  36. package/dist/commands/logs.js +9 -6
  37. package/dist/commands/logs.js.map +1 -1
  38. package/dist/commands/mcp.d.ts +18 -0
  39. package/dist/commands/mcp.d.ts.map +1 -0
  40. package/dist/commands/mcp.js +155 -0
  41. package/dist/commands/mcp.js.map +1 -0
  42. package/dist/commands/models.d.ts.map +1 -1
  43. package/dist/commands/models.js +43 -15
  44. package/dist/commands/models.js.map +1 -1
  45. package/dist/commands/run.d.ts.map +1 -1
  46. package/dist/commands/run.js +16 -11
  47. package/dist/commands/run.js.map +1 -1
  48. package/dist/commands/skill.d.ts.map +1 -1
  49. package/dist/commands/skill.js +23 -23
  50. package/dist/commands/skill.js.map +1 -1
  51. package/dist/commands/status.d.ts +21 -0
  52. package/dist/commands/status.d.ts.map +1 -1
  53. package/dist/commands/status.js +64 -39
  54. package/dist/commands/status.js.map +1 -1
  55. package/dist/commands/up.d.ts.map +1 -1
  56. package/dist/commands/up.js +26 -24
  57. package/dist/commands/up.js.map +1 -1
  58. package/dist/commands/wizard.d.ts.map +1 -1
  59. package/dist/commands/wizard.js +5 -0
  60. package/dist/commands/wizard.js.map +1 -1
  61. package/dist/index.js +9 -42
  62. package/dist/index.js.map +1 -1
  63. package/dist/program.d.ts +4 -0
  64. package/dist/program.d.ts.map +1 -0
  65. package/dist/program.js +61 -0
  66. package/dist/program.js.map +1 -0
  67. package/dist/utils/add.d.ts +81 -0
  68. package/dist/utils/add.d.ts.map +1 -0
  69. package/dist/utils/add.js +151 -0
  70. package/dist/utils/add.js.map +1 -0
  71. package/dist/utils/cli.d.ts +49 -0
  72. package/dist/utils/cli.d.ts.map +1 -0
  73. package/dist/utils/cli.js +106 -0
  74. package/dist/utils/cli.js.map +1 -0
  75. package/dist/utils/docs.d.ts +39 -0
  76. package/dist/utils/docs.d.ts.map +1 -0
  77. package/dist/utils/docs.js +198 -0
  78. package/dist/utils/docs.js.map +1 -0
  79. package/dist/utils/doctor.d.ts +41 -0
  80. package/dist/utils/doctor.d.ts.map +1 -0
  81. package/dist/utils/doctor.js +378 -0
  82. package/dist/utils/doctor.js.map +1 -0
  83. package/dist/utils/evals.d.ts +50 -0
  84. package/dist/utils/evals.d.ts.map +1 -0
  85. package/dist/utils/evals.js +78 -0
  86. package/dist/utils/evals.js.map +1 -0
  87. package/dist/utils/provider-models.d.ts +8 -2
  88. package/dist/utils/provider-models.d.ts.map +1 -1
  89. package/dist/utils/provider-models.js +32 -52
  90. package/dist/utils/provider-models.js.map +1 -1
  91. package/dist/utils/registry-worker.d.ts +2 -0
  92. package/dist/utils/registry-worker.d.ts.map +1 -0
  93. package/dist/utils/registry-worker.js +35 -0
  94. package/dist/utils/registry-worker.js.map +1 -0
  95. package/dist/utils/registry.d.ts +19 -0
  96. package/dist/utils/registry.d.ts.map +1 -0
  97. package/dist/utils/registry.js +58 -0
  98. package/dist/utils/registry.js.map +1 -0
  99. package/package.json +12 -8
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @cogitator-ai/cli
2
2
 
3
- Command-line interface for the Cogitator AI agent runtime. Scaffold assistant projects, run them in the foreground or as a background service, chat with agents from the terminal, manage Ollama models and Docker services, and deploy.
3
+ Command-line interface for the Cogitator AI agent runtime. Scaffold projects and grow them with `cogitator add`, debug them in Cogitator Studio, give coding agents the docs over MCP, check that a project can run, score it with evals, run assistants in the foreground or as a background service, chat with agents from the terminal, manage Ollama models and Docker services, and deploy.
4
4
 
5
5
  ## Installation
6
6
 
@@ -26,9 +26,10 @@ cogitator wizard # answers → cogitator.yml + .env
26
26
  cogitator up # run it
27
27
 
28
28
  # B) Code-first project
29
- cogitator init my-assistant
29
+ npx create-cogitator-app my-assistant # or: cogitator init my-assistant for a messaging bot
30
30
  cd my-assistant
31
- pnpm dev # or: cogitator assistant
31
+ pnpm dev
32
+ cogitator dev # Cogitator Studio: chat, traces, approvals, workflows, forks
32
33
  ```
33
34
 
34
35
  Quick one-off chat with any model:
@@ -41,59 +42,111 @@ cogitator run -m ollama/llama3.1:8b "What is the capital of France?"
41
42
 
42
43
  ## Commands
43
44
 
44
- | Command | Description |
45
- | ------------------------ | --------------------------------------------------------------------------------------------------------------- |
46
- | `cogitator init [name]` | Scaffold a code-first assistant project |
47
- | `cogitator wizard` | Interactive setup that writes `cogitator.yml` + `.env` |
48
- | `cogitator up` | Run the assistant from `cogitator.yml`, or start Docker services |
49
- | `cogitator down` | Stop Docker Compose services |
50
- | `cogitator assistant` | Run a gateway module (`src/gateway.ts`) with a live dashboard |
51
- | `cogitator run [msg]` | Chat with an agent (one-shot or interactive REPL) |
52
- | `cogitator build` | Bundle a gateway into a self-starting `dist/cogitator.mjs` |
53
- | `cogitator daemon <cmd>` | Run in the background / install as a launchd or systemd service |
54
- | `cogitator skill <cmd>` | Create, validate, install and remove skills |
55
- | `cogitator models` | List or pull Ollama models |
56
- | `cogitator status` | Show Docker Compose and Ollama status (alias: `ps`) |
57
- | `cogitator logs` | View Docker Compose service logs |
58
- | `cogitator deploy` | Deploy with Docker or Fly.io (see [`@cogitator-ai/deploy`](https://www.npmjs.com/package/@cogitator-ai/deploy)) |
59
-
60
- Set `COGITATOR_DEBUG=1` to print stack traces for unexpected errors.
45
+ | Command | Description |
46
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------- |
47
+ | `cogitator init [name]` | Scaffold a messaging assistant project (the `channels` preset of create-cogitator-app) |
48
+ | `cogitator add [features]` | Add rag, mcp, workflows, evals, memory, deploy and the other generated features to a project |
49
+ | `cogitator dev` | Open Cogitator Studio for the project |
50
+ | `cogitator mcp` | Serve the Cogitator docs and the project to coding agents over MCP (stdio) |
51
+ | `cogitator doctor` | Check that a project can run: Node, packages, config, keys, models and services |
52
+ | `cogitator eval [files]` | Run the eval suites and fail when an assertion fails |
53
+ | `cogitator wizard` | Interactive setup that writes `cogitator.yml` + `.env` |
54
+ | `cogitator up` | Run the assistant from `cogitator.yml`, or start Docker services |
55
+ | `cogitator down` | Stop Docker Compose services |
56
+ | `cogitator assistant` | Run a gateway module (`src/gateway.ts`) with a live dashboard |
57
+ | `cogitator run [msg]` | Chat with an agent (one-shot or interactive REPL) |
58
+ | `cogitator build` | Bundle a gateway into a self-starting `dist/cogitator.mjs` |
59
+ | `cogitator daemon <cmd>` | Run in the background / install as a launchd or systemd service |
60
+ | `cogitator skill <cmd>` | Create, validate, install and remove skills |
61
+ | `cogitator models` | List or pull Ollama models |
62
+ | `cogitator status` | Show Docker Compose and Ollama status (alias: `ps`) |
63
+ | `cogitator logs` | View Docker Compose service logs |
64
+ | `cogitator deploy` | Deploy with Docker or Fly.io (see [`@cogitator-ai/deploy`](https://www.npmjs.com/package/@cogitator-ai/deploy)) |
65
+
66
+ Every command ends with examples in its `--help`.
67
+
68
+ ### Output and exit codes
69
+
70
+ Every command exits with `0` when it did what was asked, `1` when it could not (a failed check, deploy or install, a missing service) and `2` when the command line is wrong (an unknown option, command or value, with the closest valid name). Failures print the message and what to do about it on stderr; `COGITATOR_DEBUG=1` adds the stack trace. With `--json` (`add`, `doctor`, `eval`, `models`, `status`, `deploy`) the result goes to stdout as JSON, and a failure as `{ "ok": false, "error": { "message", "exitCode", "hints" } }`.
61
71
 
62
72
  ---
63
73
 
64
74
  ### cogitator init
65
75
 
66
- Creates a TypeScript project with a [`Gateway`](https://www.npmjs.com/package/@cogitator-ai/channels) wired to your chosen LLM provider, channels and memory adapter.
76
+ Creates a messaging assistant project: the `channels` preset of [create-cogitator-app](https://www.npmjs.com/package/create-cogitator-app), generated by the same engine, with the provider, model, channels and memory you choose.
67
77
 
68
78
  ```bash
69
79
  cogitator init my-assistant # prompts for provider, model, channels, memory
70
- cogitator init my-assistant --no-install
80
+ cogitator init my-assistant --no-install --no-git --no-telemetry
71
81
  ```
72
82
 
73
- The prompts cover the LLM provider (Anthropic, OpenAI, Google or Ollama) and model, channels (Telegram, Discord, Slack, WebChat) with their tokens, and the memory adapter. The project name must be a valid npm package name (lowercase, `-`, `_`, `.`). The package manager used for installation is detected from how you invoked the CLI (`pnpm`, `npm`, `yarn` or `bun`).
83
+ The prompts cover the LLM provider (Anthropic, OpenAI, Google or Ollama) and model, channels (Telegram, Discord, Slack, WebChat) with their tokens, and the memory adapter (SQLite, in-memory or Postgres). Tokens and keys go to `.env` (mode 600). The project is the same as `npx create-cogitator-app my-assistant --preset channels`: the registry in `src/cogitator.ts`, tests on a mocked model, `cogitator.yml`, `AGENTS.md`, Cogitator Studio and the rest. The assistant is `src/gateway.ts`, the `gateway` export that `cogitator assistant`, `cogitator build` and `cogitator daemon` run, and `src/index.ts` starts it for `dev` and `start`.
74
84
 
85
+ ---
86
+
87
+ ### cogitator add
88
+
89
+ ```bash
90
+ cogitator add rag # answers grounded in docs/
91
+ cogitator add workflows evals # two features at once
92
+ cogitator add --memory postgres # switch the memory adapter
93
+ cogitator add --deploy docker --dry-run # every diff, nothing written
94
+ cogitator add --agent claude # MCP config and skill for Claude Code
95
+ ```
96
+
97
+ Grows a project created by create-cogitator-app or `cogitator init` with the same feature modules that generated it: the project and its extended spec are both planned, and what the addition changes between them is merged into the files on disk. Files still as generated (by the hashes in `.cogitator/scaffold.json`) take the change; `package.json`, `cogitator.yml`, `docker-compose.yml` and `pnpm-workspace.yaml` merge key by key, keeping your values and comments; the managed block of `AGENTS.md` is rewritten and the rest kept; `.gitignore` gains missing lines; an edited README is left with a note. Any other file you edited that the addition changes is a conflict: nothing is written, and the change is printed as a diff. Adding what the project has is a no-op. New dependencies are installed (`--no-install` skips it), the written files formatted, and the new spec and command recorded in `package.json`.
98
+
99
+ ---
100
+
101
+ ### cogitator dev
102
+
103
+ ```bash
104
+ cogitator dev # http://localhost:4321, opens the browser
105
+ cogitator dev --port 4400 --no-open
106
+ cogitator dev --host 0.0.0.0 # reachable from your network, with a token in the URL
75
107
  ```
76
- my-assistant/
77
- ├── package.json # @cogitator-ai/* pinned to the versions this CLI ships with
78
- ├── tsconfig.json
79
- ├── .env # API keys, channel tokens, DATABASE_URL (mode 0600, only when needed)
80
- ├── .gitignore
81
- ├── cogitator.yml # provider, model, memory and deploy settings for `cogitator run` / `cogitator deploy`
82
- ├── pnpm-workspace.yaml # pnpm only: allows the better-sqlite3 / esbuild / sharp builds
83
- └── src/
84
- ├── gateway.ts # exports `gateway` — agent, channels, memory adapter
85
- └── agent.ts # starts the gateway (pnpm dev / pnpm start)
108
+
109
+ Opens [Cogitator Studio](https://www.npmjs.com/package/@cogitator-ai/studio) for the project in the current directory: chat with every agent of `src/cogitator.ts` (streamed answers, reasoning, tool calls, stop, threads), approve tool calls that need it, read the waterfall trace of each run with nested agents, tokens and cost per model call, run workflows with live node statuses and rerun them from a node, and fork a run from any step with a changed input or tool result. The project runs in a child process that reloads when you save (`--no-watch` turns it off). History lives in `.cogitator/studio/`.
110
+
111
+ ---
112
+
113
+ ### cogitator mcp
114
+
115
+ A stdio MCP server for Claude Code, Cursor and Codex, configured by `create-cogitator-app --agent` or `cogitator add --agent`:
116
+
117
+ | Tool | What it does |
118
+ | ----------------- | ------------------------------------------------------------------------------------------ |
119
+ | `search_docs` | Searches the docs bundled with the installed `@cogitator-ai/core`, best passages first |
120
+ | `read_doc` | Reads a page, or one section with `path#section` |
121
+ | `inspect_project` | The agents (model, instructions, tool schemas), workflows and swarms of `src/cogitator.ts` |
122
+ | `check_project` | Runs `cogitator doctor`, offline unless asked |
123
+
124
+ The registry loads in a child process, so the agent always sees the current code and the project's own output never reaches the MCP stream. The server finds the project from a subdirectory, or takes `--project <dir>`.
125
+
126
+ ---
127
+
128
+ ### cogitator doctor
129
+
130
+ ```bash
131
+ cogitator doctor # Node, packages, cogitator.yml, keys, services, models
132
+ cogitator doctor --offline # no provider or service probes
133
+ cogitator doctor --json
86
134
  ```
87
135
 
88
- | Memory choice | Generated adapter | Extra dependency | Notes |
89
- | ------------- | ----------------- | ---------------- | ---------------------------------------------------------------- |
90
- | SQLite | `SQLiteAdapter` | `better-sqlite3` | Stored in `./data/memory.db` (the directory is created at start) |
91
- | In-memory | `InMemoryAdapter` | - | Lost on restart |
92
- | PostgreSQL | `PostgresAdapter` | `pg` | Connection string in `DATABASE_URL` |
136
+ Checks the Node version against `engines`, the installed `@cogitator-ai/*` packages, `cogitator.yml`, the variables `src/env.ts` requires, the provider key (with a cheap call), Redis, Postgres and the other services the config uses, and the Ollama models. Each problem comes with the fix; it exits `1` when one fails.
137
+
138
+ ---
93
139
 
94
- `src/gateway.ts` loads `.env` itself (`process.loadEnvFile`, Node ≥ 20.12), so it works with `pnpm dev`, `cogitator assistant`, `cogitator build` and the daemon alike.
140
+ ### cogitator eval
141
+
142
+ ```bash
143
+ cogitator eval # every evals/*.eval.ts
144
+ cogitator eval evals/answers.eval.ts --max-cases 5
145
+ cogitator eval --json --report eval-report.json # for CI
146
+ cogitator eval --skip-without-key # exit 0 on forks without the key
147
+ ```
95
148
 
96
- `package.json` pins the package manager that ran `init` in its `packageManager` field (pnpm, Yarn or Bun), so corepack and the deploy image install with the same version. `cogitator.yml` makes the project deployable as it is: `cogitator deploy` runs the gateway as a worker (no HTTP health check, the WebChat port published when WebChat is on), keeps the SQLite database on a volume and passes the API key and channel tokens as secrets. The code in `src/` configures the gateway itself, so change the provider, model or memory in both places.
149
+ Runs eval suites (files exporting an `EvalSuite` from `@cogitator-ai/evals` as default) and exits `1` when an assertion fails or every case errored.
97
150
 
98
151
  ---
99
152
 
@@ -247,6 +300,7 @@ Local skills live in `./skills`, global ones in `~/.cogitator/skills`. Skill nam
247
300
  cogitator models # list installed models
248
301
  cogitator models --pull qwen2.5:0.5b # pull with progress
249
302
  cogitator models --url http://gpu-box:11434
303
+ cogitator models --json # name, size and date of each model
250
304
  ```
251
305
 
252
306
  The Ollama URL defaults to `OLLAMA_BASE_URL`, then `OLLAMA_URL`, then `OLLAMA_HOST` (read like Ollama reads it: port 11434 when none is given, `0.0.0.0` as `localhost`), then `http://localhost:11434`, `OLLAMA_API_KEY` is sent as a bearer token. Pull errors reported by Ollama (e.g. unknown model) fail the command.
@@ -257,6 +311,7 @@ The Ollama URL defaults to `OLLAMA_BASE_URL`, then `OLLAMA_URL`, then `OLLAMA_HO
257
311
 
258
312
  ```bash
259
313
  cogitator status # compose services (state, health) + Ollama reachability
314
+ cogitator status --json
260
315
  cogitator logs ollama -f -t -n 50
261
316
  cogitator logs -n all
262
317
  ```
@@ -276,6 +331,7 @@ cogitator logs -n all
276
331
 
277
332
  ```bash
278
333
  cogitator deploy --dry-run # analyze + preflight only
334
+ cogitator deploy --dry-run --json # the plan for scripts and CI: secrets, services, warnings, checks
279
335
  cogitator deploy # docker: build image, start compose stack
280
336
  cogitator deploy --target fly --region ord
281
337
  cogitator deploy --registry ghcr.io/acme # build + push (use --no-push to skip)
@@ -291,6 +347,7 @@ cogitator deploy destroy
291
347
  | `--no-push` | Skip pushing even when a registry is set |
292
348
  | `--dry-run` | Show the plan without executing |
293
349
  | `--region <region>` | Deploy region (Fly.io) |
350
+ | `--json` | The plan, result or status as JSON |
294
351
 
295
352
  The model, memory and `deploy:` section all come from one config file: the `-c` file, else the first of `cogitator.yml`, `cogitator.yaml`, `.cogitator.yml`, `.cogitator.yaml`. The plan lists the kind (server or worker), detected services (marked as not provisioned on Fly, where `REDIS_URL` / `DATABASE_URL` are required instead), volumes, required secrets (read from the environment or the project's `.env`), warnings and preflight checks. On Docker the deploy only succeeds when the app container keeps running after it starts, otherwise its last log lines are shown. See [`@cogitator-ai/deploy`](https://www.npmjs.com/package/@cogitator-ai/deploy) and the [deploy guide](https://cogitator.app/docs/deployment/deploy-package) for details.
296
353
 
@@ -306,6 +363,7 @@ The model, memory and `deploy:` section all come from one config file: the `-c`
306
363
  | `OLLAMA_API_KEY` | `run`, `models`, `wizard` | Ollama Cloud / authenticated Ollama |
307
364
  | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY` | `run`, `init`, `wizard` | Provider keys |
308
365
  | `COGITATOR_DEBUG` | all | Print stack traces |
366
+ | `COGITATOR_TELEMETRY_DISABLED`, `DO_NOT_TRACK` | `init` | Send no anonymous usage event |
309
367
 
310
368
  See [`@cogitator-ai/config`](https://www.npmjs.com/package/@cogitator-ai/config) and the [configuration guide](https://cogitator.app/docs/getting-started/configuration) for every `COGITATOR_*` variable.
311
369
 
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ import { type AddFlags } from '../utils/add.js';
3
+ export interface AddCommandFlags extends AddFlags {
4
+ dryRun?: boolean;
5
+ json?: boolean;
6
+ install?: boolean;
7
+ }
8
+ /** Adds features to the project in `directory` and resolves with the exit code. */
9
+ export declare function runAdd(directory: string, features: readonly string[], flags: AddCommandFlags): Promise<number>;
10
+ export declare const addCommand: Command;
11
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAIzB,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,mFAAmF;AACnF,wBAAsB,MAAM,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAMD,eAAO,MAAM,UAAU,SA6BnB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { addToProject, changesDependencies, FEATURES, installCommand, planAdd, silentLogger, } from 'create-cogitator-app';
4
+ import { addChangesFrom, addPlanJson, formatAddPlan, formatConflicts, } from '../utils/add.js';
5
+ import { examplesHelp } from '../utils/cli.js';
6
+ import { log } from '../utils/logger.js';
7
+ const consoleLogger = {
8
+ start: (message) => log.step(message),
9
+ done: (message) => log.success(message),
10
+ fail: (message) => log.error(message),
11
+ warn: (message) => log.warn(message),
12
+ };
13
+ /** Adds features to the project in `directory` and resolves with the exit code. */
14
+ export async function runAdd(directory, features, flags) {
15
+ const changes = addChangesFrom(features, flags);
16
+ const plan = planAdd(directory, changes);
17
+ const refused = plan.conflicts.length > 0;
18
+ if (flags.dryRun || refused || plan.upToDate) {
19
+ if (flags.json)
20
+ console.log(JSON.stringify(addPlanJson(plan), null, 2));
21
+ else
22
+ console.log(refused ? formatConflicts(plan) : formatAddPlan(plan, { diffs: true }));
23
+ return refused ? 1 : 0;
24
+ }
25
+ const result = await addToProject(directory, changes, {
26
+ install: flags.install !== false,
27
+ log: flags.json ? silentLogger : consoleLogger,
28
+ });
29
+ if (flags.json) {
30
+ console.log(JSON.stringify(addPlanJson(result.plan, result), null, 2));
31
+ return result.install.status === 'failed' ? 1 : 0;
32
+ }
33
+ console.log(`\n${formatAddPlan(result.plan, { diffs: false })}\n`);
34
+ const steps = [];
35
+ if (changesDependencies(result.plan) && result.install.status !== 'done') {
36
+ steps.push(installCommand(result.plan.to.packageManager));
37
+ }
38
+ for (const variable of result.plan.env.filter((entry) => entry.required)) {
39
+ steps.push(`set ${variable.name} in .env ${chalk.dim(`(${variable.description})`)}`);
40
+ }
41
+ if (result.plan.services.length > 0) {
42
+ steps.push(`docker compose up -d ${result.plan.services.join(' ')}`);
43
+ }
44
+ if (steps.length > 0)
45
+ console.log([chalk.bold('Next'), ...steps.map((step) => ` ${step}`)].join('\n'));
46
+ log.success(`Added ${result.plan.summary.join(', ')}`);
47
+ return result.install.status === 'failed' ? 1 : 0;
48
+ }
49
+ function collect(value, previous = []) {
50
+ return [...previous, value];
51
+ }
52
+ export const addCommand = new Command('add')
53
+ .description('Add features to a project created by create-cogitator-app or cogitator init')
54
+ .argument('[features...]', `features to add: ${FEATURES.join(', ')}`)
55
+ .option('--memory <kind>', 'switch the memory adapter: memory, sqlite, postgres, redis, mongodb')
56
+ .option('--vector-store <store>', 'switch the RAG vector store: memory, postgres, qdrant')
57
+ .option('--deploy <target>', 'add deployment: docker or fly')
58
+ .option('--channel <name>', 'add a messaging channel to a bot (repeatable)', collect)
59
+ .option('--agent <name>', 'add coding agent setup: claude, cursor, codex (repeatable)', collect)
60
+ .option('--dry-run', 'show what would change, with diffs, without writing anything')
61
+ .option('--json', 'print the plan or the result as JSON')
62
+ .option('--no-install', 'do not install when the dependencies change')
63
+ .addHelpText('after', [
64
+ examplesHelp([
65
+ ['cogitator add rag', 'answers grounded in docs/'],
66
+ ['cogitator add workflows evals', 'two features at once'],
67
+ ['cogitator add --memory postgres', 'switch memory to Postgres'],
68
+ ['cogitator add --deploy docker --dry-run', 'see every diff first'],
69
+ ]),
70
+ '',
71
+ 'Files you edited are merged where they can be (package.json, cogitator.yml,',
72
+ 'docker-compose.yml, the managed block of AGENTS.md, .gitignore). When the',
73
+ 'addition needs to change a file you edited in another way, nothing is written',
74
+ 'and the change is printed as a diff. Adding what the project has is a no-op.',
75
+ ].join('\n'))
76
+ .action(async (features, flags) => {
77
+ process.exitCode = await runAdd(process.cwd(), features, flags);
78
+ });
79
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/commands/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAYlE;AAED,eAAO,MAAM,gBAAgB,SAsEzB,CAAC;AA0HL,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ/C"}
1
+ {"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/commands/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAYlE;AAED,eAAO,MAAM,gBAAgB,SAgFzB,CAAC;AA0HL,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ/C"}
@@ -3,6 +3,7 @@ import chalk from 'chalk';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { resolve } from 'node:path';
5
5
  import { log, printBanner } from '../utils/logger.js';
6
+ import { CommandError, exitWithFailure, examplesHelp } from '../utils/cli.js';
6
7
  import { importUserModule } from '../utils/module-loader.js';
7
8
  import { loadDotenvInto } from '../utils/env.js';
8
9
  export function isGatewayLike(value) {
@@ -24,15 +25,19 @@ export const assistantCommand = new Command('assistant')
24
25
  .description('Start AI assistant with live dashboard')
25
26
  .option('-c, --config <path>', 'Path to gateway config file', 'src/gateway.ts')
26
27
  .option('-q, --quiet', 'Minimal output (no banner, live status or hotkeys)')
28
+ .addHelpText('after', examplesHelp([
29
+ ['cogitator assistant', 'start src/gateway.ts with the live dashboard'],
30
+ ['cogitator assistant -c src/bot.ts -q', 'another config, plain output'],
31
+ ]))
27
32
  .action(async (options) => {
28
33
  const quiet = options.quiet ?? false;
29
34
  if (!quiet)
30
35
  printBanner();
31
36
  const configPath = resolve(process.cwd(), options.config);
32
37
  if (!existsSync(configPath)) {
33
- log.error(`Config not found: ${configPath}`);
34
- log.dim('Run "cogitator init" to create a project first');
35
- process.exit(1);
38
+ throw new CommandError(`Config not found: ${configPath}`, {
39
+ hints: ['Run "cogitator init" to create a project first'],
40
+ });
36
41
  }
37
42
  log.info(`Loading config from ${chalk.dim(options.config)}`);
38
43
  loadDotenvInto(resolve(process.cwd(), '.env'), process.env);
@@ -42,21 +47,19 @@ export const assistantCommand = new Command('assistant')
42
47
  gatewayExport = mod.gateway;
43
48
  }
44
49
  catch (err) {
45
- log.error(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`);
46
- process.exit(1);
50
+ throw new CommandError(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`);
47
51
  }
48
52
  if (!isGatewayLike(gatewayExport)) {
49
- log.error('Config file must export a "gateway" instance');
50
- log.dim('Example: export const gateway = new Gateway({ ... })');
51
- process.exit(1);
53
+ throw new CommandError('Config file must export a "gateway" instance', {
54
+ hints: ['Example: export const gateway = new Gateway({ ... })'],
55
+ });
52
56
  }
53
57
  const gateway = gatewayExport;
54
58
  try {
55
59
  await gateway.start();
56
60
  }
57
61
  catch (err) {
58
- log.error(`Failed to start: ${err instanceof Error ? err.message : String(err)}`);
59
- process.exit(1);
62
+ throw new CommandError(`Failed to start: ${err instanceof Error ? err.message : String(err)}`);
60
63
  }
61
64
  printDashboard(gateway, quiet);
62
65
  let stopping = false;
@@ -75,8 +78,7 @@ export const assistantCommand = new Command('assistant')
75
78
  process.exit(0);
76
79
  }
77
80
  catch (err) {
78
- log.error(`Shutdown failed: ${err instanceof Error ? err.message : String(err)}`);
79
- process.exit(1);
81
+ exitWithFailure(new CommandError(`Shutdown failed: ${err instanceof Error ? err.message : String(err)}`));
80
82
  }
81
83
  };
82
84
  process.on('SIGINT', () => void shutdown());
@@ -1 +1 @@
1
- {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../src/commands/assistant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../src/commands/assistant.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA4B7D;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzF;AAQD,eAAO,MAAM,YAAY,SAgFtB,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA4B7D;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzF;AAQD,eAAO,MAAM,YAAY,SAqFtB,CAAC"}
@@ -3,6 +3,7 @@ import chalk from 'chalk';
3
3
  import { existsSync, mkdirSync, statSync } from 'node:fs';
4
4
  import { dirname, resolve, relative } from 'node:path';
5
5
  import { log, printBanner } from '../utils/logger.js';
6
+ import { CommandError, errorMessage, examplesHelp } from '../utils/cli.js';
6
7
  import { importOptionalPackage } from '../utils/module-loader.js';
7
8
  import { BUNDLE_MARKER } from '../utils/daemon.js';
8
9
  function isEsbuildApi(value) {
@@ -99,6 +100,10 @@ export const buildCommand = new Command('build')
99
100
  .option('--no-sourcemap', 'Disable sourcemap')
100
101
  .option('--minify', 'Minify output')
101
102
  .option('-q, --quiet', 'Minimal output')
103
+ .addHelpText('after', examplesHelp([
104
+ ['cogitator build', 'bundle src/gateway.ts into dist/cogitator.mjs'],
105
+ ['cogitator build --minify --no-sourcemap', 'the smallest bundle'],
106
+ ]))
102
107
  .action(async (options) => {
103
108
  if (!options.quiet)
104
109
  printBanner();
@@ -106,15 +111,15 @@ export const buildCommand = new Command('build')
106
111
  const configPath = resolve(cwd, options.config);
107
112
  const outfile = resolve(cwd, options.outfile);
108
113
  if (!existsSync(configPath)) {
109
- log.error(`Config not found: ${configPath}`);
110
- log.dim('Run "cogitator init" to create a project first');
111
- process.exit(1);
114
+ throw new CommandError(`Config not found: ${configPath}`, {
115
+ hints: ['Run "cogitator init" to create a project first'],
116
+ });
112
117
  }
113
118
  const esbuild = await loadEsbuild(cwd);
114
119
  if (!esbuild) {
115
- log.error('esbuild is required for building. Install it:');
116
- log.dim(' pnpm add -D esbuild');
117
- process.exit(1);
120
+ throw new CommandError('esbuild is required for building. Install it:', {
121
+ hints: [' pnpm add -D esbuild'],
122
+ });
118
123
  }
119
124
  mkdirSync(dirname(outfile), { recursive: true });
120
125
  log.step(`Bundling ${chalk.dim(relative(cwd, configPath))}`);
@@ -131,10 +136,7 @@ export const buildCommand = new Command('build')
131
136
  }));
132
137
  }
133
138
  catch (error) {
134
- log.error('Build failed');
135
- if (error instanceof Error)
136
- log.dim(error.message);
137
- process.exit(1);
139
+ throw new CommandError('Build failed', { hints: [errorMessage(error)] });
138
140
  }
139
141
  const elapsed = ((performance.now() - startTime) / 1000).toFixed(2);
140
142
  const sizeStr = formatSize(statSync(outfile).size);
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAyK1D,eAAO,MAAM,aAAa,SAAwE,CAAC"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAyK1D,eAAO,MAAM,aAAa,SASvB,CAAC"}
@@ -5,6 +5,7 @@ import { homedir } from 'node:os';
5
5
  import { dirname, resolve } from 'node:path';
6
6
  import { execFileSync, spawn } from 'node:child_process';
7
7
  import { log } from '../utils/logger.js';
8
+ import { CommandError, exitWithFailure, examplesHelp } from '../utils/cli.js';
8
9
  import { DAEMON_LABEL, SYSTEMD_UNIT, buildLaunchdPlist, buildSystemdUnit, isDaemonProcess, isProcessAlive, readPidRecord, resolveDaemonLaunch, serializePidRecord, } from '../utils/daemon.js';
9
10
  const STOP_POLL_MS = 500;
10
11
  const STOP_ATTEMPTS = 20;
@@ -42,9 +43,9 @@ function resolveLaunch(config) {
42
43
  });
43
44
  }
44
45
  catch (error) {
45
- log.error(error instanceof Error ? error.message : String(error));
46
- log.dim('Run "cogitator init" or "cogitator wizard" to create a project first');
47
- process.exit(1);
46
+ throw new CommandError(error instanceof Error ? error.message : String(error), {
47
+ hints: ['Run "cogitator init" or "cogitator wizard" to create a project first'],
48
+ });
48
49
  }
49
50
  }
50
51
  function runningDaemon() {
@@ -105,8 +106,7 @@ function startDaemon(config) {
105
106
  closeSync(out);
106
107
  }
107
108
  if (!pid) {
108
- log.error('Failed to start daemon');
109
- process.exit(1);
109
+ throw new CommandError('Failed to start daemon');
110
110
  }
111
111
  writeFileSync(pidFile(), serializePidRecord({ pid, script: launch.args[0] }));
112
112
  log.success(`Daemon started (PID: ${pid})`);
@@ -137,7 +137,13 @@ function psField(pid, field) {
137
137
  return null;
138
138
  }
139
139
  }
140
- export const daemonCommand = new Command('daemon').description('Manage background daemon process');
140
+ export const daemonCommand = new Command('daemon')
141
+ .description('Manage background daemon process')
142
+ .addHelpText('after', examplesHelp([
143
+ ['cogitator daemon install', 'run the assistant at login (launchd or systemd)'],
144
+ ['cogitator daemon start', 'start it in the background now'],
145
+ ['cogitator daemon logs -f', 'follow its output'],
146
+ ]));
141
147
  daemonCommand
142
148
  .command('start')
143
149
  .description('Start the assistant as a background daemon')
@@ -226,8 +232,7 @@ daemonCommand
226
232
  args.push(logFile());
227
233
  const tail = spawn('tail', args, { stdio: 'inherit' });
228
234
  tail.on('error', (error) => {
229
- log.error(`Failed to run tail: ${error.message}`);
230
- process.exit(1);
235
+ exitWithFailure(new CommandError(`Failed to run tail: ${error.message}`));
231
236
  });
232
237
  tail.on('exit', (code) => process.exit(code ?? 0));
233
238
  });
@@ -237,9 +242,9 @@ daemonCommand
237
242
  .option('-c, --config <path>', 'Entry to run: cogitator.yml, a gateway module, or a bundle (default: auto-detect)')
238
243
  .action((options) => {
239
244
  if (process.platform !== 'darwin' && process.platform !== 'linux') {
240
- log.error(`Unsupported platform: ${process.platform}`);
241
- log.dim('Manual setup required for Windows');
242
- process.exit(1);
245
+ throw new CommandError(`Unsupported platform: ${process.platform}`, {
246
+ hints: ['Manual setup required for Windows'],
247
+ });
243
248
  }
244
249
  const launch = resolveLaunch(options.config);
245
250
  mkdirSync(dataDir(), { recursive: true });
@@ -267,8 +272,7 @@ daemonCommand
267
272
  uninstallSystemd();
268
273
  }
269
274
  else {
270
- log.error(`Unsupported platform: ${process.platform}`);
271
- process.exit(1);
275
+ throw new CommandError(`Unsupported platform: ${process.platform}`);
272
276
  }
273
277
  });
274
278
  function launchdPlistPath() {