code-yeongyu / code-yeongyu/senpi
feat(eval): typed task handles and sugar-only eval workpools (S2)
- Dominant language
- TypeScript
- Stars
- 429
- Forks
- 98
- Avg merge
- 5h 3m
- Merged PRs (30d)
- 526
Description
## Summary
Consume typed task handles and expose sugar-only eval workpools in senpi.
## Expected
Successful task handles carry structural `details.task_id` and nonnegative `details.run_epoch`; malformed or missing details return typed `invalid_task_handle` without parsing prose. `workpool(agent, name, options?)` is a thin adapter over the host `tool.workpool` contract across JS, Python, Ruby, and Julia, with no scheduler or queue state in preludes. HC13 applies: kernel tools are not enabled for unsupported parent languages or process/RPC/team children.
## Scope + acceptance criteria
- Validate typed handle details at the untrusted bridge boundary and remove final-handle prose regex fallback while preserving existing presentation and foreground behavior.
- Add parity sugar adapters for `push`, `close`, `inspect`, and `cancel`, forwarding opaque pool IDs and unchanged schemas.
- Return typed `workpool_unavailable` and handle errors for missing or incompatible hosts; preserve reset/recreate-by-ID behavior.
- Verify direct host calls and sugar produce identical machine results and no prelude scheduling state.
## Related
- Sibling units: [senpi#1637](https://github.com/code-yeongyu/senpi/issues/1637) (merged S8), [senpi#1639](https://github.com/code-yeongyu/senpi/issues/1639) (S1), [oh-my-openagent#8211](https://github.com/code-yeongyu/oh-my-openagent/issues/8211) (O9), [oh-my-openagent#8213](https://github.com/code-yeongyu/oh-my-openagent/issues/8213) (O2).
- Copy-on-write isolation [oh-my-openagent#8181](https://github.com/code-yeongyu/oh-my-openagent/issues/8181) is explicitly out of scope.
Contributor guide
Research direction
Start at the untrusted bridge boundary and the host tool.workpool contract, then compare the JS, Python, Ruby, and Julia prelude adapters. Check direct host calls against the sugar operations for identical machine results, typed unavailable and handle errors, and no scheduler or queue state in preludes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, julia, python, ruby, typescript
- Domain
- backend-api-design, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100