2.1 KiB
2.1 KiB
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 JsonElementToolRequest.kt,ToolReceipt.kt— shared vocabulary data classesToolInvocationIdtypealias added toIdentityTypes.kt- 5 lifecycle event classes:
ToolInvocationRequestedEvent,ToolExecutionStartedEvent,ToolExecutionCompletedEvent,ToolExecutionFailedEvent,ToolExecutionRejectedEvent - All 5 registered in
Serialization.ktpolymorphic block - 8 tests passing including polymorphic round-trip
Task 2 — core:tools contract types and build config ✅
Tool.kt— plaininterface(not sealed; infrastructure implements it)ToolCapability.kt— enum: FILE_READ, FILE_WRITE, NETWORK_ACCESS, SHELL_EXEC, PROCESS_SPAWNValidationResult.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
ToolInvocationStatusenum: REQUESTED, STARTED, COMPLETED, FAILED, REJECTEDToolInvocationRecorddata class (holds one invocation's full lifecycle)ToolStatedata class:invocations: List<ToolInvocationRecord>
Task 4 — core:tools reducer, projector, repository
ToolReducerinterface +DefaultToolReducer(applies 5 lifecycle events to ToolState)ToolProjector(implementsProjection<ToolState>)DefaultToolRepository(wrapsEventReplayer<ToolState>)
Task 5 — Mock tools in testing:fixtures
EchoTool(T0, always Valid)FailingTool(T2, always Invalid)RejectedTool(T4, always Valid)testing/fixtures/build.gradlegains:core:toolsdep
Resume Instructions
- Open this session in
/home/kami/Programs/correx - Read
docs/superpowers/plans/2026-05-11-core-tools.mdfor full task specs - Continue from Task 3
- Model selection: Haiku for implementers, Sonnet for reviewers
- No git repo in this project — skip all commit steps in the plan