@compilr-dev/cli 0.4.0 → 0.5.1
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 +254 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +134 -4
- package/dist/agent.js +345 -166
- package/dist/anchors/index.d.ts +9 -0
- package/dist/anchors/index.js +9 -0
- package/dist/anchors/project-anchors.d.ts +79 -0
- package/dist/anchors/project-anchors.js +202 -0
- package/dist/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +533 -0
- package/dist/commands-v2/handlers/core.d.ts +14 -0
- package/dist/commands-v2/handlers/core.js +290 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +177 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +25 -0
- package/dist/commands-v2/handlers/index.js +63 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +1035 -0
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +17 -0
- package/dist/commands-v2/handlers/settings.js +417 -0
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +14 -0
- package/dist/commands-v2/index.js +18 -0
- package/dist/commands-v2/registry.d.ts +52 -0
- package/dist/commands-v2/registry.js +114 -0
- package/dist/commands-v2/types.d.ts +153 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +123 -7
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +615 -179
- package/dist/input-handlers/index.d.ts +7 -0
- package/dist/input-handlers/index.js +7 -0
- package/dist/input-handlers/memory-handler.d.ts +26 -0
- package/dist/input-handlers/memory-handler.js +69 -0
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.d.ts +63 -0
- package/dist/repl-helpers.js +319 -0
- package/dist/repl-v2.d.ts +554 -0
- package/dist/repl-v2.js +3286 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +156 -13
- package/dist/settings/index.js +377 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +114 -0
- package/dist/settings/paths.js +270 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -58
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +35 -75
- package/dist/themes/colors.js +3 -1
- package/dist/themes/registry.d.ts +5 -36
- package/dist/themes/registry.js +11 -95
- package/dist/themes/types.d.ts +3 -38
- package/dist/themes/types.js +2 -2
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +56 -0
- package/dist/tools/backlog-wrappers.js +353 -0
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +2 -2
- package/dist/tools/db-tools.d.ts +12 -0
- package/dist/tools/db-tools.js +14 -0
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +43 -0
- package/dist/tools/document-db.js +220 -0
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +34 -0
- package/dist/tools/project-db.js +39 -0
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +135 -0
- package/dist/tools/workitem-db.js +730 -0
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +238 -38
- package/dist/ui/ask-user-overlay.d.ts +2 -2
- package/dist/ui/ask-user-overlay.js +443 -535
- package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +26 -0
- package/dist/ui/base/index.js +33 -0
- package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
- package/dist/ui/base/inline-overlay-utils.js +320 -0
- package/dist/ui/base/inline-overlay.d.ts +159 -0
- package/dist/ui/base/inline-overlay.js +257 -0
- package/dist/ui/base/key-utils.d.ts +15 -0
- package/dist/ui/base/key-utils.js +30 -0
- package/dist/ui/base/overlay-base-v2.d.ts +203 -0
- package/dist/ui/base/overlay-base-v2.js +260 -0
- package/dist/ui/base/overlay-base.d.ts +156 -0
- package/dist/ui/base/overlay-base.js +238 -0
- package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
- package/dist/ui/base/overlay-lifecycle.js +159 -0
- package/dist/ui/base/overlay-types.d.ts +185 -0
- package/dist/ui/base/overlay-types.js +7 -0
- package/dist/ui/base/render-utils.d.ts +27 -0
- package/dist/ui/base/render-utils.js +36 -0
- package/dist/ui/base/screen-stack.d.ts +148 -0
- package/dist/ui/base/screen-stack.js +184 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
- package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
- package/dist/ui/base/tabbed-list-overlay.js +369 -0
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.d.ts +75 -4
- package/dist/ui/conversation.js +376 -165
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +4 -10
- package/dist/ui/features/index.d.ts +34 -0
- package/dist/ui/features/index.js +34 -0
- package/dist/ui/features/input-feature.d.ts +85 -0
- package/dist/ui/features/input-feature.js +238 -0
- package/dist/ui/features/list-feature.d.ts +155 -0
- package/dist/ui/features/list-feature.js +244 -0
- package/dist/ui/features/pagination-feature.d.ts +154 -0
- package/dist/ui/features/pagination-feature.js +238 -0
- package/dist/ui/features/search-feature.d.ts +148 -0
- package/dist/ui/features/search-feature.js +185 -0
- package/dist/ui/features/tab-feature.d.ts +194 -0
- package/dist/ui/features/tab-feature.js +307 -0
- package/dist/ui/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +181 -7
- package/dist/ui/footer.js +523 -74
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +135 -33
- package/dist/ui/input-prompt.js +728 -337
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/keys-overlay.d.ts +1 -0
- package/dist/ui/keys-overlay.js +203 -141
- package/dist/ui/line-utils.d.ts +88 -0
- package/dist/ui/line-utils.js +150 -0
- package/dist/ui/live-region-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +157 -0
- package/dist/ui/live-region.js +379 -0
- package/dist/ui/mascot/expressions.d.ts +32 -0
- package/dist/ui/mascot/expressions.js +213 -0
- package/dist/ui/mascot/index.d.ts +8 -0
- package/dist/ui/mascot/index.js +8 -0
- package/dist/ui/mascot/renderer.d.ts +19 -0
- package/dist/ui/mascot/renderer.js +132 -0
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
- package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
- package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
- package/dist/ui/overlay/index.d.ts +52 -0
- package/dist/ui/overlay/index.js +54 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/types.d.ts +140 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +4 -460
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +189 -300
- package/dist/ui/providers/types.d.ts +178 -0
- package/dist/ui/providers/types.js +9 -0
- package/dist/ui/render-modes.d.ts +36 -0
- package/dist/ui/render-modes.js +44 -0
- package/dist/ui/startup-menu.d.ts +36 -0
- package/dist/ui/startup-menu.js +236 -0
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +318 -0
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +220 -0
- package/dist/ui/terminal-renderer.js +750 -0
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +331 -0
- package/dist/ui/terminal-ui.js +819 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +124 -38
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +1027 -0
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +39 -17
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +240 -0
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -0
- package/dist/workflow/guided-mode-injector.d.ts +42 -0
- package/dist/workflow/guided-mode-injector.js +191 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/step-criteria.d.ts +62 -0
- package/dist/workflow/step-criteria.js +150 -0
- package/dist/workflow/step-tracker.d.ts +92 -0
- package/dist/workflow/step-tracker.js +141 -0
- package/package.json +32 -12
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -121
- package/dist/repl.js +0 -1878
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -501
- package/dist/ui/arch-type-overlay.d.ts +0 -20
- package/dist/ui/arch-type-overlay.js +0 -229
- package/dist/ui/backlog-overlay.d.ts +0 -17
- package/dist/ui/backlog-overlay.js +0 -786
- package/dist/ui/commands-overlay.d.ts +0 -11
- package/dist/ui/commands-overlay.js +0 -410
- package/dist/ui/config-overlay.d.ts +0 -34
- package/dist/ui/config-overlay.js +0 -977
- package/dist/ui/init-overlay.d.ts +0 -24
- package/dist/ui/init-overlay.js +0 -525
- package/dist/ui/input-prompt-v2.d.ts +0 -179
- package/dist/ui/input-prompt-v2.js +0 -991
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -171
- package/dist/ui/tools-overlay.d.ts +0 -26
- package/dist/ui/tools-overlay.js +0 -278
- package/dist/ui/tutorial-overlay.d.ts +0 -10
- package/dist/ui/tutorial-overlay.js +0 -936
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveRegion - Unified Live-Updating Zone for Running Tools
|
|
3
|
+
*
|
|
4
|
+
* Manages the display of running tools (bash, subagents) that need live updates.
|
|
5
|
+
* Sits at the top of the footer, commits to scrolling zone on completion.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Single subagent: Full detail with tool history
|
|
9
|
+
* - Multiple subagents: Tree structure with summary header
|
|
10
|
+
* - Bash commands: Rolling output lines
|
|
11
|
+
* - Ephemeral notifications on completion
|
|
12
|
+
*/
|
|
13
|
+
import { getStyles } from '../themes/index.js';
|
|
14
|
+
import { getVisibleLength } from './line-utils.js';
|
|
15
|
+
import { formatTokens } from './base/index.js';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Constants
|
|
18
|
+
// =============================================================================
|
|
19
|
+
const EPHEMERAL_TIMEOUT_MS = 3000; // 3 seconds
|
|
20
|
+
const DEFAULT_MAX_OUTPUT_LINES = 3;
|
|
21
|
+
// Tree drawing characters
|
|
22
|
+
const TREE_BRANCH = '├─';
|
|
23
|
+
const TREE_END = '└─';
|
|
24
|
+
const TREE_CONTINUE = '│';
|
|
25
|
+
const RESULT_MARKER = '⎿';
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// LiveRegion Class
|
|
28
|
+
// =============================================================================
|
|
29
|
+
export class LiveRegion {
|
|
30
|
+
items = new Map();
|
|
31
|
+
ephemeralNotifications = [];
|
|
32
|
+
maxOutputLines = DEFAULT_MAX_OUTPUT_LINES;
|
|
33
|
+
verbose = false;
|
|
34
|
+
expanded = false;
|
|
35
|
+
// =========================================================================
|
|
36
|
+
// Item Management
|
|
37
|
+
// =========================================================================
|
|
38
|
+
/**
|
|
39
|
+
* Add a new live item to the region.
|
|
40
|
+
*/
|
|
41
|
+
addItem(item) {
|
|
42
|
+
this.items.set(item.id, item);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Update an existing live item.
|
|
46
|
+
*/
|
|
47
|
+
updateItem(id, update) {
|
|
48
|
+
const existing = this.items.get(id);
|
|
49
|
+
if (existing) {
|
|
50
|
+
// Merge update into existing item (type assertion needed due to union type)
|
|
51
|
+
this.items.set(id, { ...existing, ...update });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Mark an item as completed. Returns the final item for committing to scrolling zone.
|
|
56
|
+
*/
|
|
57
|
+
completeItem(id, status = 'done') {
|
|
58
|
+
const item = this.items.get(id);
|
|
59
|
+
if (item) {
|
|
60
|
+
item.status = status;
|
|
61
|
+
item.endTime = Date.now();
|
|
62
|
+
// Add ephemeral notification only for background items
|
|
63
|
+
if (item.background && item.type === 'subagent') {
|
|
64
|
+
this.addEphemeralNotification(`Agent "${item.description}" completed.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return item;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Remove an item and return it (for committing to scrolling zone).
|
|
71
|
+
*/
|
|
72
|
+
removeItem(id) {
|
|
73
|
+
const item = this.items.get(id);
|
|
74
|
+
this.items.delete(id);
|
|
75
|
+
return item;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get an item by ID.
|
|
79
|
+
*/
|
|
80
|
+
getItem(id) {
|
|
81
|
+
return this.items.get(id);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get all current items.
|
|
85
|
+
*/
|
|
86
|
+
getItems() {
|
|
87
|
+
return Array.from(this.items.values());
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if there are any items.
|
|
91
|
+
*/
|
|
92
|
+
hasItems() {
|
|
93
|
+
return this.items.size > 0;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get count of items.
|
|
97
|
+
*/
|
|
98
|
+
getItemCount() {
|
|
99
|
+
return this.items.size;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Clear all items.
|
|
103
|
+
*/
|
|
104
|
+
clear() {
|
|
105
|
+
this.items.clear();
|
|
106
|
+
this.ephemeralNotifications = [];
|
|
107
|
+
}
|
|
108
|
+
// =========================================================================
|
|
109
|
+
// Ephemeral Notifications
|
|
110
|
+
// =========================================================================
|
|
111
|
+
/**
|
|
112
|
+
* Add an ephemeral notification that disappears after timeout.
|
|
113
|
+
*/
|
|
114
|
+
addEphemeralNotification(message) {
|
|
115
|
+
this.ephemeralNotifications.push({
|
|
116
|
+
message,
|
|
117
|
+
timestamp: Date.now(),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Clean up expired ephemeral notifications.
|
|
122
|
+
*/
|
|
123
|
+
cleanupEphemeralNotifications() {
|
|
124
|
+
const now = Date.now();
|
|
125
|
+
this.ephemeralNotifications = this.ephemeralNotifications.filter((n) => now - n.timestamp < EPHEMERAL_TIMEOUT_MS);
|
|
126
|
+
}
|
|
127
|
+
// =========================================================================
|
|
128
|
+
// Configuration
|
|
129
|
+
// =========================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Set maximum output lines per item.
|
|
132
|
+
*/
|
|
133
|
+
setMaxOutputLines(maxLines) {
|
|
134
|
+
this.maxOutputLines = maxLines;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Set verbose mode.
|
|
138
|
+
*/
|
|
139
|
+
setVerbose(verbose) {
|
|
140
|
+
this.verbose = verbose;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Toggle expanded view (Ctrl+O).
|
|
144
|
+
*/
|
|
145
|
+
toggleExpanded() {
|
|
146
|
+
this.expanded = !this.expanded;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get expanded state.
|
|
150
|
+
*/
|
|
151
|
+
isExpanded() {
|
|
152
|
+
return this.expanded;
|
|
153
|
+
}
|
|
154
|
+
// =========================================================================
|
|
155
|
+
// Rendering
|
|
156
|
+
// =========================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Render the live region content.
|
|
159
|
+
*/
|
|
160
|
+
render(options) {
|
|
161
|
+
const lines = [];
|
|
162
|
+
const items = this.getItems();
|
|
163
|
+
if (items.length === 0) {
|
|
164
|
+
// Only show ephemeral notifications if no items
|
|
165
|
+
this.cleanupEphemeralNotifications();
|
|
166
|
+
for (const notification of this.ephemeralNotifications) {
|
|
167
|
+
lines.push(this.renderEphemeralNotification(notification.message));
|
|
168
|
+
}
|
|
169
|
+
return lines;
|
|
170
|
+
}
|
|
171
|
+
// Separate items by type
|
|
172
|
+
const subagents = items.filter((i) => i.type === 'subagent');
|
|
173
|
+
const bashItems = items.filter((i) => i.type === 'bash');
|
|
174
|
+
const toolItems = items.filter((i) => i.type === 'tool');
|
|
175
|
+
// Render subagents (single vs multiple has different rendering)
|
|
176
|
+
if (subagents.length === 1) {
|
|
177
|
+
lines.push(...this.renderSingleSubagent(subagents[0], options));
|
|
178
|
+
}
|
|
179
|
+
else if (subagents.length > 1) {
|
|
180
|
+
lines.push(...this.renderMultipleSubagents(subagents, options));
|
|
181
|
+
}
|
|
182
|
+
// Render bash commands
|
|
183
|
+
for (const bash of bashItems) {
|
|
184
|
+
lines.push(...this.renderBashItem(bash, options));
|
|
185
|
+
}
|
|
186
|
+
// Render generic tools
|
|
187
|
+
for (const tool of toolItems) {
|
|
188
|
+
lines.push(...this.renderToolItem(tool, options));
|
|
189
|
+
}
|
|
190
|
+
// Add ephemeral notifications at the end
|
|
191
|
+
this.cleanupEphemeralNotifications();
|
|
192
|
+
for (const notification of this.ephemeralNotifications) {
|
|
193
|
+
lines.push(this.renderEphemeralNotification(notification.message));
|
|
194
|
+
}
|
|
195
|
+
return lines;
|
|
196
|
+
}
|
|
197
|
+
// =========================================================================
|
|
198
|
+
// Single Subagent Rendering
|
|
199
|
+
// =========================================================================
|
|
200
|
+
renderSingleSubagent(item, options) {
|
|
201
|
+
const s = getStyles();
|
|
202
|
+
const lines = [];
|
|
203
|
+
// Header: ● AgentType(description)
|
|
204
|
+
const statusIcon = item.status === 'done' ? ' ✓' : '';
|
|
205
|
+
const header = `${s.info('●')} ${s.primary(item.agentType)}(${item.description})${statusIcon}`;
|
|
206
|
+
lines.push(header);
|
|
207
|
+
if (item.status === 'done') {
|
|
208
|
+
// Completed: show summary
|
|
209
|
+
const duration = item.endTime ? Math.round((item.endTime - item.startTime) / 1000) : 0;
|
|
210
|
+
const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
|
|
211
|
+
const summary = ` ${RESULT_MARKER} Done (${String(item.toolCount)} tool uses${tokenStr} · ${String(duration)}s)`;
|
|
212
|
+
lines.push(s.muted(summary));
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
// Running: show last action
|
|
216
|
+
if (item.lastAction) {
|
|
217
|
+
lines.push(` ${RESULT_MARKER} ${s.muted(item.lastAction)}`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
lines.push(` ${RESULT_MARKER} ${s.muted('Initializing…')}`);
|
|
221
|
+
}
|
|
222
|
+
// Show detail lines if expanded or verbose
|
|
223
|
+
if ((this.expanded || this.verbose) && item.lastActionDetails.length > 0) {
|
|
224
|
+
for (const detail of item.lastActionDetails.slice(0, this.maxOutputLines)) {
|
|
225
|
+
lines.push(` ${s.muted(detail)}`);
|
|
226
|
+
}
|
|
227
|
+
if (item.lastActionDetails.length > this.maxOutputLines) {
|
|
228
|
+
const hidden = item.lastActionDetails.length - this.maxOutputLines;
|
|
229
|
+
lines.push(` ${s.muted(`+${String(hidden)} more tool uses`)} ${s.muted('(ctrl+o to expand)')}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Hints
|
|
233
|
+
// ctrl+b background: coming soon
|
|
234
|
+
}
|
|
235
|
+
return lines;
|
|
236
|
+
}
|
|
237
|
+
// =========================================================================
|
|
238
|
+
// Multiple Subagents Rendering (Tree Structure)
|
|
239
|
+
// =========================================================================
|
|
240
|
+
renderMultipleSubagents(items, options) {
|
|
241
|
+
const s = getStyles();
|
|
242
|
+
const lines = [];
|
|
243
|
+
// Count running vs done
|
|
244
|
+
const runningCount = items.filter((i) => i.status === 'running').length;
|
|
245
|
+
const allDone = runningCount === 0;
|
|
246
|
+
// Determine agent type label
|
|
247
|
+
const types = new Set(items.map((i) => i.agentType));
|
|
248
|
+
const typeLabel = types.size === 1 ? `${items[0].agentType} agents` : 'agents';
|
|
249
|
+
// Header: ● Running N agents… or ● N agents finished
|
|
250
|
+
if (allDone) {
|
|
251
|
+
lines.push(`${s.info('●')} ${String(items.length)} ${typeLabel} finished ${s.muted('(ctrl+o to expand)')}`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
lines.push(`${s.info('●')} Running ${String(items.length)} ${typeLabel}… ${s.muted('(ctrl+o to expand)')}`);
|
|
255
|
+
}
|
|
256
|
+
// Render each agent in tree structure
|
|
257
|
+
for (let i = 0; i < items.length; i++) {
|
|
258
|
+
const item = items[i];
|
|
259
|
+
const isLast = i === items.length - 1;
|
|
260
|
+
const branch = isLast ? TREE_END : TREE_BRANCH;
|
|
261
|
+
const continuation = isLast ? ' ' : `${TREE_CONTINUE} `;
|
|
262
|
+
// Agent line: description · tool count · tokens
|
|
263
|
+
const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
|
|
264
|
+
const toolWord = item.toolCount === 1 ? 'tool use' : 'tool uses';
|
|
265
|
+
const agentLine = ` ${branch} ${item.description} · ${String(item.toolCount)} ${toolWord}${tokenStr}`;
|
|
266
|
+
lines.push(agentLine);
|
|
267
|
+
// Last action line
|
|
268
|
+
if (item.status === 'done') {
|
|
269
|
+
lines.push(` ${continuation}${RESULT_MARKER} ${s.muted('Done')}`);
|
|
270
|
+
}
|
|
271
|
+
else if (item.lastAction) {
|
|
272
|
+
lines.push(` ${continuation}${RESULT_MARKER} ${s.muted(item.lastAction)}`);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
lines.push(` ${continuation}${RESULT_MARKER} ${s.muted('Initializing…')}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Hint at the end
|
|
279
|
+
if (!allDone) {
|
|
280
|
+
// ctrl+b background: coming soon
|
|
281
|
+
}
|
|
282
|
+
return lines;
|
|
283
|
+
}
|
|
284
|
+
// =========================================================================
|
|
285
|
+
// Bash Item Rendering
|
|
286
|
+
// =========================================================================
|
|
287
|
+
renderBashItem(item, options) {
|
|
288
|
+
const s = getStyles();
|
|
289
|
+
const lines = [];
|
|
290
|
+
// Header: ● Bash(command)
|
|
291
|
+
// Handle multi-line commands - only show first line
|
|
292
|
+
// Truncate long commands - show more context than before (60 chars)
|
|
293
|
+
const maxCmdLen = Math.min(60, options.width - 15);
|
|
294
|
+
const statusIcon = item.status === 'done' ? ' ✓' : '';
|
|
295
|
+
// For multi-line commands, show only first line or a summary
|
|
296
|
+
let cmdForDisplay = item.command;
|
|
297
|
+
const newlineIndex = cmdForDisplay.indexOf('\n');
|
|
298
|
+
if (newlineIndex !== -1) {
|
|
299
|
+
// Multi-line command - show first line with indicator
|
|
300
|
+
const firstLine = cmdForDisplay.slice(0, newlineIndex).trim();
|
|
301
|
+
const lineCount = cmdForDisplay.split('\n').length;
|
|
302
|
+
cmdForDisplay = firstLine.length > 0
|
|
303
|
+
? `${firstLine}… (${String(lineCount)} lines)`
|
|
304
|
+
: `(${String(lineCount)} line script)`;
|
|
305
|
+
}
|
|
306
|
+
const cmdDisplay = cmdForDisplay.length > maxCmdLen
|
|
307
|
+
? cmdForDisplay.slice(0, maxCmdLen) + '…'
|
|
308
|
+
: cmdForDisplay;
|
|
309
|
+
lines.push(`${s.info('●')} ${s.primary('Bash')}(${cmdDisplay})${statusIcon}`);
|
|
310
|
+
// Output lines - show first N lines (more useful than last N for live streaming)
|
|
311
|
+
const displayLines = this.expanded
|
|
312
|
+
? item.output
|
|
313
|
+
: item.output.slice(0, this.maxOutputLines);
|
|
314
|
+
if (displayLines.length > 0) {
|
|
315
|
+
for (const line of displayLines) {
|
|
316
|
+
const truncated = this.truncateLine(line, options.width - 5);
|
|
317
|
+
lines.push(` ${RESULT_MARKER} ${s.muted(truncated)}`);
|
|
318
|
+
}
|
|
319
|
+
// Show collapsed indicator if there are hidden lines
|
|
320
|
+
if (!this.expanded && item.output.length > this.maxOutputLines) {
|
|
321
|
+
const hidden = item.output.length - this.maxOutputLines;
|
|
322
|
+
lines.push(` ${s.muted(`… +${String(hidden)} lines`)} ${s.muted('(ctrl+o to expand)')}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Hint for running bash
|
|
326
|
+
if (item.status === 'running') {
|
|
327
|
+
// ctrl+b background: coming soon
|
|
328
|
+
}
|
|
329
|
+
return lines;
|
|
330
|
+
}
|
|
331
|
+
// =========================================================================
|
|
332
|
+
// Tool Item Rendering
|
|
333
|
+
// =========================================================================
|
|
334
|
+
renderToolItem(item, _options) {
|
|
335
|
+
const s = getStyles();
|
|
336
|
+
const lines = [];
|
|
337
|
+
// Header: ● ToolName(params)
|
|
338
|
+
const statusIcon = item.status === 'done' ? ' ✓' : '';
|
|
339
|
+
lines.push(`${s.info('●')} ${s.primary(item.name)}(${item.params})${statusIcon}`);
|
|
340
|
+
// Progress or status
|
|
341
|
+
if (item.progress) {
|
|
342
|
+
lines.push(` ${RESULT_MARKER} ${s.muted(item.progress)}`);
|
|
343
|
+
}
|
|
344
|
+
return lines;
|
|
345
|
+
}
|
|
346
|
+
// =========================================================================
|
|
347
|
+
// Ephemeral Notification Rendering
|
|
348
|
+
// =========================================================================
|
|
349
|
+
renderEphemeralNotification(message) {
|
|
350
|
+
const s = getStyles();
|
|
351
|
+
return `${s.info('●')} ${message}`;
|
|
352
|
+
}
|
|
353
|
+
// =========================================================================
|
|
354
|
+
// Helpers
|
|
355
|
+
// =========================================================================
|
|
356
|
+
/**
|
|
357
|
+
* Truncate a line to fit within width.
|
|
358
|
+
*/
|
|
359
|
+
truncateLine(line, maxWidth) {
|
|
360
|
+
const visibleLen = getVisibleLength(line);
|
|
361
|
+
if (visibleLen <= maxWidth) {
|
|
362
|
+
return line;
|
|
363
|
+
}
|
|
364
|
+
// Simple truncation (doesn't handle ANSI codes perfectly)
|
|
365
|
+
return line.slice(0, maxWidth - 1) + '…';
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Format duration for display.
|
|
369
|
+
*/
|
|
370
|
+
formatDuration(ms) {
|
|
371
|
+
const seconds = Math.floor(ms / 1000);
|
|
372
|
+
if (seconds < 60) {
|
|
373
|
+
return `${String(seconds)}s`;
|
|
374
|
+
}
|
|
375
|
+
const minutes = Math.floor(seconds / 60);
|
|
376
|
+
const remainingSeconds = seconds % 60;
|
|
377
|
+
return `${String(minutes)}m ${String(remainingSeconds)}s`;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Expression Library
|
|
3
|
+
*
|
|
4
|
+
* ASCII art expressions for the compilr mascot - a retro CRT monitor
|
|
5
|
+
* with rabbit-ear antennas and a 3D keyboard.
|
|
6
|
+
*
|
|
7
|
+
* Each expression is 6 lines tall and designed to sit alongside the logo.
|
|
8
|
+
*/
|
|
9
|
+
export type ExpressionCode = 'neutral' | 'thinking' | 'looking_left' | 'looking_right' | 'sleeping' | 'alert' | 'error' | 'success' | 'success_minimal' | 'searching' | 'skeptical';
|
|
10
|
+
export type MascotSetting = 'none' | 'random' | ExpressionCode;
|
|
11
|
+
export declare const EXPRESSIONS: Record<ExpressionCode, string[]>;
|
|
12
|
+
export declare const EXPRESSIONS_INLINE: Record<ExpressionCode, string>;
|
|
13
|
+
export declare const EXPRESSION_CODES: ExpressionCode[];
|
|
14
|
+
export declare const MASCOT_OPTIONS: MascotSetting[];
|
|
15
|
+
export declare const MASCOT_LABELS: Record<MascotSetting, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Get a random expression code
|
|
18
|
+
*/
|
|
19
|
+
export declare function getRandomExpression(): ExpressionCode;
|
|
20
|
+
/**
|
|
21
|
+
* Reset the session expression (for next startup or when settings change)
|
|
22
|
+
*/
|
|
23
|
+
export declare function resetSessionExpression(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get expression lines for a mascot setting
|
|
26
|
+
* Returns null for 'none', picks random for 'random', otherwise returns the expression
|
|
27
|
+
*/
|
|
28
|
+
export declare function getExpressionForSetting(setting: MascotSetting): string[] | null;
|
|
29
|
+
/**
|
|
30
|
+
* Get the width of the mascot (for layout calculations)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getMascotWidth(): number;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Expression Library
|
|
3
|
+
*
|
|
4
|
+
* ASCII art expressions for the compilr mascot - a retro CRT monitor
|
|
5
|
+
* with rabbit-ear antennas and a 3D keyboard.
|
|
6
|
+
*
|
|
7
|
+
* Each expression is 6 lines tall and designed to sit alongside the logo.
|
|
8
|
+
*/
|
|
9
|
+
// Full mascot expressions (6 lines each)
|
|
10
|
+
// Design elements:
|
|
11
|
+
// - \|/ - Rabbit-ear antennas (retro TV)
|
|
12
|
+
// - ╭══════════╮ - Rounded top with double-line (CRT bezel)
|
|
13
|
+
// - ║ - Double left border (3D depth effect)
|
|
14
|
+
// - ' - Screen glare/reflection
|
|
15
|
+
// - ▐▌ - Rectangular eyes
|
|
16
|
+
// - ╰─═──────═─╯ - Bottom with feet (═)
|
|
17
|
+
// - \________\ - 3D perspective keyboard
|
|
18
|
+
export const EXPRESSIONS = {
|
|
19
|
+
// Standard/default - looking at user
|
|
20
|
+
neutral: [
|
|
21
|
+
' \\|/',
|
|
22
|
+
' ╭══════════╮',
|
|
23
|
+
" ║' ▐▌ ▐▌ │",
|
|
24
|
+
' ║ │',
|
|
25
|
+
' ╰─═──────═─╯',
|
|
26
|
+
' \\________\\',
|
|
27
|
+
],
|
|
28
|
+
// Processing, working on something
|
|
29
|
+
thinking: [
|
|
30
|
+
' \\|/',
|
|
31
|
+
' ╭══════════╮',
|
|
32
|
+
" ║' ▐▌ ▐▌ │",
|
|
33
|
+
' ║ ... │',
|
|
34
|
+
' ╰─═──────═─╯',
|
|
35
|
+
' \\________\\',
|
|
36
|
+
],
|
|
37
|
+
// Glancing left (3D effect switches sides)
|
|
38
|
+
looking_left: [
|
|
39
|
+
' \\|/',
|
|
40
|
+
' ╭══════════╮',
|
|
41
|
+
" │ ▐▌ ▐▌ '║",
|
|
42
|
+
' │ ║',
|
|
43
|
+
' ╰─═──────═─╯',
|
|
44
|
+
' \\________\\',
|
|
45
|
+
],
|
|
46
|
+
// Glancing right (eyes shifted)
|
|
47
|
+
looking_right: [
|
|
48
|
+
' \\|/',
|
|
49
|
+
' ╭══════════╮',
|
|
50
|
+
" ║' ▐▌ ▐▌ │",
|
|
51
|
+
' ║ │',
|
|
52
|
+
' ╰─═──────═─╯',
|
|
53
|
+
' \\________\\',
|
|
54
|
+
],
|
|
55
|
+
// Idle, waiting, inactive
|
|
56
|
+
sleeping: [
|
|
57
|
+
' \\|/',
|
|
58
|
+
' ╭══════════╮',
|
|
59
|
+
" ║' __ __ │",
|
|
60
|
+
' ║ zZ │',
|
|
61
|
+
' ╰─═──────═─╯',
|
|
62
|
+
' \\________\\',
|
|
63
|
+
],
|
|
64
|
+
// Attention needed, important notification
|
|
65
|
+
alert: [
|
|
66
|
+
' \\|||/',
|
|
67
|
+
' ╭══════════╮',
|
|
68
|
+
" ║' ▐▌ ▐▌ │",
|
|
69
|
+
' ║ ! │',
|
|
70
|
+
' ╰─═──────═─╯',
|
|
71
|
+
' \\________\\',
|
|
72
|
+
],
|
|
73
|
+
// Error occurred, confused, problem
|
|
74
|
+
error: [
|
|
75
|
+
' \\|/',
|
|
76
|
+
' ╭══════════╮',
|
|
77
|
+
" ║' × × │",
|
|
78
|
+
' ║ ??? │',
|
|
79
|
+
' ╰─═──────═─╯',
|
|
80
|
+
' \\________\\',
|
|
81
|
+
],
|
|
82
|
+
// Task completed successfully, happy
|
|
83
|
+
success: [
|
|
84
|
+
' \\|/',
|
|
85
|
+
' ╭══════════╮',
|
|
86
|
+
" ║' ^ ^ │",
|
|
87
|
+
' ║ __ │',
|
|
88
|
+
' ╰─═──────═─╯',
|
|
89
|
+
' \\________\\',
|
|
90
|
+
],
|
|
91
|
+
// Success with just happy eyes, no smile
|
|
92
|
+
success_minimal: [
|
|
93
|
+
' \\|/',
|
|
94
|
+
' ╭══════════╮',
|
|
95
|
+
" ║' ^ ^ │",
|
|
96
|
+
' ║ │',
|
|
97
|
+
' ╰─═──────═─╯',
|
|
98
|
+
' \\________\\',
|
|
99
|
+
],
|
|
100
|
+
// Looking for something, scanning
|
|
101
|
+
searching: [
|
|
102
|
+
' \\|/',
|
|
103
|
+
' ╭══════════╮',
|
|
104
|
+
" ║' ◐ ◐ │",
|
|
105
|
+
' ║ ~~~ │',
|
|
106
|
+
' ╰─═──────═─╯',
|
|
107
|
+
' \\________\\',
|
|
108
|
+
],
|
|
109
|
+
// Doubtful, questioning, side-eye
|
|
110
|
+
skeptical: [
|
|
111
|
+
' \\|/',
|
|
112
|
+
' ╭══════════╮',
|
|
113
|
+
" ║' > > │",
|
|
114
|
+
' ║ │',
|
|
115
|
+
' ╰─═──────═─╯',
|
|
116
|
+
' \\________\\',
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
// Inline mascot expressions (single line) for status updates
|
|
120
|
+
export const EXPRESSIONS_INLINE = {
|
|
121
|
+
neutral: '[•_•]',
|
|
122
|
+
thinking: '[•_•]...',
|
|
123
|
+
looking_left: '[<_<]',
|
|
124
|
+
looking_right: '[>_>]',
|
|
125
|
+
sleeping: '[-_-]zZ',
|
|
126
|
+
alert: '[•!•]',
|
|
127
|
+
error: '[×_×]',
|
|
128
|
+
success: '[^_^]',
|
|
129
|
+
success_minimal: '[^_^]',
|
|
130
|
+
searching: '[◐_◐]',
|
|
131
|
+
skeptical: '[>_>]',
|
|
132
|
+
};
|
|
133
|
+
// All expression codes for iteration
|
|
134
|
+
export const EXPRESSION_CODES = [
|
|
135
|
+
'neutral',
|
|
136
|
+
'thinking',
|
|
137
|
+
'looking_left',
|
|
138
|
+
'looking_right',
|
|
139
|
+
'sleeping',
|
|
140
|
+
'alert',
|
|
141
|
+
'error',
|
|
142
|
+
'success',
|
|
143
|
+
'success_minimal',
|
|
144
|
+
'searching',
|
|
145
|
+
'skeptical',
|
|
146
|
+
];
|
|
147
|
+
// All mascot setting options (for config menu)
|
|
148
|
+
export const MASCOT_OPTIONS = [
|
|
149
|
+
'none',
|
|
150
|
+
'random',
|
|
151
|
+
...EXPRESSION_CODES,
|
|
152
|
+
];
|
|
153
|
+
// Human-readable labels for mascot options
|
|
154
|
+
export const MASCOT_LABELS = {
|
|
155
|
+
none: 'None',
|
|
156
|
+
random: 'Random',
|
|
157
|
+
neutral: 'Neutral',
|
|
158
|
+
thinking: 'Thinking',
|
|
159
|
+
looking_left: 'Looking Left',
|
|
160
|
+
looking_right: 'Looking Right',
|
|
161
|
+
sleeping: 'Sleeping',
|
|
162
|
+
alert: 'Alert',
|
|
163
|
+
error: 'Error',
|
|
164
|
+
success: 'Success',
|
|
165
|
+
success_minimal: 'Success (Minimal)',
|
|
166
|
+
searching: 'Searching',
|
|
167
|
+
skeptical: 'Skeptical',
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Get a random expression code
|
|
171
|
+
*/
|
|
172
|
+
export function getRandomExpression() {
|
|
173
|
+
const index = Math.floor(Math.random() * EXPRESSION_CODES.length);
|
|
174
|
+
return EXPRESSION_CODES[index];
|
|
175
|
+
}
|
|
176
|
+
// Session-level cache for random expression (selected once at startup)
|
|
177
|
+
let sessionRandomExpression = null;
|
|
178
|
+
/**
|
|
179
|
+
* Get the cached session expression, or generate one if not set
|
|
180
|
+
*/
|
|
181
|
+
function getSessionExpression() {
|
|
182
|
+
if (sessionRandomExpression === null) {
|
|
183
|
+
sessionRandomExpression = getRandomExpression();
|
|
184
|
+
}
|
|
185
|
+
return sessionRandomExpression;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Reset the session expression (for next startup or when settings change)
|
|
189
|
+
*/
|
|
190
|
+
export function resetSessionExpression() {
|
|
191
|
+
sessionRandomExpression = null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get expression lines for a mascot setting
|
|
195
|
+
* Returns null for 'none', picks random for 'random', otherwise returns the expression
|
|
196
|
+
*/
|
|
197
|
+
export function getExpressionForSetting(setting) {
|
|
198
|
+
if (setting === 'none') {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
if (setting === 'random') {
|
|
202
|
+
// Use cached session expression for consistency within a session
|
|
203
|
+
return EXPRESSIONS[getSessionExpression()];
|
|
204
|
+
}
|
|
205
|
+
return EXPRESSIONS[setting];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get the width of the mascot (for layout calculations)
|
|
209
|
+
*/
|
|
210
|
+
export function getMascotWidth() {
|
|
211
|
+
// All expressions have the same width - use neutral as reference
|
|
212
|
+
return Math.max(...EXPRESSIONS.neutral.map((line) => line.length));
|
|
213
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for the compilr mascot system.
|
|
5
|
+
* The mascot is a retro CRT monitor that displays expressions.
|
|
6
|
+
*/
|
|
7
|
+
export { type ExpressionCode, type MascotSetting, EXPRESSIONS, EXPRESSIONS_INLINE, EXPRESSION_CODES, MASCOT_OPTIONS, MASCOT_LABELS, getRandomExpression, getExpressionForSetting, getMascotWidth, resetSessionExpression, } from './expressions.js';
|
|
8
|
+
export { renderMascotWithLogo, combineHorizontally } from './renderer.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for the compilr mascot system.
|
|
5
|
+
* The mascot is a retro CRT monitor that displays expressions.
|
|
6
|
+
*/
|
|
7
|
+
export { EXPRESSIONS, EXPRESSIONS_INLINE, EXPRESSION_CODES, MASCOT_OPTIONS, MASCOT_LABELS, getRandomExpression, getExpressionForSetting, getMascotWidth, resetSessionExpression, } from './expressions.js';
|
|
8
|
+
export { renderMascotWithLogo, combineHorizontally } from './renderer.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Renderer
|
|
3
|
+
*
|
|
4
|
+
* Handles rendering the mascot alongside the logo and applying colors.
|
|
5
|
+
*/
|
|
6
|
+
import { type MascotSetting } from './expressions.js';
|
|
7
|
+
/**
|
|
8
|
+
* Combine two sets of lines horizontally with a gap
|
|
9
|
+
*/
|
|
10
|
+
export declare function combineHorizontally(left: string[], right: string[], gap: number): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Render mascot with logo side by side
|
|
13
|
+
* Returns the combined lines ready for output
|
|
14
|
+
*
|
|
15
|
+
* @param mascotSetting - The mascot setting (expression or 'none'/'random')
|
|
16
|
+
* @param version - Version string to append to logo
|
|
17
|
+
* @param projectName - Optional active project name to show
|
|
18
|
+
*/
|
|
19
|
+
export declare function renderMascotWithLogo(mascotSetting: MascotSetting, version: string, projectName?: string | null, highlights?: string[]): string[];
|