47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
# Epic 8 — Tool System Progress
|
|
|
|
**Plan:** `docs/superpowers/plans/2026-05-11-core-tools.md`
|
|
|
|
## Done
|
|
|
|
### Task 1 — Tool shared vocabulary and lifecycle events in `core:events` ✅
|
|
- `AnyMapSerializer.kt` — `Map<String, Any>` ↔ JSON bridge via JsonElement
|
|
- `ToolRequest.kt`, `ToolReceipt.kt` — shared vocabulary data classes
|
|
- `ToolInvocationId` typealias added to `IdentityTypes.kt`
|
|
- 5 lifecycle event classes: `ToolInvocationRequestedEvent`, `ToolExecutionStartedEvent`, `ToolExecutionCompletedEvent`, `ToolExecutionFailedEvent`, `ToolExecutionRejectedEvent`
|
|
- All 5 registered in `Serialization.kt` polymorphic block
|
|
- 8 tests passing including polymorphic round-trip
|
|
|
|
### Task 2 — `core:tools` contract types and build config ✅
|
|
- `Tool.kt` — plain `interface` (not sealed; infrastructure implements it)
|
|
- `ToolCapability.kt` — enum: FILE_READ, FILE_WRITE, NETWORK_ACCESS, SHELL_EXEC, PROCESS_SPAWN
|
|
- `ValidationResult.kt` — sealed interface: `Valid` / `Invalid(reason)`
|
|
- `build.gradle` — deps: `core:events`, `core:approvals`, `core:sessions`
|
|
- 3 tests passing
|
|
|
|
## Remaining (nothing is done, clean plate)
|
|
|
|
### Task 3 — `core:tools` state model
|
|
- `ToolInvocationStatus` enum: REQUESTED, STARTED, COMPLETED, FAILED, REJECTED
|
|
- `ToolInvocationRecord` data class (holds one invocation's full lifecycle)
|
|
- `ToolState` data class: `invocations: List<ToolInvocationRecord>`
|
|
|
|
### Task 4 — `core:tools` reducer, projector, repository
|
|
- `ToolReducer` interface + `DefaultToolReducer` (applies 5 lifecycle events to ToolState)
|
|
- `ToolProjector` (implements `Projection<ToolState>`)
|
|
- `DefaultToolRepository` (wraps `EventReplayer<ToolState>`)
|
|
|
|
### Task 5 — Mock tools in `testing:fixtures`
|
|
- `EchoTool` (T0, always Valid)
|
|
- `FailingTool` (T2, always Invalid)
|
|
- `RejectedTool` (T4, always Valid)
|
|
- `testing/fixtures/build.gradle` gains `:core:tools` dep
|
|
|
|
## Resume Instructions
|
|
|
|
1. Open this session in `/home/kami/Programs/correx`
|
|
2. Read `docs/superpowers/plans/2026-05-11-core-tools.md` for full task specs
|
|
3. Continue from **Task 3**
|
|
4. Model selection: Haiku for implementers, Sonnet for reviewers
|
|
5. No git repo in this project — skip all commit steps in the plan
|