nomoreide 0.1.50 → 0.1.52

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 CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  Give your coding agents and yourself a **shared local control surface** for services, ports, logs, Git review, GitHub workflows, database work, and MCP workflows — no IDE required.
17
17
 
18
- [Quick Start](#quick-start) · [MCP Setup](#-connect-your-ai-agent) · [CLI Reference](#cli) · [MCP Tools](#mcp-tools) · [Architecture](#architecture)
18
+ [MCP Setup](#connect-your-ai-agent) · [CLI Reference](#cli) · [MCP Tools](#mcp-tools) · [Architecture](#architecture)
19
19
 
20
20
  </div>
21
21
 
@@ -154,69 +154,6 @@ If you prefer to point agents at a locally built binary instead of the published
154
154
 
155
155
  ---
156
156
 
157
- ## Quick Start
158
-
159
- Add NoMoreIDE to your agent as a local MCP server:
160
-
161
- ```bash
162
- claude mcp add --transport stdio nomoreide -- npx -y nomoreide
163
- codex mcp add nomoreide -- npx -y nomoreide
164
- ```
165
-
166
- For Gemini CLI, add this to `~/.gemini/settings.json`:
167
-
168
- ```json
169
- {
170
- "mcpServers": {
171
- "nomoreide": {
172
- "command": "npx",
173
- "args": ["-y", "nomoreide"]
174
- }
175
- }
176
- }
177
- ```
178
-
179
- Or print the setup commands from the package:
180
-
181
- ```bash
182
- npx -y nomoreide setup
183
- ```
184
-
185
- Or paste this prompt into your agent:
186
-
187
- ```text
188
- Please set up NoMoreIDE as a local MCP server for this agent. Register a server named nomoreide that runs npx -y nomoreide. After adding it, tell me how to verify it with /mcp.
189
- ```
190
-
191
- Verify inside your agent:
192
-
193
- ```text
194
- /mcp
195
- ```
196
-
197
- Run the local MCP server directly:
198
-
199
- ```bash
200
- npx -y nomoreide
201
- ```
202
-
203
- Install globally only if you want the `nomoreide` CLI on your PATH:
204
-
205
- ```bash
206
- npm install -g nomoreide
207
- ```
208
-
209
- Build from source:
210
-
211
- ```bash
212
- git clone https://github.com/Rorogogogo/nomoreide.git
213
- cd nomoreide
214
- npm install
215
- npm run build
216
- ```
217
-
218
- ---
219
-
220
157
  ## Architecture
221
158
 
222
159
  ```mermaid
@@ -22,20 +22,22 @@ export declare const workflowStepSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodO
22
22
  title: z.ZodString;
23
23
  /**
24
24
  * Deterministic op with no inputs — runs straight through the REST API with
25
- * zero agent tokens. `commit` stages everything and commits with a generated
26
- * message (no diff reading, no quality analysis); `push` pushes the branch.
25
+ * zero agent tokens. `assert-pr-branch` blocks on default branches before PR
26
+ * workflows can commit; `commit` stages everything and commits with a
27
+ * generated message (no diff reading, no quality analysis); `push` pushes
28
+ * the branch.
27
29
  */
28
- op: z.ZodEnum<["push", "commit"]>;
30
+ op: z.ZodEnum<["push", "commit", "assert-pr-branch"]>;
29
31
  }, "strip", z.ZodTypeAny, {
30
32
  kind: "action";
31
33
  id: string;
32
34
  title: string;
33
- op: "push" | "commit";
35
+ op: "push" | "commit" | "assert-pr-branch";
34
36
  }, {
35
37
  kind: "action";
36
38
  id: string;
37
39
  title: string;
38
- op: "push" | "commit";
40
+ op: "push" | "commit" | "assert-pr-branch";
39
41
  }>, z.ZodObject<{
40
42
  kind: z.ZodLiteral<"agent">;
41
43
  id: z.ZodString;
@@ -118,20 +120,22 @@ export declare const workflowSchema: z.ZodObject<{
118
120
  title: z.ZodString;
119
121
  /**
120
122
  * Deterministic op with no inputs — runs straight through the REST API with
121
- * zero agent tokens. `commit` stages everything and commits with a generated
122
- * message (no diff reading, no quality analysis); `push` pushes the branch.
123
+ * zero agent tokens. `assert-pr-branch` blocks on default branches before PR
124
+ * workflows can commit; `commit` stages everything and commits with a
125
+ * generated message (no diff reading, no quality analysis); `push` pushes
126
+ * the branch.
123
127
  */
124
- op: z.ZodEnum<["push", "commit"]>;
128
+ op: z.ZodEnum<["push", "commit", "assert-pr-branch"]>;
125
129
  }, "strip", z.ZodTypeAny, {
126
130
  kind: "action";
127
131
  id: string;
128
132
  title: string;
129
- op: "push" | "commit";
133
+ op: "push" | "commit" | "assert-pr-branch";
130
134
  }, {
131
135
  kind: "action";
132
136
  id: string;
133
137
  title: string;
134
- op: "push" | "commit";
138
+ op: "push" | "commit" | "assert-pr-branch";
135
139
  }>, z.ZodObject<{
136
140
  kind: z.ZodLiteral<"agent">;
137
141
  id: z.ZodString;
@@ -209,7 +213,7 @@ export declare const workflowSchema: z.ZodObject<{
209
213
  kind: "action";
210
214
  id: string;
211
215
  title: string;
212
- op: "push" | "commit";
216
+ op: "push" | "commit" | "assert-pr-branch";
213
217
  } | {
214
218
  kind: "agent";
215
219
  id: string;
@@ -237,7 +241,7 @@ export declare const workflowSchema: z.ZodObject<{
237
241
  kind: "action";
238
242
  id: string;
239
243
  title: string;
240
- op: "push" | "commit";
244
+ op: "push" | "commit" | "assert-pr-branch";
241
245
  } | {
242
246
  kind: "agent";
243
247
  id: string;
@@ -29,10 +29,12 @@ export const workflowStepSchema = z.discriminatedUnion("kind", [
29
29
  title: z.string().min(1),
30
30
  /**
31
31
  * Deterministic op with no inputs — runs straight through the REST API with
32
- * zero agent tokens. `commit` stages everything and commits with a generated
33
- * message (no diff reading, no quality analysis); `push` pushes the branch.
32
+ * zero agent tokens. `assert-pr-branch` blocks on default branches before PR
33
+ * workflows can commit; `commit` stages everything and commits with a
34
+ * generated message (no diff reading, no quality analysis); `push` pushes
35
+ * the branch.
34
36
  */
35
- op: z.enum(["push", "commit"]),
37
+ op: z.enum(["push", "commit", "assert-pr-branch"]),
36
38
  }),
37
39
  z.object({
38
40
  kind: z.literal("agent"),
@@ -72,17 +74,26 @@ const COMMIT_GATE = {
72
74
  message: "Stage the current changes and create one AI-written commit?",
73
75
  };
74
76
  /**
75
- * One lightweight AI pass that writes a real commit message and commits — the
76
- * balance the user wanted: a thought-through message like the `commit-push`
77
- * skill, but a single pass (no review report, no splitting into many commits).
78
- * Shared by the commit-bearing templates.
77
+ * One lightweight AI pass that prepares a real commit message before the human
78
+ * gate. The deterministic commit action then uses the approved message directly.
79
79
  */
80
- const COMMIT_STEP = {
80
+ const COMMIT_MESSAGE_STEP = {
81
81
  kind: "agent",
82
+ id: "commit-message",
83
+ title: "Generate commit message",
84
+ prompt: "Stage my changes with `nomoreide_git_stage` (skip anything that looks like a secret, e.g. `.env`), inspect the staged diff once with `nomoreide_git_staged_diff`, then write one conventional-commit message — a `<type>: concise title` line (feat/fix/refactor/chore/docs/test) plus a few short bullets of what changed. Do NOT commit. Reply with ONLY the commit message you recommend.",
85
+ };
86
+ const COMMIT_ACTION_STEP = {
87
+ kind: "action",
82
88
  id: "commit",
83
- title: "Commit all changes",
84
- prompt: "Stage my changes and make ONE commit, in a single pass. Steps: stage the changed files with `nomoreide_git_stage` (skip anything that looks like a secret, e.g. `.env`); glance at the staged diff once with `nomoreide_git_staged_diff`; then commit with `nomoreide_git_commit` using a conventional-commit message — a `<type>: concise title` line (feat/fix/refactor/chore/docs/test) plus a few short bullets of what changed. One commit only: do NOT split into multiple commits and do NOT write a separate review or analysis. Reply with just the commit message you used.",
85
- verify: "committed",
89
+ title: "Commit with approved message",
90
+ op: "commit",
91
+ };
92
+ const ASSERT_PR_BRANCH_STEP = {
93
+ kind: "action",
94
+ id: "assert-pr-branch",
95
+ title: "Check PR branch",
96
+ op: "assert-pr-branch",
86
97
  };
87
98
  /**
88
99
  * The Phase-1 starter set. These are plain data (not hardcoded UI), so the same
@@ -95,8 +106,9 @@ export const BUILTIN_WORKFLOWS = [
95
106
  description: "Pause for approval, make one AI-written commit, then pause again before pushing.",
96
107
  builtin: true,
97
108
  steps: [
109
+ COMMIT_MESSAGE_STEP,
98
110
  { ...COMMIT_GATE },
99
- COMMIT_STEP,
111
+ COMMIT_ACTION_STEP,
100
112
  { kind: "gate", id: "gate-push", title: "Approve push", message: "Push to the remote?" },
101
113
  { kind: "action", id: "push", title: "Push", op: "push" },
102
114
  ],
@@ -107,8 +119,10 @@ export const BUILTIN_WORKFLOWS = [
107
119
  description: "Approve the AI commit, push, then use quick AI turns to open and squash-merge the PR.",
108
120
  builtin: true,
109
121
  steps: [
122
+ ASSERT_PR_BRANCH_STEP,
123
+ COMMIT_MESSAGE_STEP,
110
124
  { ...COMMIT_GATE },
111
- COMMIT_STEP,
125
+ COMMIT_ACTION_STEP,
112
126
  { kind: "gate", id: "gate-push", title: "Approve push", message: "Push and open a PR?" },
113
127
  { kind: "action", id: "push", title: "Push", op: "push" },
114
128
  {
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/core/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/core/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB;;;;;;WAMG;QACH,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;KACnD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,gDAAgD;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,8EAA8E;QAC9E,YAAY,EAAE,0BAA0B,CAAC,QAAQ,EAAE;QACnD;;;;WAIG;QACH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,mEAAmE;QACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,CAAC,CAAC;AAKH,MAAM,WAAW,GAAiB;IAChC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,6DAA6D;CACvE,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAiB;IACxC,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,yBAAyB;IAChC,MAAM,EACJ,8XAA8X;CACjY,CAAC;AAEF,MAAM,kBAAkB,GAAiB;IACvC,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,8BAA8B;IACrC,EAAE,EAAE,QAAQ;CACb,CAAC;AAEF,MAAM,qBAAqB,GAAiB;IAC1C,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,iBAAiB;IACxB,EAAE,EAAE,kBAAkB;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,kFAAkF;QAC/F,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,mBAAmB;YACnB,EAAE,GAAG,WAAW,EAAE;YAClB,kBAAkB;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE;YACxF,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;SAC1D;KACF;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,uFAAuF;QACpG,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,qBAAqB;YACrB,mBAAmB;YACnB,EAAE,GAAG,WAAW,EAAE;YAClB,kBAAkB;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE;YACxF,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;YACzD;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,WAAW;gBAClB,MAAM,EACJ,qPAAqP;aACxP;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gCAAgC,EAAE;YACrG;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,cAAc;gBACrB,MAAM,EACJ,0IAA0I;aAC7I;SACF;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,wFAAwF;QACrG,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EACJ,8NAA8N;aACjO;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,4BAA4B,EAAE;YACjG;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EACJ,oIAAoI;aACvI;SACF;KACF;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AAChC,CAAC"}