everything-claude-code 1.4.3
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/LICENSE +21 -0
- package/README.md +739 -0
- package/README.zh-CN.md +523 -0
- package/crates/ecc-kernel/Cargo.lock +160 -0
- package/crates/ecc-kernel/Cargo.toml +15 -0
- package/crates/ecc-kernel/src/main.rs +710 -0
- package/docs/ecc.md +117 -0
- package/package.json +45 -0
- package/packs/blueprint.json +8 -0
- package/packs/forge.json +16 -0
- package/packs/instinct.json +16 -0
- package/packs/orchestra.json +15 -0
- package/packs/proof.json +8 -0
- package/packs/sentinel.json +8 -0
- package/prompts/ecc/patch.md +25 -0
- package/prompts/ecc/plan.md +28 -0
- package/schemas/ecc.apply.schema.json +35 -0
- package/schemas/ecc.config.schema.json +37 -0
- package/schemas/ecc.lock.schema.json +34 -0
- package/schemas/ecc.patch.schema.json +25 -0
- package/schemas/ecc.plan.schema.json +32 -0
- package/schemas/ecc.run.schema.json +67 -0
- package/schemas/ecc.verify.schema.json +27 -0
- package/schemas/hooks.schema.json +81 -0
- package/schemas/package-manager.schema.json +17 -0
- package/schemas/plugin.schema.json +13 -0
- package/scripts/ecc/catalog.js +82 -0
- package/scripts/ecc/config.js +43 -0
- package/scripts/ecc/diff.js +113 -0
- package/scripts/ecc/exec.js +121 -0
- package/scripts/ecc/fixtures/basic/patches/impl-core.diff +8 -0
- package/scripts/ecc/fixtures/basic/patches/tests.diff +8 -0
- package/scripts/ecc/fixtures/basic/plan.json +23 -0
- package/scripts/ecc/fixtures/unauthorized/patches/impl-core.diff +8 -0
- package/scripts/ecc/fixtures/unauthorized/plan.json +15 -0
- package/scripts/ecc/git.js +139 -0
- package/scripts/ecc/id.js +37 -0
- package/scripts/ecc/install-kernel.js +344 -0
- package/scripts/ecc/json-extract.js +301 -0
- package/scripts/ecc/json.js +26 -0
- package/scripts/ecc/kernel.js +144 -0
- package/scripts/ecc/lock.js +36 -0
- package/scripts/ecc/paths.js +28 -0
- package/scripts/ecc/plan.js +57 -0
- package/scripts/ecc/project.js +37 -0
- package/scripts/ecc/providers/codex.js +168 -0
- package/scripts/ecc/providers/index.js +23 -0
- package/scripts/ecc/providers/mock.js +49 -0
- package/scripts/ecc/report.js +127 -0
- package/scripts/ecc/run.js +105 -0
- package/scripts/ecc/validate.js +325 -0
- package/scripts/ecc/verify.js +125 -0
- package/scripts/ecc.js +532 -0
- package/scripts/lib/package-manager.js +390 -0
- package/scripts/lib/session-aliases.js +432 -0
- package/scripts/lib/session-manager.js +396 -0
- package/scripts/lib/utils.js +426 -0
package/docs/ecc.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# ECC CLI (Engineering Change Conveyor)
|
|
2
|
+
|
|
3
|
+
ECC turns an "AI-assisted coding" request into a **replayable, auditable, verifiable** engineering workflow:
|
|
4
|
+
|
|
5
|
+
`init -> doctor -> plan -> exec -> verify -> run`
|
|
6
|
+
|
|
7
|
+
Core properties:
|
|
8
|
+
- **Code sovereignty**: providers output only structured JSON + unified diff patches; ECC applies patches.
|
|
9
|
+
- **Isolation**: `exec/verify` run in an **external git worktree**, so your main working tree is never polluted.
|
|
10
|
+
- **Evidence chain**: all artifacts are written under `.ecc/runs/<runId>/`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
### Option A: Run from source (this repo)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node scripts/ecc.js --help
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Rust Kernel (Optional, Low-Memory)
|
|
23
|
+
|
|
24
|
+
ECC can offload the heavy "kernel" operations (worktree / patch apply / verify command runner)
|
|
25
|
+
to a small Rust binary: `ecc-kernel`.
|
|
26
|
+
|
|
27
|
+
### Prebuilt (no Rust required)
|
|
28
|
+
|
|
29
|
+
When installed via npm, ECC runs a `postinstall` that tries to download a prebuilt `ecc-kernel`
|
|
30
|
+
from the GitHub release matching your `package.json` version tag (`vX.Y.Z`).
|
|
31
|
+
|
|
32
|
+
Controls:
|
|
33
|
+
- `ECC_KERNEL_INSTALL=0` disables download
|
|
34
|
+
- `ECC_KERNEL_INSTALL=required` fails install if download fails
|
|
35
|
+
- `ECC_KERNEL_BASE_URL=...` overrides download base URL
|
|
36
|
+
|
|
37
|
+
### Build From Source
|
|
38
|
+
|
|
39
|
+
Build it (from repo root):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
cargo build --release --manifest-path crates/ecc-kernel/Cargo.toml
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then rerun `ecc`; `ecc doctor` will report `kernel: rust (...)`.
|
|
46
|
+
|
|
47
|
+
Environment:
|
|
48
|
+
- `ECC_KERNEL=auto|rust|node` (default: `auto`)
|
|
49
|
+
- `ECC_KERNEL_PATH=/absolute/path/to/ecc-kernel`
|
|
50
|
+
|
|
51
|
+
### Option B: Install as a CLI (global)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# from a local checkout path
|
|
55
|
+
npm install -g /path/to/everything-claude-code
|
|
56
|
+
|
|
57
|
+
ecc --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Option C: Install into a project (recommended)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# from a local checkout path
|
|
64
|
+
npm install -D /path/to/everything-claude-code
|
|
65
|
+
|
|
66
|
+
npx ecc --help
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Quickstart (Mock Provider)
|
|
72
|
+
|
|
73
|
+
Use the deterministic mock provider to validate the pipeline without calling Codex:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
ecc init
|
|
77
|
+
|
|
78
|
+
ECC_PROVIDER=mock ECC_FIXTURE=basic ecc run "demo" --run-id demo
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Artifacts:
|
|
82
|
+
- `.ecc/ecc.json`
|
|
83
|
+
- `.ecc/locks/registry.lock.json`
|
|
84
|
+
- `.ecc/runs/demo/` (plan, patches, apply evidence, verify evidence, report)
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Quickstart (Codex Provider)
|
|
89
|
+
|
|
90
|
+
Prereqs:
|
|
91
|
+
- `codex` installed and on `PATH`
|
|
92
|
+
- project is a git repo
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ecc init
|
|
96
|
+
ecc doctor
|
|
97
|
+
|
|
98
|
+
ecc run "Add a hello endpoint" --run-id hello-endpoint
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Commands
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
ecc packs
|
|
107
|
+
ecc init [--backend codex|claude] [--packs a,b,c]
|
|
108
|
+
ecc doctor
|
|
109
|
+
ecc plan "<intent>" [--run-id <id>]
|
|
110
|
+
ecc exec <runId> [--worktree-root <path>] [--keep-worktree] [--commit]
|
|
111
|
+
ecc verify <runId> [--worktree-root <path>]
|
|
112
|
+
ecc run "<intent>" [--run-id <id>] [--worktree-root <path>] [--keep-worktree] [--commit]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Notes:
|
|
116
|
+
- `--commit` commits in the worktree **only after verify passes**.
|
|
117
|
+
- If a patch touches files outside a task's `allowedPathPrefixes`, `exec` **fails fast**.
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "everything-claude-code",
|
|
3
|
+
"version": "1.4.3",
|
|
4
|
+
"description": "Everything Claude Code + ECC (Engineering Change Conveyor) CLI",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/sumulige/everything-claude-code.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/sumulige/everything-claude-code/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/sumulige/everything-claude-code#readme",
|
|
14
|
+
"bin": {
|
|
15
|
+
"ecc": "./scripts/ecc.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"scripts/ecc.js",
|
|
19
|
+
"scripts/ecc/*.js",
|
|
20
|
+
"scripts/ecc/providers/",
|
|
21
|
+
"scripts/ecc/fixtures/",
|
|
22
|
+
"scripts/lib/",
|
|
23
|
+
"crates/ecc-kernel/Cargo.toml",
|
|
24
|
+
"crates/ecc-kernel/Cargo.lock",
|
|
25
|
+
"crates/ecc-kernel/src/",
|
|
26
|
+
"packs/",
|
|
27
|
+
"schemas/",
|
|
28
|
+
"prompts/ecc/",
|
|
29
|
+
"docs/ecc.md",
|
|
30
|
+
"README.md",
|
|
31
|
+
"LICENSE"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"ecc:build-kernel": "cargo build --release --manifest-path crates/ecc-kernel/Cargo.toml",
|
|
35
|
+
"ecc:install-kernel": "node scripts/ecc/install-kernel.js",
|
|
36
|
+
"postinstall": "node scripts/ecc/install-kernel.js",
|
|
37
|
+
"test": "node tests/run-all.js"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@eslint/js": "^9.39.2",
|
|
41
|
+
"eslint": "^9.39.2",
|
|
42
|
+
"globals": "^17.1.0",
|
|
43
|
+
"markdownlint-cli": "^0.47.0"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "blueprint",
|
|
3
|
+
"name": "Blueprint",
|
|
4
|
+
"description": "Turn vague intent into an executable plan: requirements, risk, interfaces, and an incremental path to shipping.",
|
|
5
|
+
"tags": ["planning", "architecture", "scope"],
|
|
6
|
+
"modules": ["command:plan", "command:multi-plan", "agent:planner", "agent:architect"]
|
|
7
|
+
}
|
|
8
|
+
|
package/packs/forge.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "forge",
|
|
3
|
+
"name": "Forge",
|
|
4
|
+
"description": "Ship with confidence: TDD-first workflows, coverage discipline, and fast iteration when builds break.",
|
|
5
|
+
"tags": ["tdd", "implementation", "reliability"],
|
|
6
|
+
"modules": [
|
|
7
|
+
"command:tdd",
|
|
8
|
+
"command:test-coverage",
|
|
9
|
+
"command:build-fix",
|
|
10
|
+
"command:multi-execute",
|
|
11
|
+
"agent:tdd-guide",
|
|
12
|
+
"agent:build-error-resolver",
|
|
13
|
+
"skill:tdd-workflow"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "instinct",
|
|
3
|
+
"name": "Instinct",
|
|
4
|
+
"description": "Make your agent learn. Extract patterns from real sessions, score confidence, and evolve stable workflows over time.",
|
|
5
|
+
"tags": ["learning", "memory", "automation"],
|
|
6
|
+
"modules": [
|
|
7
|
+
"command:learn",
|
|
8
|
+
"command:instinct-status",
|
|
9
|
+
"command:instinct-import",
|
|
10
|
+
"command:instinct-export",
|
|
11
|
+
"command:evolve",
|
|
12
|
+
"skill:continuous-learning",
|
|
13
|
+
"skill:continuous-learning-v2"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "orchestra",
|
|
3
|
+
"name": "Orchestra",
|
|
4
|
+
"description": "Scale beyond a single agent: orchestrate multi-service work, keep state, and run parallel workflows without chaos.",
|
|
5
|
+
"tags": ["multi-agent", "orchestration", "systems"],
|
|
6
|
+
"modules": [
|
|
7
|
+
"command:orchestrate",
|
|
8
|
+
"command:pm2",
|
|
9
|
+
"command:multi-workflow",
|
|
10
|
+
"command:multi-backend",
|
|
11
|
+
"command:multi-frontend",
|
|
12
|
+
"command:multi-execute"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
|
package/packs/proof.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "proof",
|
|
3
|
+
"name": "Proof",
|
|
4
|
+
"description": "Verification loops that earn trust: checkpoints, build + test discipline, and eval-driven development patterns.",
|
|
5
|
+
"tags": ["verification", "quality", "evals"],
|
|
6
|
+
"modules": ["command:verify", "command:checkpoint", "command:eval", "skill:verification-loop", "skill:eval-harness"]
|
|
7
|
+
}
|
|
8
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "sentinel",
|
|
3
|
+
"name": "Sentinel",
|
|
4
|
+
"description": "Security and review as defaults: systematic threat checks, safer diffs, and an opinionated quality gate.",
|
|
5
|
+
"tags": ["security", "review", "risk"],
|
|
6
|
+
"modules": ["command:code-review", "agent:code-reviewer", "agent:security-reviewer", "skill:security-review"]
|
|
7
|
+
}
|
|
8
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ECC Patch (JSON Only)
|
|
2
|
+
|
|
3
|
+
You are generating a **unified diff patch** for a single ECC task.
|
|
4
|
+
|
|
5
|
+
## Output Contract (MANDATORY)
|
|
6
|
+
- Output **JSON only** with this shape:
|
|
7
|
+
- `patch` (string): a unified diff usable by `git apply`
|
|
8
|
+
- `meta` (object): extra notes
|
|
9
|
+
- Allowed keys only: `note`, `reason`, `provider`
|
|
10
|
+
- Include all 3 keys (use empty string if not applicable)
|
|
11
|
+
|
|
12
|
+
## Hard Constraints
|
|
13
|
+
- You MUST ONLY modify files within the provided `allowedPathPrefixes`.
|
|
14
|
+
- If you cannot complete the task without touching other files, still obey ownership:
|
|
15
|
+
- put all necessary changes within allowed prefixes
|
|
16
|
+
- otherwise output an **empty patch** and explain in `meta` why
|
|
17
|
+
- Patch must be minimal and production-grade (readable, consistent with existing patterns).
|
|
18
|
+
|
|
19
|
+
## Input (from caller)
|
|
20
|
+
You will be given:
|
|
21
|
+
- Task (id, title, prompt)
|
|
22
|
+
- allowedPathPrefixes
|
|
23
|
+
- Project context (light)
|
|
24
|
+
|
|
25
|
+
## Return JSON
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ECC Plan (JSON Only)
|
|
2
|
+
|
|
3
|
+
You are generating an ECC plan for an engineering task.
|
|
4
|
+
|
|
5
|
+
## Output Contract (MANDATORY)
|
|
6
|
+
- Output **JSON only**.
|
|
7
|
+
- The JSON must match the `schemas/ecc.plan.schema.json` contract:
|
|
8
|
+
- `version` must be `1`
|
|
9
|
+
- `intent` is the user's intent string
|
|
10
|
+
- `tasks[]` is a list of patch tasks that can be executed sequentially
|
|
11
|
+
|
|
12
|
+
## Planning Rules
|
|
13
|
+
- Keep tasks **small and file-disjoint**. Assume tasks run sequentially in P0, but avoid overlapping file ownership anyway.
|
|
14
|
+
- Each task must include `allowedPathPrefixes` (non-empty) so the executor can block unauthorized edits.
|
|
15
|
+
- Prefer **3-6 tasks** for typical features:
|
|
16
|
+
- one for core implementation
|
|
17
|
+
- one for tests
|
|
18
|
+
- optional: one for wiring/config
|
|
19
|
+
- `prompt` must be sufficient for a patch generator to act without extra coordination.
|
|
20
|
+
|
|
21
|
+
## Input (from caller)
|
|
22
|
+
You will be given:
|
|
23
|
+
- Project root
|
|
24
|
+
- Selected packs (paradigms)
|
|
25
|
+
- User intent
|
|
26
|
+
|
|
27
|
+
## Return JSON
|
|
28
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Apply Result",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["version", "appliedAt", "baseSha", "tasks"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "integer", "const": 1 },
|
|
9
|
+
"appliedAt": { "type": "string", "minLength": 1 },
|
|
10
|
+
"baseSha": { "type": "string", "minLength": 1 },
|
|
11
|
+
"tasks": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": ["id", "patchPath", "ok"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"id": { "type": "string", "minLength": 1 },
|
|
19
|
+
"patchPath": { "type": "string", "minLength": 1 },
|
|
20
|
+
"ok": { "type": "boolean" },
|
|
21
|
+
"error": { "type": "string" }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"commit": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"required": ["sha", "message"],
|
|
29
|
+
"properties": {
|
|
30
|
+
"sha": { "type": "string", "minLength": 1 },
|
|
31
|
+
"message": { "type": "string", "minLength": 1 }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Project Config",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["version", "backend", "packs", "verify", "createdAt"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "integer", "const": 1 },
|
|
9
|
+
"backend": { "type": "string", "enum": ["codex", "claude"] },
|
|
10
|
+
"packs": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"items": { "type": "string", "minLength": 1 }
|
|
14
|
+
},
|
|
15
|
+
"verify": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"required": ["mode"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"mode": { "type": "string", "enum": ["auto", "manual"] },
|
|
21
|
+
"commands": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"required": ["name", "command"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"name": { "type": "string", "minLength": 1 },
|
|
29
|
+
"command": { "type": "string", "minLength": 1 }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"createdAt": { "type": "string", "minLength": 1 }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Registry Lock",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["version", "lockedAt", "engine", "catalog", "packs"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "integer", "const": 1 },
|
|
9
|
+
"lockedAt": { "type": "string", "minLength": 1 },
|
|
10
|
+
"engine": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"required": ["name"],
|
|
14
|
+
"properties": {
|
|
15
|
+
"name": { "type": "string", "const": "ecc" },
|
|
16
|
+
"version": { "type": "string" }
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"catalog": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"required": ["type", "digest"],
|
|
23
|
+
"properties": {
|
|
24
|
+
"type": { "type": "string", "const": "embedded" },
|
|
25
|
+
"digest": { "type": "string", "minLength": 1 }
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"packs": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"minItems": 1,
|
|
31
|
+
"items": { "type": "string", "minLength": 1 }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "ecc.patch.schema.json",
|
|
4
|
+
"title": "ECC Patch Output (P0)",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["patch", "meta"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"patch": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Unified diff (git apply compatible). May be empty when task cannot be completed within allowedPathPrefixes."
|
|
12
|
+
},
|
|
13
|
+
"meta": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"description": "Structured notes.",
|
|
17
|
+
"required": ["note", "reason", "provider"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"note": { "type": "string" },
|
|
20
|
+
"reason": { "type": "string" },
|
|
21
|
+
"provider": { "type": "string" }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Plan",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["version", "intent", "tasks"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "integer", "const": 1 },
|
|
9
|
+
"intent": { "type": "string", "minLength": 1 },
|
|
10
|
+
"tasks": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": ["id", "title", "kind", "dependsOn", "allowedPathPrefixes", "prompt"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"id": { "type": "string", "minLength": 1 },
|
|
19
|
+
"title": { "type": "string", "minLength": 1 },
|
|
20
|
+
"kind": { "type": "string", "const": "patch" },
|
|
21
|
+
"dependsOn": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
22
|
+
"allowedPathPrefixes": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"minItems": 1,
|
|
25
|
+
"items": { "type": "string", "minLength": 1 }
|
|
26
|
+
},
|
|
27
|
+
"prompt": { "type": "string", "minLength": 1 }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Run",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": [
|
|
7
|
+
"version",
|
|
8
|
+
"runId",
|
|
9
|
+
"intent",
|
|
10
|
+
"backend",
|
|
11
|
+
"packs",
|
|
12
|
+
"status",
|
|
13
|
+
"base",
|
|
14
|
+
"worktree",
|
|
15
|
+
"artifacts",
|
|
16
|
+
"startedAt"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"version": { "type": "integer", "const": 1 },
|
|
20
|
+
"runId": { "type": "string", "minLength": 1 },
|
|
21
|
+
"intent": { "type": "string", "minLength": 1 },
|
|
22
|
+
"backend": { "type": "string", "enum": ["codex", "claude"] },
|
|
23
|
+
"packs": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"minItems": 1,
|
|
26
|
+
"items": { "type": "string", "minLength": 1 }
|
|
27
|
+
},
|
|
28
|
+
"status": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"enum": ["planned", "executing", "verifying", "succeeded", "failed"]
|
|
31
|
+
},
|
|
32
|
+
"base": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"additionalProperties": false,
|
|
35
|
+
"required": ["repoRoot", "branch", "sha"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"repoRoot": { "type": "string", "minLength": 1 },
|
|
38
|
+
"branch": { "type": "string" },
|
|
39
|
+
"sha": { "type": "string" }
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"worktree": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"required": ["path", "branch"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"path": { "type": "string" },
|
|
48
|
+
"branch": { "type": "string" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"artifacts": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"required": ["planJson", "planMd", "patchesDir", "applyJson", "verifyDir", "reportMd"],
|
|
55
|
+
"properties": {
|
|
56
|
+
"planJson": { "type": "string", "minLength": 1 },
|
|
57
|
+
"planMd": { "type": "string", "minLength": 1 },
|
|
58
|
+
"patchesDir": { "type": "string", "minLength": 1 },
|
|
59
|
+
"applyJson": { "type": "string", "minLength": 1 },
|
|
60
|
+
"verifyDir": { "type": "string", "minLength": 1 },
|
|
61
|
+
"reportMd": { "type": "string", "minLength": 1 }
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"startedAt": { "type": "string", "minLength": 1 },
|
|
65
|
+
"endedAt": { "type": "string" }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "ECC Verify Summary",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["version", "ranAt", "commands", "ok"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": { "type": "integer", "const": 1 },
|
|
9
|
+
"ranAt": { "type": "string", "minLength": 1 },
|
|
10
|
+
"commands": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["name", "command", "ok", "exitCode", "outputPath"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"name": { "type": "string", "minLength": 1 },
|
|
18
|
+
"command": { "type": "string", "minLength": 1 },
|
|
19
|
+
"ok": { "type": "boolean" },
|
|
20
|
+
"exitCode": { "type": "integer" },
|
|
21
|
+
"outputPath": { "type": "string", "minLength": 1 }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"ok": { "type": "boolean" }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Claude Code Hooks Configuration",
|
|
4
|
+
"description": "Configuration for Claude Code hooks. Event types are validated at runtime and must be one of: PreToolUse, PostToolUse, PreCompact, SessionStart, SessionEnd, Stop, Notification, SubagentStop",
|
|
5
|
+
"$defs": {
|
|
6
|
+
"hookItem": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": [
|
|
9
|
+
"type",
|
|
10
|
+
"command"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"type": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"command": {
|
|
17
|
+
"oneOf": [
|
|
18
|
+
{
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"matcherEntry": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": [
|
|
34
|
+
"matcher",
|
|
35
|
+
"hooks"
|
|
36
|
+
],
|
|
37
|
+
"properties": {
|
|
38
|
+
"matcher": {
|
|
39
|
+
"type": "string"
|
|
40
|
+
},
|
|
41
|
+
"hooks": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"$ref": "#/$defs/hookItem"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"description": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"oneOf": [
|
|
54
|
+
{
|
|
55
|
+
"type": "object",
|
|
56
|
+
"properties": {
|
|
57
|
+
"$schema": {
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"hooks": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"additionalProperties": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"$ref": "#/$defs/matcherEntry"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"required": [
|
|
71
|
+
"hooks"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"type": "array",
|
|
76
|
+
"items": {
|
|
77
|
+
"$ref": "#/$defs/matcherEntry"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Package Manager Configuration",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"packageManager": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"enum": [
|
|
9
|
+
"npm",
|
|
10
|
+
"pnpm",
|
|
11
|
+
"yarn",
|
|
12
|
+
"bun"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
}
|