@compilr-dev/cli 0.4.0 → 0.5.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 +30 -12
- package/dist/agent.d.ts +74 -1
- package/dist/agent.js +259 -76
- package/dist/anchors/index.d.ts +9 -0
- package/dist/anchors/index.js +9 -0
- package/dist/anchors/project-anchors.d.ts +79 -0
- package/dist/anchors/project-anchors.js +202 -0
- package/dist/commands/handler-types.d.ts +68 -0
- package/dist/commands/handler-types.js +8 -0
- package/dist/commands/handlers/agent-commands.d.ts +13 -0
- package/dist/commands/handlers/agent-commands.js +305 -0
- package/dist/commands/handlers/design-commands.d.ts +15 -0
- package/dist/commands/handlers/design-commands.js +334 -0
- package/dist/commands/handlers/index.d.ts +20 -0
- package/dist/commands/handlers/index.js +43 -0
- package/dist/commands/handlers/overlay-commands.d.ts +21 -0
- package/dist/commands/handlers/overlay-commands.js +287 -0
- package/dist/commands/handlers/project-commands.d.ts +11 -0
- package/dist/commands/handlers/project-commands.js +167 -0
- package/dist/commands/handlers/simple-commands.d.ts +19 -0
- package/dist/commands/handlers/simple-commands.js +144 -0
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/registry.d.ts +50 -0
- package/dist/commands/registry.js +75 -0
- package/dist/commands-v2/handlers/context.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +348 -0
- package/dist/commands-v2/handlers/core.d.ts +13 -0
- package/dist/commands-v2/handlers/core.js +165 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +159 -0
- package/dist/commands-v2/handlers/index.d.ts +12 -0
- package/dist/commands-v2/handlers/index.js +24 -0
- package/dist/commands-v2/handlers/project.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +814 -0
- package/dist/commands-v2/handlers/settings.d.ts +15 -0
- package/dist/commands-v2/handlers/settings.js +235 -0
- package/dist/commands-v2/index.d.ts +13 -0
- package/dist/commands-v2/index.js +15 -0
- package/dist/commands-v2/registry.d.ts +37 -0
- package/dist/commands-v2/registry.js +80 -0
- package/dist/commands-v2/types.d.ts +75 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +110 -7
- package/dist/index.js +288 -29
- package/dist/input-handlers/index.d.ts +7 -0
- package/dist/input-handlers/index.js +7 -0
- package/dist/input-handlers/memory-handler.d.ts +26 -0
- package/dist/input-handlers/memory-handler.js +68 -0
- package/dist/repl-helpers.d.ts +63 -0
- package/dist/repl-helpers.js +318 -0
- package/dist/repl-v2.d.ts +155 -0
- package/dist/repl-v2.js +774 -0
- package/dist/repl.d.ts +32 -4
- package/dist/repl.js +250 -977
- package/dist/settings/index.d.ts +23 -0
- package/dist/settings/index.js +48 -0
- package/dist/settings/paths.d.ts +110 -0
- package/dist/settings/paths.js +264 -0
- package/dist/templates/compilr-md.js +7 -4
- package/dist/templates/index.js +3 -4
- package/dist/themes/colors.js +3 -1
- package/dist/themes/registry.d.ts +5 -36
- package/dist/themes/registry.js +11 -95
- package/dist/themes/types.d.ts +3 -38
- package/dist/themes/types.js +2 -2
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- package/dist/tools/backlog-wrappers.d.ts +54 -0
- package/dist/tools/backlog-wrappers.js +338 -0
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +65 -0
- package/dist/tools/db-tools.js +19 -0
- package/dist/tools/document-db.d.ts +43 -0
- package/dist/tools/document-db.js +220 -0
- package/dist/tools/project-db.d.ts +102 -0
- package/dist/tools/project-db.js +370 -0
- package/dist/tools/workitem-db.d.ts +103 -0
- package/dist/tools/workitem-db.js +549 -0
- package/dist/tools.js +13 -3
- package/dist/ui/agents-overlay-v2.d.ts +43 -0
- package/dist/ui/agents-overlay-v2.js +809 -0
- package/dist/ui/agents-overlay.d.ts +5 -5
- package/dist/ui/agents-overlay.js +782 -420
- package/dist/ui/anchors-overlay.d.ts +12 -0
- package/dist/ui/anchors-overlay.js +775 -0
- package/dist/ui/arch-type-overlay.d.ts +1 -6
- package/dist/ui/arch-type-overlay.js +175 -203
- package/dist/ui/ask-user-overlay-v2.d.ts +26 -0
- package/dist/ui/ask-user-overlay-v2.js +555 -0
- package/dist/ui/ask-user-overlay.d.ts +2 -2
- package/dist/ui/ask-user-overlay.js +443 -535
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +25 -0
- package/dist/ui/ask-user-simple-overlay-v2.js +215 -0
- package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/backlog-overlay.d.ts +16 -1
- package/dist/ui/backlog-overlay.js +525 -659
- package/dist/ui/base/index.d.ts +26 -0
- package/dist/ui/base/index.js +33 -0
- package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
- package/dist/ui/base/inline-overlay-utils.js +320 -0
- package/dist/ui/base/inline-overlay.d.ts +159 -0
- package/dist/ui/base/inline-overlay.js +257 -0
- package/dist/ui/base/key-utils.d.ts +15 -0
- package/dist/ui/base/key-utils.js +30 -0
- package/dist/ui/base/overlay-base-v2.d.ts +193 -0
- package/dist/ui/base/overlay-base-v2.js +246 -0
- package/dist/ui/base/overlay-base.d.ts +156 -0
- package/dist/ui/base/overlay-base.js +238 -0
- package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
- package/dist/ui/base/overlay-lifecycle.js +159 -0
- package/dist/ui/base/overlay-types.d.ts +185 -0
- package/dist/ui/base/overlay-types.js +7 -0
- package/dist/ui/base/render-utils.d.ts +8 -0
- package/dist/ui/base/render-utils.js +11 -0
- package/dist/ui/base/screen-stack.d.ts +148 -0
- package/dist/ui/base/screen-stack.js +184 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +103 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +317 -0
- package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
- package/dist/ui/base/tabbed-list-overlay.js +369 -0
- package/dist/ui/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/commands-overlay-v2.js +441 -0
- package/dist/ui/commands-overlay.d.ts +7 -2
- package/dist/ui/commands-overlay.js +384 -355
- package/dist/ui/config-overlay.d.ts +5 -4
- package/dist/ui/config-overlay.js +243 -513
- package/dist/ui/conversation.d.ts +75 -4
- package/dist/ui/conversation.js +374 -161
- package/dist/ui/docs-overlay.d.ts +17 -0
- package/dist/ui/docs-overlay.js +303 -0
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +1 -1
- package/dist/ui/features/index.d.ts +34 -0
- package/dist/ui/features/index.js +34 -0
- package/dist/ui/features/input-feature.d.ts +85 -0
- package/dist/ui/features/input-feature.js +238 -0
- package/dist/ui/features/list-feature.d.ts +155 -0
- package/dist/ui/features/list-feature.js +244 -0
- package/dist/ui/features/pagination-feature.d.ts +154 -0
- package/dist/ui/features/pagination-feature.js +238 -0
- package/dist/ui/features/search-feature.d.ts +148 -0
- package/dist/ui/features/search-feature.js +185 -0
- package/dist/ui/features/tab-feature.d.ts +194 -0
- package/dist/ui/features/tab-feature.js +307 -0
- package/dist/ui/footer-v2.d.ts +222 -0
- package/dist/ui/footer-v2.js +1349 -0
- package/dist/ui/footer.d.ts +107 -0
- package/dist/ui/footer.js +359 -67
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/help-overlay-v2.d.ts +34 -0
- package/dist/ui/help-overlay-v2.js +309 -0
- package/dist/ui/help-overlay.d.ts +16 -0
- package/dist/ui/help-overlay.js +316 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/init-overlay-v2.d.ts +34 -0
- package/dist/ui/init-overlay-v2.js +600 -0
- package/dist/ui/init-overlay.d.ts +12 -2
- package/dist/ui/init-overlay.js +349 -270
- package/dist/ui/input-prompt-v2.d.ts +1 -0
- package/dist/ui/input-prompt-v2.js +14 -6
- package/dist/ui/input-prompt.d.ts +116 -33
- package/dist/ui/input-prompt.js +536 -337
- package/dist/ui/iteration-limit-overlay-v2.d.ts +21 -0
- package/dist/ui/iteration-limit-overlay-v2.js +114 -0
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/keys-overlay-v2.js +248 -0
- package/dist/ui/keys-overlay.d.ts +1 -0
- package/dist/ui/keys-overlay.js +203 -141
- package/dist/ui/line-utils.d.ts +88 -0
- package/dist/ui/line-utils.js +150 -0
- package/dist/ui/live-region.d.ts +161 -0
- package/dist/ui/live-region.js +387 -0
- package/dist/ui/mascot/expressions.d.ts +32 -0
- package/dist/ui/mascot/expressions.js +213 -0
- package/dist/ui/mascot/index.d.ts +8 -0
- package/dist/ui/mascot/index.js +8 -0
- package/dist/ui/mascot/renderer.d.ts +19 -0
- package/dist/ui/mascot/renderer.js +97 -0
- package/dist/ui/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/mascot-overlay-v2.js +138 -0
- package/dist/ui/mascot-overlay.d.ts +21 -0
- package/dist/ui/mascot-overlay.js +146 -0
- package/dist/ui/model-overlay-v2.d.ts +49 -0
- package/dist/ui/model-overlay-v2.js +118 -0
- package/dist/ui/model-overlay.d.ts +27 -0
- package/dist/ui/model-overlay.js +221 -0
- package/dist/ui/model-warning-overlay.js +3 -5
- package/dist/ui/new-overlay.d.ts +34 -0
- package/dist/ui/new-overlay.js +604 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +825 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +783 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +584 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +642 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +441 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +100 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +654 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +55 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +359 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1071 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +34 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +309 -0
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/init-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +118 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +499 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +218 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +637 -0
- package/dist/ui/overlay/index.d.ts +33 -0
- package/dist/ui/overlay/index.js +35 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/overlay-types.d.ts +128 -0
- package/dist/ui/overlay/overlay-types.js +22 -0
- package/dist/ui/overlay/types.d.ts +135 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlays/help-overlay-v2.d.ts +28 -0
- package/dist/ui/overlays/help-overlay-v2.js +198 -0
- package/dist/ui/overlays/index.d.ts +11 -0
- package/dist/ui/overlays/index.js +11 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +0 -444
- package/dist/ui/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/permission-overlay-v2.js +380 -0
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +186 -298
- package/dist/ui/projects-overlay.d.ts +19 -0
- package/dist/ui/projects-overlay.js +484 -0
- package/dist/ui/providers/types.d.ts +178 -0
- package/dist/ui/providers/types.js +9 -0
- package/dist/ui/render-modes.d.ts +36 -0
- package/dist/ui/render-modes.js +44 -0
- package/dist/ui/startup-menu.d.ts +36 -0
- package/dist/ui/startup-menu.js +236 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +334 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -0
- package/dist/ui/terminal-renderer.d.ts +221 -0
- package/dist/ui/terminal-renderer.js +751 -0
- package/dist/ui/terminal-ui.d.ts +463 -0
- package/dist/ui/terminal-ui.js +2296 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/theme-overlay-v2.js +135 -0
- package/dist/ui/theme-overlay.d.ts +24 -0
- package/dist/ui/theme-overlay.js +127 -0
- package/dist/ui/todo-zone.js +53 -25
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +516 -0
- package/dist/ui/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/tools-overlay-v2.js +218 -0
- package/dist/ui/tools-overlay.d.ts +10 -2
- package/dist/ui/tools-overlay.js +172 -220
- package/dist/ui/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/tutorial-overlay.d.ts +1 -0
- package/dist/ui/tutorial-overlay.js +400 -302
- package/dist/ui/workflow-overlay.d.ts +22 -0
- package/dist/ui/workflow-overlay.js +636 -0
- package/dist/utils/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- package/dist/utils/model-tiers.js +1 -1
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +239 -0
- package/dist/workflow/guided-mode-injector.d.ts +42 -0
- package/dist/workflow/guided-mode-injector.js +191 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/step-criteria.d.ts +62 -0
- package/dist/workflow/step-criteria.js +150 -0
- package/dist/workflow/step-tracker.d.ts +92 -0
- package/dist/workflow/step-tracker.js +141 -0
- package/package.json +12 -5
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings Commands for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Commands for configuration: theme, config, verbose, model, tools, agents
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandHandlerV2 } from '../types.js';
|
|
7
|
+
export declare const themeCommand: CommandHandlerV2;
|
|
8
|
+
export declare const configCommand: CommandHandlerV2;
|
|
9
|
+
export declare const verboseCommand: CommandHandlerV2;
|
|
10
|
+
export declare const modelCommand: CommandHandlerV2;
|
|
11
|
+
export declare const toolsCommand: CommandHandlerV2;
|
|
12
|
+
export declare const keysCommand: CommandHandlerV2;
|
|
13
|
+
export declare const mascotCommand: CommandHandlerV2;
|
|
14
|
+
export declare const agentsCommand: CommandHandlerV2;
|
|
15
|
+
export declare const settingsCommands: CommandHandlerV2[];
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings Commands for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Commands for configuration: theme, config, verbose, model, tools, agents
|
|
5
|
+
*/
|
|
6
|
+
import { ThemeOverlayV2, ModelOverlayV2, ToolsOverlayV2, KeysOverlayV2, MascotOverlayV2, AgentsOverlayV2, ConfigOverlayV2 } from '../../ui/overlay/index.js';
|
|
7
|
+
import { getSetting, getSettings } from '../../settings/index.js';
|
|
8
|
+
import { getToolPermissionInfo } from '../../agent.js';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Theme Command
|
|
11
|
+
// =============================================================================
|
|
12
|
+
export const themeCommand = {
|
|
13
|
+
name: 'theme',
|
|
14
|
+
description: 'Change color theme',
|
|
15
|
+
async execute(_args, ctx) {
|
|
16
|
+
const themeOverlay = new ThemeOverlayV2();
|
|
17
|
+
await ctx.ui.showOverlay(themeOverlay);
|
|
18
|
+
return true;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Config Command
|
|
23
|
+
// =============================================================================
|
|
24
|
+
export const configCommand = {
|
|
25
|
+
name: 'config',
|
|
26
|
+
description: 'Open settings panel',
|
|
27
|
+
async execute(_args, ctx) {
|
|
28
|
+
// Gather current session info
|
|
29
|
+
const currentModel = getSetting('defaultModel') || 'unknown';
|
|
30
|
+
const currentProvider = getSetting('defaultProvider');
|
|
31
|
+
const configOverlay = new ConfigOverlayV2({
|
|
32
|
+
version: ctx.version,
|
|
33
|
+
model: currentModel,
|
|
34
|
+
provider: currentProvider === 'auto' ? 'claude' : currentProvider,
|
|
35
|
+
cwd: process.cwd(),
|
|
36
|
+
toolCount: 13, // TODO: Get actual tool count from context
|
|
37
|
+
startTime: ctx.startTime ?? new Date(),
|
|
38
|
+
inputTokens: ctx.sessionInputTokens ?? 0,
|
|
39
|
+
outputTokens: ctx.sessionOutputTokens ?? 0,
|
|
40
|
+
requests: ctx.sessionRequests ?? 0,
|
|
41
|
+
contextUsed: 0, // TODO: Get from context manager
|
|
42
|
+
contextMax: 200000,
|
|
43
|
+
messageCount: ctx.getHistory?.().length ?? 0,
|
|
44
|
+
});
|
|
45
|
+
const result = await ctx.ui.showOverlay(configOverlay);
|
|
46
|
+
if (result?.settingsChanged) {
|
|
47
|
+
ctx.ui.print({ type: 'info', message: 'Settings updated' });
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Verbose Command
|
|
54
|
+
// =============================================================================
|
|
55
|
+
export const verboseCommand = {
|
|
56
|
+
name: 'verbose',
|
|
57
|
+
description: 'Toggle verbose mode',
|
|
58
|
+
execute(_args, ctx) {
|
|
59
|
+
const config = ctx.ui.getConfig();
|
|
60
|
+
const newVerbose = !config.verbose;
|
|
61
|
+
ctx.ui.setConfig({ verbose: newVerbose });
|
|
62
|
+
ctx.ui.print({
|
|
63
|
+
type: 'info',
|
|
64
|
+
message: `Verbose mode: ${newVerbose ? 'ON' : 'OFF'}`,
|
|
65
|
+
});
|
|
66
|
+
return Promise.resolve(true);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Model Command
|
|
71
|
+
// =============================================================================
|
|
72
|
+
export const modelCommand = {
|
|
73
|
+
name: 'model',
|
|
74
|
+
description: 'Change AI model',
|
|
75
|
+
async execute(_args, ctx) {
|
|
76
|
+
const currentModel = getSetting('defaultModel') ?? undefined;
|
|
77
|
+
const currentProvider = getSetting('defaultProvider');
|
|
78
|
+
const modelOverlay = new ModelOverlayV2({
|
|
79
|
+
currentModel: currentModel ?? undefined,
|
|
80
|
+
currentProvider: currentProvider === 'auto' ? undefined : currentProvider,
|
|
81
|
+
});
|
|
82
|
+
const result = await ctx.ui.showOverlay(modelOverlay);
|
|
83
|
+
if (result?.modelChanged) {
|
|
84
|
+
if (result.requiresRestart) {
|
|
85
|
+
ctx.ui.print({
|
|
86
|
+
type: 'warning',
|
|
87
|
+
message: `Switched to ${result.provider ?? 'unknown'} provider. Restart required.`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
ctx.ui.print({
|
|
92
|
+
type: 'success',
|
|
93
|
+
message: `Model changed to ${result.modelChanged}`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
// =============================================================================
|
|
101
|
+
// Tools Command
|
|
102
|
+
// =============================================================================
|
|
103
|
+
export const toolsCommand = {
|
|
104
|
+
name: 'tools',
|
|
105
|
+
description: 'Show available tools',
|
|
106
|
+
async execute(_args, ctx) {
|
|
107
|
+
// Get tools from agent if available, otherwise use fallback list
|
|
108
|
+
const tools = ctx.agent ? getAgentTools(ctx) : getDefaultTools();
|
|
109
|
+
const toolsOverlay = new ToolsOverlayV2({ tools });
|
|
110
|
+
await ctx.ui.showOverlay(toolsOverlay);
|
|
111
|
+
return true;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Get tool definitions from the agent with full parameter and permission info.
|
|
116
|
+
*/
|
|
117
|
+
function getAgentTools(ctx) {
|
|
118
|
+
if (!ctx.agent)
|
|
119
|
+
return getDefaultTools();
|
|
120
|
+
return ctx.agent.getToolDefinitions().map((t) => {
|
|
121
|
+
// Extract parameters from inputSchema
|
|
122
|
+
const parameters = [];
|
|
123
|
+
const props = t.inputSchema.properties;
|
|
124
|
+
const required = t.inputSchema.required ?? [];
|
|
125
|
+
for (const [name, schema] of Object.entries(props)) {
|
|
126
|
+
parameters.push({
|
|
127
|
+
name,
|
|
128
|
+
type: schema.type ?? 'unknown',
|
|
129
|
+
description: schema.description,
|
|
130
|
+
required: required.includes(name),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Look up permission info
|
|
134
|
+
const permissionInfo = getToolPermissionInfo(t.name);
|
|
135
|
+
const permission = permissionInfo
|
|
136
|
+
? { level: permissionInfo.level, description: permissionInfo.description }
|
|
137
|
+
: undefined;
|
|
138
|
+
// For task tool, extract just the intro (before verbose agent types list)
|
|
139
|
+
let description = t.description;
|
|
140
|
+
if (t.name === 'task' && description.includes('Available agent types:')) {
|
|
141
|
+
description = description.split('Available agent types:')[0].trim();
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
name: t.name,
|
|
145
|
+
description,
|
|
146
|
+
parameters,
|
|
147
|
+
permission,
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Fallback tool definitions when agent is not available.
|
|
153
|
+
*/
|
|
154
|
+
function getDefaultTools() {
|
|
155
|
+
return [
|
|
156
|
+
{ name: 'read_file', description: 'Read contents of a file' },
|
|
157
|
+
{ name: 'write_file', description: 'Write contents to a file' },
|
|
158
|
+
{ name: 'edit', description: 'Edit a file with find/replace' },
|
|
159
|
+
{ name: 'glob', description: 'Find files matching a pattern' },
|
|
160
|
+
{ name: 'grep', description: 'Search for text in files' },
|
|
161
|
+
{ name: 'bash', description: 'Execute a bash command' },
|
|
162
|
+
{ name: 'task', description: 'Spawn a sub-agent for complex tasks' },
|
|
163
|
+
{ name: 'todoWrite', description: 'Write items to the todo list' },
|
|
164
|
+
{ name: 'todoRead', description: 'Read the current todo list' },
|
|
165
|
+
{ name: 'suggest', description: 'Suggest text for the input prompt' },
|
|
166
|
+
{ name: 'webFetch', description: 'Fetch content from a URL' },
|
|
167
|
+
{ name: 'askUser', description: 'Ask the user a question' },
|
|
168
|
+
{ name: 'askUserSimple', description: 'Ask the user a simple question' },
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// Keys Command
|
|
173
|
+
// =============================================================================
|
|
174
|
+
export const keysCommand = {
|
|
175
|
+
name: 'keys',
|
|
176
|
+
description: 'Manage API keys',
|
|
177
|
+
async execute(_args, ctx) {
|
|
178
|
+
const keysOverlay = new KeysOverlayV2();
|
|
179
|
+
const result = await ctx.ui.showOverlay(keysOverlay);
|
|
180
|
+
if (result?.changed) {
|
|
181
|
+
ctx.ui.print({ type: 'success', message: 'API keys updated' });
|
|
182
|
+
}
|
|
183
|
+
return true;
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
// =============================================================================
|
|
187
|
+
// Mascot Command
|
|
188
|
+
// =============================================================================
|
|
189
|
+
export const mascotCommand = {
|
|
190
|
+
name: 'mascot',
|
|
191
|
+
description: 'Select mascot expression',
|
|
192
|
+
async execute(_args, ctx) {
|
|
193
|
+
const currentMascot = getSettings().mascot;
|
|
194
|
+
const mascotOverlay = new MascotOverlayV2({ currentMascot });
|
|
195
|
+
const result = await ctx.ui.showOverlay(mascotOverlay);
|
|
196
|
+
if (result?.mascotChanged) {
|
|
197
|
+
ctx.ui.print({ type: 'success', message: `Mascot changed to: ${result.mascotChanged}` });
|
|
198
|
+
}
|
|
199
|
+
return true;
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
// =============================================================================
|
|
203
|
+
// Agents Command
|
|
204
|
+
// =============================================================================
|
|
205
|
+
export const agentsCommand = {
|
|
206
|
+
name: 'agents',
|
|
207
|
+
description: 'View and manage agents',
|
|
208
|
+
async execute(_args, ctx) {
|
|
209
|
+
const agentsOverlay = new AgentsOverlayV2();
|
|
210
|
+
const result = await ctx.ui.showOverlay(agentsOverlay);
|
|
211
|
+
if (result?.created) {
|
|
212
|
+
ctx.ui.print({ type: 'success', message: `Agent created: ${result.created}` });
|
|
213
|
+
}
|
|
214
|
+
else if (result?.edited) {
|
|
215
|
+
ctx.ui.print({ type: 'success', message: `Agent updated: ${result.edited}` });
|
|
216
|
+
}
|
|
217
|
+
else if (result?.deleted) {
|
|
218
|
+
ctx.ui.print({ type: 'info', message: `Agent deleted: ${result.deleted}` });
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
// =============================================================================
|
|
224
|
+
// Export All Settings Commands
|
|
225
|
+
// =============================================================================
|
|
226
|
+
export const settingsCommands = [
|
|
227
|
+
themeCommand,
|
|
228
|
+
configCommand,
|
|
229
|
+
verboseCommand,
|
|
230
|
+
modelCommand,
|
|
231
|
+
toolsCommand,
|
|
232
|
+
keysCommand,
|
|
233
|
+
mascotCommand,
|
|
234
|
+
agentsCommand,
|
|
235
|
+
];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commands V2 Module
|
|
3
|
+
*
|
|
4
|
+
* Command system for the new TerminalUI-based REPL.
|
|
5
|
+
*/
|
|
6
|
+
export type { CommandContextV2, CommandHandlerV2, CommandResultV2 } from './types.js';
|
|
7
|
+
export { registerCommand, registerCommands, getCommand, executeCommand, getCommandNames, hasCommand, clearCommands, } from './registry.js';
|
|
8
|
+
export { allCommands } from './handlers/index.js';
|
|
9
|
+
export { coreCommands } from './handlers/core.js';
|
|
10
|
+
export { settingsCommands } from './handlers/settings.js';
|
|
11
|
+
export { contextCommands } from './handlers/context.js';
|
|
12
|
+
export { projectCommands } from './handlers/project.js';
|
|
13
|
+
export { debugCommands } from './handlers/debug.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commands V2 Module
|
|
3
|
+
*
|
|
4
|
+
* Command system for the new TerminalUI-based REPL.
|
|
5
|
+
*/
|
|
6
|
+
// Registry
|
|
7
|
+
export { registerCommand, registerCommands, getCommand, executeCommand, getCommandNames, hasCommand, clearCommands, } from './registry.js';
|
|
8
|
+
// All handlers
|
|
9
|
+
export { allCommands } from './handlers/index.js';
|
|
10
|
+
// Individual handler modules (for selective imports)
|
|
11
|
+
export { coreCommands } from './handlers/core.js';
|
|
12
|
+
export { settingsCommands } from './handlers/settings.js';
|
|
13
|
+
export { contextCommands } from './handlers/context.js';
|
|
14
|
+
export { projectCommands } from './handlers/project.js';
|
|
15
|
+
export { debugCommands } from './handlers/debug.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Registry for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all V2 command handlers.
|
|
5
|
+
* Handles command resolution (including aliases) and execution.
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandHandlerV2, CommandContextV2, CommandResultV2 } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Register a command handler.
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerCommand(handler: CommandHandlerV2): void;
|
|
12
|
+
/**
|
|
13
|
+
* Register multiple command handlers.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerCommands(handlerList: CommandHandlerV2[]): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get a command handler by name or alias.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getCommand(nameOrAlias: string): CommandHandlerV2 | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Execute a command by name or alias.
|
|
22
|
+
*
|
|
23
|
+
* @returns true to continue, false to exit, null if command not found
|
|
24
|
+
*/
|
|
25
|
+
export declare function executeCommand(nameOrAlias: string, args: string, ctx: CommandContextV2): Promise<CommandResultV2>;
|
|
26
|
+
/**
|
|
27
|
+
* Get all registered command names (excluding aliases).
|
|
28
|
+
*/
|
|
29
|
+
export declare function getCommandNames(): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Check if a command exists (by name or alias).
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasCommand(nameOrAlias: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Clear all registered commands (for testing).
|
|
36
|
+
*/
|
|
37
|
+
export declare function clearCommands(): void;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Registry for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all V2 command handlers.
|
|
5
|
+
* Handles command resolution (including aliases) and execution.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Registry State
|
|
9
|
+
// =============================================================================
|
|
10
|
+
const handlers = new Map();
|
|
11
|
+
const aliasMap = new Map();
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Registry Functions
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Register a command handler.
|
|
17
|
+
*/
|
|
18
|
+
export function registerCommand(handler) {
|
|
19
|
+
handlers.set(handler.name, handler);
|
|
20
|
+
// Register aliases
|
|
21
|
+
if (handler.aliases) {
|
|
22
|
+
for (const alias of handler.aliases) {
|
|
23
|
+
aliasMap.set(alias, handler.name);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Register multiple command handlers.
|
|
29
|
+
*/
|
|
30
|
+
export function registerCommands(handlerList) {
|
|
31
|
+
for (const handler of handlerList) {
|
|
32
|
+
registerCommand(handler);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get a command handler by name or alias.
|
|
37
|
+
*/
|
|
38
|
+
export function getCommand(nameOrAlias) {
|
|
39
|
+
// Try direct lookup first
|
|
40
|
+
const handler = handlers.get(nameOrAlias);
|
|
41
|
+
if (handler)
|
|
42
|
+
return handler;
|
|
43
|
+
// Try alias lookup
|
|
44
|
+
const resolvedName = aliasMap.get(nameOrAlias);
|
|
45
|
+
if (resolvedName) {
|
|
46
|
+
return handlers.get(resolvedName);
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Execute a command by name or alias.
|
|
52
|
+
*
|
|
53
|
+
* @returns true to continue, false to exit, null if command not found
|
|
54
|
+
*/
|
|
55
|
+
export async function executeCommand(nameOrAlias, args, ctx) {
|
|
56
|
+
const handler = getCommand(nameOrAlias);
|
|
57
|
+
if (!handler) {
|
|
58
|
+
return null; // Command not found
|
|
59
|
+
}
|
|
60
|
+
return handler.execute(args, ctx);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all registered command names (excluding aliases).
|
|
64
|
+
*/
|
|
65
|
+
export function getCommandNames() {
|
|
66
|
+
return Array.from(handlers.keys());
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if a command exists (by name or alias).
|
|
70
|
+
*/
|
|
71
|
+
export function hasCommand(nameOrAlias) {
|
|
72
|
+
return handlers.has(nameOrAlias) || aliasMap.has(nameOrAlias);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Clear all registered commands (for testing).
|
|
76
|
+
*/
|
|
77
|
+
export function clearCommands() {
|
|
78
|
+
handlers.clear();
|
|
79
|
+
aliasMap.clear();
|
|
80
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Handler Types for REPL V2
|
|
3
|
+
*
|
|
4
|
+
* Command system for the new TerminalUI-based REPL.
|
|
5
|
+
* Uses TerminalUI instead of Footer, with real agent integration.
|
|
6
|
+
*/
|
|
7
|
+
import type { Agent, ContextManager } from '@compilr-dev/agents';
|
|
8
|
+
import type { TerminalUI, AgentMessage } from '../ui/terminal-ui.js';
|
|
9
|
+
/**
|
|
10
|
+
* Context passed to V2 command handlers.
|
|
11
|
+
* Provides access to agent, UI, and session information.
|
|
12
|
+
*/
|
|
13
|
+
export interface CommandContextV2 {
|
|
14
|
+
/** TerminalUI instance for output and overlays */
|
|
15
|
+
ui: TerminalUI;
|
|
16
|
+
/** CLI version string */
|
|
17
|
+
version: string;
|
|
18
|
+
/** Re-print the welcome screen (logo + hints for REPL mode) */
|
|
19
|
+
printWelcome: () => void;
|
|
20
|
+
/** Print just the logo (for dashboard mode) */
|
|
21
|
+
printLogo: () => void;
|
|
22
|
+
/** The main agent instance (may be undefined in simulation mode) */
|
|
23
|
+
agent?: Agent;
|
|
24
|
+
/** Current LLM model ID */
|
|
25
|
+
model?: string;
|
|
26
|
+
/** Current LLM provider (claude, openai, gemini, ollama) */
|
|
27
|
+
provider?: string;
|
|
28
|
+
/** Get the context manager from agent (for token/context stats) */
|
|
29
|
+
getContextManager?: () => ContextManager | null;
|
|
30
|
+
/** Get conversation history from agent */
|
|
31
|
+
getHistory?: () => Array<{
|
|
32
|
+
role: string;
|
|
33
|
+
content: unknown;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Queue a message to be sent to the agent after the command returns.
|
|
37
|
+
* The displayMessage (if provided) is shown to the user, while the
|
|
38
|
+
* full message is sent to the agent.
|
|
39
|
+
*/
|
|
40
|
+
queueAgentMessage: (options: AgentMessage) => void;
|
|
41
|
+
/** Session start time */
|
|
42
|
+
startTime?: Date;
|
|
43
|
+
/** Total input tokens used in session */
|
|
44
|
+
sessionInputTokens?: number;
|
|
45
|
+
/** Total output tokens used in session */
|
|
46
|
+
sessionOutputTokens?: number;
|
|
47
|
+
/** Total requests in session */
|
|
48
|
+
sessionRequests?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Interface for a V2 command handler.
|
|
52
|
+
*/
|
|
53
|
+
export interface CommandHandlerV2 {
|
|
54
|
+
/** Primary command name (without leading slash) */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Optional aliases that resolve to this command */
|
|
57
|
+
aliases?: string[];
|
|
58
|
+
/** Short description for help text */
|
|
59
|
+
description: string;
|
|
60
|
+
/**
|
|
61
|
+
* Execute the command.
|
|
62
|
+
*
|
|
63
|
+
* @param args - Arguments passed after the command
|
|
64
|
+
* @param ctx - Command context with dependencies
|
|
65
|
+
* @returns true to continue REPL, false to exit
|
|
66
|
+
*/
|
|
67
|
+
execute(args: string, ctx: CommandContextV2): Promise<boolean>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result of executing a command.
|
|
71
|
+
* - true: Command handled successfully, continue REPL
|
|
72
|
+
* - false: Exit REPL (e.g., /exit command)
|
|
73
|
+
* - null: Command not found in registry
|
|
74
|
+
*/
|
|
75
|
+
export type CommandResultV2 = boolean | null;
|
package/dist/commands.js
CHANGED
|
@@ -21,6 +21,20 @@ export const COMMANDS = [
|
|
|
21
21
|
'Esc to close',
|
|
22
22
|
],
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
name: 'anchors',
|
|
26
|
+
description: 'View and manage anchors (persistent context)',
|
|
27
|
+
details: 'Anchors are critical pieces of information that survive context compaction. They are always included at the top of the context window. Manage both global anchors and project-specific anchors.',
|
|
28
|
+
examples: [{ code: '/anchors' }],
|
|
29
|
+
interactions: [
|
|
30
|
+
'↑/↓ to navigate anchors',
|
|
31
|
+
'[a] Add new anchor',
|
|
32
|
+
'[e] or Enter to edit',
|
|
33
|
+
'[d] to delete',
|
|
34
|
+
'[r] to refresh',
|
|
35
|
+
'Esc to close',
|
|
36
|
+
],
|
|
37
|
+
},
|
|
24
38
|
{
|
|
25
39
|
name: 'arch',
|
|
26
40
|
description: 'Create architecture documentation (ADRs, diagrams, etc.)',
|
|
@@ -103,9 +117,23 @@ export const COMMANDS = [
|
|
|
103
117
|
{
|
|
104
118
|
name: 'design',
|
|
105
119
|
description: 'Design your project and populate the backlog',
|
|
106
|
-
details: 'Comprehensive requirements gathering workflow. The agent guides you through vision, features, and technical context phases, then creates a PRD and populates the backlog with 5-15 items. Best used after /
|
|
120
|
+
details: 'Comprehensive requirements gathering workflow. The agent guides you through vision, features, and technical context phases, then creates a PRD and populates the backlog with 5-15 items. Best used after /new.',
|
|
107
121
|
examples: [{ code: '/design' }],
|
|
108
122
|
},
|
|
123
|
+
{
|
|
124
|
+
name: 'docs',
|
|
125
|
+
description: 'View project documents (PRD, architecture, etc.)',
|
|
126
|
+
details: 'Opens an overlay to browse and read documents stored in the database for the active project. Documents are created by /design, /arch, and other workflow commands.',
|
|
127
|
+
examples: [
|
|
128
|
+
{ code: '/docs', description: 'List all documents' },
|
|
129
|
+
],
|
|
130
|
+
interactions: [
|
|
131
|
+
'↑/↓ or j/k to navigate',
|
|
132
|
+
'Enter to view document',
|
|
133
|
+
'↑/↓ to scroll content',
|
|
134
|
+
'Esc to go back or close',
|
|
135
|
+
],
|
|
136
|
+
},
|
|
109
137
|
{
|
|
110
138
|
name: 'exit',
|
|
111
139
|
description: 'Exit the REPL',
|
|
@@ -152,21 +180,57 @@ export const COMMANDS = [
|
|
|
152
180
|
],
|
|
153
181
|
},
|
|
154
182
|
{
|
|
155
|
-
name: '
|
|
156
|
-
description: '
|
|
183
|
+
name: 'menu',
|
|
184
|
+
description: 'Return to Project Dashboard',
|
|
185
|
+
details: 'Opens the Project Dashboard where you can see current project info, switch projects, or start new work. From the dashboard you can create new projects, open existing ones, or start Quick Chat mode.',
|
|
186
|
+
examples: [{ code: '/menu' }],
|
|
187
|
+
interactions: [
|
|
188
|
+
'↑/↓ or j/k to navigate',
|
|
189
|
+
'←/→ or h/l to switch tabs (Dashboard ↔ More)',
|
|
190
|
+
'Enter to select, q/Esc to exit',
|
|
191
|
+
'n for /new, p for projects, c for chat, w for workflow',
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'new',
|
|
196
|
+
description: 'Create a new project with structured workflow',
|
|
157
197
|
details: 'Interactive wizard to scaffold a new project. Asks about project name, type, tech stack, and documentation preferences. Creates project structure with COMPILR.md, backlog, and optional separate docs repo.',
|
|
158
|
-
examples: [{ code: '/
|
|
198
|
+
examples: [{ code: '/new' }],
|
|
159
199
|
interactions: [
|
|
160
200
|
'8-step wizard (0-7)',
|
|
161
201
|
'↑/↓ for selection steps, type for input steps',
|
|
162
202
|
'Enter to confirm, Esc to go back',
|
|
163
203
|
],
|
|
164
204
|
},
|
|
205
|
+
{
|
|
206
|
+
name: 'init',
|
|
207
|
+
description: 'View CLI setup status (placeholder)',
|
|
208
|
+
details: 'Shows current CLI configuration status including API keys, provider settings, and startup preferences. Directs users to /config, /keys, and other commands for configuration. Full setup wizard coming in a future release.',
|
|
209
|
+
examples: [{ code: '/init' }],
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'mascot',
|
|
213
|
+
description: 'Select mascot expression',
|
|
214
|
+
details: 'Opens the mascot selector overlay. Choose the mascot expression shown in the CLI. Options include various expressions, random (changes each startup), or none.',
|
|
215
|
+
examples: [{ code: '/mascot' }],
|
|
216
|
+
interactions: [
|
|
217
|
+
'↑/↓ or j/k to navigate options',
|
|
218
|
+
'Enter/Space to select mascot',
|
|
219
|
+
'q/Esc to close without changing',
|
|
220
|
+
],
|
|
221
|
+
},
|
|
165
222
|
{
|
|
166
223
|
name: 'model',
|
|
167
|
-
description: '
|
|
168
|
-
details: '
|
|
224
|
+
description: 'Select LLM model',
|
|
225
|
+
details: 'Opens the model selector overlay. Choose from Claude, OpenAI, Gemini, or Ollama models. Changes within the same provider apply immediately; switching providers requires restart.',
|
|
169
226
|
examples: [{ code: '/model' }],
|
|
227
|
+
interactions: [
|
|
228
|
+
'Tab/Shift+Tab to switch providers',
|
|
229
|
+
'1-4 for quick provider selection',
|
|
230
|
+
'↑/↓ or j/k to navigate models',
|
|
231
|
+
'Enter to select model',
|
|
232
|
+
'Esc to close',
|
|
233
|
+
],
|
|
170
234
|
},
|
|
171
235
|
{
|
|
172
236
|
name: 'note',
|
|
@@ -193,6 +257,21 @@ export const COMMANDS = [
|
|
|
193
257
|
{ code: '/prd scope', description: 'Update scope section' },
|
|
194
258
|
],
|
|
195
259
|
},
|
|
260
|
+
{
|
|
261
|
+
name: 'projects',
|
|
262
|
+
description: 'View and manage projects',
|
|
263
|
+
details: 'Opens an interactive overlay to browse, filter, and manage projects tracked in the database. You can view details, open projects, archive, restore, or delete them.',
|
|
264
|
+
examples: [{ code: '/projects' }],
|
|
265
|
+
interactions: [
|
|
266
|
+
'Tab cycles: All → Active → Paused → Completed → Archived',
|
|
267
|
+
'↑/↓ or j/k to navigate',
|
|
268
|
+
'Enter to view details and actions',
|
|
269
|
+
'x to archive/restore project',
|
|
270
|
+
'd to delete project',
|
|
271
|
+
'a to show/hide archived',
|
|
272
|
+
'Esc to close',
|
|
273
|
+
],
|
|
274
|
+
},
|
|
196
275
|
{
|
|
197
276
|
name: 'refine',
|
|
198
277
|
description: 'Refine and expand existing requirements',
|
|
@@ -220,6 +299,19 @@ export const COMMANDS = [
|
|
|
220
299
|
details: 'Displays current session status including CLI version, active model, mode, and context usage.',
|
|
221
300
|
examples: [{ code: '/status' }],
|
|
222
301
|
},
|
|
302
|
+
{
|
|
303
|
+
name: 'theme',
|
|
304
|
+
description: 'Select UI theme',
|
|
305
|
+
details: 'Opens the theme selector overlay. Browse themes with tabs for Curated, All, Dark, and Light. Themes are terminal color schemes that change the UI appearance.',
|
|
306
|
+
examples: [{ code: '/theme' }],
|
|
307
|
+
interactions: [
|
|
308
|
+
'Tab cycles: Curated → All → Dark → Light',
|
|
309
|
+
'↑/↓ or j/k to navigate, ←/→ for pages',
|
|
310
|
+
'/ to search themes by name',
|
|
311
|
+
'1-9,0 for quick selection (Curated tab)',
|
|
312
|
+
'Enter/Space to select, q/Esc to close',
|
|
313
|
+
],
|
|
314
|
+
},
|
|
223
315
|
{
|
|
224
316
|
name: 'todos',
|
|
225
317
|
description: 'List current todo items',
|
|
@@ -238,10 +330,21 @@ export const COMMANDS = [
|
|
|
238
330
|
details: 'Shows all tools available to the agent including file operations, bash, git, and custom tools.',
|
|
239
331
|
examples: [{ code: '/tools' }],
|
|
240
332
|
},
|
|
333
|
+
{
|
|
334
|
+
name: 'workflow',
|
|
335
|
+
description: 'Show workflow status and next steps',
|
|
336
|
+
details: 'Displays the current project workflow status, progress through phases (init → design → backlog → scaffold → build), and recommended next actions. Helps you understand where you are in the development process.',
|
|
337
|
+
examples: [{ code: '/workflow' }],
|
|
338
|
+
interactions: [
|
|
339
|
+
'↑/↓ to navigate actions',
|
|
340
|
+
'Enter to run selected action',
|
|
341
|
+
'Esc to close',
|
|
342
|
+
],
|
|
343
|
+
},
|
|
241
344
|
{
|
|
242
345
|
name: 'tutorial',
|
|
243
346
|
description: 'Interactive tutorial for the workflow',
|
|
244
|
-
details: 'Opens an interactive tutorial that guides you through the compilr.dev workflow. Choose a guided tour to learn everything step-by-step, or jump directly to specific topics like /
|
|
347
|
+
details: 'Opens an interactive tutorial that guides you through the compilr.dev workflow. Choose a guided tour to learn everything step-by-step, or jump directly to specific topics like /new, /design, or /build.',
|
|
245
348
|
examples: [{ code: '/tutorial' }],
|
|
246
349
|
interactions: [
|
|
247
350
|
'↑/↓ to navigate options and topics',
|