@ainecto/cli 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -83
- package/dist/bin/ainecto.js +1136 -870
- package/dist/bin/ainecto.js.map +1 -1
- package/dist/bin/mcp.js +59 -47
- package/dist/bin/mcp.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,82 +2,69 @@
|
|
|
2
2
|
|
|
3
3
|
Published as `ainecto`, `@ainecto/mcp` and `@ainecto/cli` — the same code. Command: `ainecto`.
|
|
4
4
|
|
|
5
|
-
**
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
**Once per machine:** `npx -y ainecto@latest setup` — signs you in through the browser (once), checks the
|
|
6
|
+
connection, and connects Claude Code, Cursor, and Codex to AiNecto.
|
|
7
|
+
|
|
8
|
+
Every AI session sees the same AiNecto tools. What a tool may change is decided by your AiNecto
|
|
9
|
+
permissions on the workspace, project, or document it touches — the server refuses the rest. There are
|
|
10
|
+
no session roles (Design / Development / Test / Validation were removed in 0.8.0).
|
|
8
11
|
|
|
9
12
|
## For AI agents
|
|
10
13
|
|
|
11
|
-
**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
- **
|
|
17
|
-
`
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
in this folder to keep the conversation; approve the `ainecto` server from `.mcp.json` when asked).
|
|
22
|
-
Codex: save the profile `init` prints and start with `codex -p <role>`.
|
|
23
|
-
- **A server added during a session is not available in that session.** In our test, a server added
|
|
24
|
-
with `claude mcp add` while Claude Code was running did not attach to the running session — that is
|
|
25
|
-
why the CLI is the way to keep going. `/mcp` shows what the current session actually loaded.
|
|
26
|
-
- Inside the repository, `ainecto` commands (`ainecto tools call …`) use the repository's role
|
|
27
|
-
automatically — do not pass `--role`; a different `--role` is refused.
|
|
14
|
+
**Run `npx -y ainecto@latest setup` (use a long command timeout — at least 6 minutes: sign-in waits up
|
|
15
|
+
to 5 minutes for the user). Then run `npx -y ainecto@latest doctor` and do what it says.**
|
|
16
|
+
|
|
17
|
+
- To add AiNecto's working rules to a repository, run `npx -y ainecto@latest init` from its root. It
|
|
18
|
+
does not ask for a role or a project.
|
|
19
|
+
- **A server added during a session is not available in that session.** Keep working through the CLI:
|
|
20
|
+
`npx -y ainecto@latest tools list` and `npx -y ainecto@latest tools call <tool> '<json>'`. A new
|
|
21
|
+
session loads the MCP tools.
|
|
22
|
+
- If a result names a tool that is not in your tool list, the session started before that tool was
|
|
23
|
+
added — start a new session or call it through the CLI as above.
|
|
28
24
|
- Claude Code's auto mode may block running an external package with `npx`. If it does, ask the user
|
|
29
25
|
to allow the command.
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
**user scope** under the name `ainecto` — a local-scope entry would hide the `.mcp.json` that `init`
|
|
33
|
-
writes, and a different name would sit next to it as a second server with no role:
|
|
27
|
+
## Set up this machine
|
|
34
28
|
|
|
35
29
|
```bash
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
npx -y ainecto@latest setup # sign in, check, connect Claude Code · Cursor · Codex
|
|
31
|
+
npx -y ainecto@latest setup --dry-run # show what it would do — no sign-in, no changes
|
|
32
|
+
npx -y ainecto@latest setup --undo # remove the connections setup made (sign-in stays)
|
|
33
|
+
npx -y ainecto@latest status # who is signed in, your AiNecto role, what is connected
|
|
34
|
+
npx -y ainecto@latest doctor # what is missing, and the one command that fixes each item
|
|
38
35
|
```
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
`setup` connects each client separately and reports `connected`, `updated`, `kept` (someone else's
|
|
38
|
+
`ainecto` entry, left untouched), `not installed`, or `failed`; if any client fails it says «partial» and
|
|
39
|
+
exits 1:
|
|
40
|
+
|
|
41
|
+
- Claude Code — `claude mcp add -s user ainecto -- npx -y @ainecto/mcp@<version>` (user scope).
|
|
42
|
+
- Cursor — merges the same entry into `~/.cursor/mcp.json`, keeping your other servers.
|
|
43
|
+
- Codex — `codex mcp add ainecto -- npx -y @ainecto/mcp@<version>`.
|
|
44
|
+
|
|
45
|
+
The entry is pinned to the CLI version that wrote it; re-run `setup` to move to a newer one (`doctor`
|
|
46
|
+
tells you when one is available). Your AiNecto role (your job, set in AiNecto's account settings) is
|
|
47
|
+
shown by `setup` and `status`; AI uses it to pitch explanations — it does not change permissions.
|
|
42
48
|
|
|
43
|
-
## Set up a repository (
|
|
49
|
+
## Set up a repository (optional)
|
|
44
50
|
|
|
45
51
|
```bash
|
|
46
|
-
npx -y ainecto@latest init
|
|
47
|
-
npx -y ainecto@latest init --
|
|
52
|
+
npx -y ainecto@latest init # .ainecto/HARNESS.md, an AGENTS.md block (and CLAUDE.md if present), .ainecto/config.json
|
|
53
|
+
npx -y ainecto@latest init --mcp # also .mcp.json (Claude Code) and .cursor/mcp.json (Cursor)
|
|
54
|
+
npx -y ainecto@latest init --dry-run # the same plan, nothing written
|
|
55
|
+
npx -y ainecto@latest init --undo # remove what init wrote
|
|
48
56
|
```
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
is no default);
|
|
55
|
-
- the project, unless `--project` is set — by number; «Create a new project» is offered to Design only.
|
|
56
|
-
|
|
57
|
-
Ctrl+C or Ctrl+D at a question cancels without writing repository files (Ctrl+D exits with 130). A
|
|
58
|
-
sign-in you already completed stays saved, and choosing «Create a new project» creates it right away.
|
|
59
|
-
Anywhere else (an agent's shell, CI) it asks nothing. In both cases:
|
|
60
|
-
|
|
61
|
-
- If this machine is not signed in to AiNecto yet, `init` opens a browser and continues once the user
|
|
62
|
-
approves — **once per machine** (per server), not per role. The sign-in URL is printed first (with
|
|
63
|
-
`--json`, as one JSON line on stderr: `{"event":"login_url","url":…}`), and sign-in gives up after
|
|
64
|
-
5 minutes. It fails at once
|
|
65
|
-
when the command that opens the browser is missing, or (except on Windows, where the exit code is
|
|
66
|
-
not reliable) exits with an error.
|
|
67
|
-
- Outside a terminal, with no `--role`/`AINECTO_ROLE` it uses the role already set on the repository.
|
|
68
|
-
If there is none (or the repository's agent configs disagree) it stops and says to ask the user —
|
|
69
|
-
it never picks a role for you. If the account has more than one project it lists them and stops;
|
|
70
|
-
re-run with `--project <uuid>`. With no project yet,
|
|
71
|
-
only a Design session can create one (`--yes`, optionally `--project-name <name>`); in any other
|
|
72
|
-
role it asks you to have the user create the project, then re-run with the same role.
|
|
58
|
+
- `init` fetches the rules from the server — `--dry-run` too, so the plan is the real one. If it cannot
|
|
59
|
+
(not signed in, offline), it says which files would get this package's default text instead.
|
|
60
|
+
- If this machine is not signed in yet, `init` opens the browser once (`--dry-run` never does). The
|
|
61
|
+
sign-in URL is printed first (with `--json`, as one JSON line on stderr: `{"event":"login_url","url":…}`).
|
|
73
62
|
- It stops when run from a sub-folder of a git repository, and tells you the root.
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
- `ainecto init --dry-run` shows what would change (it does not sign in or refresh a sign-in);
|
|
80
|
-
`ainecto init --undo` removes what it wrote.
|
|
63
|
+
- **Repositories set up by 0.7.x** (`.mcp.json` with `--role`): re-run `npx -y ainecto@latest init`.
|
|
64
|
+
It rewrites the existing `ainecto` entry without `--role`, pinned to this version, and drops the old
|
|
65
|
+
`project` field from `.ainecto/config.json` (unless you changed it). Until then the old entry keeps
|
|
66
|
+
working: `--role` is accepted and ignored. Old flags (`--role`, `--project`, `--project-name`,
|
|
67
|
+
`--yes`) are ignored with a one-line note.
|
|
81
68
|
|
|
82
69
|
## Commands
|
|
83
70
|
|
|
@@ -87,7 +74,7 @@ and all ship the `ainecto` command, so a second global install conflicts. (`@ain
|
|
|
87
74
|
`mcp`, the bridge.)
|
|
88
75
|
|
|
89
76
|
```bash
|
|
90
|
-
ainecto auth login # once per machine (and per --env)
|
|
77
|
+
ainecto auth login # once per machine (and per --env) — `setup` does this for you
|
|
91
78
|
ainecto auth status
|
|
92
79
|
ainecto auth logout
|
|
93
80
|
|
|
@@ -100,16 +87,6 @@ ainecto projects list
|
|
|
100
87
|
ainecto erd apply-changes -f erd-operations.json --yes
|
|
101
88
|
```
|
|
102
89
|
|
|
103
|
-
**The role comes from the repository.** Inside a folder set up with `ainecto init` (the command looks
|
|
104
|
-
from the current folder upward for the first `.mcp.json`/`.cursor/mcp.json` with an `ainecto` entry),
|
|
105
|
-
every command uses that folder's role without `--role`. A `--role` or `AINECTO_ROLE` that differs from
|
|
106
|
-
it is refused — the role changes only with `ainecto init --role <role>`, after asking the user. If the
|
|
107
|
-
role there cannot be read (the `@ainecto/mcp` bridge entry without a valid `--role`, configs that
|
|
108
|
-
disagree, broken JSON that mentions `ainecto`, a link that points outside the folder), the command
|
|
109
|
-
stops. An entry that is not this bridge (for example an HTTP
|
|
110
|
-
`url` or `mcp-remote` entry) means no role there. Your home folder itself is never read as a
|
|
111
|
-
repository (`~/.cursor/mcp.json` is Cursor's global config). Outside such a folder there is no role
|
|
112
|
-
(no restriction), and `--role` narrows it.
|
|
113
90
|
Tool names are the server's own names (`list_projects`, `erd_apply_changes`, …). Your AI client
|
|
114
91
|
shows them with its own prefix, for example `mcp__ainecto__list_projects` in Claude Code; the CLI
|
|
115
92
|
does not use that prefix. A tool name that starts with
|
|
@@ -182,38 +159,36 @@ The server tools behind them (`list_notifications`, `list_agent_todos`, `update_
|
|
|
182
159
|
## Connector Mode
|
|
183
160
|
|
|
184
161
|
```bash
|
|
185
|
-
ainecto mcp
|
|
162
|
+
ainecto mcp [--env dev]
|
|
186
163
|
```
|
|
187
164
|
|
|
188
165
|
The package doubles as a stdio-to-HTTP proxy for the resolved `/mcp` endpoint. It proxies
|
|
189
166
|
`initialize`, `tools/list`, and `tools/call`, does not rewrite remote schemas, and does not interpret
|
|
190
|
-
local file references. It uses this machine's one sign-in (`ainecto auth login`, or
|
|
191
|
-
`ainecto init` performs) and never opens a browser on its own.
|
|
192
|
-
`AINECTO_ROLE`) and is sent with every request; the server applies it.
|
|
167
|
+
local file references. It uses this machine's one sign-in (`ainecto setup`, `ainecto auth login`, or
|
|
168
|
+
the sign-in `ainecto init` performs) and never opens a browser on its own.
|
|
193
169
|
|
|
194
|
-
This is the entry `
|
|
195
|
-
by hand:
|
|
170
|
+
This is the entry `setup` and `init --mcp` write — you normally do not add it by hand:
|
|
196
171
|
|
|
197
172
|
```json
|
|
198
173
|
{
|
|
199
174
|
"mcpServers": {
|
|
200
175
|
"ainecto": {
|
|
201
176
|
"command": "npx",
|
|
202
|
-
"args": ["-y", "@ainecto/mcp"
|
|
177
|
+
"args": ["-y", "@ainecto/mcp@0.8.0"]
|
|
203
178
|
}
|
|
204
179
|
}
|
|
205
180
|
}
|
|
206
181
|
```
|
|
207
182
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
183
|
+
An older entry with `--role <name>` (or `AINECTO_ROLE`) still starts: the value is ignored, a one-line
|
|
184
|
+
note goes to stderr, and the server only records that an old setting is still in use. If a session
|
|
185
|
+
does not see the AiNecto tools, another `ainecto` entry (for example Claude Code's local scope) may be
|
|
186
|
+
hiding it — `ainecto doctor` checks this.
|
|
212
187
|
|
|
213
188
|
### MCP Registry
|
|
214
189
|
|
|
215
190
|
`server.json` is the Registry entry `io.github.codelives/ainecto` (same as `package.json#mcpName`). It
|
|
216
|
-
lists only the npm package `@ainecto/mcp` — the
|
|
191
|
+
lists only the npm package `@ainecto/mcp` — the bridge `setup` and `init --mcp` write. Registry
|
|
217
192
|
publication requires the npm version it references to carry that `mcpName`, so publish npm first.
|
|
218
193
|
Registration is done by a person:
|
|
219
194
|
|