@aperant/framework 0.17.0 → 0.19.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 +152 -0
- package/dist/cli/commands/ci-watch.mjs +49 -2
- package/dist/cli/commands/ci-watch.mjs.map +1 -1
- package/dist/cli/commands/commit.mjs +3 -3
- package/dist/cli/commands/commit.mjs.map +1 -1
- package/dist/cli/commands/event.mjs +16 -16
- package/dist/cli/commands/event.mjs.map +1 -1
- package/dist/cli/commands/merge-integrate.mjs +3 -3
- package/dist/cli/commands/merge-integrate.mjs.map +1 -1
- package/dist/cli/commands/produce.d.mts +9 -0
- package/dist/cli/commands/produce.d.mts.map +1 -0
- package/dist/cli/commands/produce.mjs +1345 -0
- package/dist/cli/commands/produce.mjs.map +1 -0
- package/dist/cli/commands/task.d.mts +16 -1
- package/dist/cli/commands/task.d.mts.map +1 -1
- package/dist/cli/commands/task.mjs +434 -266
- package/dist/cli/commands/task.mjs.map +1 -1
- package/dist/cli/coordination/auto-emit-artifact-ready.mjs +5 -5
- package/dist/cli/coordination/auto-emit-artifact-ready.mjs.map +1 -1
- package/dist/cli/coordination/event-schema.d.mts +5 -3
- package/dist/cli/coordination/event-schema.d.mts.map +1 -1
- package/dist/cli/coordination/event-schema.mjs +245 -21
- package/dist/cli/coordination/event-schema.mjs.map +1 -1
- package/dist/cli/coordination/store.d.mts +2 -2
- package/dist/cli/coordination/store.mjs +4 -4
- package/dist/cli/coordination/store.mjs.map +1 -1
- package/dist/cli/dispatch.d.mts.map +1 -1
- package/dist/cli/dispatch.mjs +2 -0
- package/dist/cli/dispatch.mjs.map +1 -1
- package/dist/cli/help.d.mts.map +1 -1
- package/dist/cli/help.mjs +30 -0
- package/dist/cli/help.mjs.map +1 -1
- package/dist/cli/install/legacy-paths.d.mts.map +1 -1
- package/dist/cli/install/legacy-paths.mjs +2 -0
- package/dist/cli/install/legacy-paths.mjs.map +1 -1
- package/dist/cli/produce/blind-probe.d.mts +85 -0
- package/dist/cli/produce/blind-probe.d.mts.map +1 -0
- package/dist/cli/produce/blind-probe.mjs +217 -0
- package/dist/cli/produce/blind-probe.mjs.map +1 -0
- package/dist/cli/produce/claim.d.mts +188 -0
- package/dist/cli/produce/claim.d.mts.map +1 -0
- package/dist/cli/produce/claim.mjs +518 -0
- package/dist/cli/produce/claim.mjs.map +1 -0
- package/dist/cli/produce/done-gate.d.mts +87 -0
- package/dist/cli/produce/done-gate.d.mts.map +1 -0
- package/dist/cli/produce/done-gate.mjs +200 -0
- package/dist/cli/produce/done-gate.mjs.map +1 -0
- package/dist/cli/produce/events.d.mts +77 -0
- package/dist/cli/produce/events.d.mts.map +1 -0
- package/dist/cli/produce/events.mjs +126 -0
- package/dist/cli/produce/events.mjs.map +1 -0
- package/dist/cli/produce/evidence-oracle.d.mts +63 -0
- package/dist/cli/produce/evidence-oracle.d.mts.map +1 -0
- package/dist/cli/produce/evidence-oracle.mjs +122 -0
- package/dist/cli/produce/evidence-oracle.mjs.map +1 -0
- package/dist/cli/produce/ledger.d.mts +140 -0
- package/dist/cli/produce/ledger.d.mts.map +1 -0
- package/dist/cli/produce/ledger.mjs +272 -0
- package/dist/cli/produce/ledger.mjs.map +1 -0
- package/dist/cli/produce/probe-family.d.mts +53 -0
- package/dist/cli/produce/probe-family.d.mts.map +1 -0
- package/dist/cli/produce/probe-family.mjs +160 -0
- package/dist/cli/produce/probe-family.mjs.map +1 -0
- package/dist/cli/produce/projection.d.mts +55 -0
- package/dist/cli/produce/projection.d.mts.map +1 -0
- package/dist/cli/produce/projection.mjs +97 -0
- package/dist/cli/produce/projection.mjs.map +1 -0
- package/dist/cli/produce/run-id.d.mts +42 -0
- package/dist/cli/produce/run-id.d.mts.map +1 -0
- package/dist/cli/produce/run-id.mjs +79 -0
- package/dist/cli/produce/run-id.mjs.map +1 -0
- package/dist/cli/produce/saga.d.mts +180 -0
- package/dist/cli/produce/saga.d.mts.map +1 -0
- package/dist/cli/produce/saga.mjs +290 -0
- package/dist/cli/produce/saga.mjs.map +1 -0
- package/dist/cli/produce/scheduler.d.mts +165 -0
- package/dist/cli/produce/scheduler.d.mts.map +1 -0
- package/dist/cli/produce/scheduler.mjs +399 -0
- package/dist/cli/produce/scheduler.mjs.map +1 -0
- package/dist/cli/produce/setpoint.d.mts +52 -0
- package/dist/cli/produce/setpoint.d.mts.map +1 -0
- package/dist/cli/produce/setpoint.mjs +113 -0
- package/dist/cli/produce/setpoint.mjs.map +1 -0
- package/dist/cli/produce/verification-ttl.d.mts +75 -0
- package/dist/cli/produce/verification-ttl.d.mts.map +1 -0
- package/dist/cli/produce/verification-ttl.mjs +169 -0
- package/dist/cli/produce/verification-ttl.mjs.map +1 -0
- package/dist/cli/roadmap/{conductor-view.d.mts → showrunner-view.d.mts} +3 -3
- package/dist/cli/roadmap/showrunner-view.d.mts.map +1 -0
- package/dist/cli/roadmap/{conductor-view.mjs → showrunner-view.mjs} +7 -7
- package/dist/cli/roadmap/showrunner-view.mjs.map +1 -0
- package/dist/plugin/.claude-plugin/plugin.json +2 -1
- package/dist/plugin/skills/apt/SKILL.md +112 -38
- package/dist/plugin/skills/apt-debug/SKILL.md +14 -24
- package/dist/plugin/skills/apt-fan-out/SKILL.md +4 -4
- package/dist/plugin/skills/apt-handoff/SKILL.md +1 -1
- package/dist/plugin/skills/apt-plan/SKILL.md +5 -5
- package/dist/plugin/skills/apt-plan/adapters/{conductor.md → showrunner.md} +16 -16
- package/dist/plugin/skills/apt-produce/SKILL.md +606 -0
- package/dist/plugin/skills/apt-quick/SKILL.md +14 -22
- package/dist/plugin/skills/apt-run/SKILL.md +126 -3
- package/dist/plugin/skills/apt-ship/SKILL.md +2 -0
- package/dist/plugin/skills/apt-spar/SKILL.md +5 -3
- package/dist/plugin/skills/apt-watch-ci/SKILL.md +4 -4
- package/package.json +4 -4
- package/prompts/{conductor-framework-context.md → showrunner-framework-context.md} +1 -1
- package/prompts/{conductor-status-check.md → showrunner-status-check.md} +1 -1
- package/prompts/{conductor-sub-agent.md → showrunner-sub-agent.md} +6 -6
- package/prompts/{conductor-system.md → showrunner-system.md} +8 -8
- package/skills/apt/SKILL.md +112 -38
- package/skills/apt-debug/SKILL.md +14 -24
- package/skills/apt-fan-out/SKILL.md +4 -4
- package/skills/apt-handoff/SKILL.md +1 -1
- package/skills/apt-plan/SKILL.md +5 -5
- package/skills/apt-plan/adapters/{conductor.md → showrunner.md} +16 -16
- package/skills/apt-produce/SKILL.md +606 -0
- package/skills/apt-quick/SKILL.md +14 -22
- package/skills/apt-run/SKILL.md +126 -3
- package/skills/apt-ship/SKILL.md +2 -0
- package/skills/apt-spar/SKILL.md +5 -3
- package/skills/apt-watch-ci/SKILL.md +4 -4
- package/src/cli/commands/ci-watch.mjs +51 -2
- package/src/cli/commands/commit.mjs +3 -3
- package/src/cli/commands/event.mjs +16 -16
- package/src/cli/commands/merge-integrate.mjs +3 -3
- package/src/cli/commands/produce.mjs +1466 -0
- package/src/cli/commands/task.mjs +482 -285
- package/src/cli/coordination/auto-emit-artifact-ready.mjs +5 -5
- package/src/cli/coordination/event-schema.d.ts +4 -2
- package/src/cli/coordination/event-schema.mjs +276 -21
- package/src/cli/coordination/store.mjs +4 -4
- package/src/cli/dispatch.mjs +2 -0
- package/src/cli/help.mjs +30 -0
- package/src/cli/install/legacy-paths.mjs +2 -0
- package/src/cli/produce/blind-probe.mjs +245 -0
- package/src/cli/produce/claim.mjs +543 -0
- package/src/cli/produce/done-gate.mjs +238 -0
- package/src/cli/produce/events.mjs +131 -0
- package/src/cli/produce/evidence-oracle.mjs +133 -0
- package/src/cli/produce/ledger.mjs +284 -0
- package/src/cli/produce/probe-family.mjs +168 -0
- package/src/cli/produce/projection.mjs +105 -0
- package/src/cli/produce/run-id.mjs +84 -0
- package/src/cli/produce/saga.mjs +303 -0
- package/src/cli/produce/scheduler.mjs +423 -0
- package/src/cli/produce/setpoint.mjs +122 -0
- package/src/cli/produce/verification-ttl.mjs +191 -0
- package/src/cli/roadmap/showrunner-view.d.ts +10 -0
- package/src/cli/roadmap/{conductor-view.mjs → showrunner-view.mjs} +6 -6
- package/dist/cli/roadmap/conductor-view.d.mts.map +0 -1
- package/dist/cli/roadmap/conductor-view.mjs.map +0 -1
- package/src/cli/roadmap/conductor-view.d.ts +0 -10
|
@@ -42,7 +42,7 @@ reproduction, so loading this appendix is non-trivial.
|
|
|
42
42
|
- **apt-tools path:** `node packages/framework/bin/apt-tools.mjs` or the locally installed `apt-tools` binary
|
|
43
43
|
- **Constitution:** Read `AGENTS.md` in the project root if it exists
|
|
44
44
|
- **Debug sessions:** `.aperant/debug/{session-id}/DEBUG.md`
|
|
45
|
-
- **Task-level worktree isolation:** A worktree is provisioned at session start by `task
|
|
45
|
+
- **Task-level worktree isolation:** A worktree is provisioned at session start by `task ensure` (track-agnostic — DEBUG gets one too; parsed + banner-announced in §1a) when `task_isolation.worktree_per_task` is enabled. Read-only investigation (Sections 2-3 Observe / Hypothesize — `git log`, `git diff`, Grep, Read) may run from EITHER cwd; they only read. But once code changes begin — Section 4 (Checkpoint), Section 5b (Execute Test — the minimal change), Section 6b (Implement Fix + commit) — run those Bash commands with `cd {worktree_path} &&` so the fix + checkpoint commits land on the worktree's task branch. Use the `worktree_path` the router passed in skill context or that §1a parsed from `task ensure`'s envelope. `apt-tools` calls always take the project root as `<project-dir>`. If no `worktree` block was returned, proceed in the project root as before.
|
|
46
46
|
</your_environment>
|
|
47
47
|
|
|
48
48
|
<state_files>
|
|
@@ -71,35 +71,25 @@ If resuming, read DEBUG.md and skip to the current phase (observe/hypothesize/te
|
|
|
71
71
|
|
|
72
72
|
### 1a. Resolve canonical task id (idempotent — new sessions only)
|
|
73
73
|
|
|
74
|
-
DEBUG now produces a canonical state.active_tasks record so `/apt:ship` can find the task via the lite ship profile once the fix is committed.
|
|
74
|
+
DEBUG now produces a canonical state.active_tasks record so `/apt:ship` can find the task via the lite ship profile once the fix is committed. Idempotency is owned by the deterministic allocator `apt-tools task ensure --intent create-new` (NOT raw `task create`) — re-running returns the SAME task + worktree (`reused: true`), so the old `task get` guard dance is gone.
|
|
75
75
|
|
|
76
76
|
Two invocation paths converge here:
|
|
77
77
|
|
|
78
|
-
- **Router path** (`/apt` → `/apt:debug`): the router has already
|
|
79
|
-
|
|
78
|
+
- **Router path** (`/apt` → `/apt:debug`): the router has already run `task ensure --intent create-new` and injected `task_id` (+ `worktree_path`) into your skill context. Re-affirm idempotently with the same id and adopt `task_id` as `{session-id}`:
|
|
79
|
+
```bash
|
|
80
|
+
apt-tools task ensure . --description "$ARGUMENTS" --intent create-new --track DEBUG --id {task_id}
|
|
81
|
+
```
|
|
82
|
+
The `--id {task_id}` makes ensure resolve to the EXACT record the router just provisioned (`reused: true`) — no second task, no second worktree.
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
- **Direct path** (`/apt:debug foo`): no `task_id` in context — allocate now:
|
|
85
|
+
```bash
|
|
86
|
+
apt-tools task ensure . --description "$ARGUMENTS" --intent create-new --track DEBUG
|
|
87
|
+
```
|
|
88
|
+
Parse the generated `task_id` from the envelope and adopt it as `{session-id}`. ensure is keyed on the normalized description + scope, so a retry returns the SAME canonical id (replacing the legacy `debug-YYYYMMDD-HHmm` form).
|
|
82
89
|
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
apt-tools task get . --id {task_id}
|
|
86
|
-
```
|
|
87
|
-
- If exit 0 AND the returned record has `track === "DEBUG"` → reuse, skip the create call. Adopt `task_id` as `{session-id}`.
|
|
88
|
-
- Else (record missing OR wrong track) → call:
|
|
89
|
-
```bash
|
|
90
|
-
apt-tools task create . --description "$ARGUMENTS" --track DEBUG --id {task_id}
|
|
91
|
-
```
|
|
92
|
-
Adopt the id as `{session-id}`.
|
|
93
|
-
|
|
94
|
-
2. **If no `task_id` in skill context** (direct path):
|
|
95
|
-
```bash
|
|
96
|
-
apt-tools task create . --description "$ARGUMENTS" --track DEBUG
|
|
97
|
-
```
|
|
98
|
-
Parse the generated `task_id` from the envelope and adopt it as `{session-id}`. The canonical id replaces the legacy `debug-YYYYMMDD-HHmm` form.
|
|
99
|
-
|
|
100
|
-
The debug working dir at `.aperant/debug/{session-id}/` stays — that working artifact is preserved (per spec §3 R7). The canonical task record at `.aperant/tasks/{task-id}/` is created in parallel by `task create`, and both share the same id.
|
|
90
|
+
The debug working dir at `.aperant/debug/{session-id}/` stays — that working artifact is preserved (per spec §3 R7). The canonical task record at `.aperant/tasks/{task-id}/` is created in parallel by `task ensure`, and both share the same id.
|
|
101
91
|
|
|
102
|
-
**Worktree isolation (both paths).** `task create` provisions a worktree when `task_isolation.worktree_per_task` is enabled (track-agnostic — DEBUG gets one too). Parse `worktree.worktree_path`, `worktree.branch`, and `worktree.base_branch` from the `task
|
|
92
|
+
**Worktree isolation (both paths).** `task ensure --intent create-new` provisions a worktree when `task_isolation.worktree_per_task` is enabled (track-agnostic — DEBUG gets one too). Parse `worktree.worktree_path`, `worktree.branch`, and `worktree.base_branch` from the `task ensure` envelope (direct path); on the router path the orchestrator already passed `worktree_path` into your skill context — use that. When a `worktree` block is present, print the banner:
|
|
103
93
|
|
|
104
94
|
```
|
|
105
95
|
[APT] Working in isolated worktree: {worktree_path}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apt:fan-out
|
|
3
|
-
description: "Cross-task fan-out — spawn N apt-executor workers from one
|
|
3
|
+
description: "Cross-task fan-out — spawn N apt-executor workers from one Showrunner terminal, each in its own worktree"
|
|
4
4
|
apt-skill-version: {{APT_VERSION}}
|
|
5
5
|
stage: execute
|
|
6
6
|
intent: x-fan-out
|
|
@@ -19,7 +19,7 @@ argument-hint: "apt:fan-out --tasks <id,id,id> [--phases <m/p,m/p>] [--unblocked
|
|
|
19
19
|
gates: []
|
|
20
20
|
---
|
|
21
21
|
<objective>
|
|
22
|
-
Run N pre-planned Aperant tasks concurrently from one
|
|
22
|
+
Run N pre-planned Aperant tasks concurrently from one Showrunner terminal. This skill is a thin orchestrator over the generalized wave engine (`unit_kind: "task"` path, see ADR-0003) and the existing primitives: `apt-tools worktree create --task`, `apt-tools lock claim`, `apt-tools event append`, and the `parallelization.max_tasks` quota. No daemon, no job queue, no in-skill scheduling. The host CLI's main thread is the Showrunner (ADR-0001); each spawned apt-executor subagent runs in its own worktree (ADR-0002).
|
|
23
23
|
|
|
24
24
|
This is the "I have 16 unblocked tasks in this phase, run them all" surface. It replaces the old workaround of opening 16 sibling terminals manually.
|
|
25
25
|
</objective>
|
|
@@ -160,7 +160,7 @@ call `integrate` with the batch's task list (or `--batch ${batch_id}` to recover
|
|
|
160
160
|
it from the worker rows):
|
|
161
161
|
|
|
162
162
|
```bash
|
|
163
|
-
git -C "$
|
|
163
|
+
git -C "$showrunner_root" fetch origin "$base_branch"
|
|
164
164
|
node packages/framework/bin/apt-tools.mjs merge integrate . --tasks ${task_ids_csv}
|
|
165
165
|
# OR recover the task list from the batch's worker rows:
|
|
166
166
|
node packages/framework/bin/apt-tools.mjs merge integrate . --batch ${batch_id}
|
|
@@ -213,7 +213,7 @@ Mix SHIPPED / BLOCKED / in-flight variants in the same rail. Below the panel, em
|
|
|
213
213
|
|
|
214
214
|
## Design references
|
|
215
215
|
|
|
216
|
-
- **ADR-0001** — Host CLI main thread is the
|
|
216
|
+
- **ADR-0001** — Host CLI main thread is the Showrunner; no daemon, no in-skill queue.
|
|
217
217
|
- **ADR-0002** — One worktree per task; workers run independent feature branches.
|
|
218
218
|
- **ADR-0003** — Wave engine accepts `unit_kind: "task"` so cross-task fan-out reuses the same primitives as intra-task subtask waves.
|
|
219
219
|
|
|
@@ -23,7 +23,7 @@ Compact the current conversation into a HANDOFF document so a different agent
|
|
|
23
23
|
|
|
24
24
|
Writes the handoff to `.aperant/handoffs/{id}/HANDOFF.md` (or `{task_dir}/handoffs/{id}/HANDOFF.md` when inside a routed task) so the artifact lives with the repo, survives across machines, and is discoverable by `/apt:resume` and team-status tooling.
|
|
25
25
|
|
|
26
|
-
**Use when:** an agent decides to transfer the work mid-flight. Examples — sender hit context-budget cap, the next phase needs a different model (e.g. Codex for a heavy refactor), a fan-out
|
|
26
|
+
**Use when:** an agent decides to transfer the work mid-flight. Examples — sender hit context-budget cap, the next phase needs a different model (e.g. Codex for a heavy refactor), a fan-out Showrunner is sharding scope to peers, or a planning agent is handing a locked plan to an executor.
|
|
27
27
|
|
|
28
28
|
**Do NOT use when:**
|
|
29
29
|
- The human operator wants to stop — use `/apt:pause` (it stashes uncommitted work and updates `CONTINUE_INDEX.md`).
|
package/skills/apt-plan/SKILL.md
CHANGED
|
@@ -504,13 +504,13 @@ node packages/framework/bin/apt-tools.mjs commit "plan: create implementation pl
|
|
|
504
504
|
## 8a. Runtime-context adapters
|
|
505
505
|
|
|
506
506
|
If `APERANT_TERMINAL_ID` is set (you are running under the Aperant
|
|
507
|
-
|
|
508
|
-
`adapters/
|
|
509
|
-
(`proceed` / `abort` / `[
|
|
510
|
-
|
|
507
|
+
Showrunner — a master-orchestrator agent inside the Aperant app), see
|
|
508
|
+
`adapters/showrunner.md` for the plan-review handshake convention
|
|
509
|
+
(`proceed` / `abort` / `[Showrunner realignment]` stdin strings) the
|
|
510
|
+
Showrunner's drawer uses post-commit. The `artifact.ready{kind:'plan'}`
|
|
511
511
|
signal itself is now emitted automatically by the `apt-tools commit`
|
|
512
512
|
postcondition — no manual emit step required. Native invocations
|
|
513
|
-
(Claude Code, Gemini, OpenCode, Codex with no
|
|
513
|
+
(Claude Code, Gemini, OpenCode, Codex with no Showrunner context) can
|
|
514
514
|
skip the adapter entirely and proceed to Section 9.
|
|
515
515
|
|
|
516
516
|
## 9. Report
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# apt-plan adapter — Aperant
|
|
1
|
+
# apt-plan adapter — Aperant Showrunner
|
|
2
2
|
|
|
3
3
|
This adapter is **only loaded** when the planner runs under the Aperant
|
|
4
|
-
|
|
4
|
+
Showrunner (a master-orchestrator agent inside the Aperant desktop / web
|
|
5
5
|
app). Native invocations of `/apt:plan` (from plain Claude Code, Gemini
|
|
6
6
|
CLI, OpenCode, or Codex) IGNORE this file entirely — the framework
|
|
7
7
|
behavior in `SKILL.md` is the source of truth for them.
|
|
8
8
|
|
|
9
9
|
## When to load this adapter
|
|
10
10
|
|
|
11
|
-
Detect
|
|
11
|
+
Detect Showrunner context by env var:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
[ -n "$APERANT_TERMINAL_ID" ]
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
The
|
|
18
|
-
If the var is unset, you are NOT under the
|
|
17
|
+
The Showrunner injects `APERANT_TERMINAL_ID` into every PTY it spawns.
|
|
18
|
+
If the var is unset, you are NOT under the Showrunner — stop reading.
|
|
19
19
|
|
|
20
|
-
## What changes under the
|
|
20
|
+
## What changes under the Showrunner
|
|
21
21
|
|
|
22
22
|
The planner's filesystem outputs (`spec.md`, `implementation_plan.json`)
|
|
23
23
|
are unchanged. The ADDITION is one extra step after Section 8 (Persist
|
|
@@ -34,7 +34,7 @@ node packages/framework/bin/apt-tools.mjs commit "plan: ..." \
|
|
|
34
34
|
--files spec.md implementation_plan.json
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
…and the process is running under a
|
|
37
|
+
…and the process is running under a Showrunner PTY (env
|
|
38
38
|
`APERANT_TERMINAL_ID` is set), `apt-tools commit` auto-emits a fully-
|
|
39
39
|
formed `artifact.ready` envelope to `.aperant/events/{today}.jsonl`.
|
|
40
40
|
The envelope carries the `task_id`, plan path, sha256 hash, and the
|
|
@@ -47,35 +47,35 @@ framework postcondition makes it work uniformly across QUICK, STANDARD,
|
|
|
47
47
|
DEEP, and COMPLEX without violating the Fast Path Guarantee.
|
|
48
48
|
|
|
49
49
|
**Planner authors don't need to do anything.** As long as you call
|
|
50
|
-
`apt-tools commit` to land your plan artifacts, the
|
|
50
|
+
`apt-tools commit` to land your plan artifacts, the Showrunner will
|
|
51
51
|
see `artifact.ready` and the drawer's PlanReadyCard will auto-promote.
|
|
52
52
|
|
|
53
53
|
If the planner does NOT use `apt-tools commit` (it lands the plan via
|
|
54
54
|
raw `git commit` or `git add`), the auto-emit will not fire. In that
|
|
55
|
-
case the
|
|
55
|
+
case the Showrunner falls back to filesystem polling of the task dir
|
|
56
56
|
(slightly higher latency, same outcome).
|
|
57
57
|
|
|
58
|
-
### Plan-review handshake (Step 6 + 7 of
|
|
58
|
+
### Plan-review handshake (Step 6 + 7 of Showrunner v2)
|
|
59
59
|
|
|
60
60
|
After emitting `artifact.ready{kind:'plan'}` the planner SHOULD pause at
|
|
61
|
-
an idle prompt and listen for ONE of three
|
|
61
|
+
an idle prompt and listen for ONE of three Showrunner-driven inputs:
|
|
62
62
|
|
|
63
63
|
- `proceed\r` — the human (via the PlanReadyCard's **Approve** button)
|
|
64
64
|
approves the plan. Continue to `/apt:execute` as you would in the
|
|
65
65
|
normal flow.
|
|
66
66
|
- `abort\r` — the human rejected. Abandon this plan; do not start
|
|
67
67
|
execution. Optionally exit the session cleanly.
|
|
68
|
-
- `[
|
|
68
|
+
- `[Showrunner realignment] <note>\r` — the human pressed **Realign**.
|
|
69
69
|
Treat the `<note>` as additional planning context: re-open spec.md /
|
|
70
70
|
implementation_plan.json, address the note's gaps, commit a new
|
|
71
71
|
revision, and emit a fresh `artifact.ready{kind:'plan'}` (with the
|
|
72
72
|
same task_id but a NEW request_id — the drawer keys cards on
|
|
73
73
|
request_id, so re-using it would suppress the new card). The
|
|
74
|
-
realignment loop can repeat; after attempt_n >= 3 the
|
|
74
|
+
realignment loop can repeat; after attempt_n >= 3 the Showrunner may
|
|
75
75
|
decide to respawn the terminal entirely.
|
|
76
76
|
|
|
77
|
-
These exact strings are pinned by the
|
|
78
|
-
handlers (`packages/ui/src/sections/
|
|
77
|
+
These exact strings are pinned by the Showrunner's `ShowrunnerContextHost`
|
|
78
|
+
handlers (`packages/ui/src/sections/showrunner/ShowrunnerContextHost.tsx`).
|
|
79
79
|
Native CLI invocations of `/apt:plan` (no `APERANT_TERMINAL_ID`) skip
|
|
80
80
|
this handshake and follow the normal report → `/apt:execute` flow.
|
|
81
81
|
|
|
@@ -84,7 +84,7 @@ this handshake and follow the normal report → `/apt:execute` flow.
|
|
|
84
84
|
The Aperant Framework is consumed by multiple CLIs (Claude Code, Gemini,
|
|
85
85
|
OpenCode, Codex) and by the Aperant app itself. The vast majority of
|
|
86
86
|
`/apt:plan` invocations come from native CLIs — those should not see
|
|
87
|
-
or execute
|
|
87
|
+
or execute Showrunner-specific machinery. By isolating the Showrunner's
|
|
88
88
|
event-emit obligations to this adapter, the public skill stays minimal
|
|
89
89
|
and the framework remains CLI-agnostic. The pattern mirrors
|
|
90
90
|
`appendices/` (reasoning-stance loaders) but with a different semantic:
|