@aragon-agent/cli 0.6.47 → 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 +13 -0
- package/README.md +27 -6
- package/dist/agent/coalesce.d.ts +1 -1
- package/dist/agent/controller.d.ts +21 -21
- package/dist/agent/controller.js +13 -13
- 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/{ui → app}/App.d.ts +9 -9
- package/dist/{ui → app}/App.js +79 -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 +29 -29
- 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 +6 -6
- 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 +1 -1
- package/dist/proc/readiness.js +1 -1
- package/dist/proc/supervisor.d.ts +1 -1
- package/dist/proc/supervisor.js +3 -3
- package/dist/proc/wait.d.ts +1 -1
- package/dist/proc/wait.js +1 -1
- 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/clear-archive.d.ts +2 -2
- package/dist/session/persist.d.ts +2 -2
- package/dist/session/persist.js +1 -1
- package/dist/session/startup-session.d.ts +2 -2
- package/dist/session/validate-session.js +3 -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 +2 -2
- package/dist/tools/job-tools.js +4 -4
- 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 -857
- package/dist/agent/reducer.js +0 -1646
- 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 -1383
- 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 -214
- package/dist/proc/limits.js +0 -221
- package/dist/proc/progress.d.ts +0 -47
- package/dist/proc/progress.js +0 -163
- package/dist/proc/types.d.ts +0 -269
- package/dist/proc/types.js +0 -15
- package/dist/proc/wait-view.d.ts +0 -65
- package/dist/proc/wait-view.js +0 -66
- 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 -51
- 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 -130
- 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 -258
- 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 -169
- 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/entries/WaitCard.d.ts +0 -37
- package/dist/ui/entries/WaitCard.js +0 -92
- 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 -84
- package/dist/ui/interaction-copy.js +0 -41
- 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 -140
- package/dist/ui/layout/status-layout.js +0 -262
- 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 -494
- package/dist/ui/layout/wait-bar.d.ts +0 -34
- package/dist/ui/layout/wait-bar.js +0 -48
- 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 -63
- 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 -130
- package/dist/ui/scrollback/overflow-print.d.ts +0 -108
- package/dist/ui/scrollback/overflow-print.js +0 -120
- package/dist/ui/scrollback/renderer.d.ts +0 -48
- package/dist/ui/scrollback/renderer.js +0 -186
- package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
- package/dist/ui/scrollback/scrollback-writer.js +0 -648
- package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
- package/dist/ui/scrollback/settled-boundary.js +0 -109
- package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
- package/dist/ui/scrollback/tail-anchor.js +0 -79
- package/dist/ui/scrollback/tail-window.d.ts +0 -73
- package/dist/ui/scrollback/tail-window.js +0 -89
- package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
- package/dist/ui/scrollback/use-scrollback-view.js +0 -601
- package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
- package/dist/ui/scrollback/writer-shapes.js +0 -159
- package/dist/ui/scrollbar-controller.d.ts +0 -30
- package/dist/ui/scrollbar-controller.js +0 -124
- package/dist/ui/selection/highlight.d.ts +0 -39
- package/dist/ui/selection/highlight.js +0 -64
- package/dist/ui/selection/screen-mirror.d.ts +0 -24
- package/dist/ui/selection/screen-mirror.js +0 -35
- package/dist/ui/selection/selection-controller.d.ts +0 -104
- package/dist/ui/selection/selection-controller.js +0 -372
- package/dist/ui/selection/selection.d.ts +0 -90
- package/dist/ui/selection/selection.js +0 -223
- package/dist/ui/shortcuts.d.ts +0 -81
- package/dist/ui/shortcuts.js +0 -221
- package/dist/ui/status-feedback.d.ts +0 -35
- package/dist/ui/status-feedback.js +0 -38
- package/dist/ui/stdout-frame-writer.d.ts +0 -74
- package/dist/ui/stdout-frame-writer.js +0 -155
- package/dist/ui/team-status.d.ts +0 -166
- package/dist/ui/team-status.js +0 -252
- package/dist/ui/terminal-plan.d.ts +0 -52
- package/dist/ui/terminal-plan.js +0 -49
- package/dist/ui/theme.d.ts +0 -96
- package/dist/ui/theme.js +0 -130
- package/dist/ui/transcript-text.d.ts +0 -41
- package/dist/ui/transcript-text.js +0 -282
- package/dist/ui/use-height-store.d.ts +0 -31
- package/dist/ui/use-height-store.js +0 -76
- package/dist/ui/use-render-governor.d.ts +0 -39
- package/dist/ui/use-render-governor.js +0 -57
- package/dist/ui/use-wheel-routing.d.ts +0 -57
- package/dist/ui/use-wheel-routing.js +0 -152
- package/dist/ui/win-vt-force.d.ts +0 -136
- package/dist/ui/win-vt-force.js +0 -237
- package/dist/ui/win-vt-input.d.ts +0 -57
- package/dist/ui/win-vt-input.js +0 -62
- package/dist/update/limits.d.ts +0 -111
- package/dist/update/limits.js +0 -111
- package/dist/update/semver.d.ts +0 -89
- package/dist/update/semver.js +0 -295
- package/dist/update/types.d.ts +0 -169
- package/dist/update/types.js +0 -68
- /package/dist/{ui → app}/session-bridge.d.ts +0 -0
- /package/dist/{ui → app}/session-bridge.js +0 -0
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { graphemes, graphemeWidth } from '../editor-navigation.js';
|
|
2
|
-
/**
|
|
3
|
-
* `wrapToRows` — the prose wrapper for `OverlayFrame`'s controlled (mode A)
|
|
4
|
-
* content (plan-mode §6.6).
|
|
5
|
-
*
|
|
6
|
-
* Mode A's contract is *one element per row, each already `wrap="truncate"`*,
|
|
7
|
-
* and `sliceWindow` counts ELEMENTS, not lines. Help and Settings satisfy that
|
|
8
|
-
* naturally because their content is a list of short rows. A plan is not: its
|
|
9
|
-
* summary runs to 600 characters and a step detail to 400, so handing either
|
|
10
|
-
* over as a single `<Text>` renders the whole paragraph as one truncated line —
|
|
11
|
-
* the single worst failure available to a plan review card, and one that also
|
|
12
|
-
* makes the frame's `1-14/22` position indicator a false statement.
|
|
13
|
-
*
|
|
14
|
-
* The repo had no wrapper before this (no `wrapText`, no `wordWrap`), so here is
|
|
15
|
-
* one: pure, no Ink, unit-tested.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Break `text` into lines of at most `width` columns.
|
|
19
|
-
*
|
|
20
|
-
* Prefers spaces; hard-breaks any single token longer than `width` (a URL or a
|
|
21
|
-
* long path, which must not be dropped and cannot be wrapped politely).
|
|
22
|
-
* Width is measured in terminal cells and hard breaks preserve graphemes. A
|
|
23
|
-
* single grapheme wider than the limit stays intact on its own row.
|
|
24
|
-
* Existing newlines are honoured as paragraph breaks. Returns `[]` for empty
|
|
25
|
-
* input so callers can splice the result without an emptiness branch.
|
|
26
|
-
*/
|
|
27
|
-
export function wrapToRows(text, width) {
|
|
28
|
-
if (typeof text !== 'string' || text.length === 0)
|
|
29
|
-
return [];
|
|
30
|
-
const limit = Math.max(1, Math.floor(width));
|
|
31
|
-
const rows = [];
|
|
32
|
-
for (const paragraph of text.split('\n')) {
|
|
33
|
-
if (paragraph.trim().length === 0) {
|
|
34
|
-
// A blank line in the source is a deliberate separator; keep it as a row
|
|
35
|
-
// rather than collapsing it, or the summary and the steps run together.
|
|
36
|
-
rows.push('');
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
rows.push(...wrapParagraph(paragraph, limit));
|
|
40
|
-
}
|
|
41
|
-
return rows;
|
|
42
|
-
}
|
|
43
|
-
function wrapParagraph(paragraph, limit) {
|
|
44
|
-
const rows = [];
|
|
45
|
-
let current = '';
|
|
46
|
-
let currentWidth = 0;
|
|
47
|
-
for (const word of paragraph.split(/\s+/).filter((w) => w.length > 0)) {
|
|
48
|
-
const parts = graphemes(word);
|
|
49
|
-
const wordWidth = parts.reduce((sum, part) => sum + graphemeWidth(part.text), 0);
|
|
50
|
-
if (wordWidth > limit) {
|
|
51
|
-
// Flush what we have, then chop the over-long token into full-width
|
|
52
|
-
// pieces. Its tail becomes the new `current` so the next word can still
|
|
53
|
-
// join it.
|
|
54
|
-
if (current.length > 0) {
|
|
55
|
-
rows.push(current);
|
|
56
|
-
current = '';
|
|
57
|
-
currentWidth = 0;
|
|
58
|
-
}
|
|
59
|
-
for (const part of parts) {
|
|
60
|
-
const cells = graphemeWidth(part.text);
|
|
61
|
-
if (current && currentWidth + cells > limit) {
|
|
62
|
-
rows.push(current);
|
|
63
|
-
current = '';
|
|
64
|
-
currentWidth = 0;
|
|
65
|
-
}
|
|
66
|
-
current += part.text;
|
|
67
|
-
currentWidth += cells;
|
|
68
|
-
}
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (current.length === 0) {
|
|
72
|
-
current = word;
|
|
73
|
-
currentWidth = wordWidth;
|
|
74
|
-
}
|
|
75
|
-
else if (currentWidth + 1 + wordWidth <= limit) {
|
|
76
|
-
current = `${current} ${word}`;
|
|
77
|
-
currentWidth += 1 + wordWidth;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
rows.push(current);
|
|
81
|
-
current = word;
|
|
82
|
-
currentWidth = wordWidth;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (current.length > 0)
|
|
86
|
-
rows.push(current);
|
|
87
|
-
return rows;
|
|
88
|
-
}
|
package/dist/ui/live-clamp.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/** Keep the newest thinking lines visible while an assistant entry streams. */
|
|
2
|
-
export interface LiveClamp {
|
|
3
|
-
text: string;
|
|
4
|
-
/** Rows dropped off the FRONT. `0` means the text was returned untouched. */
|
|
5
|
-
hiddenRows: number;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Keep the LAST `maxRows` rows of `text`; report how many were dropped.
|
|
9
|
-
*
|
|
10
|
-
* Rows, not wrapped display lines: this runs per frame on a streaming entry, and
|
|
11
|
-
* a wrap-aware count would need the column width and a second full scan of a
|
|
12
|
-
* string this function exists to avoid scanning twice.
|
|
13
|
-
*/
|
|
14
|
-
export declare function clampLiveText(text: string, maxRows: number): LiveClamp;
|
package/dist/ui/live-clamp.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/** Keep the newest thinking lines visible while an assistant entry streams. */
|
|
2
|
-
/**
|
|
3
|
-
* Keep the LAST `maxRows` rows of `text`; report how many were dropped.
|
|
4
|
-
*
|
|
5
|
-
* Rows, not wrapped display lines: this runs per frame on a streaming entry, and
|
|
6
|
-
* a wrap-aware count would need the column width and a second full scan of a
|
|
7
|
-
* string this function exists to avoid scanning twice.
|
|
8
|
-
*/
|
|
9
|
-
export function clampLiveText(text, maxRows) {
|
|
10
|
-
if (!Number.isFinite(maxRows) || maxRows <= 0)
|
|
11
|
-
return { text: '', hiddenRows: rowCount(text) };
|
|
12
|
-
const keep = Math.floor(maxRows);
|
|
13
|
-
// Cheap reject: a string with fewer than `keep` newlines cannot have more than
|
|
14
|
-
// `keep` rows, and this is the path every ordinary entry takes.
|
|
15
|
-
let newlines = 0;
|
|
16
|
-
for (let i = 0; i < text.length; i += 1) {
|
|
17
|
-
if (text.charCodeAt(i) === 10)
|
|
18
|
-
newlines += 1;
|
|
19
|
-
}
|
|
20
|
-
if (newlines + 1 <= keep)
|
|
21
|
-
return { text, hiddenRows: 0 };
|
|
22
|
-
// Walk back from the end to the `keep`-th newline rather than splitting the
|
|
23
|
-
// whole string: the point of the clamp is to stop touching the head at all.
|
|
24
|
-
let cut = text.length;
|
|
25
|
-
let seen = 0;
|
|
26
|
-
for (let i = text.length - 1; i >= 0; i -= 1) {
|
|
27
|
-
if (text.charCodeAt(i) === 10) {
|
|
28
|
-
seen += 1;
|
|
29
|
-
if (seen === keep) {
|
|
30
|
-
cut = i + 1;
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return { text: text.slice(cut), hiddenRows: newlines + 1 - keep };
|
|
36
|
-
}
|
|
37
|
-
function rowCount(text) {
|
|
38
|
-
if (text.length === 0)
|
|
39
|
-
return 0;
|
|
40
|
-
let n = 1;
|
|
41
|
-
for (let i = 0; i < text.length; i += 1) {
|
|
42
|
-
if (text.charCodeAt(i) === 10)
|
|
43
|
-
n += 1;
|
|
44
|
-
}
|
|
45
|
-
return n;
|
|
46
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Markdown parsing layer (spec §4.7). Pure and React-free so the grammar can be
|
|
3
|
-
* unit-tested without rendering anything. `string-width` is the only import and
|
|
4
|
-
* it is a pure function of its argument, so the module stays side-effect free.
|
|
5
|
-
*
|
|
6
|
-
* Scope is deliberately small — this is not CommonMark. It covers what a coding
|
|
7
|
-
* agent's answers actually contain: fenced code, headings, lists, quotes, rules,
|
|
8
|
-
* tables, and inline emphasis / code / strikethrough.
|
|
9
|
-
*/
|
|
10
|
-
/** Heading levels are rendered with three distinct weights, not one (§4.7). */
|
|
11
|
-
export interface HeadingBlock {
|
|
12
|
-
kind: 'heading';
|
|
13
|
-
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
14
|
-
text: string;
|
|
15
|
-
}
|
|
16
|
-
export interface RuleBlock {
|
|
17
|
-
kind: 'rule';
|
|
18
|
-
}
|
|
19
|
-
/** Column alignment carried by a table's `|---|:--:|` divider row. */
|
|
20
|
-
export type Align = 'left' | 'right' | 'center';
|
|
21
|
-
export interface TableBlock {
|
|
22
|
-
kind: 'table';
|
|
23
|
-
/** Already column-aligned; render as plain monospace rows. */
|
|
24
|
-
rows: string[][];
|
|
25
|
-
align: Align[];
|
|
26
|
-
}
|
|
27
|
-
export declare function parseHeading(line: string): HeadingBlock | null;
|
|
28
|
-
export declare function isRule(line: string): boolean;
|
|
29
|
-
/** Split one `| a | b |` row into trimmed cells. Returns null if not a row. */
|
|
30
|
-
export declare function parseTableRow(line: string): string[] | null;
|
|
31
|
-
/** Is this the `|---|:--:|` divider that makes the preceding row a header? */
|
|
32
|
-
export declare function isTableDivider(line: string): boolean;
|
|
33
|
-
export declare function tableAlignments(dividerLine: string): TableBlock['align'];
|
|
34
|
-
/**
|
|
35
|
-
* How the table is drawn. Both characters are injected by the renderer from
|
|
36
|
-
* `pickGlyphs(caps)` because this file is inside the ASCII-only scan
|
|
37
|
-
* (`glyphs.test.ts::inScope`): a Unicode box-drawing literal here would fail
|
|
38
|
-
* that guard.
|
|
39
|
-
*/
|
|
40
|
-
export interface TableFormatOptions {
|
|
41
|
-
/** Drawn between cells; `Markdown.tsx` passes `glyphs.railVertical`. */
|
|
42
|
-
separator?: string;
|
|
43
|
-
/** Repeated to a column's padded width; `Markdown.tsx` passes `glyphs.hrule`. */
|
|
44
|
-
rule?: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Pad a parsed table into fixed-width columns and draw the header rule.
|
|
48
|
-
*
|
|
49
|
-
* Returns `[header, divider, ...bodyRows]`, one string per rendered row, so
|
|
50
|
-
* index 0 is always the header and index 1 always the divider. The divider is
|
|
51
|
-
* rendered rather than swallowed because the parser consumes the source
|
|
52
|
-
* `|---|` row to read alignment: without it, a `--no-color` terminal showed a
|
|
53
|
-
* table as unseparated prose (bold is dropped at colour level 0, and the old
|
|
54
|
-
* two-space join gave no column boundary either).
|
|
55
|
-
*
|
|
56
|
-
* Padding is by DISPLAY columns, not `String.length`: a CJK cell is one code
|
|
57
|
-
* unit but two terminal columns, so `.length` misaligned every such table.
|
|
58
|
-
*/
|
|
59
|
-
export declare function formatTable(rows: string[][], align: TableBlock['align'], options?: TableFormatOptions): string[];
|
|
60
|
-
/**
|
|
61
|
-
* One parsed top-level block.
|
|
62
|
-
*
|
|
63
|
-
* `line` is deliberately UNPARSED: heading / rule / quote / bullet detection is
|
|
64
|
-
* a handful of regexes over one short string and is done at render time, where
|
|
65
|
-
* the theme and the glyph set live. Caching a themed element instead would make
|
|
66
|
-
* `/theme` a no-op until the cache evicted (K-5).
|
|
67
|
-
*/
|
|
68
|
-
export type MdBlock = {
|
|
69
|
-
kind: 'code';
|
|
70
|
-
code: string;
|
|
71
|
-
lang: string;
|
|
72
|
-
} | {
|
|
73
|
-
kind: 'table';
|
|
74
|
-
rows: string[][];
|
|
75
|
-
align: Align[];
|
|
76
|
-
} | {
|
|
77
|
-
kind: 'line';
|
|
78
|
-
text: string;
|
|
79
|
-
};
|
|
80
|
-
/** Split a document into fenced code, pipe tables, and everything else. */
|
|
81
|
-
export declare function parseMarkdownBlocks(text: string): MdBlock[];
|
|
82
|
-
export type InlineSpan = {
|
|
83
|
-
kind: 'text';
|
|
84
|
-
text: string;
|
|
85
|
-
} | {
|
|
86
|
-
kind: 'code';
|
|
87
|
-
text: string;
|
|
88
|
-
} | {
|
|
89
|
-
kind: 'bold';
|
|
90
|
-
text: string;
|
|
91
|
-
} | {
|
|
92
|
-
kind: 'italic';
|
|
93
|
-
text: string;
|
|
94
|
-
} | {
|
|
95
|
-
kind: 'strike';
|
|
96
|
-
text: string;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Two passes, and that ordering is the fix (§4.7).
|
|
100
|
-
*
|
|
101
|
-
* The old single regex alternated `code | bold | italic` at the same level, so
|
|
102
|
-
* `**bold with `code` inside**` matched neither branch cleanly and rendered as
|
|
103
|
-
* literal asterisks. Splitting code out FIRST — and never looking for emphasis
|
|
104
|
-
* inside a code span — resolves both cases: emphasis around code now works, and
|
|
105
|
-
* asterisks inside code stay literal, which is what a shell snippet needs.
|
|
106
|
-
*/
|
|
107
|
-
export declare function parseInline(text: string): InlineSpan[];
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Markdown parsing layer (spec §4.7). Pure and React-free so the grammar can be
|
|
3
|
-
* unit-tested without rendering anything. `string-width` is the only import and
|
|
4
|
-
* it is a pure function of its argument, so the module stays side-effect free.
|
|
5
|
-
*
|
|
6
|
-
* Scope is deliberately small — this is not CommonMark. It covers what a coding
|
|
7
|
-
* agent's answers actually contain: fenced code, headings, lists, quotes, rules,
|
|
8
|
-
* tables, and inline emphasis / code / strikethrough.
|
|
9
|
-
*/
|
|
10
|
-
import stringWidth from 'string-width';
|
|
11
|
-
const HEADING_RE = /^(#{1,6})\s+(.*)$/;
|
|
12
|
-
/** `---`, `***` or `___`, three or more, nothing else on the line. */
|
|
13
|
-
const RULE_RE = /^(?:-{3,}|\*{3,}|_{3,})$/;
|
|
14
|
-
const TABLE_ROW_RE = /^\s*\|(.+)\|\s*$/;
|
|
15
|
-
const TABLE_DIVIDER_CELL_RE = /^:?-{1,}:?$/;
|
|
16
|
-
export function parseHeading(line) {
|
|
17
|
-
const m = HEADING_RE.exec(line);
|
|
18
|
-
if (!m)
|
|
19
|
-
return null;
|
|
20
|
-
return { kind: 'heading', level: m[1].length, text: m[2] ?? '' };
|
|
21
|
-
}
|
|
22
|
-
export function isRule(line) {
|
|
23
|
-
return RULE_RE.test(line.trim());
|
|
24
|
-
}
|
|
25
|
-
/** Split one `| a | b |` row into trimmed cells. Returns null if not a row. */
|
|
26
|
-
export function parseTableRow(line) {
|
|
27
|
-
const m = TABLE_ROW_RE.exec(line);
|
|
28
|
-
if (!m)
|
|
29
|
-
return null;
|
|
30
|
-
return m[1].split('|').map((c) => c.trim());
|
|
31
|
-
}
|
|
32
|
-
/** Is this the `|---|:--:|` divider that makes the preceding row a header? */
|
|
33
|
-
export function isTableDivider(line) {
|
|
34
|
-
const cells = parseTableRow(line);
|
|
35
|
-
if (!cells || cells.length === 0)
|
|
36
|
-
return false;
|
|
37
|
-
return cells.every((c) => TABLE_DIVIDER_CELL_RE.test(c));
|
|
38
|
-
}
|
|
39
|
-
export function tableAlignments(dividerLine) {
|
|
40
|
-
const cells = parseTableRow(dividerLine) ?? [];
|
|
41
|
-
return cells.map((c) => {
|
|
42
|
-
const left = c.startsWith(':');
|
|
43
|
-
const right = c.endsWith(':');
|
|
44
|
-
if (left && right)
|
|
45
|
-
return 'center';
|
|
46
|
-
if (right)
|
|
47
|
-
return 'right';
|
|
48
|
-
return 'left';
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
/** Default column separator: pure ASCII, so this module holds no glyph literal. */
|
|
52
|
-
const DEFAULT_TABLE_SEPARATOR = '|';
|
|
53
|
-
/** Default header rule: pure ASCII for the same reason. */
|
|
54
|
-
const DEFAULT_TABLE_RULE = '-';
|
|
55
|
-
/** One space either side of the separator, so a boundary is unmistakable. */
|
|
56
|
-
const TABLE_CELL_GAP = ' ';
|
|
57
|
-
/**
|
|
58
|
-
* Pad a parsed table into fixed-width columns and draw the header rule.
|
|
59
|
-
*
|
|
60
|
-
* Returns `[header, divider, ...bodyRows]`, one string per rendered row, so
|
|
61
|
-
* index 0 is always the header and index 1 always the divider. The divider is
|
|
62
|
-
* rendered rather than swallowed because the parser consumes the source
|
|
63
|
-
* `|---|` row to read alignment: without it, a `--no-color` terminal showed a
|
|
64
|
-
* table as unseparated prose (bold is dropped at colour level 0, and the old
|
|
65
|
-
* two-space join gave no column boundary either).
|
|
66
|
-
*
|
|
67
|
-
* Padding is by DISPLAY columns, not `String.length`: a CJK cell is one code
|
|
68
|
-
* unit but two terminal columns, so `.length` misaligned every such table.
|
|
69
|
-
*/
|
|
70
|
-
export function formatTable(rows, align, options = {}) {
|
|
71
|
-
const separator = options.separator ?? DEFAULT_TABLE_SEPARATOR;
|
|
72
|
-
const rule = options.rule ?? DEFAULT_TABLE_RULE;
|
|
73
|
-
const colCount = Math.max(...rows.map((r) => r.length), 0);
|
|
74
|
-
const widths = [];
|
|
75
|
-
for (let c = 0; c < colCount; c += 1) {
|
|
76
|
-
widths[c] = Math.max(...rows.map((r) => displayColumns(r[c] ?? '')), 0);
|
|
77
|
-
}
|
|
78
|
-
const gap = `${TABLE_CELL_GAP}${separator}${TABLE_CELL_GAP}`;
|
|
79
|
-
const body = rows.map((row) => padRow(row, widths, align).join(gap).trimEnd());
|
|
80
|
-
if (body.length === 0)
|
|
81
|
-
return [];
|
|
82
|
-
const divider = widths.map((w) => rule.repeat(w)).join(gap).trimEnd();
|
|
83
|
-
return [body[0], divider, ...body.slice(1)];
|
|
84
|
-
}
|
|
85
|
-
function padRow(row, widths, align) {
|
|
86
|
-
return row.map((cell, c) => padCell(cell, widths[c] ?? 0, align[c] ?? 'left'));
|
|
87
|
-
}
|
|
88
|
-
function padCell(cell, width, align) {
|
|
89
|
-
const pad = width - displayColumns(cell);
|
|
90
|
-
if (pad <= 0)
|
|
91
|
-
return cell;
|
|
92
|
-
const filler = ' '.repeat(pad);
|
|
93
|
-
if (align === 'right')
|
|
94
|
-
return filler + cell;
|
|
95
|
-
if (align === 'center') {
|
|
96
|
-
const left = Math.floor(pad / 2);
|
|
97
|
-
return `${' '.repeat(left)}${cell}${' '.repeat(pad - left)}`;
|
|
98
|
-
}
|
|
99
|
-
return cell + filler;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Printable ASCII with no TAB: one code unit is one cell, so the width table is
|
|
103
|
-
* not consulted at all.
|
|
104
|
-
*
|
|
105
|
-
* The same load-bearing fast path `virtual-window.displayColumns` carries, and for
|
|
106
|
-
* the same reason: `stringWidth` strips ANSI and walks the East-Asian width table
|
|
107
|
-
* per code point, while this runs once per CELL of every table row on every frame.
|
|
108
|
-
* Table cells are overwhelmingly ASCII, so the branch is taken almost always -
|
|
109
|
-
* and when it is not, the table is CJK and the table is exactly what must be used.
|
|
110
|
-
*/
|
|
111
|
-
const PLAIN_ASCII = /^[\x20-\x7e]*$/;
|
|
112
|
-
/** Terminal columns occupied by `text` (wide glyphs count two). */
|
|
113
|
-
function displayColumns(text) {
|
|
114
|
-
return PLAIN_ASCII.test(text) ? text.length : stringWidth(text);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* An opening fence is three or more backticks plus an optional info string.
|
|
118
|
-
*
|
|
119
|
-
* The old `(\w*)` info group was too narrow for real answers: ```c++ and
|
|
120
|
-
* ```objective-c did not open a block at all, so the body degraded to prose and
|
|
121
|
-
* the closing fence was then swallowed as a new empty code block. A backtick is
|
|
122
|
-
* the one character CommonMark forbids in an info string; everything else is
|
|
123
|
-
* accepted here and the language is simply the FIRST token.
|
|
124
|
-
*/
|
|
125
|
-
const FENCE_OPEN_RE = /^(`{3,})[ \t]*([^`]*)$/;
|
|
126
|
-
/** A closing fence carries backticks only — no info string. */
|
|
127
|
-
const FENCE_CLOSE_RE = /^(`{3,})[ \t]*$/;
|
|
128
|
-
function parseFenceOpen(line) {
|
|
129
|
-
const m = FENCE_OPEN_RE.exec(line);
|
|
130
|
-
if (!m)
|
|
131
|
-
return null;
|
|
132
|
-
const info = (m[2] ?? '').trim();
|
|
133
|
-
return { count: m[1].length, lang: info.split(/\s+/)[0] ?? '' };
|
|
134
|
-
}
|
|
135
|
-
/** Backtick count of a line that could close a fence; 0 when it could not. */
|
|
136
|
-
function closingFenceLength(line) {
|
|
137
|
-
const m = FENCE_CLOSE_RE.exec(line);
|
|
138
|
-
return m ? m[1].length : 0;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Collect a fence body starting after the opening fence.
|
|
142
|
-
*
|
|
143
|
-
* A closer must carry AT LEAST as many backticks as its opener, so a
|
|
144
|
-
* four-backtick block may contain ``` lines — that is how a nested markdown
|
|
145
|
-
* example survives. A shorter run is content, not the end of the block.
|
|
146
|
-
*/
|
|
147
|
-
function readFenceBody(lines, openIndex, openCount) {
|
|
148
|
-
const body = [];
|
|
149
|
-
let i = openIndex + 1;
|
|
150
|
-
while (i < lines.length) {
|
|
151
|
-
if (closingFenceLength((lines[i] ?? '').trim()) >= openCount) {
|
|
152
|
-
return { code: body.join('\n'), next: i + 1 };
|
|
153
|
-
}
|
|
154
|
-
body.push(lines[i] ?? '');
|
|
155
|
-
i += 1;
|
|
156
|
-
}
|
|
157
|
-
return { code: body.join('\n'), next: i };
|
|
158
|
-
}
|
|
159
|
-
/** Split a document into fenced code, pipe tables, and everything else. */
|
|
160
|
-
export function parseMarkdownBlocks(text) {
|
|
161
|
-
// CRLF-safe: a bare `split('\n')` left a '\r' on every code line, which then
|
|
162
|
-
// reached the highlighter and the display-width maths.
|
|
163
|
-
const lines = text.split(/\r?\n/);
|
|
164
|
-
const blocks = [];
|
|
165
|
-
let i = 0;
|
|
166
|
-
while (i < lines.length) {
|
|
167
|
-
const line = lines[i] ?? '';
|
|
168
|
-
const fence = parseFenceOpen(line.trim());
|
|
169
|
-
if (fence) {
|
|
170
|
-
const { code, next } = readFenceBody(lines, i, fence.count);
|
|
171
|
-
blocks.push({ kind: 'code', code, lang: fence.lang });
|
|
172
|
-
i = next;
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
// A pipe row followed by a divider row starts a table; consume the run.
|
|
176
|
-
const headerCells = parseTableRow(line);
|
|
177
|
-
if (headerCells && i + 1 < lines.length && isTableDivider(lines[i + 1] ?? '')) {
|
|
178
|
-
const align = tableAlignments(lines[i + 1] ?? '');
|
|
179
|
-
const rows = [headerCells];
|
|
180
|
-
i += 2;
|
|
181
|
-
while (i < lines.length) {
|
|
182
|
-
const cells = parseTableRow(lines[i] ?? '');
|
|
183
|
-
if (!cells)
|
|
184
|
-
break;
|
|
185
|
-
rows.push(cells);
|
|
186
|
-
i += 1;
|
|
187
|
-
}
|
|
188
|
-
blocks.push({ kind: 'table', rows, align });
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
blocks.push({ kind: 'line', text: line });
|
|
192
|
-
i += 1;
|
|
193
|
-
}
|
|
194
|
-
return blocks;
|
|
195
|
-
}
|
|
196
|
-
const CODE_RE = /`[^`]+`/g;
|
|
197
|
-
const EMPHASIS_RE = /(\*\*[^*]+\*\*|~~[^~]+~~|\*[^*]+\*)/g;
|
|
198
|
-
/**
|
|
199
|
-
* Two passes, and that ordering is the fix (§4.7).
|
|
200
|
-
*
|
|
201
|
-
* The old single regex alternated `code | bold | italic` at the same level, so
|
|
202
|
-
* `**bold with `code` inside**` matched neither branch cleanly and rendered as
|
|
203
|
-
* literal asterisks. Splitting code out FIRST — and never looking for emphasis
|
|
204
|
-
* inside a code span — resolves both cases: emphasis around code now works, and
|
|
205
|
-
* asterisks inside code stay literal, which is what a shell snippet needs.
|
|
206
|
-
*/
|
|
207
|
-
export function parseInline(text) {
|
|
208
|
-
const spans = [];
|
|
209
|
-
let last = 0;
|
|
210
|
-
let m;
|
|
211
|
-
CODE_RE.lastIndex = 0;
|
|
212
|
-
while ((m = CODE_RE.exec(text)) !== null) {
|
|
213
|
-
if (m.index > last)
|
|
214
|
-
pushEmphasis(spans, text.slice(last, m.index));
|
|
215
|
-
spans.push({ kind: 'code', text: m[0].slice(1, -1) });
|
|
216
|
-
last = m.index + m[0].length;
|
|
217
|
-
}
|
|
218
|
-
if (last < text.length)
|
|
219
|
-
pushEmphasis(spans, text.slice(last));
|
|
220
|
-
return spans;
|
|
221
|
-
}
|
|
222
|
-
function pushEmphasis(out, text) {
|
|
223
|
-
let last = 0;
|
|
224
|
-
let m;
|
|
225
|
-
EMPHASIS_RE.lastIndex = 0;
|
|
226
|
-
while ((m = EMPHASIS_RE.exec(text)) !== null) {
|
|
227
|
-
if (m.index > last)
|
|
228
|
-
out.push({ kind: 'text', text: text.slice(last, m.index) });
|
|
229
|
-
const token = m[0];
|
|
230
|
-
if (token.startsWith('**'))
|
|
231
|
-
out.push({ kind: 'bold', text: token.slice(2, -2) });
|
|
232
|
-
else if (token.startsWith('~~'))
|
|
233
|
-
out.push({ kind: 'strike', text: token.slice(2, -2) });
|
|
234
|
-
else
|
|
235
|
-
out.push({ kind: 'italic', text: token.slice(1, -1) });
|
|
236
|
-
last = m.index + token.length;
|
|
237
|
-
}
|
|
238
|
-
if (last < text.length)
|
|
239
|
-
out.push({ kind: 'text', text: text.slice(last) });
|
|
240
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentsBoardOverlay — the read-only detail board behind `Ctrl+B` / `/agents`
|
|
3
|
-
* (tui-subagent-panel §4.4 / §6.3).
|
|
4
|
-
*
|
|
5
|
-
* READ-ONLY IS THE SAFETY BOUNDARY (§2.2). Nothing here nudges, kills or re-dispatches
|
|
6
|
-
* a child, and no new `TeamEvent` member was introduced to feed it: a board that can
|
|
7
|
-
* only read can never kill a healthy child, which is the whole reason this is a
|
|
8
|
-
* second surface rather than a control panel.
|
|
9
|
-
*
|
|
10
|
-
* ONE SCREEN, CONTROLLED MODE. `OverlayFrame`'s controlled form already owns paging,
|
|
11
|
-
* the position indicator and the narrow-terminal degradation, and `helpRows` /
|
|
12
|
-
* `projectQueueRows` are the precedent. A second pane would mean a second horizontal
|
|
13
|
-
* budget inside Ink for a benefit the board's 2-up field rows already deliver.
|
|
14
|
-
*
|
|
15
|
-
* IT DOES NOT GO BLANK WHEN THE DISPATCH ENDS (D-9). `state.team` becomes `null` the
|
|
16
|
-
* frame the dispatch settles, and a reader would lose the child they were reading
|
|
17
|
-
* about at the exact moment they wanted the post-mortem. The last live snapshot is
|
|
18
|
-
* therefore FROZEN (a copy, held in a ref) and keeps rendering with a
|
|
19
|
-
* `dispatch ended` row; a board opened AFTER the dispatch has ended builds from the
|
|
20
|
-
* transcript's settled `team` entry instead (`resolveBoardSource`), which is where the
|
|
21
|
-
* `result` section earns its place - the error is the one fact that is never stripped.
|
|
22
|
-
*
|
|
23
|
-
* NO `ink-spinner` HERE (D-13): `spinner-census.test.ts` pins the exact list of files
|
|
24
|
-
* that mount an animated spinner, and this is a reading surface, not an animation.
|
|
25
|
-
* The panel is where motion belongs.
|
|
26
|
-
*
|
|
27
|
-
* AND NO MOTION PROP (v2 implementation note, appended to the spec's
|
|
28
|
-
* "implementation findings"). Because nothing here animates, a motion flag would be a
|
|
29
|
-
* prop with no consumer - and worse, the same census counts how many times `App.tsx`
|
|
30
|
-
* hands the RAW motion flag to a child and asserts the count is EXACTLY ONE, so passing
|
|
31
|
-
* it from the board's branch would break a shipped guard rail for no gain.
|
|
32
|
-
*
|
|
33
|
-
* ASCII ONLY: every symbol comes through `glyphs`.
|
|
34
|
-
*/
|
|
35
|
-
import React from 'react';
|
|
36
|
-
import type { Entry } from '../../agent/reducer.js';
|
|
37
|
-
import type { Theme } from '../theme.js';
|
|
38
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
39
|
-
import type { TeamSnapshot } from '../../team/types.js';
|
|
40
|
-
export interface AgentsBoardOverlayProps {
|
|
41
|
-
/** The live snapshot; `null` once the dispatch has settled. */
|
|
42
|
-
team: TeamSnapshot | null;
|
|
43
|
-
/** The transcript, for the settled fallback (D-9 path 4). */
|
|
44
|
-
entries: readonly Entry[];
|
|
45
|
-
/** Overlay content width (`App`'s `viewCols`). */
|
|
46
|
-
cols: number;
|
|
47
|
-
maxRows: number;
|
|
48
|
-
scrollOffset: number;
|
|
49
|
-
onScrollClamp: (offset: number) => void;
|
|
50
|
-
isActive: boolean;
|
|
51
|
-
native: boolean;
|
|
52
|
-
theme: Theme;
|
|
53
|
-
caps: TermCapabilities;
|
|
54
|
-
/** Injectable clock, so the board's tests do not depend on wall time. */
|
|
55
|
-
now?: number;
|
|
56
|
-
}
|
|
57
|
-
export declare function AgentsBoardOverlay({ team, entries, cols, maxRows, scrollOffset, onScrollClamp, isActive, native, theme, caps, now, }: AgentsBoardOverlayProps): React.ReactElement;
|