@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
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* different agent.
|
|
16
16
|
*/
|
|
17
17
|
import { textResult } from '@aragon-agent/core';
|
|
18
|
-
import { GOV_LIMITS } from '
|
|
18
|
+
import { GOV_LIMITS } from '@aragon-agent/tui/model/governance/limits';
|
|
19
19
|
import { Issues, formatNotAccepted, isRecord, readBool, readInteger, withNotes, } from './normalize-util.js';
|
|
20
20
|
const ARTIFACT_ID_CHARS = 120;
|
|
21
21
|
const VIEW_TARGET_CHARS = 200;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* finding, or an `ALL_PASS` next to a `gap` row, is not repairable: either the verdict or
|
|
16
16
|
* the evidence is wrong and only the author knows which.
|
|
17
17
|
*/
|
|
18
|
-
import type { ReviewSubmission, TestSubmission, WorkSubmission } from '
|
|
18
|
+
import type { ReviewSubmission, TestSubmission, WorkSubmission } from '@aragon-agent/tui/model/governance/types';
|
|
19
19
|
import { type Normalized } from './normalize-util.js';
|
|
20
20
|
export type WorkSubmissionInput = Pick<WorkSubmission, 'wpId' | 'summary' | 'filesChanged' | 'interfaceContracts' | 'verification'> & Partial<Pick<WorkSubmission, 'appeal' | 'escalate'>>;
|
|
21
21
|
/** Validate and repair a `gov_submit_work` argument object. Pure. */
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* finding, or an `ALL_PASS` next to a `gap` row, is not repairable: either the verdict or
|
|
16
16
|
* the evidence is wrong and only the author knows which.
|
|
17
17
|
*/
|
|
18
|
-
import { GOV_LIMITS } from '
|
|
18
|
+
import { GOV_LIMITS } from '@aragon-agent/tui/model/governance/limits';
|
|
19
19
|
import { Issues, SUBMIT_LIMITS as L, isRecord, readBool, readInteger, } from './normalize-util.js';
|
|
20
20
|
const VERDICTS = ['PASS', 'PASS_WITH_FIXES', 'NEEDS_REWORK'];
|
|
21
21
|
const TEST_VERDICTS = [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* fields they know and the engine call receives the bound identity.
|
|
16
16
|
*/
|
|
17
17
|
import { type AgentTool } from '@aragon-agent/core';
|
|
18
|
-
import type { GovernanceEngineApi, Identity } from '
|
|
18
|
+
import type { GovernanceEngineApi, Identity } from '@aragon-agent/tui/model/governance/types';
|
|
19
19
|
export * from './normalize-util.js';
|
|
20
20
|
export * from './submit-normalizers.js';
|
|
21
21
|
/** `gov_submit_work`: DEV (and the FIX developer). */
|
|
@@ -20,7 +20,7 @@ import { getLogsDir } from '../config/app-paths.js';
|
|
|
20
20
|
import { loadConfig } from '../config/load.js';
|
|
21
21
|
import { isLogFileName } from './file-sink.js';
|
|
22
22
|
import { getLogger } from './logger.js';
|
|
23
|
-
import { LOG_LEVELS, isLogLevel } from '
|
|
23
|
+
import { LOG_LEVELS, isLogLevel } from '@aragon-agent/tui/model/logging/levels';
|
|
24
24
|
const EXIT_OK = 0;
|
|
25
25
|
const EXIT_RUNTIME = 1;
|
|
26
26
|
const EXIT_USAGE = 2;
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* subcommand; the full-screen branch swaps in one that restores first.
|
|
37
37
|
* ══════════════════════════════════════════════════════════════════════════
|
|
38
38
|
*/
|
|
39
|
-
import { type LogConfig } from '
|
|
39
|
+
import { type LogConfig } from '@aragon-agent/tui/model/config/schema';
|
|
40
40
|
import { Logger, type LogScope } from './logger.js';
|
|
41
41
|
/**
|
|
42
42
|
* Hand the screen-restore duty to whoever actually owns the screen.
|
package/dist/logging/install.js
CHANGED
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
import process from 'node:process';
|
|
40
40
|
import { getHomeResolutionWarning } from '../config/app-paths.js';
|
|
41
41
|
import { readConfigFile } from '../config/store.js';
|
|
42
|
-
import { clampLogConfig } from '
|
|
43
|
-
import { clampLogLevel } from '
|
|
42
|
+
import { clampLogConfig } from '@aragon-agent/tui/model/config/schema';
|
|
43
|
+
import { clampLogLevel } from '@aragon-agent/tui/model/logging/levels';
|
|
44
44
|
import { Logger, setActiveLogger } from './logger.js';
|
|
45
|
-
import { registerProfileSecrets, registerSecretsFrom } from '
|
|
45
|
+
import { registerProfileSecrets, registerSecretsFrom } from '@aragon-agent/tui/model/logging/secret-registry';
|
|
46
46
|
/** POSIX signal numbers for the `128 + signo` exit-code convention. */
|
|
47
47
|
const SIGNAL_NUMBERS = { SIGINT: 2, SIGTERM: 15, SIGHUP: 1 };
|
|
48
48
|
let screenRestore = () => { };
|
package/dist/logging/logger.d.ts
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* same day's file: `sid` separates their interleaved lines, and `pid` is what
|
|
21
21
|
* still matches up with what the OS recorded after a crash.
|
|
22
22
|
*/
|
|
23
|
-
import type { LogConfig } from '
|
|
24
|
-
import { type LogLevelName } from '
|
|
23
|
+
import type { LogConfig } from '@aragon-agent/tui/model/config/schema';
|
|
24
|
+
import { type LogLevelName } from '@aragon-agent/tui/model/logging/levels';
|
|
25
25
|
/** Closed set, not free text: a typo'd scope is a record nobody can filter on. */
|
|
26
26
|
export type LogScope = 'cli' | 'config' | 'agent' | 'tool' | 'skills' | 'llm' | 'migrate' | 'log' | 'fast' | 'history' | 'update' | 'compaction' | 'session' | 'branch' | 'bridge';
|
|
27
27
|
export interface LogRecord {
|
package/dist/logging/logger.js
CHANGED
|
@@ -25,9 +25,10 @@ import { join } from 'node:path';
|
|
|
25
25
|
import process from 'node:process';
|
|
26
26
|
import { getLogsDir } from '../config/app-paths.js';
|
|
27
27
|
import { FileSink, currentLogFileName } from './file-sink.js';
|
|
28
|
-
import { isLevelEnabled } from '
|
|
28
|
+
import { isLevelEnabled } from '@aragon-agent/tui/model/logging/levels';
|
|
29
|
+
import { setTuiLogger } from '@aragon-agent/tui/model/logging/log-port';
|
|
29
30
|
import { redactRecord } from './redact.js';
|
|
30
|
-
import { getSecrets } from '
|
|
31
|
+
import { getSecrets } from '@aragon-agent/tui/model/logging/secret-registry';
|
|
31
32
|
const DISABLED_CONFIG = {
|
|
32
33
|
level: 'silent',
|
|
33
34
|
toFile: false,
|
|
@@ -235,3 +236,31 @@ export function resetLoggerForTest() {
|
|
|
235
236
|
active?.closeSink();
|
|
236
237
|
active = null;
|
|
237
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Connects the terminal-UI log port to this logger (tui-package-split S1).
|
|
241
|
+
*
|
|
242
|
+
* Four view-model / renderer modules log through `log-port` instead of importing this file,
|
|
243
|
+
* because they live in another package. The wiring is HERE, as an import side effect, and not
|
|
244
|
+
* in `installLogging()` or a test setup file, for two reasons that each cost a failed run:
|
|
245
|
+
*
|
|
246
|
+
* - Anything that can observe those records imports this module (`getLogger()` is how a test
|
|
247
|
+
* spies on them, `installLogging()` is how the executable gets a real one), so the port is
|
|
248
|
+
* connected in exactly the processes where it matters and nowhere else.
|
|
249
|
+
* - A vitest `setupFiles` entry cannot do it: setup runs before the test file, and importing
|
|
250
|
+
* this module's dependency `config/app-paths` from there captures the home directory BEFORE
|
|
251
|
+
* a test that sets `ARAGON_HOME` at the top of its file gets to - 66 cases then read and
|
|
252
|
+
* write the wrong directory.
|
|
253
|
+
*
|
|
254
|
+
* LAZY: every call re-reads `getLogger()`. `installLogging()` replaces the singleton and
|
|
255
|
+
* `resetLoggerForTest()` discards it; a forwarder that captured the instance would keep writing
|
|
256
|
+
* to a closed logger and drop every record after the swap. No cast is needed: `Logger` accepts
|
|
257
|
+
* every `TuiLogScope` because that union is a subset of `LogScope`, so widening the port without
|
|
258
|
+
* widening `LogScope` is a compile error right here.
|
|
259
|
+
*/
|
|
260
|
+
setTuiLogger({
|
|
261
|
+
error: (scope, msg, data) => getLogger().error(scope, msg, data),
|
|
262
|
+
warn: (scope, msg, data) => getLogger().warn(scope, msg, data),
|
|
263
|
+
info: (scope, msg, data) => getLogger().info(scope, msg, data),
|
|
264
|
+
debug: (scope, msg, data) => getLogger().debug(scope, msg, data),
|
|
265
|
+
child: (scope) => getLogger().child(scope),
|
|
266
|
+
});
|
package/dist/proc/kill-tree.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { spawn, spawnSync } from 'node:child_process';
|
|
26
26
|
import process from 'node:process';
|
|
27
|
-
import { PROC_LIMITS } from '
|
|
27
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
28
28
|
/** Is the pid still there? `signal 0` tests for existence without delivering. */
|
|
29
29
|
export function isAlive(pid) {
|
|
30
30
|
if (pid === undefined || !Number.isFinite(pid) || pid <= 0)
|
package/dist/proc/log-mirror.js
CHANGED
|
@@ -28,7 +28,7 @@ import { appendFile, appendFileSync, mkdirSync, readdirSync, rmSync, statSync }
|
|
|
28
28
|
import { existsSync } from 'node:fs';
|
|
29
29
|
import { dirname, join } from 'node:path';
|
|
30
30
|
import { getLogger } from '../logging/logger.js';
|
|
31
|
-
import { PROC_LIMITS } from '
|
|
31
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
32
32
|
/**
|
|
33
33
|
* True when `path` holds nothing but `<jobId>.log` files, or nothing at all.
|
|
34
34
|
*
|
package/dist/proc/log-ring.js
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* is "terminal-safe rows", and no consumer can forget — and it follows the same
|
|
19
19
|
* "two bounds are two different literals" rule.
|
|
20
20
|
*/
|
|
21
|
-
import { sanitizeChunk, toDisplayRow } from '
|
|
22
|
-
import { PROC_LIMITS } from '
|
|
21
|
+
import { sanitizeChunk, toDisplayRow } from '@aragon-agent/tui/model/tools/terminal-output';
|
|
22
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
23
23
|
/**
|
|
24
24
|
* A per-service ring.
|
|
25
25
|
*
|
package/dist/proc/notices.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* second notice for the same id is always the same fact restated - which is what
|
|
16
16
|
* makes the relay's re-queueing after a queue wipe idempotent (I-11).
|
|
17
17
|
*/
|
|
18
|
-
import type { JobKind, ServiceStatus } from '
|
|
18
|
+
import type { JobKind, ServiceStatus } from '@aragon-agent/tui/model/proc/types';
|
|
19
19
|
export interface JobNotice {
|
|
20
20
|
/** The job: `t3` / `s1`. */
|
|
21
21
|
id: string;
|
package/dist/proc/notices.js
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
* second notice for the same id is always the same fact restated - which is what
|
|
16
16
|
* makes the relay's re-queueing after a queue wipe idempotent (I-11).
|
|
17
17
|
*/
|
|
18
|
-
import { formatDuration } from '
|
|
19
|
-
import { PROC_LIMITS } from '
|
|
18
|
+
import { formatDuration } from '@aragon-agent/tui/model/agent/usage';
|
|
19
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
20
20
|
/**
|
|
21
21
|
* Insertion-ordered, deduplicated by id, bounded by `PROC_LIMITS.maxNotices`.
|
|
22
22
|
*
|
package/dist/proc/prompt.d.ts
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* `JOBS_BLOCK_VERSION` exists so a change to this wording is greppable from a
|
|
41
41
|
* behaviour report.
|
|
42
42
|
*/
|
|
43
|
-
import { JOBS_BLOCK_VERSION } from '
|
|
43
|
+
import { JOBS_BLOCK_VERSION } from '@aragon-agent/tui/model/proc/limits';
|
|
44
44
|
export { JOBS_BLOCK_VERSION };
|
|
45
45
|
export declare function buildBackgroundJobsBlock(): string;
|
|
46
46
|
export declare function buildBackgroundServicesBlock(): string;
|
package/dist/proc/prompt.js
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* `JOBS_BLOCK_VERSION` exists so a change to this wording is greppable from a
|
|
41
41
|
* behaviour report.
|
|
42
42
|
*/
|
|
43
|
-
import { JOBS_BLOCK_VERSION } from '
|
|
43
|
+
import { JOBS_BLOCK_VERSION } from '@aragon-agent/tui/model/proc/limits';
|
|
44
44
|
export { JOBS_BLOCK_VERSION };
|
|
45
45
|
export function buildBackgroundJobsBlock() {
|
|
46
46
|
return [
|
|
@@ -53,10 +53,13 @@ export function buildBackgroundJobsBlock() {
|
|
|
53
53
|
'- Start one with bash({ command, background: true }). You get a job id: `t1` for a',
|
|
54
54
|
' task (it will finish) or `s1` for a service (it will not). The call returns in a',
|
|
55
55
|
' few seconds with the first lines of output.',
|
|
56
|
-
'- Wait with job_wait({ job: "t1" }). Every wait is bounded (default 30s, at most',
|
|
57
|
-
'
|
|
58
|
-
' your last cursor.
|
|
59
|
-
'
|
|
56
|
+
'- Wait with job_wait({ job: "t1" }). Every wait is bounded (default 30s, at most 20',
|
|
57
|
+
' minutes = timeoutSeconds 1200) and returns one status line, one progress line, and',
|
|
58
|
+
' only the output since your last cursor. Prefer ONE long wait over several short',
|
|
59
|
+
' ones: follow the [next] suggestion or the job\'s ETA. A wait ends the moment the job',
|
|
60
|
+
' finishes or the user sends a message. Use job "any" to wake on the first of several',
|
|
61
|
+
' jobs, "all" for the last. Call it again only after deciding something; do other',
|
|
62
|
+
' work in between if you have any.',
|
|
60
63
|
'- Nothing but a bounded wait tells you a job finished. When one finishes while you',
|
|
61
64
|
' are busy, a <job_notices> block appears at the end of a tool result - that is the',
|
|
62
65
|
' notification, not an error.',
|
package/dist/proc/readiness.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* hold the loop open, and they are reaped on exit.
|
|
15
15
|
*/
|
|
16
16
|
import net from 'node:net';
|
|
17
|
-
import { PROC_LIMITS } from '
|
|
17
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
18
18
|
/**
|
|
19
19
|
* A loopback/wildcard `http(s)` URL, with an optional port and path.
|
|
20
20
|
*
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* unconditionally. With the flag off this object holds foreground pids, nothing
|
|
19
19
|
* else, and allocates no timers.
|
|
20
20
|
*/
|
|
21
|
-
import { type JobLogMirrorPort, type ProcEventListener, type ProcSupervisorPort, type ServiceLogPage, type ServiceSnapshot, type ServiceStartRequest, type ServiceStartResult } from '
|
|
21
|
+
import { type JobLogMirrorPort, type ProcEventListener, type ProcSupervisorPort, type ServiceLogPage, type ServiceSnapshot, type ServiceStartRequest, type ServiceStartResult } from '@aragon-agent/tui/model/proc/types';
|
|
22
22
|
export interface ProcSupervisorOptions {
|
|
23
23
|
/** `cfg.bash.readyTimeoutMs`, read once per service at spawn. */
|
|
24
24
|
readyTimeoutMs: () => number;
|
package/dist/proc/supervisor.js
CHANGED
|
@@ -23,11 +23,11 @@ import process from 'node:process';
|
|
|
23
23
|
import { getLogger } from '../logging/logger.js';
|
|
24
24
|
import { extractPortHint } from './classify.js';
|
|
25
25
|
import { isAlive, killTree, killTreeSync } from './kill-tree.js';
|
|
26
|
-
import { PROC_LIMITS } from '
|
|
26
|
+
import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
|
|
27
27
|
import { LogRing } from './log-ring.js';
|
|
28
|
-
import { extractProgress } from '
|
|
28
|
+
import { extractProgress } from '@aragon-agent/tui/model/proc/progress';
|
|
29
29
|
import { probePort, ReadinessWatcher } from './readiness.js';
|
|
30
|
-
import { isTerminalStatus, } from '
|
|
30
|
+
import { isTerminalStatus, } from '@aragon-agent/tui/model/proc/types';
|
|
31
31
|
export class ProcSupervisor {
|
|
32
32
|
opts;
|
|
33
33
|
services = new Map();
|
|
@@ -590,7 +590,13 @@ export class ProcSupervisor {
|
|
|
590
590
|
// covered by AC-26 / AC-38 instead.
|
|
591
591
|
lastOutputAt: r.lastOutputAt,
|
|
592
592
|
...(r.progress
|
|
593
|
-
? {
|
|
593
|
+
? {
|
|
594
|
+
progress: {
|
|
595
|
+
text: r.progress.text,
|
|
596
|
+
kind: r.progress.kind,
|
|
597
|
+
fraction: r.progress.fraction,
|
|
598
|
+
},
|
|
599
|
+
}
|
|
594
600
|
: {}),
|
|
595
601
|
...(this.isStalled(r) ? { stalled: true } : {}),
|
|
596
602
|
...(r.logPath !== undefined ? { logPath: r.logPath } : {}),
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait-length advice for `job_wait` (extended-job-wait §3.5).
|
|
3
|
+
*
|
|
4
|
+
* ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope.
|
|
5
|
+
*
|
|
6
|
+
* PURE: no IO, no clock. The output is TEXT for the model (the `[next]` line) and
|
|
7
|
+
* nothing else (I-13): the tool never refuses or rewrites a wait because it
|
|
8
|
+
* differs from the suggestion, for the reason `[guard]` only hints. The aim is
|
|
9
|
+
* fewer, longer waits - one 10-minute wait costs one LLM round trip, twenty
|
|
10
|
+
* 30-second waits cost twenty.
|
|
11
|
+
*/
|
|
12
|
+
/** Sizes a suggestion snaps UP to, so the model sees round numbers it can reuse. */
|
|
13
|
+
export declare const NICE_WAIT_SECONDS: readonly number[];
|
|
14
|
+
/** The raw token after `ETA` in a progress line (`13m`, `01:23:45`), if any. */
|
|
15
|
+
export declare function extractEtaText(progressText: string | undefined): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Remaining seconds from the text after `ETA` in a progress line.
|
|
18
|
+
*
|
|
19
|
+
* Accepts `13m`, `45s`, `2h`, `13m20s`, `1h02m`, `01:23:45`, `12:30`, `0:45`.
|
|
20
|
+
* Anything else - including no `ETA` at all - is `undefined`; never throws.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseEtaSeconds(progressText: string | undefined): number | undefined;
|
|
23
|
+
export interface SuggestWaitInput {
|
|
24
|
+
jobAgeMs: number;
|
|
25
|
+
/** The clamped request of the previous wait (not the time it actually ran). */
|
|
26
|
+
lastWaitSeconds: number;
|
|
27
|
+
/** Consecutive waits with no new row and no progress change. */
|
|
28
|
+
quietWaits: number;
|
|
29
|
+
etaSeconds?: number | undefined;
|
|
30
|
+
/** `jobs.waitSeconds`. */
|
|
31
|
+
configuredSeconds: number;
|
|
32
|
+
minSeconds: number;
|
|
33
|
+
maxSeconds: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The wait length to suggest next, deterministic and always within
|
|
37
|
+
* `[minSeconds, maxSeconds]`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function suggestWaitSeconds(input: SuggestWaitInput): number;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait-length advice for `job_wait` (extended-job-wait §3.5).
|
|
3
|
+
*
|
|
4
|
+
* ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope.
|
|
5
|
+
*
|
|
6
|
+
* PURE: no IO, no clock. The output is TEXT for the model (the `[next]` line) and
|
|
7
|
+
* nothing else (I-13): the tool never refuses or rewrites a wait because it
|
|
8
|
+
* differs from the suggestion, for the reason `[guard]` only hints. The aim is
|
|
9
|
+
* fewer, longer waits - one 10-minute wait costs one LLM round trip, twenty
|
|
10
|
+
* 30-second waits cost twenty.
|
|
11
|
+
*/
|
|
12
|
+
/** Sizes a suggestion snaps UP to, so the model sees round numbers it can reuse. */
|
|
13
|
+
export const NICE_WAIT_SECONDS = [30, 60, 120, 180, 300, 420, 600, 900, 1200];
|
|
14
|
+
const UNIT_SECONDS = { h: 3600, m: 60, s: 1 };
|
|
15
|
+
/** The raw token after `ETA` in a progress line (`13m`, `01:23:45`), if any. */
|
|
16
|
+
export function extractEtaText(progressText) {
|
|
17
|
+
if (progressText === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
return /ETA[^0-9]{0,4}([0-9][0-9a-z:]*)/i.exec(progressText)?.[1];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Remaining seconds from the text after `ETA` in a progress line.
|
|
23
|
+
*
|
|
24
|
+
* Accepts `13m`, `45s`, `2h`, `13m20s`, `1h02m`, `01:23:45`, `12:30`, `0:45`.
|
|
25
|
+
* Anything else - including no `ETA` at all - is `undefined`; never throws.
|
|
26
|
+
*/
|
|
27
|
+
export function parseEtaSeconds(progressText) {
|
|
28
|
+
const value = extractEtaText(progressText)?.toLowerCase();
|
|
29
|
+
if (value === undefined)
|
|
30
|
+
return undefined;
|
|
31
|
+
if (value.includes(':')) {
|
|
32
|
+
const parts = value.split(':');
|
|
33
|
+
if (parts.length < 2 || parts.length > 3 || !parts.every((p) => /^\d{1,3}$/.test(p))) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const numbers = parts.map(Number);
|
|
37
|
+
return numbers.length === 3
|
|
38
|
+
? numbers[0] * 3600 + numbers[1] * 60 + numbers[2]
|
|
39
|
+
: numbers[0] * 60 + numbers[1];
|
|
40
|
+
}
|
|
41
|
+
const units = /^(?:\d+[hms])+$/.exec(value);
|
|
42
|
+
if (!units)
|
|
43
|
+
return undefined;
|
|
44
|
+
let total = 0;
|
|
45
|
+
for (const part of value.matchAll(/(\d+)([hms])/g)) {
|
|
46
|
+
total += Number(part[1]) * (UNIT_SECONDS[part[2]] ?? 0);
|
|
47
|
+
}
|
|
48
|
+
return total > 0 ? total : undefined;
|
|
49
|
+
}
|
|
50
|
+
/** Age ladder: the older the job, the longer one wait should be. */
|
|
51
|
+
function ladderSeconds(jobAgeMs) {
|
|
52
|
+
if (jobAgeMs < 2 * 60_000)
|
|
53
|
+
return 30;
|
|
54
|
+
if (jobAgeMs < 10 * 60_000)
|
|
55
|
+
return 120;
|
|
56
|
+
if (jobAgeMs < 30 * 60_000)
|
|
57
|
+
return 300;
|
|
58
|
+
return 600;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The wait length to suggest next, deterministic and always within
|
|
62
|
+
* `[minSeconds, maxSeconds]`.
|
|
63
|
+
*/
|
|
64
|
+
export function suggestWaitSeconds(input) {
|
|
65
|
+
const finite = (n, fallback) => (Number.isFinite(n) ? n : fallback);
|
|
66
|
+
const ladder = ladderSeconds(finite(input.jobAgeMs, 0));
|
|
67
|
+
const last = finite(input.lastWaitSeconds, 0);
|
|
68
|
+
let candidate = input.quietWaits >= 2 ? Math.max(ladder, last * 2) : ladder;
|
|
69
|
+
// The ETA outranks the ladder: wait until just after the job says it is done.
|
|
70
|
+
// Early ETAs swing wildly, which is fine - the next result re-suggests.
|
|
71
|
+
if (input.etaSeconds !== undefined && Number.isFinite(input.etaSeconds)) {
|
|
72
|
+
candidate = input.etaSeconds + 15;
|
|
73
|
+
}
|
|
74
|
+
candidate = Math.max(candidate, finite(input.configuredSeconds, 0));
|
|
75
|
+
const snapped = NICE_WAIT_SECONDS.find((n) => n >= candidate) ?? input.maxSeconds;
|
|
76
|
+
return Math.max(input.minSeconds, Math.min(snapped, input.maxSeconds));
|
|
77
|
+
}
|
package/dist/proc/wait.d.ts
CHANGED
|
@@ -23,33 +23,66 @@
|
|
|
23
23
|
* nothing at all (the supervisor now emits `stopped` from it), and
|
|
24
24
|
* `dispose()` clears its listener set without emitting; the self-timeout is
|
|
25
25
|
* therefore a real second path, not belt-and-braces.
|
|
26
|
+
* 5. THE HEARTBEAT RE-CHECKS THE DEADLINE AGAINST `now()`, NOT AGAINST THE
|
|
27
|
+
* TIMER (extended-job-wait). A 20-minute wait spans a laptop lid: Node's
|
|
28
|
+
* monotonic `setTimeout` does not count the sleep, so a "10 minute" wait can
|
|
29
|
+
* run 40 minutes of wall clock. Each beat compares `now() - startedAt` with
|
|
30
|
+
* the budget and settles on the first beat after resume.
|
|
31
|
+
*
|
|
32
|
+
* THE WAKE SOURCE IS EDGE-TRIGGERED ONLY - there is no "is something pending"
|
|
33
|
+
* probe. The engine drains steering before EVERY tool execution
|
|
34
|
+
* (`core/src/engine/agent-loop.ts`), so input that arrived before this wait began
|
|
35
|
+
* has already been accepted; only input that arrives AFTER `subscribe()` needs to
|
|
36
|
+
* end the wait. Between the engine's decision to run `job_wait` and the
|
|
37
|
+
* `subscribe()` below there is no `await`, so no notification can fall into the
|
|
38
|
+
* gap. A level-triggered probe would add a stale-state hot loop (every wait
|
|
39
|
+
* returning at once) for no reachable gain.
|
|
26
40
|
*/
|
|
27
|
-
import type { ProcSupervisorPort, ServiceLogPage, ServiceSnapshot } from '
|
|
41
|
+
import type { ProcSupervisorPort, ServiceLogPage, ServiceSnapshot } from '@aragon-agent/tui/model/proc/types';
|
|
28
42
|
/** The port surface this module needs. Deliberately narrower than the full port. */
|
|
29
43
|
export type WaitPort = Pick<ProcSupervisorPort, 'get' | 'read' | 'subscribe'>;
|
|
44
|
+
/** Anything that can say "the user just spoke". Edge-triggered; see rule 5 above. */
|
|
45
|
+
export interface WakeSource {
|
|
46
|
+
/** Calls `listener` once per new user input after this call; returns the unsubscribe. */
|
|
47
|
+
subscribe(listener: () => void): () => void;
|
|
48
|
+
}
|
|
30
49
|
export interface WaitForJobsRequest {
|
|
31
50
|
/** Ids already resolved by the caller. An empty list returns immediately. */
|
|
32
51
|
targets: readonly string[];
|
|
33
|
-
/** Already clamped by the caller (`jobs.waitSeconds
|
|
52
|
+
/** Already clamped by the caller (`jobs.waitSeconds` and `WAIT_SECONDS_RANGE`). */
|
|
34
53
|
timeoutMs: number;
|
|
35
54
|
/** The tool call's `ctx.signal`. Aborting resolves the wait with `aborted: true`. */
|
|
36
55
|
signal?: AbortSignal;
|
|
37
56
|
/** Cursor from a previous `job_wait` / `bash_output`; omit for the whole tail. */
|
|
38
57
|
since?: number;
|
|
58
|
+
/** 'all' (default): every target must end. 'any': the first terminal target ends the wait. */
|
|
59
|
+
mode?: 'all' | 'any';
|
|
60
|
+
/** User-input wake source; absent for a sub-agent, a test or an old caller. */
|
|
61
|
+
wakeOn?: WakeSource;
|
|
62
|
+
/** Beat that drives the live view and re-checks the deadline against `now()`. */
|
|
63
|
+
heartbeat?: {
|
|
64
|
+
everyMs: number;
|
|
65
|
+
onBeat: (nowMs: number) => void;
|
|
66
|
+
};
|
|
39
67
|
}
|
|
40
68
|
export interface JobWaitOutcome {
|
|
41
69
|
/** One snapshot per target that still exists, in the requested order. */
|
|
42
70
|
jobs: ServiceSnapshot[];
|
|
43
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* `mode: 'all'` (default): every target reached a terminal status.
|
|
73
|
+
* `mode: 'any'`: at least one did.
|
|
74
|
+
*/
|
|
44
75
|
terminal: boolean;
|
|
45
76
|
waitedMs: number;
|
|
46
77
|
timedOut: boolean;
|
|
47
78
|
aborted: boolean;
|
|
79
|
+
/** The wait ended because the user sent a message. */
|
|
80
|
+
woken: boolean;
|
|
48
81
|
/** Incremental page per target, read at settle time. */
|
|
49
82
|
pages: ReadonlyMap<string, ServiceLogPage>;
|
|
50
83
|
}
|
|
51
84
|
/**
|
|
52
|
-
* Wait up to `timeoutMs` for
|
|
85
|
+
* Wait up to `timeoutMs` for the targets to reach a terminal status.
|
|
53
86
|
*
|
|
54
87
|
* Resolves - never rejects - and always after at most `timeoutMs`. `now` is
|
|
55
88
|
* injectable so a test can assert `waitedMs` without depending on wall clock.
|
package/dist/proc/wait.js
CHANGED
|
@@ -23,8 +23,22 @@
|
|
|
23
23
|
* nothing at all (the supervisor now emits `stopped` from it), and
|
|
24
24
|
* `dispose()` clears its listener set without emitting; the self-timeout is
|
|
25
25
|
* therefore a real second path, not belt-and-braces.
|
|
26
|
+
* 5. THE HEARTBEAT RE-CHECKS THE DEADLINE AGAINST `now()`, NOT AGAINST THE
|
|
27
|
+
* TIMER (extended-job-wait). A 20-minute wait spans a laptop lid: Node's
|
|
28
|
+
* monotonic `setTimeout` does not count the sleep, so a "10 minute" wait can
|
|
29
|
+
* run 40 minutes of wall clock. Each beat compares `now() - startedAt` with
|
|
30
|
+
* the budget and settles on the first beat after resume.
|
|
31
|
+
*
|
|
32
|
+
* THE WAKE SOURCE IS EDGE-TRIGGERED ONLY - there is no "is something pending"
|
|
33
|
+
* probe. The engine drains steering before EVERY tool execution
|
|
34
|
+
* (`core/src/engine/agent-loop.ts`), so input that arrived before this wait began
|
|
35
|
+
* has already been accepted; only input that arrives AFTER `subscribe()` needs to
|
|
36
|
+
* end the wait. Between the engine's decision to run `job_wait` and the
|
|
37
|
+
* `subscribe()` below there is no `await`, so no notification can fall into the
|
|
38
|
+
* gap. A level-triggered probe would add a stale-state hot loop (every wait
|
|
39
|
+
* returning at once) for no reachable gain.
|
|
26
40
|
*/
|
|
27
|
-
import { isTerminalStatus } from '
|
|
41
|
+
import { isTerminalStatus } from '@aragon-agent/tui/model/proc/types';
|
|
28
42
|
/** Read one bounded page per target; `read()` returns `undefined` for a vanished id. */
|
|
29
43
|
function readPages(port, targets, since) {
|
|
30
44
|
const pages = new Map();
|
|
@@ -49,24 +63,41 @@ function allSettled(port, targets) {
|
|
|
49
63
|
return snapshot === undefined || isTerminalStatus(snapshot.status);
|
|
50
64
|
});
|
|
51
65
|
}
|
|
66
|
+
/** Has any target ended? Same unknown-id rule as `allSettled`. */
|
|
67
|
+
function anySettled(port, targets) {
|
|
68
|
+
return targets.some((id) => {
|
|
69
|
+
const snapshot = port.get(id);
|
|
70
|
+
return snapshot === undefined || isTerminalStatus(snapshot.status);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
52
73
|
/**
|
|
53
|
-
*
|
|
74
|
+
* THE ONE PREDICATE for "is this wait over", shared by the entry fast path and the
|
|
75
|
+
* `finish` funnel. Using it in only one of them makes `mode: 'any'` subscribe and
|
|
76
|
+
* burn the whole timeout when a target had already ended.
|
|
77
|
+
*/
|
|
78
|
+
function isDone(port, targets, mode) {
|
|
79
|
+
return mode === 'any' ? anySettled(port, targets) : allSettled(port, targets);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Wait up to `timeoutMs` for the targets to reach a terminal status.
|
|
54
83
|
*
|
|
55
84
|
* Resolves - never rejects - and always after at most `timeoutMs`. `now` is
|
|
56
85
|
* injectable so a test can assert `waitedMs` without depending on wall clock.
|
|
57
86
|
*/
|
|
58
87
|
export async function waitForJob(port, req, now = Date.now) {
|
|
59
88
|
const { targets, signal } = req;
|
|
89
|
+
const mode = req.mode ?? 'all';
|
|
60
90
|
const startedAt = now();
|
|
61
91
|
// RULE 1. Nothing to wait for at all, or everything already ended: no
|
|
62
92
|
// subscription, no timer, `waitedMs: 0`.
|
|
63
|
-
if (targets.length === 0 ||
|
|
93
|
+
if (targets.length === 0 || isDone(port, targets, mode)) {
|
|
64
94
|
return {
|
|
65
95
|
jobs: collect(port, targets),
|
|
66
96
|
terminal: true,
|
|
67
97
|
waitedMs: 0,
|
|
68
98
|
timedOut: false,
|
|
69
99
|
aborted: false,
|
|
100
|
+
woken: false,
|
|
70
101
|
pages: readPages(port, targets, req.since),
|
|
71
102
|
};
|
|
72
103
|
}
|
|
@@ -79,6 +110,8 @@ export async function waitForJob(port, req, now = Date.now) {
|
|
|
79
110
|
// from inside the listener instead of resolving the wait.
|
|
80
111
|
let unsubscribe = () => { };
|
|
81
112
|
let timer;
|
|
113
|
+
let beat;
|
|
114
|
+
let unwake = () => { };
|
|
82
115
|
/** Assigned below; declared here so `finish` never reads an uninitialised binding. */
|
|
83
116
|
let onAbort = () => { };
|
|
84
117
|
// RULE 3: the one funnel. Idempotent, and it releases every reference before
|
|
@@ -88,15 +121,19 @@ export async function waitForJob(port, req, now = Date.now) {
|
|
|
88
121
|
return;
|
|
89
122
|
done = true;
|
|
90
123
|
unsubscribe();
|
|
124
|
+
unwake();
|
|
91
125
|
if (timer !== undefined)
|
|
92
126
|
clearTimeout(timer);
|
|
127
|
+
if (beat !== undefined)
|
|
128
|
+
clearInterval(beat);
|
|
93
129
|
signal?.removeEventListener('abort', onAbort);
|
|
94
130
|
resolve({
|
|
95
131
|
jobs: collect(port, targets),
|
|
96
|
-
terminal: reason === 'terminal' ||
|
|
132
|
+
terminal: reason === 'terminal' || isDone(port, targets, mode),
|
|
97
133
|
waitedMs: now() - startedAt,
|
|
98
134
|
timedOut: reason === 'timeout',
|
|
99
135
|
aborted: reason === 'abort',
|
|
136
|
+
woken: reason === 'wake',
|
|
100
137
|
pages: readPages(port, targets, req.since),
|
|
101
138
|
});
|
|
102
139
|
};
|
|
@@ -105,12 +142,38 @@ export async function waitForJob(port, req, now = Date.now) {
|
|
|
105
142
|
return;
|
|
106
143
|
if (!targets.includes(event.service.id))
|
|
107
144
|
return;
|
|
108
|
-
if (
|
|
145
|
+
if (isDone(port, targets, mode))
|
|
109
146
|
finish('terminal');
|
|
110
147
|
});
|
|
148
|
+
// The user spoke. Edge-triggered: only a notification after this line counts.
|
|
149
|
+
unwake = req.wakeOn?.subscribe(() => finish('wake')) ?? (() => { });
|
|
150
|
+
if (done) {
|
|
151
|
+
// A source that notifies synchronously inside `subscribe` already settled us.
|
|
152
|
+
unwake();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
111
155
|
// RULE 2: `unref`, so a pending wait never keeps a quitting process alive.
|
|
112
156
|
timer = setTimeout(() => finish('timeout'), Math.max(0, req.timeoutMs));
|
|
113
157
|
timer.unref?.();
|
|
158
|
+
// RULE 5. Also the view's 1 Hz clock. A throwing `onBeat` is a renderer bug and
|
|
159
|
+
// must never kill a 20-minute wait.
|
|
160
|
+
if (req.heartbeat) {
|
|
161
|
+
const { everyMs, onBeat } = req.heartbeat;
|
|
162
|
+
beat = setInterval(() => {
|
|
163
|
+
const current = now();
|
|
164
|
+
if (current - startedAt >= req.timeoutMs) {
|
|
165
|
+
finish('timeout');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
onBeat(current);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Deliberately swallowed: see above.
|
|
173
|
+
}
|
|
174
|
+
}, Math.max(1, everyMs));
|
|
175
|
+
beat.unref?.();
|
|
176
|
+
}
|
|
114
177
|
onAbort = () => finish('abort');
|
|
115
178
|
// `{ once: true }` AND the explicit removal in `finish`: the option alone
|
|
116
179
|
// leaves the listener registered on a signal that outlives this wait.
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* with candidates rather than a guess (D-22).
|
|
22
22
|
*/
|
|
23
23
|
import type { CommandContext, CommandRegistry } from '../commands/registry.js';
|
|
24
|
-
import type { QuickPrompt } from '
|
|
24
|
+
import type { QuickPrompt } from '@aragon-agent/tui/model/prompts/types';
|
|
25
25
|
export declare function registerPromptCommands(registry: CommandRegistry): void;
|
|
26
26
|
/** `1. title [fav] #tag 12 uses` - no body, ever (D-17). */
|
|
27
27
|
export declare function promptListLine(prompt: QuickPrompt, at: number): string;
|
package/dist/prompts/command.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* repeat, and `rm` has no recycle bin, so an ambiguous reference is a NAMED failure
|
|
21
21
|
* with candidates rather than a guess (D-22).
|
|
22
22
|
*/
|
|
23
|
-
import { PROMPT_DISABLED_COPY, PROMPT_HISTORY_REMINDER_COPY, PROMPT_LIST_EMPTY_COPY, PROMPT_SHOW_WARNING_COPY, PROMPT_UNKNOWN_SUBCOMMAND_COPY, PROMPT_UNAVAILABLE_COPY, promptAmbiguousCopy, promptDeletedCopy, promptErrorCopy, promptFavoriteCopy, promptInvalidSortCopy, promptListFooterCopy, promptMovedCopy, promptMoveRangeCopy, promptNotFoundCopy, promptRmConfirmCopy, promptSavedCopy, promptSortedCopy, } from '
|
|
23
|
+
import { PROMPT_DISABLED_COPY, PROMPT_HISTORY_REMINDER_COPY, PROMPT_LIST_EMPTY_COPY, PROMPT_SHOW_WARNING_COPY, PROMPT_UNKNOWN_SUBCOMMAND_COPY, PROMPT_UNAVAILABLE_COPY, promptAmbiguousCopy, promptDeletedCopy, promptErrorCopy, promptFavoriteCopy, promptInvalidSortCopy, promptListFooterCopy, promptMovedCopy, promptMoveRangeCopy, promptNotFoundCopy, promptRmConfirmCopy, promptSavedCopy, promptSortedCopy, } from '@aragon-agent/tui/model/prompts/copy';
|
|
24
24
|
import { promptIndexOf } from './resolve.js';
|
|
25
25
|
import { createPrompt, deletePrompt, loadPromptLibrary, reorderPrompt, reorderPrompts, setPromptFavorite, sortPromptIds, } from './store.js';
|
|
26
26
|
/**
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* because by then the text is the only copy and dropping the entry to protect a
|
|
17
17
|
* ceiling would delete the user's work to keep a number tidy.
|
|
18
18
|
*/
|
|
19
|
-
import type { PromptLibrary, QuickPrompt } from '
|
|
19
|
+
import type { PromptLibrary, QuickPrompt } from '@aragon-agent/tui/model/prompts/types';
|
|
20
20
|
/**
|
|
21
21
|
* One entry, or `null` when it cannot be salvaged.
|
|
22
22
|
*
|