codingbuddy 4.1.0 โ 4.2.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/dist/src/agent/agent-summary.utils.d.ts +2 -1
- package/dist/src/analyzer/conventions.schemas.d.ts +0 -4
- package/dist/src/analyzer/conventions.schemas.js.map +1 -1
- package/dist/src/analyzer/conventions.types.d.ts +5 -7
- package/dist/src/analyzer/conventions.types.js.map +1 -1
- package/dist/src/analyzer/directory.analyzer.d.ts +1 -1
- package/dist/src/checklist/checklist.schema.d.ts +2 -1
- package/dist/src/cli/cli.d.ts +0 -1
- package/dist/src/cli/cli.js +0 -1
- package/dist/src/cli/cli.js.map +1 -1
- package/dist/src/cli/init/claude-settings.utils.d.ts +2 -1
- package/dist/src/cli/init/config.generator.d.ts +0 -2
- package/dist/src/cli/init/config.generator.js +0 -2
- package/dist/src/cli/init/config.generator.js.map +1 -1
- package/dist/src/cli/init/config.writer.d.ts +0 -1
- package/dist/src/cli/init/config.writer.js +0 -1
- package/dist/src/cli/init/config.writer.js.map +1 -1
- package/dist/src/cli/init/init.constants.js +1 -0
- package/dist/src/cli/init/init.constants.js.map +1 -1
- package/dist/src/cli/init/init.wizard.d.ts +2 -1
- package/dist/src/cli/run-tui.d.ts +0 -2
- package/dist/src/cli/run-tui.js +19 -57
- package/dist/src/cli/run-tui.js.map +1 -1
- package/dist/src/config/config.loader.d.ts +0 -2
- package/dist/src/config/config.loader.js +0 -2
- package/dist/src/config/config.loader.js.map +1 -1
- package/dist/src/config/config.schema.d.ts +0 -16
- package/dist/src/config/config.schema.js +7 -7
- package/dist/src/config/config.schema.js.map +1 -1
- package/dist/src/context/context-document.types.d.ts +0 -8
- package/dist/src/context/context-document.types.js +9 -9
- package/dist/src/context/context-document.types.js.map +1 -1
- package/dist/src/context/context-parser.utils.d.ts +1 -9
- package/dist/src/context/context-parser.utils.js +0 -36
- package/dist/src/context/context-parser.utils.js.map +1 -1
- package/dist/src/keyword/keyword.service.js +5 -1
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +0 -4
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/srp-template.d.ts +0 -2
- package/dist/src/keyword/srp-template.js +0 -2
- package/dist/src/keyword/srp-template.js.map +1 -1
- package/dist/src/main.js +30 -9
- package/dist/src/main.js.map +1 -1
- package/dist/src/rules/rules.types.d.ts +3 -2
- package/dist/src/rules/skill.schema.d.ts +0 -5
- package/dist/src/rules/skill.schema.js +3 -3
- package/dist/src/rules/skill.schema.js.map +1 -1
- package/dist/src/shared/async.utils.d.ts +3 -2
- package/dist/src/shared/file.utils.d.ts +3 -2
- package/dist/src/shared/filesystem.interface.d.ts +0 -10
- package/dist/src/shared/filesystem.interface.js +1 -10
- package/dist/src/shared/filesystem.interface.js.map +1 -1
- package/dist/src/shared/keyword-core.d.ts +2 -1
- package/dist/src/shared/keyword-core.js +3 -1
- package/dist/src/shared/keyword-core.js.map +1 -1
- package/dist/src/shared/language.types.d.ts +2 -1
- package/dist/src/shared/lru-cache.d.ts +2 -6
- package/dist/src/shared/path.utils.d.ts +0 -1
- package/dist/src/shared/path.utils.js +0 -1
- package/dist/src/shared/path.utils.js.map +1 -1
- package/dist/src/shared/pattern-matcher.d.ts +2 -1
- package/dist/src/shared/rules-core.d.ts +3 -2
- package/dist/src/shared/security.utils.d.ts +4 -3
- package/dist/src/shared/validation.constants.d.ts +2 -3
- package/dist/src/shared/validation.constants.js +3 -3
- package/dist/src/shared/validation.constants.js.map +1 -1
- package/dist/src/shared/verbosity.types.d.ts +2 -1
- package/dist/src/skill/skill-content.utils.d.ts +0 -1
- package/dist/src/skill/skill-content.utils.js +4 -4
- package/dist/src/skill/skill-content.utils.js.map +1 -1
- package/dist/src/tui/__perf__/memory-stability.spec.js +8 -8
- package/dist/src/tui/__perf__/memory-stability.spec.js.map +1 -1
- package/dist/src/tui/__perf__/rendering-performance.spec.js +9 -9
- package/dist/src/tui/__perf__/rendering-performance.spec.js.map +1 -1
- package/dist/src/tui/components/ActivityVisualizer.d.ts +10 -0
- package/dist/src/tui/components/ActivityVisualizer.js +22 -0
- package/dist/src/tui/components/ActivityVisualizer.js.map +1 -0
- package/dist/src/tui/components/ActivityVisualizer.spec.js +45 -0
- package/dist/src/tui/components/ActivityVisualizer.spec.js.map +1 -0
- package/dist/src/tui/components/ContextSection.d.ts +7 -0
- package/dist/src/tui/components/ContextSection.js +24 -0
- package/dist/src/tui/components/ContextSection.js.map +1 -0
- package/dist/src/tui/components/FlowMap.d.ts +12 -0
- package/dist/src/tui/components/FlowMap.js +55 -0
- package/dist/src/tui/components/FlowMap.js.map +1 -0
- package/dist/src/tui/components/FlowMap.spec.js +59 -0
- package/dist/src/tui/components/FlowMap.spec.js.map +1 -0
- package/dist/src/tui/components/FocusedAgentPanel.d.ts +19 -0
- package/dist/src/tui/components/FocusedAgentPanel.js +74 -0
- package/dist/src/tui/components/FocusedAgentPanel.js.map +1 -0
- package/dist/src/tui/components/FocusedAgentPanel.spec.js +140 -0
- package/dist/src/tui/components/FocusedAgentPanel.spec.js.map +1 -0
- package/dist/src/tui/components/HeaderBar.d.ts +12 -0
- package/dist/src/tui/components/HeaderBar.js +55 -0
- package/dist/src/tui/components/HeaderBar.js.map +1 -0
- package/dist/src/tui/components/HeaderBar.spec.js +78 -0
- package/dist/src/tui/components/HeaderBar.spec.js.map +1 -0
- package/dist/src/tui/components/SessionTabBar.d.ts +9 -0
- package/dist/src/tui/components/SessionTabBar.js +15 -0
- package/dist/src/tui/components/SessionTabBar.js.map +1 -0
- package/dist/src/tui/components/SessionTabBar.spec.js +59 -0
- package/dist/src/tui/components/SessionTabBar.spec.js.map +1 -0
- package/dist/src/tui/components/StageHealthBar.d.ts +10 -0
- package/dist/src/tui/components/StageHealthBar.js +63 -0
- package/dist/src/tui/components/StageHealthBar.js.map +1 -0
- package/dist/src/tui/components/StageHealthBar.spec.js +63 -0
- package/dist/src/tui/components/StageHealthBar.spec.js.map +1 -0
- package/dist/src/tui/components/activity-visualizer.pure.d.ts +9 -0
- package/dist/src/tui/components/activity-visualizer.pure.js +70 -0
- package/dist/src/tui/components/activity-visualizer.pure.js.map +1 -0
- package/dist/src/tui/components/context-section.pure.d.ts +3 -0
- package/dist/src/tui/components/context-section.pure.js +38 -0
- package/dist/src/tui/components/context-section.pure.js.map +1 -0
- package/dist/src/tui/components/flow-map.pure.d.ts +26 -0
- package/dist/src/tui/components/flow-map.pure.js +263 -0
- package/dist/src/tui/components/flow-map.pure.js.map +1 -0
- package/dist/src/tui/components/focused-agent.pure.d.ts +23 -0
- package/dist/src/tui/components/focused-agent.pure.js +87 -0
- package/dist/src/tui/components/focused-agent.pure.js.map +1 -0
- package/dist/src/tui/components/grid-layout.pure.d.ts +2 -0
- package/dist/src/tui/components/grid-layout.pure.js +50 -0
- package/dist/src/tui/components/grid-layout.pure.js.map +1 -0
- package/dist/src/tui/components/header-bar.pure.d.ts +1 -0
- package/dist/src/tui/components/{header.pure.js โ header-bar.pure.js} +1 -7
- package/dist/src/tui/components/header-bar.pure.js.map +1 -0
- package/dist/src/tui/components/index.d.ts +12 -15
- package/dist/src/tui/components/index.js +35 -49
- package/dist/src/tui/components/index.js.map +1 -1
- package/dist/src/tui/components/session-tab-bar.pure.d.ts +9 -0
- package/dist/src/tui/components/session-tab-bar.pure.js +45 -0
- package/dist/src/tui/components/session-tab-bar.pure.js.map +1 -0
- package/dist/src/tui/components/stage-health.pure.d.ts +4 -0
- package/dist/src/tui/components/stage-health.pure.js +59 -0
- package/dist/src/tui/components/stage-health.pure.js.map +1 -0
- package/dist/src/tui/dashboard-app.d.ts +8 -0
- package/dist/src/tui/dashboard-app.js +43 -0
- package/dist/src/tui/dashboard-app.js.map +1 -0
- package/dist/src/tui/dashboard-app.spec.js +136 -0
- package/dist/src/tui/dashboard-app.spec.js.map +1 -0
- package/dist/src/tui/dashboard-types.d.ts +88 -0
- package/dist/src/tui/dashboard-types.js +32 -0
- package/dist/src/tui/dashboard-types.js.map +1 -0
- package/dist/src/tui/eventbus-ui.integration.spec.js +132 -167
- package/dist/src/tui/eventbus-ui.integration.spec.js.map +1 -1
- package/dist/src/tui/events/event-bus.js +1 -1
- package/dist/src/tui/events/event-bus.js.map +1 -1
- package/dist/src/tui/events/index.d.ts +1 -1
- package/dist/src/tui/events/index.js.map +1 -1
- package/dist/src/tui/events/parse-agent.js +2 -1
- package/dist/src/tui/events/parse-agent.js.map +1 -1
- package/dist/src/tui/events/response-event-extractor.d.ts +16 -1
- package/dist/src/tui/events/response-event-extractor.js +154 -1
- package/dist/src/tui/events/response-event-extractor.js.map +1 -1
- package/dist/src/tui/events/tui-interceptor.d.ts +3 -0
- package/dist/src/tui/events/tui-interceptor.js +67 -7
- package/dist/src/tui/events/tui-interceptor.js.map +1 -1
- package/dist/src/tui/events/types.d.ts +46 -2
- package/dist/src/tui/events/types.js +6 -0
- package/dist/src/tui/events/types.js.map +1 -1
- package/dist/src/tui/hooks/index.d.ts +7 -4
- package/dist/src/tui/hooks/index.js +12 -7
- package/dist/src/tui/hooks/index.js.map +1 -1
- package/dist/src/tui/hooks/use-clock.js +3 -3
- package/dist/src/tui/hooks/use-clock.js.map +1 -1
- package/dist/src/tui/hooks/use-dashboard-state.d.ts +46 -0
- package/dist/src/tui/hooks/use-dashboard-state.js +249 -0
- package/dist/src/tui/hooks/use-dashboard-state.js.map +1 -0
- package/dist/src/tui/hooks/use-focus-agent.d.ts +2 -0
- package/dist/src/tui/hooks/use-focus-agent.js +26 -0
- package/dist/src/tui/hooks/use-focus-agent.js.map +1 -0
- package/dist/src/tui/hooks/use-multi-session-state.d.ts +16 -0
- package/dist/src/tui/hooks/use-multi-session-state.js +163 -0
- package/dist/src/tui/hooks/use-multi-session-state.js.map +1 -0
- package/dist/src/tui/hooks/use-terminal-size.d.ts +9 -0
- package/dist/src/tui/hooks/use-terminal-size.js +31 -0
- package/dist/src/tui/hooks/use-terminal-size.js.map +1 -0
- package/dist/src/tui/index.d.ts +12 -4
- package/dist/src/tui/index.js +18 -7
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/ipc/index.d.ts +5 -2
- package/dist/src/tui/ipc/index.js +5 -5
- package/dist/src/tui/ipc/index.js.map +1 -1
- package/dist/src/tui/ipc/ipc-state-cache.d.ts +1 -0
- package/dist/src/tui/ipc/ipc-state-cache.js +7 -0
- package/dist/src/tui/ipc/ipc-state-cache.js.map +1 -1
- package/dist/src/tui/ipc/multi-session-manager.d.ts +39 -0
- package/dist/src/tui/ipc/multi-session-manager.js +143 -0
- package/dist/src/tui/ipc/multi-session-manager.js.map +1 -0
- package/dist/src/tui/ipc/tui-auto-launcher.d.ts +22 -0
- package/dist/src/tui/ipc/tui-auto-launcher.js +113 -0
- package/dist/src/tui/ipc/tui-auto-launcher.js.map +1 -0
- package/dist/src/tui/multi-session-app.d.ts +6 -0
- package/dist/src/tui/multi-session-app.js +55 -0
- package/dist/src/tui/multi-session-app.js.map +1 -0
- package/dist/src/tui/multi-session-app.spec.js +95 -0
- package/dist/src/tui/multi-session-app.spec.js.map +1 -0
- package/dist/src/tui/transport-tui.integration.spec.js +15 -15
- package/dist/src/tui/transport-tui.integration.spec.js.map +1 -1
- package/dist/src/tui/tui-config.d.ts +3 -2
- package/dist/src/tui/types.d.ts +1 -1
- package/dist/src/tui/types.js +3 -0
- package/dist/src/tui/types.js.map +1 -1
- package/dist/src/tui/utils/color-buffer.d.ts +31 -0
- package/dist/src/tui/utils/color-buffer.js +86 -0
- package/dist/src/tui/utils/color-buffer.js.map +1 -0
- package/dist/src/tui/utils/colors.js.map +1 -1
- package/dist/src/tui/utils/edge-router.d.ts +9 -0
- package/dist/src/tui/utils/edge-router.js +65 -0
- package/dist/src/tui/utils/edge-router.js.map +1 -0
- package/dist/src/tui/utils/index.d.ts +3 -1
- package/dist/src/tui/utils/index.js +21 -4
- package/dist/src/tui/utils/index.js.map +1 -1
- package/dist/src/tui/utils/theme.d.ts +50 -0
- package/dist/src/tui/utils/theme.js +128 -0
- package/dist/src/tui/utils/theme.js.map +1 -0
- package/dist/src/tui-bundle.mjs +5755 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/dist/src/shared/token-counter.d.ts +0 -13
- package/dist/src/shared/token-counter.js +0 -41
- package/dist/src/shared/token-counter.js.map +0 -1
- package/dist/src/tui/app.d.ts +0 -6
- package/dist/src/tui/app.js +0 -20
- package/dist/src/tui/app.js.map +0 -1
- package/dist/src/tui/app.spec.js +0 -226
- package/dist/src/tui/app.spec.js.map +0 -1
- package/dist/src/tui/components/AgentCard.d.ts +0 -6
- package/dist/src/tui/components/AgentCard.js +0 -18
- package/dist/src/tui/components/AgentCard.js.map +0 -1
- package/dist/src/tui/components/AgentCard.spec.js +0 -118
- package/dist/src/tui/components/AgentCard.spec.js.map +0 -1
- package/dist/src/tui/components/AgentGrid.d.ts +0 -7
- package/dist/src/tui/components/AgentGrid.js +0 -20
- package/dist/src/tui/components/AgentGrid.js.map +0 -1
- package/dist/src/tui/components/AgentGrid.spec.js +0 -52
- package/dist/src/tui/components/AgentGrid.spec.js.map +0 -1
- package/dist/src/tui/components/AgentTree.d.ts +0 -7
- package/dist/src/tui/components/AgentTree.js +0 -24
- package/dist/src/tui/components/AgentTree.js.map +0 -1
- package/dist/src/tui/components/AgentTree.spec.js +0 -146
- package/dist/src/tui/components/AgentTree.spec.js.map +0 -1
- package/dist/src/tui/components/CategoryRow.d.ts +0 -9
- package/dist/src/tui/components/CategoryRow.js +0 -15
- package/dist/src/tui/components/CategoryRow.js.map +0 -1
- package/dist/src/tui/components/CategoryRow.spec.js +0 -58
- package/dist/src/tui/components/CategoryRow.spec.js.map +0 -1
- package/dist/src/tui/components/Header.d.ts +0 -6
- package/dist/src/tui/components/Header.js +0 -18
- package/dist/src/tui/components/Header.js.map +0 -1
- package/dist/src/tui/components/Header.spec.js +0 -38
- package/dist/src/tui/components/Header.spec.js.map +0 -1
- package/dist/src/tui/components/ProgressBar.d.ts +0 -7
- package/dist/src/tui/components/ProgressBar.js +0 -12
- package/dist/src/tui/components/ProgressBar.js.map +0 -1
- package/dist/src/tui/components/ProgressBar.spec.js +0 -37
- package/dist/src/tui/components/ProgressBar.spec.js.map +0 -1
- package/dist/src/tui/components/StatusBar.d.ts +0 -8
- package/dist/src/tui/components/StatusBar.js +0 -29
- package/dist/src/tui/components/StatusBar.js.map +0 -1
- package/dist/src/tui/components/StatusBar.spec.js +0 -93
- package/dist/src/tui/components/StatusBar.spec.js.map +0 -1
- package/dist/src/tui/components/agent-card.pure.d.ts +0 -7
- package/dist/src/tui/components/agent-card.pure.js +0 -65
- package/dist/src/tui/components/agent-card.pure.js.map +0 -1
- package/dist/src/tui/components/agent-grid.pure.d.ts +0 -3
- package/dist/src/tui/components/agent-grid.pure.js +0 -35
- package/dist/src/tui/components/agent-grid.pure.js.map +0 -1
- package/dist/src/tui/components/agent-mini-card.pure.d.ts +0 -2
- package/dist/src/tui/components/agent-mini-card.pure.js +0 -17
- package/dist/src/tui/components/agent-mini-card.pure.js.map +0 -1
- package/dist/src/tui/components/agent-tree.pure.d.ts +0 -18
- package/dist/src/tui/components/agent-tree.pure.js +0 -41
- package/dist/src/tui/components/agent-tree.pure.js.map +0 -1
- package/dist/src/tui/components/category-row.pure.d.ts +0 -3
- package/dist/src/tui/components/category-row.pure.js +0 -26
- package/dist/src/tui/components/category-row.pure.js.map +0 -1
- package/dist/src/tui/components/header.pure.d.ts +0 -4
- package/dist/src/tui/components/header.pure.js.map +0 -1
- package/dist/src/tui/components/progress-bar.pure.d.ts +0 -2
- package/dist/src/tui/components/progress-bar.pure.js +0 -21
- package/dist/src/tui/components/progress-bar.pure.js.map +0 -1
- package/dist/src/tui/components/status-bar.pure.d.ts +0 -15
- package/dist/src/tui/components/status-bar.pure.js +0 -83
- package/dist/src/tui/components/status-bar.pure.js.map +0 -1
- package/dist/src/tui/hooks/use-agent-state.d.ts +0 -7
- package/dist/src/tui/hooks/use-agent-state.js +0 -13
- package/dist/src/tui/hooks/use-agent-state.js.map +0 -1
- package/dist/src/tui/hooks/use-agent-state.spec.d.ts +0 -1
- package/dist/src/tui/hooks/use-agent-state.spec.js +0 -167
- package/dist/src/tui/hooks/use-agent-state.spec.js.map +0 -1
- package/dist/src/tui/hooks/use-event-bus.d.ts +0 -34
- package/dist/src/tui/hooks/use-event-bus.js +0 -91
- package/dist/src/tui/hooks/use-event-bus.js.map +0 -1
- package/dist/src/tui/hooks/use-event-bus.spec.d.ts +0 -1
- package/dist/src/tui/hooks/use-event-bus.spec.js +0 -362
- package/dist/src/tui/hooks/use-event-bus.spec.js.map +0 -1
- package/dist/src/tui/utils/constants.d.ts +0 -3
- package/dist/src/tui/utils/constants.js +0 -15
- package/dist/src/tui/utils/constants.js.map +0 -1
- /package/dist/src/tui/{app.spec.d.ts โ components/ActivityVisualizer.spec.d.ts} +0 -0
- /package/dist/src/tui/components/{AgentCard.spec.d.ts โ FlowMap.spec.d.ts} +0 -0
- /package/dist/src/tui/components/{AgentGrid.spec.d.ts โ FocusedAgentPanel.spec.d.ts} +0 -0
- /package/dist/src/tui/components/{AgentTree.spec.d.ts โ HeaderBar.spec.d.ts} +0 -0
- /package/dist/src/tui/components/{CategoryRow.spec.d.ts โ SessionTabBar.spec.d.ts} +0 -0
- /package/dist/src/tui/components/{Header.spec.d.ts โ StageHealthBar.spec.d.ts} +0 -0
- /package/dist/src/tui/{components/ProgressBar.spec.d.ts โ dashboard-app.spec.d.ts} +0 -0
- /package/dist/src/tui/{components/StatusBar.spec.d.ts โ multi-session-app.spec.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codingbuddy",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "Multi-AI Rules MCP Server - One source of truth for AI coding rules across all AI assistants",
|
|
5
5
|
"author": "JeremyDev87",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,11 +41,13 @@
|
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"prepublishOnly": "yarn build && chmod +x dist/src/main.js dist/src/cli/cli.js",
|
|
44
|
-
"build": "yarn tsc -p tsconfig.build.json",
|
|
44
|
+
"build": "yarn tsc -p tsconfig.build.json && node scripts/build-tui.js",
|
|
45
45
|
"build:tui": "node scripts/build-tui.js",
|
|
46
46
|
"start": "node dist/src/main.js",
|
|
47
47
|
"start:dev": "yarn ts-node src/main.ts",
|
|
48
|
-
"start:tui": "yarn build &&
|
|
48
|
+
"start:tui": "yarn build && node dist/src/cli/cli.js tui",
|
|
49
|
+
"start:sse:tui": "yarn build && MCP_TRANSPORT=sse node dist/src/main.js --tui",
|
|
50
|
+
"tui": "node dist/src/cli/cli.js tui",
|
|
49
51
|
"test": "yarn vitest run",
|
|
50
52
|
"test:watch": "yarn vitest",
|
|
51
53
|
"test:coverage": "yarn vitest run --coverage",
|
|
@@ -68,11 +70,10 @@
|
|
|
68
70
|
"@nestjs/config": "4.0.2",
|
|
69
71
|
"@nestjs/core": "11.1.9",
|
|
70
72
|
"@nestjs/platform-express": "11.1.9",
|
|
71
|
-
"
|
|
73
|
+
"chalk": "5.4.1",
|
|
74
|
+
"codingbuddy-rules": "4.2.0",
|
|
72
75
|
"eventemitter2": "6.4.9",
|
|
73
76
|
"ink": "6.7.0",
|
|
74
|
-
"ink-gradient": "4.0.0",
|
|
75
|
-
"ink-spinner": "5.0.0",
|
|
76
77
|
"minimatch": "10.1.1",
|
|
77
78
|
"react": "19.2.4",
|
|
78
79
|
"reflect-metadata": "0.2.2",
|
|
@@ -82,20 +83,19 @@
|
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
85
|
"@eslint/js": "9.39.2",
|
|
85
|
-
"@nestjs/cli": "11.0.14",
|
|
86
|
-
"@nestjs/schematics": "11.0.9",
|
|
87
86
|
"@types/express": "5.0.6",
|
|
88
87
|
"@types/node": "25.0.3",
|
|
89
88
|
"@types/react": "19.2.14",
|
|
90
89
|
"@vercel/node": "5.5.16",
|
|
91
90
|
"@vitest/coverage-v8": "4.0.16",
|
|
91
|
+
"esbuild": "^0.27.0",
|
|
92
92
|
"eslint": "9.39.2",
|
|
93
93
|
"eslint-config-prettier": "10.1.8",
|
|
94
94
|
"ink-testing-library": "^4.0.0",
|
|
95
95
|
"madge": "8.0.0",
|
|
96
|
+
"memfs": "^3.4.1",
|
|
96
97
|
"prettier": "3.7.4",
|
|
97
98
|
"ts-node": "10.9.2",
|
|
98
|
-
"tsx": "^4.21.0",
|
|
99
99
|
"typescript": "5.9.3",
|
|
100
100
|
"typescript-eslint": "8.50.0",
|
|
101
101
|
"vitest": "4.0.16"
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface TokenMetrics {
|
|
2
|
-
componentName: string;
|
|
3
|
-
byteSize: number;
|
|
4
|
-
estimatedTokens: number;
|
|
5
|
-
timestamp: Date;
|
|
6
|
-
}
|
|
7
|
-
export interface TokenBreakdown {
|
|
8
|
-
total: number;
|
|
9
|
-
breakdown: Record<string, number>;
|
|
10
|
-
}
|
|
11
|
-
export declare function estimateTokens(content: string): number;
|
|
12
|
-
export declare function measureResponse<T>(componentName: string, data: T): TokenMetrics;
|
|
13
|
-
export declare function calculateTotalTokens(metrics: TokenMetrics[]): TokenBreakdown;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.estimateTokens = estimateTokens;
|
|
4
|
-
exports.measureResponse = measureResponse;
|
|
5
|
-
exports.calculateTotalTokens = calculateTotalTokens;
|
|
6
|
-
function estimateTokens(content) {
|
|
7
|
-
if (!content || content.length === 0) {
|
|
8
|
-
return 0;
|
|
9
|
-
}
|
|
10
|
-
const cjkRegex = /[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uac00-\ud7af]/g;
|
|
11
|
-
const cjkMatches = content.match(cjkRegex);
|
|
12
|
-
const cjkCount = cjkMatches ? cjkMatches.length : 0;
|
|
13
|
-
const nonCjkCount = content.length - cjkCount;
|
|
14
|
-
const cjkTokens = Math.ceil(cjkCount / 2);
|
|
15
|
-
const nonCjkTokens = Math.ceil(nonCjkCount / 4);
|
|
16
|
-
return cjkTokens + nonCjkTokens;
|
|
17
|
-
}
|
|
18
|
-
function measureResponse(componentName, data) {
|
|
19
|
-
const serialized = JSON.stringify(data);
|
|
20
|
-
const byteSize = Buffer.byteLength(serialized, 'utf8');
|
|
21
|
-
const estimatedTokens = estimateTokens(serialized);
|
|
22
|
-
return {
|
|
23
|
-
componentName,
|
|
24
|
-
byteSize,
|
|
25
|
-
estimatedTokens,
|
|
26
|
-
timestamp: new Date(),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
function calculateTotalTokens(metrics) {
|
|
30
|
-
const breakdown = {};
|
|
31
|
-
let total = 0;
|
|
32
|
-
for (const metric of metrics) {
|
|
33
|
-
breakdown[metric.componentName] = metric.estimatedTokens;
|
|
34
|
-
total += metric.estimatedTokens;
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
total,
|
|
38
|
-
breakdown,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=token-counter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../../src/shared/token-counter.ts"],"names":[],"mappings":";;AAsCA,wCAkBC;AAeD,0CAWC;AAoBD,oDAaC;AA7ED,SAAgB,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAGD,MAAM,QAAQ,GAAG,yDAAyD,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAGpD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IAG9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAEhD,OAAO,SAAS,GAAG,YAAY,CAAC;AAClC,CAAC;AAeD,SAAgB,eAAe,CAAI,aAAqB,EAAE,IAAO;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEnD,OAAO;QACL,aAAa;QACb,QAAQ;QACR,eAAe;QACf,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAoBD,SAAgB,oBAAoB,CAAC,OAAuB;IAC1D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;QACzD,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC;IAClC,CAAC;IAED,OAAO;QACL,KAAK;QACL,SAAS;KACV,CAAC;AACJ,CAAC"}
|
package/dist/src/tui/app.d.ts
DELETED
package/dist/src/tui/app.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.App = App;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const ink_1 = require("ink");
|
|
6
|
-
const hooks_1 = require("./hooks");
|
|
7
|
-
const use_agent_state_1 = require("./hooks/use-agent-state");
|
|
8
|
-
const components_1 = require("./components");
|
|
9
|
-
function App({ eventBus }) {
|
|
10
|
-
const { mode, agents, skills, allAgents } = (0, hooks_1.useEventBus)(eventBus);
|
|
11
|
-
const { primaryAgent, activeAgents } = (0, use_agent_state_1.useAgentState)(agents);
|
|
12
|
-
const parallelAgents = activeAgents.filter(a => !a.isPrimary);
|
|
13
|
-
const activeAgentIds = new Set(agents.filter(a => a.status === 'running').map(a => a.id));
|
|
14
|
-
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
15
|
-
react_1.default.createElement(components_1.Header, { mode: mode }),
|
|
16
|
-
react_1.default.createElement(components_1.AgentTree, { primaryAgent: primaryAgent, parallelAgents: parallelAgents }),
|
|
17
|
-
react_1.default.createElement(components_1.AgentGrid, { allAgents: allAgents, activeAgentIds: activeAgentIds }),
|
|
18
|
-
react_1.default.createElement(components_1.StatusBar, { agents: agents, skills: skills })));
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=app.js.map
|
package/dist/src/tui/app.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/tui/app.tsx"],"names":[],"mappings":";;AAWA,kBAcC;AAzBD,iCAA0B;AAC1B,6BAA0B;AAE1B,mCAAsC;AACtC,6DAAwD;AACxD,6CAAuE;AAMvE,SAAgB,GAAG,CAAC,EAAE,QAAQ,EAAY;IACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAA,+BAAa,EAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1F,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,8BAAC,mBAAM,IAAC,IAAI,EAAE,IAAI,GAAI;QACtB,8BAAC,sBAAS,IAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,GAAI;QACzE,8BAAC,sBAAS,IAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,GAAI;QACnE,8BAAC,sBAAS,IAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,CACzC,CACP,CAAC;AACJ,CAAC"}
|
package/dist/src/tui/app.spec.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
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 app_1 = require("./app");
|
|
7
|
-
const events_1 = require("./events");
|
|
8
|
-
vitest_1.vi.mock('./utils/icons', async (importOriginal) => {
|
|
9
|
-
const actual = await importOriginal();
|
|
10
|
-
return {
|
|
11
|
-
...actual,
|
|
12
|
-
isNerdFontEnabled: () => false,
|
|
13
|
-
};
|
|
14
|
-
});
|
|
15
|
-
const tick = () => new Promise(resolve => setTimeout(resolve, 0));
|
|
16
|
-
(0, vitest_1.describe)('tui/App', () => {
|
|
17
|
-
(0, vitest_1.it)('should render the application title', () => {
|
|
18
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, null));
|
|
19
|
-
(0, vitest_1.expect)(lastFrame()).toContain('CODINGBUDDY');
|
|
20
|
-
});
|
|
21
|
-
(0, vitest_1.it)('should render without errors', () => {
|
|
22
|
-
(0, vitest_1.expect)(() => (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, null))).not.toThrow();
|
|
23
|
-
});
|
|
24
|
-
(0, vitest_1.it)('should accept eventBus prop without errors', () => {
|
|
25
|
-
const eventBus = new events_1.TuiEventBus();
|
|
26
|
-
(0, vitest_1.expect)(() => (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }))).not.toThrow();
|
|
27
|
-
});
|
|
28
|
-
(0, vitest_1.it)('should display mode when eventBus emits MODE_CHANGED', async () => {
|
|
29
|
-
const eventBus = new events_1.TuiEventBus();
|
|
30
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
31
|
-
eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
|
|
32
|
-
await tick();
|
|
33
|
-
(0, vitest_1.expect)(lastFrame()).toContain('PLAN');
|
|
34
|
-
});
|
|
35
|
-
(0, vitest_1.it)('should render AgentTree when agents are activated', async () => {
|
|
36
|
-
const eventBus = new events_1.TuiEventBus();
|
|
37
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
38
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
39
|
-
agentId: 'p1',
|
|
40
|
-
name: 'solution-architect',
|
|
41
|
-
role: 'primary',
|
|
42
|
-
isPrimary: true,
|
|
43
|
-
});
|
|
44
|
-
await tick();
|
|
45
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
46
|
-
agentId: 's1',
|
|
47
|
-
name: 'security-specialist',
|
|
48
|
-
role: 'specialist',
|
|
49
|
-
isPrimary: false,
|
|
50
|
-
});
|
|
51
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
52
|
-
agentId: 's2',
|
|
53
|
-
name: 'test-strategy-specialist',
|
|
54
|
-
role: 'specialist',
|
|
55
|
-
isPrimary: false,
|
|
56
|
-
});
|
|
57
|
-
await tick();
|
|
58
|
-
const frame = lastFrame() ?? '';
|
|
59
|
-
(0, vitest_1.expect)(frame).toContain('soluti');
|
|
60
|
-
(0, vitest_1.expect)(frame).toContain('securi');
|
|
61
|
-
(0, vitest_1.expect)(frame).toContain('test-s');
|
|
62
|
-
});
|
|
63
|
-
(0, vitest_1.it)('should show active count in StatusBar after AGENT_ACTIVATED', async () => {
|
|
64
|
-
const eventBus = new events_1.TuiEventBus();
|
|
65
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
66
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
67
|
-
agentId: 'a1',
|
|
68
|
-
name: 'security-specialist',
|
|
69
|
-
role: 'specialist',
|
|
70
|
-
isPrimary: false,
|
|
71
|
-
});
|
|
72
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
73
|
-
agentId: 'a2',
|
|
74
|
-
name: 'test-strategy-specialist',
|
|
75
|
-
role: 'specialist',
|
|
76
|
-
isPrimary: false,
|
|
77
|
-
});
|
|
78
|
-
await tick();
|
|
79
|
-
(0, vitest_1.expect)(lastFrame()).toContain('2 active');
|
|
80
|
-
});
|
|
81
|
-
(0, vitest_1.it)('should render AgentGrid categories when AGENTS_LOADED emitted', async () => {
|
|
82
|
-
const eventBus = new events_1.TuiEventBus();
|
|
83
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
84
|
-
const agents = [
|
|
85
|
-
{
|
|
86
|
-
id: 'security-specialist',
|
|
87
|
-
name: 'security-specialist',
|
|
88
|
-
description: 'Security analysis',
|
|
89
|
-
category: 'Security',
|
|
90
|
-
icon: '๐',
|
|
91
|
-
expertise: ['security'],
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
id: 'test-strategy-specialist',
|
|
95
|
-
name: 'test-strategy-specialist',
|
|
96
|
-
description: 'Test strategy',
|
|
97
|
-
category: 'Testing',
|
|
98
|
-
icon: '๐งช',
|
|
99
|
-
expertise: ['testing'],
|
|
100
|
-
},
|
|
101
|
-
];
|
|
102
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, { agents });
|
|
103
|
-
await tick();
|
|
104
|
-
const frame = lastFrame() ?? '';
|
|
105
|
-
(0, vitest_1.expect)(frame).toContain('Security');
|
|
106
|
-
(0, vitest_1.expect)(frame).toContain('Testing');
|
|
107
|
-
});
|
|
108
|
-
(0, vitest_1.it)('should reflect agent deactivation after AGENT_DEACTIVATED', async () => {
|
|
109
|
-
const eventBus = new events_1.TuiEventBus();
|
|
110
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
111
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
112
|
-
agentId: 'a1',
|
|
113
|
-
name: 'security-specialist',
|
|
114
|
-
role: 'specialist',
|
|
115
|
-
isPrimary: true,
|
|
116
|
-
});
|
|
117
|
-
await tick();
|
|
118
|
-
(0, vitest_1.expect)(lastFrame()).toContain('1 active');
|
|
119
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
|
|
120
|
-
agentId: 'a1',
|
|
121
|
-
reason: 'completed',
|
|
122
|
-
durationMs: 1000,
|
|
123
|
-
});
|
|
124
|
-
await tick();
|
|
125
|
-
(0, vitest_1.expect)(lastFrame()).toContain('0 active');
|
|
126
|
-
});
|
|
127
|
-
(0, vitest_1.it)('should display skill names in StatusBar after SKILL_RECOMMENDED', async () => {
|
|
128
|
-
const eventBus = new events_1.TuiEventBus();
|
|
129
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
130
|
-
eventBus.emit(events_1.TUI_EVENTS.SKILL_RECOMMENDED, {
|
|
131
|
-
skillName: 'brainstorming',
|
|
132
|
-
reason: 'creative work detected',
|
|
133
|
-
});
|
|
134
|
-
await tick();
|
|
135
|
-
(0, vitest_1.expect)(lastFrame()).toContain('brainstorming');
|
|
136
|
-
});
|
|
137
|
-
(0, vitest_1.it)('should handle full workflow: mode change โ agents โ deactivation', async () => {
|
|
138
|
-
const eventBus = new events_1.TuiEventBus();
|
|
139
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
140
|
-
eventBus.emit(events_1.TUI_EVENTS.MODE_CHANGED, { from: null, to: 'PLAN' });
|
|
141
|
-
await tick();
|
|
142
|
-
(0, vitest_1.expect)(lastFrame()).toContain('PLAN');
|
|
143
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
144
|
-
agentId: 'p1',
|
|
145
|
-
name: 'solution-architect',
|
|
146
|
-
role: 'primary',
|
|
147
|
-
isPrimary: true,
|
|
148
|
-
});
|
|
149
|
-
await tick();
|
|
150
|
-
(0, vitest_1.expect)(lastFrame()).toContain('1 active');
|
|
151
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
152
|
-
agentId: 's1',
|
|
153
|
-
name: 'security-specialist',
|
|
154
|
-
role: 'specialist',
|
|
155
|
-
isPrimary: false,
|
|
156
|
-
});
|
|
157
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_ACTIVATED, {
|
|
158
|
-
agentId: 's2',
|
|
159
|
-
name: 'test-strategy-specialist',
|
|
160
|
-
role: 'specialist',
|
|
161
|
-
isPrimary: false,
|
|
162
|
-
});
|
|
163
|
-
await tick();
|
|
164
|
-
(0, vitest_1.expect)(lastFrame()).toContain('3 active');
|
|
165
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
|
|
166
|
-
agentId: 's1',
|
|
167
|
-
reason: 'completed',
|
|
168
|
-
durationMs: 500,
|
|
169
|
-
});
|
|
170
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENT_DEACTIVATED, {
|
|
171
|
-
agentId: 's2',
|
|
172
|
-
reason: 'completed',
|
|
173
|
-
durationMs: 700,
|
|
174
|
-
});
|
|
175
|
-
await tick();
|
|
176
|
-
(0, vitest_1.expect)(lastFrame()).toContain('1 active');
|
|
177
|
-
(0, vitest_1.expect)(lastFrame()).toContain('PLAN');
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
(0, vitest_1.describe)('tui/App responsive layout', () => {
|
|
181
|
-
(0, vitest_1.it)('should render without crash with many agents in single category', async () => {
|
|
182
|
-
const eventBus = new events_1.TuiEventBus();
|
|
183
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
184
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, {
|
|
185
|
-
agents: Array.from({ length: 12 }, (_, i) => ({
|
|
186
|
-
id: `agent-${i}`,
|
|
187
|
-
name: `agent-${i}`,
|
|
188
|
-
description: `Agent ${i}`,
|
|
189
|
-
category: 'Security',
|
|
190
|
-
icon: '๐',
|
|
191
|
-
expertise: ['test'],
|
|
192
|
-
})),
|
|
193
|
-
});
|
|
194
|
-
await tick();
|
|
195
|
-
(0, vitest_1.expect)(lastFrame()).toBeDefined();
|
|
196
|
-
(0, vitest_1.expect)(lastFrame()).toContain('Security');
|
|
197
|
-
});
|
|
198
|
-
(0, vitest_1.it)('should render without crash with many agents across categories', async () => {
|
|
199
|
-
const eventBus = new events_1.TuiEventBus();
|
|
200
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(app_1.App, { eventBus: eventBus }));
|
|
201
|
-
const categories = [
|
|
202
|
-
'Security',
|
|
203
|
-
'Testing',
|
|
204
|
-
'Architecture',
|
|
205
|
-
'Frontend',
|
|
206
|
-
'Backend',
|
|
207
|
-
];
|
|
208
|
-
const agents = categories.flatMap(category => Array.from({ length: 3 }, (_, i) => ({
|
|
209
|
-
id: `${category.toLowerCase()}-${i}`,
|
|
210
|
-
name: `${category.toLowerCase()}-agent-${i}`,
|
|
211
|
-
description: `${category} agent ${i}`,
|
|
212
|
-
category,
|
|
213
|
-
icon: '๐ง',
|
|
214
|
-
expertise: [category.toLowerCase()],
|
|
215
|
-
})));
|
|
216
|
-
eventBus.emit(events_1.TUI_EVENTS.AGENTS_LOADED, { agents });
|
|
217
|
-
await tick();
|
|
218
|
-
const frame = lastFrame() ?? '';
|
|
219
|
-
(0, vitest_1.expect)(frame).toContain('Security');
|
|
220
|
-
(0, vitest_1.expect)(frame).toContain('Testing');
|
|
221
|
-
(0, vitest_1.expect)(frame).toContain('Architecture');
|
|
222
|
-
(0, vitest_1.expect)(frame).toContain('Frontend');
|
|
223
|
-
(0, vitest_1.expect)(frame).toContain('Backend');
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
//# sourceMappingURL=app.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.spec.js","sourceRoot":"","sources":["../../../src/tui/app.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AgentCard = AgentCard;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const ink_1 = require("ink");
|
|
6
|
-
const icons_1 = require("../utils/icons");
|
|
7
|
-
const colors_1 = require("../utils/colors");
|
|
8
|
-
const agent_card_pure_1 = require("./agent-card.pure");
|
|
9
|
-
function AgentCard({ agent }) {
|
|
10
|
-
const icon = (0, icons_1.getAgentIcon)(agent.name);
|
|
11
|
-
const displayIcon = (0, agent_card_pure_1.resolveIcon)(agent.status, icon);
|
|
12
|
-
const progress = (0, agent_card_pure_1.resolveProgress)(agent.status, agent.progress);
|
|
13
|
-
const statusLabel = (0, agent_card_pure_1.buildStatusLabel)(agent.status);
|
|
14
|
-
const line = (0, agent_card_pure_1.buildInlineCard)(displayIcon, agent.name, progress, statusLabel);
|
|
15
|
-
const color = (0, colors_1.getStatusColor)(agent.status);
|
|
16
|
-
return react_1.default.createElement(ink_1.Text, { color: color }, line);
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=AgentCard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCard.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentCard.tsx"],"names":[],"mappings":";;AAWA,8BASC;AApBD,iCAA0B;AAC1B,6BAA2B;AAE3B,0CAA8C;AAC9C,4CAAiD;AACjD,uDAAoG;AAMpG,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAkB;IACjD,MAAM,IAAI,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAA,6BAAW,EAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAA,kCAAgB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAA,iCAAe,EAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,8BAAC,UAAI,IAAC,KAAK,EAAE,KAAK,IAAG,IAAI,CAAQ,CAAC;AAC3C,CAAC"}
|
|
@@ -1,118 +0,0 @@
|
|
|
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 AgentCard_1 = require("./AgentCard");
|
|
7
|
-
const types_1 = require("../types");
|
|
8
|
-
vitest_1.vi.mock('../utils/icons', async (importOriginal) => {
|
|
9
|
-
const actual = await importOriginal();
|
|
10
|
-
return {
|
|
11
|
-
...actual,
|
|
12
|
-
isNerdFontEnabled: () => false,
|
|
13
|
-
};
|
|
14
|
-
});
|
|
15
|
-
(0, vitest_1.describe)('tui/components/AgentCard', () => {
|
|
16
|
-
(0, vitest_1.it)('should render inline format with name, percentage, and status', () => {
|
|
17
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
18
|
-
id: '1',
|
|
19
|
-
name: 'test-agent',
|
|
20
|
-
role: 'specialist',
|
|
21
|
-
status: 'running',
|
|
22
|
-
progress: 50,
|
|
23
|
-
});
|
|
24
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
25
|
-
const output = lastFrame() ?? '';
|
|
26
|
-
(0, vitest_1.expect)(output).toContain('test-agent');
|
|
27
|
-
(0, vitest_1.expect)(output).toContain('50%');
|
|
28
|
-
(0, vitest_1.expect)(output).toContain('Running');
|
|
29
|
-
(0, vitest_1.expect)(output).not.toContain('\u256D');
|
|
30
|
-
(0, vitest_1.expect)(output).not.toContain('\u2570');
|
|
31
|
-
});
|
|
32
|
-
(0, vitest_1.it)('should render agent icon', () => {
|
|
33
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
34
|
-
id: '1',
|
|
35
|
-
name: 'test-strategy-specialist',
|
|
36
|
-
role: 'specialist',
|
|
37
|
-
});
|
|
38
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
39
|
-
(0, vitest_1.expect)(lastFrame()).toContain('[Ts]');
|
|
40
|
-
});
|
|
41
|
-
(0, vitest_1.it)('should render idle state with empty progress bar', () => {
|
|
42
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
43
|
-
id: '1',
|
|
44
|
-
name: 'security-specialist',
|
|
45
|
-
role: 'specialist',
|
|
46
|
-
status: 'idle',
|
|
47
|
-
});
|
|
48
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
49
|
-
const output = lastFrame() ?? '';
|
|
50
|
-
(0, vitest_1.expect)(output).toContain('\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591');
|
|
51
|
-
(0, vitest_1.expect)(output).toContain('Idle');
|
|
52
|
-
(0, vitest_1.expect)(output).toContain('0%');
|
|
53
|
-
});
|
|
54
|
-
(0, vitest_1.it)('should render running state with progress bar and percentage', () => {
|
|
55
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
56
|
-
id: '1',
|
|
57
|
-
name: 'security-specialist',
|
|
58
|
-
role: 'specialist',
|
|
59
|
-
status: 'running',
|
|
60
|
-
progress: 50,
|
|
61
|
-
});
|
|
62
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
63
|
-
const output = lastFrame() ?? '';
|
|
64
|
-
(0, vitest_1.expect)(output).toContain('Running');
|
|
65
|
-
(0, vitest_1.expect)(output).toContain('50%');
|
|
66
|
-
(0, vitest_1.expect)(output).toContain('\u2593');
|
|
67
|
-
});
|
|
68
|
-
(0, vitest_1.it)('should render completed state with full progress bar', () => {
|
|
69
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
70
|
-
id: '1',
|
|
71
|
-
name: 'security-specialist',
|
|
72
|
-
role: 'specialist',
|
|
73
|
-
status: 'completed',
|
|
74
|
-
progress: 60,
|
|
75
|
-
});
|
|
76
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
77
|
-
const output = lastFrame() ?? '';
|
|
78
|
-
(0, vitest_1.expect)(output).toContain('\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593\u2593');
|
|
79
|
-
(0, vitest_1.expect)(output).toContain('Done');
|
|
80
|
-
(0, vitest_1.expect)(output).toContain('100%');
|
|
81
|
-
(0, vitest_1.expect)(output).toContain('\u2713');
|
|
82
|
-
});
|
|
83
|
-
(0, vitest_1.it)('should render failed state', () => {
|
|
84
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
85
|
-
id: '1',
|
|
86
|
-
name: 'security-specialist',
|
|
87
|
-
role: 'specialist',
|
|
88
|
-
status: 'failed',
|
|
89
|
-
progress: 30,
|
|
90
|
-
});
|
|
91
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
92
|
-
const output = lastFrame() ?? '';
|
|
93
|
-
(0, vitest_1.expect)(output).toContain('Failed');
|
|
94
|
-
(0, vitest_1.expect)(output).toContain('\u2717');
|
|
95
|
-
(0, vitest_1.expect)(output).toContain('30%');
|
|
96
|
-
});
|
|
97
|
-
(0, vitest_1.it)('should render default icon for unknown agent name', () => {
|
|
98
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
99
|
-
id: '1',
|
|
100
|
-
name: 'unknown-agent',
|
|
101
|
-
role: 'specialist',
|
|
102
|
-
});
|
|
103
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
104
|
-
(0, vitest_1.expect)(lastFrame()).toContain('[?]');
|
|
105
|
-
});
|
|
106
|
-
(0, vitest_1.it)('should abbreviate long agent names with ellipsis', () => {
|
|
107
|
-
const agent = (0, types_1.createDefaultAgentState)({
|
|
108
|
-
id: '1',
|
|
109
|
-
name: 'a-very-long-agent-name-that-exceeds-column-width',
|
|
110
|
-
role: 'specialist',
|
|
111
|
-
});
|
|
112
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentCard_1.AgentCard, { agent: agent }));
|
|
113
|
-
const frame = lastFrame() ?? '';
|
|
114
|
-
(0, vitest_1.expect)(frame).toContain('\u2026');
|
|
115
|
-
(0, vitest_1.expect)(frame).not.toContain('a-very-long-agent-name-that-exceeds-column-width');
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
//# sourceMappingURL=AgentCard.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCard.spec.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentCard.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { AgentMetadata } from '../events';
|
|
3
|
-
export interface AgentGridProps {
|
|
4
|
-
allAgents: AgentMetadata[];
|
|
5
|
-
activeAgentIds: Set<string>;
|
|
6
|
-
}
|
|
7
|
-
export declare function AgentGrid({ allAgents, activeAgentIds, }: AgentGridProps): React.ReactElement | null;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AgentGrid = AgentGrid;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const ink_1 = require("ink");
|
|
6
|
-
const events_1 = require("../events");
|
|
7
|
-
const CategoryRow_1 = require("./CategoryRow");
|
|
8
|
-
const agent_grid_pure_1 = require("./agent-grid.pure");
|
|
9
|
-
function AgentGrid({ allAgents, activeAgentIds, }) {
|
|
10
|
-
const { sortedCategories, agentsByCategory } = (0, react_1.useMemo)(() => {
|
|
11
|
-
const grouped = (0, agent_grid_pure_1.groupByCategory)(allAgents);
|
|
12
|
-
const categories = Array.from(grouped.keys());
|
|
13
|
-
const sorted = (0, agent_grid_pure_1.sortCategoriesByActivity)(categories, activeAgentIds, grouped);
|
|
14
|
-
return { sortedCategories: sorted, agentsByCategory: grouped };
|
|
15
|
-
}, [allAgents, activeAgentIds]);
|
|
16
|
-
if (allAgents.length === 0)
|
|
17
|
-
return null;
|
|
18
|
-
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" }, sortedCategories.map(category => (react_1.default.createElement(CategoryRow_1.CategoryRow, { key: category, category: category, agents: agentsByCategory.get(category) ?? [], activeAgentIds: activeAgentIds, icon: events_1.AGENT_ICONS[category] })))));
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=AgentGrid.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentGrid.js","sourceRoot":"","sources":["../../../../src/tui/components/AgentGrid.tsx"],"names":[],"mappings":";;AAYA,8BA0BC;AAtCD,iCAAuC;AACvC,6BAA0B;AAE1B,sCAAwC;AACxC,+CAA4C;AAC5C,uDAA8E;AAO9E,SAAgB,SAAS,CAAC,EACxB,SAAS,EACT,cAAc,GACC;IACf,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAA,iCAAe,EAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,0CAAwB,EAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,IACxB,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAChC,8BAAC,yBAAW,IACV,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,oBAAW,CAAC,QAAQ,CAAC,GAC3B,CACH,CAAC,CACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
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 AgentGrid_1 = require("./AgentGrid");
|
|
7
|
-
const mockAgents = [
|
|
8
|
-
{
|
|
9
|
-
id: 'solution-architect',
|
|
10
|
-
name: 'Solution Architect',
|
|
11
|
-
description: 'd',
|
|
12
|
-
category: 'Architecture',
|
|
13
|
-
icon: '๐๏ธ',
|
|
14
|
-
expertise: [],
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
id: 'security-specialist',
|
|
18
|
-
name: 'Security Specialist',
|
|
19
|
-
description: 'd',
|
|
20
|
-
category: 'Security',
|
|
21
|
-
icon: '๐',
|
|
22
|
-
expertise: [],
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
id: 'test-strategy-specialist',
|
|
26
|
-
name: 'Test Strategy',
|
|
27
|
-
description: 'd',
|
|
28
|
-
category: 'Testing',
|
|
29
|
-
icon: '๐งช',
|
|
30
|
-
expertise: [],
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
(0, vitest_1.describe)('AgentGrid', () => {
|
|
34
|
-
(0, vitest_1.it)('should render nothing when no agents', () => {
|
|
35
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentGrid_1.AgentGrid, { allAgents: [], activeAgentIds: new Set() }));
|
|
36
|
-
(0, vitest_1.expect)(lastFrame()).toBe('');
|
|
37
|
-
});
|
|
38
|
-
(0, vitest_1.it)('should render category rows', () => {
|
|
39
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentGrid_1.AgentGrid, { allAgents: mockAgents, activeAgentIds: new Set() }));
|
|
40
|
-
(0, vitest_1.expect)(lastFrame()).toContain('Architecture');
|
|
41
|
-
(0, vitest_1.expect)(lastFrame()).toContain('Security');
|
|
42
|
-
(0, vitest_1.expect)(lastFrame()).toContain('Testing');
|
|
43
|
-
});
|
|
44
|
-
(0, vitest_1.it)('should place active agent categories first', () => {
|
|
45
|
-
const { lastFrame } = (0, ink_testing_library_1.render)(react_1.default.createElement(AgentGrid_1.AgentGrid, { allAgents: mockAgents, activeAgentIds: new Set(['security-specialist']) }));
|
|
46
|
-
const output = lastFrame() ?? '';
|
|
47
|
-
const securityIdx = output.indexOf('Security');
|
|
48
|
-
const archIdx = output.indexOf('Architecture');
|
|
49
|
-
(0, vitest_1.expect)(securityIdx).toBeLessThan(archIdx);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=AgentGrid.spec.js.map
|