@caupulican/pi-adaptative 0.90.2 → 0.90.5

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.
Files changed (174) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/core/agent-session-contracts.d.ts +2 -0
  3. package/dist/core/agent-session-contracts.d.ts.map +1 -1
  4. package/dist/core/agent-session-contracts.js.map +1 -1
  5. package/dist/core/autonomy/bounded-completion.d.ts +10 -1
  6. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
  7. package/dist/core/autonomy/bounded-completion.js +24 -2
  8. package/dist/core/autonomy/bounded-completion.js.map +1 -1
  9. package/dist/core/autonomy/lane-tracker.d.ts +6 -1
  10. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
  11. package/dist/core/autonomy/lane-tracker.js +17 -1
  12. package/dist/core/autonomy/lane-tracker.js.map +1 -1
  13. package/dist/core/background-lane-controller.d.ts +1 -3
  14. package/dist/core/background-lane-controller.d.ts.map +1 -1
  15. package/dist/core/background-lane-controller.js.map +1 -1
  16. package/dist/core/compaction-controller.d.ts.map +1 -1
  17. package/dist/core/compaction-controller.js +0 -1
  18. package/dist/core/compaction-controller.js.map +1 -1
  19. package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -1
  20. package/dist/core/delegation/managed-lane-controller.js +5 -1
  21. package/dist/core/delegation/managed-lane-controller.js.map +1 -1
  22. package/dist/core/delegation/worker-agent-control-coordinator.d.ts +8 -1
  23. package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
  24. package/dist/core/delegation/worker-agent-control-coordinator.js +94 -36
  25. package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
  26. package/dist/core/delegation/worker-agent-control.d.ts +1 -0
  27. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
  28. package/dist/core/delegation/worker-agent-control.js.map +1 -1
  29. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  30. package/dist/core/delegation/worker-attempt-executor.js +7 -2
  31. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  32. package/dist/core/delegation/worker-authority-resolver.d.ts +2 -0
  33. package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
  34. package/dist/core/delegation/worker-authority-resolver.js +49 -6
  35. package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
  36. package/dist/core/delegation/worker-delegation-controller.d.ts +8 -5
  37. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  38. package/dist/core/delegation/worker-delegation-controller.js +158 -40
  39. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  40. package/dist/core/delegation/worker-fleet-limits.d.ts +9 -2
  41. package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
  42. package/dist/core/delegation/worker-fleet-limits.js +39 -3
  43. package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
  44. package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
  45. package/dist/core/delegation/worker-lane-projection.js +10 -0
  46. package/dist/core/delegation/worker-lane-projection.js.map +1 -1
  47. package/dist/core/delegation/worker-lease-heartbeat.d.ts +16 -0
  48. package/dist/core/delegation/worker-lease-heartbeat.d.ts.map +1 -0
  49. package/dist/core/delegation/worker-lease-heartbeat.js +37 -0
  50. package/dist/core/delegation/worker-lease-heartbeat.js.map +1 -0
  51. package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
  52. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
  53. package/dist/core/delegation/worker-lifecycle.js +6 -0
  54. package/dist/core/delegation/worker-lifecycle.js.map +1 -1
  55. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
  56. package/dist/core/delegation/worker-notification-coordinator.js +2 -1
  57. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
  58. package/dist/core/delegation/worker-profile-resolver.d.ts +28 -1
  59. package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
  60. package/dist/core/delegation/worker-profile-resolver.js +38 -9
  61. package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
  62. package/dist/core/delegation/worker-runner.js +2 -2
  63. package/dist/core/delegation/worker-runner.js.map +1 -1
  64. package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts +1 -0
  65. package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts.map +1 -1
  66. package/dist/core/delegation/worker-terminal-handoff-coordinator.js +1 -0
  67. package/dist/core/delegation/worker-terminal-handoff-coordinator.js.map +1 -1
  68. package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +4 -2
  69. package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -1
  70. package/dist/core/delegation/worker-tree-budget-coordinator.js +10 -2
  71. package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -1
  72. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +14 -0
  73. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
  74. package/dist/core/delegation/worker-write-reservation-coordinator.js +121 -33
  75. package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
  76. package/dist/core/foreground-terminal-handoff-controller.d.ts +5 -0
  77. package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
  78. package/dist/core/foreground-terminal-handoff-controller.js +28 -12
  79. package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
  80. package/dist/core/orchestration/capability-gateway.d.ts +2 -1
  81. package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
  82. package/dist/core/orchestration/capability-gateway.js +9 -2
  83. package/dist/core/orchestration/capability-gateway.js.map +1 -1
  84. package/dist/core/orchestration/contracts.d.ts +16 -1
  85. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  86. package/dist/core/orchestration/contracts.js +5 -0
  87. package/dist/core/orchestration/contracts.js.map +1 -1
  88. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  89. package/dist/core/orchestration/profile-registry.js +38 -1
  90. package/dist/core/orchestration/profile-registry.js.map +1 -1
  91. package/dist/core/orchestration/risk-budget.d.ts +10 -0
  92. package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
  93. package/dist/core/orchestration/risk-budget.js +14 -0
  94. package/dist/core/orchestration/risk-budget.js.map +1 -1
  95. package/dist/core/orchestration/task-runtime-reducer.d.ts +1 -0
  96. package/dist/core/orchestration/task-runtime-reducer.d.ts.map +1 -1
  97. package/dist/core/orchestration/task-runtime-reducer.js +34 -0
  98. package/dist/core/orchestration/task-runtime-reducer.js.map +1 -1
  99. package/dist/core/orchestration/task-runtime.d.ts +1 -0
  100. package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
  101. package/dist/core/orchestration/task-runtime.js +24 -1
  102. package/dist/core/orchestration/task-runtime.js.map +1 -1
  103. package/dist/core/orchestration/worker-model-pins.d.ts +28 -0
  104. package/dist/core/orchestration/worker-model-pins.d.ts.map +1 -0
  105. package/dist/core/orchestration/worker-model-pins.js +141 -0
  106. package/dist/core/orchestration/worker-model-pins.js.map +1 -0
  107. package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
  108. package/dist/core/provider-prompt-contracts.js +2 -1
  109. package/dist/core/provider-prompt-contracts.js.map +1 -1
  110. package/dist/core/reflection-controller.d.ts.map +1 -1
  111. package/dist/core/reflection-controller.js +8 -1
  112. package/dist/core/reflection-controller.js.map +1 -1
  113. package/dist/core/runtime-builder.d.ts.map +1 -1
  114. package/dist/core/runtime-builder.js +1 -0
  115. package/dist/core/runtime-builder.js.map +1 -1
  116. package/dist/core/settings-manager.d.ts +6 -3
  117. package/dist/core/settings-manager.d.ts.map +1 -1
  118. package/dist/core/settings-manager.js +26 -2
  119. package/dist/core/settings-manager.js.map +1 -1
  120. package/dist/core/tools/bash.d.ts +3 -0
  121. package/dist/core/tools/bash.d.ts.map +1 -1
  122. package/dist/core/tools/bash.js +13 -2
  123. package/dist/core/tools/bash.js.map +1 -1
  124. package/dist/core/tools/delegate-status.d.ts +3 -0
  125. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  126. package/dist/core/tools/delegate-status.js +26 -1
  127. package/dist/core/tools/delegate-status.js.map +1 -1
  128. package/dist/core/tools/delegate.d.ts +15 -1
  129. package/dist/core/tools/delegate.d.ts.map +1 -1
  130. package/dist/core/tools/delegate.js +234 -68
  131. package/dist/core/tools/delegate.js.map +1 -1
  132. package/dist/core/tools/edit.d.ts.map +1 -1
  133. package/dist/core/tools/edit.js +14 -1
  134. package/dist/core/tools/edit.js.map +1 -1
  135. package/dist/core/tools/file-failure-recovery.d.ts +3 -0
  136. package/dist/core/tools/file-failure-recovery.d.ts.map +1 -1
  137. package/dist/core/tools/file-failure-recovery.js +11 -0
  138. package/dist/core/tools/file-failure-recovery.js.map +1 -1
  139. package/dist/core/tools/orchestration-panel.d.ts +1 -1
  140. package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
  141. package/dist/core/tools/orchestration-panel.js +1 -0
  142. package/dist/core/tools/orchestration-panel.js.map +1 -1
  143. package/dist/core/tools/profile-writer.d.ts.map +1 -1
  144. package/dist/core/tools/profile-writer.js +2 -8
  145. package/dist/core/tools/profile-writer.js.map +1 -1
  146. package/dist/core/tools/search-command-guard.d.ts.map +1 -1
  147. package/dist/core/tools/search-command-guard.js +10 -3
  148. package/dist/core/tools/search-command-guard.js.map +1 -1
  149. package/dist/core/tools/write.d.ts.map +1 -1
  150. package/dist/core/tools/write.js +10 -1
  151. package/dist/core/tools/write.js.map +1 -1
  152. package/dist/modes/interactive/components/activity-lane.d.ts +1 -1
  153. package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
  154. package/dist/modes/interactive/components/activity-lane.js +11 -2
  155. package/dist/modes/interactive/components/activity-lane.js.map +1 -1
  156. package/dist/modes/interactive/components/settings-selector.js +1 -1
  157. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  158. package/dist/utils/shell.d.ts +2 -0
  159. package/dist/utils/shell.d.ts.map +1 -1
  160. package/dist/utils/shell.js +3 -1
  161. package/dist/utils/shell.js.map +1 -1
  162. package/docs/harness-architecture.md +6 -3
  163. package/docs/settings.md +39 -6
  164. package/docs/tool-repair.md +1 -1
  165. package/docs/worker-profiles.md +2 -2
  166. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  167. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  168. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  169. package/examples/extensions/sandbox/package-lock.json +2 -2
  170. package/examples/extensions/sandbox/package.json +1 -1
  171. package/examples/extensions/with-deps/package-lock.json +2 -2
  172. package/examples/extensions/with-deps/package.json +1 -1
  173. package/npm-shrinkwrap.json +12 -12
  174. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"activity-lane.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/activity-lane.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component } from \"@caupulican/pi-tui\";\nimport { truncateToWidth, visibleWidth } from \"@caupulican/pi-tui\";\nimport type { LaneRecord } from \"../../../core/autonomy/lane-tracker.ts\";\nimport { type GoalState, isGoalUnfinishedStatus } from \"../../../core/goals/goal-state.ts\";\nimport type { TaskStep, TaskStepsState } from \"../../../core/tasks/task-state.ts\";\nimport type { Theme, ThemeColor } from \"../theme/theme.ts\";\n\nexport type ActivityLaneKind = \"runtime\" | \"tool\" | \"task\" | \"worker\" | \"goal\" | \"queue\" | \"notice\";\nexport type ActivityLaneStatus = \"active\" | \"waiting\" | \"success\" | \"failure\" | \"neutral\";\n\nexport interface ActivityLaneItem {\n\tid: string;\n\tkind: ActivityLaneKind;\n\tlabel: string;\n\tstatus: ActivityLaneStatus;\n\t/** Short aggregation key (e.g. \"bash\", \"python\", \"agent\") for the concurrency slot. */\n\ttag?: string;\n}\n\nexport interface ActivityLaneCanonicalSnapshot {\n\tgoalState?: GoalState;\n\ttaskState?: TaskStepsState;\n\tlaneRecords: readonly LaneRecord[];\n}\n\nexport interface ActivityLaneProjection {\n\tactive: ActivityLaneItem[];\n\tterminal: ActivityLaneItem[];\n}\n\nconst DEFAULT_TERMINAL_HOLD_MS = 2_000;\nconst MAX_ACTIVITY_LABEL_LENGTH = 240;\nconst MAX_SEEN_TERMINALS = 512;\n\nexport const BACKGROUND_TOOL_ACTIVITY_ID_PREFIX = \"background-tool:\";\n\nexport function backgroundToolActivityId(taskId: string): string {\n\treturn `${BACKGROUND_TOOL_ACTIVITY_ID_PREFIX}${taskId}`;\n}\n\nexport function isBackgroundToolActivityItem(item: Pick<ActivityLaneItem, \"id\" | \"kind\">): boolean {\n\treturn item.kind === \"tool\" && item.id.startsWith(BACKGROUND_TOOL_ACTIVITY_ID_PREFIX);\n}\n\nconst STATUS_COLORS: Record<ActivityLaneStatus, ThemeColor> = {\n\tactive: \"muted\",\n\twaiting: \"warning\",\n\tsuccess: \"success\",\n\tfailure: \"error\",\n\tneutral: \"muted\",\n};\n\nfunction boundedLabel(value: string): string {\n\tconst normalized = value.replace(/\\s+/g, \" \").trim();\n\treturn normalized.length <= MAX_ACTIVITY_LABEL_LENGTH\n\t\t? normalized\n\t\t: `${normalized.slice(0, MAX_ACTIVITY_LABEL_LENGTH - 1)}…`;\n}\n\nfunction taskLabel(step: TaskStep, state: TaskStepsState): string {\n\tconst total = state.steps.length + state.archive.completed + state.archive.cancelled;\n\tconst activeIndex = state.steps.findIndex((candidate) => candidate.id === step.id);\n\tconst archived = state.archive.completed + state.archive.cancelled;\n\tconst position = Math.min(total, archived + Math.max(0, activeIndex) + 1);\n\tconst prefix = step.status === \"blocked\" ? \"Blocked\" : step.status === \"pending\" ? \"Next\" : \"Step\";\n\tconst content = step.status === \"in_progress\" ? (step.activeForm ?? step.content) : step.content;\n\treturn boundedLabel(`${prefix} ${position}/${total} · ${content}`);\n}\n\nfunction projectTaskState(state: TaskStepsState | undefined): ActivityLaneProjection {\n\tif (!state) return { active: [], terminal: [] };\n\tconst inProgress = state.steps.find((step) => step.status === \"in_progress\");\n\tconst blocked = state.steps.find((step) => step.status === \"blocked\");\n\tconst pending = state.steps.find((step) => step.status === \"pending\");\n\tconst current = inProgress ?? blocked ?? pending;\n\tconst active = current\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: `task:${current.id}`,\n\t\t\t\t\tkind: \"task\" as const,\n\t\t\t\t\tlabel: taskLabel(current, state),\n\t\t\t\t\tstatus: current.status === \"blocked\" ? (\"waiting\" as const) : (\"active\" as const),\n\t\t\t\t},\n\t\t\t]\n\t\t: [];\n\tconst terminal = state.steps\n\t\t.filter((step) => step.status === \"completed\" || step.status === \"cancelled\")\n\t\t.map(\n\t\t\t(step): ActivityLaneItem => ({\n\t\t\t\tid: `terminal:task:${step.id}:${step.status}:${step.updatedAt}`,\n\t\t\t\tkind: \"task\",\n\t\t\t\tlabel: boundedLabel(\n\t\t\t\t\tstep.status === \"completed\" ? `Completed · ${step.content}` : `Cancelled · ${step.content}`,\n\t\t\t\t),\n\t\t\t\tstatus: step.status === \"completed\" ? \"success\" : \"neutral\",\n\t\t\t}),\n\t\t);\n\treturn { active, terminal };\n}\n\nfunction projectGoalState(state: GoalState | undefined): ActivityLaneProjection {\n\tif (!state) return { active: [], terminal: [] };\n\tconst satisfied = state.requirements.filter((requirement) => requirement.status === \"satisfied\").length;\n\tconst progress = state.requirements.length > 0 ? ` ${satisfied}/${state.requirements.length}` : \"\";\n\tif (isGoalUnfinishedStatus(state.status)) {\n\t\tconst stopped = state.status === \"active\" ? \"\" : ` ${state.status.replace(\"_\", \" \")}`;\n\t\treturn {\n\t\t\tactive: [\n\t\t\t\t{\n\t\t\t\t\tid: `goal:${state.goalId}`,\n\t\t\t\t\tkind: \"goal\",\n\t\t\t\t\tlabel: boundedLabel(`Goal${stopped}${progress} · ${state.userGoal}`),\n\t\t\t\t\tstatus: state.status === \"active\" ? \"active\" : \"waiting\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tterminal: [],\n\t\t};\n\t}\n\treturn {\n\t\tactive: [],\n\t\tterminal: [\n\t\t\t{\n\t\t\t\tid: `terminal:goal:${state.goalId}:${state.status}:${state.updatedAt}`,\n\t\t\t\tkind: \"goal\",\n\t\t\t\tlabel: state.status === \"completed\" ? \"Goal achieved\" : \"Goal closed\",\n\t\t\t\tstatus: state.status === \"completed\" ? \"success\" : \"neutral\",\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction laneLabel(record: LaneRecord): string {\n\tconst runtime = record.type === \"tmux-worker\" ? \"tmux\" : \"agent\";\n\tconst label = record.label ?? record.laneId;\n\treturn boundedLabel(`${runtime} · ${label}`);\n}\n\nfunction projectLaneRecords(records: readonly LaneRecord[]): ActivityLaneProjection {\n\tconst workers = records.filter((record) => record.type === \"worker\" || record.type === \"tmux-worker\");\n\tconst active = workers\n\t\t.filter((record) => record.status === \"queued\" || record.status === \"running\")\n\t\t.map(\n\t\t\t(record): ActivityLaneItem => ({\n\t\t\t\tid: `worker:${record.laneId}`,\n\t\t\t\tkind: \"worker\",\n\t\t\t\tlabel: laneLabel(record),\n\t\t\t\tstatus: record.status === \"queued\" ? \"waiting\" : \"active\",\n\t\t\t\ttag: record.type === \"tmux-worker\" ? \"tmux\" : \"agent\",\n\t\t\t}),\n\t\t);\n\tconst terminal = workers\n\t\t.filter(\n\t\t\t(record) =>\n\t\t\t\trecord.status === \"succeeded\" ||\n\t\t\t\trecord.status === \"failed\" ||\n\t\t\t\trecord.status === \"timeout\" ||\n\t\t\t\trecord.status === \"budget_exhausted\" ||\n\t\t\t\trecord.status === \"canceled\",\n\t\t)\n\t\t.map(\n\t\t\t(record): ActivityLaneItem => ({\n\t\t\t\tid: `terminal:worker:${record.laneId}:${record.status}:${record.completedAt ?? \"unknown\"}`,\n\t\t\t\tkind: \"worker\",\n\t\t\t\tlabel: boundedLabel(\n\t\t\t\t\t`${record.status === \"succeeded\" ? \"Finished\" : record.status} · ${record.label ?? record.laneId}`,\n\t\t\t\t),\n\t\t\t\tstatus: record.status === \"succeeded\" ? \"success\" : record.status === \"canceled\" ? \"neutral\" : \"failure\",\n\t\t\t}),\n\t\t);\n\treturn { active, terminal };\n}\n\nexport function projectActivityLane(snapshot: ActivityLaneCanonicalSnapshot): ActivityLaneProjection {\n\tconst task = projectTaskState(snapshot.taskState);\n\tconst lanes = projectLaneRecords(snapshot.laneRecords);\n\tconst goal = projectGoalState(snapshot.goalState);\n\treturn {\n\t\tactive: [...task.active, ...lanes.active, ...goal.active],\n\t\tterminal: [...task.terminal, ...lanes.terminal, ...goal.terminal],\n\t};\n}\n\n/**\n * Slot layout. One row, fixed slot order and anchors, left to right by stability:\n *\n * ● working Step 2/5 · Confirming duplicate-charge risk 2 bash Queued 1 ● Read finished\n * turn plan (only elastic slot) concurrency/queue last event\n *\n * Only the plan slot truncates. When width runs out, whole slots drop right-to-left\n * (event, then concurrency) so surviving slots never shift position mid-turn.\n * Color carries status only; labels stay in the text/muted hierarchy.\n */\nconst TURN_TEXT_MAX = 32;\nconst EVENT_TEXT_MAX = 36;\nconst QUEUE_TEXT_MAX = 32;\nconst AGGREGATE_GROUP_MAX = 3;\nconst PLAN_TEXT_MIN = 24;\nconst SLOT_GAP_WIDTH = 2;\n\nfunction isTerminalStatus(status: ActivityLaneStatus): boolean {\n\treturn status === \"success\" || status === \"failure\" || status === \"neutral\";\n}\n\ninterface AggregateGroup {\n\ttag: string;\n\tcount: number;\n\twaiting: boolean;\n}\n\ninterface LaneSlots {\n\tturn: ActivityLaneItem | undefined;\n\tplan: ActivityLaneItem | undefined;\n\tgroups: AggregateGroup[];\n\tqueue: ActivityLaneItem | undefined;\n\tevent: ActivityLaneItem | undefined;\n}\n\nfunction normalizeActivityTag(tag: string | undefined, fallback: \"tool\" | \"worker\"): string {\n\tconst normalized = (tag ?? fallback)\n\t\t.replace(/[_\\s-]+/g, \" \")\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized || fallback;\n}\n\nfunction classifySlots(items: readonly ActivityLaneItem[]): LaneSlots {\n\tlet turn: ActivityLaneItem | undefined;\n\tlet plan: ActivityLaneItem | undefined;\n\tlet goal: ActivityLaneItem | undefined;\n\tlet queue: ActivityLaneItem | undefined;\n\tlet event: ActivityLaneItem | undefined;\n\tconst groups = new Map<string, AggregateGroup>();\n\n\tfor (const item of items) {\n\t\tif (isTerminalStatus(item.status)) {\n\t\t\tevent = item; // last one wins: transients are ordered oldest-first\n\t\t\tcontinue;\n\t\t}\n\t\tswitch (item.kind) {\n\t\t\tcase \"runtime\":\n\t\t\t\t// Waiting states (retry countdowns) outrank plain working states.\n\t\t\t\tif (!turn || (item.status === \"waiting\" && turn.status !== \"waiting\")) turn = item;\n\t\t\t\tbreak;\n\t\t\tcase \"task\":\n\t\t\t\tplan ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"goal\":\n\t\t\t\tgoal ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"queue\":\n\t\t\t\tqueue ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"tool\":\n\t\t\tcase \"worker\": {\n\t\t\t\tconst tag = normalizeActivityTag(item.tag, item.kind);\n\t\t\t\tconst group = groups.get(tag) ?? { tag, count: 0, waiting: false };\n\t\t\t\tgroup.count += 1;\n\t\t\t\tif (item.status === \"waiting\") group.waiting = true;\n\t\t\t\tgroups.set(tag, group);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"notice\":\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn { turn, plan: plan ?? goal, groups: [...groups.values()], queue, event };\n}\n\nfunction renderConcurrency(theme: Theme, groups: readonly AggregateGroup[]): string {\n\tconst parts: string[] = [];\n\tconst shown = groups.slice(0, AGGREGATE_GROUP_MAX);\n\tfor (const group of shown) {\n\t\tparts.push(theme.fg(group.waiting ? \"warning\" : \"muted\", `${group.count} ${group.tag}`));\n\t}\n\tconst overflow = groups.length - shown.length;\n\tif (overflow > 0) parts.push(theme.fg(\"dim\", `+${overflow}`));\n\treturn parts.join(theme.fg(\"dim\", \" · \"));\n}\n\nexport function renderActivityLaneLine(theme: Theme, items: readonly ActivityLaneItem[], width: number): string[] {\n\tconst safeWidth = Math.max(1, width);\n\tif (items.length === 0 || safeWidth < 3) return [];\n\tconst slots = classifySlots(items);\n\tif (!slots.turn && !slots.plan && slots.groups.length === 0 && !slots.queue && !slots.event) return [];\n\n\tconst indent = \" \";\n\tconst gap = \" \".repeat(SLOT_GAP_WIDTH);\n\n\t// Turn slot: alive-anchor glyph plus a short state. The generic working state keeps the\n\t// word \"working\"; load-bearing runtime labels (retry, compaction, routing) pass through.\n\tlet turnPart = \"\";\n\tconst planFromTurn = slots.turn?.id === \"runtime:turn\" ? slots.turn.label : undefined;\n\tif (slots.turn) {\n\t\tconst text = slots.turn.id === \"runtime:turn\" ? \"working\" : slots.turn.label;\n\t\tconst dotColor: ThemeColor = slots.turn.status === \"waiting\" ? \"warning\" : \"accent\";\n\t\tturnPart = `${theme.fg(dotColor, \"●\")} ${theme.fg(\"muted\", truncateToWidth(text, TURN_TEXT_MAX, \"…\"))}`;\n\t}\n\n\t// Plan slot content: task step, else goal, else the live working message.\n\tconst planItem = slots.plan;\n\tconst planText = planItem?.label ?? planFromTurn ?? \"\";\n\tconst planColor: ThemeColor = planItem ? (planItem.status === \"waiting\" ? \"warning\" : \"text\") : \"muted\";\n\n\t// Right-aligned slots at natural size. Events and concurrency drop before the plan\n\t// shrinks below its preferred width; the user-owned queue state remains visible.\n\tlet concurrencyPart = renderConcurrency(theme, slots.groups);\n\tconst queuePart = slots.queue ? theme.fg(\"warning\", truncateToWidth(slots.queue.label, QUEUE_TEXT_MAX, \"…\")) : \"\";\n\tlet eventPart = slots.event\n\t\t? `${theme.fg(STATUS_COLORS[slots.event.status], \"●\")} ${theme.fg(\n\t\t\t\t\"muted\",\n\t\t\t\ttruncateToWidth(slots.event.label, EVENT_TEXT_MAX, \"…\"),\n\t\t\t)}`\n\t\t: \"\";\n\n\tconst leftBase = visibleWidth(indent) + (turnPart ? visibleWidth(turnPart) : 0);\n\tconst planGap = turnPart && planText ? SLOT_GAP_WIDTH : 0;\n\tconst rightPart = (): string => [concurrencyPart, queuePart, eventPart].filter(Boolean).join(gap);\n\tconst planBudget = (): number => {\n\t\tlet right = visibleWidth(rightPart());\n\t\tif (right > 0) right += SLOT_GAP_WIDTH; // breathing room before the right block\n\t\treturn safeWidth - leftBase - planGap - right;\n\t};\n\n\tif (planText && planBudget() < PLAN_TEXT_MIN && eventPart) eventPart = \"\";\n\tif (planText && planBudget() < PLAN_TEXT_MIN && concurrencyPart) concurrencyPart = \"\";\n\n\tconst planAvailable = Math.max(0, planBudget());\n\tconst planPart = planText ? theme.fg(planColor, truncateToWidth(planText, planAvailable, \"…\")) : \"\";\n\n\tconst renderedRightPart = rightPart();\n\n\tlet line = indent + turnPart + (turnPart && planPart ? gap : \"\") + planPart;\n\tif (renderedRightPart) {\n\t\tconst pad = Math.max(SLOT_GAP_WIDTH, safeWidth - visibleWidth(line) - visibleWidth(renderedRightPart));\n\t\tline += \" \".repeat(pad) + renderedRightPart;\n\t}\n\treturn [truncateToWidth(line, safeWidth, \"\")];\n}\n\nexport class ActivityLaneComponent implements Component {\n\tprivate readonly theme: Theme;\n\tprivate readonly requestRender: () => void;\n\tprivate readonly terminalHoldMs: number;\n\tprivate sessionKey: string | undefined;\n\tprivate readonly canonical = new Map<string, ActivityLaneItem>();\n\tprivate readonly live = new Map<string, ActivityLaneItem>();\n\tprivate readonly transient = new Map<string, ActivityLaneItem>();\n\tprivate readonly transientTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\tprivate readonly seenTerminalKeys = new Set<string>();\n\tprivate transientSequence = 0;\n\n\tconstructor(theme: Theme, requestRender: () => void, terminalHoldMs = DEFAULT_TERMINAL_HOLD_MS) {\n\t\tthis.theme = theme;\n\t\tthis.requestRender = requestRender;\n\t\tthis.terminalHoldMs = terminalHoldMs;\n\t}\n\n\tprivate rememberTerminal(key: string): void {\n\t\tthis.seenTerminalKeys.add(key);\n\t\twhile (this.seenTerminalKeys.size > MAX_SEEN_TERMINALS) {\n\t\t\tconst oldest = this.seenTerminalKeys.values().next().value;\n\t\t\tif (oldest === undefined) break;\n\t\t\tthis.seenTerminalKeys.delete(oldest);\n\t\t}\n\t}\n\n\tprivate addTransient(item: ActivityLaneItem): void {\n\t\tconst id = `${item.id}:${++this.transientSequence}`;\n\t\tthis.transient.set(id, { ...item, id });\n\t\tconst timer = setTimeout(() => {\n\t\t\tthis.transient.delete(id);\n\t\t\tthis.transientTimers.delete(id);\n\t\t\tthis.requestRender();\n\t\t}, this.terminalHoldMs);\n\t\tthis.transientTimers.set(id, timer);\n\t}\n\n\tprivate applyProjection(projection: ActivityLaneProjection, showNewTerminals: boolean): void {\n\t\tthis.canonical.clear();\n\t\tfor (const item of projection.active) this.canonical.set(item.id, item);\n\t\tfor (const item of projection.terminal.slice(-MAX_SEEN_TERMINALS)) {\n\t\t\tif (showNewTerminals && !this.seenTerminalKeys.has(item.id)) this.addTransient(item);\n\t\t\tthis.rememberTerminal(item.id);\n\t\t}\n\t\tthis.requestRender();\n\t}\n\n\treplaceCanonical(sessionKey: string, snapshot: ActivityLaneCanonicalSnapshot): void {\n\t\tif (this.sessionKey !== sessionKey) {\n\t\t\tthis.clearTransient();\n\t\t\tthis.live.clear();\n\t\t\tthis.seenTerminalKeys.clear();\n\t\t\tthis.sessionKey = sessionKey;\n\t\t}\n\t\tthis.applyProjection(projectActivityLane(snapshot), false);\n\t}\n\n\tupdateCanonical(sessionKey: string, snapshot: ActivityLaneCanonicalSnapshot): void {\n\t\tif (this.sessionKey !== sessionKey) {\n\t\t\tthis.replaceCanonical(sessionKey, snapshot);\n\t\t\treturn;\n\t\t}\n\t\tthis.applyProjection(projectActivityLane(snapshot), true);\n\t}\n\n\tstart(item: Omit<ActivityLaneItem, \"status\">): void {\n\t\tthis.live.set(item.id, { ...item, label: boundedLabel(item.label), status: \"active\" });\n\t\tthis.requestRender();\n\t}\n\n\twait(item: Omit<ActivityLaneItem, \"status\">): void {\n\t\tthis.live.set(item.id, { ...item, label: boundedLabel(item.label), status: \"waiting\" });\n\t\tthis.requestRender();\n\t}\n\n\tupdate(id: string, label: string): void {\n\t\tconst current = this.live.get(id);\n\t\tif (!current) return;\n\t\tthis.live.set(id, { ...current, label: boundedLabel(label) });\n\t\tthis.requestRender();\n\t}\n\n\tremove(id: string): void {\n\t\tif (this.live.delete(id)) this.requestRender();\n\t}\n\n\tremoveByPrefix(prefix: string): void {\n\t\tlet removed = false;\n\t\tfor (const id of this.live.keys()) {\n\t\t\tif (!id.startsWith(prefix)) continue;\n\t\t\tthis.live.delete(id);\n\t\t\tremoved = true;\n\t\t}\n\t\tif (removed) this.requestRender();\n\t}\n\n\tfinish(id: string, status: \"success\" | \"failure\" | \"neutral\", fallback?: Omit<ActivityLaneItem, \"status\">): void {\n\t\tconst current = this.live.get(id) ?? fallback;\n\t\tthis.live.delete(id);\n\t\tif (current) this.addTransient({ ...current, label: boundedLabel(current.label), status });\n\t\tthis.requestRender();\n\t}\n\n\tannounce(label: string, status: \"success\" | \"failure\" | \"neutral\" = \"success\"): void {\n\t\tthis.addTransient({ id: \"notice\", kind: \"notice\", label: boundedLabel(label), status });\n\t\tthis.requestRender();\n\t}\n\n\tprivate clearTransient(): void {\n\t\tfor (const timer of this.transientTimers.values()) clearTimeout(timer);\n\t\tthis.transientTimers.clear();\n\t\tthis.transient.clear();\n\t}\n\n\tgetItems(): ActivityLaneItem[] {\n\t\t// Slot classification decides visibility; the turn state always feeds the turn slot.\n\t\treturn [...this.transient.values(), ...this.live.values(), ...this.canonical.values()];\n\t}\n\n\trender(width: number): string[] {\n\t\treturn renderActivityLaneLine(this.theme, this.getItems(), width);\n\t}\n\n\tinvalidate(): void {}\n\n\tdispose(): void {\n\t\tthis.clearTransient();\n\t\tthis.live.clear();\n\t\tthis.canonical.clear();\n\t\tthis.seenTerminalKeys.clear();\n\t}\n}\n"]}
