feat(mana-ai): first live reminder producers — token budget + retry-loop

Wires the M1 reminderChannel into the mana-ai mission runner with two
initial producers in services/mana-ai/src/planner/reminders.ts:

- tokenBudgetReminder — warns at 75% of the agent's daily cap, emits a
  stronger "wrap up NOW" message at/above 100%. Uses pretick usage +
  accumulated round usage so the warning tracks drift during a long
  plan.
- retryLoopReminder — shape is in place (round≥3 + last 2 failures),
  currently limited to the single lastCall LoopState exposes. Extends
  cleanly once LoopState carries the full failure window.

buildReminderChannel composes active producers; the tick hoists
pretickUsage24h so the channel has the baseline. Each round the loop
re-evaluates the producers, so usage drift across rounds surfaces on
the NEXT turn.

Also exports LoopState + ReminderChannel from @mana/shared-ai top-level
so consumers don't need to reach into /planner.

Tests: 13 new bun tests covering thresholds, pretick+round summing,
composition, and per-round re-evaluation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-23 14:00:04 +02:00
parent e5d230e599
commit faa472be91
4 changed files with 330 additions and 4 deletions

View file

@ -67,12 +67,14 @@ export type {
LlmCompletionRequest,
LlmCompletionResponse,
LlmFinishReason,
LoopState,
LoopStopReason,
ParseResult,
PlannedStep,
PlannerLoopInput,
PlannerLoopResult,
PlannerMessages,
ReminderChannel,
ResolvedInput,
SystemPromptInput,
SystemPromptOutput,