almightygpt 0.5.2 → 0.7.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 +8 -7
- package/dist/commands/precommit.d.ts +19 -0
- package/dist/commands/precommit.d.ts.map +1 -0
- package/dist/commands/precommit.js +160 -0
- package/dist/commands/precommit.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ Requires Node.js 18+.
|
|
|
35
35
|
```bash
|
|
36
36
|
# 1. Initialize the Convention Pack in any repo
|
|
37
37
|
cd ~/your-project
|
|
38
|
-
almightygpt init --stack node-ts # or python-django / python-fastapi / rails / go
|
|
38
|
+
almightygpt init --stack node-ts # or next-js / python-django / python-fastapi / rails / go
|
|
39
39
|
|
|
40
40
|
# 2. Set at least one provider API key (read once, never stored)
|
|
41
41
|
export OPENAI_API_KEY=sk-...
|
|
@@ -63,7 +63,8 @@ your audit trail. Machine metadata (cost, tokens, raw outputs) lands at
|
|
|
63
63
|
| Command | What |
|
|
64
64
|
| --- | --- |
|
|
65
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 |
|
|
66
|
+
| `almightygpt review --diff [range] [--worker X] --reviewer Y --topic Z` | Run a review (Stage 2 — deep cross-AI) |
|
|
67
|
+
| `almightygpt precommit [--strict]` | Quick last-mile review of uncommitted changes (Stage 3 — Gemini Flash by default) |
|
|
67
68
|
| `almightygpt runs list [--limit N]` | List recent runs |
|
|
68
69
|
| `almightygpt runs latest` | Show the most recent run |
|
|
69
70
|
| `almightygpt decide <id\|latest> --status <s> --note "..."` | Record a human decision |
|
|
@@ -72,12 +73,12 @@ All commands accept `--json` for machine-readable output. The `review`
|
|
|
72
73
|
command streams JSON events one per line, suitable for tooling (the VS
|
|
73
74
|
Code extension uses this directly).
|
|
74
75
|
|
|
75
|
-
##
|
|
76
|
+
## Six supported stack templates
|
|
76
77
|
|
|
77
|
-
`node-ts`, `python-django`, `python-fastapi`, `rails`, `go` —
|
|
78
|
-
with a stack-tuned `CLAUDE.md` for the Worker AI, an
|
|
79
|
-
covering that stack's typical secret-bearing paths, and
|
|
80
|
-
sensible `context.include` / `context.exclude` globs.
|
|
78
|
+
`node-ts`, `next-js`, `python-django`, `python-fastapi`, `rails`, `go` —
|
|
79
|
+
each ships with a stack-tuned `CLAUDE.md` for the Worker AI, an
|
|
80
|
+
`.almightyignore` covering that stack's typical secret-bearing paths, and
|
|
81
|
+
a config with sensible `context.include` / `context.exclude` globs.
|
|
81
82
|
|
|
82
83
|
## Four real provider adapters
|
|
83
84
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `almightygpt precommit` — quick last-mile review of uncommitted changes.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the existing diff-review pipeline with:
|
|
5
|
+
* - Reviewer defaults to `config.defaults.quickReviewer` (typically gemini),
|
|
6
|
+
* falling back to `config.defaults.reviewer`.
|
|
7
|
+
* - Topic auto-generated as `precommit-<unix-timestamp>` if not provided.
|
|
8
|
+
* - `--force` defaults to true (precommit reruns often; overwrite is fine).
|
|
9
|
+
* - Exit code 2 on shallow warning when `--strict` is passed
|
|
10
|
+
* (so a git pre-commit hook can block).
|
|
11
|
+
*
|
|
12
|
+
* The 3-stage convention this enables:
|
|
13
|
+
* 1. Worker (Claude) — plan + write
|
|
14
|
+
* 2. Reviewer (Codex) — deep cross-AI review
|
|
15
|
+
* 3. Quick (Gemini) — last-mile precommit smoke check
|
|
16
|
+
*/
|
|
17
|
+
import { Command } from "commander";
|
|
18
|
+
export declare function createPrecommitCommand(): Command;
|
|
19
|
+
//# sourceMappingURL=precommit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precommit.d.ts","sourceRoot":"","sources":["../../src/commands/precommit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,sBAAsB,IAAI,OAAO,CAmChD"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `almightygpt precommit` — quick last-mile review of uncommitted changes.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the existing diff-review pipeline with:
|
|
5
|
+
* - Reviewer defaults to `config.defaults.quickReviewer` (typically gemini),
|
|
6
|
+
* falling back to `config.defaults.reviewer`.
|
|
7
|
+
* - Topic auto-generated as `precommit-<unix-timestamp>` if not provided.
|
|
8
|
+
* - `--force` defaults to true (precommit reruns often; overwrite is fine).
|
|
9
|
+
* - Exit code 2 on shallow warning when `--strict` is passed
|
|
10
|
+
* (so a git pre-commit hook can block).
|
|
11
|
+
*
|
|
12
|
+
* The 3-stage convention this enables:
|
|
13
|
+
* 1. Worker (Claude) — plan + write
|
|
14
|
+
* 2. Reviewer (Codex) — deep cross-AI review
|
|
15
|
+
* 3. Quick (Gemini) — last-mile precommit smoke check
|
|
16
|
+
*/
|
|
17
|
+
import { resolve } from "node:path";
|
|
18
|
+
import { Command } from "commander";
|
|
19
|
+
import chalk from "chalk";
|
|
20
|
+
import { runDiffReview, loadConfig, AdapterError, BudgetExceededError, GitStatusDirtyError, ReviewFileExistsError, } from "@almightygpt/core";
|
|
21
|
+
export function createPrecommitCommand() {
|
|
22
|
+
return new Command("precommit")
|
|
23
|
+
.description("Quick last-mile review of uncommitted changes. Uses the cheap quick " +
|
|
24
|
+
"reviewer (Gemini Flash by default) for a fast pre-commit check. " +
|
|
25
|
+
"Intended for use in git pre-commit hooks.")
|
|
26
|
+
.option("--reviewer <name>", "override the quick reviewer. Defaults to config.defaults.quickReviewer, " +
|
|
27
|
+
"then config.defaults.reviewer.")
|
|
28
|
+
.option("--topic <name>", "topic slug for the review file. Defaults to `precommit-<unix-timestamp>`.")
|
|
29
|
+
.option("--range <range>", "git range to review (e.g. HEAD~1..HEAD). Defaults to uncommitted changes.")
|
|
30
|
+
.option("--cwd <path>", "repo root. Defaults to current directory.")
|
|
31
|
+
.option("--strict", "exit 2 if the review is flagged shallow or has any findings. " +
|
|
32
|
+
"Use this in pre-commit hooks to block commits on issues.", false)
|
|
33
|
+
.option("--force", "overwrite the review file if it exists. Default true for precommit " +
|
|
34
|
+
"since the same topic gets re-run often. Pass --no-force to disable.", true)
|
|
35
|
+
.option("--json", "stream JSON events on stdout (one per line)", false)
|
|
36
|
+
.action(runPrecommit);
|
|
37
|
+
}
|
|
38
|
+
async function runPrecommit(opts) {
|
|
39
|
+
const repoRoot = resolve(opts.cwd ?? process.cwd());
|
|
40
|
+
// Resolve reviewer: explicit flag → quickReviewer → reviewer
|
|
41
|
+
let reviewer = opts.reviewer;
|
|
42
|
+
if (!reviewer) {
|
|
43
|
+
try {
|
|
44
|
+
const config = await loadConfig(repoRoot);
|
|
45
|
+
reviewer = config.defaults.quickReviewer ?? config.defaults.reviewer;
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
failed(`Could not load .almightygpt/config.yaml: ${err instanceof Error ? err.message : String(err)}`, opts.json);
|
|
49
|
+
process.exit(2);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!reviewer) {
|
|
53
|
+
failed("No quick reviewer configured. Set defaults.quickReviewer in " +
|
|
54
|
+
".almightygpt/config.yaml, or pass --reviewer <name>.", opts.json);
|
|
55
|
+
process.exit(2);
|
|
56
|
+
}
|
|
57
|
+
const topic = opts.topic ?? `precommit-${Math.floor(Date.now() / 1000)}`;
|
|
58
|
+
if (!opts.json) {
|
|
59
|
+
console.log(chalk.dim(`precommit: reviewer=${reviewer} topic=${topic}` +
|
|
60
|
+
(opts.range ? ` range=${opts.range}` : " (uncommitted)")));
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const drOpts = {
|
|
64
|
+
repoRoot,
|
|
65
|
+
topic,
|
|
66
|
+
reviewer,
|
|
67
|
+
force: opts.force,
|
|
68
|
+
};
|
|
69
|
+
if (opts.range)
|
|
70
|
+
drOpts.range = opts.range;
|
|
71
|
+
const result = await runDiffReview(drOpts);
|
|
72
|
+
if (opts.json) {
|
|
73
|
+
console.log(JSON.stringify({
|
|
74
|
+
type: "precommit_completed",
|
|
75
|
+
reviewer,
|
|
76
|
+
topic,
|
|
77
|
+
reviewPath: result.reviewPath,
|
|
78
|
+
runFolder: result.runFolder,
|
|
79
|
+
model: result.modelUsed,
|
|
80
|
+
tokensIn: result.tokensIn,
|
|
81
|
+
tokensOut: result.tokensOut,
|
|
82
|
+
costUsd: result.costUsd,
|
|
83
|
+
latencyMs: result.latencyMs,
|
|
84
|
+
shallowWarning: result.shallowWarning ?? null,
|
|
85
|
+
diffEmpty: result.diffEmpty,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
if (result.diffEmpty) {
|
|
90
|
+
console.log(chalk.dim(" nothing to review (diff empty)"));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log();
|
|
94
|
+
console.log(chalk.green(`✓ Quick review written to ${chalk.bold(result.reviewPath)}`));
|
|
95
|
+
console.log(chalk.dim(` ${result.tokensIn}/${result.tokensOut} tok, ` +
|
|
96
|
+
`$${result.costUsd.toFixed(4)}, ` +
|
|
97
|
+
`${(result.latencyMs / 1000).toFixed(1)}s ` +
|
|
98
|
+
`(${result.modelUsed})`));
|
|
99
|
+
if (result.shallowWarning) {
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(chalk.yellow(` ⚠ ${result.shallowWarning}`));
|
|
102
|
+
}
|
|
103
|
+
console.log();
|
|
104
|
+
console.log(chalk.dim(` → cat ${result.reviewPath} # read the findings`));
|
|
105
|
+
}
|
|
106
|
+
if (opts.strict && result.shallowWarning) {
|
|
107
|
+
if (!opts.json) {
|
|
108
|
+
console.log();
|
|
109
|
+
console.log(chalk.red("✗ --strict: shallow review or open findings — blocking commit. " +
|
|
110
|
+
"Address the issues or re-run without --strict."));
|
|
111
|
+
}
|
|
112
|
+
process.exit(2);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
handleError(err, opts.json);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function failed(message, json) {
|
|
121
|
+
if (json) {
|
|
122
|
+
console.log(JSON.stringify({ type: "error", message }));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
console.error(chalk.red(`error: ${message}`));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function handleError(err, json) {
|
|
129
|
+
if (err instanceof BudgetExceededError) {
|
|
130
|
+
const budgetErr = err;
|
|
131
|
+
if (json) {
|
|
132
|
+
console.log(JSON.stringify({
|
|
133
|
+
type: "error",
|
|
134
|
+
code: "BUDGET_EXCEEDED",
|
|
135
|
+
stage: budgetErr.stage,
|
|
136
|
+
capUsd: budgetErr.capUsd,
|
|
137
|
+
actualUsd: budgetErr.actualUsd,
|
|
138
|
+
message: budgetErr.message,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.error(chalk.red(`error (budget ${budgetErr.stage}): ${budgetErr.message}`));
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (err instanceof ReviewFileExistsError) {
|
|
147
|
+
failed(err.message, json);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (err instanceof GitStatusDirtyError) {
|
|
151
|
+
failed(err.message, json);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (err instanceof AdapterError) {
|
|
155
|
+
failed(`Adapter "${err.adapterName}": ${err.message}`, json);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
failed(err instanceof Error ? err.message : String(err), json);
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=precommit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precommit.js","sourceRoot":"","sources":["../../src/commands/precommit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAY3B,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;SAC5B,WAAW,CACV,sEAAsE;QACpE,kEAAkE;QAClE,2CAA2C,CAC9C;SACA,MAAM,CACL,mBAAmB,EACnB,0EAA0E;QACxE,gCAAgC,CACnC;SACA,MAAM,CACL,gBAAgB,EAChB,2EAA2E,CAC5E;SACA,MAAM,CACL,iBAAiB,EACjB,2EAA2E,CAC5E;SACA,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;SACnE,MAAM,CACL,UAAU,EACV,+DAA+D;QAC7D,0DAA0D,EAC5D,KAAK,CACN;SACA,MAAM,CACL,SAAS,EACT,qEAAqE;QACnE,qEAAqE,EACvE,IAAI,CACL;SACA,MAAM,CAAC,QAAQ,EAAE,6CAA6C,EAAE,KAAK,CAAC;SACtE,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAsB;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEpD,6DAA6D;IAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1C,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CACJ,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC9F,IAAI,CAAC,IAAI,CACV,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CACJ,8DAA8D;YAC5D,sDAAsD,EACxD,IAAI,CAAC,IAAI,CACV,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAEzE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,uBAAuB,QAAQ,UAAU,KAAK,EAAE;YAC9C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAwC;YAClD,QAAQ;YACR,KAAK;YACL,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ;gBACR,KAAK;gBACL,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,SAAS;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;gBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAC1E,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,QAAQ;gBAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACjC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBAC3C,IAAI,MAAM,CAAC,SAAS,GAAG,CAC1B,CACF,CAAC;YACF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,WAAW,MAAM,CAAC,UAAU,wBAAwB,CACrD,CACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,iEAAiE;oBAC/D,gDAAgD,CACnD,CACF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,OAAe,EAAE,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,IAAa;IAC9C,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAwB,GAAG,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,KAAK,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,CACrE,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,YAAY,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { Command } from "commander";
|
|
9
9
|
import { createInitCommand } from "./commands/init.js";
|
|
10
10
|
import { createReviewCommand } from "./commands/review.js";
|
|
11
|
+
import { createPrecommitCommand } from "./commands/precommit.js";
|
|
11
12
|
import { createRunsCommand } from "./commands/runs.js";
|
|
12
13
|
import { createDecideCommand } from "./commands/decide.js";
|
|
13
14
|
const program = new Command();
|
|
@@ -15,9 +16,10 @@ program
|
|
|
15
16
|
.name("almightygpt")
|
|
16
17
|
.description("The convention and tooling for multi-AI development. " +
|
|
17
18
|
"One AI writes, another AI reviews.")
|
|
18
|
-
.version("0.
|
|
19
|
+
.version("0.7.0");
|
|
19
20
|
program.addCommand(createInitCommand());
|
|
20
21
|
program.addCommand(createReviewCommand());
|
|
22
|
+
program.addCommand(createPrecommitCommand());
|
|
21
23
|
program.addCommand(createRunsCommand());
|
|
22
24
|
program.addCommand(createDecideCommand());
|
|
23
25
|
program.parseAsync(process.argv).catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,uDAAuD;IACrD,oCAAoC,CACvC;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,uDAAuD;IACrD,oCAAoC,CACvC;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "almightygpt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "AlmightyGPT CLI — the convention and tooling for multi-AI development",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"watch": "tsc -p tsconfig.json --watch"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@almightygpt/core": "^0.
|
|
22
|
-
"@almightygpt/templates": "^0.
|
|
21
|
+
"@almightygpt/core": "^0.7.0",
|
|
22
|
+
"@almightygpt/templates": "^0.7.0",
|
|
23
23
|
"chalk": "^5.3.0",
|
|
24
24
|
"commander": "^12.0.0"
|
|
25
25
|
},
|