@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/update/semver.js
DELETED
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Semver comparison and the update decision (cli-auto-update section 3.4).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY - this tree is inside the glyph scanner's scope (C-2 / C-3).
|
|
5
|
-
*
|
|
6
|
-
* HAND-WRITTEN AND NOT `semver`. The package has no such dependency
|
|
7
|
-
* (`package.json`), and this feature needs three questions answered - "is B
|
|
8
|
-
* newer than A", "is B a prerelease", "does this Node satisfy that range" - on a
|
|
9
|
-
* document the registry writes and npm itself only warns about. Adding a
|
|
10
|
-
* transitive dependency to an auto-updater, of all things, is the one place the
|
|
11
|
-
* supply-chain argument in R-1 cuts hardest.
|
|
12
|
-
*
|
|
13
|
-
* PURE: no I/O, no clock, no process. Every function here is total and none of
|
|
14
|
-
* them throws.
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* The form a version must have before it is interpolated into `npm install`'s
|
|
18
|
-
* argv (section 3.5 / AC-24).
|
|
19
|
-
*
|
|
20
|
-
* ANCHORED AND WITHOUT `v`: a registry that answered `"1.0.0; rm -rf /"` must
|
|
21
|
-
* never reach `execFile`. With `shell: false` this is not an injection surface
|
|
22
|
-
* to begin with, but the rejection is what makes that claim checkable rather
|
|
23
|
-
* than reasoned, and it also satisfies `fetch-source.ts` rule 3 (no leading `-`)
|
|
24
|
-
* by construction.
|
|
25
|
-
*/
|
|
26
|
-
export const STRICT_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
27
|
-
const SEMVER_RE = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
28
|
-
/** Parse a semver string, or `null` when it is not one. Never throws. */
|
|
29
|
-
export function parseSemver(raw) {
|
|
30
|
-
if (typeof raw !== 'string')
|
|
31
|
-
return null;
|
|
32
|
-
const match = SEMVER_RE.exec(raw.trim());
|
|
33
|
-
if (!match)
|
|
34
|
-
return null;
|
|
35
|
-
const [, major, minor, patch, pre] = match;
|
|
36
|
-
return {
|
|
37
|
-
major: Number.parseInt(major, 10),
|
|
38
|
-
minor: Number.parseInt(minor, 10),
|
|
39
|
-
patch: Number.parseInt(patch, 10),
|
|
40
|
-
prerelease: pre ? pre.split('.') : [],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function isPrerelease(raw) {
|
|
44
|
-
return (parseSemver(raw)?.prerelease.length ?? 0) > 0;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Compare prerelease identifier lists per semver section 11.
|
|
48
|
-
*
|
|
49
|
-
* THE EMPTY LIST SORTS HIGHEST, which is the rule that keeps `1.0.0-rc.1` below
|
|
50
|
-
* `1.0.0`. Getting this backwards would let a `latest` tag pointing at a release
|
|
51
|
-
* candidate read as newer than the release it precedes.
|
|
52
|
-
*/
|
|
53
|
-
function comparePrerelease(a, b) {
|
|
54
|
-
if (a.length === 0 && b.length === 0)
|
|
55
|
-
return 0;
|
|
56
|
-
if (a.length === 0)
|
|
57
|
-
return 1;
|
|
58
|
-
if (b.length === 0)
|
|
59
|
-
return -1;
|
|
60
|
-
const len = Math.max(a.length, b.length);
|
|
61
|
-
for (let i = 0; i < len; i += 1) {
|
|
62
|
-
const x = a[i];
|
|
63
|
-
const y = b[i];
|
|
64
|
-
if (x === undefined)
|
|
65
|
-
return -1;
|
|
66
|
-
if (y === undefined)
|
|
67
|
-
return 1;
|
|
68
|
-
const xNum = /^\d+$/.test(x);
|
|
69
|
-
const yNum = /^\d+$/.test(y);
|
|
70
|
-
if (xNum && yNum) {
|
|
71
|
-
const diff = Number.parseInt(x, 10) - Number.parseInt(y, 10);
|
|
72
|
-
if (diff !== 0)
|
|
73
|
-
return diff < 0 ? -1 : 1;
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
// Numeric identifiers always sort below alphanumeric ones.
|
|
77
|
-
if (xNum !== yNum)
|
|
78
|
-
return xNum ? -1 : 1;
|
|
79
|
-
if (x !== y)
|
|
80
|
-
return x < y ? -1 : 1;
|
|
81
|
-
}
|
|
82
|
-
return 0;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* `-1 | 0 | 1`. An UNPARSEABLE version sorts BELOW a parseable one and equal to
|
|
86
|
-
* another unparseable one, so a garbage registry answer can never read as newer
|
|
87
|
-
* than what is installed.
|
|
88
|
-
*/
|
|
89
|
-
export function compareSemver(a, b) {
|
|
90
|
-
const left = parseSemver(a);
|
|
91
|
-
const right = parseSemver(b);
|
|
92
|
-
if (!left && !right)
|
|
93
|
-
return 0;
|
|
94
|
-
if (!left)
|
|
95
|
-
return -1;
|
|
96
|
-
if (!right)
|
|
97
|
-
return 1;
|
|
98
|
-
if (left.major !== right.major)
|
|
99
|
-
return left.major < right.major ? -1 : 1;
|
|
100
|
-
if (left.minor !== right.minor)
|
|
101
|
-
return left.minor < right.minor ? -1 : 1;
|
|
102
|
-
if (left.patch !== right.patch)
|
|
103
|
-
return left.patch < right.patch ? -1 : 1;
|
|
104
|
-
return comparePrerelease(left.prerelease, right.prerelease);
|
|
105
|
-
}
|
|
106
|
-
function parseClause(raw) {
|
|
107
|
-
const text = raw.trim();
|
|
108
|
-
if (text.length === 0)
|
|
109
|
-
return null;
|
|
110
|
-
const ops = [
|
|
111
|
-
['>=', '>='],
|
|
112
|
-
['<=', '<='],
|
|
113
|
-
['>', '>'],
|
|
114
|
-
['<', '<'],
|
|
115
|
-
['^', '^'],
|
|
116
|
-
['~', '~'],
|
|
117
|
-
['=', '='],
|
|
118
|
-
];
|
|
119
|
-
for (const [prefix, op] of ops) {
|
|
120
|
-
if (text.startsWith(prefix)) {
|
|
121
|
-
const rest = text.slice(prefix.length).trim();
|
|
122
|
-
const parsed = parsePartial(rest);
|
|
123
|
-
return parsed ? { op, ...parsed } : null;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
const parsed = parsePartial(text);
|
|
127
|
-
return parsed ? { op: '=', ...parsed } : null;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* `18`, `18.x`, `18.19`, `18.19.0` - the partial forms `engines.node` uses in
|
|
131
|
-
* practice. Missing components read as `0`, which is what makes `>=18` mean
|
|
132
|
-
* `>=18.0.0`, and `specified` records how many were really named.
|
|
133
|
-
*/
|
|
134
|
-
function parsePartial(raw) {
|
|
135
|
-
const text = raw.trim().replace(/^v/, '');
|
|
136
|
-
if (text.length === 0)
|
|
137
|
-
return null;
|
|
138
|
-
const parts = text.split('.');
|
|
139
|
-
if (parts.length > 3)
|
|
140
|
-
return null;
|
|
141
|
-
const nums = [];
|
|
142
|
-
let specified = 0;
|
|
143
|
-
let sawWildcard = false;
|
|
144
|
-
for (const part of parts) {
|
|
145
|
-
if (part === 'x' || part === 'X' || part === '*') {
|
|
146
|
-
sawWildcard = true;
|
|
147
|
-
nums.push(0);
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
if (!/^\d+$/.test(part))
|
|
151
|
-
return null;
|
|
152
|
-
nums.push(Number.parseInt(part, 10));
|
|
153
|
-
// A concrete component AFTER a wildcard (`18.x.3`) names nothing further:
|
|
154
|
-
// the wildcard has already made everything below it free.
|
|
155
|
-
if (!sawWildcard)
|
|
156
|
-
specified += 1;
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
version: {
|
|
160
|
-
major: nums[0] ?? 0,
|
|
161
|
-
minor: nums[1] ?? 0,
|
|
162
|
-
patch: nums[2] ?? 0,
|
|
163
|
-
prerelease: [],
|
|
164
|
-
},
|
|
165
|
-
specified,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
function compareParsed(a, b) {
|
|
169
|
-
if (a.major !== b.major)
|
|
170
|
-
return a.major < b.major ? -1 : 1;
|
|
171
|
-
if (a.minor !== b.minor)
|
|
172
|
-
return a.minor < b.minor ? -1 : 1;
|
|
173
|
-
if (a.patch !== b.patch)
|
|
174
|
-
return a.patch < b.patch ? -1 : 1;
|
|
175
|
-
return comparePrerelease(a.prerelease, b.prerelease);
|
|
176
|
-
}
|
|
177
|
-
function satisfiesClause(actual, clause) {
|
|
178
|
-
const cmp = compareParsed(actual, clause.version);
|
|
179
|
-
switch (clause.op) {
|
|
180
|
-
case '>=':
|
|
181
|
-
return cmp >= 0;
|
|
182
|
-
case '>':
|
|
183
|
-
return cmp > 0;
|
|
184
|
-
case '<=':
|
|
185
|
-
return cmp <= 0;
|
|
186
|
-
case '<':
|
|
187
|
-
return cmp < 0;
|
|
188
|
-
case '=':
|
|
189
|
-
// A BARE PARTIAL IS A RANGE, NOT AN EQUALITY. `18` and `18.x` mean "any
|
|
190
|
-
// 18.y.z"; only a fully-specified `18.19.0` means that exact version.
|
|
191
|
-
if (clause.specified === 0)
|
|
192
|
-
return true;
|
|
193
|
-
if (actual.major !== clause.version.major)
|
|
194
|
-
return false;
|
|
195
|
-
if (clause.specified === 1)
|
|
196
|
-
return true;
|
|
197
|
-
if (actual.minor !== clause.version.minor)
|
|
198
|
-
return false;
|
|
199
|
-
if (clause.specified === 2)
|
|
200
|
-
return true;
|
|
201
|
-
return actual.patch === clause.version.patch;
|
|
202
|
-
case '^':
|
|
203
|
-
return cmp >= 0 && actual.major === clause.version.major;
|
|
204
|
-
case '~':
|
|
205
|
-
return (cmp >= 0 &&
|
|
206
|
-
actual.major === clause.version.major &&
|
|
207
|
-
actual.minor === clause.version.minor);
|
|
208
|
-
default:
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Does `nodeVersion` satisfy `engines.node`?
|
|
214
|
-
*
|
|
215
|
-
* FAILS OPEN, and that is a decision rather than an oversight (D-15). Handled
|
|
216
|
-
* forms are `>=X`, `>=X.Y.Z`, `>X`, `<X`, `<=X`, `=X`, `^X`, `~X`, `X.x`, and
|
|
217
|
-
* `||`-joined unions of those, with space-separated clauses inside a union
|
|
218
|
-
* ANDed together. Anything this cannot parse returns `true`, matching npm's own
|
|
219
|
-
* default of warning rather than refusing.
|
|
220
|
-
*
|
|
221
|
-
* Failing CLOSED here would mean a syntax we did not anticipate silently freezes
|
|
222
|
-
* every user's updates forever, with no message and no way to find out - the
|
|
223
|
-
* worse of the two errors by a wide margin. A range we DID understand and that
|
|
224
|
-
* genuinely excludes this Node yields `false`, and the caller turns that into a
|
|
225
|
-
* `node-too-old` notice so the user is told to upgrade Node rather than left
|
|
226
|
-
* wondering.
|
|
227
|
-
*/
|
|
228
|
-
export function satisfiesNodeRange(range, nodeVersion) {
|
|
229
|
-
if (range === undefined)
|
|
230
|
-
return true;
|
|
231
|
-
const text = range.trim();
|
|
232
|
-
if (text.length === 0 || text === '*')
|
|
233
|
-
return true;
|
|
234
|
-
const actual = parseSemver(nodeVersion);
|
|
235
|
-
if (!actual)
|
|
236
|
-
return true;
|
|
237
|
-
for (const union of text.split('||')) {
|
|
238
|
-
const clauses = union.trim().split(/\s+/).filter((c) => c.length > 0);
|
|
239
|
-
if (clauses.length === 0)
|
|
240
|
-
continue;
|
|
241
|
-
let allParsed = true;
|
|
242
|
-
let allSatisfied = true;
|
|
243
|
-
for (const raw of clauses) {
|
|
244
|
-
const clause = parseClause(raw);
|
|
245
|
-
if (!clause) {
|
|
246
|
-
allParsed = false;
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
if (!satisfiesClause(actual, clause))
|
|
250
|
-
allSatisfied = false;
|
|
251
|
-
}
|
|
252
|
-
// An unparseable clause makes the WHOLE range unknown, not just this union:
|
|
253
|
-
// a partially-understood range is exactly the input that would make a
|
|
254
|
-
// fail-open guard silently strict.
|
|
255
|
-
if (!allParsed)
|
|
256
|
-
return true;
|
|
257
|
-
if (allSatisfied)
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Should we install, merely report, or say nothing? (section 3.4)
|
|
264
|
-
*
|
|
265
|
-
* ORDER IS SEMANTIC. `up-to-date` is answered first because it is the
|
|
266
|
-
* overwhelmingly common case and the cheapest; `skipped` comes before the
|
|
267
|
-
* quality gates so a user who typed `/update skip` is not told about a
|
|
268
|
-
* prerelease they already declined. Only a range we UNDERSTOOD and that excludes
|
|
269
|
-
* this Node produces `notify`; every other rejection is silent (`none`).
|
|
270
|
-
*
|
|
271
|
-
* The SOURCE and the MODE are deliberately NOT inputs here. This function
|
|
272
|
-
* answers "is that version worth having"; whether this machine may install it is
|
|
273
|
-
* the service's question, and folding the two would make a pure decision depend
|
|
274
|
-
* on the filesystem.
|
|
275
|
-
*/
|
|
276
|
-
export function decideUpdate(input) {
|
|
277
|
-
const { local, manifest, nodeVersion, skippedVersion } = input;
|
|
278
|
-
const remote = manifest.version;
|
|
279
|
-
if (compareSemver(remote, local) <= 0)
|
|
280
|
-
return { action: 'none', reason: 'up-to-date' };
|
|
281
|
-
if (skippedVersion.length > 0 && remote === skippedVersion) {
|
|
282
|
-
return { action: 'none', reason: 'skipped' };
|
|
283
|
-
}
|
|
284
|
-
// A stable install is never moved onto a prerelease, even if someone points
|
|
285
|
-
// `latest` at one. A local prerelease is already opted in, so it may move.
|
|
286
|
-
if (isPrerelease(remote) && !isPrerelease(local)) {
|
|
287
|
-
return { action: 'none', reason: 'prerelease' };
|
|
288
|
-
}
|
|
289
|
-
if (manifest.deprecated !== undefined)
|
|
290
|
-
return { action: 'none', reason: 'deprecated' };
|
|
291
|
-
if (!satisfiesNodeRange(manifest.engines?.node, nodeVersion)) {
|
|
292
|
-
return { action: 'notify', reason: 'node-too-old' };
|
|
293
|
-
}
|
|
294
|
-
return { action: 'install', reason: 'newer-available' };
|
|
295
|
-
}
|
package/dist/update/types.d.ts
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The updater's runtime shapes, plus the ONE pure predicate the renderer needs
|
|
3
|
-
* (cli-auto-update sections 5.3 / 5.3a).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - this tree is inside the glyph scanner's scope (C-2 / C-3).
|
|
6
|
-
*
|
|
7
|
-
* THE ONLY VALUE EXPORTED HERE IS `shouldRenderUpdateLine`. Everything else is a
|
|
8
|
-
* type, so `ui/UpdateLine.tsx` and `commands/registry.ts` can import from this
|
|
9
|
-
* module with `import type` and tsc erases the specifier entirely - no runtime
|
|
10
|
-
* edge from the renderer or the command registry into `update/` (section 3.1
|
|
11
|
-
* rule 1 / P1-7). This module and `limits.ts` import nothing but each other, are
|
|
12
|
-
* side-effect-free, and open no socket, spawn no process and create no timer.
|
|
13
|
-
*/
|
|
14
|
-
export type UpdatePhase = 'idle' | 'checking' | 'available' | 'installing' | 'ready' | 'failed';
|
|
15
|
-
/**
|
|
16
|
-
* How the running copy of `aragon` got onto this machine (section 3.2).
|
|
17
|
-
*
|
|
18
|
-
* `npm-global` is the ONLY value that may be auto-installed, because it is the
|
|
19
|
-
* only one whose install target is unambiguous and verifiable from this machine
|
|
20
|
-
* (D-5). Everything else is advice, not execution.
|
|
21
|
-
*/
|
|
22
|
-
export type InstallSource = 'dev-monorepo' | 'npx' | 'pnpm' | 'yarn' | 'bun' | 'volta' | 'npm-local' | 'npm-global' | 'unknown';
|
|
23
|
-
/** Why we are not installing, when we are not. Drives the advice line. */
|
|
24
|
-
export type UpdateReason = 'up-to-date' | 'prerelease' | 'deprecated' | 'node-too-old' | 'skipped' | 'not-writable' | 'source-ineligible' | 'network' | 'install-failed' | 'locked'
|
|
25
|
-
/** npm exited 0 but THIS root did not move - see U-6. */
|
|
26
|
-
| 'install-ineffective'
|
|
27
|
-
/** EPERM / EBUSY / ETXTBSY - something holds the file we must replace. */
|
|
28
|
-
| 'blocked-by-os'
|
|
29
|
-
/** ENOSPC. */
|
|
30
|
-
| 'no-space';
|
|
31
|
-
/** The slice of the registry's dist-tag document this feature reads. */
|
|
32
|
-
export interface LatestManifest {
|
|
33
|
-
name: string;
|
|
34
|
-
version: string;
|
|
35
|
-
engines?: {
|
|
36
|
-
node?: string;
|
|
37
|
-
};
|
|
38
|
-
/** Present ONLY when the version is deprecated; the string is the reason. */
|
|
39
|
-
deprecated?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface UpdateSnapshot {
|
|
42
|
-
phase: UpdatePhase;
|
|
43
|
-
currentVersion: string;
|
|
44
|
-
latestVersion: string | null;
|
|
45
|
-
source: InstallSource;
|
|
46
|
-
reason?: UpdateReason;
|
|
47
|
-
/** Copy-pasteable command for an ineligible source. */
|
|
48
|
-
advice?: string;
|
|
49
|
-
/**
|
|
50
|
-
* The `engines.node` range the offered version demands, and the Node actually
|
|
51
|
-
* running - set ONLY on the `node-too-old` path.
|
|
52
|
-
*
|
|
53
|
-
* They exist because section 6.2 specifies that row as
|
|
54
|
-
* `<warn> 0.6.0 needs Node >=20 (running 18.19.0)`, and neither number is
|
|
55
|
-
* derivable from anything else on this object. "Needs a newer Node" without
|
|
56
|
-
* saying WHICH is the kind of notice a user cannot act on, which is exactly
|
|
57
|
-
* what D-7 spends the rest of this feature avoiding (IF-2).
|
|
58
|
-
*/
|
|
59
|
-
requiredNode?: string;
|
|
60
|
-
runningNode?: string;
|
|
61
|
-
/**
|
|
62
|
-
* Set for the WHOLE session after a rollback, and deliberately NOT a `reason`
|
|
63
|
-
* (cli-auto-update-hardening section 5.2a / D-39).
|
|
64
|
-
*
|
|
65
|
-
* `reason` is rewritten by `setPhase` on EVERY transition, so the first
|
|
66
|
-
* scheduled check three seconds into the session would erase it before anyone
|
|
67
|
-
* read it. A fact that is true for a whole session needs a carrier the state
|
|
68
|
-
* machine does not own.
|
|
69
|
-
*
|
|
70
|
-
* BOTH, OR NEITHER, on the `requiredNode` / `runningNode` precedent above -
|
|
71
|
-
* half the pair is a notice nobody can read. Here it holds BY CONSTRUCTION
|
|
72
|
-
* rather than by discipline: `rolledBackTo` is the running version, assigned
|
|
73
|
-
* in the same two lines that read `rolledBackFrom` out of the state file.
|
|
74
|
-
*/
|
|
75
|
-
rolledBackFrom?: string;
|
|
76
|
-
rolledBackTo?: string;
|
|
77
|
-
/**
|
|
78
|
-
* What `aragon update --rollback` would reinstall, read from the state file.
|
|
79
|
-
*
|
|
80
|
-
* On the snapshot rather than derived because `/update status` is the only
|
|
81
|
-
* place a user can find out what that command would DO before running it
|
|
82
|
-
* (section 6.3). See IF-1 in the hardening spec.
|
|
83
|
-
*/
|
|
84
|
-
lastGoodVersion?: string;
|
|
85
|
-
/** Which probe answered the last successful check (H3). */
|
|
86
|
-
probe?: 'http' | 'npm';
|
|
87
|
-
nextCheckAt: number | null;
|
|
88
|
-
consecutiveFailures: number;
|
|
89
|
-
}
|
|
90
|
-
export type UpdateEvent = {
|
|
91
|
-
type: 'phase';
|
|
92
|
-
snapshot: UpdateSnapshot;
|
|
93
|
-
} | {
|
|
94
|
-
type: 'log';
|
|
95
|
-
level: 'info' | 'warn';
|
|
96
|
-
msg: string;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* The narrow surface `/update` sees (section 4.4 / C-14 / P0-2).
|
|
100
|
-
*
|
|
101
|
-
* `CommandContext` carries this rather than the service itself, and carries it
|
|
102
|
-
* as an OPTIONAL member: the service is legitimately absent under
|
|
103
|
-
* `update.mode: 'off'`, on a non-TTY and in CI, and a required field would break
|
|
104
|
-
* every existing `CommandContext` fixture at compile time.
|
|
105
|
-
*
|
|
106
|
-
* `UpdateService` satisfies it STRUCTURALLY, so nothing implements it explicitly
|
|
107
|
-
* and there is no adapter to keep in sync.
|
|
108
|
-
*/
|
|
109
|
-
export interface UpdateCommandPort {
|
|
110
|
-
snapshot(): UpdateSnapshot;
|
|
111
|
-
checkNow(opts?: {
|
|
112
|
-
force?: boolean;
|
|
113
|
-
}): Promise<UpdateSnapshot>;
|
|
114
|
-
skip(version: string): void;
|
|
115
|
-
nextCheckAt(): number | null;
|
|
116
|
-
}
|
|
117
|
-
/** What the renderer needs on top of the command port: a subscription. */
|
|
118
|
-
export interface UpdateServiceHandle extends UpdateCommandPort {
|
|
119
|
-
subscribe(fn: (snapshot: UpdateSnapshot) => void): () => void;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* The late-arrival channel between `cli.tsx` and `App` (IF-4).
|
|
123
|
-
*
|
|
124
|
-
* The service is constructed through a DYNAMIC `import()` fired AFTER
|
|
125
|
-
* `render()` (section 3.8 / D-25), so it does not exist when `App` mounts and
|
|
126
|
-
* cannot be an ordinary prop. This is the same shape `ConfirmBridge` and
|
|
127
|
-
* `HumanInputBridge` already use for exactly the same reason: a mutable object
|
|
128
|
-
* created before `render()`, populated by whichever side arrives second.
|
|
129
|
-
*
|
|
130
|
-
* A PLAIN INTERFACE AND NOT A CLASS, so `cli.tsx` builds one with an object
|
|
131
|
-
* literal and needs no runtime import from `update/` (AC-1).
|
|
132
|
-
*/
|
|
133
|
-
export interface UpdateBridge {
|
|
134
|
-
/** Set once the dynamically-imported service exists; `null` until then. */
|
|
135
|
-
service: UpdateServiceHandle | null;
|
|
136
|
-
/** Set by `App` on mount, so a service that arrives later can wake it. */
|
|
137
|
-
onAttach: ((service: UpdateServiceHandle) => void) | null;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* The reasons allowed to break the three-strike silence rule (D-7 / D-33),
|
|
141
|
-
* because each is both ACTIONABLE BY THE USER and NOT SELF-HEALING.
|
|
142
|
-
*
|
|
143
|
-
* THE MEMBERSHIP RULE IS THE WHOLE MECHANISM, not the list. `network` fails both
|
|
144
|
-
* halves - the user cannot fix the registry and the next check may well succeed -
|
|
145
|
-
* so it stays silent and backs off, which is the entire reason a background
|
|
146
|
-
* updater is tolerable at all. The three below will otherwise repeat identically
|
|
147
|
-
* until the user does something, which is the definition of a notice worth
|
|
148
|
-
* showing once. Anything added here without passing both halves is the first
|
|
149
|
-
* step of the notification fatigue the rest of this feature is built to avoid
|
|
150
|
-
* (R-20).
|
|
151
|
-
*/
|
|
152
|
-
export declare const IMMEDIATE_NOTICE_REASONS: ReadonlySet<UpdateReason>;
|
|
153
|
-
/**
|
|
154
|
-
* Whether the bottom row has anything to say. PURE, and deliberately NOT
|
|
155
|
-
* expressed as `UpdateLine` returning `null` (C-15 / P0-1 / D-19).
|
|
156
|
-
*
|
|
157
|
-
* A component that returns `null` still satisfies `if (update)` at the call site
|
|
158
|
-
* - the prop is a React ELEMENT, and an element is truthy however it renders.
|
|
159
|
-
* The row would become `<Box flexShrink={0}>{nothing}</Box>`, which in
|
|
160
|
-
* full-screen is ZERO rows, and the transcript silently gains a row for as long
|
|
161
|
-
* as the updater is idle and loses it again the moment it has news. That is
|
|
162
|
-
* precisely the layout shift `BottomStatusRow` exists to prevent, and
|
|
163
|
-
* `bottom-status-row.test.tsx`'s "holds one row in all four states" is the
|
|
164
|
-
* assertion it would defeat.
|
|
165
|
-
*
|
|
166
|
-
* `ActivityLine` already settles the pattern: it ALWAYS returns an element, and
|
|
167
|
-
* `App.tsx` decides presence at the call site with `running && !overlayNode`.
|
|
168
|
-
*/
|
|
169
|
-
export declare function shouldRenderUpdateLine(snapshot: UpdateSnapshot): boolean;
|
package/dist/update/types.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The updater's runtime shapes, plus the ONE pure predicate the renderer needs
|
|
3
|
-
* (cli-auto-update sections 5.3 / 5.3a).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - this tree is inside the glyph scanner's scope (C-2 / C-3).
|
|
6
|
-
*
|
|
7
|
-
* THE ONLY VALUE EXPORTED HERE IS `shouldRenderUpdateLine`. Everything else is a
|
|
8
|
-
* type, so `ui/UpdateLine.tsx` and `commands/registry.ts` can import from this
|
|
9
|
-
* module with `import type` and tsc erases the specifier entirely - no runtime
|
|
10
|
-
* edge from the renderer or the command registry into `update/` (section 3.1
|
|
11
|
-
* rule 1 / P1-7). This module and `limits.ts` import nothing but each other, are
|
|
12
|
-
* side-effect-free, and open no socket, spawn no process and create no timer.
|
|
13
|
-
*/
|
|
14
|
-
import { UPDATE_LIMITS } from './limits.js';
|
|
15
|
-
/**
|
|
16
|
-
* The reasons allowed to break the three-strike silence rule (D-7 / D-33),
|
|
17
|
-
* because each is both ACTIONABLE BY THE USER and NOT SELF-HEALING.
|
|
18
|
-
*
|
|
19
|
-
* THE MEMBERSHIP RULE IS THE WHOLE MECHANISM, not the list. `network` fails both
|
|
20
|
-
* halves - the user cannot fix the registry and the next check may well succeed -
|
|
21
|
-
* so it stays silent and backs off, which is the entire reason a background
|
|
22
|
-
* updater is tolerable at all. The three below will otherwise repeat identically
|
|
23
|
-
* until the user does something, which is the definition of a notice worth
|
|
24
|
-
* showing once. Anything added here without passing both halves is the first
|
|
25
|
-
* step of the notification fatigue the rest of this feature is built to avoid
|
|
26
|
-
* (R-20).
|
|
27
|
-
*/
|
|
28
|
-
export const IMMEDIATE_NOTICE_REASONS = new Set([
|
|
29
|
-
'blocked-by-os',
|
|
30
|
-
'no-space',
|
|
31
|
-
'not-writable',
|
|
32
|
-
]);
|
|
33
|
-
/**
|
|
34
|
-
* Whether the bottom row has anything to say. PURE, and deliberately NOT
|
|
35
|
-
* expressed as `UpdateLine` returning `null` (C-15 / P0-1 / D-19).
|
|
36
|
-
*
|
|
37
|
-
* A component that returns `null` still satisfies `if (update)` at the call site
|
|
38
|
-
* - the prop is a React ELEMENT, and an element is truthy however it renders.
|
|
39
|
-
* The row would become `<Box flexShrink={0}>{nothing}</Box>`, which in
|
|
40
|
-
* full-screen is ZERO rows, and the transcript silently gains a row for as long
|
|
41
|
-
* as the updater is idle and loses it again the moment it has news. That is
|
|
42
|
-
* precisely the layout shift `BottomStatusRow` exists to prevent, and
|
|
43
|
-
* `bottom-status-row.test.tsx`'s "holds one row in all four states" is the
|
|
44
|
-
* assertion it would defeat.
|
|
45
|
-
*
|
|
46
|
-
* `ActivityLine` already settles the pattern: it ALWAYS returns an element, and
|
|
47
|
-
* `App.tsx` decides presence at the call site with `running && !overlayNode`.
|
|
48
|
-
*/
|
|
49
|
-
export function shouldRenderUpdateLine(snapshot) {
|
|
50
|
-
if (snapshot.phase === 'available' ||
|
|
51
|
-
snapshot.phase === 'installing' ||
|
|
52
|
-
snapshot.phase === 'ready') {
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
if (snapshot.phase === 'failed') {
|
|
56
|
-
if (snapshot.reason && IMMEDIATE_NOTICE_REASONS.has(snapshot.reason))
|
|
57
|
-
return true;
|
|
58
|
-
return snapshot.consecutiveFailures >= UPDATE_LIMITS.failuresBeforeNotice;
|
|
59
|
-
}
|
|
60
|
-
// `idle` / `checking` - the two phases the user must never be told about,
|
|
61
|
-
// EXCEPT for a rollback this session has not yet reported. Placed LAST on
|
|
62
|
-
// purpose: any real news above owns the row first, and the budget is one row
|
|
63
|
-
// (C-15). It is therefore possible for the notice never to appear on a machine
|
|
64
|
-
// that has an update waiting on the very next launch, which is the correct
|
|
65
|
-
// trade - the newer fact is the more actionable one, and the rollback is still
|
|
66
|
-
// in `/update status` and in the log.
|
|
67
|
-
return Boolean(snapshot.rolledBackFrom);
|
|
68
|
-
}
|
|
File without changes
|
|
File without changes
|