almightygpt 0.5.1 → 0.5.2
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 +234 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# almightygpt
|
|
2
|
+
|
|
3
|
+
> **The convention and tooling for multi-AI development.**
|
|
4
|
+
> One AI writes. A different AI reviews. The decision trail lives in git.
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/almightygpt)
|
|
7
|
+
[](https://marketplace.visualstudio.com/items?itemName=almightygpt.almightygpt-vscode)
|
|
8
|
+
[](https://github.com/roxjayanath/almightygpt/blob/main/LICENSE)
|
|
9
|
+
|
|
10
|
+
AlmightyGPT drops a Worker / Reviewer convention into any repo, then runs
|
|
11
|
+
real cross-AI code reviews (OpenAI, Anthropic, Google) and saves the
|
|
12
|
+
review artifact in git as your durable decision trail.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx almightygpt init
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Full documentation, design notes, and roadmap:
|
|
19
|
+
**https://github.com/roxjayanath/almightygpt**
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g almightygpt
|
|
27
|
+
# or one-shot, no global install:
|
|
28
|
+
npx almightygpt init
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Requires Node.js 18+.
|
|
32
|
+
|
|
33
|
+
## Quick start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 1. Initialize the Convention Pack in any repo
|
|
37
|
+
cd ~/your-project
|
|
38
|
+
almightygpt init --stack node-ts # or python-django / python-fastapi / rails / go
|
|
39
|
+
|
|
40
|
+
# 2. Set at least one provider API key (read once, never stored)
|
|
41
|
+
export OPENAI_API_KEY=sk-...
|
|
42
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
43
|
+
export GOOGLE_API_KEY=...
|
|
44
|
+
|
|
45
|
+
# 3. Run a review
|
|
46
|
+
almightygpt review --diff --reviewer codex --topic auth-refactor
|
|
47
|
+
|
|
48
|
+
# 4. Or run the headline two-role flow (one AI writes, a different AI reviews)
|
|
49
|
+
almightygpt review --diff \
|
|
50
|
+
--worker claude --reviewer codex \
|
|
51
|
+
--topic auth-refactor
|
|
52
|
+
|
|
53
|
+
# 5. Record your decision
|
|
54
|
+
almightygpt decide latest --status approved --note "Reviewer caught the missing null check"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The review lands at `docs/codex-reviews/<topic>.md`, committed to git as
|
|
58
|
+
your audit trail. Machine metadata (cost, tokens, raw outputs) lands at
|
|
59
|
+
`.almightygpt/runs/<id>/`.
|
|
60
|
+
|
|
61
|
+
## Commands
|
|
62
|
+
|
|
63
|
+
| Command | What |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `almightygpt init [--stack <name>] [--backup\|--force]` | Install the Convention Pack |
|
|
66
|
+
| `almightygpt review --diff [range] [--worker X] --reviewer Y --topic Z` | Run a review |
|
|
67
|
+
| `almightygpt runs list [--limit N]` | List recent runs |
|
|
68
|
+
| `almightygpt runs latest` | Show the most recent run |
|
|
69
|
+
| `almightygpt decide <id\|latest> --status <s> --note "..."` | Record a human decision |
|
|
70
|
+
|
|
71
|
+
All commands accept `--json` for machine-readable output. The `review`
|
|
72
|
+
command streams JSON events one per line, suitable for tooling (the VS
|
|
73
|
+
Code extension uses this directly).
|
|
74
|
+
|
|
75
|
+
## Five supported stack templates
|
|
76
|
+
|
|
77
|
+
`node-ts`, `python-django`, `python-fastapi`, `rails`, `go` — each ships
|
|
78
|
+
with a stack-tuned `CLAUDE.md` for the Worker AI, an `.almightyignore`
|
|
79
|
+
covering that stack's typical secret-bearing paths, and a config with
|
|
80
|
+
sensible `context.include` / `context.exclude` globs.
|
|
81
|
+
|
|
82
|
+
## Four real provider adapters
|
|
83
|
+
|
|
84
|
+
- **OpenAI** (default Reviewer; `gpt-4o`) — env: `OPENAI_API_KEY`
|
|
85
|
+
- **Anthropic / Claude** (default Worker; `claude-3-5-sonnet-latest`) — env: `ANTHROPIC_API_KEY`
|
|
86
|
+
- **Google / Gemini** (optional Reviewer; `gemini-2.5-flash` for free-tier friendliness) — env: `GOOGLE_API_KEY` or `GEMINI_API_KEY`
|
|
87
|
+
- **Mock** (for testing without API keys)
|
|
88
|
+
|
|
89
|
+
OpenAI and Anthropic adapters have **prompt caching enabled** — 50% off
|
|
90
|
+
cached input tokens on OpenAI, 90% off on Anthropic. Kicks in
|
|
91
|
+
automatically on the second run in the same 5-minute window.
|
|
92
|
+
|
|
93
|
+
## VS Code extension
|
|
94
|
+
|
|
95
|
+
The official UI wrapper for this CLI: **https://marketplace.visualstudio.com/items?itemName=almightygpt.almightygpt-vscode**
|
|
96
|
+
|
|
97
|
+
Six commands under the **AlmightyGPT:** palette category, a Runs tree
|
|
98
|
+
view in the activity bar, real-time progress driven by this CLI's JSON
|
|
99
|
+
event stream. The extension never owns orchestration — all review work
|
|
100
|
+
happens here in the CLI.
|
|
101
|
+
|
|
102
|
+
Cursor / VSCodium / code-server / Theia users:
|
|
103
|
+
**https://open-vsx.org/extension/almightygpt/almightygpt-vscode**
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Runtime behavior — what this package actually does
|
|
108
|
+
|
|
109
|
+
For users and security teams evaluating AlmightyGPT, here's exactly what
|
|
110
|
+
the CLI does at runtime. Every behavior is intentional and required for
|
|
111
|
+
the product to work; none is hidden.
|
|
112
|
+
|
|
113
|
+
### Network access (provider calls only)
|
|
114
|
+
|
|
115
|
+
The CLI makes outbound HTTPS requests only to the AI provider whose
|
|
116
|
+
adapter is invoked, and only when you explicitly run a review command
|
|
117
|
+
that uses that adapter:
|
|
118
|
+
|
|
119
|
+
- `api.openai.com` — via the official `openai` SDK, when `OPENAI_API_KEY` is set and an OpenAI adapter (e.g. `codex`) is invoked
|
|
120
|
+
- `api.anthropic.com` — via the official `@anthropic-ai/sdk`, when `ANTHROPIC_API_KEY` is set and a Claude adapter is invoked
|
|
121
|
+
- `generativelanguage.googleapis.com` — via the official `@google/generative-ai` SDK, when `GOOGLE_API_KEY` (or `GEMINI_API_KEY`) is set and a Gemini adapter is invoked
|
|
122
|
+
|
|
123
|
+
**No other network access.** No telemetry, no analytics beaconing, no
|
|
124
|
+
auto-update calls, no anonymous usage stats, no error-reporting service.
|
|
125
|
+
The CLI doesn't even check for its own newer versions.
|
|
126
|
+
|
|
127
|
+
### Shell access (git only)
|
|
128
|
+
|
|
129
|
+
The CLI spawns `git` as a child process via
|
|
130
|
+
[`execa`](https://www.npmjs.com/package/execa) for the following
|
|
131
|
+
read-only operations:
|
|
132
|
+
|
|
133
|
+
- `git status --short -- <file>` — per-target safety check before any
|
|
134
|
+
Markdown write
|
|
135
|
+
- `git diff --no-color [range]` — collect the diff to review
|
|
136
|
+
- `git rev-parse --abbrev-ref HEAD` / `git rev-parse HEAD` — record
|
|
137
|
+
branch and commit hash into `run.json`
|
|
138
|
+
|
|
139
|
+
All git invocations pass arguments as an **argv array**, never as a
|
|
140
|
+
shell string. The CLI never executes arbitrary user-supplied commands.
|
|
141
|
+
It never calls `sh -c`, `eval`, or `exec` with concatenated input.
|
|
142
|
+
|
|
143
|
+
### Environment-variable access (read-only)
|
|
144
|
+
|
|
145
|
+
The CLI reads these env vars at run time:
|
|
146
|
+
|
|
147
|
+
- `OPENAI_API_KEY` (for the OpenAI adapter)
|
|
148
|
+
- `ANTHROPIC_API_KEY` (for the Anthropic adapter)
|
|
149
|
+
- `GOOGLE_API_KEY` (for the Gemini adapter)
|
|
150
|
+
- `GEMINI_API_KEY` (alias for the Gemini adapter)
|
|
151
|
+
|
|
152
|
+
API keys are passed directly into each provider's official SDK and used
|
|
153
|
+
as the `Authorization: Bearer <key>` header for that provider's API.
|
|
154
|
+
The CLI never writes env vars, never stores keys to disk, never logs
|
|
155
|
+
their values, and never sends them anywhere except the matching
|
|
156
|
+
provider.
|
|
157
|
+
|
|
158
|
+
### Filesystem access
|
|
159
|
+
|
|
160
|
+
- **Reads** (from your workspace): `.gitignore`, `.almightyignore`,
|
|
161
|
+
`.almightygpt/config.yaml`, `.almightygpt/rules.md`, `AGENTS.md`, your
|
|
162
|
+
configured agent memory files (`CLAUDE.md`, `CODEX_AGENT.md`,
|
|
163
|
+
`GEMINI_AGENT.md`), and the file contents covered by the collected
|
|
164
|
+
`git diff`.
|
|
165
|
+
- **Writes** (only to two paths, both configured in
|
|
166
|
+
`.almightygpt/config.yaml`):
|
|
167
|
+
- `docs/<reviewer>-reviews/<topic>.md` — the human review artifact
|
|
168
|
+
(subject to a refuse-overwrite policy: never overwrites an existing
|
|
169
|
+
review file without `--force`)
|
|
170
|
+
- `.almightygpt/runs/<id>/` — machine-readable run metadata
|
|
171
|
+
- **Per-target git safety check** runs before every Markdown write. Dirty
|
|
172
|
+
target files are refused unless `--force` is passed.
|
|
173
|
+
|
|
174
|
+
### Secret redaction (defense in depth)
|
|
175
|
+
|
|
176
|
+
Before any diff is sent to a provider, the CLI:
|
|
177
|
+
|
|
178
|
+
1. **Filters out ignored files** per-file by parsing the unified diff
|
|
179
|
+
into per-file sections and dropping any file matching `.gitignore`,
|
|
180
|
+
`.almightyignore`, or `config.context.exclude`. Ignored files never
|
|
181
|
+
reach the provider — they're not just redacted, they're omitted
|
|
182
|
+
entirely.
|
|
183
|
+
2. **Redacts nine secret patterns** in what remains: OpenAI / Anthropic
|
|
184
|
+
keys, GitHub PATs, AWS access keys, Slack tokens, JWTs, PEM private
|
|
185
|
+
key blocks, bearer tokens in headers, generic assignment-style
|
|
186
|
+
secrets (`api_key="..."`, `password=...`).
|
|
187
|
+
|
|
188
|
+
Both steps are logged in `context-manifest.json` for every run.
|
|
189
|
+
|
|
190
|
+
### What the CLI does NOT do
|
|
191
|
+
|
|
192
|
+
- Send your code anywhere other than the AI provider you explicitly
|
|
193
|
+
configured and invoked
|
|
194
|
+
- Phone home with telemetry, analytics, or error reports
|
|
195
|
+
- Auto-update itself or check for newer versions
|
|
196
|
+
- Store API keys in any file
|
|
197
|
+
- Execute arbitrary user-supplied shell commands
|
|
198
|
+
- Eval remote content
|
|
199
|
+
- Run install/postinstall scripts (none in the runtime dependency tree)
|
|
200
|
+
|
|
201
|
+
### Runtime dependencies (12 total: 10 third-party + 2 our own)
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
almightygpt
|
|
205
|
+
├── @almightygpt/core
|
|
206
|
+
│ ├── @anthropic-ai/sdk Anthropic's official Claude SDK
|
|
207
|
+
│ ├── @google/generative-ai Google's official Gemini SDK
|
|
208
|
+
│ ├── openai OpenAI's official SDK
|
|
209
|
+
│ ├── execa spawn `git` as child process
|
|
210
|
+
│ ├── ignore parse .gitignore / .almightyignore syntax
|
|
211
|
+
│ ├── yaml parse .almightygpt/config.yaml
|
|
212
|
+
│ ├── zod validate config schema
|
|
213
|
+
│ └── p-limit limit parallel adapter calls
|
|
214
|
+
├── @almightygpt/templates (no runtime dependencies)
|
|
215
|
+
├── chalk terminal colors
|
|
216
|
+
└── commander CLI argument parser
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
All pure JavaScript. No native binaries. No install scripts. `npm audit`
|
|
220
|
+
reports zero vulnerabilities. Verify on Socket:
|
|
221
|
+
**https://socket.dev/npm/package/almightygpt**
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
MIT. See [LICENSE](https://github.com/roxjayanath/almightygpt/blob/main/LICENSE).
|
|
228
|
+
|
|
229
|
+
## Links
|
|
230
|
+
|
|
231
|
+
- **GitHub**: https://github.com/roxjayanath/almightygpt
|
|
232
|
+
- **Issues**: https://github.com/roxjayanath/almightygpt/issues
|
|
233
|
+
- **VS Code extension**: https://marketplace.visualstudio.com/items?itemName=almightygpt.almightygpt-vscode
|
|
234
|
+
- **Open VSX extension**: https://open-vsx.org/extension/almightygpt/almightygpt-vscode
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ program
|
|
|
15
15
|
.name("almightygpt")
|
|
16
16
|
.description("The convention and tooling for multi-AI development. " +
|
|
17
17
|
"One AI writes, another AI reviews.")
|
|
18
|
-
.version("0.5.
|
|
18
|
+
.version("0.5.2");
|
|
19
19
|
program.addCommand(createInitCommand());
|
|
20
20
|
program.addCommand(createReviewCommand());
|
|
21
21
|
program.addCommand(createRunsCommand());
|