nomoreide 0.1.49 → 0.1.51

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
@@ -13,9 +13,9 @@
13
13
  [![Node.js ≥20](https://img.shields.io/badge/node-%E2%89%A520-3b82f6?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org)
14
14
  [![MCP Ready](https://img.shields.io/badge/MCP-ready-a855f7?style=flat-square)](https://modelcontextprotocol.io)
15
15
 
16
- Give your coding agents and yourself a **shared local control surface** for services, ports, logs, Git review, and MCP workflows — no IDE required.
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
 
@@ -23,7 +23,7 @@ Give your coding agents and yourself a **shared local control surface** for serv
23
23
 
24
24
  ## What Is NoMoreIDE?
25
25
 
26
- NoMoreIDE is a lightweight process manager, Git reviewer, log aggregator, and MCP server — all in one `npx` command. It gives AI coding agents (Claude Code, Codex CLI, Gemini CLI, and others) a safe, structured window into your running dev environment through the **Model Context Protocol (MCP)**, while also providing a terminal UI and a local React web dashboard for humans.
26
+ NoMoreIDE is a lightweight process manager, Git reviewer, GitHub workflow surface, database workbench, log aggregator, and MCP server — all in one `npx` command. It gives AI coding agents (Claude Code, Codex CLI, Gemini CLI, and others) a safe, structured window into your running dev environment through the **Model Context Protocol (MCP)**, while also providing a terminal UI and a local React web dashboard for humans.
27
27
 
28
28
  ```
29
29
  ┌──────────────────────────────────────────────────────┐
@@ -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
@@ -270,6 +207,11 @@ graph TD
270
207
  | Git status & diff | ✓ | | ✓ | ✓ |
271
208
  | Stage / unstage / commit | ✓ | | ✓ | ✓ |
272
209
  | Branch management | ✓ | | ✓ | ✓ |
210
+ | GitHub PRs / issues / Actions | | | ✓ | ✓ |
211
+ | Reusable git/GitHub workflows | | | ✓ | |
212
+ | Database browse and SQL query | | | ✓ | ✓ |
213
+ | Human-approved SQL writes | | | ✓ | |
214
+ | Agent tools, hooks, plugins, usage | | | ✓ | |
273
215
  | Safe Git (no force-push, no reset) | ✓ | ✓ | ✓ | ✓ |
274
216
 
275
217
  ---
@@ -418,6 +360,29 @@ All tools are prefixed with `nomoreide_` and are available to any connected MCP
418
360
  | `nomoreide_git_register_repository` | Register a repo path |
419
361
  | `nomoreide_git_select_repository` | Select the active repo |
420
362
 
363
+ ### Database Tools
364
+
365
+ | Tool | Description |
366
+ |---|---|
367
+ | `nomoreide_list_databases` | List registered database connections with masked URLs |
368
+ | `nomoreide_db_tables` | List tables and views for a connection |
369
+ | `nomoreide_db_sample` | Sample rows and schema metadata |
370
+ | `nomoreide_db_query` | Run read-only SQL queries; writes are rejected and staged for the Web UI SQL console |
371
+
372
+ ### GitHub Tools
373
+
374
+ | Tool | Description |
375
+ |---|---|
376
+ | `nomoreide_github_set_token` | Store a GitHub token for API access |
377
+ | `nomoreide_github_list_prs` / `nomoreide_github_get_pr` | Inspect pull requests |
378
+ | `nomoreide_github_get_pr_diff` | Fetch a pull request diff |
379
+ | `nomoreide_github_create_pr` / `nomoreide_github_merge_pr` | Create or merge pull requests with explicit user intent |
380
+ | `nomoreide_github_list_issues` / `nomoreide_github_get_issue` | Inspect issues |
381
+ | `nomoreide_github_list_issue_comments` / `nomoreide_github_add_issue_comment` | Read or add issue and PR comments |
382
+ | `nomoreide_github_create_issue` | Create an issue |
383
+ | `nomoreide_github_get_commit_ci` | Inspect commit check status |
384
+ | `nomoreide_github_list_workflow_runs` | List recent GitHub Actions workflow runs |
385
+
421
386
  ---
422
387
 
423
388
  ## Example Configurations
@@ -462,7 +427,10 @@ NoMoreIDE is designed to be **safe for AI agents to call without guard rails**:
462
427
  - Does not kill processes it did not start
463
428
  - Reports port conflicts instead of terminating the occupying process
464
429
  - Git tools omit all destructive operations (no `reset --hard`, `clean`, `push --force`, or `branch -D`)
465
- - Config is scoped to `nomoreide.config.json` in the launch directory
430
+ - Database MCP tools are read-only; writes are staged for the human-only SQL console
431
+ - Database writes require explicit unlock, preview, and commit
432
+ - GitHub create/comment/merge tools require a configured token and explicit user intent
433
+ - Config is scoped to `~/.config/nomoreide/config.json`
466
434
  - Logs are written only to `.nomoreide/logs/`
467
435
 
468
436
  ---
@@ -72,17 +72,20 @@ const COMMIT_GATE = {
72
72
  message: "Stage the current changes and create one AI-written commit?",
73
73
  };
74
74
  /**
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.
75
+ * One lightweight AI pass that prepares a real commit message before the human
76
+ * gate. The deterministic commit action then uses the approved message directly.
79
77
  */
80
- const COMMIT_STEP = {
78
+ const COMMIT_MESSAGE_STEP = {
81
79
  kind: "agent",
80
+ id: "commit-message",
81
+ title: "Generate commit message",
82
+ 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.",
83
+ };
84
+ const COMMIT_ACTION_STEP = {
85
+ kind: "action",
82
86
  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",
87
+ title: "Commit with approved message",
88
+ op: "commit",
86
89
  };
87
90
  /**
88
91
  * The Phase-1 starter set. These are plain data (not hardcoded UI), so the same
@@ -95,8 +98,9 @@ export const BUILTIN_WORKFLOWS = [
95
98
  description: "Pause for approval, make one AI-written commit, then pause again before pushing.",
96
99
  builtin: true,
97
100
  steps: [
101
+ COMMIT_MESSAGE_STEP,
98
102
  { ...COMMIT_GATE },
99
- COMMIT_STEP,
103
+ COMMIT_ACTION_STEP,
100
104
  { kind: "gate", id: "gate-push", title: "Approve push", message: "Push to the remote?" },
101
105
  { kind: "action", id: "push", title: "Push", op: "push" },
102
106
  ],
@@ -107,8 +111,9 @@ export const BUILTIN_WORKFLOWS = [
107
111
  description: "Approve the AI commit, push, then use quick AI turns to open and squash-merge the PR.",
108
112
  builtin: true,
109
113
  steps: [
114
+ COMMIT_MESSAGE_STEP,
110
115
  { ...COMMIT_GATE },
111
- COMMIT_STEP,
116
+ COMMIT_ACTION_STEP,
112
117
  { kind: "gate", id: "gate-push", title: "Approve push", message: "Push and open a PR?" },
113
118
  { kind: "action", id: "push", title: "Push", op: "push" },
114
119
  {
@@ -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":"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"}