@aragon-agent/cli 0.6.46 → 0.6.48
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.
- package/CHANGELOG.md +28 -0
- package/README.md +80 -12
- package/dist/agent/coalesce.d.ts +5 -1
- package/dist/agent/coalesce.js +13 -0
- package/dist/agent/controller.d.ts +41 -20
- package/dist/agent/controller.js +68 -15
- package/dist/agent/conversation-reset.d.ts +1 -1
- package/dist/agent/governance-wiring.d.ts +6 -6
- package/dist/agent/governance-wiring.js +4 -4
- package/dist/agent/headless.d.ts +5 -5
- package/dist/agent/headless.js +4 -4
- package/dist/agent/job-notices.d.ts +1 -1
- package/dist/agent/job-notices.js +1 -1
- package/dist/agent/kit-apply.d.ts +3 -3
- package/dist/agent/kit-apply.js +3 -3
- package/dist/agent/model-profile-settings.d.ts +2 -2
- package/dist/agent/model-profile-settings.js +6 -6
- package/dist/agent/prompt-options.d.ts +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/user-attention.d.ts +17 -0
- package/dist/agent/user-attention.js +32 -0
- package/dist/{ui → app}/App.d.ts +9 -9
- package/dist/{ui → app}/App.js +113 -79
- package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
- package/dist/{ui → app}/use-startup-notices.js +2 -2
- package/dist/cli.js +31 -32
- package/dist/commands/agents-command.js +1 -1
- package/dist/commands/builtins.js +9 -9
- package/dist/commands/governance-command.js +2 -2
- package/dist/commands/governance-runs-table.js +1 -1
- package/dist/commands/kit-command.js +1 -1
- package/dist/commands/perf.d.ts +3 -3
- package/dist/commands/perf.js +1 -1
- package/dist/commands/registry.d.ts +8 -8
- package/dist/commands/skills.js +2 -2
- package/dist/commands/team-command.js +1 -1
- package/dist/compaction/archive.d.ts +1 -1
- package/dist/compaction/archive.js +1 -1
- package/dist/compaction/child.d.ts +3 -3
- package/dist/compaction/child.js +4 -4
- package/dist/compaction/command.js +5 -5
- package/dist/compaction/compactor.d.ts +6 -6
- package/dist/compaction/compactor.js +6 -6
- package/dist/compaction/context-command.js +1 -1
- package/dist/compaction/digest.js +1 -1
- package/dist/compaction/memory-input.js +1 -1
- package/dist/compaction/memory-validation.js +1 -1
- package/dist/compaction/memory.js +1 -1
- package/dist/compaction/summarize-call.js +1 -1
- package/dist/compaction/summary-prompt.js +1 -1
- package/dist/compaction/tail-budget.js +2 -2
- package/dist/compaction/wiring.d.ts +5 -5
- package/dist/compaction/wiring.js +2 -2
- package/dist/config/cli-commands.d.ts +1 -1
- package/dist/config/cli-commands.js +3 -3
- package/dist/config/env.d.ts +1 -1
- package/dist/config/env.js +4 -4
- package/dist/config/load.d.ts +2 -2
- package/dist/config/load.js +10 -31
- package/dist/config/migrate-state-out-of-config.js +1 -1
- package/dist/config/model-profile-store.d.ts +4 -54
- package/dist/config/model-profile-store.js +3 -3
- package/dist/config/prompt-history.js +1 -1
- package/dist/config/store.d.ts +2 -2
- package/dist/config/store.js +3 -3
- package/dist/diagnostics/doctor.js +4 -4
- package/dist/exec/bridge/decisions.d.ts +1 -1
- package/dist/exec/bridge/human-answers.d.ts +1 -1
- package/dist/exec/bridge/human-answers.js +1 -1
- package/dist/exec/bridge/protocol.d.ts +1 -1
- package/dist/exec/bridge/server.js +1 -1
- package/dist/exec/events.d.ts +2 -2
- package/dist/exec/index.d.ts +1 -1
- package/dist/exec/index.js +1 -1
- package/dist/exec/permission.js +1 -1
- package/dist/exec/runner.d.ts +3 -3
- package/dist/exec/runner.js +2 -2
- package/dist/exec/threads/runtime.js +1 -1
- package/dist/fast/digest.d.ts +1 -1
- package/dist/fast/digest.js +1 -1
- package/dist/fast/frames.d.ts +1 -1
- package/dist/fast/frames.js +1 -1
- package/dist/fast/prompt.d.ts +1 -1
- package/dist/fast/prompt.js +1 -1
- package/dist/fast/review-call.js +1 -1
- package/dist/fast/reviewer.d.ts +3 -3
- package/dist/fast/reviewer.js +1 -1
- package/dist/fast/summary-call.d.ts +3 -3
- package/dist/fast/summary-call.js +2 -2
- package/dist/fast/summary-prompt.d.ts +1 -1
- package/dist/fast/summary-prompt.js +1 -1
- package/dist/fast/wiring.d.ts +4 -4
- package/dist/fast/wiring.js +1 -1
- package/dist/governance/card-normalize.d.ts +1 -1
- package/dist/governance/copy.d.ts +1 -1
- package/dist/governance/copy.js +2 -2
- package/dist/governance/engine/artifact-persist.d.ts +1 -1
- package/dist/governance/engine/budget.d.ts +1 -1
- package/dist/governance/engine/budget.js +1 -1
- package/dist/governance/engine/cards.d.ts +1 -1
- package/dist/governance/engine/digest.js +1 -1
- package/dist/governance/engine/engine-core.d.ts +5 -5
- package/dist/governance/engine/engine-core.js +1 -1
- package/dist/governance/engine/engine.d.ts +1 -1
- package/dist/governance/engine/engine.js +1 -1
- package/dist/governance/engine/estimate.d.ts +1 -1
- package/dist/governance/engine/estimate.js +1 -1
- package/dist/governance/engine/inspector.js +2 -2
- package/dist/governance/engine/integration.d.ts +1 -1
- package/dist/governance/engine/lifecycle.d.ts +1 -1
- package/dist/governance/engine/lifecycle.js +1 -1
- package/dist/governance/engine/phase-members.d.ts +1 -1
- package/dist/governance/engine/phase-planner.d.ts +1 -1
- package/dist/governance/engine/phase-planner.js +1 -1
- package/dist/governance/engine/rebuild.d.ts +1 -1
- package/dist/governance/engine/report.d.ts +1 -1
- package/dist/governance/engine/report.js +1 -1
- package/dist/governance/engine/run-digest.d.ts +1 -1
- package/dist/governance/engine/spec-builder.d.ts +2 -2
- package/dist/governance/engine/spec-builder.js +2 -2
- package/dist/governance/engine/stage-runner.js +2 -2
- package/dist/governance/engine/start-input.d.ts +1 -1
- package/dist/governance/engine/start-input.js +1 -1
- package/dist/governance/engine/state-machine.d.ts +1 -1
- package/dist/governance/engine/state-machine.js +3 -3
- package/dist/governance/engine/submission-queries.d.ts +1 -1
- package/dist/governance/engine/submission-render.d.ts +1 -1
- package/dist/governance/engine/submissions.d.ts +1 -1
- package/dist/governance/engine/submissions.js +1 -1
- package/dist/governance/engine/visibility.d.ts +1 -1
- package/dist/governance/engine/visibility.js +1 -1
- package/dist/governance/posture-transition.d.ts +2 -2
- package/dist/governance/posture-transition.js +1 -1
- package/dist/governance/profiles.d.ts +1 -1
- package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
- package/dist/governance/prompts/orchestrator-block.js +2 -2
- package/dist/governance/prompts/plan-addendum.d.ts +1 -1
- package/dist/governance/prompts/plan-addendum.js +1 -1
- package/dist/governance/prompts/role-blocks.d.ts +2 -2
- package/dist/governance/prompts/role-blocks.js +1 -1
- package/dist/governance/report-reader.js +1 -1
- package/dist/governance/roles.d.ts +1 -1
- package/dist/governance/rules/claims.d.ts +1 -1
- package/dist/governance/rules/claims.js +1 -1
- package/dist/governance/rules/elimination.d.ts +1 -1
- package/dist/governance/rules/elimination.js +1 -1
- package/dist/governance/rules/failure-analysis.d.ts +2 -2
- package/dist/governance/rules/failure-analysis.js +1 -1
- package/dist/governance/rules/ledger-replay.d.ts +1 -1
- package/dist/governance/rules/ledger-state.d.ts +1 -1
- package/dist/governance/rules/ledger-state.js +1 -1
- package/dist/governance/rules/ledger.d.ts +2 -2
- package/dist/governance/rules/ledger.js +2 -2
- package/dist/governance/rules/rca.d.ts +1 -1
- package/dist/governance/rules/rca.js +1 -1
- package/dist/governance/rules/settlement.d.ts +2 -2
- package/dist/governance/rules/settlement.js +2 -2
- package/dist/governance/rules/suspicion.d.ts +1 -1
- package/dist/governance/store/artifacts.d.ts +1 -1
- package/dist/governance/store/artifacts.js +1 -1
- package/dist/governance/store/events-log.d.ts +1 -1
- package/dist/governance/store/run-store.d.ts +1 -1
- package/dist/governance/store/run-store.js +1 -1
- package/dist/governance/store/scoreboard-export.d.ts +1 -1
- package/dist/governance/tools/child-tools.d.ts +1 -1
- package/dist/governance/tools/guard.d.ts +1 -1
- package/dist/governance/tools/guard.js +1 -1
- package/dist/governance/tools/inspector-tools.d.ts +2 -2
- package/dist/governance/tools/inspector-tools.js +2 -2
- package/dist/governance/tools/lead-tools.d.ts +1 -1
- package/dist/governance/tools/lead-tools.js +1 -1
- package/dist/governance/tools/normalize-util.js +1 -1
- package/dist/governance/tools/scan-incomplete.js +1 -1
- package/dist/governance/tools/shared-tools.d.ts +1 -1
- package/dist/governance/tools/shared-tools.js +1 -1
- package/dist/governance/tools/submit-normalizers.d.ts +1 -1
- package/dist/governance/tools/submit-normalizers.js +1 -1
- package/dist/governance/tools/submit-tools.d.ts +1 -1
- package/dist/logging/cli-commands.js +1 -1
- package/dist/logging/install.d.ts +1 -1
- package/dist/logging/install.js +3 -3
- package/dist/logging/logger.d.ts +2 -2
- package/dist/logging/logger.js +31 -2
- package/dist/proc/kill-tree.js +1 -1
- package/dist/proc/log-mirror.js +1 -1
- package/dist/proc/log-ring.js +2 -2
- package/dist/proc/notices.d.ts +1 -1
- package/dist/proc/notices.js +2 -2
- package/dist/proc/prompt.d.ts +1 -1
- package/dist/proc/prompt.js +8 -5
- package/dist/proc/readiness.js +1 -1
- package/dist/proc/supervisor.d.ts +1 -1
- package/dist/proc/supervisor.js +10 -4
- package/dist/proc/wait-plan.d.ts +39 -0
- package/dist/proc/wait-plan.js +77 -0
- package/dist/proc/wait.d.ts +37 -4
- package/dist/proc/wait.js +68 -5
- package/dist/prompts/command.d.ts +1 -1
- package/dist/prompts/command.js +1 -1
- package/dist/prompts/normalize.d.ts +1 -1
- package/dist/prompts/normalize.js +1 -1
- package/dist/prompts/resolve.d.ts +1 -1
- package/dist/prompts/store.d.ts +2 -12
- package/dist/prompts/store.js +6 -60
- package/dist/session/checkpoint.d.ts +2 -2
- package/dist/session/checkpoint.js +2 -0
- package/dist/session/clear-archive.d.ts +2 -2
- package/dist/session/persist.d.ts +2 -2
- package/dist/session/persist.js +20 -3
- package/dist/session/startup-session.d.ts +2 -2
- package/dist/session/validate-session.js +6 -3
- package/dist/skills/service.d.ts +2 -2
- package/dist/team/bus.d.ts +1 -1
- package/dist/team/bus.js +1 -1
- package/dist/team/child-reviewer.d.ts +2 -2
- package/dist/team/child-reviewer.js +1 -1
- package/dist/team/comm-tools.js +1 -1
- package/dist/team/dispatch-gate.js +1 -1
- package/dist/team/forced-dispatch.js +1 -1
- package/dist/team/forced-mode.d.ts +1 -1
- package/dist/team/forced-prompt.d.ts +1 -1
- package/dist/team/forced-prompt.js +1 -1
- package/dist/team/normalize.d.ts +1 -1
- package/dist/team/normalize.js +1 -1
- package/dist/team/overseer.d.ts +3 -3
- package/dist/team/overseer.js +3 -3
- package/dist/team/prompt.d.ts +1 -1
- package/dist/team/prompt.js +1 -1
- package/dist/team/report.d.ts +2 -2
- package/dist/team/report.js +2 -2
- package/dist/team/retry.d.ts +1 -1
- package/dist/team/retry.js +1 -1
- package/dist/team/runtime.d.ts +4 -4
- package/dist/team/runtime.js +2 -2
- package/dist/team/settled.d.ts +2 -2
- package/dist/team/subagent.d.ts +4 -4
- package/dist/team/subagent.js +5 -5
- package/dist/team/task-tool.d.ts +1 -1
- package/dist/team/task-tool.js +1 -1
- package/dist/todo/normalize.d.ts +1 -1
- package/dist/todo/normalize.js +1 -1
- package/dist/todo/prompt.d.ts +1 -1
- package/dist/todo/prompt.js +1 -1
- package/dist/todo/store.d.ts +1 -1
- package/dist/todo/store.js +2 -2
- package/dist/todo/todo-tool.d.ts +1 -1
- package/dist/todo/todo-tool.js +2 -2
- package/dist/tools/bash-tool.d.ts +1 -1
- package/dist/tools/bash-tool.js +2 -2
- package/dist/tools/diff.d.ts +1 -1
- package/dist/tools/diff.js +1 -1
- package/dist/tools/file-change-store.d.ts +1 -1
- package/dist/tools/fs-tools.d.ts +2 -2
- package/dist/tools/fs-tools.js +1 -1
- package/dist/tools/index.d.ts +3 -3
- package/dist/tools/index.js +1 -1
- package/dist/tools/job-tools.d.ts +14 -3
- package/dist/tools/job-tools.js +158 -35
- package/dist/tools/plan-tools.d.ts +1 -1
- package/dist/tools/plan-tools.js +1 -1
- package/dist/tools/proc-tools.d.ts +1 -1
- package/dist/tools/proc-tools.js +2 -2
- package/dist/update/classify-failure.d.ts +1 -1
- package/dist/update/install-lock.js +1 -1
- package/dist/update/install-source.d.ts +1 -1
- package/dist/update/installer.js +2 -2
- package/dist/update/npm-view.d.ts +1 -1
- package/dist/update/npm-view.js +1 -1
- package/dist/update/registry.d.ts +1 -1
- package/dist/update/registry.js +1 -1
- package/dist/update/service.d.ts +2 -2
- package/dist/update/service.js +2 -2
- package/package.json +7 -7
- package/dist/agent/agent-mode.d.ts +0 -108
- package/dist/agent/agent-mode.js +0 -121
- package/dist/agent/entry-limits.d.ts +0 -65
- package/dist/agent/entry-limits.js +0 -133
- package/dist/agent/governance-view.d.ts +0 -40
- package/dist/agent/governance-view.js +0 -40
- package/dist/agent/invocation-card.d.ts +0 -77
- package/dist/agent/invocation-card.js +0 -169
- package/dist/agent/model-probe-limits.d.ts +0 -39
- package/dist/agent/model-probe-limits.js +0 -25
- package/dist/agent/model-probe.d.ts +0 -104
- package/dist/agent/model-probe.js +0 -391
- package/dist/agent/queued-messages.d.ts +0 -23
- package/dist/agent/queued-messages.js +0 -49
- package/dist/agent/reducer.d.ts +0 -837
- package/dist/agent/reducer.js +0 -1617
- package/dist/agent/retry-view.d.ts +0 -68
- package/dist/agent/retry-view.js +0 -95
- package/dist/agent/usage.d.ts +0 -47
- package/dist/agent/usage.js +0 -84
- package/dist/compaction/limits.d.ts +0 -61
- package/dist/compaction/limits.js +0 -64
- package/dist/compaction/meter.d.ts +0 -276
- package/dist/compaction/meter.js +0 -512
- package/dist/compaction/pressure.d.ts +0 -163
- package/dist/compaction/pressure.js +0 -199
- package/dist/compaction/reason-text.d.ts +0 -36
- package/dist/compaction/reason-text.js +0 -78
- package/dist/compaction/types.d.ts +0 -360
- package/dist/compaction/types.js +0 -22
- package/dist/config/governance-config.d.ts +0 -125
- package/dist/config/governance-config.js +0 -164
- package/dist/config/kit-resolution.d.ts +0 -93
- package/dist/config/kit-resolution.js +0 -226
- package/dist/config/model-kits.d.ts +0 -225
- package/dist/config/model-kits.js +0 -302
- package/dist/config/model-profile-resolution.d.ts +0 -28
- package/dist/config/model-profile-resolution.js +0 -88
- package/dist/config/model-profiles.d.ts +0 -103
- package/dist/config/model-profiles.js +0 -188
- package/dist/config/schema.d.ts +0 -1645
- package/dist/config/schema.js +0 -1377
- package/dist/fast/limits.d.ts +0 -152
- package/dist/fast/limits.js +0 -152
- package/dist/fast/resolve.d.ts +0 -44
- package/dist/fast/resolve.js +0 -107
- package/dist/fast/task-summary-types.d.ts +0 -66
- package/dist/fast/task-summary-types.js +0 -17
- package/dist/fast/types.d.ts +0 -141
- package/dist/fast/types.js +0 -14
- package/dist/governance/governed-dispatch.d.ts +0 -19
- package/dist/governance/governed-dispatch.js +0 -17
- package/dist/governance/limits.d.ts +0 -107
- package/dist/governance/limits.js +0 -131
- package/dist/governance/posture.d.ts +0 -35
- package/dist/governance/posture.js +0 -59
- package/dist/governance/rules/events-table.d.ts +0 -46
- package/dist/governance/rules/events-table.js +0 -94
- package/dist/governance/types.d.ts +0 -661
- package/dist/governance/types.js +0 -27
- package/dist/input/control-sequences.d.ts +0 -71
- package/dist/input/control-sequences.js +0 -222
- package/dist/input/csiu-keys.d.ts +0 -66
- package/dist/input/csiu-keys.js +0 -181
- package/dist/input/cursor-report.d.ts +0 -61
- package/dist/input/cursor-report.js +0 -97
- package/dist/input/enter-sequences.d.ts +0 -64
- package/dist/input/enter-sequences.js +0 -153
- package/dist/input/interrupt-gesture.d.ts +0 -18
- package/dist/input/interrupt-gesture.js +0 -19
- package/dist/input/keyboard-enhancement.d.ts +0 -42
- package/dist/input/keyboard-enhancement.js +0 -65
- package/dist/input/keymap.d.ts +0 -20
- package/dist/input/keymap.js +0 -99
- package/dist/input/limits.d.ts +0 -118
- package/dist/input/limits.js +0 -109
- package/dist/input/mouse-events.d.ts +0 -87
- package/dist/input/mouse-events.js +0 -212
- package/dist/input/paste-parse.d.ts +0 -83
- package/dist/input/paste-parse.js +0 -107
- package/dist/input/pointer-router.d.ts +0 -11
- package/dist/input/pointer-router.js +0 -14
- package/dist/input/stdin-filter.d.ts +0 -112
- package/dist/input/stdin-filter.js +0 -657
- package/dist/input/win32-input-mode.d.ts +0 -61
- package/dist/input/win32-input-mode.js +0 -269
- package/dist/logging/levels.d.ts +0 -40
- package/dist/logging/levels.js +0 -59
- package/dist/logging/secret-registry.d.ts +0 -32
- package/dist/logging/secret-registry.js +0 -73
- package/dist/proc/limits.d.ts +0 -200
- package/dist/proc/limits.js +0 -207
- package/dist/proc/progress.d.ts +0 -40
- package/dist/proc/progress.js +0 -135
- package/dist/proc/types.d.ts +0 -263
- package/dist/proc/types.js +0 -15
- package/dist/prompts/copy.d.ts +0 -89
- package/dist/prompts/copy.js +0 -131
- package/dist/prompts/fill.d.ts +0 -51
- package/dist/prompts/fill.js +0 -46
- package/dist/prompts/limits.d.ts +0 -53
- package/dist/prompts/limits.js +0 -53
- package/dist/prompts/search.d.ts +0 -58
- package/dist/prompts/search.js +0 -146
- package/dist/prompts/types.d.ts +0 -204
- package/dist/prompts/types.js +0 -13
- package/dist/team/activity.d.ts +0 -67
- package/dist/team/activity.js +0 -130
- package/dist/team/limits.d.ts +0 -308
- package/dist/team/limits.js +0 -330
- package/dist/team/model.d.ts +0 -104
- package/dist/team/model.js +0 -150
- package/dist/team/panel-rows.d.ts +0 -48
- package/dist/team/panel-rows.js +0 -75
- package/dist/team/timeline.d.ts +0 -74
- package/dist/team/timeline.js +0 -101
- package/dist/team/types.d.ts +0 -354
- package/dist/team/types.js +0 -13
- package/dist/todo/acceptance.d.ts +0 -120
- package/dist/todo/acceptance.js +0 -399
- package/dist/todo/follow-through.d.ts +0 -138
- package/dist/todo/follow-through.js +0 -248
- package/dist/todo/limits.d.ts +0 -152
- package/dist/todo/limits.js +0 -152
- package/dist/todo/panel-rows.d.ts +0 -45
- package/dist/todo/panel-rows.js +0 -70
- package/dist/todo/plan-sections.d.ts +0 -60
- package/dist/todo/plan-sections.js +0 -108
- package/dist/todo/row-window.d.ts +0 -51
- package/dist/todo/row-window.js +0 -107
- package/dist/todo/types.d.ts +0 -124
- package/dist/todo/types.js +0 -12
- package/dist/tools/human-input.d.ts +0 -212
- package/dist/tools/human-input.js +0 -265
- package/dist/tools/patch.d.ts +0 -115
- package/dist/tools/patch.js +0 -453
- package/dist/tools/terminal-output.d.ts +0 -115
- package/dist/tools/terminal-output.js +0 -201
- package/dist/tools/tool-output-store.d.ts +0 -68
- package/dist/tools/tool-output-store.js +0 -102
- package/dist/ui/ActivityLine.d.ts +0 -26
- package/dist/ui/ActivityLine.js +0 -48
- package/dist/ui/AutocompletePopup.d.ts +0 -23
- package/dist/ui/AutocompletePopup.js +0 -17
- package/dist/ui/BottomStatusRow.d.ts +0 -10
- package/dist/ui/BottomStatusRow.js +0 -9
- package/dist/ui/Composer.d.ts +0 -115
- package/dist/ui/Composer.js +0 -64
- package/dist/ui/GovernancePanel.d.ts +0 -50
- package/dist/ui/GovernancePanel.js +0 -77
- package/dist/ui/GovernanceRun.d.ts +0 -18
- package/dist/ui/GovernanceRun.js +0 -11
- package/dist/ui/Header.d.ts +0 -48
- package/dist/ui/Header.js +0 -27
- package/dist/ui/Logo.d.ts +0 -32
- package/dist/ui/Logo.js +0 -65
- package/dist/ui/Markdown.d.ts +0 -29
- package/dist/ui/Markdown.js +0 -116
- package/dist/ui/PromptCaret.d.ts +0 -11
- package/dist/ui/PromptCaret.js +0 -31
- package/dist/ui/PromptInput.d.ts +0 -192
- package/dist/ui/PromptInput.js +0 -689
- package/dist/ui/QueuePanel.d.ts +0 -8
- package/dist/ui/QueuePanel.js +0 -9
- package/dist/ui/QueueStatusRow.d.ts +0 -24
- package/dist/ui/QueueStatusRow.js +0 -51
- package/dist/ui/ScrollbackShell.d.ts +0 -132
- package/dist/ui/ScrollbackShell.js +0 -26
- package/dist/ui/SessionOpener.d.ts +0 -30
- package/dist/ui/SessionOpener.js +0 -12
- package/dist/ui/StatusBar.d.ts +0 -129
- package/dist/ui/StatusBar.js +0 -61
- package/dist/ui/TeamPanel.d.ts +0 -76
- package/dist/ui/TeamPanel.js +0 -103
- package/dist/ui/ToastStack.d.ts +0 -8
- package/dist/ui/ToastStack.js +0 -31
- package/dist/ui/TodoPanel.d.ts +0 -52
- package/dist/ui/TodoPanel.js +0 -214
- package/dist/ui/Transcript.d.ts +0 -105
- package/dist/ui/Transcript.js +0 -251
- package/dist/ui/UpdateLine.d.ts +0 -44
- package/dist/ui/UpdateLine.js +0 -129
- package/dist/ui/activity-phrases.d.ts +0 -33
- package/dist/ui/activity-phrases.js +0 -50
- package/dist/ui/capabilities.d.ts +0 -27
- package/dist/ui/capabilities.js +0 -65
- package/dist/ui/clipboard-task.d.ts +0 -29
- package/dist/ui/clipboard-task.js +0 -66
- package/dist/ui/clipboard.d.ts +0 -31
- package/dist/ui/clipboard.js +0 -157
- package/dist/ui/color-runtime.d.ts +0 -5
- package/dist/ui/color-runtime.js +0 -29
- package/dist/ui/composer-input.d.ts +0 -38
- package/dist/ui/composer-input.js +0 -79
- package/dist/ui/composer-limits.d.ts +0 -30
- package/dist/ui/composer-limits.js +0 -45
- package/dist/ui/composer-rows.d.ts +0 -73
- package/dist/ui/composer-rows.js +0 -129
- package/dist/ui/console-bridge.d.ts +0 -19
- package/dist/ui/console-bridge.js +0 -52
- package/dist/ui/density.d.ts +0 -26
- package/dist/ui/density.js +0 -34
- package/dist/ui/display-tab.d.ts +0 -51
- package/dist/ui/display-tab.js +0 -82
- package/dist/ui/editor-navigation.d.ts +0 -55
- package/dist/ui/editor-navigation.js +0 -96
- package/dist/ui/editor-reducer.d.ts +0 -108
- package/dist/ui/editor-reducer.js +0 -187
- package/dist/ui/enter-frames.d.ts +0 -47
- package/dist/ui/enter-frames.js +0 -117
- package/dist/ui/entries/AssistantEntry.d.ts +0 -37
- package/dist/ui/entries/AssistantEntry.js +0 -43
- package/dist/ui/entries/CompactionCard.d.ts +0 -88
- package/dist/ui/entries/CompactionCard.js +0 -222
- package/dist/ui/entries/DiffView.d.ts +0 -61
- package/dist/ui/entries/DiffView.js +0 -103
- package/dist/ui/entries/EntryFrame.d.ts +0 -23
- package/dist/ui/entries/EntryFrame.js +0 -6
- package/dist/ui/entries/FastCard.d.ts +0 -53
- package/dist/ui/entries/FastCard.js +0 -105
- package/dist/ui/entries/GovernanceCard.d.ts +0 -30
- package/dist/ui/entries/GovernanceCard.js +0 -32
- package/dist/ui/entries/InvocationCard.d.ts +0 -20
- package/dist/ui/entries/InvocationCard.js +0 -32
- package/dist/ui/entries/QueuedEntry.d.ts +0 -27
- package/dist/ui/entries/QueuedEntry.js +0 -33
- package/dist/ui/entries/RetryCard.d.ts +0 -56
- package/dist/ui/entries/RetryCard.js +0 -60
- package/dist/ui/entries/ServiceCard.d.ts +0 -82
- package/dist/ui/entries/ServiceCard.js +0 -151
- package/dist/ui/entries/TeamCard.d.ts +0 -55
- package/dist/ui/entries/TeamCard.js +0 -94
- package/dist/ui/entries/TodoCard.d.ts +0 -54
- package/dist/ui/entries/TodoCard.js +0 -98
- package/dist/ui/entries/ToolCard.d.ts +0 -81
- package/dist/ui/entries/ToolCard.js +0 -160
- package/dist/ui/entries/ToolPreview.d.ts +0 -59
- package/dist/ui/entries/ToolPreview.js +0 -208
- package/dist/ui/entries/UserEntry.d.ts +0 -36
- package/dist/ui/entries/UserEntry.js +0 -57
- package/dist/ui/exit-snapshot.d.ts +0 -43
- package/dist/ui/exit-snapshot.js +0 -26
- package/dist/ui/frame-differ.d.ts +0 -166
- package/dist/ui/frame-differ.js +0 -354
- package/dist/ui/frame-observer.d.ts +0 -17
- package/dist/ui/frame-observer.js +0 -94
- package/dist/ui/frame-parser.d.ts +0 -7
- package/dist/ui/frame-parser.js +0 -18
- package/dist/ui/gauge.d.ts +0 -39
- package/dist/ui/gauge.js +0 -55
- package/dist/ui/glyphs.d.ts +0 -178
- package/dist/ui/glyphs.js +0 -165
- package/dist/ui/governance-copy.d.ts +0 -69
- package/dist/ui/governance-copy.js +0 -104
- package/dist/ui/governance-status.d.ts +0 -145
- package/dist/ui/governance-status.js +0 -326
- package/dist/ui/gradient.d.ts +0 -11
- package/dist/ui/gradient.js +0 -50
- package/dist/ui/ink-runtime.d.ts +0 -4
- package/dist/ui/ink-runtime.js +0 -51
- package/dist/ui/interaction-copy.d.ts +0 -82
- package/dist/ui/interaction-copy.js +0 -38
- package/dist/ui/interaction-hints.d.ts +0 -44
- package/dist/ui/interaction-hints.js +0 -97
- package/dist/ui/layout/AppShell.d.ts +0 -17
- package/dist/ui/layout/AppShell.js +0 -6
- package/dist/ui/layout/Gutter.d.ts +0 -67
- package/dist/ui/layout/Gutter.js +0 -42
- package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
- package/dist/ui/layout/MeasuredEntry.js +0 -30
- package/dist/ui/layout/OverlayFrame.d.ts +0 -73
- package/dist/ui/layout/OverlayFrame.js +0 -110
- package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
- package/dist/ui/layout/ScrollIndicator.js +0 -22
- package/dist/ui/layout/ScrollViewport.d.ts +0 -40
- package/dist/ui/layout/ScrollViewport.js +0 -222
- package/dist/ui/layout/agents-board.d.ts +0 -102
- package/dist/ui/layout/agents-board.js +0 -389
- package/dist/ui/layout/autocomplete.d.ts +0 -18
- package/dist/ui/layout/autocomplete.js +0 -26
- package/dist/ui/layout/budget.d.ts +0 -43
- package/dist/ui/layout/budget.js +0 -52
- package/dist/ui/layout/cells.d.ts +0 -61
- package/dist/ui/layout/cells.js +0 -156
- package/dist/ui/layout/document-layout.d.ts +0 -13
- package/dist/ui/layout/document-layout.js +0 -10
- package/dist/ui/layout/follow-state.d.ts +0 -138
- package/dist/ui/layout/follow-state.js +0 -148
- package/dist/ui/layout/frame.d.ts +0 -36
- package/dist/ui/layout/frame.js +0 -39
- package/dist/ui/layout/governance-board.d.ts +0 -121
- package/dist/ui/layout/governance-board.js +0 -382
- package/dist/ui/layout/governance-card.d.ts +0 -53
- package/dist/ui/layout/governance-card.js +0 -134
- package/dist/ui/layout/governance-chip.d.ts +0 -38
- package/dist/ui/layout/governance-chip.js +0 -64
- package/dist/ui/layout/governance-panel.d.ts +0 -85
- package/dist/ui/layout/governance-panel.js +0 -358
- package/dist/ui/layout/governance-roster.d.ts +0 -65
- package/dist/ui/layout/governance-roster.js +0 -275
- package/dist/ui/layout/header-hints.d.ts +0 -90
- package/dist/ui/layout/header-hints.js +0 -110
- package/dist/ui/layout/header-left.d.ts +0 -115
- package/dist/ui/layout/header-left.js +0 -206
- package/dist/ui/layout/invocation-card.d.ts +0 -41
- package/dist/ui/layout/invocation-card.js +0 -91
- package/dist/ui/layout/kit-chip.d.ts +0 -50
- package/dist/ui/layout/kit-chip.js +0 -81
- package/dist/ui/layout/overlay-window.d.ts +0 -43
- package/dist/ui/layout/overlay-window.js +0 -51
- package/dist/ui/layout/queue-layout.d.ts +0 -19
- package/dist/ui/layout/queue-layout.js +0 -26
- package/dist/ui/layout/rail.d.ts +0 -7
- package/dist/ui/layout/rail.js +0 -16
- package/dist/ui/layout/scroll-indicator.d.ts +0 -27
- package/dist/ui/layout/scroll-indicator.js +0 -36
- package/dist/ui/layout/scroll.d.ts +0 -37
- package/dist/ui/layout/scroll.js +0 -99
- package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
- package/dist/ui/layout/scrollbar-geometry.js +0 -13
- package/dist/ui/layout/session-chip.d.ts +0 -52
- package/dist/ui/layout/session-chip.js +0 -64
- package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
- package/dist/ui/layout/shortcut-panel-layout.js +0 -321
- package/dist/ui/layout/status-detail-layout.d.ts +0 -9
- package/dist/ui/layout/status-detail-layout.js +0 -79
- package/dist/ui/layout/status-layout.d.ts +0 -139
- package/dist/ui/layout/status-layout.js +0 -253
- package/dist/ui/layout/task-summary-cell.d.ts +0 -61
- package/dist/ui/layout/task-summary-cell.js +0 -65
- package/dist/ui/layout/team-panel.d.ts +0 -18
- package/dist/ui/layout/team-panel.js +0 -25
- package/dist/ui/layout/team-row.d.ts +0 -139
- package/dist/ui/layout/team-row.js +0 -246
- package/dist/ui/layout/todo-layout.d.ts +0 -62
- package/dist/ui/layout/todo-layout.js +0 -102
- package/dist/ui/layout/useTerminalSize.d.ts +0 -13
- package/dist/ui/layout/useTerminalSize.js +0 -50
- package/dist/ui/layout/viewport-geometry.d.ts +0 -29
- package/dist/ui/layout/viewport-geometry.js +0 -28
- package/dist/ui/layout/virtual-window.d.ts +0 -112
- package/dist/ui/layout/virtual-window.js +0 -488
- package/dist/ui/layout/wrap-rows.d.ts +0 -26
- package/dist/ui/layout/wrap-rows.js +0 -88
- package/dist/ui/live-clamp.d.ts +0 -14
- package/dist/ui/live-clamp.js +0 -46
- package/dist/ui/markdown-blocks.d.ts +0 -107
- package/dist/ui/markdown-blocks.js +0 -240
- package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
- package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
- package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
- package/dist/ui/overlays/ConfirmDialog.js +0 -44
- package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
- package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
- package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
- package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
- package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
- package/dist/ui/overlays/HelpOverlay.js +0 -232
- package/dist/ui/overlays/KitEditor.d.ts +0 -23
- package/dist/ui/overlays/KitEditor.js +0 -101
- package/dist/ui/overlays/KitManager.d.ts +0 -23
- package/dist/ui/overlays/KitManager.js +0 -104
- package/dist/ui/overlays/KitPicker.d.ts +0 -49
- package/dist/ui/overlays/KitPicker.js +0 -58
- package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
- package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
- package/dist/ui/overlays/ModelPicker.d.ts +0 -26
- package/dist/ui/overlays/ModelPicker.js +0 -63
- package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
- package/dist/ui/overlays/ModelProfileEditor.js +0 -168
- package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
- package/dist/ui/overlays/ModelProfilePicker.js +0 -231
- package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
- package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
- package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
- package/dist/ui/overlays/PromptEditorPage.js +0 -227
- package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
- package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
- package/dist/ui/overlays/PromptPicker.d.ts +0 -36
- package/dist/ui/overlays/PromptPicker.js +0 -129
- package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
- package/dist/ui/overlays/PromptTextArea.js +0 -141
- package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
- package/dist/ui/overlays/QuestionOverlay.js +0 -258
- package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
- package/dist/ui/overlays/QueueOverlay.js +0 -79
- package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
- package/dist/ui/overlays/SettingsScreen.js +0 -1037
- package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
- package/dist/ui/overlays/ShortcutPanel.js +0 -106
- package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
- package/dist/ui/overlays/TeamFanoutPage.js +0 -90
- package/dist/ui/overlays/governance-settings.d.ts +0 -79
- package/dist/ui/overlays/governance-settings.js +0 -140
- package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
- package/dist/ui/overlays/kit-picker-state.js +0 -136
- package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
- package/dist/ui/overlays/kit-settings-state.js +0 -268
- package/dist/ui/overlays/model-probe-view.d.ts +0 -128
- package/dist/ui/overlays/model-probe-view.js +0 -225
- package/dist/ui/overlays/model-profile-state.d.ts +0 -177
- package/dist/ui/overlays/model-profile-state.js +0 -301
- package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
- package/dist/ui/overlays/prompt-library-state.js +0 -335
- package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
- package/dist/ui/overlays/prompt-picker-state.js +0 -98
- package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
- package/dist/ui/overlays/team-fanout-state.js +0 -155
- package/dist/ui/overlays/use-model-probe.d.ts +0 -30
- package/dist/ui/overlays/use-model-probe.js +0 -109
- package/dist/ui/palettes.d.ts +0 -112
- package/dist/ui/palettes.js +0 -130
- package/dist/ui/paste-frames.d.ts +0 -91
- package/dist/ui/paste-frames.js +0 -117
- package/dist/ui/paste-tokens.d.ts +0 -90
- package/dist/ui/paste-tokens.js +0 -147
- package/dist/ui/render-cache.d.ts +0 -81
- package/dist/ui/render-cache.js +0 -196
- package/dist/ui/render-governor.d.ts +0 -54
- package/dist/ui/render-governor.js +0 -78
- package/dist/ui/run-metrics.d.ts +0 -23
- package/dist/ui/run-metrics.js +0 -27
- package/dist/ui/run-status-row.d.ts +0 -61
- package/dist/ui/run-status-row.js +0 -54
- package/dist/ui/screen.d.ts +0 -107
- package/dist/ui/screen.js +0 -234
- package/dist/ui/scrollback/LiveTail.d.ts +0 -115
- package/dist/ui/scrollback/LiveTail.js +0 -48
- package/dist/ui/scrollback/band.d.ts +0 -114
- package/dist/ui/scrollback/band.js +0 -143
- package/dist/ui/scrollback/budget.d.ts +0 -90
- package/dist/ui/scrollback/budget.js +0 -100
- package/dist/ui/scrollback/canvas.d.ts +0 -100
- package/dist/ui/scrollback/canvas.js +0 -114
- package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
- package/dist/ui/scrollback/cursor-probe.js +0 -133
- package/dist/ui/scrollback/drain.d.ts +0 -32
- package/dist/ui/scrollback/drain.js +0 -64
- package/dist/ui/scrollback/exit-summary.d.ts +0 -23
- package/dist/ui/scrollback/exit-summary.js +0 -25
- package/dist/ui/scrollback/limits.d.ts +0 -98
- package/dist/ui/scrollback/limits.js +0 -98
- package/dist/ui/scrollback/live-preview.d.ts +0 -34
- package/dist/ui/scrollback/live-preview.js +0 -118
- package/dist/ui/scrollback/overflow-print.d.ts +0 -108
- package/dist/ui/scrollback/overflow-print.js +0 -120
- package/dist/ui/scrollback/renderer.d.ts +0 -48
- package/dist/ui/scrollback/renderer.js +0 -186
- package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
- package/dist/ui/scrollback/scrollback-writer.js +0 -648
- package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
- package/dist/ui/scrollback/settled-boundary.js +0 -109
- package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
- package/dist/ui/scrollback/tail-anchor.js +0 -79
- package/dist/ui/scrollback/tail-window.d.ts +0 -73
- package/dist/ui/scrollback/tail-window.js +0 -89
- package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
- package/dist/ui/scrollback/use-scrollback-view.js +0 -601
- package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
- package/dist/ui/scrollback/writer-shapes.js +0 -159
- package/dist/ui/scrollbar-controller.d.ts +0 -30
- package/dist/ui/scrollbar-controller.js +0 -124
- package/dist/ui/selection/highlight.d.ts +0 -39
- package/dist/ui/selection/highlight.js +0 -64
- package/dist/ui/selection/screen-mirror.d.ts +0 -24
- package/dist/ui/selection/screen-mirror.js +0 -35
- package/dist/ui/selection/selection-controller.d.ts +0 -104
- package/dist/ui/selection/selection-controller.js +0 -372
- package/dist/ui/selection/selection.d.ts +0 -90
- package/dist/ui/selection/selection.js +0 -223
- package/dist/ui/shortcuts.d.ts +0 -81
- package/dist/ui/shortcuts.js +0 -221
- package/dist/ui/status-feedback.d.ts +0 -35
- package/dist/ui/status-feedback.js +0 -38
- package/dist/ui/stdout-frame-writer.d.ts +0 -74
- package/dist/ui/stdout-frame-writer.js +0 -155
- package/dist/ui/team-status.d.ts +0 -166
- package/dist/ui/team-status.js +0 -252
- package/dist/ui/terminal-plan.d.ts +0 -52
- package/dist/ui/terminal-plan.js +0 -49
- package/dist/ui/theme.d.ts +0 -96
- package/dist/ui/theme.js +0 -130
- package/dist/ui/transcript-text.d.ts +0 -41
- package/dist/ui/transcript-text.js +0 -282
- package/dist/ui/use-height-store.d.ts +0 -31
- package/dist/ui/use-height-store.js +0 -76
- package/dist/ui/use-render-governor.d.ts +0 -39
- package/dist/ui/use-render-governor.js +0 -57
- package/dist/ui/use-wheel-routing.d.ts +0 -57
- package/dist/ui/use-wheel-routing.js +0 -152
- package/dist/ui/win-vt-force.d.ts +0 -136
- package/dist/ui/win-vt-force.js +0 -237
- package/dist/ui/win-vt-input.d.ts +0 -57
- package/dist/ui/win-vt-input.js +0 -62
- package/dist/update/limits.d.ts +0 -111
- package/dist/update/limits.js +0 -111
- package/dist/update/semver.d.ts +0 -89
- package/dist/update/semver.js +0 -295
- package/dist/update/types.d.ts +0 -169
- package/dist/update/types.js +0 -68
- /package/dist/{ui → app}/session-bridge.d.ts +0 -0
- /package/dist/{ui → app}/session-bridge.js +0 -0
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* CompactionCard — one context compaction in the transcript
|
|
4
|
-
* (context-auto-compaction §6.3).
|
|
5
|
-
*
|
|
6
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`, INCLUDING THE ARROW. The mock
|
|
7
|
-
* in the design shows `112 -> 9 messages`; that arrow is `glyphs.arrowRight`, the
|
|
8
|
-
* one `StatusBar` already uses, not a literal — `ui/` is inside
|
|
9
|
-
* `glyphs.test.ts::inScope`, so a literal here fails the scan (P2-7).
|
|
10
|
-
*
|
|
11
|
-
* EXPANDABLE, UNLIKE `FastCard`. A critique is already clamped to
|
|
12
|
-
* `fast.reviewMaxChars` before it reaches its card, so there is nothing hidden
|
|
13
|
-
* for Ctrl+O to reveal; a summary is up to `summaryMaxChars` and there genuinely
|
|
14
|
-
* is more to see. That is why `App`'s Ctrl+O predicate had to learn about this
|
|
15
|
-
* kind — without it the card renders a hint that does nothing and expands an
|
|
16
|
-
* older tool card instead (C-15 / P1-8 / AC-21).
|
|
17
|
-
*
|
|
18
|
-
* EVERY STRING DESCRIBES THE HISTORY, NEVER THE SCREEN (§6.4 / P2-9).
|
|
19
|
-
* `/clear screen` empties the transcript view but not `messages`, so this card
|
|
20
|
-
* can legitimately report a message count the visible rows do not add up to.
|
|
21
|
-
* Nothing here says "above" or "earlier in this transcript". `/clear` itself is
|
|
22
|
-
* the conversation boundary now: it drops the history and this card with it.
|
|
23
|
-
*/
|
|
24
|
-
import React from 'react';
|
|
25
|
-
import { Box, Text } from 'ink';
|
|
26
|
-
import Spinner from 'ink-spinner';
|
|
27
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
28
|
-
import { railBorderProps } from '../layout/Gutter.js';
|
|
29
|
-
import { formatDuration, formatTokens } from '../../agent/usage.js';
|
|
30
|
-
import { COMPACTION_LIMITS } from '../../compaction/limits.js';
|
|
31
|
-
import { compactionPhaseLabel, compactionReasonLine } from '../../compaction/reason-text.js';
|
|
32
|
-
/**
|
|
33
|
-
* The card's colour.
|
|
34
|
-
*
|
|
35
|
-
* `truncated` is a WARNING rather than the accent, because it is a real and
|
|
36
|
-
* bounded data loss the user is entitled to notice; `applied: false` is an error
|
|
37
|
-
* because the run is still at the occupancy that triggered it.
|
|
38
|
-
*/
|
|
39
|
-
export function compactionCardColor(props, theme) {
|
|
40
|
-
if (props.live)
|
|
41
|
-
return theme.toolRunning;
|
|
42
|
-
if (!props.applied)
|
|
43
|
-
return theme.toolError;
|
|
44
|
-
if (props.mode === 'truncated' || props.mode === 'relieved')
|
|
45
|
-
return theme.noticeWarn;
|
|
46
|
-
return theme.accent;
|
|
47
|
-
}
|
|
48
|
-
/** The one-line summary of what the compaction did, or why it did not. */
|
|
49
|
-
function headline(props, arrow, dot) {
|
|
50
|
-
const { index, live } = props;
|
|
51
|
-
// The model is `''` when no summarizer resolves (no key for the provider), and
|
|
52
|
-
// the separator has to go with it — a headline ending in a dangling ` - `
|
|
53
|
-
// reads as a rendering fault rather than as the missing model it is.
|
|
54
|
-
if (live) {
|
|
55
|
-
// ELAPSED IN THE SAME POSITION `durationMs` TAKES ONCE SETTLED, so the number
|
|
56
|
-
// does not jump across the line when the card settles. Between second 0 and
|
|
57
|
-
// second 45 this was the only changing information on the card, and there was
|
|
58
|
-
// none.
|
|
59
|
-
const elapsed = props.elapsedMs === undefined ? '' : `${dot}${formatDuration(props.elapsedMs)}`;
|
|
60
|
-
// THE STAGE, NOT JUST "COMPACTING" (never-fires C). Planning and digesting run
|
|
61
|
-
// before any model call, and a user watching a card for twenty seconds cannot
|
|
62
|
-
// tell "thinking hard" from "stuck in a gate" without it.
|
|
63
|
-
const stage = props.phase === undefined ? '' : `${dot}${compactionPhaseLabel(props.phase)}`;
|
|
64
|
-
return props.model
|
|
65
|
-
? `compacting context #${index}${dot}${props.model}${stage}${elapsed}`
|
|
66
|
-
: `compacting context #${index}${stage}${elapsed}`;
|
|
67
|
-
}
|
|
68
|
-
if (!props.applied || props.tokensAfter >= props.tokensBefore) {
|
|
69
|
-
// THE REASON IN WORDS (never-fires C). `digest_budget_exceeded: $.digest` was
|
|
70
|
-
// a code the user could not act on; `compactionReasonLine` renders the same
|
|
71
|
-
// fact as a clause plus, where there is one, the remedy.
|
|
72
|
-
const why = props.reason ? `: ${compactionReasonLine(props.reason)}` : '';
|
|
73
|
-
return `context not compacted #${index}${why}`;
|
|
74
|
-
}
|
|
75
|
-
const messages = `${props.messagesBefore} ${arrow} ${props.messagesAfter} messages`;
|
|
76
|
-
const tokens = `${formatTokens(props.tokensBefore)} ${arrow} ${formatTokens(props.tokensAfter)} tokens`;
|
|
77
|
-
const duration = props.durationMs === undefined ? '' : `${dot}${formatDuration(props.durationMs)}`;
|
|
78
|
-
return `context compacted${dot}${messages}${dot}${tokens}${duration}`;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* The muted second line: how it was done, and with what.
|
|
82
|
-
*
|
|
83
|
-
* THE LIVE BRANCH NAMES THE ESCAPE (§3.6 / E-10). `AgentController.abort()` has
|
|
84
|
-
* always called `this.compaction?.abort()` before `agent.abort()`, so Esc has
|
|
85
|
-
* always cancelled an in-flight summarization - and no surface has ever said so
|
|
86
|
-
* during the forty-five seconds it matters. The hint goes with the model for the
|
|
87
|
-
* same reason the separator does: with no summarizer resolved there is no call to
|
|
88
|
-
* cancel.
|
|
89
|
-
*
|
|
90
|
-
* THE `relieved` BRANCH COMES BEFORE `truncated`, AND IT EXISTS BECAUSE THE
|
|
91
|
-
* `summarized` LINE WOULD OTHERWISE LIE. Relief drops no messages, so the
|
|
92
|
-
* fall-through would render "summarized 0 messages with <model>" for a
|
|
93
|
-
* compaction in which no model was called - in the rare, alarming case the user
|
|
94
|
-
* most needs to read correctly.
|
|
95
|
-
*/
|
|
96
|
-
function detailLine(props) {
|
|
97
|
-
if (props.live) {
|
|
98
|
-
// THE ESCAPE, NOT THE STAGE (never-fires C, as corrected in review): the live
|
|
99
|
-
// headline already carries the stage, and a two-line card that names it twice
|
|
100
|
-
// is the one-fact-one-surface rule this file keeps having to restore. With no
|
|
101
|
-
// model resolved there is no call to cancel, so the whole line goes - the same
|
|
102
|
-
// rule the settled branch applies.
|
|
103
|
-
if (!props.model)
|
|
104
|
-
return '';
|
|
105
|
-
if (props.phase !== undefined)
|
|
106
|
-
return 'esc to cancel';
|
|
107
|
-
return `summarizing with ${props.model} - esc to cancel`;
|
|
108
|
-
}
|
|
109
|
-
if (!props.applied || props.tokensAfter >= props.tokensBefore)
|
|
110
|
-
return 'History preserved.';
|
|
111
|
-
const dropped = Math.max(0, props.messagesBefore - props.messagesAfter);
|
|
112
|
-
if (props.mode === 'relieved') {
|
|
113
|
-
const n = props.tailRelief?.messages ?? 0;
|
|
114
|
-
return `clipped ${n} tool ${n === 1 ? 'result' : 'results'} in the retained turns - nothing could be dropped`;
|
|
115
|
-
}
|
|
116
|
-
if (props.mode === 'truncated') {
|
|
117
|
-
return `dropped ${dropped} messages WITHOUT a summary - summarization failed`;
|
|
118
|
-
}
|
|
119
|
-
const via = props.trigger === 'overflow' ? ' after a context overflow' : '';
|
|
120
|
-
return `summarized ${dropped} messages with ${props.model}${via}`;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* The relaxation disclosure (never-fires B).
|
|
124
|
-
*
|
|
125
|
-
* `planCompaction`'s second pass trades "the last N user turns are verbatim" for
|
|
126
|
-
* "a cut exists at all". That trade must be readable, because the difference
|
|
127
|
-
* between the two compactions is exactly what the user asked for: the tail is the
|
|
128
|
-
* part they care most about keeping word for word.
|
|
129
|
-
*/
|
|
130
|
-
function relaxedLine(props) {
|
|
131
|
-
if (props.live || !props.applied || props.keepRelaxed !== true)
|
|
132
|
-
return '';
|
|
133
|
-
const turns = props.retainedTurns ?? 0;
|
|
134
|
-
const wanted = props.keepRecentTurnsUsed;
|
|
135
|
-
const messages = props.retainedMessages;
|
|
136
|
-
// THE TAIL IS MESSAGES, NOT TURNS (review). The dominant relaxed shape is one
|
|
137
|
-
// prompt plus a hundred tool calls, so `retainedTurns` is 0 while forty messages
|
|
138
|
-
// were kept verbatim: a line reading "kept 0 recent turns" would report a total
|
|
139
|
-
// loss that did not happen. Whenever the count is available it leads, and the
|
|
140
|
-
// turn arithmetic follows as the explanation rather than as the headline.
|
|
141
|
-
if (messages !== undefined && wanted !== undefined) {
|
|
142
|
-
return `kept the last ${messages} messages - ${turns} of the ${wanted} requested turns, ` +
|
|
143
|
-
'since this run had too few user turns';
|
|
144
|
-
}
|
|
145
|
-
if (messages !== undefined)
|
|
146
|
-
return `kept the last ${messages} messages verbatim`;
|
|
147
|
-
return wanted === undefined
|
|
148
|
-
? `kept the last ${turns} turns - this run had too few user turns to keep more`
|
|
149
|
-
: `kept ${turns} of the ${wanted} requested turns - this run had too few user turns`;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* The digest-elision disclosure (never-fires A1).
|
|
153
|
-
*
|
|
154
|
-
* The digest never rejects for length any more; it keeps the first and last
|
|
155
|
-
* entries verbatim and elides the middle. The elided messages cannot be quoted by
|
|
156
|
-
* the summarizer, so the card says so rather than presenting a summary as if it
|
|
157
|
-
* had seen everything.
|
|
158
|
-
*/
|
|
159
|
-
function elidedLine(props) {
|
|
160
|
-
const n = props.elidedMessages ?? 0;
|
|
161
|
-
if (props.live || n <= 0)
|
|
162
|
-
return '';
|
|
163
|
-
return `elided ${n} ${n === 1 ? 'message' : 'messages'} from the summary input - ` +
|
|
164
|
-
'the middle is summarized without them';
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* The relief disclosure, on a settled card that ALSO summarized.
|
|
168
|
-
*
|
|
169
|
-
* A BOUNDED, ANNOUNCED DATA LOSS THE USER IS ENTITLED TO NOTICE, in the same
|
|
170
|
-
* voice §6.4's honesty rules use for `truncated`. Suppressed on the `relieved`
|
|
171
|
-
* card, where `detailLine` has already said it and a second line would be the
|
|
172
|
-
* same sentence twice.
|
|
173
|
-
*/
|
|
174
|
-
function reliefLine(props) {
|
|
175
|
-
if (props.live || !props.applied || !props.tailRelief || props.mode === 'relieved')
|
|
176
|
-
return '';
|
|
177
|
-
const n = props.tailRelief.messages;
|
|
178
|
-
return (`clipped ${n} tool ${n === 1 ? 'result' : 'results'} in the retained turns ` +
|
|
179
|
-
`(${formatTokens(props.tailRelief.charsRemoved)} characters) - ` +
|
|
180
|
-
'the recent turns alone exceeded the window');
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Split the summary into rows.
|
|
184
|
-
*
|
|
185
|
-
* A ROW budget, not a character one: `summaryMaxChars` already bounded the text,
|
|
186
|
-
* and this only decides how much of it the COLLAPSED card shows. Ink wraps the
|
|
187
|
-
* rest.
|
|
188
|
-
*/
|
|
189
|
-
function summaryRows(text, expanded) {
|
|
190
|
-
const lines = text.split('\n').filter((l) => l.trim().length > 0);
|
|
191
|
-
return expanded ? lines : lines.slice(0, COMPACTION_LIMITS.cardTextRows);
|
|
192
|
-
}
|
|
193
|
-
function CompactionCardImpl(props) {
|
|
194
|
-
const { live, summary, expanded, reducedMotion, theme, caps } = props;
|
|
195
|
-
const glyphs = pickGlyphs(caps);
|
|
196
|
-
const color = compactionCardColor(props, theme);
|
|
197
|
-
const dot = ` ${glyphs.midDot} `;
|
|
198
|
-
const head = headline(props, glyphs.arrowRight, dot);
|
|
199
|
-
const detail = detailLine(props);
|
|
200
|
-
const relief = reliefLine(props);
|
|
201
|
-
const relaxed = relaxedLine(props);
|
|
202
|
-
const elided = elidedLine(props);
|
|
203
|
-
const showMemory = props.memoryVersion !== 2 || expanded === true;
|
|
204
|
-
const rows = summary && showMemory ? summaryRows(summary, expanded === true) : [];
|
|
205
|
-
const totalRows = summary ? summary.split('\n').filter((l) => l.trim().length > 0).length : 0;
|
|
206
|
-
const hidden = Math.max(0, totalRows - rows.length);
|
|
207
|
-
// COLOUR TRACKS `live`, MOTION TRACKS `animate` — one headline, two separate
|
|
208
|
-
// decisions, and the split is the one `FastCard` records at length: `App`
|
|
209
|
-
// widens `reducedMotion` to "this frame does not animate here" for the whole of
|
|
210
|
-
// every run, and folding the two together would grey out every live card for
|
|
211
|
-
// the whole run, losing the status colour along with the motion.
|
|
212
|
-
const animate = live && reducedMotion !== true && caps.unicode;
|
|
213
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: theme.accent, bold: true, children: props.trigger === 'manual' ? 'Manual compaction' : props.trigger === 'overflow'
|
|
214
|
-
? 'Overflow: threshold reached' : 'Automatic: threshold reached' }), _jsxs(Text, { color: live ? color : theme.muted, wrap: caps.unicode ? 'truncate' : 'wrap', children: [animate ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { type: "dots" }), ' '] })) : live ? (`${glyphs.spinnerStill} `) : (''), head] })] }), props.memoryVersion === 2 && (_jsxs(Text, { color: theme.muted, children: ["Task memory v2", expanded ? '' : ' (ctrl+o to expand)'] })), detail.length > 0 && (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, children: _jsx(Text, { color: color, wrap: caps.unicode ? 'truncate' : 'wrap', children: detail }) })), relief.length > 0 && (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, children: _jsx(Text, { color: theme.noticeWarn, children: relief }) })), relaxed.length > 0 && (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, children: _jsx(Text, { color: theme.muted, children: relaxed }) })), elided.length > 0 && (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, children: _jsx(Text, { color: theme.muted, children: elided }) })), rows.length > 0 && (_jsxs(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, theme.border), children: [rows.map((line, index) => (_jsx(Text, { color: theme.primary, children: line }, index))), hidden > 0 && (_jsxs(Text, { color: theme.muted, children: [glyphs.railEnd, " +", hidden, " more lines (ctrl+o to expand)"] })), hidden === 0 && expanded === true && totalRows > COMPACTION_LIMITS.cardTextRows && (_jsxs(Text, { color: theme.muted, children: [glyphs.railEnd, " ctrl+o to collapse"] }))] }))] }));
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
|
|
218
|
-
* `mapEntry` already preserves object identity for untouched entries, so the
|
|
219
|
-
* props below are stable references on a settled card, and `theme` / `caps` are
|
|
220
|
-
* `useMemo`d in `App.tsx` (I-L2-1).
|
|
221
|
-
*/
|
|
222
|
-
export const CompactionCard = React.memo(CompactionCardImpl);
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A `FilePatch` as a diff (agent-activity-presentation §3.4): a `+6 -5` summary,
|
|
3
|
-
* then hunk-separated rows with a right-aligned line-number gutter, a `+`/`-`/
|
|
4
|
-
* space sign column and `theme.diff` colors.
|
|
5
|
-
*
|
|
6
|
-
* `wrap="truncate"` ON EVERY ROW IS A CORRECTNESS REQUIREMENT, NOT A TASTE ONE.
|
|
7
|
-
* `estimateEntryRows` computes a diff card's height by COUNTING rows, so a
|
|
8
|
-
* wrapped patch line would occupy two rows while the estimate charged one — an
|
|
9
|
-
* under-estimate, which `virtual-window.ts` names as the unsafe direction. One
|
|
10
|
-
* patch line is one terminal row, always.
|
|
11
|
-
*
|
|
12
|
-
* No new keybinding and no new state: collapse rides on `expandedToolIds` and
|
|
13
|
-
* the existing `Ctrl+O` handler, which targets the MOST RECENT tool card (P2-4).
|
|
14
|
-
*
|
|
15
|
-
* `caps` is deliberately NOT a prop. Every character this component emits is
|
|
16
|
-
* ASCII — `+`, `-`, `@@`, digits — because `+` and `-` are the diff's own
|
|
17
|
-
* vocabulary and `renderUnifiedDiff` already spells them literally. A glyph
|
|
18
|
-
* lookup here would buy nothing and add a memo dependency.
|
|
19
|
-
*/
|
|
20
|
-
import React from 'react';
|
|
21
|
-
import type { Theme } from '../theme.js';
|
|
22
|
-
import type { FilePatch, PatchLine } from '../../tools/patch.js';
|
|
23
|
-
/**
|
|
24
|
-
* Diff rows shown before collapse.
|
|
25
|
-
*
|
|
26
|
-
* Higher than the generic preview's 8 (D-11): a diff's rows are half as tall in
|
|
27
|
-
* information terms, and 8 rows of a 3-context hunk is barely one change.
|
|
28
|
-
* DUPLICATED AS A NUMBER in `virtual-window.ts`, matching what
|
|
29
|
-
* `TOOL_COLLAPSED_LINES` already does and the comment that justifies it.
|
|
30
|
-
*/
|
|
31
|
-
export declare const DIFF_COLLAPSED_LINES = 12;
|
|
32
|
-
export interface DiffViewProps {
|
|
33
|
-
patch: FilePatch;
|
|
34
|
-
expanded?: boolean;
|
|
35
|
-
theme: Theme;
|
|
36
|
-
}
|
|
37
|
-
/** One rendered row: a patch line, or the `@@` separator between two hunks. */
|
|
38
|
-
interface DiffRow {
|
|
39
|
-
kind: PatchLine['kind'] | 'meta';
|
|
40
|
-
/** The gutter number, or `undefined` for a separator and the newline note. */
|
|
41
|
-
num?: number;
|
|
42
|
-
text: string;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Flatten the hunks into rows, inserting one `@@` separator BETWEEN hunks and
|
|
46
|
-
* none before the first.
|
|
47
|
-
*
|
|
48
|
-
* Exported for `diff-view.test.tsx`, and because the row count it produces is
|
|
49
|
-
* the number `estimateEntryRows` reproduces arithmetically — the two must not
|
|
50
|
-
* disagree.
|
|
51
|
-
*/
|
|
52
|
-
export declare function diffRows(patch: FilePatch): DiffRow[];
|
|
53
|
-
declare function DiffViewImpl({ patch, expanded, theme, }: DiffViewProps): React.ReactElement;
|
|
54
|
-
/**
|
|
55
|
-
* `React.memo` with the DEFAULT comparator, matching `ToolCard`'s boundary.
|
|
56
|
-
* `patch` qualifies as a prop only because the reducer writes it ONCE at
|
|
57
|
-
* `toolExecEnd` and never rebuilds it (P2-9); `theme` is `useMemo`d in `App.tsx`
|
|
58
|
-
* (I-L2-1).
|
|
59
|
-
*/
|
|
60
|
-
export declare const DiffView: React.MemoExoticComponent<typeof DiffViewImpl>;
|
|
61
|
-
export {};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* A `FilePatch` as a diff (agent-activity-presentation §3.4): a `+6 -5` summary,
|
|
4
|
-
* then hunk-separated rows with a right-aligned line-number gutter, a `+`/`-`/
|
|
5
|
-
* space sign column and `theme.diff` colors.
|
|
6
|
-
*
|
|
7
|
-
* `wrap="truncate"` ON EVERY ROW IS A CORRECTNESS REQUIREMENT, NOT A TASTE ONE.
|
|
8
|
-
* `estimateEntryRows` computes a diff card's height by COUNTING rows, so a
|
|
9
|
-
* wrapped patch line would occupy two rows while the estimate charged one — an
|
|
10
|
-
* under-estimate, which `virtual-window.ts` names as the unsafe direction. One
|
|
11
|
-
* patch line is one terminal row, always.
|
|
12
|
-
*
|
|
13
|
-
* No new keybinding and no new state: collapse rides on `expandedToolIds` and
|
|
14
|
-
* the existing `Ctrl+O` handler, which targets the MOST RECENT tool card (P2-4).
|
|
15
|
-
*
|
|
16
|
-
* `caps` is deliberately NOT a prop. Every character this component emits is
|
|
17
|
-
* ASCII — `+`, `-`, `@@`, digits — because `+` and `-` are the diff's own
|
|
18
|
-
* vocabulary and `renderUnifiedDiff` already spells them literally. A glyph
|
|
19
|
-
* lookup here would buy nothing and add a memo dependency.
|
|
20
|
-
*/
|
|
21
|
-
import React from 'react';
|
|
22
|
-
import { Box, Text } from 'ink';
|
|
23
|
-
/**
|
|
24
|
-
* Diff rows shown before collapse.
|
|
25
|
-
*
|
|
26
|
-
* Higher than the generic preview's 8 (D-11): a diff's rows are half as tall in
|
|
27
|
-
* information terms, and 8 rows of a 3-context hunk is barely one change.
|
|
28
|
-
* DUPLICATED AS A NUMBER in `virtual-window.ts`, matching what
|
|
29
|
-
* `TOOL_COLLAPSED_LINES` already does and the comment that justifies it.
|
|
30
|
-
*/
|
|
31
|
-
export const DIFF_COLLAPSED_LINES = 12;
|
|
32
|
-
/** Gutter width bounds; three digits is the floor so narrow files still align. */
|
|
33
|
-
const GUTTER_MIN = 3;
|
|
34
|
-
const GUTTER_MAX = 6;
|
|
35
|
-
/**
|
|
36
|
-
* Flatten the hunks into rows, inserting one `@@` separator BETWEEN hunks and
|
|
37
|
-
* none before the first.
|
|
38
|
-
*
|
|
39
|
-
* Exported for `diff-view.test.tsx`, and because the row count it produces is
|
|
40
|
-
* the number `estimateEntryRows` reproduces arithmetically — the two must not
|
|
41
|
-
* disagree.
|
|
42
|
-
*/
|
|
43
|
-
export function diffRows(patch) {
|
|
44
|
-
const rows = [];
|
|
45
|
-
patch.hunks.forEach((hunk, index) => {
|
|
46
|
-
if (index > 0) {
|
|
47
|
-
rows.push({
|
|
48
|
-
kind: 'meta',
|
|
49
|
-
text: `@@ -${hunk.oldStart},${hunk.oldCount} +${hunk.newStart},${hunk.newCount} @@`,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
for (const line of hunk.lines) {
|
|
53
|
-
rows.push({
|
|
54
|
-
kind: line.kind,
|
|
55
|
-
// An `add` shows its new number, a `del` its old, a `ctx` its new.
|
|
56
|
-
...(pickNumber(line) !== undefined ? { num: pickNumber(line) } : {}),
|
|
57
|
-
text: line.text,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
return rows;
|
|
62
|
-
}
|
|
63
|
-
function pickNumber(line) {
|
|
64
|
-
return line.kind === 'del' ? line.oldLine : line.newLine ?? line.oldLine;
|
|
65
|
-
}
|
|
66
|
-
function signOf(kind) {
|
|
67
|
-
if (kind === 'add')
|
|
68
|
-
return '+';
|
|
69
|
-
if (kind === 'del')
|
|
70
|
-
return '-';
|
|
71
|
-
return ' ';
|
|
72
|
-
}
|
|
73
|
-
function colorOf(kind, theme) {
|
|
74
|
-
if (kind === 'add')
|
|
75
|
-
return theme.diff.add;
|
|
76
|
-
if (kind === 'del')
|
|
77
|
-
return theme.diff.remove;
|
|
78
|
-
if (kind === 'meta')
|
|
79
|
-
return theme.diff.meta;
|
|
80
|
-
return theme.diff.context;
|
|
81
|
-
}
|
|
82
|
-
function gutterWidth(rows) {
|
|
83
|
-
let max = 0;
|
|
84
|
-
for (const row of rows)
|
|
85
|
-
if (row.num !== undefined && row.num > max)
|
|
86
|
-
max = row.num;
|
|
87
|
-
return Math.min(GUTTER_MAX, Math.max(GUTTER_MIN, String(max).length));
|
|
88
|
-
}
|
|
89
|
-
function DiffViewImpl({ patch, expanded, theme, }) {
|
|
90
|
-
const rows = diffRows(patch);
|
|
91
|
-
const ceiling = expanded ? rows.length : DIFF_COLLAPSED_LINES;
|
|
92
|
-
const visible = ceiling >= rows.length ? rows : rows.slice(0, Math.max(0, ceiling));
|
|
93
|
-
const hidden = rows.length - visible.length;
|
|
94
|
-
const width = gutterWidth(rows);
|
|
95
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { color: theme.diff.add, children: ["+", patch.added] }), _jsx(Text, { color: theme.muted, children: " " }), _jsxs(Text, { color: theme.diff.remove, children: ["-", patch.removed] }), patch.truncated && _jsx(Text, { color: theme.muted, children: " (truncated)" }), patch.degraded && (_jsxs(Text, { color: theme.muted, children: [" old side not read: ", patch.degraded] }))] }), visible.map((row, i) => (_jsxs(Text, { wrap: "truncate", children: [_jsx(Text, { color: theme.muted, children: String(row.num ?? '').padStart(width) }), _jsxs(Text, { color: colorOf(row.kind, theme), children: [' ', signOf(row.kind), " ", row.text] })] }, i))), hidden > 0 ? (_jsxs(Text, { color: theme.muted, children: ["+", hidden, " ", hidden === 1 ? 'line' : 'lines', " (Ctrl+O)"] })) : (rows.length > DIFF_COLLAPSED_LINES && _jsx(Text, { color: theme.muted, children: "(Ctrl+O to collapse)" }))] }));
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* `React.memo` with the DEFAULT comparator, matching `ToolCard`'s boundary.
|
|
99
|
-
* `patch` qualifies as a prop only because the reducer writes it ONCE at
|
|
100
|
-
* `toolExecEnd` and never rebuilds it (P2-9); `theme` is `useMemo`d in `App.tsx`
|
|
101
|
-
* (I-L2-1).
|
|
102
|
-
*/
|
|
103
|
-
export const DiffView = React.memo(DiffViewImpl);
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EntryFrame (spec §4.3) — the single shell every transcript entry renders
|
|
3
|
-
* inside, and the ONLY place entry spacing is applied.
|
|
4
|
-
*
|
|
5
|
-
* Keeping both the rail and the spacing here is what makes `density.ts` a real
|
|
6
|
-
* policy rather than a suggestion: an entry component that also set its own
|
|
7
|
-
* `marginTop` would silently double the gap at turn boundaries.
|
|
8
|
-
*/
|
|
9
|
-
import React from 'react';
|
|
10
|
-
export interface EntryFrameProps {
|
|
11
|
-
/** Role marker shown on the entry's first row (may be a live spinner). */
|
|
12
|
-
glyph: React.ReactNode;
|
|
13
|
-
/** Rail / glyph colour — for tool cards this is the status colour (§5.3). */
|
|
14
|
-
color?: string;
|
|
15
|
-
/** Rail character drawn on the turn-boundary spacer row (`separation === 1`). */
|
|
16
|
-
continuation: string;
|
|
17
|
-
/** From `separationRows()`. Rendered as a rail stub, never a bare margin. */
|
|
18
|
-
separation: 0 | 1;
|
|
19
|
-
/** Muted colour for the spacer row so it recedes behind real content. */
|
|
20
|
-
spacerColor?: string;
|
|
21
|
-
children: React.ReactNode;
|
|
22
|
-
}
|
|
23
|
-
export declare function EntryFrame({ glyph, color, continuation, separation, spacerColor, children, }: EntryFrameProps): React.ReactElement;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box } from 'ink';
|
|
3
|
-
import { Gutter, RailSpacer } from '../layout/Gutter.js';
|
|
4
|
-
export function EntryFrame({ glyph, color, continuation, separation, spacerColor, children, }) {
|
|
5
|
-
return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [separation === 1 && _jsx(RailSpacer, { continuation: continuation, color: spacerColor }), _jsx(Gutter, { glyph: glyph, color: color, children: children })] }));
|
|
6
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FastCard — one fast-model review in the transcript (fast-model-tier §6).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`.
|
|
5
|
-
*
|
|
6
|
-
* SINGLE AND QUIET, NEVER MORE THAN SIX ROWS. It renders through the shared
|
|
7
|
-
* `EntryFrame` supplied by `EntryView`, so a review reads as one more step in
|
|
8
|
-
* the transcript rather than a second kind of object.
|
|
9
|
-
*
|
|
10
|
-
* COLLAPSED BY CONSTRUCTION rather than by an expand toggle: the critique is
|
|
11
|
-
* already clamped to `fast.reviewMaxChars` before it ever reaches here, so there
|
|
12
|
-
* is nothing hidden for a `Ctrl+O` to reveal.
|
|
13
|
-
*
|
|
14
|
-
* `ok`, `failed` and `dropped` each render ONE muted line. `ok` is the common
|
|
15
|
-
* case and must stay visually cheap — a full card every few turns saying
|
|
16
|
-
* "nothing to report" would be the feature's most annoying possible surface —
|
|
17
|
-
* while `failed` and `dropped` exist so that "it did nothing" is never the
|
|
18
|
-
* observable outcome (R-8).
|
|
19
|
-
*/
|
|
20
|
-
import React from 'react';
|
|
21
|
-
import type { Theme } from '../theme.js';
|
|
22
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
23
|
-
export type FastCardStatus = 'running' | 'ok' | 'advice' | 'empty' | 'failed' | 'dropped';
|
|
24
|
-
export interface FastCardProps {
|
|
25
|
-
reviewIndex: number;
|
|
26
|
-
model: string;
|
|
27
|
-
status: FastCardStatus;
|
|
28
|
-
text?: string;
|
|
29
|
-
detail?: string;
|
|
30
|
-
turn: number;
|
|
31
|
-
durationMs?: number;
|
|
32
|
-
live: boolean;
|
|
33
|
-
reducedMotion?: boolean;
|
|
34
|
-
theme: Theme;
|
|
35
|
-
caps: TermCapabilities;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The card's colour.
|
|
39
|
-
*
|
|
40
|
-
* `advice` is the ACCENT rather than a warning colour: a second opinion is not
|
|
41
|
-
* an error, and colouring it like one would teach the user to read every review
|
|
42
|
-
* as something having gone wrong.
|
|
43
|
-
*/
|
|
44
|
-
export declare function fastCardColor(status: FastCardStatus, theme: Theme): string | undefined;
|
|
45
|
-
declare function FastCardImpl(props: FastCardProps): React.ReactElement;
|
|
46
|
-
/**
|
|
47
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
|
|
48
|
-
* `mapEntry` already preserves object identity for untouched entries, so the
|
|
49
|
-
* props below are stable references on a settled card, and `theme` / `caps` are
|
|
50
|
-
* `useMemo`d in `App.tsx` (I-L2-1).
|
|
51
|
-
*/
|
|
52
|
-
export declare const FastCard: React.MemoExoticComponent<typeof FastCardImpl>;
|
|
53
|
-
export {};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* FastCard — one fast-model review in the transcript (fast-model-tier §6).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`.
|
|
6
|
-
*
|
|
7
|
-
* SINGLE AND QUIET, NEVER MORE THAN SIX ROWS. It renders through the shared
|
|
8
|
-
* `EntryFrame` supplied by `EntryView`, so a review reads as one more step in
|
|
9
|
-
* the transcript rather than a second kind of object.
|
|
10
|
-
*
|
|
11
|
-
* COLLAPSED BY CONSTRUCTION rather than by an expand toggle: the critique is
|
|
12
|
-
* already clamped to `fast.reviewMaxChars` before it ever reaches here, so there
|
|
13
|
-
* is nothing hidden for a `Ctrl+O` to reveal.
|
|
14
|
-
*
|
|
15
|
-
* `ok`, `failed` and `dropped` each render ONE muted line. `ok` is the common
|
|
16
|
-
* case and must stay visually cheap — a full card every few turns saying
|
|
17
|
-
* "nothing to report" would be the feature's most annoying possible surface —
|
|
18
|
-
* while `failed` and `dropped` exist so that "it did nothing" is never the
|
|
19
|
-
* observable outcome (R-8).
|
|
20
|
-
*/
|
|
21
|
-
import React from 'react';
|
|
22
|
-
import { Box, Text } from 'ink';
|
|
23
|
-
import Spinner from 'ink-spinner';
|
|
24
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
25
|
-
import { railBorderProps } from '../layout/Gutter.js';
|
|
26
|
-
import { formatDuration } from '../../agent/usage.js';
|
|
27
|
-
import { FAST_LIMITS } from '../../fast/limits.js';
|
|
28
|
-
/**
|
|
29
|
-
* The card's colour.
|
|
30
|
-
*
|
|
31
|
-
* `advice` is the ACCENT rather than a warning colour: a second opinion is not
|
|
32
|
-
* an error, and colouring it like one would teach the user to read every review
|
|
33
|
-
* as something having gone wrong.
|
|
34
|
-
*/
|
|
35
|
-
export function fastCardColor(status, theme) {
|
|
36
|
-
if (status === 'running')
|
|
37
|
-
return theme.toolRunning;
|
|
38
|
-
if (status === 'advice')
|
|
39
|
-
return theme.accent;
|
|
40
|
-
if (status === 'failed')
|
|
41
|
-
return theme.toolError;
|
|
42
|
-
return theme.muted;
|
|
43
|
-
}
|
|
44
|
-
/** The one-line summary that follows the header on every non-advice status. */
|
|
45
|
-
function statusLine(props) {
|
|
46
|
-
switch (props.status) {
|
|
47
|
-
case 'running':
|
|
48
|
-
return 'reviewing...';
|
|
49
|
-
case 'ok':
|
|
50
|
-
return 'on track';
|
|
51
|
-
case 'empty':
|
|
52
|
-
return 'no answer';
|
|
53
|
-
case 'failed':
|
|
54
|
-
return props.detail ? `failed: ${props.detail}` : 'failed';
|
|
55
|
-
case 'dropped':
|
|
56
|
-
return props.detail ? `dropped: ${props.detail}` : 'dropped';
|
|
57
|
-
default:
|
|
58
|
-
return '';
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Split the critique into at most `FAST_LIMITS.cardTextRows` lines.
|
|
63
|
-
*
|
|
64
|
-
* The clamp is a ROW budget, not a character one: `reviewMaxChars` already
|
|
65
|
-
* bounded the text, and this only stops a critique with no whitespace at all
|
|
66
|
-
* from turning into a wall on a narrow terminal. Ink wraps the rest.
|
|
67
|
-
*/
|
|
68
|
-
function textRows(text) {
|
|
69
|
-
const lines = text.split('\n').filter((l) => l.trim().length > 0);
|
|
70
|
-
return lines.slice(0, FAST_LIMITS.cardTextRows);
|
|
71
|
-
}
|
|
72
|
-
function FastCardImpl(props) {
|
|
73
|
-
const { reviewIndex, model, status, text, turn, durationMs, live, reducedMotion, theme, caps } = props;
|
|
74
|
-
const glyphs = pickGlyphs(caps);
|
|
75
|
-
const color = fastCardColor(status, theme);
|
|
76
|
-
const duration = durationMs === undefined ? '' : ` ${glyphs.midDot} ${formatDuration(durationMs)}`;
|
|
77
|
-
const head = `fast review #${reviewIndex} ${glyphs.midDot} ${model} ${glyphs.midDot} turn ${turn}${duration}`;
|
|
78
|
-
const showBody = status === 'advice' && text !== undefined && text.trim().length > 0;
|
|
79
|
-
// COLOUR TRACKS `live`, MOTION TRACKS `animate` — one headline, two separate
|
|
80
|
-
// decisions (single-spinner-while-running C-1 / D-7).
|
|
81
|
-
//
|
|
82
|
-
// These used to be two whole `<Text>` elements, so the still branch also
|
|
83
|
-
// demoted the head to `theme.muted`. That was harmless while stillness meant
|
|
84
|
-
// "the user set reducedMotion", but `App` now widens the prop to "this frame
|
|
85
|
-
// does not animate here" for the whole of every run — and under the old shape
|
|
86
|
-
// that would have greyed out every live fast review for the whole run, losing
|
|
87
|
-
// the status colour along with the motion.
|
|
88
|
-
//
|
|
89
|
-
// Three things are load-bearing and all three are silent if dropped: the
|
|
90
|
-
// leading two-space gutter that separates the head from the bold `fast` label,
|
|
91
|
-
// the single space after the marker (the still form bakes it into its template
|
|
92
|
-
// string), and `head` itself. `wrap="truncate"` now applies to the animated
|
|
93
|
-
// path too, which it did not before: it is what the still branch always did,
|
|
94
|
-
// it is the behaviour this card has in every state that is now common, and an
|
|
95
|
-
// unbounded wrap inside a one-row headline is the worse failure.
|
|
96
|
-
const animate = live && !reducedMotion && caps.unicode;
|
|
97
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.accent, bold: true, children: "fast" }), _jsxs(Text, { color: live ? color : theme.muted, wrap: "truncate", children: [' ', animate ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { type: "dots" }), ' '] })) : live ? (`${glyphs.spinnerStill} `) : (''), head] })] }), showBody ? (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, theme.border), children: textRows(text).map((line, index) => (_jsx(Text, { color: theme.primary, children: line }, index))) })) : (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, children: _jsx(Text, { color: color, wrap: "truncate", children: statusLine(props) }) }))] }));
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
|
|
101
|
-
* `mapEntry` already preserves object identity for untouched entries, so the
|
|
102
|
-
* props below are stable references on a settled card, and `theme` / `caps` are
|
|
103
|
-
* `useMemo`d in `App.tsx` (I-L2-1).
|
|
104
|
-
*/
|
|
105
|
-
export const FastCard = React.memo(FastCardImpl);
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GovernanceCard - the settlement card for a `kind: 'governance'` entry
|
|
3
|
-
* (governance-mode section 10.4).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`, through the layout.
|
|
6
|
-
*
|
|
7
|
-
* It renders inside the `EntryFrame` that `Transcript.tsx` supplies, so the left rail is
|
|
8
|
-
* the card's frame - no second box drawn inside the rail. (The spec sketches a
|
|
9
|
-
* rounded box; nested inside the gutter rail it would be two frames for one thing, and the
|
|
10
|
-
* rail already carries the tone colour. Recorded as a deliberate deviation.)
|
|
11
|
-
*
|
|
12
|
-
* EVERY LINE TRUNCATES, none wraps, so the card's height is a function of its data alone
|
|
13
|
-
* (`governanceCardRows`) and `virtual-window.ts::estimateEntryRows` is exact rather than an
|
|
14
|
-
* upper bound. A narrow terminal therefore degrades by truncation to one plain line per
|
|
15
|
-
* agent without any width-dependent branch here.
|
|
16
|
-
*/
|
|
17
|
-
import React from 'react';
|
|
18
|
-
import type { GovernanceCardData } from '../../governance/types.js';
|
|
19
|
-
import type { Theme } from '../theme.js';
|
|
20
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
21
|
-
export interface GovernanceCardProps {
|
|
22
|
-
card: GovernanceCardData;
|
|
23
|
-
theme: Theme;
|
|
24
|
-
caps: TermCapabilities;
|
|
25
|
-
}
|
|
26
|
-
/** The rail colour: the card's verdict, resolved like every other governance tone. */
|
|
27
|
-
export declare function governanceCardColor(card: GovernanceCardData, theme: Theme): string | undefined;
|
|
28
|
-
declare function GovernanceCardImpl({ card, theme, caps }: GovernanceCardProps): React.ReactElement;
|
|
29
|
-
export declare const GovernanceCard: React.MemoExoticComponent<typeof GovernanceCardImpl>;
|
|
30
|
-
export {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* GovernanceCard - the settlement card for a `kind: 'governance'` entry
|
|
4
|
-
* (governance-mode section 10.4).
|
|
5
|
-
*
|
|
6
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`, through the layout.
|
|
7
|
-
*
|
|
8
|
-
* It renders inside the `EntryFrame` that `Transcript.tsx` supplies, so the left rail is
|
|
9
|
-
* the card's frame - no second box drawn inside the rail. (The spec sketches a
|
|
10
|
-
* rounded box; nested inside the gutter rail it would be two frames for one thing, and the
|
|
11
|
-
* rail already carries the tone colour. Recorded as a deliberate deviation.)
|
|
12
|
-
*
|
|
13
|
-
* EVERY LINE TRUNCATES, none wraps, so the card's height is a function of its data alone
|
|
14
|
-
* (`governanceCardRows`) and `virtual-window.ts::estimateEntryRows` is exact rather than an
|
|
15
|
-
* upper bound. A narrow terminal therefore degrades by truncation to one plain line per
|
|
16
|
-
* agent without any width-dependent branch here.
|
|
17
|
-
*/
|
|
18
|
-
import React from 'react';
|
|
19
|
-
import { Box, Text } from 'ink';
|
|
20
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
21
|
-
import { toneColor } from '../governance-status.js';
|
|
22
|
-
import { GovernanceLine, GovernanceRun } from '../GovernanceRun.js';
|
|
23
|
-
import { buildGovernanceCardLayout, cardTone } from '../layout/governance-card.js';
|
|
24
|
-
/** The rail colour: the card's verdict, resolved like every other governance tone. */
|
|
25
|
-
export function governanceCardColor(card, theme) {
|
|
26
|
-
return toneColor(cardTone(card), theme);
|
|
27
|
-
}
|
|
28
|
-
function GovernanceCardImpl({ card, theme, caps }) {
|
|
29
|
-
const layout = buildGovernanceCardLayout(card, pickGlyphs(caps));
|
|
30
|
-
return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(GovernanceLine, { segments: layout.title, theme: theme }), layout.headline && (_jsx(GovernanceLine, { segments: layout.headline, theme: theme })), layout.tableHeader && (_jsx(Text, { wrap: "truncate", children: layout.tableHeader.map((cell, index) => (_jsx(GovernanceRun, { segments: cell, theme: theme }, index))) })), layout.rows.map((row) => (_jsx(Text, { wrap: "truncate", children: row.cells.map((cell, index) => (_jsx(GovernanceRun, { segments: cell, theme: theme }, index))) }, row.key))), layout.notes && _jsx(GovernanceLine, { segments: layout.notes, theme: theme })] }));
|
|
31
|
-
}
|
|
32
|
-
export const GovernanceCard = React.memo(GovernanceCardImpl);
|