@aperant/framework 0.13.0-next.0 → 0.13.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/CHANGELOG.md CHANGED
@@ -3,10 +3,9 @@
3
3
  All notable changes to `@aperant/framework` are documented here. See
4
4
  [`VERSIONING.md`](VERSIONING.md) for the per-tier contract.
5
5
 
6
- ## 0.13.0-next.0 — 2026-06-05 — Catch-up panel fires on `/apt` + router passthrough policy
6
+ ## 0.13.0 — 2026-06-06 — Catch-up panel fires on `/apt` + router passthrough policy
7
7
 
8
- > Pre-release (`next` dist-tag) for testing. `latest` stays `0.12.1` until
9
- > this is validated and promoted.
8
+ > Validated as `0.13.0-next.0` on the `next` tag, then promoted to `latest`.
10
9
 
11
10
  ### Added
12
11
 
package/README.md CHANGED
@@ -76,6 +76,16 @@ Runtime command surfaces differ slightly:
76
76
  | **Framework** | `/apt:setup` | Change preferences (verification style, multi-model, parallelization, branching) |
77
77
  | **Framework** | `/apt:update` | Refresh installed skills / agents / hooks across every runtime |
78
78
 
79
+ ## Auto-spar plans
80
+
81
+ Have `/apt:run` challenge every plan with a second LLM before you approve. In `.aperant/config.local.json`:
82
+
83
+ ```json
84
+ { "spar": { "enabled": true, "partner": "codex" } }
85
+ ```
86
+
87
+ `partner` = `codex` | `claude` | `gemini` (not your current CLI). Fires after the plan stage (STANDARD) or plan + execute (DEEP); QUICK is exempt. Or run `/apt:setup` → Pipeline → Sparring Auto-Fire.
88
+
79
89
  ## License
80
90
 
81
91
  AGPL-3.0-only. See [LICENSE](LICENSE).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aperant",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
