@pimmesz/afterburner 1.0.1
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/.env.example +16 -0
- package/LICENSE +201 -0
- package/README.md +294 -0
- package/afterburner.config.example.ts +94 -0
- package/assets/afterburner-logo.png +0 -0
- package/dist/chunk-2NSOEZWY.js +11 -0
- package/dist/chunk-OZAFLQDP.js +1098 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +1524 -0
- package/dist/core/index.d.ts +781 -0
- package/dist/core/index.js +96 -0
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +8 -0
- package/package.json +75 -0
- package/skill/SKILL.md +38 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiKeyRunner,
|
|
3
|
+
BASE_TASK_TOKENS,
|
|
4
|
+
ClaudeCodeRunner,
|
|
5
|
+
ClaudeCodeTranscriptsBudgetProvider,
|
|
6
|
+
ClaudeUsageBudgetProvider,
|
|
7
|
+
ConsoleNotifier,
|
|
8
|
+
DEFAULT_MODEL_BY_CATEGORY,
|
|
9
|
+
DeterministicTaskSelector,
|
|
10
|
+
DryRunRunner,
|
|
11
|
+
JsonlRunStore,
|
|
12
|
+
ManualBudgetProvider,
|
|
13
|
+
TASK_CATEGORIES,
|
|
14
|
+
TASK_TAXONOMY,
|
|
15
|
+
assertModelAllowed,
|
|
16
|
+
budgetFromUsageCache,
|
|
17
|
+
buildClaudeCodeInvocation,
|
|
18
|
+
claudeConfigDir,
|
|
19
|
+
configDir,
|
|
20
|
+
configSchema,
|
|
21
|
+
createBudgetProvider,
|
|
22
|
+
createModelCostTable,
|
|
23
|
+
createRunner,
|
|
24
|
+
createSelector,
|
|
25
|
+
dataDir,
|
|
26
|
+
defaultClaudeProjectsDir,
|
|
27
|
+
defaultCostTable,
|
|
28
|
+
defaultRunStorePath,
|
|
29
|
+
defaultUsageCachePath,
|
|
30
|
+
defineConfig,
|
|
31
|
+
deriveBranchName,
|
|
32
|
+
derivePrTitle,
|
|
33
|
+
formatConfigError,
|
|
34
|
+
generateScheduleArtifacts,
|
|
35
|
+
isFableModel,
|
|
36
|
+
loadConfig,
|
|
37
|
+
mapConfigLoadError,
|
|
38
|
+
parseSimpleCron,
|
|
39
|
+
readUsageCache,
|
|
40
|
+
repoConfigSchema,
|
|
41
|
+
runOnce,
|
|
42
|
+
sanitizeSpawnEnv,
|
|
43
|
+
shouldIgnite,
|
|
44
|
+
startWatch,
|
|
45
|
+
summarizeTranscriptUsage,
|
|
46
|
+
taskFingerprint,
|
|
47
|
+
writeUsageCache
|
|
48
|
+
} from "../chunk-OZAFLQDP.js";
|
|
49
|
+
export {
|
|
50
|
+
ApiKeyRunner,
|
|
51
|
+
BASE_TASK_TOKENS,
|
|
52
|
+
ClaudeCodeRunner,
|
|
53
|
+
ClaudeCodeTranscriptsBudgetProvider,
|
|
54
|
+
ClaudeUsageBudgetProvider,
|
|
55
|
+
ConsoleNotifier,
|
|
56
|
+
DEFAULT_MODEL_BY_CATEGORY,
|
|
57
|
+
DeterministicTaskSelector,
|
|
58
|
+
DryRunRunner,
|
|
59
|
+
JsonlRunStore,
|
|
60
|
+
ManualBudgetProvider,
|
|
61
|
+
TASK_CATEGORIES,
|
|
62
|
+
TASK_TAXONOMY,
|
|
63
|
+
assertModelAllowed,
|
|
64
|
+
budgetFromUsageCache,
|
|
65
|
+
buildClaudeCodeInvocation,
|
|
66
|
+
claudeConfigDir,
|
|
67
|
+
configDir,
|
|
68
|
+
configSchema,
|
|
69
|
+
createBudgetProvider,
|
|
70
|
+
createModelCostTable,
|
|
71
|
+
createRunner,
|
|
72
|
+
createSelector,
|
|
73
|
+
dataDir,
|
|
74
|
+
defaultClaudeProjectsDir,
|
|
75
|
+
defaultCostTable,
|
|
76
|
+
defaultRunStorePath,
|
|
77
|
+
defaultUsageCachePath,
|
|
78
|
+
defineConfig,
|
|
79
|
+
deriveBranchName,
|
|
80
|
+
derivePrTitle,
|
|
81
|
+
formatConfigError,
|
|
82
|
+
generateScheduleArtifacts,
|
|
83
|
+
isFableModel,
|
|
84
|
+
loadConfig,
|
|
85
|
+
mapConfigLoadError,
|
|
86
|
+
parseSimpleCron,
|
|
87
|
+
readUsageCache,
|
|
88
|
+
repoConfigSchema,
|
|
89
|
+
runOnce,
|
|
90
|
+
sanitizeSpawnEnv,
|
|
91
|
+
shouldIgnite,
|
|
92
|
+
startWatch,
|
|
93
|
+
summarizeTranscriptUsage,
|
|
94
|
+
taskFingerprint,
|
|
95
|
+
writeUsageCache
|
|
96
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP front-end stub. The CLI is the primary product; the MCP server will be
|
|
3
|
+
* a thin wrapper exposing the same core actions (run-once, log, doctor) as
|
|
4
|
+
* tools for any MCP-compatible host.
|
|
5
|
+
*
|
|
6
|
+
* TODO: implement with the official MCP SDK. Adding that dependency is a
|
|
7
|
+
* deliberate decision deferred from the scaffold; core stays vendor-SDK-free
|
|
8
|
+
* and the server will live behind this entry point only.
|
|
9
|
+
*/
|
|
10
|
+
declare const MCP_STUB_MESSAGE: string;
|
|
11
|
+
declare function startMcpServer(): never;
|
|
12
|
+
|
|
13
|
+
export { MCP_STUB_MESSAGE, startMcpServer };
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pimmesz/afterburner",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Convert idle Claude subscription quota into shippable engineering work: budget-aware trigger, bounded task selection, PR-only output.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"packageManager": "pnpm@11.5.3",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22.12"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"afterburner": "./dist/cli/index.js",
|
|
16
|
+
"abr": "./dist/cli/index.js"
|
|
17
|
+
},
|
|
18
|
+
"main": "./dist/core/index.js",
|
|
19
|
+
"types": "./dist/core/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/core/index.d.ts",
|
|
23
|
+
"import": "./dist/core/index.js",
|
|
24
|
+
"default": "./dist/core/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"skill",
|
|
30
|
+
"assets/afterburner-logo.png",
|
|
31
|
+
"afterburner.config.example.ts",
|
|
32
|
+
".env.example"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsup",
|
|
36
|
+
"prepack": "pnpm build",
|
|
37
|
+
"dev": "tsx src/cli/index.ts",
|
|
38
|
+
"lint": "eslint . && prettier --check .",
|
|
39
|
+
"format": "prettier --write .",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"test:watch": "vitest"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/pimmesz/afterburner.git"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"claude",
|
|
50
|
+
"claude-code",
|
|
51
|
+
"automation",
|
|
52
|
+
"quota",
|
|
53
|
+
"agent",
|
|
54
|
+
"pull-request"
|
|
55
|
+
],
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"commander": "^15.0.0",
|
|
58
|
+
"cosmiconfig": "^9.0.2",
|
|
59
|
+
"env-paths": "^4.0.0",
|
|
60
|
+
"node-cron": "^4.2.1",
|
|
61
|
+
"zod": "^4.4.3"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@eslint/js": "^10.0.1",
|
|
65
|
+
"@types/node": "^25.9.2",
|
|
66
|
+
"eslint": "^10.4.1",
|
|
67
|
+
"eslint-config-prettier": "^10.1.8",
|
|
68
|
+
"prettier": "^3.8.4",
|
|
69
|
+
"tsup": "^8.5.1",
|
|
70
|
+
"tsx": "^4.22.4",
|
|
71
|
+
"typescript": "^6.0.3",
|
|
72
|
+
"typescript-eslint": "^8.61.0",
|
|
73
|
+
"vitest": "^4.1.8"
|
|
74
|
+
}
|
|
75
|
+
}
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: afterburner
|
|
3
|
+
description: Turn leftover Claude subscription quota into a reviewed pull request. Use when the user asks to run afterburner, check whether there is enough Claude budget headroom to ignite a task, inspect afterburner run history, or diagnose an afterburner setup problem.
|
|
4
|
+
allowed-tools: Bash(afterburner *) Bash(abr *)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Afterburner
|
|
8
|
+
|
|
9
|
+
Afterburner converts idle Claude subscription quota into ONE bounded,
|
|
10
|
+
verifiable engineering task and opens a pull request for human review. It is
|
|
11
|
+
PR-only (never merges, never pushes to a default branch) and dry-run by
|
|
12
|
+
default.
|
|
13
|
+
|
|
14
|
+
This skill is a thin wrapper over the installed `afterburner` CLI. If
|
|
15
|
+
`afterburner --version` fails, tell the user to install it first (from a clone:
|
|
16
|
+
`pnpm install && pnpm build && npm install -g .`, see the README install
|
|
17
|
+
section; the package may not be on npm yet), then re-run their request.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
| Intent | Command |
|
|
22
|
+
| ---------------------------------- | -------------------------------- |
|
|
23
|
+
| Health check / diagnose setup | `afterburner doctor` |
|
|
24
|
+
| Single dry run (what WOULD happen) | `afterburner run-once --dry-run` |
|
|
25
|
+
| Run history (audit trail) | `afterburner log` |
|
|
26
|
+
| Live run | `afterburner run-once --live` |
|
|
27
|
+
|
|
28
|
+
## Rules
|
|
29
|
+
|
|
30
|
+
- Never bypass the dry-run default: pass `--live` only when the user
|
|
31
|
+
explicitly asks for a live run in this conversation.
|
|
32
|
+
- Report the would-be branch, PR title, and estimated Sonnet-equivalent token
|
|
33
|
+
cost back to the user verbatim from the command output.
|
|
34
|
+
- If `doctor` reports failures, surface its printed fix hints instead of
|
|
35
|
+
improvising your own.
|
|
36
|
+
- Never edit the user's afterburner config to enable a live backend, raise
|
|
37
|
+
budget numbers, or set `allowFable` unless the user explicitly asked for
|
|
38
|
+
that exact change.
|