@eventmodelers/cli 1.0.55 → 1.0.57
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.
- package/README.md +82 -0
- package/RELEASE_NOTES.md +12 -0
- package/cli.js +529 -67
- package/package.json +1 -1
- package/stacks/modeling-kit/templates/kit/CLAUDE.md +75 -0
- package/stacks/node/templates/.claude/skills/build-automation/SKILL.md +5 -1
- package/stacks/node/templates/.claude/skills/build-state-change/SKILL.md +90 -2
- package/stacks/node/templates/.claude/skills/build-state-view/SKILL.md +81 -3
- package/stacks/node/templates/build-kit/CLAUDE.md +6 -1
- package/stacks/node/templates/build-kit/lib/checks/60-openapi-annotation.cjs +72 -0
- package/stacks/supabase/templates/.claude/skills/build-automation/SKILL.md +5 -1
- package/stacks/supabase/templates/.claude/skills/build-state-change/SKILL.md +90 -2
- package/stacks/supabase/templates/.claude/skills/build-state-view/SKILL.md +80 -2
- package/stacks/supabase/templates/.claude/skills/build-webhook/SKILL.md +73 -0
- package/stacks/supabase/templates/build-kit/CLAUDE.md +6 -1
- package/stacks/supabase/templates/build-kit/lib/checks/60-openapi-annotation.cjs +72 -0
- package/stacks/supabase/templates/root/src/swagger.ts +3 -1
package/README.md
CHANGED
|
@@ -116,6 +116,9 @@ npx @eventmodelers/cli run # start the agent loop (ralp
|
|
|
116
116
|
npx @eventmodelers/cli run --ollama # same, via local Ollama (ralph-ollama.js)
|
|
117
117
|
npx @eventmodelers/cli run --bash # bash-only loop, no realtime (ralph.sh)
|
|
118
118
|
npx @eventmodelers/cli run --local # skip platform config/credential lookup entirely — local-only, no board sync
|
|
119
|
+
npx @eventmodelers/cli run --modeling # modeling-kit: warm Claude process driven by the board's prompt queue
|
|
120
|
+
npx @eventmodelers/cli run --standalone # same, plus acting on board changes unprompted — and needs no install at all
|
|
121
|
+
npx @eventmodelers/cli run --standalone --board-id <uuid> # …from any directory, against any board (see Power users)
|
|
119
122
|
npx @eventmodelers/cli fetch --context <name> # pull full slice detail for one context on the board into <kit-dir>/.slices/
|
|
120
123
|
npx @eventmodelers/cli fetch --context <name> --slice-id <id> # same, then print just that slice
|
|
121
124
|
npx @eventmodelers/cli fetch --context <name> --slice-title <title> # same, then print just the slice matching this title
|
|
@@ -153,6 +156,83 @@ This scaffolds `.build-kit/CLAUDE.md`, `lib/prompt.md`, `lib/backend-prompt.md`,
|
|
|
153
156
|
|
|
154
157
|
Installing both a build stack and `init-modeling` into the same project reuses this one `.eventmodelers/config.json` — run whichever `init` command second and it finds the existing config already satisfies the required fields and skips straight past the credential prompt.
|
|
155
158
|
|
|
159
|
+
### The modeling agent — `run --modeling` and `--standalone`
|
|
160
|
+
|
|
161
|
+
A modeling-kit install has one runtime: a warm Claude process the CLI keeps alive across
|
|
162
|
+
turns and feeds directly over stdin, so a prompt typed (or spoken) on the board is picked up
|
|
163
|
+
with no cold start and no `tasks.json` round trip.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
npx @eventmodelers/cli run --modeling # react to prompts sent to this board
|
|
167
|
+
npx @eventmodelers/cli run --standalone # …and to board changes, on its own initiative
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`--standalone` implies `--modeling`, so you never need both.
|
|
171
|
+
|
|
172
|
+
**No install required.** A modeling agent never touches the directory it was started from —
|
|
173
|
+
it works against the board over MCP/REST — so it doesn't need a kit scaffolded there. When
|
|
174
|
+
the current directory has no modeling kit, `run --modeling`/`run --standalone` fall back to a
|
|
175
|
+
single global install under `~/.eventmodelers/kit`, initialized on first use and refreshed
|
|
176
|
+
when you upgrade the CLI. Pass `--global` to prefer it even when a local kit does exist.
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
npx @eventmodelers/cli run --standalone --board-id <uuid> # from any directory, nothing written there
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Credentials are per board, not per directory.** The first time this machine runs a board it
|
|
183
|
+
asks one question — does this board get credentials of its own, or does it use your
|
|
184
|
+
account-wide ones? Answer once and it's remembered: either the board's credentials or a
|
|
185
|
+
`useGlobal` marker lands in `~/.eventmodelers/boards/<board>.json`, and you're not asked
|
|
186
|
+
again. The question is skipped entirely when the answer is already implied (credentials given
|
|
187
|
+
on the command line) or when there's no one to ask (`--print`, or a non-interactive stdin such
|
|
188
|
+
as CI or a process supervisor).
|
|
189
|
+
|
|
190
|
+
To configure a board up front instead, paste the blob from
|
|
191
|
+
[app.eventmodelers.ai/account](https://app.eventmodelers.ai/account):
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
npx @eventmodelers/cli init-config --credentials "token=<uuid>,boardId=<uuid>,organizationId=<uuid>,baseUrl=https://api.eventmodelers.ai"
|
|
195
|
+
npx @eventmodelers/cli run --standalone --board-id <uuid> # all it needs from here on
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
`--credentials` also takes the equivalent JSON, or `-` to read either from stdin, so a token
|
|
199
|
+
need never appear in your shell history or in `ps`. `run` accepts it too, for configuring and
|
|
200
|
+
starting in one command. Resolution order for a run is `--credentials` and the individual
|
|
201
|
+
`--token`/`--organization-id`/`--board-id`/`--base-url` flags, then `EVENTMODELERS_*` env vars,
|
|
202
|
+
then `~/.eventmodelers/boards/<board>.json`, then the usual `.eventmodelers/config.json` walk,
|
|
203
|
+
and finally the account's default board. Whatever a run resolves is saved back to the
|
|
204
|
+
per-board file (`0600`, in a `0700` directory) along with a stable agent id for the board's
|
|
205
|
+
alive-ping. One machine can therefore drive several boards, across several accounts, at once.
|
|
206
|
+
The global kit itself holds no credentials at all — the token reaches `claude` through the
|
|
207
|
+
spawned process's environment.
|
|
208
|
+
|
|
209
|
+
A kit installed in the current directory still wins by default and behaves exactly as before,
|
|
210
|
+
reading its own `.eventmodelers/config.json`.
|
|
211
|
+
|
|
212
|
+
Without `--standalone` the agent only ever answers direct messages. With it, the loop also
|
|
213
|
+
subscribes to the board's own change channel — the same one the canvas and the build agents
|
|
214
|
+
use — and when the board falls quiet after someone edits it, the agent gets a turn nobody
|
|
215
|
+
asked for and decides for itself whether there's something a human collaborator would
|
|
216
|
+
obviously have done: example data on a freshly placed element, a missing attribute on the
|
|
217
|
+
rest of the chain, a screen for an empty SCREEN node, a question comment on a gap. It does at
|
|
218
|
+
most one focused thing per change, adds rather than deletes, and answers `NOOP` when there's
|
|
219
|
+
nothing worth doing (see the "Standalone board-change turns" section in
|
|
220
|
+
`.agent-modeling-kit/CLAUDE.md`).
|
|
221
|
+
|
|
222
|
+
Its own writes come back on that same channel and the platform can't tell them apart from a
|
|
223
|
+
human's, so the lane is deliberately damped: it waits for a quiet period, ignores everything
|
|
224
|
+
that arrives while a turn runs or shortly after one ends, and never fires twice in quick
|
|
225
|
+
succession. Override the three windows if the defaults don't suit your board:
|
|
226
|
+
|
|
227
|
+
| Env var | Default | What it controls |
|
|
228
|
+
|---|---|---|
|
|
229
|
+
| `EVENTMODELERS_STANDALONE_DEBOUNCE_MS` | `8000` | quiet period before a board change turns into a turn |
|
|
230
|
+
| `EVENTMODELERS_STANDALONE_ECHO_WINDOW_MS` | `20000` | after a turn, how long incoming changes are treated as the agent's own echo |
|
|
231
|
+
| `EVENTMODELERS_STANDALONE_MIN_INTERVAL_MS` | `60000` | floor between two self-directed turns |
|
|
232
|
+
|
|
233
|
+
Direct prompts always outrank the agent's own initiative — a standalone turn waits while
|
|
234
|
+
anything from the prompt queue is running.
|
|
235
|
+
|
|
156
236
|
### Installing skills globally
|
|
157
237
|
|
|
158
238
|
By default, skills are copied into the project's own `.claude/skills/`. Pass `--global` to `init` or `init-modeling` to install them into `~/.claude/skills/` instead — available in every project without re-running the installer each time:
|
|
@@ -248,6 +328,8 @@ Running any command from inside `~/projects/checkout-app` resolves `organization
|
|
|
248
328
|
```bash
|
|
249
329
|
npx @eventmodelers/cli init-config # interactive, writes to ./.eventmodelers/config.json
|
|
250
330
|
npx @eventmodelers/cli init-config --board-id <uuid> # non-interactive, just overrides one field
|
|
331
|
+
npx @eventmodelers/cli init-config --credentials "token=...,boardId=...,organizationId=...,baseUrl=..." # configure ONE board (~/.eventmodelers/boards/<board>.json), no prompts
|
|
332
|
+
npx @eventmodelers/cli init-config --credentials - # same, read from stdin (keeps the token out of shell history)
|
|
251
333
|
```
|
|
252
334
|
|
|
253
335
|
### Env vars and `--config` (scripted/CI installs)
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## v1.0.56
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
- `run --standalone` no longer needs a modeling kit installed in the current directory. With none there, it falls back to a single global install under `~/.eventmodelers/kit`, initialized on first use and refreshed when the CLI version changes — so `npx @eventmodelers/cli run --standalone --board-id <uuid>` works from anywhere and writes nothing into the directory it was started from. `--global` selects that install explicitly even when a local kit exists.
|
|
5
|
+
- `--standalone` now implies `--modeling` — it already refused every other runner, so requiring both flags only made the shorter command fail.
|
|
6
|
+
- `run` accepts `--token`/`--board-id`/`--organization-id`/`--base-url`, the same credential flags `init` and `init-config` take, so credentials can be given per agent run rather than per directory. They're stored per board in `~/.eventmodelers/boards/<board>.json` (`0600`) together with a stable agent id, so later runs for the same board need only `--board-id`. One machine can drive several boards across several accounts at once.
|
|
7
|
+
- The first run for a board asks once whether it should have credentials of its own or use the account-wide ones, and remembers the answer — either the credentials or a `useGlobal` marker is written to `~/.eventmodelers/boards/<board>.json`. The question is skipped when credentials are given on the command line, under `--print`, or when stdin is not interactive, so CI and process supervisors never block on it.
|
|
8
|
+
- `init-config --credentials "token=...,boardId=...,organizationId=...,baseUrl=..."` configures a single board non-interactively from the blob app.eventmodelers.ai/account hands out. The equivalent JSON works too, and `-` reads either from stdin so a token need not appear in shell history or `ps`. `run --credentials` takes the same value, for configuring and starting in one command.
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
- `init --modeling` no longer runs `npm install` in the kit dir — modeling-kit's `package.json` declares no dependencies and exists only for its `"type": "module"`.
|
|
12
|
+
|
|
1
13
|
## v0.0.38
|
|
2
14
|
|
|
3
15
|
### Features
|