@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
package/dist/ui/Transcript.js
DELETED
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/** Virtualized full-screen transcript and entry cards. */
|
|
3
|
-
/** Virtualized full-screen transcript and shared entry cards. */
|
|
4
|
-
import React, { useCallback } from 'react';
|
|
5
|
-
import { Box, Text } from 'ink';
|
|
6
|
-
import Spinner from 'ink-spinner';
|
|
7
|
-
import { pickGlyphs, toolGlyph } from './glyphs.js';
|
|
8
|
-
import { separationRows } from './density.js';
|
|
9
|
-
import { EntryFrame } from './entries/EntryFrame.js';
|
|
10
|
-
import { UserEntry } from './entries/UserEntry.js';
|
|
11
|
-
import { InvocationCard } from './entries/InvocationCard.js';
|
|
12
|
-
import { QueuedEntry } from './entries/QueuedEntry.js';
|
|
13
|
-
import { AssistantEntry } from './entries/AssistantEntry.js';
|
|
14
|
-
import { ToolCard, statusColor, toolEntryGlyph } from './entries/ToolCard.js';
|
|
15
|
-
import { TeamCard, teamCardColor } from './entries/TeamCard.js';
|
|
16
|
-
import { GovernanceCard, governanceCardColor } from './entries/GovernanceCard.js';
|
|
17
|
-
import { isLiveTeamCard, rosterCounts } from './team-status.js';
|
|
18
|
-
import { TodoCard, todoCardColor } from './entries/TodoCard.js';
|
|
19
|
-
import { RetryCard, retryCardColor } from './entries/RetryCard.js';
|
|
20
|
-
import { FastCard, fastCardColor } from './entries/FastCard.js';
|
|
21
|
-
import { CompactionCard, compactionCardColor } from './entries/CompactionCard.js';
|
|
22
|
-
import { ServiceCard, serviceCardColor, serviceGlyph } from './entries/ServiceCard.js';
|
|
23
|
-
import { MeasuredEntry } from './layout/MeasuredEntry.js';
|
|
24
|
-
import { useViewportGeometry } from './layout/viewport-geometry.js';
|
|
25
|
-
import { estimateEntryRows, heightKey, selectWindow, VIRTUAL_LIMITS, } from './layout/virtual-window.js';
|
|
26
|
-
import { advanceTailRows } from './layout/follow-state.js';
|
|
27
|
-
/**
|
|
28
|
-
* The value `EntryView` should receive for `nowSec` on THIS entry.
|
|
29
|
-
*
|
|
30
|
-
* `undefined` for everything that is not a running tool, which is what keeps
|
|
31
|
-
* every other card's memo boundary intact — `undefined === undefined` in the
|
|
32
|
-
* comparator, on every frame, forever.
|
|
33
|
-
*
|
|
34
|
-
* EXPORTED for `ui/scrollback/LiveTail.tsx` (release-gate-and-native-panels §6.5), and
|
|
35
|
-
* that is the whole of this feature's change to this file: the live region mounts the
|
|
36
|
-
* same `EntryView` the transcript does, so it must feed it the same per-entry clock.
|
|
37
|
-
* A copy of this rule in the band would be a second answer to "does this card tick?"
|
|
38
|
-
* and the two would disagree the first time a consumer is added.
|
|
39
|
-
*/
|
|
40
|
-
export function nowSecFor(entry, nowSec) {
|
|
41
|
-
if (entry.kind === 'tool' && entry.status === 'running')
|
|
42
|
-
return nowSec;
|
|
43
|
-
// THE LIVE COMPACTION CARD IS THE SECOND CONSUMER (hardening W5). It is at most
|
|
44
|
-
// ONE entry in the whole transcript, and it settles - so the memo boundary this
|
|
45
|
-
// function protects is unchanged for every other card, forever.
|
|
46
|
-
if (entry.kind === 'compaction' && entry.live)
|
|
47
|
-
return nowSec;
|
|
48
|
-
// THE FOURTH CONSUMER IS A LIVE DISPATCH CARD (tui-subagent-double-roster A-1):
|
|
49
|
-
// a child's elapsed time must advance while it works, and `TeamCard` reads this
|
|
50
|
-
// same 1 Hz clock instead of a second `Date.now()` per render. A suppressed card
|
|
51
|
-
// never mounts, so this only keeps the reading honest for a directly mounted one.
|
|
52
|
-
if (entry.kind === 'team' && entry.active)
|
|
53
|
-
return nowSec;
|
|
54
|
-
// THE THIRD CONSUMER IS A LIVE JOB (long-task-jobs D-8), and it is the reason
|
|
55
|
-
// this stays a single 1 Hz clock: a task's elapsed time and its `no output`
|
|
56
|
-
// badge both have to move, and a per-card `setInterval` would be one timer per
|
|
57
|
-
// job. `terminal` entries are excluded so a settled record never re-renders.
|
|
58
|
-
if (entry.kind === 'service' && !entry.terminal)
|
|
59
|
-
return nowSec;
|
|
60
|
-
return undefined;
|
|
61
|
-
}
|
|
62
|
-
function noticeColor(level, theme) {
|
|
63
|
-
if (level === 'error')
|
|
64
|
-
return theme.noticeError;
|
|
65
|
-
if (level === 'warn')
|
|
66
|
-
return theme.noticeWarn;
|
|
67
|
-
return theme.noticeInfo;
|
|
68
|
-
}
|
|
69
|
-
function noticeSymbol(level, theme) {
|
|
70
|
-
if (level === 'error')
|
|
71
|
-
return theme.symbols.error;
|
|
72
|
-
if (level === 'warn')
|
|
73
|
-
return theme.symbols.warn;
|
|
74
|
-
return theme.symbols.info;
|
|
75
|
-
}
|
|
76
|
-
function EntryViewImpl({ entry, prev, expanded, thinkingVisible, reducedMotion, density, theme, caps, nowSec, }) {
|
|
77
|
-
const glyphs = pickGlyphs(caps);
|
|
78
|
-
const separation = separationRows(prev, entry, density);
|
|
79
|
-
const frame = (glyph, color, children) => (_jsx(EntryFrame, { glyph: glyph, color: color, continuation: glyphs.railVertical, separation: separation, spacerColor: theme.border, children: children }));
|
|
80
|
-
switch (entry.kind) {
|
|
81
|
-
case 'user':
|
|
82
|
-
return frame(glyphs.user, theme.user, entry.invocation
|
|
83
|
-
? _jsx(InvocationCard, { card: entry.invocation, theme: theme, caps: caps })
|
|
84
|
-
: _jsx(UserEntry, { text: entry.text, theme: theme, caps: caps }));
|
|
85
|
-
case 'queued':
|
|
86
|
-
// `theme.muted`: quieter than a user message, louder than a notice --
|
|
87
|
-
// the row exists to be noticed UNTIL it is accepted, then rewritten in
|
|
88
|
-
// place by `turnStart` (5.2.3).
|
|
89
|
-
return frame(glyphs.queued, theme.muted, _jsx(QueuedEntry, { text: entry.text, theme: theme, caps: caps }));
|
|
90
|
-
case 'assistant': {
|
|
91
|
-
// Render-layer backstop for the reducer prune (defect 5) - the reducer is the
|
|
92
|
-
// source of truth, and this only catches a settled, entirely empty bubble
|
|
93
|
-
// that reached here some other way. Returned BEFORE `frame(...)`, so neither
|
|
94
|
-
// the glyph row nor the separation row is drawn.
|
|
95
|
-
if (!entry.streaming && entry.text.trim() === '' && (entry.thinking ?? '').trim() === '') {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
const animate = entry.streaming && !reducedMotion && caps.unicode;
|
|
99
|
-
return frame(animate ? _jsx(Spinner, { type: "dots" }) : glyphs.assistant, theme.primary, _jsx(AssistantEntry, { text: entry.text, thinking: entry.thinking, thinkingOpen: entry.thinkingOpen, thinkingVisible: thinkingVisible, streaming: entry.streaming, aborted: entry.aborted,
|
|
100
|
-
// `EntryViewImpl` hands each renderer EXPLICIT SCALAR PROPS, so
|
|
101
|
-
// nothing on the entry reaches a component by itself (P1-6b).
|
|
102
|
-
thinkingMs: entry.thinkingMs, theme: theme, caps: caps }));
|
|
103
|
-
}
|
|
104
|
-
case 'tool':
|
|
105
|
-
return frame(toolEntryGlyph(entry.name, caps), statusColor(entry.status, theme), _jsx(ToolCard, { name: entry.name, label: entry.label, argsRaw: entry.argsRaw, args: entry.args, status: entry.status, preview: entry.preview, patch: entry.patch, durationMs: entry.durationMs, isError: entry.isError, expanded: expanded, reducedMotion: reducedMotion,
|
|
106
|
-
// `entry.live` AND NOT `entry.live ?? []` (P2-4): `ToolCard`'s default
|
|
107
|
-
// comparator sees a fresh `[]` as a changed prop, which is why that
|
|
108
|
-
// file already keeps a shared `EMPTY_LINES`.
|
|
109
|
-
live: entry.live, lastOutputAt: entry.lastOutputAt, nowSec: nowSec, theme: theme, caps: caps }));
|
|
110
|
-
case 'team': {
|
|
111
|
-
// THE LIVE DISPATCH HAS EXACTLY ONE SURFACE (tui-subagent-double-roster A-2):
|
|
112
|
-
// while `active`, the roster (`TeamPanel`) is the only live subagent block, so
|
|
113
|
-
// the transcript draws nothing for this entry and the card appears - once - as
|
|
114
|
-
// history the moment the dispatch settles. Returning BEFORE `frame(...)` draws
|
|
115
|
-
// neither the rail marker nor the separation row.
|
|
116
|
-
//
|
|
117
|
-
// `renderer.tsx`'s offscreen measurement goes through THIS function too, which is
|
|
118
|
-
// what makes the native print pump's `measureWindow` agree with the frame for
|
|
119
|
-
// free. `estimateEntryRows` carries the same predicate (0 rows), so no other
|
|
120
|
-
// arithmetic has to know about the suppression.
|
|
121
|
-
if (isLiveTeamCard(entry))
|
|
122
|
-
return null;
|
|
123
|
-
return frame(glyphs.teamAgent, teamCardColor(rosterCounts(entry.runs), entry.active, entry.aborted, theme), _jsx(TeamCard, { requested: entry.requested, runs: entry.runs, aborted: entry.aborted, durationMs: entry.durationMs, active: entry.active, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps, nowSec: nowSecFor(entry, nowSec) }));
|
|
124
|
-
}
|
|
125
|
-
case 'governance':
|
|
126
|
-
return frame(glyphs.teamAgent, governanceCardColor(entry.card, theme), _jsx(GovernanceCard, { card: entry.card, theme: theme, caps: caps }));
|
|
127
|
-
case 'todo':
|
|
128
|
-
return frame(toolGlyph(glyphs, 'todo_write'), todoCardColor(entry.doneCount, entry.total, entry.live, theme), _jsx(TodoCard, { items: entry.items, doneCount: entry.doneCount, total: entry.total, acceptance: entry.acceptance ?? null, live: entry.live, interrupted: entry.interrupted, theme: theme, caps: caps }));
|
|
129
|
-
case 'retry':
|
|
130
|
-
return frame(entry.phase === 'exhausted' ? glyphs.error : glyphs.retry, retryCardColor(entry.phase, theme), _jsx(RetryCard, { attempt: entry.attempt, maxRetries: entry.maxRetries, errorType: entry.errorType, phase: entry.phase, resumeAt: entry.resumeAt, totalRetries: entry.totalRetries, elapsedMs: entry.elapsedMs,
|
|
131
|
-
// READ HERE, not threaded from `App`, and that is what keeps the memo
|
|
132
|
-
// boundary intact: a `now` prop on every `EntryView` would change on
|
|
133
|
-
// every frame and re-render the whole transcript. The `retryTick` action
|
|
134
|
-
// refreshes THIS entry's identity once a second, which re-renders this
|
|
135
|
-
// one card and gives it a fresh clock; nothing else moves.
|
|
136
|
-
now: Date.now(),
|
|
137
|
-
// NOT THREADED FROM `App`: reaching this renderer means a TUI is
|
|
138
|
-
// mounted, and the TUI always binds Esc to abort. Headless mode writes
|
|
139
|
-
// its retry lines to stderr and never mounts an entry component, and the
|
|
140
|
-
// exit replay goes through `transcript-text.ts`. `RetryCard` keeps the
|
|
141
|
-
// prop so the render tests can assert the suppressed form.
|
|
142
|
-
reducedMotion: reducedMotion, theme: theme, caps: caps }));
|
|
143
|
-
case 'fast':
|
|
144
|
-
return frame(entry.status === 'failed' ? glyphs.toolError : glyphs.teamAgent, fastCardColor(entry.status, theme), _jsx(FastCard, { reviewIndex: entry.reviewIndex, model: entry.model, status: entry.status, text: entry.text, detail: entry.detail, turn: entry.turn, durationMs: entry.durationMs, live: entry.live, reducedMotion: reducedMotion, theme: theme, caps: caps }));
|
|
145
|
-
case 'compaction':
|
|
146
|
-
return frame(entry.applied || entry.live ? glyphs.compaction : glyphs.toolError, compactionCardColor(entry, theme), _jsx(CompactionCard, { index: entry.index, decision: entry.decision, memoryVersion: entry.memoryVersion, trigger: entry.trigger, mode: entry.mode, applied: entry.applied, reason: entry.reason, messagesBefore: entry.messagesBefore, messagesAfter: entry.messagesAfter, tokensBefore: entry.tokensBefore, tokensAfter: entry.tokensAfter, summary: entry.summary, model: entry.model, durationMs: entry.durationMs, tailRelief: entry.tailRelief, phase: entry.phase, keepRelaxed: entry.keepRelaxed, retainedTurns: entry.retainedTurns, retainedMessages: entry.retainedMessages, keepRecentTurnsUsed: entry.keepRecentTurnsUsed, elidedMessages: entry.elidedMessages,
|
|
147
|
-
// ONLY WHILE LIVE, and only when the clock has ticked at least once:
|
|
148
|
-
// `nowSec` is `undefined` until then, and a settled card must keep
|
|
149
|
-
// rendering `durationMs` rather than a figure that would drift.
|
|
150
|
-
elapsedMs: entry.live && nowSec !== undefined && entry.startedAt !== undefined
|
|
151
|
-
? Math.max(0, nowSec * 1000 - entry.startedAt)
|
|
152
|
-
: undefined, live: entry.live, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps }));
|
|
153
|
-
case 'service':
|
|
154
|
-
return frame(serviceGlyph(entry, glyphs), serviceCardColor(entry, theme), _jsx(ServiceCard, { serviceId: entry.serviceId, jobKind: entry.jobKind, command: entry.command, status: entry.status, url: entry.url, port: entry.port, exitCode: entry.exitCode, startedAt: entry.startedAt, readyAt: entry.readyAt, endedAt: entry.endedAt, rows: entry.rows, terminal: entry.terminal, killIncomplete: entry.killIncomplete, progress: entry.progress, stalled: entry.stalled, lastOutputAt: entry.lastOutputAt, nowSec: nowSec, expanded: expanded, reducedMotion: reducedMotion, theme: theme, caps: caps }));
|
|
155
|
-
case 'notice':
|
|
156
|
-
return frame(noticeSymbol(entry.level, theme), noticeColor(entry.level, theme), _jsx(Text, { color: noticeColor(entry.level, theme), children: entry.text }));
|
|
157
|
-
default:
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* THE memo boundary that makes a long transcript cheap (L2 / R3).
|
|
163
|
-
*
|
|
164
|
-
* The comparator is written out rather than defaulted because `prev` is the one
|
|
165
|
-
* prop whose identity matters for a reason the type does not show: it feeds
|
|
166
|
-
* `separationRows`, so an entry whose PREDECESSOR changed kind must re-render
|
|
167
|
-
* even though the entry itself did not.
|
|
168
|
-
*
|
|
169
|
-
* I-L2-1 — `theme` and `caps` are `useMemo`d in `App.tsx` and are therefore
|
|
170
|
-
* referentially stable across frames. If a future change makes either a fresh
|
|
171
|
-
* object per render, EVERY boundary below becomes a no-op AND NOTHING FAILS;
|
|
172
|
-
* `render-memo.test.tsx` asserts that stability directly so the trap is a red
|
|
173
|
-
* test rather than a silent regression.
|
|
174
|
-
*/
|
|
175
|
-
export const EntryView = React.memo(EntryViewImpl, (a, b) => {
|
|
176
|
-
return (a.entry === b.entry &&
|
|
177
|
-
a.prev === b.prev &&
|
|
178
|
-
a.expanded === b.expanded &&
|
|
179
|
-
a.thinkingVisible === b.thinkingVisible &&
|
|
180
|
-
a.reducedMotion === b.reducedMotion &&
|
|
181
|
-
a.density === b.density &&
|
|
182
|
-
a.theme === b.theme &&
|
|
183
|
-
a.caps === b.caps &&
|
|
184
|
-
/*
|
|
185
|
-
* ELEVENTH TERM, AND OMITTING IT IS THE TRAP I-L2-1 DESCRIBES ONE COMMENT UP
|
|
186
|
-
* (P1-3). This comparator is a CLOSED LIST: a prop absent from it changes
|
|
187
|
-
* without invalidating the boundary, so `ToolCard` is never re-rendered and
|
|
188
|
-
* the stall row freezes at whatever second it first drew — AC-26's "and the
|
|
189
|
-
* seconds advance" failing with nothing reporting it.
|
|
190
|
-
*
|
|
191
|
-
* It is free: `nowSecFor` returns `undefined` for every entry that is not a
|
|
192
|
-
* running tool, and `undefined === undefined` on every frame.
|
|
193
|
-
*/
|
|
194
|
-
a.nowSec === b.nowSec);
|
|
195
|
-
});
|
|
196
|
-
export function TranscriptList({ entries, expandedToolIds, thinkingVisible, reducedMotion, density, nowSec, theme, caps, windowSize, cols, heights, mountedSink, tailSink, }) {
|
|
197
|
-
const size = Math.max(1, Math.floor(windowSize));
|
|
198
|
-
const visible = entries.length > size ? entries.slice(-size) : entries;
|
|
199
|
-
const collapsed = entries.length - visible.length;
|
|
200
|
-
const glyphs = pickGlyphs(caps);
|
|
201
|
-
const geometry = useViewportGeometry();
|
|
202
|
-
// Ctrl+T changes every assistant entry's height without changing any entry,
|
|
203
|
-
// so it has to reach the cache key or the spacers freeze at the wrong size.
|
|
204
|
-
const flags = thinkingVisible ? 't' : '';
|
|
205
|
-
// ONE key builder, shared by the lookup below and by `MeasuredEntry`'s report.
|
|
206
|
-
// Two spellings of the same key is a SILENT failure and not a compile error:
|
|
207
|
-
// the measurement lands under a key `resolve` never asks for, every entry
|
|
208
|
-
// falls back to its estimate for the rest of the session, and the spacers
|
|
209
|
-
// quietly encode heights nothing will ever correct.
|
|
210
|
-
const keyOf = (entry) => heightKey(entry, cols, !!expandedToolIds[entry.id], density, flags);
|
|
211
|
-
const { resolve, report } = heights;
|
|
212
|
-
const heightOf = useCallback((index) => {
|
|
213
|
-
const entry = visible[index];
|
|
214
|
-
// `thinkingVisible` IS PASSED, not left to the parameter's conservative
|
|
215
|
-
// default (P1-6a / condition 5). With thinking hidden the default would
|
|
216
|
-
// inflate every assistant entry that thought by its whole wrapped length,
|
|
217
|
-
// and an entry estimated at 400 rows against a real height of 1 is exactly
|
|
218
|
-
// the one `selectWindow` then never mounts and never re-measures.
|
|
219
|
-
return resolve(keyOf(entry), () => estimateEntryRows(entry, cols, density, !!expandedToolIds[entry.id], thinkingVisible));
|
|
220
|
-
},
|
|
221
|
-
// Memoised only incidentally: `visible` IS `entries` while the session is
|
|
222
|
-
// shorter than the horizon and a fresh slice once it is past it, so this
|
|
223
|
-
// rebuilds on some frames and not others. Either is correct — `selectWindow`
|
|
224
|
-
// consumes it synchronously below and it is never handed to a child — and
|
|
225
|
-
// `keyOf` is omitted from the list because every input it closes over is
|
|
226
|
-
// already in it.
|
|
227
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
228
|
-
[visible, expandedToolIds, cols, density, flags, resolve, thinkingVisible]);
|
|
229
|
-
const selection = selectWindow({
|
|
230
|
-
entries: visible,
|
|
231
|
-
heightOf,
|
|
232
|
-
viewportRows: geometry.viewportRows,
|
|
233
|
-
trailingContentRows: geometry.trailingContentRows,
|
|
234
|
-
offset: geometry.offset,
|
|
235
|
-
overscan: VIRTUAL_LIMITS.overscan,
|
|
236
|
-
});
|
|
237
|
-
const slice = visible.slice(selection.startIndex, selection.endIndex);
|
|
238
|
-
if (mountedSink)
|
|
239
|
-
mountedSink.current = slice.length;
|
|
240
|
-
// One more pass over the array `selectWindow` has already walked, reading the
|
|
241
|
-
// SAME height table and never the geometry context (§4.3.1a). `visible` is
|
|
242
|
-
// what is drawn, so its last entry is the tail; entries the horizon dropped are
|
|
243
|
-
// not "removed rows" and must not register as one.
|
|
244
|
-
if (tailSink) {
|
|
245
|
-
tailSink.current = advanceTailRows(tailSink.current, visible.map((entry) => entry.id), heightOf);
|
|
246
|
-
}
|
|
247
|
-
return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [collapsed > 0 && (_jsxs(Text, { wrap: "truncate", color: theme.hintFg ?? theme.muted, children: [glyphs.ellipsis, " ", collapsed, " earlier ", collapsed === 1 ? 'entry' : 'entries', " collapsed (/save exports the full session)"] })), selection.leadingRows > 0 && (_jsx(Box, { flexShrink: 0, height: selection.leadingRows })), slice.map((entry, i) => {
|
|
248
|
-
const index = selection.startIndex + i;
|
|
249
|
-
return (_jsx(MeasuredEntry, { heightKey: keyOf(entry), onMeasure: report, children: _jsx(EntryView, { entry: entry, prev: index > 0 ? visible[index - 1] : undefined, expanded: !!expandedToolIds[entry.id], thinkingVisible: thinkingVisible, reducedMotion: reducedMotion, density: density, nowSec: nowSecFor(entry, nowSec), theme: theme, caps: caps }) }, entry.id));
|
|
250
|
-
}), selection.trailingRows > 0 && (_jsx(Box, { flexShrink: 0, height: selection.trailingRows }))] }));
|
|
251
|
-
}
|
package/dist/ui/UpdateLine.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The update line (cli-auto-update section 6.2) - the THIRD occupant of the
|
|
3
|
-
* already-budgeted bottom row, after the toast stack and the activity line.
|
|
4
|
-
*
|
|
5
|
-
* ONE ROW, ALWAYS, AND NEVER `null` (C-15 / P0-1 / D-19). The return type is
|
|
6
|
-
* `React.ReactElement` rather than `React.ReactElement | null`, so the compiler
|
|
7
|
-
* refuses the shortcut: `BottomStatusRow` decides presence with `if (update)`,
|
|
8
|
-
* which tests a REACT ELEMENT, and an element whose render returns `null` is
|
|
9
|
-
* still truthy. Taking that branch would emit a box of ZERO rows - the frame
|
|
10
|
-
* keeps its fixed height, Yoga hands the row to the transcript, and
|
|
11
|
-
* `viewportRows()` goes on reporting the old number to `ScrollViewport`,
|
|
12
|
-
* `selectWindow`, `overlayMaxRows`, `popupMaxRows` and `buildTodoRailLayout`. The
|
|
13
|
-
* transcript would gain a row while the updater is idle and lose it the moment
|
|
14
|
-
* it has news. Presence is the CALLER's decision, through
|
|
15
|
-
* `shouldRenderUpdateLine`, exactly as `App.tsx` already decides the activity
|
|
16
|
-
* line's with `running && !overlayNode`.
|
|
17
|
-
*
|
|
18
|
-
* PURE: a function of `snapshot + compact + theme + caps`. No state, no timer,
|
|
19
|
-
* no clock. `<Text wrap="truncate">` so a narrow terminal degrades by truncation
|
|
20
|
-
* rather than by wrapping into a second row the fixed frame cannot afford.
|
|
21
|
-
*
|
|
22
|
-
* ASCII ONLY, and every user-visible character comes from `pickGlyphs(caps)`
|
|
23
|
-
* (C-3). No literal `...`, `+` or `~` may be spelled inline - `ActivityLine`'s
|
|
24
|
-
* routing of even the ellipsis through `pickGlyphs` is the precedent.
|
|
25
|
-
*
|
|
26
|
-
* `compact` RATHER THAN `cols` (IF-1). Section 6.2 describes the width tiers in
|
|
27
|
-
* terms of `cols`, but resolving them here would mean importing
|
|
28
|
-
* `UPDATE_LIMITS.statusCompactCols` - a VALUE - from `update/`, and section 3.1
|
|
29
|
-
* rule 1 requires this module's only edge into that tree to be erasable by tsc.
|
|
30
|
-
* The caller owns `UPDATE_LIMITS` already (it computes presence from it), so it
|
|
31
|
-
* resolves the threshold too. Same rule as presence: the call site decides.
|
|
32
|
-
*/
|
|
33
|
-
import React from 'react';
|
|
34
|
-
import type { Theme } from './theme.js';
|
|
35
|
-
import type { TermCapabilities } from './capabilities.js';
|
|
36
|
-
import type { UpdateSnapshot } from '../update/types.js';
|
|
37
|
-
export interface UpdateLineProps {
|
|
38
|
-
snapshot: UpdateSnapshot;
|
|
39
|
-
/** `cols < UPDATE_LIMITS.statusCompactCols`, resolved by the caller. */
|
|
40
|
-
compact: boolean;
|
|
41
|
-
theme: Theme;
|
|
42
|
-
caps: TermCapabilities;
|
|
43
|
-
}
|
|
44
|
-
export declare function UpdateLine({ snapshot, compact, theme, caps }: UpdateLineProps): React.ReactElement;
|
package/dist/ui/UpdateLine.js
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { pickGlyphs } from './glyphs.js';
|
|
4
|
-
export function UpdateLine({ snapshot, compact, theme, caps }) {
|
|
5
|
-
const glyphs = pickGlyphs(caps);
|
|
6
|
-
const version = snapshot.latestVersion ?? snapshot.currentVersion;
|
|
7
|
-
const advice = snapshot.advice ?? '';
|
|
8
|
-
const dot = glyphs.midDot;
|
|
9
|
-
const line = (() => {
|
|
10
|
-
if (snapshot.phase === 'installing') {
|
|
11
|
-
return {
|
|
12
|
-
glyph: glyphs.arrowUp,
|
|
13
|
-
text: compact
|
|
14
|
-
? `${version}${glyphs.ellipsis}`
|
|
15
|
-
: `updating to ${version}${glyphs.ellipsis}`,
|
|
16
|
-
color: theme.muted,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
if (snapshot.phase === 'ready') {
|
|
20
|
-
return {
|
|
21
|
-
glyph: glyphs.check,
|
|
22
|
-
text: compact ? `${version} ready` : `${version} installed ${dot} restart aragon to apply`,
|
|
23
|
-
color: theme.toast.success,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (snapshot.phase === 'failed') {
|
|
27
|
-
// H2's three classified failures (cli-auto-update-hardening section 8).
|
|
28
|
-
// Each names the REAL obstacle rather than the generic one, because each
|
|
29
|
-
// is allowed to break the three-strike silence and a notice that breaks
|
|
30
|
-
// silence must be worth the interruption.
|
|
31
|
-
if (snapshot.reason === 'blocked-by-os') {
|
|
32
|
-
// `npm i -g` FROM THE SAME SHELL HITS THE SAME HANDLE. On Windows the
|
|
33
|
-
// shim that launched us is being read by the `cmd.exe` running it for
|
|
34
|
-
// as long as our process lives, and npm's install rewrites that shim -
|
|
35
|
-
// so the generic advice is not merely unhelpful here, it is a wrong
|
|
36
|
-
// instruction (R-3 / section 5.3.1).
|
|
37
|
-
return {
|
|
38
|
-
glyph: glyphs.warn,
|
|
39
|
-
text: compact || !advice
|
|
40
|
-
? 'update blocked'
|
|
41
|
-
: `update blocked ${dot} close other aragon windows, then: ${advice}`,
|
|
42
|
-
color: theme.noticeWarn,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
if (snapshot.reason === 'no-space') {
|
|
46
|
-
return {
|
|
47
|
-
glyph: glyphs.warn,
|
|
48
|
-
text: compact ? 'no disk space' : `update failed ${dot} no disk space`,
|
|
49
|
-
color: theme.noticeWarn,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (snapshot.reason === 'not-writable') {
|
|
53
|
-
return {
|
|
54
|
-
glyph: glyphs.warn,
|
|
55
|
-
text: compact || !advice
|
|
56
|
-
? 'update blocked'
|
|
57
|
-
: `update needs write access ${dot} ${advice}`,
|
|
58
|
-
color: theme.noticeWarn,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
glyph: glyphs.warn,
|
|
63
|
-
text: compact || !advice ? 'update failed' : `update failed ${dot} ${advice}`,
|
|
64
|
-
color: theme.noticeWarn,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (snapshot.phase === 'available') {
|
|
68
|
-
if (snapshot.reason === 'node-too-old') {
|
|
69
|
-
// Both numbers or neither: "needs a newer Node" without saying which is
|
|
70
|
-
// a notice the user cannot act on.
|
|
71
|
-
const detail = snapshot.requiredNode && snapshot.runningNode
|
|
72
|
-
? `${version} needs Node ${snapshot.requiredNode} (running ${snapshot.runningNode})`
|
|
73
|
-
: `${version} needs a newer Node`;
|
|
74
|
-
return {
|
|
75
|
-
glyph: glyphs.warn,
|
|
76
|
-
text: compact ? 'needs newer Node' : detail,
|
|
77
|
-
color: theme.noticeWarn,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
if (snapshot.reason === 'install-ineffective') {
|
|
81
|
-
return {
|
|
82
|
-
glyph: glyphs.warn,
|
|
83
|
-
text: compact
|
|
84
|
-
? 'check npm prefix'
|
|
85
|
-
: `${version} installed elsewhere${advice ? ` ${dot} ${advice}` : ''}`,
|
|
86
|
-
color: theme.noticeWarn,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
glyph: glyphs.arrowUp,
|
|
91
|
-
text: compact
|
|
92
|
-
? version
|
|
93
|
-
: `${version} available${advice ? ` ${dot} ${advice}` : ''}`,
|
|
94
|
-
color: theme.muted,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
// H1's rollback notice, and it goes HERE rather than in a phase branch
|
|
98
|
-
// (cli-auto-update-hardening section 8 / P0-1). It is true for a whole
|
|
99
|
-
// SESSION rather than for a phase, so `shouldRenderUpdateLine` decides its
|
|
100
|
-
// presence from `snapshot.rolledBackFrom` outside `phase` entirely - and the
|
|
101
|
-
// phases that leaves are exactly `idle` / `checking`, which is this
|
|
102
|
-
// fallthrough. An earlier draft put it in the `failed` / `available`
|
|
103
|
-
// branches and keyed it on phase `idle`, a phase neither branch handles;
|
|
104
|
-
// three independent suppressions, so the one line telling a user their CLI
|
|
105
|
-
// had been silently downgraded could never have appeared.
|
|
106
|
-
//
|
|
107
|
-
// NOT `version` ABOVE: that is `latestVersion ?? currentVersion`, and after
|
|
108
|
-
// a rollback `latestVersion` may well be the BAD release we just escaped.
|
|
109
|
-
if (snapshot.rolledBackFrom) {
|
|
110
|
-
const to = snapshot.rolledBackTo ?? snapshot.currentVersion;
|
|
111
|
-
return {
|
|
112
|
-
glyph: glyphs.warn,
|
|
113
|
-
text: compact
|
|
114
|
-
? 'rolled back'
|
|
115
|
-
: `rolled back to ${to} after ${snapshot.rolledBackFrom} failed to start`,
|
|
116
|
-
color: theme.noticeWarn,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// `idle` / `checking`, and a `failed` below the notice threshold. The CALLER
|
|
120
|
-
// never mounts us here (`shouldRenderUpdateLine` is false), but the row must
|
|
121
|
-
// still be exactly one row if it ever is - the same blank-row discipline
|
|
122
|
-
// `ToastStack` applies to its own budgeted row.
|
|
123
|
-
return null;
|
|
124
|
-
})();
|
|
125
|
-
if (!line) {
|
|
126
|
-
return (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }));
|
|
127
|
-
}
|
|
128
|
-
return (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { wrap: "truncate", color: line.color, children: [' ', line.glyph, " ", line.text] }) }));
|
|
129
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The working line's vocabulary (agent-activity-presentation §3.2.1).
|
|
3
|
-
*
|
|
4
|
-
* PURE: no React, no Ink, no clock. Everything here is a function of the two
|
|
5
|
-
* numbers the caller already has, which is what makes the rotation testable
|
|
6
|
-
* without a terminal and without fake timers.
|
|
7
|
-
*/
|
|
8
|
-
/** Rotation cadence. Long enough to read, short enough to prove liveness. */
|
|
9
|
-
export declare const PHRASE_ROTATE_MS = 4000;
|
|
10
|
-
/**
|
|
11
|
-
* ASCII ONLY, by the rule this tree is under (`glyphs.ts` header, enforced by
|
|
12
|
-
* `glyphs.test.ts`'s static scan). Present participles, so the line reads as an
|
|
13
|
-
* action in progress; twelve characters or fewer so the row never fights the
|
|
14
|
-
* terminal's width.
|
|
15
|
-
*/
|
|
16
|
-
export declare const ACTIVITY_PHRASES: readonly string[];
|
|
17
|
-
/**
|
|
18
|
-
* The phrase for a run at a moment.
|
|
19
|
-
*
|
|
20
|
-
* PURE AND TOTAL: the same inputs give the same word, for any finite numbers,
|
|
21
|
-
* including a `now` before `startedAt`.
|
|
22
|
-
*
|
|
23
|
-
* The run's start seeds the sequence, so two consecutive runs do not open on the
|
|
24
|
-
* same word — which is what makes the line read as alive rather than as a fixed
|
|
25
|
-
* label. (The seed's granularity is one second, so two runs starting inside the
|
|
26
|
-
* same second do share an opening word — P2-6.)
|
|
27
|
-
*
|
|
28
|
-
* `rotate: false` is the reduced-motion path: the word is chosen once for the run
|
|
29
|
-
* and then holds. Rotating text IS motion, and a user who asked for
|
|
30
|
-
* `reducedMotion` asked for the screen to stop changing under them; degrading
|
|
31
|
-
* only the spinner would honor the letter of the setting and not its point.
|
|
32
|
-
*/
|
|
33
|
-
export declare function pickActivityPhrase(startedAt: number, now: number, rotate?: boolean): string;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The working line's vocabulary (agent-activity-presentation §3.2.1).
|
|
3
|
-
*
|
|
4
|
-
* PURE: no React, no Ink, no clock. Everything here is a function of the two
|
|
5
|
-
* numbers the caller already has, which is what makes the rotation testable
|
|
6
|
-
* without a terminal and without fake timers.
|
|
7
|
-
*/
|
|
8
|
-
/** Rotation cadence. Long enough to read, short enough to prove liveness. */
|
|
9
|
-
export const PHRASE_ROTATE_MS = 4_000;
|
|
10
|
-
/**
|
|
11
|
-
* ASCII ONLY, by the rule this tree is under (`glyphs.ts` header, enforced by
|
|
12
|
-
* `glyphs.test.ts`'s static scan). Present participles, so the line reads as an
|
|
13
|
-
* action in progress; twelve characters or fewer so the row never fights the
|
|
14
|
-
* terminal's width.
|
|
15
|
-
*/
|
|
16
|
-
export const ACTIVITY_PHRASES = [
|
|
17
|
-
'Assembling', 'Brewing', 'Calibrating', 'Cogitating', 'Composing',
|
|
18
|
-
'Computing', 'Concocting', 'Conjuring', 'Considering', 'Crunching',
|
|
19
|
-
'Distilling', 'Divining', 'Drafting', 'Excavating', 'Fathoming',
|
|
20
|
-
'Fermenting', 'Finessing', 'Foraging', 'Germinating', 'Herding',
|
|
21
|
-
'Incubating', 'Inferring', 'Marinating', 'Meandering', 'Mulling',
|
|
22
|
-
'Musing', 'Noodling', 'Percolating', 'Pondering', 'Puzzling',
|
|
23
|
-
'Ruminating', 'Scheming', 'Sculpting', 'Simmering', 'Sketching',
|
|
24
|
-
'Spelunking', 'Steeping', 'Stitching', 'Summoning', 'Tinkering',
|
|
25
|
-
'Unfurling', 'Untangling', 'Weaving', 'Whittling', 'Wrangling',
|
|
26
|
-
];
|
|
27
|
-
/**
|
|
28
|
-
* The phrase for a run at a moment.
|
|
29
|
-
*
|
|
30
|
-
* PURE AND TOTAL: the same inputs give the same word, for any finite numbers,
|
|
31
|
-
* including a `now` before `startedAt`.
|
|
32
|
-
*
|
|
33
|
-
* The run's start seeds the sequence, so two consecutive runs do not open on the
|
|
34
|
-
* same word — which is what makes the line read as alive rather than as a fixed
|
|
35
|
-
* label. (The seed's granularity is one second, so two runs starting inside the
|
|
36
|
-
* same second do share an opening word — P2-6.)
|
|
37
|
-
*
|
|
38
|
-
* `rotate: false` is the reduced-motion path: the word is chosen once for the run
|
|
39
|
-
* and then holds. Rotating text IS motion, and a user who asked for
|
|
40
|
-
* `reducedMotion` asked for the screen to stop changing under them; degrading
|
|
41
|
-
* only the spinner would honor the letter of the setting and not its point.
|
|
42
|
-
*/
|
|
43
|
-
export function pickActivityPhrase(startedAt, now, rotate = true) {
|
|
44
|
-
const n = ACTIVITY_PHRASES.length;
|
|
45
|
-
if (!Number.isFinite(startedAt) || !Number.isFinite(now))
|
|
46
|
-
return ACTIVITY_PHRASES[0];
|
|
47
|
-
const seed = Math.floor(startedAt / 1000);
|
|
48
|
-
const step = rotate ? Math.floor(Math.max(0, now - startedAt) / PHRASE_ROTATE_MS) : 0;
|
|
49
|
-
return ACTIVITY_PHRASES[(((seed + step) % n) + n) % n];
|
|
50
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal capability detection (spec §3.2).
|
|
3
|
-
*
|
|
4
|
-
* A *pure* `detectCapabilities(env, stdout)` that reports how much color and
|
|
5
|
-
* which glyph set the current terminal can render, so the theme engine can
|
|
6
|
-
* degrade truecolor → 256 → 16 → monochrome and swap Unicode box/round glyphs
|
|
7
|
-
* for ASCII on legacy terminals (e.g. `cmd.exe`). Keeping it env-in / value-out
|
|
8
|
-
* makes it unit-testable without a real TTY.
|
|
9
|
-
*/
|
|
10
|
-
export interface TermCapabilities {
|
|
11
|
-
/** 0 none · 1 basic-16 · 2 ansi-256 · 3 truecolor. */
|
|
12
|
-
colorLevel: 0 | 1 | 2 | 3;
|
|
13
|
-
/** May we use box/round glyphs, spinners, and emoji-ish symbols? */
|
|
14
|
-
unicode: boolean;
|
|
15
|
-
}
|
|
16
|
-
type EnvLike = Record<string, string | undefined>;
|
|
17
|
-
interface StdoutLike {
|
|
18
|
-
isTTY?: boolean;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Detect the terminal's color depth and Unicode support. `stdout` is accepted
|
|
22
|
-
* for future TTY-aware refinements and kept in the signature for callers.
|
|
23
|
-
*/
|
|
24
|
-
export declare function detectCapabilities(env: EnvLike, _stdout?: StdoutLike): TermCapabilities;
|
|
25
|
-
/** Full TUI styling is a policy, not a guess based on inherited shell markers. */
|
|
26
|
-
export declare function resolveTuiCapabilities(env: EnvLike, color?: boolean): TermCapabilities;
|
|
27
|
-
export {};
|
package/dist/ui/capabilities.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal capability detection (spec §3.2).
|
|
3
|
-
*
|
|
4
|
-
* A *pure* `detectCapabilities(env, stdout)` that reports how much color and
|
|
5
|
-
* which glyph set the current terminal can render, so the theme engine can
|
|
6
|
-
* degrade truecolor → 256 → 16 → monochrome and swap Unicode box/round glyphs
|
|
7
|
-
* for ASCII on legacy terminals (e.g. `cmd.exe`). Keeping it env-in / value-out
|
|
8
|
-
* makes it unit-testable without a real TTY.
|
|
9
|
-
*/
|
|
10
|
-
import chalk from 'chalk';
|
|
11
|
-
/** Resolve the effective color depth from environment signals + chalk. */
|
|
12
|
-
function detectColorLevel(env) {
|
|
13
|
-
// Explicit opt-outs win (https://no-color.org — any value, even empty).
|
|
14
|
-
if (env.NO_COLOR !== undefined)
|
|
15
|
-
return 0;
|
|
16
|
-
if (env.TERM === 'dumb')
|
|
17
|
-
return 0;
|
|
18
|
-
// FORCE_COLOR is an explicit override of the auto-detected depth.
|
|
19
|
-
const force = env.FORCE_COLOR;
|
|
20
|
-
if (force !== undefined) {
|
|
21
|
-
if (force === '0' || force === 'false')
|
|
22
|
-
return 0;
|
|
23
|
-
if (force === '2')
|
|
24
|
-
return 2;
|
|
25
|
-
if (force === '3')
|
|
26
|
-
return 3;
|
|
27
|
-
return 1; // '1' | 'true' | '' → at least basic color
|
|
28
|
-
}
|
|
29
|
-
// A truecolor-capable terminal advertises itself.
|
|
30
|
-
const colorterm = env.COLORTERM?.toLowerCase();
|
|
31
|
-
if (colorterm === 'truecolor' || colorterm === '24bit')
|
|
32
|
-
return 3;
|
|
33
|
-
// Fall back to chalk's own platform detection.
|
|
34
|
-
const level = chalk.level;
|
|
35
|
-
return level >= 0 && level <= 3 ? level : 0;
|
|
36
|
-
}
|
|
37
|
-
/** Decide whether Unicode box/round glyphs are safe to emit. */
|
|
38
|
-
function detectUnicode(env) {
|
|
39
|
-
const locale = [env.LC_ALL, env.LC_CTYPE, env.LANG].filter(Boolean).join(' ').toUpperCase();
|
|
40
|
-
if (locale.includes('UTF'))
|
|
41
|
-
return true;
|
|
42
|
-
if (env.WT_SESSION)
|
|
43
|
-
return true; // Windows Terminal
|
|
44
|
-
const program = env.TERM_PROGRAM;
|
|
45
|
-
if (program === 'aragonmesh' || program === 'vscode' || program === 'iTerm.app' || program === 'Apple_Terminal')
|
|
46
|
-
return true;
|
|
47
|
-
// Legacy cmd.exe (no TERM, no WT_SESSION) and unknown terminals fall back to ASCII.
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Detect the terminal's color depth and Unicode support. `stdout` is accepted
|
|
52
|
-
* for future TTY-aware refinements and kept in the signature for callers.
|
|
53
|
-
*/
|
|
54
|
-
export function detectCapabilities(env, _stdout) {
|
|
55
|
-
return {
|
|
56
|
-
colorLevel: detectColorLevel(env),
|
|
57
|
-
unicode: detectUnicode(env),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/** Full TUI styling is a policy, not a guess based on inherited shell markers. */
|
|
61
|
-
export function resolveTuiCapabilities(env, color) {
|
|
62
|
-
const disabled = color === false || env.NO_COLOR !== undefined ||
|
|
63
|
-
env.FORCE_COLOR === '0' || env.FORCE_COLOR === 'false';
|
|
64
|
-
return { unicode: true, colorLevel: disabled ? 0 : 3 };
|
|
65
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type ClipboardOptions, type CopyResult } from './clipboard.js';
|
|
2
|
-
export interface CopyRequest {
|
|
3
|
-
text: string;
|
|
4
|
-
lines: number;
|
|
5
|
-
}
|
|
6
|
-
export type CopyRequestResult = CopyResult | {
|
|
7
|
-
status: 'busy';
|
|
8
|
-
};
|
|
9
|
-
export interface ClipboardState {
|
|
10
|
-
busy: boolean;
|
|
11
|
-
cleanupPending: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface ClipboardCoordinatorOptions {
|
|
14
|
-
clipboard?: ClipboardOptions;
|
|
15
|
-
/** Clears the previous Ctrl+C exit preparation for both copy entry points. */
|
|
16
|
-
onRequest?: () => void;
|
|
17
|
-
/** A repeated request is consumed; its selection must remain untouched. */
|
|
18
|
-
onBusy?: (state: ClipboardState) => void;
|
|
19
|
-
onResult?: (result: CopyResult, request: CopyRequest) => void;
|
|
20
|
-
onStateChange?: (state: ClipboardState) => void;
|
|
21
|
-
}
|
|
22
|
-
export interface ClipboardCoordinator {
|
|
23
|
-
requestCopy(request: CopyRequest): Promise<CopyRequestResult>;
|
|
24
|
-
isBusy(): boolean;
|
|
25
|
-
isCleanupPending(): boolean;
|
|
26
|
-
dispose(): void;
|
|
27
|
-
}
|
|
28
|
-
/** Create the App-owned copy port; use its live busy state before taking a selection. */
|
|
29
|
-
export declare function createClipboardCoordinator(options?: ClipboardCoordinatorOptions): ClipboardCoordinator;
|