1
+ {"version":3,"file":"activity-lane.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/activity-lane.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component } from \"@caupulican/pi-tui\";\nimport { truncateToWidth, visibleWidth } from \"@caupulican/pi-tui\";\nimport type { LaneRecord } from \"../../../core/autonomy/lane-tracker.ts\";\nimport { type GoalState, isGoalUnfinishedStatus } from \"../../../core/goals/goal-state.ts\";\nimport type { TaskStep, TaskStepsState } from \"../../../core/tasks/task-state.ts\";\nimport type { Theme, ThemeColor } from \"../theme/theme.ts\";\n\nexport type ActivityLaneKind = \"runtime\" | \"tool\" | \"task\" | \"worker\" | \"goal\" | \"queue\" | \"notice\";\nexport type ActivityLaneStatus = \"active\" | \"waiting\" | \"success\" | \"warning\" | \"failure\" | \"neutral\";\n\nexport interface ActivityLaneItem {\n\tid: string;\n\tkind: ActivityLaneKind;\n\tlabel: string;\n\tstatus: ActivityLaneStatus;\n\t/** Short aggregation key (e.g. \"bash\", \"python\", \"agent\") for the concurrency slot. */\n\ttag?: string;\n}\n\nexport interface ActivityLaneCanonicalSnapshot {\n\tgoalState?: GoalState;\n\ttaskState?: TaskStepsState;\n\tlaneRecords: readonly LaneRecord[];\n}\n\nexport interface ActivityLaneProjection {\n\tactive: ActivityLaneItem[];\n\tterminal: ActivityLaneItem[];\n}\n\nconst DEFAULT_TERMINAL_HOLD_MS = 2_000;\nconst MAX_ACTIVITY_LABEL_LENGTH = 240;\nconst MAX_SEEN_TERMINALS = 512;\n\nexport const BACKGROUND_TOOL_ACTIVITY_ID_PREFIX = \"background-tool:\";\n\nexport function backgroundToolActivityId(taskId: string): string {\n\treturn `${BACKGROUND_TOOL_ACTIVITY_ID_PREFIX}${taskId}`;\n}\n\nexport function isBackgroundToolActivityItem(item: Pick<ActivityLaneItem, \"id\" | \"kind\">): boolean {\n\treturn item.kind === \"tool\" && item.id.startsWith(BACKGROUND_TOOL_ACTIVITY_ID_PREFIX);\n}\n\nconst STATUS_COLORS: Record<ActivityLaneStatus, ThemeColor> = {\n\tactive: \"muted\",\n\twaiting: \"warning\",\n\tsuccess: \"success\",\n\twarning: \"warning\",\n\tfailure: \"error\",\n\tneutral: \"muted\",\n};\n\nfunction boundedLabel(value: string): string {\n\tconst normalized = value.replace(/\\s+/g, \" \").trim();\n\treturn normalized.length <= MAX_ACTIVITY_LABEL_LENGTH\n\t\t? normalized\n\t\t: `${normalized.slice(0, MAX_ACTIVITY_LABEL_LENGTH - 1)}…`;\n}\n\nfunction taskLabel(step: TaskStep, state: TaskStepsState): string {\n\tconst total = state.steps.length + state.archive.completed + state.archive.cancelled;\n\tconst activeIndex = state.steps.findIndex((candidate) => candidate.id === step.id);\n\tconst archived = state.archive.completed + state.archive.cancelled;\n\tconst position = Math.min(total, archived + Math.max(0, activeIndex) + 1);\n\tconst prefix = step.status === \"blocked\" ? \"Blocked\" : step.status === \"pending\" ? \"Next\" : \"Step\";\n\tconst content = step.status === \"in_progress\" ? (step.activeForm ?? step.content) : step.content;\n\treturn boundedLabel(`${prefix} ${position}/${total} · ${content}`);\n}\n\nfunction projectTaskState(state: TaskStepsState | undefined): ActivityLaneProjection {\n\tif (!state) return { active: [], terminal: [] };\n\tconst inProgress = state.steps.find((step) => step.status === \"in_progress\");\n\tconst blocked = state.steps.find((step) => step.status === \"blocked\");\n\tconst pending = state.steps.find((step) => step.status === \"pending\");\n\tconst current = inProgress ?? blocked ?? pending;\n\tconst active = current\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: `task:${current.id}`,\n\t\t\t\t\tkind: \"task\" as const,\n\t\t\t\t\tlabel: taskLabel(current, state),\n\t\t\t\t\tstatus: current.status === \"blocked\" ? (\"waiting\" as const) : (\"active\" as const),\n\t\t\t\t},\n\t\t\t]\n\t\t: [];\n\tconst terminal = state.steps\n\t\t.filter((step) => step.status === \"completed\" || step.status === \"cancelled\")\n\t\t.map(\n\t\t\t(step): ActivityLaneItem => ({\n\t\t\t\tid: `terminal:task:${step.id}:${step.status}:${step.updatedAt}`,\n\t\t\t\tkind: \"task\",\n\t\t\t\tlabel: boundedLabel(\n\t\t\t\t\tstep.status === \"completed\" ? `Completed · ${step.content}` : `Cancelled · ${step.content}`,\n\t\t\t\t),\n\t\t\t\tstatus: step.status === \"completed\" ? \"success\" : \"neutral\",\n\t\t\t}),\n\t\t);\n\treturn { active, terminal };\n}\n\nfunction projectGoalState(state: GoalState | undefined): ActivityLaneProjection {\n\tif (!state) return { active: [], terminal: [] };\n\tconst satisfied = state.requirements.filter((requirement) => requirement.status === \"satisfied\").length;\n\tconst progress = state.requirements.length > 0 ? ` ${satisfied}/${state.requirements.length}` : \"\";\n\tif (isGoalUnfinishedStatus(state.status)) {\n\t\tconst stopped = state.status === \"active\" ? \"\" : ` ${state.status.replace(\"_\", \" \")}`;\n\t\treturn {\n\t\t\tactive: [\n\t\t\t\t{\n\t\t\t\t\tid: `goal:${state.goalId}`,\n\t\t\t\t\tkind: \"goal\",\n\t\t\t\t\tlabel: boundedLabel(`Goal${stopped}${progress} · ${state.userGoal}`),\n\t\t\t\t\tstatus: state.status === \"active\" ? \"active\" : \"waiting\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tterminal: [],\n\t\t};\n\t}\n\treturn {\n\t\tactive: [],\n\t\tterminal: [\n\t\t\t{\n\t\t\t\tid: `terminal:goal:${state.goalId}:${state.status}:${state.updatedAt}`,\n\t\t\t\tkind: \"goal\",\n\t\t\t\tlabel: state.status === \"completed\" ? \"Goal achieved\" : \"Goal closed\",\n\t\t\t\tstatus: state.status === \"completed\" ? \"success\" : \"neutral\",\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction laneLabel(record: LaneRecord): string {\n\tconst runtime = record.type === \"tmux-worker\" ? \"tmux\" : \"agent\";\n\tconst label = record.label ?? record.laneId;\n\treturn boundedLabel(`${runtime} · ${label}`);\n}\n\nfunction projectLaneRecords(records: readonly LaneRecord[]): ActivityLaneProjection {\n\tconst workers = records.filter((record) => record.type === \"worker\" || record.type === \"tmux-worker\");\n\tconst active = workers\n\t\t.filter((record) => record.status === \"queued\" || record.status === \"running\")\n\t\t.map(\n\t\t\t(record): ActivityLaneItem => ({\n\t\t\t\tid: `worker:${record.laneId}`,\n\t\t\t\tkind: \"worker\",\n\t\t\t\tlabel: laneLabel(record),\n\t\t\t\tstatus: record.status === \"queued\" ? \"waiting\" : \"active\",\n\t\t\t\ttag: record.type === \"tmux-worker\" ? \"tmux\" : \"agent\",\n\t\t\t}),\n\t\t);\n\tconst terminal = workers\n\t\t.filter(\n\t\t\t(record) =>\n\t\t\t\trecord.status === \"succeeded\" ||\n\t\t\t\trecord.status === \"partial\" ||\n\t\t\t\trecord.status === \"blocked\" ||\n\t\t\t\trecord.status === \"failed\" ||\n\t\t\t\trecord.status === \"timeout\" ||\n\t\t\t\trecord.status === \"budget_exhausted\" ||\n\t\t\t\trecord.status === \"canceled\",\n\t\t)\n\t\t.map(\n\t\t\t(record): ActivityLaneItem => ({\n\t\t\t\tid: `terminal:worker:${record.laneId}:${record.status}:${record.completedAt ?? \"unknown\"}`,\n\t\t\t\tkind: \"worker\",\n\t\t\t\tlabel: boundedLabel(\n\t\t\t\t\t`${record.status === \"succeeded\" ? \"Finished\" : record.status} · ${record.label ?? record.laneId}`,\n\t\t\t\t),\n\t\t\t\tstatus:\n\t\t\t\t\trecord.status === \"succeeded\"\n\t\t\t\t\t\t? \"success\"\n\t\t\t\t\t\t: record.status === \"partial\" || record.status === \"blocked\"\n\t\t\t\t\t\t\t? \"warning\"\n\t\t\t\t\t\t\t: record.status === \"canceled\"\n\t\t\t\t\t\t\t\t? \"neutral\"\n\t\t\t\t\t\t\t\t: \"failure\",\n\t\t\t}),\n\t\t);\n\treturn { active, terminal };\n}\n\nexport function projectActivityLane(snapshot: ActivityLaneCanonicalSnapshot): ActivityLaneProjection {\n\tconst task = projectTaskState(snapshot.taskState);\n\tconst lanes = projectLaneRecords(snapshot.laneRecords);\n\tconst goal = projectGoalState(snapshot.goalState);\n\treturn {\n\t\tactive: [...task.active, ...lanes.active, ...goal.active],\n\t\tterminal: [...task.terminal, ...lanes.terminal, ...goal.terminal],\n\t};\n}\n\n/**\n * Slot layout. One row, fixed slot order and anchors, left to right by stability:\n *\n * ● working Step 2/5 · Confirming duplicate-charge risk 2 bash Queued 1 ● Read finished\n * turn plan (only elastic slot) concurrency/queue last event\n *\n * Only the plan slot truncates. When width runs out, whole slots drop right-to-left\n * (event, then concurrency) so surviving slots never shift position mid-turn.\n * Color carries status only; labels stay in the text/muted hierarchy.\n */\nconst TURN_TEXT_MAX = 32;\nconst EVENT_TEXT_MAX = 36;\nconst QUEUE_TEXT_MAX = 32;\nconst AGGREGATE_GROUP_MAX = 3;\nconst PLAN_TEXT_MIN = 24;\nconst SLOT_GAP_WIDTH = 2;\n\nfunction isTerminalStatus(status: ActivityLaneStatus): boolean {\n\treturn status === \"success\" || status === \"warning\" || status === \"failure\" || status === \"neutral\";\n}\n\ninterface AggregateGroup {\n\ttag: string;\n\tcount: number;\n\twaiting: boolean;\n}\n\ninterface LaneSlots {\n\tturn: ActivityLaneItem | undefined;\n\tplan: ActivityLaneItem | undefined;\n\tgroups: AggregateGroup[];\n\tqueue: ActivityLaneItem | undefined;\n\tevent: ActivityLaneItem | undefined;\n}\n\nfunction normalizeActivityTag(tag: string | undefined, fallback: \"tool\" | \"worker\"): string {\n\tconst normalized = (tag ?? fallback)\n\t\t.replace(/[_\\s-]+/g, \" \")\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized || fallback;\n}\n\nfunction classifySlots(items: readonly ActivityLaneItem[]): LaneSlots {\n\tlet turn: ActivityLaneItem | undefined;\n\tlet plan: ActivityLaneItem | undefined;\n\tlet goal: ActivityLaneItem | undefined;\n\tlet queue: ActivityLaneItem | undefined;\n\tlet event: ActivityLaneItem | undefined;\n\tconst groups = new Map<string, AggregateGroup>();\n\n\tfor (const item of items) {\n\t\tif (isTerminalStatus(item.status)) {\n\t\t\tevent = item; // last one wins: transients are ordered oldest-first\n\t\t\tcontinue;\n\t\t}\n\t\tswitch (item.kind) {\n\t\t\tcase \"runtime\":\n\t\t\t\t// Waiting states (retry countdowns) outrank plain working states.\n\t\t\t\tif (!turn || (item.status === \"waiting\" && turn.status !== \"waiting\")) turn = item;\n\t\t\t\tbreak;\n\t\t\tcase \"task\":\n\t\t\t\tplan ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"goal\":\n\t\t\t\tgoal ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"queue\":\n\t\t\t\tqueue ??= item;\n\t\t\t\tbreak;\n\t\t\tcase \"tool\":\n\t\t\tcase \"worker\": {\n\t\t\t\tconst tag = normalizeActivityTag(item.tag, item.kind);\n\t\t\t\tconst group = groups.get(tag) ?? { tag, count: 0, waiting: false };\n\t\t\t\tgroup.count += 1;\n\t\t\t\tif (item.status === \"waiting\") group.waiting = true;\n\t\t\t\tgroups.set(tag, group);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"notice\":\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn { turn, plan: plan ?? goal, groups: [...groups.values()], queue, event };\n}\n\nfunction renderConcurrency(theme: Theme, groups: readonly AggregateGroup[]): string {\n\tconst parts: string[] = [];\n\tconst shown = groups.slice(0, AGGREGATE_GROUP_MAX);\n\tfor (const group of shown) {\n\t\tparts.push(theme.fg(group.waiting ? \"warning\" : \"muted\", `${group.count} ${group.tag}`));\n\t}\n\tconst overflow = groups.length - shown.length;\n\tif (overflow > 0) parts.push(theme.fg(\"dim\", `+${overflow}`));\n\treturn parts.join(theme.fg(\"dim\", \" · \"));\n}\n\nexport function renderActivityLaneLine(theme: Theme, items: readonly ActivityLaneItem[], width: number): string[] {\n\tconst safeWidth = Math.max(1, width);\n\tif (items.length === 0 || safeWidth < 3) return [];\n\tconst slots = classifySlots(items);\n\tif (!slots.turn && !slots.plan && slots.groups.length === 0 && !slots.queue && !slots.event) return [];\n\n\tconst indent = \" \";\n\tconst gap = \" \".repeat(SLOT_GAP_WIDTH);\n\n\t// Turn slot: alive-anchor glyph plus a short state. The generic working state keeps the\n\t// word \"working\"; load-bearing runtime labels (retry, compaction, routing) pass through.\n\tlet turnPart = \"\";\n\tconst planFromTurn = slots.turn?.id === \"runtime:turn\" ? slots.turn.label : undefined;\n\tif (slots.turn) {\n\t\tconst text = slots.turn.id === \"runtime:turn\" ? \"working\" : slots.turn.label;\n\t\tconst dotColor: ThemeColor = slots.turn.status === \"waiting\" ? \"warning\" : \"accent\";\n\t\tturnPart = `${theme.fg(dotColor, \"●\")} ${theme.fg(\"muted\", truncateToWidth(text, TURN_TEXT_MAX, \"…\"))}`;\n\t}\n\n\t// Plan slot content: task step, else goal, else the live working message.\n\tconst planItem = slots.plan;\n\tconst planText = planItem?.label ?? planFromTurn ?? \"\";\n\tconst planColor: ThemeColor = planItem ? (planItem.status === \"waiting\" ? \"warning\" : \"text\") : \"muted\";\n\n\t// Right-aligned slots at natural size. Events and concurrency drop before the plan\n\t// shrinks below its preferred width; the user-owned queue state remains visible.\n\tlet concurrencyPart = renderConcurrency(theme, slots.groups);\n\tconst queuePart = slots.queue ? theme.fg(\"warning\", truncateToWidth(slots.queue.label, QUEUE_TEXT_MAX, \"…\")) : \"\";\n\tlet eventPart = slots.event\n\t\t? `${theme.fg(STATUS_COLORS[slots.event.status], \"●\")} ${theme.fg(\n\t\t\t\t\"muted\",\n\t\t\t\ttruncateToWidth(slots.event.label, EVENT_TEXT_MAX, \"…\"),\n\t\t\t)}`\n\t\t: \"\";\n\n\tconst leftBase = visibleWidth(indent) + (turnPart ? visibleWidth(turnPart) : 0);\n\tconst planGap = turnPart && planText ? SLOT_GAP_WIDTH : 0;\n\tconst rightPart = (): string => [concurrencyPart, queuePart, eventPart].filter(Boolean).join(gap);\n\tconst planBudget = (): number => {\n\t\tlet right = visibleWidth(rightPart());\n\t\tif (right > 0) right += SLOT_GAP_WIDTH; // breathing room before the right block\n\t\treturn safeWidth - leftBase - planGap - right;\n\t};\n\n\tif (planText && planBudget() < PLAN_TEXT_MIN && eventPart) eventPart = \"\";\n\tif (planText && planBudget() < PLAN_TEXT_MIN && concurrencyPart) concurrencyPart = \"\";\n\n\tconst planAvailable = Math.max(0, planBudget());\n\tconst planPart = planText ? theme.fg(planColor, truncateToWidth(planText, planAvailable, \"…\")) : \"\";\n\n\tconst renderedRightPart = rightPart();\n\n\tlet line = indent + turnPart + (turnPart && planPart ? gap : \"\") + planPart;\n\tif (renderedRightPart) {\n\t\tconst pad = Math.max(SLOT_GAP_WIDTH, safeWidth - visibleWidth(line) - visibleWidth(renderedRightPart));\n\t\tline += \" \".repeat(pad) + renderedRightPart;\n\t}\n\treturn [truncateToWidth(line, safeWidth, \"\")];\n}\n\nexport class ActivityLaneComponent implements Component {\n\tprivate readonly theme: Theme;\n\tprivate readonly requestRender: () => void;\n\tprivate readonly terminalHoldMs: number;\n\tprivate sessionKey: string | undefined;\n\tprivate readonly canonical = new Map<string, ActivityLaneItem>();\n\tprivate readonly live = new Map<string, ActivityLaneItem>();\n\tprivate readonly transient = new Map<string, ActivityLaneItem>();\n\tprivate readonly transientTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\tprivate readonly seenTerminalKeys = new Set<string>();\n\tprivate transientSequence = 0;\n\n\tconstructor(theme: Theme, requestRender: () => void, terminalHoldMs = DEFAULT_TERMINAL_HOLD_MS) {\n\t\tthis.theme = theme;\n\t\tthis.requestRender = requestRender;\n\t\tthis.terminalHoldMs = terminalHoldMs;\n\t}\n\n\tprivate rememberTerminal(key: string): void {\n\t\tthis.seenTerminalKeys.add(key);\n\t\twhile (this.seenTerminalKeys.size > MAX_SEEN_TERMINALS) {\n\t\t\tconst oldest = this.seenTerminalKeys.values().next().value;\n\t\t\tif (oldest === undefined) break;\n\t\t\tthis.seenTerminalKeys.delete(oldest);\n\t\t}\n\t}\n\n\tprivate addTransient(item: ActivityLaneItem): void {\n\t\tconst id = `${item.id}:${++this.transientSequence}`;\n\t\tthis.transient.set(id, { ...item, id });\n\t\tconst timer = setTimeout(() => {\n\t\t\tthis.transient.delete(id);\n\t\t\tthis.transientTimers.delete(id);\n\t\t\tthis.requestRender();\n\t\t}, this.terminalHoldMs);\n\t\tthis.transientTimers.set(id, timer);\n\t}\n\n\tprivate applyProjection(projection: ActivityLaneProjection, showNewTerminals: boolean): void {\n\t\tthis.canonical.clear();\n\t\tfor (const item of projection.active) this.canonical.set(item.id, item);\n\t\tfor (const item of projection.terminal.slice(-MAX_SEEN_TERMINALS)) {\n\t\t\tif (showNewTerminals && !this.seenTerminalKeys.has(item.id)) this.addTransient(item);\n\t\t\tthis.rememberTerminal(item.id);\n\t\t}\n\t\tthis.requestRender();\n\t}\n\n\treplaceCanonical(sessionKey: string, snapshot: ActivityLaneCanonicalSnapshot): void {\n\t\tif (this.sessionKey !== sessionKey) {\n\t\t\tthis.clearTransient();\n\t\t\tthis.live.clear();\n\t\t\tthis.seenTerminalKeys.clear();\n\t\t\tthis.sessionKey = sessionKey;\n\t\t}\n\t\tthis.applyProjection(projectActivityLane(snapshot), false);\n\t}\n\n\tupdateCanonical(sessionKey: string, snapshot: ActivityLaneCanonicalSnapshot): void {\n\t\tif (this.sessionKey !== sessionKey) {\n\t\t\tthis.replaceCanonical(sessionKey, snapshot);\n\t\t\treturn;\n\t\t}\n\t\tthis.applyProjection(projectActivityLane(snapshot), true);\n\t}\n\n\tstart(item: Omit<ActivityLaneItem, \"status\">): void {\n\t\tthis.live.set(item.id, { ...item, label: boundedLabel(item.label), status: \"active\" });\n\t\tthis.requestRender();\n\t}\n\n\twait(item: Omit<ActivityLaneItem, \"status\">): void {\n\t\tthis.live.set(item.id, { ...item, label: boundedLabel(item.label), status: \"waiting\" });\n\t\tthis.requestRender();\n\t}\n\n\tupdate(id: string, label: string): void {\n\t\tconst current = this.live.get(id);\n\t\tif (!current) return;\n\t\tthis.live.set(id, { ...current, label: boundedLabel(label) });\n\t\tthis.requestRender();\n\t}\n\n\tremove(id: string): void {\n\t\tif (this.live.delete(id)) this.requestRender();\n\t}\n\n\tremoveByPrefix(prefix: string): void {\n\t\tlet removed = false;\n\t\tfor (const id of this.live.keys()) {\n\t\t\tif (!id.startsWith(prefix)) continue;\n\t\t\tthis.live.delete(id);\n\t\t\tremoved = true;\n\t\t}\n\t\tif (removed) this.requestRender();\n\t}\n\n\tfinish(id: string, status: \"success\" | \"failure\" | \"neutral\", fallback?: Omit<ActivityLaneItem, \"status\">): void {\n\t\tconst current = this.live.get(id) ?? fallback;\n\t\tthis.live.delete(id);\n\t\tif (current) this.addTransient({ ...current, label: boundedLabel(current.label), status });\n\t\tthis.requestRender();\n\t}\n\n\tannounce(label: string, status: \"success\" | \"failure\" | \"neutral\" = \"success\"): void {\n\t\tthis.addTransient({ id: \"notice\", kind: \"notice\", label: boundedLabel(label), status });\n\t\tthis.requestRender();\n\t}\n\n\tprivate clearTransient(): void {\n\t\tfor (const timer of this.transientTimers.values()) clearTimeout(timer);\n\t\tthis.transientTimers.clear();\n\t\tthis.transient.clear();\n\t}\n\n\tgetItems(): ActivityLaneItem[] {\n\t\t// Slot classification decides visibility; the turn state always feeds the turn slot.\n\t\treturn [...this.transient.values(), ...this.live.values(), ...this.canonical.values()];\n\t}\n\n\trender(width: number): string[] {\n\t\treturn renderActivityLaneLine(this.theme, this.getItems(), width);\n\t}\n\n\tinvalidate(): void {}\n\n\tdispose(): void {\n\t\tthis.clearTransient();\n\t\tthis.live.clear();\n\t\tthis.canonical.clear();\n\t\tthis.seenTerminalKeys.clear();\n\t}\n}\n"]}
@@ -133,7 +133,7 @@ function workerDelegationSummary(settings) {
133
133
  if (!(settings.enabled ?? DEFAULT_WORKER_DELEGATION_ENABLED))
134
134
  return "disabled";
135
135
  const maxUsd = settings.maxUsd ?? DEFAULT_WORKER_DELEGATION_MAX_USD;
136
- return `enabled ($${maxUsd}/tree)`;
136
+ return maxUsd > 0 ? `enabled ($${maxUsd}/tree)` : "enabled (unbounded)";
137
137
  }
138
138
  function autoLearnSummary(settings) {
139
139
  return settings.enabled ? `enabled (${autoLearnModelValue(settings)})` : "disabled";