@pentoshi/clai 4.14.5 → 4.15.0
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/README.md +19 -5
- package/dist/agent/compaction-summary.d.ts +6 -1
- package/dist/agent/compaction-summary.js +46 -20
- package/dist/agent/compaction-summary.js.map +1 -1
- package/dist/agent/confirm-port.d.ts +3 -8
- package/dist/agent/confirm-port.js +9 -7
- package/dist/agent/confirm-port.js.map +1 -1
- package/dist/agent/context/compact-with-summary.js +55 -14
- package/dist/agent/context/compact-with-summary.js.map +1 -1
- package/dist/agent/context/compaction-recent-history.js +4 -2
- package/dist/agent/context/compaction-recent-history.js.map +1 -1
- package/dist/agent/context/compaction-user-instructions.d.ts +12 -0
- package/dist/agent/context/compaction-user-instructions.js +264 -0
- package/dist/agent/context/compaction-user-instructions.js.map +1 -0
- package/dist/agent/context/compaction-work-history.d.ts +13 -0
- package/dist/agent/context/compaction-work-history.js +150 -0
- package/dist/agent/context/compaction-work-history.js.map +1 -0
- package/dist/agent/context-manager.js +19 -5
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/plan-implement-compact.js +2 -1
- package/dist/agent/plan-implement-compact.js.map +1 -1
- package/dist/agent/turn/loop/stream-session.js +33 -27
- package/dist/agent/turn/loop/stream-session.js.map +1 -1
- package/dist/agent/turn/tool-execution/authorization.js +1 -1
- package/dist/agent/turn/tool-execution/authorization.js.map +1 -1
- package/dist/app/adapters/current-store-adapter.js +2 -2
- package/dist/app/adapters/current-store-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +1 -0
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/session-changes.d.ts +24 -0
- package/dist/app/controllers/session-changes.js +75 -0
- package/dist/app/controllers/session-changes.js.map +1 -0
- package/dist/app/controllers/session-controller.d.ts +4 -0
- package/dist/app/controllers/session-controller.js +13 -0
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/ports/confirm-port.d.ts +4 -1
- package/dist/app/ports/persistence-port.d.ts +2 -0
- package/dist/app/ports/transcript-item.d.ts +2 -0
- package/dist/classic/app/ClassicApp.js +42 -33
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/app/app-wiring.d.ts +8 -1
- package/dist/classic/app/app-wiring.js +23 -4
- package/dist/classic/app/app-wiring.js.map +1 -1
- package/dist/classic/app/paint-pacing.d.ts +3 -1
- package/dist/classic/app/paint-pacing.js +9 -1
- package/dist/classic/app/paint-pacing.js.map +1 -1
- package/dist/classic/app/use-feed.js +8 -3
- package/dist/classic/app/use-feed.js.map +1 -1
- package/dist/classic/app/wiring-composer-pointer.d.ts +3 -0
- package/dist/classic/app/wiring-composer-pointer.js +22 -0
- package/dist/classic/app/wiring-composer-pointer.js.map +1 -0
- package/dist/classic/app/wiring-disclosure.d.ts +3 -0
- package/dist/classic/app/wiring-disclosure.js +31 -0
- package/dist/classic/app/wiring-disclosure.js.map +1 -0
- package/dist/classic/app/wiring-interactions.d.ts +1 -0
- package/dist/classic/app/wiring-interactions.js +16 -16
- package/dist/classic/app/wiring-interactions.js.map +1 -1
- package/dist/classic/app/wiring-jump-to-latest.d.ts +3 -0
- package/dist/classic/app/wiring-jump-to-latest.js +38 -0
- package/dist/classic/app/wiring-jump-to-latest.js.map +1 -0
- package/dist/classic/app/wiring-lifecycle.d.ts +1 -1
- package/dist/classic/app/wiring-lifecycle.js +19 -10
- package/dist/classic/app/wiring-lifecycle.js.map +1 -1
- package/dist/classic/app/wiring-selection.d.ts +1 -0
- package/dist/classic/app/wiring-selection.js +10 -1
- package/dist/classic/app/wiring-selection.js.map +1 -1
- package/dist/classic/app/wiring-types.d.ts +12 -1
- package/dist/classic/blocks/assistant-lines.js +1 -1
- package/dist/classic/blocks/assistant-lines.js.map +1 -1
- package/dist/classic/blocks/batch-lines.d.ts +1 -1
- package/dist/classic/blocks/batch-lines.js +47 -59
- package/dist/classic/blocks/batch-lines.js.map +1 -1
- package/dist/classic/blocks/block-context.d.ts +8 -1
- package/dist/classic/blocks/block-context.js.map +1 -1
- package/dist/classic/blocks/compacted-lines.d.ts +0 -1
- package/dist/classic/blocks/compacted-lines.js +12 -44
- package/dist/classic/blocks/compacted-lines.js.map +1 -1
- package/dist/classic/blocks/diff-lines.d.ts +3 -5
- package/dist/classic/blocks/diff-lines.js +113 -152
- package/dist/classic/blocks/diff-lines.js.map +1 -1
- package/dist/classic/blocks/disclosure-lines.d.ts +16 -0
- package/dist/classic/blocks/disclosure-lines.js +20 -0
- package/dist/classic/blocks/disclosure-lines.js.map +1 -0
- package/dist/classic/blocks/intro-lines.js +2 -0
- package/dist/classic/blocks/intro-lines.js.map +1 -1
- package/dist/classic/blocks/notice-lines.js +4 -16
- package/dist/classic/blocks/notice-lines.js.map +1 -1
- package/dist/classic/blocks/output-lines.d.ts +10 -0
- package/dist/classic/blocks/output-lines.js +35 -0
- package/dist/classic/blocks/output-lines.js.map +1 -0
- package/dist/classic/blocks/thinking-lines.d.ts +0 -1
- package/dist/classic/blocks/thinking-lines.js +15 -32
- package/dist/classic/blocks/thinking-lines.js.map +1 -1
- package/dist/classic/blocks/tool-label.d.ts +2 -0
- package/dist/classic/blocks/tool-label.js +8 -0
- package/dist/classic/blocks/tool-label.js.map +1 -0
- package/dist/classic/blocks/tool-lines.d.ts +3 -5
- package/dist/classic/blocks/tool-lines.js +90 -150
- package/dist/classic/blocks/tool-lines.js.map +1 -1
- package/dist/classic/blocks/turn-summary-lines.js +7 -1
- package/dist/classic/blocks/turn-summary-lines.js.map +1 -1
- package/dist/classic/blocks/user-lines.js +9 -15
- package/dist/classic/blocks/user-lines.js.map +1 -1
- package/dist/classic/bootstrap/start-classic.js +2 -0
- package/dist/classic/bootstrap/start-classic.js.map +1 -1
- package/dist/classic/chrome/Composer.d.ts +4 -2
- package/dist/classic/chrome/Composer.js +12 -6
- package/dist/classic/chrome/Composer.js.map +1 -1
- package/dist/classic/chrome/composer-controller.d.ts +3 -0
- package/dist/classic/chrome/composer-controller.js +15 -22
- package/dist/classic/chrome/composer-controller.js.map +1 -1
- package/dist/classic/chrome/composer-frame.d.ts +1 -1
- package/dist/classic/chrome/composer-frame.js +2 -1
- package/dist/classic/chrome/composer-frame.js.map +1 -1
- package/dist/classic/chrome/composer-mentions.d.ts +2 -0
- package/dist/classic/chrome/composer-mentions.js +16 -0
- package/dist/classic/chrome/composer-mentions.js.map +1 -0
- package/dist/classic/chrome/composer-pointer.d.ts +13 -0
- package/dist/classic/chrome/composer-pointer.js +22 -0
- package/dist/classic/chrome/composer-pointer.js.map +1 -0
- package/dist/classic/chrome/directory-row.d.ts +20 -2
- package/dist/classic/chrome/directory-row.js +45 -1
- package/dist/classic/chrome/directory-row.js.map +1 -1
- package/dist/classic/chrome/editor-view.js +6 -1
- package/dist/classic/chrome/editor-view.js.map +1 -1
- package/dist/classic/chrome/queue-rows.d.ts +1 -0
- package/dist/classic/chrome/queue-rows.js +12 -2
- package/dist/classic/chrome/queue-rows.js.map +1 -1
- package/dist/classic/chrome/status-rows.d.ts +1 -0
- package/dist/classic/chrome/status-rows.js +5 -4
- package/dist/classic/chrome/status-rows.js.map +1 -1
- package/dist/classic/chrome/toast-rows.js +7 -6
- package/dist/classic/chrome/toast-rows.js.map +1 -1
- package/dist/classic/feed/LiveTail.d.ts +4 -3
- package/dist/classic/feed/LiveTail.js +26 -15
- package/dist/classic/feed/LiveTail.js.map +1 -1
- package/dist/classic/feed/feed-blocks.d.ts +2 -0
- package/dist/classic/feed/feed-blocks.js +4 -2
- package/dist/classic/feed/feed-blocks.js.map +1 -1
- package/dist/classic/feed/transcript-disclosure.d.ts +6 -0
- package/dist/classic/feed/transcript-disclosure.js +9 -0
- package/dist/classic/feed/transcript-disclosure.js.map +1 -0
- package/dist/classic/feed/transcript-resources.d.ts +23 -0
- package/dist/classic/feed/transcript-resources.js +140 -0
- package/dist/classic/feed/transcript-resources.js.map +1 -0
- package/dist/classic/feed/transcript-window.js +43 -18
- package/dist/classic/feed/transcript-window.js.map +1 -1
- package/dist/classic/input/input-router.d.ts +2 -0
- package/dist/classic/input/input-router.js +6 -0
- package/dist/classic/input/input-router.js.map +1 -1
- package/dist/classic/input/raw-decoder.js +3 -2
- package/dist/classic/input/raw-decoder.js.map +1 -1
- package/dist/classic/panels/confirm-panel.js +17 -10
- package/dist/classic/panels/confirm-panel.js.map +1 -1
- package/dist/classic/panels/pager-panel.d.ts +6 -2
- package/dist/classic/panels/pager-panel.js +11 -4
- package/dist/classic/panels/pager-panel.js.map +1 -1
- package/dist/classic/panels/panel-controller.js +4 -1
- package/dist/classic/panels/panel-controller.js.map +1 -1
- package/dist/classic/panels/panel-host.js +1 -1
- package/dist/classic/panels/panel-host.js.map +1 -1
- package/dist/classic/panels/panel-wheel.js +1 -1
- package/dist/classic/panels/panel-wheel.js.map +1 -1
- package/dist/classic/render/shell-width.d.ts +0 -2
- package/dist/classic/render/shell-width.js +0 -6
- package/dist/classic/render/shell-width.js.map +1 -1
- package/dist/instructions/record.d.ts +1 -1
- package/dist/instructions/record.js +3 -3
- package/dist/llm/free-client.d.ts +2 -0
- package/dist/llm/free-client.js +52 -0
- package/dist/llm/free-client.js.map +1 -0
- package/dist/llm/free.d.ts +1 -0
- package/dist/llm/free.js +77 -176
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/key-rotation.d.ts +1 -0
- package/dist/llm/key-rotation.js +13 -2
- package/dist/llm/key-rotation.js.map +1 -1
- package/dist/llm/reasoning-errors.js +1 -1
- package/dist/llm/reasoning-errors.js.map +1 -1
- package/dist/llm/wire/reasoning-artifacts.js +1 -1
- package/dist/llm/wire/reasoning-artifacts.js.map +1 -1
- package/dist/noninteractive/stdio-confirm-port.js +4 -3
- package/dist/noninteractive/stdio-confirm-port.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/index.js +24 -21
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +6 -0
- package/dist/safety/filesystem-permissions.d.ts +8 -0
- package/dist/safety/filesystem-permissions.js +38 -18
- package/dist/safety/filesystem-permissions.js.map +1 -1
- package/dist/safety/patterns.d.ts +1 -1
- package/dist/safety/patterns.js +7 -7
- package/dist/safety/patterns.js.map +1 -1
- package/dist/safety/permission-mode.js +1 -1
- package/dist/safety/permission-mode.js.map +1 -1
- package/dist/safety/shell-classification.js +1 -1
- package/dist/safety/shell-classification.js.map +1 -1
- package/dist/session-runtime/view-manager.js +1 -1
- package/dist/session-runtime/view-manager.js.map +1 -1
- package/dist/store/history/recovery.d.ts +1 -0
- package/dist/store/history/recovery.js.map +1 -1
- package/dist/store/history/sqlite-backend.js +2 -0
- package/dist/store/history/sqlite-backend.js.map +1 -1
- package/dist/store/history.d.ts +2 -2
- package/dist/store/history.js +4 -2
- package/dist/store/history.js.map +1 -1
- package/dist/store/session-prompts.d.ts +5 -0
- package/dist/store/session-prompts.js +60 -1
- package/dist/store/session-prompts.js.map +1 -1
- package/dist/tools/definitions/aggregate.js +7 -2
- package/dist/tools/definitions/aggregate.js.map +1 -1
- package/dist/tools/instructions.js +8 -1
- package/dist/tools/instructions.js.map +1 -1
- package/dist/tui-v2/app/App.js +7 -4
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/bootstrap/frame-pacing.d.ts +4 -0
- package/dist/tui-v2/bootstrap/frame-pacing.js +5 -0
- package/dist/tui-v2/bootstrap/frame-pacing.js.map +1 -0
- package/dist/tui-v2/bootstrap/runtime-view.js +2 -0
- package/dist/tui-v2/bootstrap/runtime-view.js.map +1 -1
- package/dist/tui-v2/bootstrap/start-tui-v2.js +2 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/modal/confirm-modal.d.ts +2 -0
- package/dist/tui-v2/components/modal/confirm-modal.js +21 -35
- package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.js +4 -1
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/queue/queue-panel.js +2 -7
- package/dist/tui-v2/components/queue/queue-panel.js.map +1 -1
- package/dist/tui-v2/components/status/jump-to-latest.d.ts +7 -0
- package/dist/tui-v2/components/status/jump-to-latest.js +16 -0
- package/dist/tui-v2/components/status/jump-to-latest.js.map +1 -0
- package/dist/tui-v2/components/status/status-line.d.ts +1 -0
- package/dist/tui-v2/components/status/status-line.js +14 -4
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/toast/toast-host.js +4 -7
- package/dist/tui-v2/components/toast/toast-host.js.map +1 -1
- package/dist/tui-v2/components/transcript/file-diff-card.d.ts +1 -0
- package/dist/tui-v2/components/transcript/file-diff-card.js +25 -11
- package/dist/tui-v2/components/transcript/file-diff-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js +24 -20
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-row.js +6 -3
- package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-scroll-port.d.ts +1 -0
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js +3 -1
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-scrollbar.js +17 -11
- package/dist/tui-v2/components/transcript/transcript-scrollbar.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +41 -21
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +14 -9
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/rendering/pager-markdown.d.ts +3 -0
- package/dist/tui-v2/rendering/pager-markdown.js +3 -0
- package/dist/tui-v2/rendering/pager-markdown.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/mentions/file-suggestions.js +17 -8
- package/dist/ui/mentions/file-suggestions.js.map +1 -1
- package/dist/ui-core/actions/format-shortcuts.js +2 -0
- package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
- package/dist/ui-core/bootstrap/overlay-ports.js +8 -3
- package/dist/ui-core/bootstrap/overlay-ports.js.map +1 -1
- package/dist/ui-core/bootstrap/session-resume.js +1 -0
- package/dist/ui-core/bootstrap/session-resume.js.map +1 -1
- package/dist/ui-core/commands/change-commands.d.ts +4 -0
- package/dist/ui-core/commands/change-commands.js +48 -0
- package/dist/ui-core/commands/change-commands.js.map +1 -0
- package/dist/ui-core/commands/command-handlers.js +2 -0
- package/dist/ui-core/commands/command-handlers.js.map +1 -1
- package/dist/ui-core/composer/arrow-intent.js +2 -0
- package/dist/ui-core/composer/arrow-intent.js.map +1 -1
- package/dist/ui-core/composer/paste-placeholder.js +2 -2
- package/dist/ui-core/composer/paste-placeholder.js.map +1 -1
- package/dist/ui-core/composer/prompt-history.d.ts +12 -0
- package/dist/ui-core/composer/prompt-history.js +75 -1
- package/dist/ui-core/composer/prompt-history.js.map +1 -1
- package/dist/ui-core/composer/saved-prompt-history.d.ts +5 -0
- package/dist/ui-core/composer/saved-prompt-history.js +33 -0
- package/dist/ui-core/composer/saved-prompt-history.js.map +1 -0
- package/dist/ui-core/controllers/overlay-controller.d.ts +1 -0
- package/dist/ui-core/controllers/overlay-controller.js.map +1 -1
- package/dist/ui-core/react/use-transcript-store.js +4 -2
- package/dist/ui-core/react/use-transcript-store.js.map +1 -1
- package/dist/ui-core/rendering/artifact-pager-source.d.ts +3 -0
- package/dist/ui-core/rendering/artifact-pager-source.js.map +1 -1
- package/dist/ui-core/rendering/batch-sections.d.ts +3 -2
- package/dist/ui-core/rendering/batch-sections.js +5 -5
- package/dist/ui-core/rendering/batch-sections.js.map +1 -1
- package/dist/ui-core/rendering/card-style.d.ts +2 -0
- package/dist/ui-core/rendering/card-style.js +3 -0
- package/dist/ui-core/rendering/card-style.js.map +1 -0
- package/dist/ui-core/rendering/confirmation-preview.d.ts +9 -0
- package/dist/ui-core/rendering/confirmation-preview.js +33 -0
- package/dist/ui-core/rendering/confirmation-preview.js.map +1 -0
- package/dist/ui-core/rendering/duration.d.ts +2 -1
- package/dist/ui-core/rendering/duration.js +4 -6
- package/dist/ui-core/rendering/duration.js.map +1 -1
- package/dist/ui-core/rendering/intro-header.d.ts +1 -0
- package/dist/ui-core/rendering/intro-header.js +19 -15
- package/dist/ui-core/rendering/intro-header.js.map +1 -1
- package/dist/ui-core/rendering/jump-to-latest.d.ts +1 -0
- package/dist/ui-core/rendering/jump-to-latest.js +7 -0
- package/dist/ui-core/rendering/jump-to-latest.js.map +1 -0
- package/dist/ui-core/rendering/line-change-labels.d.ts +6 -0
- package/dist/ui-core/rendering/line-change-labels.js +12 -0
- package/dist/ui-core/rendering/line-change-labels.js.map +1 -0
- package/dist/ui-core/rendering/markdown.d.ts +5 -1
- package/dist/ui-core/rendering/markdown.js +20 -5
- package/dist/ui-core/rendering/markdown.js.map +1 -1
- package/dist/ui-core/rendering/render-markdown-lines.d.ts +3 -0
- package/dist/ui-core/rendering/render-markdown-lines.js +6 -1
- package/dist/ui-core/rendering/render-markdown-lines.js.map +1 -1
- package/dist/ui-core/rendering/session-prompts-pager-source.js +2 -0
- package/dist/ui-core/rendering/session-prompts-pager-source.js.map +1 -1
- package/dist/ui-core/rendering/status-segments.js +10 -5
- package/dist/ui-core/rendering/status-segments.js.map +1 -1
- package/dist/ui-core/rendering/subagent-presentation.js +39 -11
- package/dist/ui-core/rendering/subagent-presentation.js.map +1 -1
- package/dist/ui-core/rendering/subagent-source.js +11 -48
- package/dist/ui-core/rendering/subagent-source.js.map +1 -1
- package/dist/ui-core/rendering/subagent-tool-usage.d.ts +5 -0
- package/dist/ui-core/rendering/subagent-tool-usage.js +42 -0
- package/dist/ui-core/rendering/subagent-tool-usage.js.map +1 -0
- package/dist/ui-core/rendering/tool-diff-preview.d.ts +21 -0
- package/dist/ui-core/rendering/tool-diff-preview.js +27 -0
- package/dist/ui-core/rendering/tool-diff-preview.js.map +1 -0
- package/dist/ui-core/rendering/tool-presenter.d.ts +4 -2
- package/dist/ui-core/rendering/tool-presenter.js +19 -4
- package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
- package/dist/ui-core/rendering/tool-usage-label.d.ts +2 -0
- package/dist/ui-core/rendering/tool-usage-label.js +42 -0
- package/dist/ui-core/rendering/tool-usage-label.js.map +1 -0
- package/dist/ui-core/state/hydrate/classic-transcript.js +2 -0
- package/dist/ui-core/state/hydrate/classic-transcript.js.map +1 -1
- package/dist/ui-core/state/transcript/apply-app-event.js +16 -5
- package/dist/ui-core/state/transcript/apply-app-event.js.map +1 -1
- package/dist/ui-core/state/transcript-hydrate.js +1 -0
- package/dist/ui-core/state/transcript-hydrate.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +4 -0
- package/dist/ui-core/state/transcript-types.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
- package/dist/classic/feed/ScrollbarGutter.d.ts +0 -9
- package/dist/classic/feed/ScrollbarGutter.js +0 -41
- package/dist/classic/feed/ScrollbarGutter.js.map +0 -1
- package/dist/classic/feed/scrollbar-rows.d.ts +0 -5
- package/dist/classic/feed/scrollbar-rows.js +0 -17
- package/dist/classic/feed/scrollbar-rows.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { clipToWidth
|
|
1
|
+
import { clipToWidth } from "../render/ansi-text.js";
|
|
2
|
+
import { centerChromeRow } from "../../ui-core/rendering/pager-chrome.js";
|
|
2
3
|
import { layoutWidth } from "../render/measure.js";
|
|
3
4
|
import { MAX_TOAST_ROWS } from "./row-budget.js";
|
|
4
5
|
import { wrapAnsiLine } from "../render/wrap.js";
|
|
@@ -11,8 +12,8 @@ const PLATE = {
|
|
|
11
12
|
const H_PAD = 2;
|
|
12
13
|
function pillInnerWidth(columns) {
|
|
13
14
|
const width = Math.max(1, Math.floor(columns));
|
|
14
|
-
const maxPill = Math.max(20, Math.min(width - 4, Math.floor(width * 0.85)));
|
|
15
|
-
return Math.max(
|
|
15
|
+
const maxPill = Math.min(width, Math.max(20, Math.min(width - 4, Math.floor(width * 0.85))));
|
|
16
|
+
return Math.max(1, maxPill - H_PAD * 2);
|
|
16
17
|
}
|
|
17
18
|
export function toastRowsWanted(toasts, columns) {
|
|
18
19
|
if (toasts.length === 0)
|
|
@@ -46,8 +47,8 @@ function levelGlyph(ink, level) {
|
|
|
46
47
|
export function toastRows(input) {
|
|
47
48
|
const { ink } = input;
|
|
48
49
|
const width = Math.max(1, Math.floor(input.columns));
|
|
49
|
-
const maxPill = Math.max(20, Math.min(width - 4, Math.floor(width * 0.85)));
|
|
50
|
-
const inner = Math.max(
|
|
50
|
+
const maxPill = Math.min(width, Math.max(20, Math.min(width - 4, Math.floor(width * 0.85))));
|
|
51
|
+
const inner = Math.max(1, maxPill - H_PAD * 2);
|
|
51
52
|
const budget = Math.max(0, Math.min(Math.floor(input.allocatedRows), MAX_TOAST_ROWS));
|
|
52
53
|
if (budget === 0 || input.toasts.length === 0)
|
|
53
54
|
return [];
|
|
@@ -78,7 +79,7 @@ export function toastRows(input) {
|
|
|
78
79
|
const needsOverflow = isLastLineOfToast && usedToasts === Math.min(reversed.length, budget) && hidden > 0 && effectiveLines.length === displayLines.length;
|
|
79
80
|
const text = needsOverflow && !line.includes(` (+${hidden})`) ? clipToWidth(`${line} (+${hidden})`, inner, ink.glyphs.ellipsis) : line;
|
|
80
81
|
const pillWidth = Math.min(maxPill, Math.max(16, layoutWidth(text) + H_PAD * 2));
|
|
81
|
-
const pill = ink.plate(PLATE[toast.level],
|
|
82
|
+
const pill = ink.plate(PLATE[toast.level], centerChromeRow(text.trim(), pillWidth));
|
|
82
83
|
const leftPad = Math.max(0, Math.floor((width - pillWidth) / 2));
|
|
83
84
|
const rightPad = Math.max(0, width - pillWidth - leftPad);
|
|
84
85
|
rows.push(`${" ".repeat(leftPad)}${pill}${" ".repeat(rightPad)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast-rows.js","sourceRoot":"","sources":["../../../src/classic/chrome/toast-rows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"toast-rows.js","sourceRoot":"","sources":["../../../src/classic/chrome/toast-rows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,KAAK,GAA6C;IACtD,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAA4B,EAC5B,OAAe;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAChF,IAAI,IAAI,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACxC,CAAC;AASD,MAAM,UAAU,aAAa,CAC3B,MAA4B,EAC5B,aAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,GAAa,EAAE,KAAiB;IAClD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QAC/B;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACtF,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,kBAAkB,GAAG,CAAC,YAAoB,EAAU,EAAE;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,MAAM;QACjC,UAAU,IAAI,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,OAAO,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5L,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACpD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1I,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,MAAM;YACxC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7C,CAAC,CAAC,YAAY,CAAC;QAEnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,EAAE,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3D,MAAM,aAAa,GAAG,iBAAiB,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC;YAC3J,MAAM,IAAI,GAAG,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;gBAAE,MAAM;QACnC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
2
|
import type { TranscriptWindow } from "./transcript-window.js";
|
|
3
3
|
import type { SelectionState } from "../../ui-core/controllers/selection-controller.js";
|
|
4
4
|
import type { SemanticDocument } from "../../ui-core/state/semantic-document.js";
|
|
5
|
-
export declare
|
|
5
|
+
export declare const LiveTail: import("react").MemoExoticComponent<(props: {
|
|
6
6
|
readonly window: TranscriptWindow;
|
|
7
7
|
readonly rows: number;
|
|
8
|
+
readonly columns?: number | undefined;
|
|
8
9
|
readonly document?: SemanticDocument | undefined;
|
|
9
10
|
readonly selection?: SelectionState | undefined;
|
|
10
|
-
})
|
|
11
|
+
}) => ReactNode>;
|
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
+
import { memo } from "react";
|
|
3
4
|
import { selectionSpanForRow } from "./transcript-selection.js";
|
|
4
|
-
|
|
5
|
+
import { layoutWidth } from "../render/measure.js";
|
|
6
|
+
export const LiveTail = memo(function LiveTail(props) {
|
|
5
7
|
const filler = Math.max(0, props.rows - props.window.height);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
const lines = props.window.rows.map((row) => {
|
|
9
|
+
const span = props.document && props.selection
|
|
10
|
+
? selectionSpanForRow(row, props.document, props.selection)
|
|
11
|
+
: undefined;
|
|
12
|
+
if (!span)
|
|
13
|
+
return row.line === "" ? " " : row.line;
|
|
14
|
+
return (_jsxs(Text, { children: [span.text.slice(0, span.start), _jsx(Text, { inverse: true, children: span.text.slice(span.start, span.end) }), span.text.slice(span.end)] }, row.key));
|
|
15
|
+
});
|
|
16
|
+
for (let index = 0; index < filler; index += 1)
|
|
17
|
+
lines.push(" ");
|
|
18
|
+
const content = lines.every((line) => typeof line === "string")
|
|
19
|
+
? lines.join("\n")
|
|
20
|
+
: lines.flatMap((line, index) => index === 0 ? [line] : ["\n", line]);
|
|
21
|
+
const columns = props.columns;
|
|
22
|
+
const fits = columns !== undefined && props.window.rows.every((row) => layoutWidth(row.line) <= columns);
|
|
23
|
+
let rendered = null;
|
|
24
|
+
if (lines.length > 0) {
|
|
25
|
+
rendered = fits
|
|
26
|
+
? _jsx(Text, { wrap: "truncate", children: content })
|
|
27
|
+
: lines.map((line, index) => (_jsx(Text, { wrap: "truncate", children: line }, props.window.rows[index]?.key ?? `live-filler-${index}`)));
|
|
28
|
+
}
|
|
29
|
+
return _jsx(Box, { flexDirection: "column", height: props.rows, flexShrink: 0, children: rendered });
|
|
30
|
+
});
|
|
20
31
|
//# sourceMappingURL=LiveTail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveTail.js","sourceRoot":"","sources":["../../../src/classic/feed/LiveTail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"LiveTail.js","sourceRoot":"","sources":["../../../src/classic/feed/LiveTail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { TranscriptItem, TranscriptState } from "../../ui-core/state/transc
|
|
|
3
3
|
import type { InkTheme } from "../render/ink-theme.js";
|
|
4
4
|
import { type BlockContext, type SpoolReader } from "../blocks/block-context.js";
|
|
5
5
|
import { type IntroBlockInput } from "../blocks/intro-lines.js";
|
|
6
|
+
import type { BlockDisclosure } from "../blocks/disclosure-lines.js";
|
|
6
7
|
export type BlockKind = "intro" | "user" | "assistant" | "thinking" | "tool" | "batch" | "diff" | "compacted" | "notice" | "turn-summary";
|
|
7
8
|
export interface FeedBlock {
|
|
8
9
|
readonly key: string;
|
|
@@ -10,6 +11,7 @@ export interface FeedBlock {
|
|
|
10
11
|
readonly kind: BlockKind;
|
|
11
12
|
readonly open: boolean;
|
|
12
13
|
readonly lines: readonly string[];
|
|
14
|
+
readonly disclosures?: readonly BlockDisclosure[];
|
|
13
15
|
readonly turnId: string | undefined;
|
|
14
16
|
readonly sequence: number;
|
|
15
17
|
}
|
|
@@ -90,7 +90,7 @@ function blockInputs(ctx, item, kind) {
|
|
|
90
90
|
kind,
|
|
91
91
|
width: ctx.width,
|
|
92
92
|
ink: ctx.ink,
|
|
93
|
-
expanded: isItemExpanded(ctx.state, item),
|
|
93
|
+
expanded: item.kind === "user" ? ctx.state.itemOverrides.get(item.id) ?? false : isItemExpanded(ctx.state, item),
|
|
94
94
|
diffExpanded: tool ? isFileDiffExpanded(ctx.state, item.id) : false,
|
|
95
95
|
output: tool ? ctx.spool.version?.(tool.toolCallId) ?? ctx.spool.tail(tool.toolCallId) : undefined,
|
|
96
96
|
now: isOpen(item) ? ctx.now : undefined,
|
|
@@ -134,7 +134,8 @@ export class FeedBlockCache {
|
|
|
134
134
|
return entry.block;
|
|
135
135
|
}
|
|
136
136
|
const markdownCache = cached?.inputs.ink === ctx.ink ? cached.markdownCache : undefined;
|
|
137
|
-
const
|
|
137
|
+
const disclosures = [];
|
|
138
|
+
const rendered = renderLines({ ...ctx, disclosures }, item, kind, markdownCache);
|
|
138
139
|
const lines = reflowRows(rendered.lines, ctx.width);
|
|
139
140
|
const block = lines.length > 0
|
|
140
141
|
? {
|
|
@@ -143,6 +144,7 @@ export class FeedBlockCache {
|
|
|
143
144
|
kind,
|
|
144
145
|
open: isOpen(item),
|
|
145
146
|
lines,
|
|
147
|
+
disclosures,
|
|
146
148
|
turnId: item.turnId,
|
|
147
149
|
sequence: item.sequence,
|
|
148
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-blocks.js","sourceRoot":"","sources":["../../../src/classic/feed/feed-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAMxE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAuC,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAwB,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"feed-blocks.js","sourceRoot":"","sources":["../../../src/classic/feed/feed-blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TranscriptPointerGeometry } from "./transcript-selection.js";
|
|
2
|
+
import type { TranscriptWindow } from "./transcript-window.js";
|
|
3
|
+
export declare function disclosureAtPointer(window: TranscriptWindow, x: number, y: number, geometry: TranscriptPointerGeometry): {
|
|
4
|
+
readonly itemId: string;
|
|
5
|
+
readonly action: "output" | undefined;
|
|
6
|
+
} | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function disclosureAtPointer(window, x, y, geometry) {
|
|
2
|
+
const row = window.rows[y - geometry.top];
|
|
3
|
+
if (!row || row.lineIndex === undefined)
|
|
4
|
+
return undefined;
|
|
5
|
+
const column = x - geometry.left;
|
|
6
|
+
const target = row.block.disclosures?.find((entry) => entry.lineIndex === row.lineIndex && column >= entry.column && column < entry.column + entry.width);
|
|
7
|
+
return target ? { itemId: row.block.itemId, action: target.action } : undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=transcript-disclosure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-disclosure.js","sourceRoot":"","sources":["../../../src/classic/feed/transcript-disclosure.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CACjC,MAAwB,EACxB,CAAS,EACT,CAAS,EACT,QAAmC;IAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1J,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ToolCallId } from "../../app/events/app-event.js";
|
|
2
|
+
import type { BoundedTextState } from "../../app/events/event-buffer.js";
|
|
3
|
+
import type { FileChange } from "../../tools/file-diff.js";
|
|
4
|
+
import { type TranscriptState } from "../../ui-core/state/transcript-types.js";
|
|
5
|
+
import type { SpoolReader } from "../blocks/block-context.js";
|
|
6
|
+
export declare class TranscriptResources implements SpoolReader {
|
|
7
|
+
private readonly spool;
|
|
8
|
+
private readonly outputs;
|
|
9
|
+
private readonly changes;
|
|
10
|
+
private readonly listeners;
|
|
11
|
+
private revision;
|
|
12
|
+
constructor(spool: SpoolReader);
|
|
13
|
+
subscribe: (listener: () => void) => (() => void);
|
|
14
|
+
snapshot: () => number;
|
|
15
|
+
tail(id: ToolCallId): string;
|
|
16
|
+
state(id: ToolCallId): BoundedTextState | undefined;
|
|
17
|
+
version(id: ToolCallId): string;
|
|
18
|
+
notice(id: ToolCallId): string | undefined;
|
|
19
|
+
fileChange(change: FileChange): FileChange;
|
|
20
|
+
fileChangeNotice(change: FileChange): string | undefined;
|
|
21
|
+
private ensure;
|
|
22
|
+
prepare(state: TranscriptState): Promise<void>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { open } from "node:fs/promises";
|
|
2
|
+
import { isItemExpanded } from "../../ui-core/state/transcript-types.js";
|
|
3
|
+
const INLINE_BYTES = 32 * 1024 * 1024;
|
|
4
|
+
const PREVIEW_BYTES = 64 * 1024;
|
|
5
|
+
async function savedText(path, full) {
|
|
6
|
+
const file = await open(path, "r");
|
|
7
|
+
try {
|
|
8
|
+
const info = await file.stat();
|
|
9
|
+
if (!info.isFile())
|
|
10
|
+
throw new Error("not a file");
|
|
11
|
+
const limit = full && info.size <= INLINE_BYTES ? info.size : Math.min(info.size, PREVIEW_BYTES);
|
|
12
|
+
const bytes = Buffer.alloc(limit);
|
|
13
|
+
let offset = 0;
|
|
14
|
+
while (offset < limit) {
|
|
15
|
+
const { bytesRead } = await file.read(bytes, offset, limit - offset, offset);
|
|
16
|
+
if (bytesRead === 0)
|
|
17
|
+
break;
|
|
18
|
+
offset += bytesRead;
|
|
19
|
+
}
|
|
20
|
+
return { text: bytes.subarray(0, offset).toString("utf8"), complete: offset >= info.size };
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
await file.close();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class TranscriptResources {
|
|
27
|
+
spool;
|
|
28
|
+
outputs = new Map();
|
|
29
|
+
changes = new Map();
|
|
30
|
+
listeners = new Set();
|
|
31
|
+
revision = 0;
|
|
32
|
+
constructor(spool) {
|
|
33
|
+
this.spool = spool;
|
|
34
|
+
}
|
|
35
|
+
subscribe = (listener) => {
|
|
36
|
+
this.listeners.add(listener);
|
|
37
|
+
return () => this.listeners.delete(listener);
|
|
38
|
+
};
|
|
39
|
+
snapshot = () => this.revision;
|
|
40
|
+
tail(id) {
|
|
41
|
+
return this.outputs.get(id)?.value?.text ?? this.spool.tail(id);
|
|
42
|
+
}
|
|
43
|
+
state(id) {
|
|
44
|
+
const value = this.outputs.get(id)?.value;
|
|
45
|
+
if (value?.complete)
|
|
46
|
+
return { tail: value.text, totalBytes: Buffer.byteLength(value.text), droppedBytes: 0, truncated: false };
|
|
47
|
+
return this.spool.state(id);
|
|
48
|
+
}
|
|
49
|
+
version(id) {
|
|
50
|
+
return `${this.spool.version?.(id) ?? this.spool.tail(id)}:${this.revision}`;
|
|
51
|
+
}
|
|
52
|
+
notice(id) {
|
|
53
|
+
const resource = this.outputs.get(id);
|
|
54
|
+
if (resource?.error)
|
|
55
|
+
return "Saved output unavailable · retained output shown";
|
|
56
|
+
if (resource?.full && resource.value && !resource.value.complete)
|
|
57
|
+
return "Large output · open the full output viewer";
|
|
58
|
+
if (resource?.full && !resource.value)
|
|
59
|
+
return "Loading saved output";
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
fileChange(change) {
|
|
63
|
+
if (!change.snapshotPath || change.afterText !== undefined)
|
|
64
|
+
return change;
|
|
65
|
+
const value = this.changes.get(change.snapshotPath)?.value;
|
|
66
|
+
return value?.complete ? { ...change, afterText: value.text } : change;
|
|
67
|
+
}
|
|
68
|
+
fileChangeNotice(change) {
|
|
69
|
+
if (!change.truncated || change.afterText !== undefined || change.binary)
|
|
70
|
+
return undefined;
|
|
71
|
+
if (!change.snapshotPath)
|
|
72
|
+
return "Full diff unavailable · retained preview shown";
|
|
73
|
+
const resource = this.changes.get(change.snapshotPath);
|
|
74
|
+
if (resource?.error)
|
|
75
|
+
return "Saved diff snapshot unavailable · retained preview shown";
|
|
76
|
+
if (resource?.value && !resource.value.complete)
|
|
77
|
+
return "Large diff snapshot · retained preview shown";
|
|
78
|
+
if (!resource?.value)
|
|
79
|
+
return "Loading saved diff snapshot";
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
ensure(map, key, path, signature, full) {
|
|
83
|
+
const current = map.get(key);
|
|
84
|
+
if (current?.signature === signature && (current.full || !full))
|
|
85
|
+
return current.result;
|
|
86
|
+
const resource = {
|
|
87
|
+
signature, full,
|
|
88
|
+
result: savedText(path, full).then((value) => { resource.value = value; }).catch(() => { resource.error = "unavailable"; }).then(() => {
|
|
89
|
+
if (map.get(key) !== resource)
|
|
90
|
+
return;
|
|
91
|
+
this.revision += 1;
|
|
92
|
+
for (const listener of this.listeners)
|
|
93
|
+
listener();
|
|
94
|
+
}),
|
|
95
|
+
};
|
|
96
|
+
map.set(key, resource);
|
|
97
|
+
return resource.result;
|
|
98
|
+
}
|
|
99
|
+
async prepare(state) {
|
|
100
|
+
const tools = new Set();
|
|
101
|
+
const snapshots = new Set();
|
|
102
|
+
const pending = [];
|
|
103
|
+
let released = false;
|
|
104
|
+
for (const id of state.order) {
|
|
105
|
+
const item = state.byId.get(id);
|
|
106
|
+
if (item?.kind !== "tool" || item.status === "running" || item.status === "queued")
|
|
107
|
+
continue;
|
|
108
|
+
const expanded = isItemExpanded(state, item);
|
|
109
|
+
const needsHead = this.spool.state(item.toolCallId)?.truncated || item.outputBytes > 256 * 1024;
|
|
110
|
+
if (item.artifactPath && (expanded || needsHead)) {
|
|
111
|
+
tools.add(item.toolCallId);
|
|
112
|
+
if (!expanded && this.outputs.get(item.toolCallId)?.full)
|
|
113
|
+
released = this.outputs.delete(item.toolCallId) || released;
|
|
114
|
+
const signature = `${item.artifactPath}:${this.spool.version?.(item.toolCallId) ?? item.outputBytes}`;
|
|
115
|
+
pending.push(this.ensure(this.outputs, item.toolCallId, item.artifactPath, signature, expanded));
|
|
116
|
+
}
|
|
117
|
+
if (!expanded)
|
|
118
|
+
continue;
|
|
119
|
+
for (const change of item.fileChanges ?? []) {
|
|
120
|
+
if (!change.snapshotPath || change.afterText !== undefined)
|
|
121
|
+
continue;
|
|
122
|
+
snapshots.add(change.snapshotPath);
|
|
123
|
+
pending.push(this.ensure(this.changes, change.snapshotPath, change.snapshotPath, change.snapshotPath, true));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
for (const id of this.outputs.keys())
|
|
127
|
+
if (!tools.has(id))
|
|
128
|
+
released = this.outputs.delete(id) || released;
|
|
129
|
+
for (const path of this.changes.keys())
|
|
130
|
+
if (!snapshots.has(path))
|
|
131
|
+
released = this.changes.delete(path) || released;
|
|
132
|
+
if (released) {
|
|
133
|
+
this.revision += 1;
|
|
134
|
+
for (const listener of this.listeners)
|
|
135
|
+
listener();
|
|
136
|
+
}
|
|
137
|
+
await Promise.all(pending);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=transcript-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-resources.js","sourceRoot":"","sources":["../../../src/classic/feed/transcript-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,52 @@
|
|
|
1
1
|
import { BLOCK_GAP_ROWS } from "./block-height.js";
|
|
2
|
+
const transcriptIndexes = new WeakMap();
|
|
3
|
+
function transcriptIndex(blocks) {
|
|
4
|
+
const cached = transcriptIndexes.get(blocks);
|
|
5
|
+
if (cached)
|
|
6
|
+
return cached;
|
|
7
|
+
const starts = [];
|
|
8
|
+
let totalRows = 0;
|
|
9
|
+
for (let index = 0; index < blocks.length; index += 1) {
|
|
10
|
+
starts.push(totalRows);
|
|
11
|
+
totalRows += blocks[index].lines.length;
|
|
12
|
+
if (index < blocks.length - 1)
|
|
13
|
+
totalRows += BLOCK_GAP_ROWS;
|
|
14
|
+
}
|
|
15
|
+
const result = { starts, totalRows };
|
|
16
|
+
transcriptIndexes.set(blocks, result);
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
2
19
|
export function totalTranscriptRows(blocks) {
|
|
3
|
-
|
|
4
|
-
return 0;
|
|
5
|
-
let total = BLOCK_GAP_ROWS * (blocks.length - 1);
|
|
6
|
-
for (const block of blocks)
|
|
7
|
-
total += block.lines.length;
|
|
8
|
-
return total;
|
|
20
|
+
return transcriptIndex(blocks).totalRows;
|
|
9
21
|
}
|
|
10
|
-
function
|
|
22
|
+
function firstVisibleBlock(starts, row) {
|
|
23
|
+
let lower = 0;
|
|
24
|
+
let upper = starts.length;
|
|
25
|
+
while (lower < upper) {
|
|
26
|
+
const middle = Math.floor((lower + upper) / 2);
|
|
27
|
+
if (starts[middle] <= row)
|
|
28
|
+
lower = middle + 1;
|
|
29
|
+
else
|
|
30
|
+
upper = middle;
|
|
31
|
+
}
|
|
32
|
+
return Math.max(0, lower - 1);
|
|
33
|
+
}
|
|
34
|
+
function sliceRows(blocks, index, start, end) {
|
|
11
35
|
const rows = [];
|
|
12
|
-
|
|
13
|
-
|
|
36
|
+
if (start >= end)
|
|
37
|
+
return rows;
|
|
38
|
+
const first = firstVisibleBlock(index.starts, start);
|
|
39
|
+
let cursor = index.starts[first] ?? 0;
|
|
40
|
+
for (let blockIndex = first; blockIndex < blocks.length && cursor < end; blockIndex += 1) {
|
|
14
41
|
const block = blocks[blockIndex];
|
|
42
|
+
const lines = block.lines;
|
|
15
43
|
const gap = blockIndex < blocks.length - 1 ? BLOCK_GAP_ROWS : 0;
|
|
16
|
-
const span =
|
|
17
|
-
if (cursor + span <= start) {
|
|
18
|
-
cursor += span;
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
44
|
+
const span = lines.length + gap;
|
|
21
45
|
const from = Math.max(0, start - cursor);
|
|
22
46
|
const to = Math.min(span, end - cursor);
|
|
23
47
|
for (let offset = from; offset < to; offset += 1) {
|
|
24
|
-
rows.push(offset <
|
|
25
|
-
? { key: `${block.key}:${offset}`, line:
|
|
48
|
+
rows.push(offset < lines.length
|
|
49
|
+
? { key: `${block.key}:${offset}`, line: lines[offset], block, lineIndex: offset }
|
|
26
50
|
: { key: `${block.key}:gap`, line: "", block, lineIndex: undefined });
|
|
27
51
|
}
|
|
28
52
|
cursor += span;
|
|
@@ -31,12 +55,13 @@ function sliceRows(blocks, start, end) {
|
|
|
31
55
|
}
|
|
32
56
|
export function planTranscriptWindow(blocks, budget, offsetFromBottom) {
|
|
33
57
|
const viewportRows = Math.max(0, Math.floor(budget));
|
|
34
|
-
const
|
|
58
|
+
const index = transcriptIndex(blocks);
|
|
59
|
+
const totalRows = index.totalRows;
|
|
35
60
|
const maxOffset = Math.max(0, totalRows - viewportRows);
|
|
36
61
|
const offset = Math.max(0, Math.min(Math.floor(offsetFromBottom), maxOffset));
|
|
37
62
|
const end = totalRows - offset;
|
|
38
63
|
const start = Math.max(0, end - viewportRows);
|
|
39
|
-
const rows = viewportRows === 0 ? [] : sliceRows(blocks, start, end);
|
|
64
|
+
const rows = viewportRows === 0 ? [] : sliceRows(blocks, index, start, end);
|
|
40
65
|
const visibleItemIds = new Set();
|
|
41
66
|
for (const row of rows)
|
|
42
67
|
visibleItemIds.add(row.block.itemId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-window.js","sourceRoot":"","sources":["../../../src/classic/feed/transcript-window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"transcript-window.js","sourceRoot":"","sources":["../../../src/classic/feed/transcript-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export interface InputRouterDeps {
|
|
|
12
12
|
readonly onText: (text: string) => void;
|
|
13
13
|
readonly onPaste: (text: string) => void;
|
|
14
14
|
readonly onMouse: (event: MouseEvent) => void;
|
|
15
|
+
readonly onKeyboardInput?: (() => void) | undefined;
|
|
15
16
|
readonly onToast: (text: string) => void;
|
|
16
17
|
readonly closeOverlay: () => void;
|
|
17
18
|
readonly dismissBlockingPrompt: () => boolean;
|
|
@@ -23,6 +24,7 @@ export interface InputRouterDeps {
|
|
|
23
24
|
readonly onContextLimitStart?: (() => void) | undefined;
|
|
24
25
|
readonly onContextLimitKey?: ((key: KeyEvent, chord: string) => void) | undefined;
|
|
25
26
|
readonly onContextLimitPaste?: ((text: string) => void) | undefined;
|
|
27
|
+
readonly onQueueToggle?: (() => void) | undefined;
|
|
26
28
|
}
|
|
27
29
|
export declare class InputRouter {
|
|
28
30
|
private readonly deps;
|
|
@@ -21,6 +21,7 @@ export class InputRouter {
|
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
if (event.type === "paste") {
|
|
24
|
+
this.deps.onKeyboardInput?.();
|
|
24
25
|
if (this.deps.contextLimitEditing?.() === true) {
|
|
25
26
|
this.deps.onContextLimitPaste?.(event.text);
|
|
26
27
|
}
|
|
@@ -41,6 +42,7 @@ export class InputRouter {
|
|
|
41
42
|
this.handle(event);
|
|
42
43
|
}
|
|
43
44
|
routeKey(key) {
|
|
45
|
+
this.deps.onKeyboardInput?.();
|
|
44
46
|
const chord = chordFromKey(key);
|
|
45
47
|
const context = this.deps.focus.activeContext();
|
|
46
48
|
const contextFree = resolveContextFreeAction(this.deps.router, chord);
|
|
@@ -82,6 +84,10 @@ export class InputRouter {
|
|
|
82
84
|
this.deps.onContextLimitStart?.();
|
|
83
85
|
return;
|
|
84
86
|
}
|
|
87
|
+
if ((chord === "ctrl+z" || chord === "alt+q") && this.deps.onQueueToggle) {
|
|
88
|
+
this.deps.onQueueToggle();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
85
91
|
if (chord === "escape" && context === "transcript" && !this.deps.hasSelection()) {
|
|
86
92
|
this.deps.ladder.escape(false);
|
|
87
93
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-router.js","sourceRoot":"","sources":["../../../src/classic/input/input-router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAGjF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAqD,MAAM,gBAAgB,CAAC;AAE7F,MAAM,iBAAiB,GAA+B,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnF,MAAM,gBAAgB,GAA+B,IAAI,GAAG,CAAC;IAC3D,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,mBAAmB;CACpB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"input-router.js","sourceRoot":"","sources":["../../../src/classic/input/input-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -274,8 +274,9 @@ export class RawDecoder {
|
|
|
274
274
|
}
|
|
275
275
|
const params = body.split(";").map((part) => Number(part.split(":")[0]));
|
|
276
276
|
const modifiers = modifiersFromCsi(params[1]);
|
|
277
|
-
|
|
278
|
-
|
|
277
|
+
const modifiedKey = finalByte === "~" && params[0] === 27 && params.length === 3;
|
|
278
|
+
if (finalByte === "u" || modifiedKey) {
|
|
279
|
+
const key = csiUKey(params[modifiedKey ? 2 : 0], modifiers);
|
|
279
280
|
if (key)
|
|
280
281
|
events.push({ type: "key", key });
|
|
281
282
|
return;
|