codingbuddy 4.0.1 → 4.1.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 +3 -3
- package/dist/api/mcp.js +1 -2
- package/dist/api/mcp.js.map +1 -1
- package/dist/src/agent/agent-prompt.builder.js.map +1 -1
- package/dist/src/agent/agent.service.d.ts +2 -1
- package/dist/src/agent/agent.service.js +49 -0
- package/dist/src/agent/agent.service.js.map +1 -1
- package/dist/src/agent/agent.types.d.ts +26 -0
- package/dist/src/agent/agent.types.js +2 -10
- package/dist/src/agent/agent.types.js.map +1 -1
- package/dist/src/analyzer/analyzer.service.js +2 -4
- package/dist/src/analyzer/analyzer.service.js.map +1 -1
- package/dist/src/analyzer/code.sampler.js +4 -9
- package/dist/src/analyzer/code.sampler.js.map +1 -1
- package/dist/src/analyzer/config.analyzer.js +3 -13
- package/dist/src/analyzer/config.analyzer.js.map +1 -1
- package/dist/src/analyzer/conventions.analyzer.js +3 -11
- package/dist/src/analyzer/conventions.analyzer.js.map +1 -1
- package/dist/src/analyzer/conventions.types.js.map +1 -1
- package/dist/src/analyzer/directory.analyzer.js +5 -23
- package/dist/src/analyzer/directory.analyzer.js.map +1 -1
- package/dist/src/analyzer/package.analyzer.js +1 -3
- package/dist/src/analyzer/package.analyzer.js.map +1 -1
- package/dist/src/app.module.js +2 -0
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/checklist/checklist.schema.js.map +1 -1
- package/dist/src/checklist/checklist.service.js.map +1 -1
- package/dist/src/checklist/checklist.types.js +1 -6
- package/dist/src/checklist/checklist.types.js.map +1 -1
- package/dist/src/cli/cli.d.ts +1 -1
- package/dist/src/cli/cli.js +9 -0
- package/dist/src/cli/cli.js.map +1 -1
- package/dist/src/cli/init/claude-settings.utils.d.ts +13 -0
- package/dist/src/cli/init/claude-settings.utils.js +74 -0
- package/dist/src/cli/init/claude-settings.utils.js.map +1 -0
- package/dist/src/cli/init/config.generator.js.map +1 -1
- package/dist/src/cli/init/config.writer.js.map +1 -1
- package/dist/src/cli/init/index.d.ts +2 -2
- package/dist/src/cli/init/index.js.map +1 -1
- package/dist/src/cli/init/init.command.js +13 -8
- package/dist/src/cli/init/init.command.js.map +1 -1
- package/dist/src/cli/init/init.constants.d.ts +1 -0
- package/dist/src/cli/init/init.constants.js +11 -2
- package/dist/src/cli/init/init.constants.js.map +1 -1
- package/dist/src/cli/init/init.wizard.js +3 -8
- package/dist/src/cli/init/init.wizard.js.map +1 -1
- package/dist/src/cli/init/prompt.builder.js.map +1 -1
- package/dist/src/cli/init/prompts/basic-prompt.js.map +1 -1
- package/dist/src/cli/init/prompts/index.d.ts +3 -3
- package/dist/src/cli/init/prompts/index.js.map +1 -1
- package/dist/src/cli/init/prompts/language-prompt.js +1 -3
- package/dist/src/cli/init/prompts/language-prompt.js.map +1 -1
- package/dist/src/cli/init/prompts/model-prompt.js.map +1 -1
- package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +1 -1
- package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +1 -1
- package/dist/src/cli/init/summary/index.d.ts +1 -1
- package/dist/src/cli/init/summary/index.js.map +1 -1
- package/dist/src/cli/init/templates/config-renderer.js.map +1 -1
- package/dist/src/cli/init/templates/index.d.ts +1 -1
- package/dist/src/cli/init/templates/index.js.map +1 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +1 -1
- package/dist/src/cli/init/templates/template.selector.js.map +1 -1
- package/dist/src/cli/run-tui.d.ts +3 -0
- package/dist/src/cli/run-tui.js +105 -0
- package/dist/src/cli/run-tui.js.map +1 -0
- package/dist/src/config/config-diff.service.js +6 -7
- package/dist/src/config/config-diff.service.js.map +1 -1
- package/dist/src/config/config.loader.js +1 -3
- package/dist/src/config/config.loader.js.map +1 -1
- package/dist/src/config/config.schema.js +1 -3
- package/dist/src/config/config.schema.js.map +1 -1
- package/dist/src/config/config.service.js +1 -4
- package/dist/src/config/config.service.js.map +1 -1
- package/dist/src/config/context.loader.js.map +1 -1
- package/dist/src/config/ignore.parser.js.map +1 -1
- package/dist/src/config/index.d.ts +2 -2
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/context/context-document.service.js +3 -1
- package/dist/src/context/context-document.service.js.map +1 -1
- package/dist/src/context/context-document.types.d.ts +2 -0
- package/dist/src/context/context-document.types.js +2 -8
- package/dist/src/context/context-document.types.js.map +1 -1
- package/dist/src/context/context-parser.utils.js +7 -8
- package/dist/src/context/context-parser.utils.js.map +1 -1
- package/dist/src/context/context-serializer.utils.js +1 -2
- package/dist/src/context/context-serializer.utils.js.map +1 -1
- package/dist/src/context/context.service.js +4 -16
- package/dist/src/context/context.service.js.map +1 -1
- package/dist/src/context/context.types.js +3 -17
- package/dist/src/context/context.types.js.map +1 -1
- package/dist/src/custom/custom.service.js.map +1 -1
- package/dist/src/diagnostic/diagnostic-log.service.js +1 -3
- package/dist/src/diagnostic/diagnostic-log.service.js.map +1 -1
- package/dist/src/keyword/activation-message.builder.js +2 -6
- package/dist/src/keyword/activation-message.builder.js.map +1 -1
- package/dist/src/keyword/auto-executor.js +1 -3
- package/dist/src/keyword/auto-executor.js.map +1 -1
- package/dist/src/keyword/auto-executor.types.js.map +1 -1
- package/dist/src/keyword/auto-formatter.js +2 -3
- package/dist/src/keyword/auto-formatter.js.map +1 -1
- package/dist/src/keyword/auto-prompt-builder.js +1 -3
- package/dist/src/keyword/auto-prompt-builder.js.map +1 -1
- package/dist/src/keyword/complexity-classifier.js +3 -7
- package/dist/src/keyword/complexity-classifier.js.map +1 -1
- package/dist/src/keyword/complexity-indicators.js.map +1 -1
- package/dist/src/keyword/keyword.module.js +1 -6
- package/dist/src/keyword/keyword.module.js.map +1 -1
- package/dist/src/keyword/keyword.service.d.ts +1 -0
- package/dist/src/keyword/keyword.service.js +24 -25
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +17 -0
- package/dist/src/keyword/keyword.types.js +2 -10
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/patterns/devops.patterns.d.ts +2 -0
- package/dist/src/keyword/patterns/devops.patterns.js +56 -0
- package/dist/src/keyword/patterns/devops.patterns.js.map +1 -0
- package/dist/src/keyword/patterns/frontend.patterns.d.ts +2 -0
- package/dist/src/keyword/patterns/frontend.patterns.js +76 -0
- package/dist/src/keyword/patterns/frontend.patterns.js.map +1 -0
- package/dist/src/keyword/patterns/index.d.ts +1 -1
- package/dist/src/keyword/patterns/index.js.map +1 -1
- package/dist/src/keyword/patterns/intent-pattern-checks.js +12 -0
- package/dist/src/keyword/patterns/intent-pattern-checks.js.map +1 -1
- package/dist/src/keyword/primary-agent-resolver.d.ts +1 -1
- package/dist/src/keyword/primary-agent-resolver.js +2 -1
- package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
- package/dist/src/keyword/rule-filter.js.map +1 -1
- package/dist/src/keyword/srp-template.js.map +1 -1
- package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +1 -1
- package/dist/src/keyword/strategies/act-agent.strategy.js +14 -5
- package/dist/src/keyword/strategies/act-agent.strategy.js.map +1 -1
- package/dist/src/keyword/strategies/eval-agent.strategy.js.map +1 -1
- package/dist/src/keyword/strategies/plan-agent.strategy.js.map +1 -1
- package/dist/src/keyword/strategies/resolution-strategy.interface.d.ts +1 -0
- package/dist/src/main.js +153 -1
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp/handlers/agent.handler.d.ts +1 -0
- package/dist/src/mcp/handlers/agent.handler.js +78 -5
- package/dist/src/mcp/handlers/agent.handler.js.map +1 -1
- package/dist/src/mcp/handlers/config.handler.js.map +1 -1
- package/dist/src/mcp/handlers/context-document.handler.js +13 -20
- package/dist/src/mcp/handlers/context-document.handler.js.map +1 -1
- package/dist/src/mcp/handlers/conventions.handler.js.map +1 -1
- package/dist/src/mcp/handlers/mode.handler.d.ts +4 -1
- package/dist/src/mcp/handlers/mode.handler.js +58 -5
- package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
- package/dist/src/mcp/handlers/skill.handler.js +1 -3
- package/dist/src/mcp/handlers/skill.handler.js.map +1 -1
- package/dist/src/mcp/mcp-serverless.d.ts +1 -13
- package/dist/src/mcp/mcp-serverless.js +24 -206
- package/dist/src/mcp/mcp-serverless.js.map +1 -1
- package/dist/src/mcp/mcp.controller.d.ts +6 -2
- package/dist/src/mcp/mcp.controller.js +38 -9
- package/dist/src/mcp/mcp.controller.js.map +1 -1
- package/dist/src/mcp/mcp.module.js +2 -0
- package/dist/src/mcp/mcp.module.js.map +1 -1
- package/dist/src/mcp/mcp.service.d.ts +7 -1
- package/dist/src/mcp/mcp.service.js +55 -24
- package/dist/src/mcp/mcp.service.js.map +1 -1
- package/dist/src/mcp/sse-auth.guard.d.ts +6 -0
- package/dist/src/mcp/sse-auth.guard.js +53 -0
- package/dist/src/mcp/sse-auth.guard.js.map +1 -0
- package/dist/src/model/model.resolver.js.map +1 -1
- package/dist/src/rules/agent.schema.js.map +1 -1
- package/dist/src/rules/rules-content.utils.js.map +1 -1
- package/dist/src/rules/rules.service.d.ts +1 -3
- package/dist/src/rules/rules.service.js +43 -102
- package/dist/src/rules/rules.service.js.map +1 -1
- package/dist/src/rules/skill.schema.js.map +1 -1
- package/dist/src/shared/async.utils.js.map +1 -1
- package/dist/src/shared/esm-import.d.ts +1 -0
- package/dist/src/shared/esm-import.js +17 -0
- package/dist/src/shared/esm-import.js.map +1 -0
- package/dist/src/shared/file.utils.js +1 -2
- package/dist/src/shared/file.utils.js.map +1 -1
- package/dist/src/shared/format.utils.js.map +1 -1
- package/dist/src/shared/keyword-core.d.ts +9 -0
- package/dist/src/shared/keyword-core.js +95 -0
- package/dist/src/shared/keyword-core.js.map +1 -0
- package/dist/src/shared/language.service.js.map +1 -1
- package/dist/src/shared/path.utils.js +1 -2
- package/dist/src/shared/path.utils.js.map +1 -1
- package/dist/src/shared/pattern-matcher.js.map +1 -1
- package/dist/src/shared/rules-core.d.ts +27 -0
- package/dist/src/shared/rules-core.js +167 -0
- package/dist/src/shared/rules-core.js.map +1 -0
- package/dist/src/shared/security.utils.js +1 -2
- package/dist/src/shared/security.utils.js.map +1 -1
- package/dist/src/shared/slug.utils.js.map +1 -1
- package/dist/src/shared/token-counter.js.map +1 -1
- package/dist/src/shared/tui-bundle-path.d.ts +1 -0
- package/dist/src/shared/tui-bundle-path.js +8 -0
- package/dist/src/shared/tui-bundle-path.js.map +1 -0
- package/dist/src/shared/validation.constants.d.ts +1 -0
- package/dist/src/shared/validation.constants.js +6 -3
- package/dist/src/shared/validation.constants.js.map +1 -1
- package/dist/src/shared/verbosity.types.js +1 -2
- package/dist/src/shared/verbosity.types.js.map +1 -1
- package/dist/src/skill/i18n/keywords.js +44 -318
- package/dist/src/skill/i18n/keywords.js.map +1 -1
- package/dist/src/skill/i18n/keywords.types.js.map +1 -1
- package/dist/src/skill/skill-content.utils.js +1 -3
- package/dist/src/skill/skill-content.utils.js.map +1 -1
- package/dist/src/skill/skill-recommendation.service.js.map +1 -1
- package/dist/src/skill/skill-triggers.js.map +1 -1
- package/dist/src/state/state.service.js.map +1 -1
- package/dist/src/tui/__perf__/memory-stability.spec.d.ts +1 -0
- package/dist/src/tui/__perf__/memory-stability.spec.js +105 -0
- package/dist/src/tui/__perf__/memory-stability.spec.js.map +1 -0
- package/dist/src/tui/__perf__/rendering-performance.spec.d.ts +1 -0
- package/dist/src/tui/__perf__/rendering-performance.spec.js +166 -0
- package/dist/src/tui/__perf__/rendering-performance.spec.js.map +1 -0
- package/dist/src/tui/app.d.ts +6 -0
- package/dist/src/tui/app.js +20 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/app.spec.d.ts +1 -0
- package/dist/src/tui/app.spec.js +226 -0
- package/dist/src/tui/app.spec.js.map +1 -0
- package/dist/src/tui/cli-flags.d.ts +1 -0
- package/dist/src/tui/cli-flags.js +7 -0
- package/dist/src/tui/cli-flags.js.map +1 -0
- package/dist/src/tui/components/AgentCard.d.ts +6 -0
- package/dist/src/tui/components/AgentCard.js +18 -0
- package/dist/src/tui/components/AgentCard.js.map +1 -0
- package/dist/src/tui/components/AgentCard.spec.d.ts +1 -0
- package/dist/src/tui/components/AgentCard.spec.js +118 -0
- package/dist/src/tui/components/AgentCard.spec.js.map +1 -0
- package/dist/src/tui/components/AgentGrid.d.ts +7 -0
- package/dist/src/tui/components/AgentGrid.js +20 -0
- package/dist/src/tui/components/AgentGrid.js.map +1 -0
- package/dist/src/tui/components/AgentGrid.spec.d.ts +1 -0
- package/dist/src/tui/components/AgentGrid.spec.js +52 -0
- package/dist/src/tui/components/AgentGrid.spec.js.map +1 -0
- package/dist/src/tui/components/AgentTree.d.ts +7 -0
- package/dist/src/tui/components/AgentTree.js +24 -0
- package/dist/src/tui/components/AgentTree.js.map +1 -0
- package/dist/src/tui/components/AgentTree.spec.d.ts +1 -0
- package/dist/src/tui/components/AgentTree.spec.js +146 -0
- package/dist/src/tui/components/AgentTree.spec.js.map +1 -0
- package/dist/src/tui/components/CategoryRow.d.ts +9 -0
- package/dist/src/tui/components/CategoryRow.js +15 -0
- package/dist/src/tui/components/CategoryRow.js.map +1 -0
- package/dist/src/tui/components/CategoryRow.spec.d.ts +1 -0
- package/dist/src/tui/components/CategoryRow.spec.js +58 -0
- package/dist/src/tui/components/CategoryRow.spec.js.map +1 -0
- package/dist/src/tui/components/Header.d.ts +6 -0
- package/dist/src/tui/components/Header.js +18 -0
- package/dist/src/tui/components/Header.js.map +1 -0
- package/dist/src/tui/components/Header.spec.d.ts +1 -0
- package/dist/src/tui/components/Header.spec.js +38 -0
- package/dist/src/tui/components/Header.spec.js.map +1 -0
- package/dist/src/tui/components/ProgressBar.d.ts +7 -0
- package/dist/src/tui/components/ProgressBar.js +12 -0
- package/dist/src/tui/components/ProgressBar.js.map +1 -0
- package/dist/src/tui/components/ProgressBar.spec.d.ts +1 -0
- package/dist/src/tui/components/ProgressBar.spec.js +37 -0
- package/dist/src/tui/components/ProgressBar.spec.js.map +1 -0
- package/dist/src/tui/components/StatusBar.d.ts +8 -0
- package/dist/src/tui/components/StatusBar.js +29 -0
- package/dist/src/tui/components/StatusBar.js.map +1 -0
- package/dist/src/tui/components/StatusBar.spec.d.ts +1 -0
- package/dist/src/tui/components/StatusBar.spec.js +93 -0
- package/dist/src/tui/components/StatusBar.spec.js.map +1 -0
- package/dist/src/tui/components/agent-card.pure.d.ts +7 -0
- package/dist/src/tui/components/agent-card.pure.js +65 -0
- package/dist/src/tui/components/agent-card.pure.js.map +1 -0
- package/dist/src/tui/components/agent-grid.pure.d.ts +3 -0
- package/dist/src/tui/components/agent-grid.pure.js +35 -0
- package/dist/src/tui/components/agent-grid.pure.js.map +1 -0
- package/dist/src/tui/components/agent-mini-card.pure.d.ts +2 -0
- package/dist/src/tui/components/agent-mini-card.pure.js +17 -0
- package/dist/src/tui/components/agent-mini-card.pure.js.map +1 -0
- package/dist/src/tui/components/agent-tree.pure.d.ts +18 -0
- package/dist/src/tui/components/agent-tree.pure.js +41 -0
- package/dist/src/tui/components/agent-tree.pure.js.map +1 -0
- package/dist/src/tui/components/category-row.pure.d.ts +3 -0
- package/dist/src/tui/components/category-row.pure.js +26 -0
- package/dist/src/tui/components/category-row.pure.js.map +1 -0
- package/dist/src/tui/components/header.pure.d.ts +4 -0
- package/dist/src/tui/components/header.pure.js +15 -0
- package/dist/src/tui/components/header.pure.js.map +1 -0
- package/dist/src/tui/components/index.d.ts +15 -0
- package/dist/src/tui/components/index.js +52 -0
- package/dist/src/tui/components/index.js.map +1 -0
- package/dist/src/tui/components/progress-bar.pure.d.ts +2 -0
- package/dist/src/tui/components/progress-bar.pure.js +21 -0
- package/dist/src/tui/components/progress-bar.pure.js.map +1 -0
- package/dist/src/tui/components/status-bar.pure.d.ts +15 -0
- package/dist/src/tui/components/status-bar.pure.js +83 -0
- package/dist/src/tui/components/status-bar.pure.js.map +1 -0
- package/dist/src/tui/ensure-tui-ready.d.ts +3 -0
- package/dist/src/tui/ensure-tui-ready.js +39 -0
- package/dist/src/tui/ensure-tui-ready.js.map +1 -0
- package/dist/src/tui/eventbus-ui.integration.spec.d.ts +1 -0
- package/dist/src/tui/eventbus-ui.integration.spec.js +608 -0
- package/dist/src/tui/eventbus-ui.integration.spec.js.map +1 -0
- package/dist/src/tui/events/agent-metadata.service.d.ts +16 -0
- package/dist/src/tui/events/agent-metadata.service.js +80 -0
- package/dist/src/tui/events/agent-metadata.service.js.map +1 -0
- package/dist/src/tui/events/agent-metadata.types.d.ts +11 -0
- package/dist/src/tui/events/agent-metadata.types.js +59 -0
- package/dist/src/tui/events/agent-metadata.types.js.map +1 -0
- package/dist/src/tui/events/event-bus.d.ts +13 -0
- package/dist/src/tui/events/event-bus.js +42 -0
- package/dist/src/tui/events/event-bus.js.map +1 -0
- package/dist/src/tui/events/events.module.d.ts +2 -0
- package/dist/src/tui/events/events.module.js +25 -0
- package/dist/src/tui/events/events.module.js.map +1 -0
- package/dist/src/tui/events/index.d.ts +7 -0
- package/dist/src/tui/events/index.js +19 -0
- package/dist/src/tui/events/index.js.map +1 -0
- package/dist/src/tui/events/parse-agent.d.ts +2 -0
- package/dist/src/tui/events/parse-agent.js +84 -0
- package/dist/src/tui/events/parse-agent.js.map +1 -0
- package/dist/src/tui/events/parse-tool-response.d.ts +1 -0
- package/dist/src/tui/events/parse-tool-response.js +24 -0
- package/dist/src/tui/events/parse-tool-response.js.map +1 -0
- package/dist/src/tui/events/response-event-extractor.d.ts +12 -0
- package/dist/src/tui/events/response-event-extractor.js +71 -0
- package/dist/src/tui/events/response-event-extractor.js.map +1 -0
- package/dist/src/tui/events/tui-interceptor.d.ts +13 -0
- package/dist/src/tui/events/tui-interceptor.js +100 -0
- package/dist/src/tui/events/tui-interceptor.js.map +1 -0
- package/dist/src/tui/events/types.d.ts +51 -0
- package/dist/src/tui/events/types.js +13 -0
- package/dist/src/tui/events/types.js.map +1 -0
- package/dist/src/tui/hooks/index.d.ts +5 -0
- package/dist/src/tui/hooks/index.js +12 -0
- package/dist/src/tui/hooks/index.js.map +1 -0
- package/dist/src/tui/hooks/use-agent-state.d.ts +7 -0
- package/dist/src/tui/hooks/use-agent-state.js +13 -0
- package/dist/src/tui/hooks/use-agent-state.js.map +1 -0
- package/dist/src/tui/hooks/use-agent-state.spec.d.ts +1 -0
- package/dist/src/tui/hooks/use-agent-state.spec.js +167 -0
- package/dist/src/tui/hooks/use-agent-state.spec.js.map +1 -0
- package/dist/src/tui/hooks/use-clock.d.ts +1 -0
- package/dist/src/tui/hooks/use-clock.js +16 -0
- package/dist/src/tui/hooks/use-clock.js.map +1 -0
- package/dist/src/tui/hooks/use-clock.spec.d.ts +1 -0
- package/dist/src/tui/hooks/use-clock.spec.js +43 -0
- package/dist/src/tui/hooks/use-clock.spec.js.map +1 -0
- package/dist/src/tui/hooks/use-event-bus.d.ts +34 -0
- package/dist/src/tui/hooks/use-event-bus.js +91 -0
- package/dist/src/tui/hooks/use-event-bus.js.map +1 -0
- package/dist/src/tui/hooks/use-event-bus.spec.d.ts +1 -0
- package/dist/src/tui/hooks/use-event-bus.spec.js +362 -0
- package/dist/src/tui/hooks/use-event-bus.spec.js.map +1 -0
- package/dist/src/tui/index.d.ts +12 -0
- package/dist/src/tui/index.js +32 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/ipc/index.d.ts +9 -0
- package/dist/src/tui/ipc/index.js +24 -0
- package/dist/src/tui/ipc/index.js.map +1 -0
- package/dist/src/tui/ipc/instance-registry.d.ts +12 -0
- package/dist/src/tui/ipc/instance-registry.js +81 -0
- package/dist/src/tui/ipc/instance-registry.js.map +1 -0
- package/dist/src/tui/ipc/ipc-bridge.d.ts +11 -0
- package/dist/src/tui/ipc/ipc-bridge.js +33 -0
- package/dist/src/tui/ipc/ipc-bridge.js.map +1 -0
- package/dist/src/tui/ipc/ipc-client.d.ts +21 -0
- package/dist/src/tui/ipc/ipc-client.js +102 -0
- package/dist/src/tui/ipc/ipc-client.js.map +1 -0
- package/dist/src/tui/ipc/ipc-debug.d.ts +1 -0
- package/dist/src/tui/ipc/ipc-debug.js +11 -0
- package/dist/src/tui/ipc/ipc-debug.js.map +1 -0
- package/dist/src/tui/ipc/ipc-server.d.ts +15 -0
- package/dist/src/tui/ipc/ipc-server.js +98 -0
- package/dist/src/tui/ipc/ipc-server.js.map +1 -0
- package/dist/src/tui/ipc/ipc-state-cache.d.ts +16 -0
- package/dist/src/tui/ipc/ipc-state-cache.js +62 -0
- package/dist/src/tui/ipc/ipc-state-cache.js.map +1 -0
- package/dist/src/tui/ipc/ipc.types.d.ts +19 -0
- package/dist/src/tui/ipc/ipc.types.js +45 -0
- package/dist/src/tui/ipc/ipc.types.js.map +1 -0
- package/dist/src/tui/ipc/shutdown-manager.d.ts +7 -0
- package/dist/src/tui/ipc/shutdown-manager.js +32 -0
- package/dist/src/tui/ipc/shutdown-manager.js.map +1 -0
- package/dist/src/tui/ipc/test-utils.d.ts +2 -0
- package/dist/src/tui/ipc/test-utils.js +20 -0
- package/dist/src/tui/ipc/test-utils.js.map +1 -0
- package/dist/src/tui/transport-tui.integration.spec.d.ts +1 -0
- package/dist/src/tui/transport-tui.integration.spec.js +189 -0
- package/dist/src/tui/transport-tui.integration.spec.js.map +1 -0
- package/dist/src/tui/tui-config.d.ts +11 -0
- package/dist/src/tui/tui-config.js +32 -0
- package/dist/src/tui/tui-config.js.map +1 -0
- package/dist/src/tui/types.d.ts +22 -0
- package/dist/src/tui/types.js +34 -0
- package/dist/src/tui/types.js.map +1 -0
- package/dist/src/tui/utils/colors.d.ts +5 -0
- package/dist/src/tui/utils/colors.js +35 -0
- package/dist/src/tui/utils/colors.js.map +1 -0
- package/dist/src/tui/utils/constants.d.ts +3 -0
- package/dist/src/tui/utils/constants.js +15 -0
- package/dist/src/tui/utils/constants.js.map +1 -0
- package/dist/src/tui/utils/display-width.d.ts +3 -0
- package/dist/src/tui/utils/display-width.js +45 -0
- package/dist/src/tui/utils/display-width.js.map +1 -0
- package/dist/src/tui/utils/icons.d.ts +7 -0
- package/dist/src/tui/utils/icons.js +49 -0
- package/dist/src/tui/utils/icons.js.map +1 -0
- package/dist/src/tui/utils/index.d.ts +4 -0
- package/dist/src/tui/utils/index.js +19 -0
- package/dist/src/tui/utils/index.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +13 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/tui/components/Header.tsx"],"names":[],"mappings":";;AAWA,wBAgBC;AA3BD,iCAA0B;AAC1B,6BAAgC;AAEhC,kDAAkD;AAClD,+CAAmD;AACnD,kDAA8C;AAM9C,SAAgB,MAAM,CAAC,EAAE,IAAI,EAAe;IAC1C,MAAM,IAAI,GAAG,IAAA,oBAAQ,GAAE,CAAC;IAExB,OAAO,CACL,8BAAC,SAAG;QACF,8BAAC,SAAG,IAAC,QAAQ,EAAE,CAAC;YACd,8BAAC,UAAI,IAAC,IAAI,qCAAsB,CAC5B;QACN,8BAAC,SAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,IACtC,IAAI,IAAI,8BAAC,UAAI,IAAC,KAAK,EAAE,IAAA,wBAAY,EAAC,IAAI,CAAC,IAAG,IAAA,gCAAkB,EAAC,IAAI,CAAC,CAAQ,CACvE;QACN,8BAAC,SAAG;YACF,8BAAC,UAAI,QAAE,IAAI,CAAQ,CACf,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const ink_testing_library_1 = require("ink-testing-library");
|
|
6
|
+
const Header_1 = require("./Header");
|
|
7
|
+
(0, vitest_1.describe)('tui/components/Header', () => {
|
|
8
|
+
(0, vitest_1.beforeEach)(() => {
|
|
9
|
+
vitest_1.vi.useFakeTimers();
|
|
10
|
+
vitest_1.vi.setSystemTime(new Date(2026, 0, 1, 16, 43, 0));
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.afterEach)(() => {
|
|
13
|
+
vitest_1.vi.useRealTimers();
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('should render logo text', () => {
|
|
16
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(Header_1.Header, { mode: null }));
|
|
17
|
+
(0, vitest_1.expect)(lastFrame()).toContain('CODINGBUDDY');
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should render mode indicator when mode is provided', () => {
|
|
20
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(Header_1.Header, { mode: "PLAN" }));
|
|
21
|
+
(0, vitest_1.expect)(lastFrame()).toContain('● PLAN');
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('should not render mode indicator when mode is null', () => {
|
|
24
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(Header_1.Header, { mode: null }));
|
|
25
|
+
(0, vitest_1.expect)(lastFrame()).not.toContain('●');
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('should render current time', () => {
|
|
28
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(Header_1.Header, { mode: "PLAN" }));
|
|
29
|
+
(0, vitest_1.expect)(lastFrame()).toContain('16:43');
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.it)('should render all mode types', () => {
|
|
32
|
+
for (const mode of ['PLAN', 'ACT', 'EVAL', 'AUTO']) {
|
|
33
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(Header_1.Header, { mode: mode }));
|
|
34
|
+
(0, vitest_1.expect)(lastFrame()).toContain(`● ${mode}`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=Header.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.spec.js","sourceRoot":"","sources":["../../../../src/tui/components/Header.spec.tsx"],"names":[],"mappings":";;AAAA,iCAA0B;AAC1B,mCAAyE;AACzE,6DAA6C;AAC7C,qCAAkC;AAElC,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,WAAE,CAAC,aAAa,EAAE,CAAC;QACnB,WAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,WAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,eAAM,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,eAAM,IAAC,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,eAAM,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,eAAM,IAAC,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAU,EAAE,CAAC;YAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,eAAM,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC;YACrD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProgressBar = ProgressBar;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const progress_bar_pure_1 = require("./progress-bar.pure");
|
|
7
|
+
const DEFAULT_WIDTH = 10;
|
|
8
|
+
function ProgressBar({ value, width = DEFAULT_WIDTH, color, }) {
|
|
9
|
+
const bar = (0, progress_bar_pure_1.buildProgressBar)(value, width);
|
|
10
|
+
return react_1.default.createElement(ink_1.Text, { color: color }, bar);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../../src/tui/components/ProgressBar.tsx"],"names":[],"mappings":";;AAYA,kCAOC;AAnBD,iCAA0B;AAC1B,6BAA2B;AAC3B,2DAAuD;AAEvD,MAAM,aAAa,GAAG,EAAE,CAAC;AAQzB,SAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,GAAG,aAAa,EACrB,KAAK,GACY;IACjB,MAAM,GAAG,GAAG,IAAA,oCAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,8BAAC,UAAI,IAAC,KAAK,EAAE,KAAK,IAAG,GAAG,CAAQ,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const ink_testing_library_1 = require("ink-testing-library");
|
|
6
|
+
const ProgressBar_1 = require("./ProgressBar");
|
|
7
|
+
(0, vitest_1.describe)('tui/components/ProgressBar', () => {
|
|
8
|
+
(0, vitest_1.it)('should render a progress bar with default width', () => {
|
|
9
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 50 }));
|
|
10
|
+
(0, vitest_1.expect)(lastFrame()).toContain('█████░░░░░');
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.it)('should render a full bar for value 100', () => {
|
|
13
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 100, width: 10 }));
|
|
14
|
+
(0, vitest_1.expect)(lastFrame()).toContain('██████████');
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('should render an empty bar for value 0', () => {
|
|
17
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 0, width: 10 }));
|
|
18
|
+
(0, vitest_1.expect)(lastFrame()).toContain('░░░░░░░░░░');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)('should respect custom width', () => {
|
|
21
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 50, width: 20 }));
|
|
22
|
+
const frame = lastFrame() ?? '';
|
|
23
|
+
(0, vitest_1.expect)(frame).toContain('██████████░░░░░░░░░░');
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('should apply color prop', () => {
|
|
26
|
+
(0, vitest_1.expect)(() => (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 50, width: 10, color: "cyan" }))).not.toThrow();
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('should clamp value below 0', () => {
|
|
29
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: -20, width: 10 }));
|
|
30
|
+
(0, vitest_1.expect)(lastFrame()).toContain('░░░░░░░░░░');
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('should clamp value above 100', () => {
|
|
33
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(ProgressBar_1.ProgressBar, { value: 200, width: 10 }));
|
|
34
|
+
(0, vitest_1.expect)(lastFrame()).toContain('██████████');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=ProgressBar.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.spec.js","sourceRoot":"","sources":["../../../../src/tui/components/ProgressBar.spec.tsx"],"names":[],"mappings":";;AAAA,iCAA0B;AAC1B,mCAA8C;AAC9C,6DAA6C;AAC7C,+CAA4C;AAE5C,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACnE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAChC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QAEjC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,yBAAW,IAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AgentState } from '../types';
|
|
3
|
+
import type { SkillRecommendedEvent } from '../events';
|
|
4
|
+
export interface StatusBarProps {
|
|
5
|
+
agents: AgentState[];
|
|
6
|
+
skills: SkillRecommendedEvent[];
|
|
7
|
+
}
|
|
8
|
+
export declare function StatusBar({ agents, skills }: StatusBarProps): React.ReactElement;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusBar = StatusBar;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const status_bar_pure_1 = require("./status-bar.pure");
|
|
7
|
+
function StatusBar({ agents, skills }) {
|
|
8
|
+
const { stdout } = (0, ink_1.useStdout)();
|
|
9
|
+
const terminalWidth = stdout?.columns ?? 80;
|
|
10
|
+
const activeCount = (0, status_bar_pure_1.countActiveAgents)(agents);
|
|
11
|
+
const progress = (0, status_bar_pure_1.calculateOverallProgress)(agents);
|
|
12
|
+
const phase = (0, status_bar_pure_1.determinePhase)(agents);
|
|
13
|
+
const skillsText = (0, status_bar_pure_1.buildSkillsDisplay)(skills);
|
|
14
|
+
const parts = (0, status_bar_pure_1.buildCompactStatusParts)(activeCount, skillsText, progress, phase, terminalWidth);
|
|
15
|
+
const phaseColor = (0, status_bar_pure_1.getPhaseColor)(phase);
|
|
16
|
+
if (!parts.mainContent && !parts.phaseContent) {
|
|
17
|
+
return react_1.default.createElement(ink_1.Text, { dimColor: true }, parts.leftDivider);
|
|
18
|
+
}
|
|
19
|
+
return (react_1.default.createElement(ink_1.Text, null,
|
|
20
|
+
react_1.default.createElement(ink_1.Text, { dimColor: true },
|
|
21
|
+
parts.leftDivider,
|
|
22
|
+
" ",
|
|
23
|
+
parts.mainContent),
|
|
24
|
+
react_1.default.createElement(ink_1.Text, { color: phaseColor }, parts.phaseContent),
|
|
25
|
+
react_1.default.createElement(ink_1.Text, { dimColor: true },
|
|
26
|
+
" ",
|
|
27
|
+
parts.rightDivider)));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":";;AAkBA,8BAyBC;AA3CD,iCAA0B;AAC1B,6BAAsC;AAGtC,uDAO2B;AAO3B,SAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAkB;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,eAAS,GAAE,CAAC;IAC/B,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAA,mCAAiB,EAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,0CAAwB,EAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAA,gCAAc,EAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAA,oCAAkB,EAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAA,yCAAuB,EAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,IAAA,+BAAa,EAAC,KAAK,CAAC,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,OAAO,8BAAC,UAAI,IAAC,QAAQ,UAAE,KAAK,CAAC,WAAW,CAAQ,CAAC;IACnD,CAAC;IAID,OAAO,CACL,8BAAC,UAAI;QACH,8BAAC,UAAI,IAAC,QAAQ;YACX,KAAK,CAAC,WAAW;;YAAG,KAAK,CAAC,WAAW,CACjC;QACP,8BAAC,UAAI,IAAC,KAAK,EAAE,UAAU,IAAG,KAAK,CAAC,YAAY,CAAQ;QACpD,8BAAC,UAAI,IAAC,QAAQ;;YAAG,KAAK,CAAC,YAAY,CAAQ,CACtC,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const ink_testing_library_1 = require("ink-testing-library");
|
|
6
|
+
const StatusBar_1 = require("./StatusBar");
|
|
7
|
+
const types_1 = require("../types");
|
|
8
|
+
function makeAgent(overrides = {}) {
|
|
9
|
+
return {
|
|
10
|
+
id: 'a1',
|
|
11
|
+
name: 'test',
|
|
12
|
+
role: 'tester',
|
|
13
|
+
status: 'idle',
|
|
14
|
+
progress: 0,
|
|
15
|
+
isPrimary: false,
|
|
16
|
+
...overrides,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
(0, vitest_1.describe)('tui/components/StatusBar', () => {
|
|
20
|
+
(0, vitest_1.it)('should render single-line status without border', () => {
|
|
21
|
+
const agents = [
|
|
22
|
+
(0, types_1.createDefaultAgentState)({
|
|
23
|
+
id: '1',
|
|
24
|
+
name: 'agent',
|
|
25
|
+
role: 'r',
|
|
26
|
+
status: 'running',
|
|
27
|
+
progress: 50,
|
|
28
|
+
}),
|
|
29
|
+
];
|
|
30
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
31
|
+
const output = lastFrame() ?? '';
|
|
32
|
+
(0, vitest_1.expect)(output).toContain('───');
|
|
33
|
+
(0, vitest_1.expect)(output).toContain('🤖 1 active');
|
|
34
|
+
(0, vitest_1.expect)(output).toContain('50%');
|
|
35
|
+
(0, vitest_1.expect)(output).not.toContain('┌');
|
|
36
|
+
(0, vitest_1.expect)(output).not.toContain('└');
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('should render active agent count', () => {
|
|
39
|
+
const agents = [
|
|
40
|
+
makeAgent({ id: 'a1', status: 'running' }),
|
|
41
|
+
makeAgent({ id: 'a2', status: 'running' }),
|
|
42
|
+
];
|
|
43
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
44
|
+
(0, vitest_1.expect)(lastFrame()).toContain('2 active');
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)('should render 0 active when no agents running', () => {
|
|
47
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: [], skills: [] }));
|
|
48
|
+
(0, vitest_1.expect)(lastFrame()).toContain('0 active');
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)('should render skills display', () => {
|
|
51
|
+
const skills = [
|
|
52
|
+
{ skillName: 'brainstorming', reason: 'test' },
|
|
53
|
+
{ skillName: 'tdd', reason: 'test' },
|
|
54
|
+
];
|
|
55
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: [], skills: skills }));
|
|
56
|
+
(0, vitest_1.expect)(lastFrame()).toContain('brainstorming, tdd');
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('should render progress bar with ▓░ characters', () => {
|
|
59
|
+
const agents = [makeAgent({ id: 'a1', status: 'running', progress: 70 })];
|
|
60
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
61
|
+
const output = lastFrame() ?? '';
|
|
62
|
+
(0, vitest_1.expect)(output).toContain('▓');
|
|
63
|
+
(0, vitest_1.expect)(output).toContain('░');
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('should render progress percentage', () => {
|
|
66
|
+
const agents = [makeAgent({ id: 'a1', status: 'running', progress: 70 })];
|
|
67
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
68
|
+
(0, vitest_1.expect)(lastFrame()).toContain('70%');
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)('should render Waiting phase when no agents running', () => {
|
|
71
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: [], skills: [] }));
|
|
72
|
+
(0, vitest_1.expect)(lastFrame()).toContain('Waiting');
|
|
73
|
+
});
|
|
74
|
+
(0, vitest_1.it)('should render Sequential phase for 1 running agent', () => {
|
|
75
|
+
const agents = [makeAgent({ id: 'a1', status: 'running' })];
|
|
76
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
77
|
+
(0, vitest_1.expect)(lastFrame()).toContain('Sequential');
|
|
78
|
+
});
|
|
79
|
+
(0, vitest_1.it)('should render Parallel phase for 2+ running agents', () => {
|
|
80
|
+
const agents = [
|
|
81
|
+
makeAgent({ id: 'a1', status: 'running' }),
|
|
82
|
+
makeAgent({ id: 'a2', status: 'running' }),
|
|
83
|
+
];
|
|
84
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: agents, skills: [] }));
|
|
85
|
+
(0, vitest_1.expect)(lastFrame()).toContain('Parallel');
|
|
86
|
+
});
|
|
87
|
+
(0, vitest_1.it)('should render dash for empty skills', () => {
|
|
88
|
+
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(StatusBar_1.StatusBar, { agents: [], skills: [] }));
|
|
89
|
+
const frame = lastFrame() ?? '';
|
|
90
|
+
(0, vitest_1.expect)(frame).toContain('-');
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=StatusBar.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.spec.js","sourceRoot":"","sources":["../../../../src/tui/components/StatusBar.spec.tsx"],"names":[],"mappings":";;AAAA,iCAA0B;AAC1B,mCAA8C;AAC9C,6DAA6C;AAC7C,2CAAwC;AAExC,oCAAmD;AAGnD,SAAS,SAAS,CAAC,YAAiC,EAAE;IACpD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,KAAK;QAChB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG;YACb,IAAA,+BAAuB,EAAC;gBACtB,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,EAAE;aACb,CAAC;SACH,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QACjC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAiB;YAC3B,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACpE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAA4B;YACtC,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;YAC9C,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;SACrC,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC;QACxE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QACjC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACpE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAiB;YAC3B,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACxE,IAAA,eAAM,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAM,EAAC,8BAAC,qBAAS,IAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAChC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentStatus } from '../types';
|
|
2
|
+
export declare const INLINE_NAME_COL_WIDTH = 22;
|
|
3
|
+
export declare function resolveProgress(status: AgentStatus, progress: number): number;
|
|
4
|
+
export declare function abbreviateName(name: string, maxWidth: number): string;
|
|
5
|
+
export declare function buildStatusLabel(status: AgentStatus): string;
|
|
6
|
+
export declare function resolveIcon(status: AgentStatus, icon: string): string;
|
|
7
|
+
export declare function buildInlineCard(icon: string, name: string, progress: number, statusLabel: string): string;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INLINE_NAME_COL_WIDTH = void 0;
|
|
4
|
+
exports.resolveProgress = resolveProgress;
|
|
5
|
+
exports.abbreviateName = abbreviateName;
|
|
6
|
+
exports.buildStatusLabel = buildStatusLabel;
|
|
7
|
+
exports.resolveIcon = resolveIcon;
|
|
8
|
+
exports.buildInlineCard = buildInlineCard;
|
|
9
|
+
const progress_bar_pure_1 = require("./progress-bar.pure");
|
|
10
|
+
const display_width_1 = require("../utils/display-width");
|
|
11
|
+
exports.INLINE_NAME_COL_WIDTH = 22;
|
|
12
|
+
const INLINE_BAR_WIDTH = 10;
|
|
13
|
+
const INLINE_FILLED = '\u2593';
|
|
14
|
+
const INLINE_EMPTY = '\u2591';
|
|
15
|
+
const RUNNING_MIN_PROGRESS = 10;
|
|
16
|
+
const ELLIPSIS = '\u2026';
|
|
17
|
+
function resolveProgress(status, progress) {
|
|
18
|
+
const safeProgress = Number.isNaN(progress) ? 0 : progress;
|
|
19
|
+
switch (status) {
|
|
20
|
+
case 'idle':
|
|
21
|
+
return 0;
|
|
22
|
+
case 'running':
|
|
23
|
+
return Math.max(safeProgress, RUNNING_MIN_PROGRESS);
|
|
24
|
+
case 'completed':
|
|
25
|
+
return 100;
|
|
26
|
+
case 'failed':
|
|
27
|
+
return safeProgress;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function abbreviateName(name, maxWidth) {
|
|
31
|
+
if (maxWidth <= 0)
|
|
32
|
+
return '';
|
|
33
|
+
if ((0, display_width_1.estimateDisplayWidth)(name) <= maxWidth)
|
|
34
|
+
return name;
|
|
35
|
+
return (0, display_width_1.truncateToDisplayWidth)(name, maxWidth - 1) + ELLIPSIS;
|
|
36
|
+
}
|
|
37
|
+
const STATUS_LABELS = {
|
|
38
|
+
idle: 'Idle',
|
|
39
|
+
running: 'Running',
|
|
40
|
+
completed: 'Done',
|
|
41
|
+
failed: 'Failed',
|
|
42
|
+
};
|
|
43
|
+
function buildStatusLabel(status) {
|
|
44
|
+
return STATUS_LABELS[status];
|
|
45
|
+
}
|
|
46
|
+
const COMPLETED_ICON = '\u2713';
|
|
47
|
+
const FAILED_ICON = '\u2717';
|
|
48
|
+
function resolveIcon(status, icon) {
|
|
49
|
+
switch (status) {
|
|
50
|
+
case 'completed':
|
|
51
|
+
return COMPLETED_ICON;
|
|
52
|
+
case 'failed':
|
|
53
|
+
return FAILED_ICON;
|
|
54
|
+
case 'idle':
|
|
55
|
+
case 'running':
|
|
56
|
+
return icon;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function buildInlineCard(icon, name, progress, statusLabel) {
|
|
60
|
+
const displayName = (0, display_width_1.padEndDisplayWidth)(abbreviateName(name, exports.INLINE_NAME_COL_WIDTH), exports.INLINE_NAME_COL_WIDTH);
|
|
61
|
+
const bar = (0, progress_bar_pure_1.buildProgressBar)(progress, INLINE_BAR_WIDTH, INLINE_FILLED, INLINE_EMPTY);
|
|
62
|
+
const pct = `${progress}%`.padStart(4);
|
|
63
|
+
return `${icon} ${displayName} ${bar} ${pct} ${statusLabel}`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=agent-card.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-card.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/agent-card.pure.ts"],"names":[],"mappings":";;;AAgBA,0CAYC;AAED,wCAIC;AASD,4CAEC;AAKD,kCAUC;AAED,0CAaC;AA1ED,2DAAuD;AACvD,0DAIgC;AAEnB,QAAA,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,SAAgB,eAAe,CAAC,MAAmB,EAAE,QAAgB;IACnE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;QACtD,KAAK,WAAW;YACd,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAA,oCAAoB,EAAC,IAAI,CAAC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,IAAA,sCAAsB,EAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC/D,CAAC;AAED,MAAM,aAAa,GAA0C;IAC3D,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAgB,gBAAgB,CAAC,MAAmB;IAClD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,cAAc,GAAG,QAAQ,CAAC;AAChC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,SAAgB,WAAW,CAAC,MAAmB,EAAE,IAAY;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAC7B,IAAY,EACZ,IAAY,EACZ,QAAgB,EAChB,WAAmB;IAEnB,MAAM,WAAW,GAAG,IAAA,kCAAkB,EACpC,cAAc,CAAC,IAAI,EAAE,6BAAqB,CAAC,EAC3C,6BAAqB,CACtB,CAAC;IACF,MAAM,GAAG,GAAG,IAAA,oCAAgB,EAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,GAAG,IAAI,IAAI,WAAW,IAAI,GAAG,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { AgentMetadata, AgentCategory } from '../events';
|
|
2
|
+
export declare function groupByCategory(agents: AgentMetadata[]): Map<AgentCategory, AgentMetadata[]>;
|
|
3
|
+
export declare function sortCategoriesByActivity(categories: AgentCategory[], activeAgentIds: Set<string>, agentsByCategory: Map<AgentCategory, AgentMetadata[]>): AgentCategory[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupByCategory = groupByCategory;
|
|
4
|
+
exports.sortCategoriesByActivity = sortCategoriesByActivity;
|
|
5
|
+
function groupByCategory(agents) {
|
|
6
|
+
const map = new Map();
|
|
7
|
+
for (const agent of agents) {
|
|
8
|
+
const list = map.get(agent.category);
|
|
9
|
+
if (list) {
|
|
10
|
+
list.push(agent);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
map.set(agent.category, [agent]);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return map;
|
|
17
|
+
}
|
|
18
|
+
function sortCategoriesByActivity(categories, activeAgentIds, agentsByCategory) {
|
|
19
|
+
const hasActive = (cat) => {
|
|
20
|
+
const agents = agentsByCategory.get(cat) ?? [];
|
|
21
|
+
return agents.some(a => activeAgentIds.has(a.id));
|
|
22
|
+
};
|
|
23
|
+
const active = [];
|
|
24
|
+
const inactive = [];
|
|
25
|
+
for (const cat of categories) {
|
|
26
|
+
if (hasActive(cat)) {
|
|
27
|
+
active.push(cat);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
inactive.push(cat);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return [...active, ...inactive];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=agent-grid.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-grid.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/agent-grid.pure.ts"],"names":[],"mappings":";;AAEA,0CAWC;AAED,4DAsBC;AAnCD,SAAgB,eAAe,CAAC,MAAuB;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkC,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,wBAAwB,CACtC,UAA2B,EAC3B,cAA2B,EAC3B,gBAAqD;IAErD,MAAM,SAAS,GAAG,CAAC,GAAkB,EAAW,EAAE;QAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildInlineAgentTag = buildInlineAgentTag;
|
|
4
|
+
exports.joinAgentTags = joinAgentTags;
|
|
5
|
+
const display_width_1 = require("../utils/display-width");
|
|
6
|
+
const ELLIPSIS = '\u2026';
|
|
7
|
+
const TAG_NAME_MAX = 20;
|
|
8
|
+
const TAG_SEPARATOR = ' \u00b7 ';
|
|
9
|
+
function buildInlineAgentTag(name) {
|
|
10
|
+
if ((0, display_width_1.estimateDisplayWidth)(name) <= TAG_NAME_MAX)
|
|
11
|
+
return name;
|
|
12
|
+
return (0, display_width_1.truncateToDisplayWidth)(name, TAG_NAME_MAX - 1) + ELLIPSIS;
|
|
13
|
+
}
|
|
14
|
+
function joinAgentTags(names) {
|
|
15
|
+
return names.map(buildInlineAgentTag).join(TAG_SEPARATOR);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=agent-mini-card.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-mini-card.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/agent-mini-card.pure.ts"],"names":[],"mappings":";;AAOA,kDAGC;AAED,sCAEC;AAdD,0DAAsF;AAEtF,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAA,oCAAoB,EAAC,IAAI,CAAC,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,IAAA,sCAAsB,EAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACnE,CAAC;AAED,SAAgB,aAAa,CAAC,KAAe;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const TREE_CHARS: {
|
|
2
|
+
readonly VERTICAL: "│";
|
|
3
|
+
readonly HORIZONTAL: "─";
|
|
4
|
+
readonly TOP_LEFT: "┌";
|
|
5
|
+
readonly BOTTOM_LEFT: "└";
|
|
6
|
+
readonly TEE_RIGHT: "├";
|
|
7
|
+
};
|
|
8
|
+
export interface CompactAgentLine {
|
|
9
|
+
icon: string;
|
|
10
|
+
name: string;
|
|
11
|
+
progress: number;
|
|
12
|
+
statusLabel: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TreeLine {
|
|
15
|
+
key: string;
|
|
16
|
+
content: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function buildCompactTree(primary: CompactAgentLine, parallel: CompactAgentLine[]): TreeLine[];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TREE_CHARS = void 0;
|
|
4
|
+
exports.buildCompactTree = buildCompactTree;
|
|
5
|
+
const agent_card_pure_1 = require("./agent-card.pure");
|
|
6
|
+
exports.TREE_CHARS = {
|
|
7
|
+
VERTICAL: '│',
|
|
8
|
+
HORIZONTAL: '─',
|
|
9
|
+
TOP_LEFT: '┌',
|
|
10
|
+
BOTTOM_LEFT: '└',
|
|
11
|
+
TEE_RIGHT: '├',
|
|
12
|
+
};
|
|
13
|
+
function buildCompactTree(primary, parallel) {
|
|
14
|
+
const lines = [];
|
|
15
|
+
const primaryCard = (0, agent_card_pure_1.buildInlineCard)(primary.icon, primary.name, primary.progress, primary.statusLabel);
|
|
16
|
+
const { TOP_LEFT, BOTTOM_LEFT, VERTICAL, TEE_RIGHT, HORIZONTAL } = exports.TREE_CHARS;
|
|
17
|
+
lines.push({ key: 'primary-header', content: `${TOP_LEFT} Primary` });
|
|
18
|
+
if (parallel.length === 0) {
|
|
19
|
+
lines.push({
|
|
20
|
+
key: 'primary-card',
|
|
21
|
+
content: `${BOTTOM_LEFT} ${primaryCard}`,
|
|
22
|
+
});
|
|
23
|
+
return lines;
|
|
24
|
+
}
|
|
25
|
+
lines.push({ key: 'primary-card', content: `${VERTICAL} ${primaryCard}` });
|
|
26
|
+
lines.push({
|
|
27
|
+
key: 'parallel-header',
|
|
28
|
+
content: `${TEE_RIGHT}${HORIZONTAL} Parallel`,
|
|
29
|
+
});
|
|
30
|
+
for (let i = 0; i < parallel.length; i++) {
|
|
31
|
+
const agent = parallel[i];
|
|
32
|
+
const card = (0, agent_card_pure_1.buildInlineCard)(agent.icon, agent.name, agent.progress, agent.statusLabel);
|
|
33
|
+
lines.push({
|
|
34
|
+
key: `parallel-${agent.name}`,
|
|
35
|
+
content: `${VERTICAL} ${card}`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
lines.push({ key: 'footer', content: BOTTOM_LEFT });
|
|
39
|
+
return lines;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=agent-tree.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tree.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/agent-tree.pure.ts"],"names":[],"mappings":";;;AAsBA,4CAuCC;AA7DD,uDAAoD;AAEvC,QAAA,UAAU,GAAG;IACxB,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,GAAG;CACN,CAAC;AAcX,SAAgB,gBAAgB,CAC9B,OAAyB,EACzB,QAA4B;IAE5B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAA,iCAAe,EACjC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,WAAW,CACpB,CAAC;IAEF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,kBAAU,CAAC;IAE9E,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC,CAAC;IAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,EAAE,cAAc;YACnB,OAAO,EAAE,GAAG,WAAW,IAAI,WAAW,EAAE;SACzC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,QAAQ,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC;QACT,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,GAAG,SAAS,GAAG,UAAU,WAAW;KAC9C,CAAC,CAAC;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,EAAE,YAAY,KAAK,CAAC,IAAI,EAAE;YAC7B,OAAO,EAAE,GAAG,QAAQ,KAAK,IAAI,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LABEL_WIDTH = void 0;
|
|
4
|
+
exports.buildCategoryLabel = buildCategoryLabel;
|
|
5
|
+
exports.buildCompactCategoryRow = buildCompactCategoryRow;
|
|
6
|
+
const agent_mini_card_pure_1 = require("./agent-mini-card.pure");
|
|
7
|
+
const display_width_1 = require("../utils/display-width");
|
|
8
|
+
exports.LABEL_WIDTH = 18;
|
|
9
|
+
const ELLIPSIS = '\u2026';
|
|
10
|
+
function buildCategoryLabel(icon, categoryName) {
|
|
11
|
+
return icon ? `${icon} ${categoryName}` : categoryName;
|
|
12
|
+
}
|
|
13
|
+
function buildCompactCategoryRow(icon, categoryName, agentNames, maxWidth = 80) {
|
|
14
|
+
const rawLabel = buildCategoryLabel(icon, categoryName);
|
|
15
|
+
const label = (0, display_width_1.padEndDisplayWidth)(rawLabel, exports.LABEL_WIDTH);
|
|
16
|
+
const labelWidth = Math.max(exports.LABEL_WIDTH, (0, display_width_1.estimateDisplayWidth)(rawLabel));
|
|
17
|
+
const remainingWidth = maxWidth - labelWidth - 1;
|
|
18
|
+
const fullTags = (0, agent_mini_card_pure_1.joinAgentTags)(agentNames);
|
|
19
|
+
if (remainingWidth <= 0)
|
|
20
|
+
return label;
|
|
21
|
+
const tags = (0, display_width_1.estimateDisplayWidth)(fullTags) <= remainingWidth
|
|
22
|
+
? fullTags
|
|
23
|
+
: (0, display_width_1.truncateToDisplayWidth)(fullTags, remainingWidth - 1) + ELLIPSIS;
|
|
24
|
+
return `${label} ${tags}`;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=category-row.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-row.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/category-row.pure.ts"],"names":[],"mappings":";;;AAUA,gDAEC;AAED,0DAmBC;AAjCD,iEAAuD;AACvD,0DAIgC;AAEnB,QAAA,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,SAAgB,kBAAkB,CAAC,IAAY,EAAE,YAAoB;IACnE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;AACzD,CAAC;AAED,SAAgB,uBAAuB,CACrC,IAAY,EACZ,YAAoB,EACpB,UAAoB,EACpB,WAAmB,EAAE;IAErB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAA,kCAAkB,EAAC,QAAQ,EAAE,mBAAW,CAAC,CAAC;IAGxD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAW,EAAE,IAAA,oCAAoB,EAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAA,oCAAa,EAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,cAAc,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GACR,IAAA,oCAAoB,EAAC,QAAQ,CAAC,IAAI,cAAc;QAC9C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAA,sCAAsB,EAAC,QAAQ,EAAE,cAAc,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACtE,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MODE_INDICATOR = void 0;
|
|
4
|
+
exports.formatTime = formatTime;
|
|
5
|
+
exports.buildModeIndicator = buildModeIndicator;
|
|
6
|
+
exports.MODE_INDICATOR = '●';
|
|
7
|
+
function formatTime(date) {
|
|
8
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
9
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
10
|
+
return `${hours}:${minutes}`;
|
|
11
|
+
}
|
|
12
|
+
function buildModeIndicator(mode) {
|
|
13
|
+
return `${exports.MODE_INDICATOR} ${mode}`;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=header.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.pure.js","sourceRoot":"","sources":["../../../../src/tui/components/header.pure.ts"],"names":[],"mappings":";;;AAIA,gCAIC;AAED,gDAEC;AAVY,QAAA,cAAc,GAAG,GAAG,CAAC;AAElC,SAAgB,UAAU,CAAC,IAAU;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAU;IAC3C,OAAO,GAAG,sBAAc,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { ProgressBar, type ProgressBarProps } from './ProgressBar';
|
|
2
|
+
export { buildProgressBar, clampValue } from './progress-bar.pure';
|
|
3
|
+
export { Header, type HeaderProps } from './Header';
|
|
4
|
+
export { formatTime, buildModeIndicator, MODE_INDICATOR } from './header.pure';
|
|
5
|
+
export { AgentCard, type AgentCardProps } from './AgentCard';
|
|
6
|
+
export { resolveProgress, abbreviateName, buildStatusLabel, resolveIcon, buildInlineCard, INLINE_NAME_COL_WIDTH, } from './agent-card.pure';
|
|
7
|
+
export { AgentTree, type AgentTreeProps } from './AgentTree';
|
|
8
|
+
export { TREE_CHARS, buildCompactTree, type CompactAgentLine, type TreeLine, } from './agent-tree.pure';
|
|
9
|
+
export { buildInlineAgentTag, joinAgentTags } from './agent-mini-card.pure';
|
|
10
|
+
export { CategoryRow, type CategoryRowProps } from './CategoryRow';
|
|
11
|
+
export { buildCategoryLabel, buildCompactCategoryRow, LABEL_WIDTH } from './category-row.pure';
|
|
12
|
+
export { AgentGrid, type AgentGridProps } from './AgentGrid';
|
|
13
|
+
export { groupByCategory, sortCategoriesByActivity } from './agent-grid.pure';
|
|
14
|
+
export { StatusBar, type StatusBarProps } from './StatusBar';
|
|
15
|
+
export { countActiveAgents, calculateOverallProgress, determinePhase, buildSkillsDisplay, buildCompactStatusParts, getPhaseColor, type CompactStatusParts, type Phase, } from './status-bar.pure';
|