5
5
  "author": {
6
6
  "name": "Mikalsen AI",
@@ -105,9 +105,10 @@ While you were away:
105
105
  ```
106
106
 
107
107
  This is display-only here — the Last-Seen Marker advance happens in route.mjs,
108
- not in this skill. The panel is computed lazily on interactive (TTY) calls
109
- only; non-TTY/background/spawned calls carry no `catch_up` field. Do not call
110
- it an "activity feed", "changelog", or "notifications" it is the
108
+ not in this skill. The panel is computed lazily only when the explicit
109
+ interactive signal (`APT_FORCE_TTY=1`, set above) is present NOT a real TTY;
110
+ non-TTY/background/spawned calls omit the signal and carry no `catch_up` field.
111
+ Do not call it an "activity feed", "changelog", or "notifications" — it is the
111
112
  Welcome-Back Summary + Team-Change Digest.
112
113
 
113
114
  Then proceed to the matching mode handler below. Do NOT deviate from the routing decision.
package/package.json CHANGED
@@ -1,139 +1,139 @@
1
1
  {
2
- "name": "@aperant/framework",
3
- "version": "0.13.0-next.0",
4
- "description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
5
- "author": "Mikalsen AI <hello@mikalsen.ai>",
6
- "type": "module",
7
- "main": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "bin": {
10
- "framework": "./bin/apt-tools.mjs",
11
- "apt-tools": "./bin/apt-tools.mjs",
12
- "apt-proof-video": "./bin/apt-proof-video.mjs"
13
- },
14
- "exports": {
15
- ".": {
16
- "types": "./dist/index.d.ts",
17
- "import": "./dist/index.js"
18
- },
19
- "./types": {
20
- "types": "./dist/types/index.d.ts",
21
- "import": "./dist/types/index.js"
22
- },
23
- "./cost": {
24
- "types": "./dist/cost/index.d.ts",
25
- "import": "./dist/cost/index.js"
26
- },
27
- "./mappers": {
28
- "types": "./dist/mappers/index.d.ts",
29
- "import": "./dist/mappers/index.js"
30
- },
31
- "./schemas": {
32
- "types": "./dist/schemas/index.d.ts",
33
- "import": "./dist/schemas/index.js"
34
- },
35
- "./standalone": {
36
- "types": "./dist/standalone/index.d.ts",
37
- "import": "./dist/standalone/index.js"
38
- },
39
- "./driver-sdk": {
40
- "types": "./dist/driver-sdk/index.d.ts",
41
- "import": "./dist/driver-sdk/index.js"
42
- },
43
- "./coordination/event-schema": {
44
- "types": "./src/cli/coordination/event-schema.d.ts",
45
- "import": "./src/cli/coordination/event-schema.mjs"
46
- },
47
- "./roadmap/conductor-view": {
48
- "types": "./src/cli/roadmap/conductor-view.d.ts",
49
- "import": "./src/cli/roadmap/conductor-view.mjs"
50
- },
51
- "./design/scan": {
52
- "import": "./src/cli/design/scan.mjs"
53
- },
54
- "./design/extract-repo": {
55
- "import": "./src/cli/design/extract-repo.mjs"
56
- },
57
- "./design/synthesize": {
58
- "import": "./src/cli/design/synthesize.mjs"
59
- }
60
- },
61
- "scripts": {
62
- "build": "tsc && node scripts/extract-personas-schema.mjs",
63
- "dev": "tsc --watch --preserveWatchOutput",
64
- "typecheck": "tsc --noEmit",
65
- "lint": "biome check . --diagnostic-level=error",
66
- "lint:fix": "biome check --write . --diagnostic-level=error",
67
- "clean": "rm -rf dist",
68
- "test": "vitest run",
69
- "c28:cutover": "node scripts/c28-cutover.mjs",
70
- "build-plugin": "node scripts/build-plugin.mjs",
71
- "publish-plugin": "node scripts/publish-plugin.mjs",
72
- "publish:verdaccio": "node scripts/publish-verdaccio.mjs",
73
- "release:verdaccio": "pnpm build && pnpm publish:verdaccio",
74
- "ship:verdaccio": "npm version patch --no-git-tag-version && pnpm build && pnpm publish:verdaccio"
75
- },
76
- "files": [
77
- "dist/",
78
- "bin/",
79
- "src/cli/",
80
- "src/cost/",
81
- "commands/",
82
- "skills/",
83
- "agents/",
84
- "prompts/",
85
- "templates/",
86
- "context/",
87
- "workflows/",
88
- "drivers/",
89
- "examples/",
90
- "LICENSE",
91
- "README.md",
92
- "CHANGELOG.md",
93
- "!**/__tests__/**",
94
- "!**/*.test.*",
95
- "!**/*.spec.*",
96
- "!**/*.test.d.ts.map",
97
- "!**/*.test.js.map"
98
- ],
99
- "keywords": [
100
- "ai",
101
- "framework",
102
- "coding-assistant",
103
- "claude-code",
104
- "codex",
105
- "aperant"
106
- ],
107
- "license": "AGPL-3.0-only",
108
- "homepage": "https://github.com/Mikalsen-AI/aperant-cloud-desktop/tree/main/packages/framework#readme",
109
- "bugs": {
110
- "url": "https://github.com/Mikalsen-AI/aperant-cloud-desktop/issues"
111
- },
112
- "repository": {
113
- "type": "git",
114
- "url": "https://github.com/Mikalsen-AI/aperant-cloud-desktop.git",
115
- "directory": "packages/framework"
116
- },
117
- "engines": {
118
- "node": ">=18.0.0"
119
- },
120
- "publishConfig": {
121
- "access": "public"
122
- },
123
- "dependencies": {
124
- "@clack/prompts": "^1.2.0",
125
- "proper-lockfile": "^4.1.2",
126
- "yaml": "^2.8.3",
127
- "zod": "^4.3.6"
128
- },
129
- "optionalDependencies": {
130
- "@babel/parser": "^7.29.2",
131
- "@babel/traverse": "^7.29.0",
132
- "@google/genai": "^1.50.1",
133
- "css-tree": "^3.2.1",
134
- "playwright": "^1.59.1"
135
- },
136
- "devDependencies": {
137
- "@vitest/coverage-v8": "^4.1.5"
138
- }
139
- }
2
+ "name": "@aperant/framework",
3
+ "version": "0.13.0",
4
+ "description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
5
+ "author": "Mikalsen AI <hello@mikalsen.ai>",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "framework": "./bin/apt-tools.mjs",
11
+ "apt-tools": "./bin/apt-tools.mjs",
12
+ "apt-proof-video": "./bin/apt-proof-video.mjs"
13
+ },
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ },
19
+ "./types": {
20
+ "types": "./dist/types/index.d.ts",
21
+ "import": "./dist/types/index.js"
22
+ },
23
+ "./cost": {
24
+ "types": "./dist/cost/index.d.ts",
25
+ "import": "./dist/cost/index.js"
26
+ },
27
+ "./mappers": {
28
+ "types": "./dist/mappers/index.d.ts",
29
+ "import": "./dist/mappers/index.js"
30
+ },
31
+ "./schemas": {
32
+ "types": "./dist/schemas/index.d.ts",
33
+ "import": "./dist/schemas/index.js"
34
+ },
35
+ "./standalone": {
36
+ "types": "./dist/standalone/index.d.ts",
37
+ "import": "./dist/standalone/index.js"
38
+ },
39
+ "./driver-sdk": {
40
+ "types": "./dist/driver-sdk/index.d.ts",
41
+ "import": "./dist/driver-sdk/index.js"
42
+ },
43
+ "./coordination/event-schema": {
44
+ "types": "./src/cli/coordination/event-schema.d.ts",
45
+ "import": "./src/cli/coordination/event-schema.mjs"
46
+ },
47
+ "./roadmap/conductor-view": {
48
+ "types": "./src/cli/roadmap/conductor-view.d.ts",
49
+ "import": "./src/cli/roadmap/conductor-view.mjs"
50
+ },
51
+ "./design/scan": {
52
+ "import": "./src/cli/design/scan.mjs"
53
+ },
54
+ "./design/extract-repo": {
55
+ "import": "./src/cli/design/extract-repo.mjs"
56
+ },
57
+ "./design/synthesize": {
58
+ "import": "./src/cli/design/synthesize.mjs"
59
+ }
60
+ },
61
+ "files": [
62
+ "dist/",
63
+ "bin/",
64
+ "src/cli/",
65
+ "src/cost/",
66
+ "commands/",
67
+ "skills/",
68
+ "agents/",
69
+ "prompts/",
70
+ "templates/",
71
+ "context/",
72
+ "workflows/",
73
+ "drivers/",
74
+ "examples/",
75
+ "LICENSE",
76
+ "README.md",
77
+ "CHANGELOG.md",
78
+ "!**/__tests__/**",
79
+ "!**/*.test.*",
80
+ "!**/*.spec.*",
81
+ "!**/*.test.d.ts.map",
82
+ "!**/*.test.js.map"
83
+ ],
84
+ "keywords": [
85
+ "ai",
86
+ "framework",
87
+ "coding-assistant",
88
+ "claude-code",
89
+ "codex",
90
+ "aperant"
91
+ ],
92
+ "license": "AGPL-3.0-only",
93
+ "homepage": "https://github.com/Mikalsen-AI/aperant-cloud-desktop/tree/main/packages/framework#readme",
94
+ "bugs": {
95
+ "url": "https://github.com/Mikalsen-AI/aperant-cloud-desktop/issues"
96
+ },
97
+ "repository": {
98
+ "type": "git",
99
+ "url": "https://github.com/Mikalsen-AI/aperant-cloud-desktop.git",
100
+ "directory": "packages/framework"
101
+ },
102
+ "engines": {
103
+ "node": ">=18.0.0"
104
+ },
105
+ "publishConfig": {
106
+ "access": "public"
107
+ },
108
+ "dependencies": {
109
+ "@clack/prompts": "^1.2.0",
110
+ "proper-lockfile": "^4.1.2",
111
+ "yaml": "^2.8.3",
112
+ "zod": "^4.3.6"
113
+ },
114
+ "optionalDependencies": {
115
+ "@babel/parser": "^7.29.2",
116
+ "@babel/traverse": "^7.29.0",
117
+ "@google/genai": "^1.50.1",
118
+ "css-tree": "^3.2.1",
119
+ "playwright": "^1.59.1"
120
+ },
121
+ "devDependencies": {
122
+ "@vitest/coverage-v8": "^4.1.5"
123
+ },
124
+ "scripts": {
125
+ "build": "tsc && node scripts/extract-personas-schema.mjs",
126
+ "dev": "tsc --watch --preserveWatchOutput",
127
+ "typecheck": "tsc --noEmit",
128
+ "lint": "biome check . --diagnostic-level=error",
129
+ "lint:fix": "biome check --write . --diagnostic-level=error",
130
+ "clean": "rm -rf dist",
131
+ "test": "vitest run",
132
+ "c28:cutover": "node scripts/c28-cutover.mjs",
133
+ "build-plugin": "node scripts/build-plugin.mjs",
134
+ "publish-plugin": "node scripts/publish-plugin.mjs",
135
+ "publish:verdaccio": "node scripts/publish-verdaccio.mjs",
136
+ "release:verdaccio": "pnpm build && pnpm publish:verdaccio",
137
+ "ship:verdaccio": "npm version patch --no-git-tag-version && pnpm build && pnpm publish:verdaccio"
138
+ }
139
+ }