@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/compaction/types.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI-local compaction shapes (context-auto-compaction §5.2 / §3.4.2).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY: `src/compaction/**` is inside the glyph scanner's scope.
|
|
5
|
-
*
|
|
6
|
-
* A CLI-LOCAL EVENT STREAM, like `FastEvent` / `TeamEvent` / `TodoEvent`, for
|
|
7
|
-
* the reason each of those records: core's `AgentEvent` union is a public
|
|
8
|
-
* contract and must not learn host shapes.
|
|
9
|
-
*
|
|
10
|
-
* NOTE THE ASYMMETRY WITH CORE. Core emits the two ENGINE events because the
|
|
11
|
-
* engine is what performs the splice and decides `applied`; the CLI emits the
|
|
12
|
-
* richer ones because only the CLI knows the model name, the price and the
|
|
13
|
-
* session totals.
|
|
14
|
-
*
|
|
15
|
-
* THIS STREAM IS THE SOLE SOURCE OF REDUCER ACTIONS (D-20 / P1-6), and
|
|
16
|
-
* `reduceEvent` gains NO cases for `compaction_start` / `compaction_end`. One
|
|
17
|
-
* compaction arriving through two channels is two transcript cards and a doubled
|
|
18
|
-
* `tokensReclaimed`; `reduceEvent`'s `default: return []` is already exactly
|
|
19
|
-
* right for the two core events, which makes "one authority" also the smallest
|
|
20
|
-
* possible change.
|
|
21
|
-
*/
|
|
22
|
-
export {};
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Governance-mode configuration (governance-mode sections 11.1 / 13.2).
|
|
3
|
-
*
|
|
4
|
-
* LIVES IN ITS OWN FILE, NOT IN `schema.ts`: that file is far past the repo's
|
|
5
|
-
* 1000-line limit, and a section whose clamp depends on nothing else in it has no
|
|
6
|
-
* reason to grow it. `schema.ts` imports and re-exports everything below, so every
|
|
7
|
-
* importer still reaches the section through `config/schema.js`.
|
|
8
|
-
*
|
|
9
|
-
* SELF-CONTAINED ON PURPOSE. The integer/boolean helpers in `schema.ts` are private,
|
|
10
|
-
* and importing back from it would make a cycle (`schema.ts` re-exports this file).
|
|
11
|
-
* The two helpers here are four lines each.
|
|
12
|
-
*
|
|
13
|
-
* ASCII ONLY: `src/config/**` is inside the glyph scanner's scope.
|
|
14
|
-
*/
|
|
15
|
-
import type { Posture } from '../governance/posture.js';
|
|
16
|
-
import { type ProfileId } from '../governance/types.js';
|
|
17
|
-
export interface GovernanceConfig {
|
|
18
|
-
/** `false` => the feature is absent: no tools, no prompt blocks, no posture. */
|
|
19
|
-
enabled: boolean;
|
|
20
|
-
/** `false` => Shift+Tab stays BUILD<->PLAN; `/gov` still works. */
|
|
21
|
-
shiftTab: boolean;
|
|
22
|
-
/** `false` => the status chip only, no legion panel. */
|
|
23
|
-
panel: boolean;
|
|
24
|
-
/** Domain profile that names the roles' focus areas. */
|
|
25
|
-
profile: ProfileId;
|
|
26
|
-
/** 1..8. Work packages per run. */
|
|
27
|
-
maxWorkPackages: number;
|
|
28
|
-
/** 1..6. Phases per run. */
|
|
29
|
-
maxPhases: number;
|
|
30
|
-
/** 1..5. Rework rounds per work package. */
|
|
31
|
-
maxRework: number;
|
|
32
|
-
/** 1..5. Fix cycles per phase. */
|
|
33
|
-
maxFixCycles: number;
|
|
34
|
-
/** 0..5. Question rounds before PLAN+GOVERN may submit a plan. */
|
|
35
|
-
minAskRounds: number;
|
|
36
|
-
/** 0..1_000_000_000. Token budget per run; `0` = unlimited. */
|
|
37
|
-
budgetTokens: number;
|
|
38
|
-
/** `true` => the user approves the run charter before any dispatch. */
|
|
39
|
-
confirmCharter: boolean;
|
|
40
|
-
}
|
|
41
|
-
export declare const DEFAULT_GOVERNANCE_CONFIG: GovernanceConfig;
|
|
42
|
-
type NumericKey = 'maxWorkPackages' | 'maxPhases' | 'maxRework' | 'maxFixCycles' | 'minAskRounds' | 'budgetTokens';
|
|
43
|
-
/** The numeric keys, in display order; shared with the settings and `config` surfaces. */
|
|
44
|
-
export declare const GOVERNANCE_NUMERIC_KEYS: readonly NumericKey[];
|
|
45
|
-
/** The inclusive range a numeric key is clamped to. */
|
|
46
|
-
export declare function governanceRangeOf(key: NumericKey): {
|
|
47
|
-
min: number;
|
|
48
|
-
max: number;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* THE single gate for every governance-config read AND write, mirroring
|
|
52
|
-
* `clampTeamConfig` for the reason that one records: hardening only the read path
|
|
53
|
-
* leaves a bad value on disk that the read path then rewrites on every launch, which
|
|
54
|
-
* presents to the user as "my setting won't stick". Unknown keys are dropped.
|
|
55
|
-
*/
|
|
56
|
-
export declare function clampGovernanceConfig(raw: unknown): GovernanceConfig;
|
|
57
|
-
/**
|
|
58
|
-
* `ARAGON_GOVERNANCE=0` is a KILL switch, not a toggle: it can only disable. Any other
|
|
59
|
-
* value (including `1`) is ignored, so an environment can never switch a feature ON that
|
|
60
|
-
* the user's config or a `--no-governance` flag turned off.
|
|
61
|
-
*
|
|
62
|
-
* Takes the env as a parameter so tests and `doctor` do not touch `process.env`.
|
|
63
|
-
*/
|
|
64
|
-
export declare function isGovernanceEnvDisabled(env?: Readonly<Record<string, string | undefined>>): boolean;
|
|
65
|
-
/**
|
|
66
|
-
* The config-level reasons governance can be unavailable. A SUBSET of the
|
|
67
|
-
* `GovernanceUnavailableReason` vocabulary in `governance/copy.ts` (the controller adds
|
|
68
|
-
* `no_api_key`, `headless`, `restart_required` at runtime); the codes are spelled
|
|
69
|
-
* identically so the integration can unify the two without renaming anything.
|
|
70
|
-
*/
|
|
71
|
-
export type GovernanceConfigUnavailableReason = 'disabled_config' | 'disabled_env' | 'team_off';
|
|
72
|
-
export type GovernanceConfigAvailability = {
|
|
73
|
-
ok: true;
|
|
74
|
-
} | {
|
|
75
|
-
ok: false;
|
|
76
|
-
reason: GovernanceConfigUnavailableReason;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Config-only availability, in precedence order: the environment kill switch first (it is
|
|
80
|
-
* the strongest), then the config key, then the team dependency. Pure: no I/O.
|
|
81
|
-
*/
|
|
82
|
-
export declare function describeGovernanceConfigAvailability(config: {
|
|
83
|
-
governance?: Pick<GovernanceConfig, 'enabled'>;
|
|
84
|
-
team: {
|
|
85
|
-
enabled: boolean;
|
|
86
|
-
};
|
|
87
|
-
}, env?: Readonly<Record<string, string | undefined>>): GovernanceConfigAvailability;
|
|
88
|
-
/**
|
|
89
|
-
* Merge the `governance` section across the layers (defaults > file > env > flag).
|
|
90
|
-
*
|
|
91
|
-
* The environment and `--no-governance` layers can ONLY switch `enabled` off (they are kill
|
|
92
|
-
* switches), and they are applied last so nothing in the file can outvote them. The flag is a
|
|
93
|
-
* launch-only override: it is resolved here into the in-memory config and never reaches the
|
|
94
|
-
* store, which is what "not persisted" means.
|
|
95
|
-
*/
|
|
96
|
-
export declare function resolveGovernanceConfig(layers: {
|
|
97
|
-
file?: unknown;
|
|
98
|
-
env?: unknown;
|
|
99
|
-
disableForLaunch?: boolean;
|
|
100
|
-
}): GovernanceConfig;
|
|
101
|
-
export interface InitialPostureInput {
|
|
102
|
-
/** `--govern`. */
|
|
103
|
-
govern?: boolean;
|
|
104
|
-
/** `--plan-govern`. Wins over `govern` if a programmatic caller passes both. */
|
|
105
|
-
planGovern?: boolean;
|
|
106
|
-
/** The already-resolved `--plan` / `planModeDefault` result (unchanged by governance). */
|
|
107
|
-
startInPlanMode: boolean;
|
|
108
|
-
governance: Pick<GovernanceConfig, 'enabled'>;
|
|
109
|
-
teamEnabled: boolean;
|
|
110
|
-
}
|
|
111
|
-
export interface InitialPostureResolution {
|
|
112
|
-
posture: Posture;
|
|
113
|
-
/** Set when a governance posture was requested but could not be honoured. */
|
|
114
|
-
degradedReason?: GovernanceConfigUnavailableReason;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* The posture the session starts in. Governance flags win over `--plan` / `planModeDefault`
|
|
118
|
-
* (a user who asked for a governed run did not ask for a plain one); when governance is
|
|
119
|
-
* unavailable at the CONFIG level the request degrades to the classic posture the same launch
|
|
120
|
-
* would have had, and the reason is returned so the caller can say so instead of silently
|
|
121
|
-
* dropping the flag. Without a governance flag this is exactly `startInPlanMode ? 'plan' :
|
|
122
|
-
* 'build'`, so `--plan` behaviour is untouched.
|
|
123
|
-
*/
|
|
124
|
-
export declare function resolveInitialPosture(input: InitialPostureInput, env?: Readonly<Record<string, string | undefined>>): InitialPostureResolution;
|
|
125
|
-
export {};
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Governance-mode configuration (governance-mode sections 11.1 / 13.2).
|
|
3
|
-
*
|
|
4
|
-
* LIVES IN ITS OWN FILE, NOT IN `schema.ts`: that file is far past the repo's
|
|
5
|
-
* 1000-line limit, and a section whose clamp depends on nothing else in it has no
|
|
6
|
-
* reason to grow it. `schema.ts` imports and re-exports everything below, so every
|
|
7
|
-
* importer still reaches the section through `config/schema.js`.
|
|
8
|
-
*
|
|
9
|
-
* SELF-CONTAINED ON PURPOSE. The integer/boolean helpers in `schema.ts` are private,
|
|
10
|
-
* and importing back from it would make a cycle (`schema.ts` re-exports this file).
|
|
11
|
-
* The two helpers here are four lines each.
|
|
12
|
-
*
|
|
13
|
-
* ASCII ONLY: `src/config/**` is inside the glyph scanner's scope.
|
|
14
|
-
*/
|
|
15
|
-
import process from 'node:process';
|
|
16
|
-
import { GOV_LIMITS } from '../governance/limits.js';
|
|
17
|
-
import { PROFILE_IDS } from '../governance/types.js';
|
|
18
|
-
export const DEFAULT_GOVERNANCE_CONFIG = {
|
|
19
|
-
enabled: true,
|
|
20
|
-
shiftTab: true,
|
|
21
|
-
panel: true,
|
|
22
|
-
profile: 'general',
|
|
23
|
-
maxWorkPackages: 4,
|
|
24
|
-
maxPhases: 3,
|
|
25
|
-
maxRework: 3,
|
|
26
|
-
maxFixCycles: 3,
|
|
27
|
-
minAskRounds: 2,
|
|
28
|
-
budgetTokens: 0,
|
|
29
|
-
confirmCharter: false,
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Inclusive range per numeric key. The upper bounds of the four structural keys are
|
|
33
|
-
* `GOV_LIMITS.hardMax*` (NOT repeated here), so the clamp and the engine can never
|
|
34
|
-
* disagree: a hand-edited `config.json` cannot exceed what the engine enforces.
|
|
35
|
-
*/
|
|
36
|
-
const NUMERIC_RANGES = {
|
|
37
|
-
maxWorkPackages: { min: 1, max: GOV_LIMITS.hardMaxWorkPackages },
|
|
38
|
-
maxPhases: { min: 1, max: GOV_LIMITS.hardMaxPhases },
|
|
39
|
-
maxRework: { min: 1, max: GOV_LIMITS.hardMaxRework },
|
|
40
|
-
maxFixCycles: { min: 1, max: GOV_LIMITS.hardMaxFixCycles },
|
|
41
|
-
minAskRounds: { min: 0, max: 5 },
|
|
42
|
-
budgetTokens: { min: 0, max: 1_000_000_000 },
|
|
43
|
-
};
|
|
44
|
-
/** The numeric keys, in display order; shared with the settings and `config` surfaces. */
|
|
45
|
-
export const GOVERNANCE_NUMERIC_KEYS = Object.keys(NUMERIC_RANGES);
|
|
46
|
-
/** The inclusive range a numeric key is clamped to. */
|
|
47
|
-
export function governanceRangeOf(key) {
|
|
48
|
-
return NUMERIC_RANGES[key];
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Only a real, finite INTEGER survives. A float, NaN, a string ("2") or null is
|
|
52
|
-
* REPAIRED TO THE DEFAULT, not rounded or coerced: a hand-edited `maxRework: 2.5` has no
|
|
53
|
-
* defensible reading, and "typo changes nothing" is the discipline every sibling clamp
|
|
54
|
-
* follows. Out-of-range integers are clamped, not rejected.
|
|
55
|
-
*/
|
|
56
|
-
function clampRangedInt(value, key) {
|
|
57
|
-
const range = NUMERIC_RANGES[key];
|
|
58
|
-
const fallback = DEFAULT_GOVERNANCE_CONFIG[key];
|
|
59
|
-
if (typeof value !== 'number' || !Number.isInteger(value))
|
|
60
|
-
return fallback;
|
|
61
|
-
return Math.min(range.max, Math.max(range.min, value));
|
|
62
|
-
}
|
|
63
|
-
function pickBool(value, fallback) {
|
|
64
|
-
return typeof value === 'boolean' ? value : fallback;
|
|
65
|
-
}
|
|
66
|
-
function pickProfile(value) {
|
|
67
|
-
return typeof value === 'string' && PROFILE_IDS.includes(value)
|
|
68
|
-
? value
|
|
69
|
-
: DEFAULT_GOVERNANCE_CONFIG.profile;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* THE single gate for every governance-config read AND write, mirroring
|
|
73
|
-
* `clampTeamConfig` for the reason that one records: hardening only the read path
|
|
74
|
-
* leaves a bad value on disk that the read path then rewrites on every launch, which
|
|
75
|
-
* presents to the user as "my setting won't stick". Unknown keys are dropped.
|
|
76
|
-
*/
|
|
77
|
-
export function clampGovernanceConfig(raw) {
|
|
78
|
-
const src = (raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : {});
|
|
79
|
-
const defaults = DEFAULT_GOVERNANCE_CONFIG;
|
|
80
|
-
return {
|
|
81
|
-
enabled: pickBool(src.enabled, defaults.enabled),
|
|
82
|
-
shiftTab: pickBool(src.shiftTab, defaults.shiftTab),
|
|
83
|
-
panel: pickBool(src.panel, defaults.panel),
|
|
84
|
-
profile: pickProfile(src.profile),
|
|
85
|
-
maxWorkPackages: clampRangedInt(src.maxWorkPackages, 'maxWorkPackages'),
|
|
86
|
-
maxPhases: clampRangedInt(src.maxPhases, 'maxPhases'),
|
|
87
|
-
maxRework: clampRangedInt(src.maxRework, 'maxRework'),
|
|
88
|
-
maxFixCycles: clampRangedInt(src.maxFixCycles, 'maxFixCycles'),
|
|
89
|
-
minAskRounds: clampRangedInt(src.minAskRounds, 'minAskRounds'),
|
|
90
|
-
budgetTokens: clampRangedInt(src.budgetTokens, 'budgetTokens'),
|
|
91
|
-
confirmCharter: pickBool(src.confirmCharter, defaults.confirmCharter),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
// ---------------------------------------------------------------------------
|
|
95
|
-
// Environment kill switch + availability (config-level part)
|
|
96
|
-
// ---------------------------------------------------------------------------
|
|
97
|
-
/** The spellings of "off" the kill switch accepts, matching the other ARAGON_* switches. */
|
|
98
|
-
const ENV_OFF_VALUES = new Set(['0', 'false', 'off', 'no']);
|
|
99
|
-
/**
|
|
100
|
-
* `ARAGON_GOVERNANCE=0` is a KILL switch, not a toggle: it can only disable. Any other
|
|
101
|
-
* value (including `1`) is ignored, so an environment can never switch a feature ON that
|
|
102
|
-
* the user's config or a `--no-governance` flag turned off.
|
|
103
|
-
*
|
|
104
|
-
* Takes the env as a parameter so tests and `doctor` do not touch `process.env`.
|
|
105
|
-
*/
|
|
106
|
-
export function isGovernanceEnvDisabled(env = process.env) {
|
|
107
|
-
const value = env.ARAGON_GOVERNANCE?.trim().toLowerCase();
|
|
108
|
-
return value !== undefined && ENV_OFF_VALUES.has(value);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Config-only availability, in precedence order: the environment kill switch first (it is
|
|
112
|
-
* the strongest), then the config key, then the team dependency. Pure: no I/O.
|
|
113
|
-
*/
|
|
114
|
-
export function describeGovernanceConfigAvailability(config, env = process.env) {
|
|
115
|
-
if (isGovernanceEnvDisabled(env))
|
|
116
|
-
return { ok: false, reason: 'disabled_env' };
|
|
117
|
-
if (config.governance?.enabled === false)
|
|
118
|
-
return { ok: false, reason: 'disabled_config' };
|
|
119
|
-
if (!config.team.enabled)
|
|
120
|
-
return { ok: false, reason: 'team_off' };
|
|
121
|
-
return { ok: true };
|
|
122
|
-
}
|
|
123
|
-
// ---------------------------------------------------------------------------
|
|
124
|
-
// Launch resolution (load.ts calls these; kept here so load.ts barely grows)
|
|
125
|
-
// ---------------------------------------------------------------------------
|
|
126
|
-
/**
|
|
127
|
-
* Merge the `governance` section across the layers (defaults > file > env > flag).
|
|
128
|
-
*
|
|
129
|
-
* The environment and `--no-governance` layers can ONLY switch `enabled` off (they are kill
|
|
130
|
-
* switches), and they are applied last so nothing in the file can outvote them. The flag is a
|
|
131
|
-
* launch-only override: it is resolved here into the in-memory config and never reaches the
|
|
132
|
-
* store, which is what "not persisted" means.
|
|
133
|
-
*/
|
|
134
|
-
export function resolveGovernanceConfig(layers) {
|
|
135
|
-
return clampGovernanceConfig({
|
|
136
|
-
...DEFAULT_GOVERNANCE_CONFIG,
|
|
137
|
-
...(isPlainObject(layers.file) ? layers.file : {}),
|
|
138
|
-
...(isPlainObject(layers.env) ? layers.env : {}),
|
|
139
|
-
...(layers.disableForLaunch === true ? { enabled: false } : {}),
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
function isPlainObject(value) {
|
|
143
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* The posture the session starts in. Governance flags win over `--plan` / `planModeDefault`
|
|
147
|
-
* (a user who asked for a governed run did not ask for a plain one); when governance is
|
|
148
|
-
* unavailable at the CONFIG level the request degrades to the classic posture the same launch
|
|
149
|
-
* would have had, and the reason is returned so the caller can say so instead of silently
|
|
150
|
-
* dropping the flag. Without a governance flag this is exactly `startInPlanMode ? 'plan' :
|
|
151
|
-
* 'build'`, so `--plan` behaviour is untouched.
|
|
152
|
-
*/
|
|
153
|
-
export function resolveInitialPosture(input, env = process.env) {
|
|
154
|
-
const classic = input.startInPlanMode ? 'plan' : 'build';
|
|
155
|
-
const requested = input.planGovern === true
|
|
156
|
-
? 'plan_govern'
|
|
157
|
-
: input.govern === true ? 'govern' : null;
|
|
158
|
-
if (requested === null)
|
|
159
|
-
return { posture: classic };
|
|
160
|
-
const availability = describeGovernanceConfigAvailability({ governance: input.governance, team: { enabled: input.teamEnabled } }, env);
|
|
161
|
-
return availability.ok
|
|
162
|
-
? { posture: requested }
|
|
163
|
-
: { posture: classic, degradedReason: availability.reason };
|
|
164
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where the ACTIVE kit comes from, and the two places a session kit has to be
|
|
3
|
-
* re-applied (agent-model-kits §4.3 / D-5 / D-6).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/config/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* ONE TRUTH, PURELY DERIVED. `CliConfig` carries only `sessionKit: {id, held}`;
|
|
8
|
-
* everything a surface prints about "which kit is running" comes out of
|
|
9
|
-
* `resolveActiveKit(config)`. There is no `config.activeKit` field, because a
|
|
10
|
-
* second copy of that answer is a copy that can disagree with the first.
|
|
11
|
-
*/
|
|
12
|
-
import type { CliConfig, FastConfig, TeamConfig } from './schema.js';
|
|
13
|
-
import type { ModelProfilesConfig } from './model-profiles.js';
|
|
14
|
-
import { type KitSlot, type SessionKitState } from './model-kits.js';
|
|
15
|
-
/** The three slots, in the order every surface prints them. */
|
|
16
|
-
export declare const ALL_SLOTS: readonly KitSlot[];
|
|
17
|
-
/** The name the UI gives "no kit is in effect" (D-13). */
|
|
18
|
-
export declare const CURRENT_SETUP_NAME = "Current setup";
|
|
19
|
-
/**
|
|
20
|
-
* The answer when there is no kit, or when the host has no kit support at all.
|
|
21
|
-
*
|
|
22
|
-
* A CONSTANT SO CALLERS CANNOT INVENT A SECOND SHAPE: `App` needs one value that
|
|
23
|
-
* renders "no chip, `Current setup` row" for a controller that predates this
|
|
24
|
-
* port (a test double, an embedded host), and re-deriving it there would be a
|
|
25
|
-
* second definition of "nothing".
|
|
26
|
-
*/
|
|
27
|
-
export declare const INACTIVE_KIT: ActiveKit;
|
|
28
|
-
export interface ActiveKit {
|
|
29
|
-
source: 'session' | 'default' | 'none';
|
|
30
|
-
id: string | null;
|
|
31
|
-
/** `Current setup` when `source === 'none'`. */
|
|
32
|
-
name: string;
|
|
33
|
-
/** `[]` when `source === 'none'`; all three for a default kit. */
|
|
34
|
-
held: KitSlot[];
|
|
35
|
-
/** The kit's definition and the live connections no longer agree (§4.8). */
|
|
36
|
-
modified: boolean;
|
|
37
|
-
/** Human-readable ASCII reasons, for `/kit` and the root row. */
|
|
38
|
-
driftReasons: string[];
|
|
39
|
-
/** Slots whose referenced profile is gone (RV-P1-1 / I-8). */
|
|
40
|
-
missingProfiles: KitSlot[];
|
|
41
|
-
}
|
|
42
|
-
/** The session-kit runtime shape, owned by `model-kits.ts` and re-exported here. */
|
|
43
|
-
export type { SessionKitState } from './model-kits.js';
|
|
44
|
-
/**
|
|
45
|
-
* Which kit is in effect, and whether it has drifted (§4.8).
|
|
46
|
-
*
|
|
47
|
-
* Precedence is D-6's: session kit, then the persisted default, then the disk
|
|
48
|
-
* bindings (which the UI calls `Current setup`).
|
|
49
|
-
*/
|
|
50
|
-
export declare function resolveActiveKit(config: CliConfig): ActiveKit;
|
|
51
|
-
/**
|
|
52
|
-
* The minimum a candidate has to offer for the held slots to be re-applied.
|
|
53
|
-
*
|
|
54
|
-
* STRUCTURAL, NOT `PersistedConfig`: the same routine serves a disk candidate on
|
|
55
|
-
* its way to `liveCandidate` and a freshly reloaded `CliConfig`, and forcing
|
|
56
|
-
* either through a cast at the call site would hide the fact that only these
|
|
57
|
-
* three sections are ever written.
|
|
58
|
-
*/
|
|
59
|
-
export interface HeldTarget {
|
|
60
|
-
modelProfiles?: ModelProfilesConfig;
|
|
61
|
-
fast?: Partial<FastConfig>;
|
|
62
|
-
team?: Partial<TeamConfig>;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Re-apply the still-`held` slots of a session kit onto a candidate.
|
|
66
|
-
*
|
|
67
|
-
* THE RETURN VALUE MAY ONLY EVER FEED `liveCandidate`. It must NEVER be handed
|
|
68
|
-
* to `commitModelSettings` (I-14 / RV-P0-1): "this session only" is a claim
|
|
69
|
-
* about the FILE, and a held slot that reaches the commit turns one unrelated
|
|
70
|
-
* save into a permanent, invisible change of the user's defaults. The one
|
|
71
|
-
* caller is `prepareModelSettings` in `agent/model-profile-settings.ts`, which
|
|
72
|
-
* keeps the two candidates in separate variables for exactly this reason.
|
|
73
|
-
*
|
|
74
|
-
* Slots whose kit, or whose referenced profile, disappeared are DROPPED and
|
|
75
|
-
* reported, so the caller can log the release instead of silently forgetting it.
|
|
76
|
-
*/
|
|
77
|
-
export declare function applyHeldToLive<T extends HeldTarget>(candidate: T, sessionKit: SessionKitState | null | undefined): {
|
|
78
|
-
candidate: T;
|
|
79
|
-
dropped: KitSlot[];
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Keep a session kit alive across `Reload settings` (D-6).
|
|
83
|
-
*
|
|
84
|
-
* THE PROJECTION HAS TO BE RECOMPUTED, not just the bindings: `I-3` says a
|
|
85
|
-
* library's projections never depend on whether a kit exists, so a live config
|
|
86
|
-
* whose `mainId` says "kit" while `provider`/`model` still name the reloaded
|
|
87
|
-
* file would break the equivalence every other surface relies on. Hence the
|
|
88
|
-
* round trip through `projectModelProfiles` + `resolveModelProfileState`.
|
|
89
|
-
*/
|
|
90
|
-
export declare function carrySessionKit(input: {
|
|
91
|
-
resolved: CliConfig;
|
|
92
|
-
previous: CliConfig;
|
|
93
|
-
}): CliConfig;
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where the ACTIVE kit comes from, and the two places a session kit has to be
|
|
3
|
-
* re-applied (agent-model-kits §4.3 / D-5 / D-6).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/config/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* ONE TRUTH, PURELY DERIVED. `CliConfig` carries only `sessionKit: {id, held}`;
|
|
8
|
-
* everything a surface prints about "which kit is running" comes out of
|
|
9
|
-
* `resolveActiveKit(config)`. There is no `config.activeKit` field, because a
|
|
10
|
-
* second copy of that answer is a copy that can disagree with the first.
|
|
11
|
-
*/
|
|
12
|
-
import { getLogger } from '../logging/logger.js';
|
|
13
|
-
import { normalizeProfileBaseUrl, projectModelProfiles, resolveModelProfileState } from './model-profile-resolution.js';
|
|
14
|
-
import { findKit, kitCandidate, kitSlotConnections } from './model-kits.js';
|
|
15
|
-
/** The three slots, in the order every surface prints them. */
|
|
16
|
-
export const ALL_SLOTS = ['main', 'fast', 'subagent'];
|
|
17
|
-
/** The name the UI gives "no kit is in effect" (D-13). */
|
|
18
|
-
export const CURRENT_SETUP_NAME = 'Current setup';
|
|
19
|
-
/**
|
|
20
|
-
* The answer when there is no kit, or when the host has no kit support at all.
|
|
21
|
-
*
|
|
22
|
-
* A CONSTANT SO CALLERS CANNOT INVENT A SECOND SHAPE: `App` needs one value that
|
|
23
|
-
* renders "no chip, `Current setup` row" for a controller that predates this
|
|
24
|
-
* port (a test double, an embedded host), and re-deriving it there would be a
|
|
25
|
-
* second definition of "nothing".
|
|
26
|
-
*/
|
|
27
|
-
export const INACTIVE_KIT = { source: 'none', id: null,
|
|
28
|
-
name: CURRENT_SETUP_NAME, held: [], modified: false, driftReasons: [],
|
|
29
|
-
missingProfiles: [] };
|
|
30
|
-
function driftOfMain(config, connection) {
|
|
31
|
-
if (!connection)
|
|
32
|
-
return [];
|
|
33
|
-
const changed = [];
|
|
34
|
-
if (config.provider !== connection.provider)
|
|
35
|
-
changed.push('provider');
|
|
36
|
-
if (config.model !== connection.model)
|
|
37
|
-
changed.push('model');
|
|
38
|
-
if (normalizeProfileBaseUrl(config.baseUrl) !== normalizeProfileBaseUrl(connection.baseUrl)) {
|
|
39
|
-
changed.push('endpoint');
|
|
40
|
-
}
|
|
41
|
-
return changed.length ? [`main: ${changed.join(', ')} changed`] : [];
|
|
42
|
-
}
|
|
43
|
-
function driftOfFast(config, kit, connection) {
|
|
44
|
-
if (kit.fastProfileId === null) {
|
|
45
|
-
// D-8: this kit TURNS THE TIER OFF, so the endpoints are irrelevant - only
|
|
46
|
-
// "is it on" can disagree. Comparing endpoints here would report drift for
|
|
47
|
-
// every user who ever ran a fast tier before applying a fast-off kit.
|
|
48
|
-
return config.fast.enabled ? ['fast: turned back on'] : [];
|
|
49
|
-
}
|
|
50
|
-
if (!connection)
|
|
51
|
-
return [];
|
|
52
|
-
const changed = [];
|
|
53
|
-
if (!config.fast.enabled)
|
|
54
|
-
changed.push('off');
|
|
55
|
-
if (config.fast.provider !== connection.provider)
|
|
56
|
-
changed.push('provider');
|
|
57
|
-
if (config.fast.model !== connection.model)
|
|
58
|
-
changed.push('model');
|
|
59
|
-
if (normalizeProfileBaseUrl(config.fast.baseUrl)
|
|
60
|
-
!== normalizeProfileBaseUrl(connection.baseUrl))
|
|
61
|
-
changed.push('endpoint');
|
|
62
|
-
return changed.length ? [`fast: ${changed.join(', ')} changed`] : [];
|
|
63
|
-
}
|
|
64
|
-
function driftOfSubagent(config, kit, connection) {
|
|
65
|
-
if (!connection)
|
|
66
|
-
return [];
|
|
67
|
-
const sameMode = config.team?.model === kit.subagent.model;
|
|
68
|
-
const sameId = kit.subagent.model === 'profile'
|
|
69
|
-
? (config.team?.modelProfileId ?? null) === kit.subagent.modelProfileId : true;
|
|
70
|
-
return sameMode && sameId ? [] : ['subagent: changed'];
|
|
71
|
-
}
|
|
72
|
-
function subagentConnection(config, kit) {
|
|
73
|
-
if (kit.subagent.model === 'profile')
|
|
74
|
-
return kit.subagent.modelProfileId;
|
|
75
|
-
return kit.subagent.model === 'main' ? 'main' : 'fast';
|
|
76
|
-
}
|
|
77
|
-
/** Build the verdict for a kit that exists, whatever installed it. */
|
|
78
|
-
function describe(config, library, kit, source, held) {
|
|
79
|
-
const connections = kitSlotConnections(library, kit);
|
|
80
|
-
const drift = { reasons: [], missing: [] };
|
|
81
|
-
if (held.includes('main')) {
|
|
82
|
-
if (!connections.main)
|
|
83
|
-
drift.missing.push('main');
|
|
84
|
-
else
|
|
85
|
-
drift.reasons.push(...driftOfMain(config, connections.main));
|
|
86
|
-
}
|
|
87
|
-
if (held.includes('fast')) {
|
|
88
|
-
if (kit.fastProfileId !== null && !connections.fast)
|
|
89
|
-
drift.missing.push('fast');
|
|
90
|
-
else
|
|
91
|
-
drift.reasons.push(...driftOfFast(config, kit, connections.fast));
|
|
92
|
-
}
|
|
93
|
-
if (held.includes('subagent')) {
|
|
94
|
-
const missingProfile = kit.subagent.model === 'profile' && !connections.subagent.name;
|
|
95
|
-
if (missingProfile)
|
|
96
|
-
drift.missing.push('subagent');
|
|
97
|
-
else
|
|
98
|
-
drift.reasons.push(...driftOfSubagent(config, kit, subagentConnection(config, kit)));
|
|
99
|
-
}
|
|
100
|
-
if (held.length < ALL_SLOTS.length)
|
|
101
|
-
drift.reasons.push(`holds ${held.join('+') || 'nothing'}`);
|
|
102
|
-
return { source, id: kit.id, name: kit.name, held: [...held],
|
|
103
|
-
modified: held.length < ALL_SLOTS.length || drift.reasons.length > 0
|
|
104
|
-
|| drift.missing.length > 0,
|
|
105
|
-
driftReasons: drift.reasons, missingProfiles: drift.missing };
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Which kit is in effect, and whether it has drifted (§4.8).
|
|
109
|
-
*
|
|
110
|
-
* Precedence is D-6's: session kit, then the persisted default, then the disk
|
|
111
|
-
* bindings (which the UI calls `Current setup`).
|
|
112
|
-
*/
|
|
113
|
-
export function resolveActiveKit(config) {
|
|
114
|
-
const library = config.modelProfiles;
|
|
115
|
-
const state = config.sessionKit;
|
|
116
|
-
const session = state ? findKit(library, state.id) : undefined;
|
|
117
|
-
if (state && session) {
|
|
118
|
-
const held = state.held.filter((slot) => ALL_SLOTS.includes(slot));
|
|
119
|
-
return describe(config, library, session, 'session', held.length ? held : []);
|
|
120
|
-
}
|
|
121
|
-
const fallback = findKit(library, library?.defaultKitId ?? null);
|
|
122
|
-
if (library && fallback)
|
|
123
|
-
return describe(config, library, fallback, 'default', [...ALL_SLOTS]);
|
|
124
|
-
return { source: 'none', id: null, name: CURRENT_SETUP_NAME, held: [], modified: false,
|
|
125
|
-
driftReasons: [], missingProfiles: [] };
|
|
126
|
-
}
|
|
127
|
-
function slotSurvives(library, kit, slot) {
|
|
128
|
-
const ids = new Set(library.entries.map((entry) => entry.id));
|
|
129
|
-
if (slot === 'main')
|
|
130
|
-
return ids.has(kit.mainProfileId);
|
|
131
|
-
if (slot === 'fast')
|
|
132
|
-
return kit.fastProfileId === null || ids.has(kit.fastProfileId);
|
|
133
|
-
return kit.subagent.model !== 'profile'
|
|
134
|
-
|| (!!kit.subagent.modelProfileId && ids.has(kit.subagent.modelProfileId));
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Re-apply the still-`held` slots of a session kit onto a candidate.
|
|
138
|
-
*
|
|
139
|
-
* THE RETURN VALUE MAY ONLY EVER FEED `liveCandidate`. It must NEVER be handed
|
|
140
|
-
* to `commitModelSettings` (I-14 / RV-P0-1): "this session only" is a claim
|
|
141
|
-
* about the FILE, and a held slot that reaches the commit turns one unrelated
|
|
142
|
-
* save into a permanent, invisible change of the user's defaults. The one
|
|
143
|
-
* caller is `prepareModelSettings` in `agent/model-profile-settings.ts`, which
|
|
144
|
-
* keeps the two candidates in separate variables for exactly this reason.
|
|
145
|
-
*
|
|
146
|
-
* Slots whose kit, or whose referenced profile, disappeared are DROPPED and
|
|
147
|
-
* reported, so the caller can log the release instead of silently forgetting it.
|
|
148
|
-
*/
|
|
149
|
-
export function applyHeldToLive(candidate, sessionKit) {
|
|
150
|
-
const heldIn = sessionKit?.held ?? [];
|
|
151
|
-
if (!sessionKit || heldIn.length === 0)
|
|
152
|
-
return { candidate, dropped: [] };
|
|
153
|
-
const library = candidate.modelProfiles;
|
|
154
|
-
const kit = findKit(library, sessionKit.id);
|
|
155
|
-
if (!library || !kit)
|
|
156
|
-
return { candidate, dropped: [...heldIn] };
|
|
157
|
-
const held = heldIn.filter((slot) => slotSurvives(library, kit, slot));
|
|
158
|
-
const dropped = heldIn.filter((slot) => !held.includes(slot));
|
|
159
|
-
if (!held.length)
|
|
160
|
-
return { candidate, dropped };
|
|
161
|
-
const patch = kitCandidate({ library, kit });
|
|
162
|
-
const next = {
|
|
163
|
-
...candidate,
|
|
164
|
-
modelProfiles: { ...library,
|
|
165
|
-
...(held.includes('main') ? { mainId: kit.mainProfileId } : {}),
|
|
166
|
-
...(held.includes('fast') ? { fastId: kit.fastProfileId } : {}) },
|
|
167
|
-
};
|
|
168
|
-
if (held.includes('subagent')) {
|
|
169
|
-
next.team = { ...candidate.team, ...patch.team };
|
|
170
|
-
}
|
|
171
|
-
if (held.includes('fast')) {
|
|
172
|
-
next.fast = { ...candidate.fast, enabled: kit.fastProfileId !== null };
|
|
173
|
-
}
|
|
174
|
-
return { candidate: next, dropped };
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Keep a session kit alive across `Reload settings` (D-6).
|
|
178
|
-
*
|
|
179
|
-
* THE PROJECTION HAS TO BE RECOMPUTED, not just the bindings: `I-3` says a
|
|
180
|
-
* library's projections never depend on whether a kit exists, so a live config
|
|
181
|
-
* whose `mainId` says "kit" while `provider`/`model` still name the reloaded
|
|
182
|
-
* file would break the equivalence every other surface relies on. Hence the
|
|
183
|
-
* round trip through `projectModelProfiles` + `resolveModelProfileState`.
|
|
184
|
-
*/
|
|
185
|
-
export function carrySessionKit(input) {
|
|
186
|
-
const state = input.previous.sessionKit;
|
|
187
|
-
const { resolved } = input;
|
|
188
|
-
if (!state)
|
|
189
|
-
return resolved;
|
|
190
|
-
const library = resolved.modelProfiles;
|
|
191
|
-
const kit = findKit(library, state.id);
|
|
192
|
-
if (!library || !kit) {
|
|
193
|
-
getLogger().warn('config', 'session_kit_released', { reason: 'kit_missing' });
|
|
194
|
-
return { ...resolved, sessionKit: undefined };
|
|
195
|
-
}
|
|
196
|
-
const applied = applyHeldToLive(resolved, state);
|
|
197
|
-
const held = state.held.filter((slot) => !applied.dropped.includes(slot));
|
|
198
|
-
if (!held.length) {
|
|
199
|
-
getLogger().warn('config', 'session_kit_released', { reason: 'slots_dropped' });
|
|
200
|
-
return { ...resolved, sessionKit: undefined };
|
|
201
|
-
}
|
|
202
|
-
const file = applied.candidate;
|
|
203
|
-
const projected = projectModelProfiles(file).file;
|
|
204
|
-
const next = { ...resolved, modelProfiles: projected.modelProfiles };
|
|
205
|
-
if (held.includes('main')) {
|
|
206
|
-
next.provider = projected.provider;
|
|
207
|
-
next.model = projected.model;
|
|
208
|
-
next.baseUrl = projected.baseUrl ?? undefined;
|
|
209
|
-
if (next.contextWindowOrigin !== 'env') {
|
|
210
|
-
next.contextWindow = projected.contextWindow ?? null;
|
|
211
|
-
next.contextWindowOrigin = next.contextWindow === null ? undefined : 'profile';
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
if (held.includes('fast') && projected.fast) {
|
|
215
|
-
next.fast = { ...next.fast, provider: projected.fast.provider ?? '',
|
|
216
|
-
model: projected.fast.model ?? '', baseUrl: projected.fast.baseUrl ?? '' };
|
|
217
|
-
}
|
|
218
|
-
if (held.includes('subagent') && file.team)
|
|
219
|
-
next.team = { ...next.team, ...file.team };
|
|
220
|
-
next.modelProfileState = resolveModelProfileState(next);
|
|
221
|
-
next.sessionKit = { id: kit.id, held };
|
|
222
|
-
if (applied.dropped.length) {
|
|
223
|
-
getLogger().warn('config', 'session_kit_slots_dropped', { slots: applied.dropped });
|
|
224
|
-
}
|
|
225
|
-
return next;
|
|
226
|
-
}
|