@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,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Overlay Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands that primarily show overlays without complex logic:
|
|
5
|
+
* - agents, anchors, backlog, commands, docs, help, keys, tutorial
|
|
6
|
+
*/
|
|
7
|
+
import * as conversation from '../../ui/conversation.js';
|
|
8
|
+
import * as overlays from '../../ui/overlays.js';
|
|
9
|
+
import { showAgentsOverlay } from '../../ui/agents-overlay.js';
|
|
10
|
+
import { showAnchorsOverlay } from '../../ui/anchors-overlay.js';
|
|
11
|
+
import { showBacklogOverlay } from '../../ui/backlog-overlay.js';
|
|
12
|
+
import { showCommandsOverlay } from '../../ui/commands-overlay.js';
|
|
13
|
+
import { showDocsOverlay } from '../../ui/docs-overlay.js';
|
|
14
|
+
import { showKeysOverlay } from '../../ui/keys-overlay.js';
|
|
15
|
+
import { showTutorialOverlay } from '../../ui/tutorial-overlay.js';
|
|
16
|
+
import { showThemeOverlay } from '../../ui/theme-overlay.js';
|
|
17
|
+
import { showModelOverlay } from '../../ui/model-overlay.js';
|
|
18
|
+
import { showMascotOverlay } from '../../ui/mascot-overlay.js';
|
|
19
|
+
import { showConfigOverlay } from '../../ui/config-overlay.js';
|
|
20
|
+
import { debugLog } from '../../utils/debug-log.js';
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Agents Command
|
|
23
|
+
// =============================================================================
|
|
24
|
+
export const agentsCommand = {
|
|
25
|
+
name: 'agents',
|
|
26
|
+
description: 'View available sub-agent types',
|
|
27
|
+
async execute(_args, _ctx) {
|
|
28
|
+
await showAgentsOverlay();
|
|
29
|
+
return true;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// Anchors Command
|
|
34
|
+
// =============================================================================
|
|
35
|
+
export const anchorsCommand = {
|
|
36
|
+
name: 'anchors',
|
|
37
|
+
description: 'View and manage context anchors',
|
|
38
|
+
async execute(_args, _ctx) {
|
|
39
|
+
await showAnchorsOverlay();
|
|
40
|
+
return true;
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// Backlog Command
|
|
45
|
+
// =============================================================================
|
|
46
|
+
export const backlogCommand = {
|
|
47
|
+
name: 'backlog',
|
|
48
|
+
description: 'View and manage the project backlog',
|
|
49
|
+
async execute(_args, _ctx) {
|
|
50
|
+
const result = await showBacklogOverlay();
|
|
51
|
+
if (result.modified) {
|
|
52
|
+
conversation.printSuccess('Backlog updated.');
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Commands Command
|
|
59
|
+
// =============================================================================
|
|
60
|
+
export const commandsCommand = {
|
|
61
|
+
name: 'commands',
|
|
62
|
+
description: 'View custom commands',
|
|
63
|
+
async execute(_args, _ctx) {
|
|
64
|
+
await showCommandsOverlay();
|
|
65
|
+
return true;
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
// =============================================================================
|
|
69
|
+
// Docs Command
|
|
70
|
+
// =============================================================================
|
|
71
|
+
export const docsCommand = {
|
|
72
|
+
name: 'docs',
|
|
73
|
+
description: 'View project documentation',
|
|
74
|
+
async execute(_args, _ctx) {
|
|
75
|
+
await showDocsOverlay();
|
|
76
|
+
return true;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Help Command
|
|
81
|
+
// =============================================================================
|
|
82
|
+
export const helpCommand = {
|
|
83
|
+
name: 'help',
|
|
84
|
+
aliases: ['?'],
|
|
85
|
+
description: 'Show available commands and help',
|
|
86
|
+
async execute(_args, _ctx) {
|
|
87
|
+
await overlays.showHelp();
|
|
88
|
+
return true;
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
// =============================================================================
|
|
92
|
+
// Keys Command
|
|
93
|
+
// =============================================================================
|
|
94
|
+
export const keysCommand = {
|
|
95
|
+
name: 'keys',
|
|
96
|
+
description: 'Manage API keys',
|
|
97
|
+
async execute(_args, _ctx) {
|
|
98
|
+
debugLog('REPL:keys', 'calling showKeysOverlay');
|
|
99
|
+
const result = await showKeysOverlay();
|
|
100
|
+
debugLog('REPL:keys', 'showKeysOverlay returned');
|
|
101
|
+
if (result.changed) {
|
|
102
|
+
conversation.printSuccess('API keys updated.');
|
|
103
|
+
conversation.printInfo('Restart the CLI to use the new keys.');
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
// =============================================================================
|
|
109
|
+
// Tutorial Command
|
|
110
|
+
// =============================================================================
|
|
111
|
+
export const tutorialCommand = {
|
|
112
|
+
name: 'tutorial',
|
|
113
|
+
description: 'Interactive tutorial',
|
|
114
|
+
async execute(_args, _ctx) {
|
|
115
|
+
await showTutorialOverlay();
|
|
116
|
+
return true;
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
// =============================================================================
|
|
120
|
+
// Tools Command
|
|
121
|
+
// =============================================================================
|
|
122
|
+
export const toolsCommand = {
|
|
123
|
+
name: 'tools',
|
|
124
|
+
description: 'View available tools',
|
|
125
|
+
async execute(_args, ctx) {
|
|
126
|
+
await ctx.showTools();
|
|
127
|
+
return true;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
// =============================================================================
|
|
131
|
+
// Theme Command
|
|
132
|
+
// =============================================================================
|
|
133
|
+
export const themeCommand = {
|
|
134
|
+
name: 'theme',
|
|
135
|
+
description: 'Change the color theme',
|
|
136
|
+
async execute(_args, ctx) {
|
|
137
|
+
// Result may be undefined if user cancelled with Esc (base overlay casts undefined to TResult)
|
|
138
|
+
const themeResult = await showThemeOverlay();
|
|
139
|
+
// Theme is already persisted by the overlay
|
|
140
|
+
if (themeResult?.themeChanged) {
|
|
141
|
+
ctx.footer.clearForOutput();
|
|
142
|
+
conversation.printSuccess(`Theme changed to: ${themeResult.themeName ?? themeResult.themeChanged}`);
|
|
143
|
+
ctx.footer.refreshPrompt();
|
|
144
|
+
ctx.footer.forceRender();
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
// =============================================================================
|
|
150
|
+
// Model Command
|
|
151
|
+
// =============================================================================
|
|
152
|
+
export const modelCommand = {
|
|
153
|
+
name: 'model',
|
|
154
|
+
description: 'Change the AI model',
|
|
155
|
+
async execute(_args, ctx) {
|
|
156
|
+
// Result may be undefined if user cancelled with Esc (base overlay casts undefined to TResult)
|
|
157
|
+
const modelResult = await showModelOverlay({
|
|
158
|
+
currentModel: ctx.currentModel,
|
|
159
|
+
currentProvider: ctx.provider,
|
|
160
|
+
});
|
|
161
|
+
// Handle model change result
|
|
162
|
+
if (modelResult?.modelChanged) {
|
|
163
|
+
ctx.setModel(modelResult.modelChanged);
|
|
164
|
+
// Clear footer, print message, re-render footer
|
|
165
|
+
ctx.footer.clearForOutput();
|
|
166
|
+
if (modelResult.requiresRestart) {
|
|
167
|
+
conversation.printWarning(`Model set to: ${modelResult.modelChanged} (restart required)`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
conversation.printSuccess(`Model switched to: ${modelResult.modelChanged}`);
|
|
171
|
+
}
|
|
172
|
+
ctx.footer.forceRender();
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
// =============================================================================
|
|
178
|
+
// Mascot Command
|
|
179
|
+
// =============================================================================
|
|
180
|
+
export const mascotCommand = {
|
|
181
|
+
name: 'mascot',
|
|
182
|
+
description: 'Change the mascot character',
|
|
183
|
+
async execute(_args, ctx) {
|
|
184
|
+
// Result may be undefined if user cancelled with Esc (base overlay casts undefined to TResult)
|
|
185
|
+
const mascotResult = await showMascotOverlay();
|
|
186
|
+
// Mascot is already persisted by the overlay
|
|
187
|
+
if (mascotResult?.mascotChanged) {
|
|
188
|
+
ctx.footer.clearForOutput();
|
|
189
|
+
conversation.printSuccess(`Mascot changed to: ${mascotResult.mascotChanged}`);
|
|
190
|
+
ctx.footer.forceRender();
|
|
191
|
+
}
|
|
192
|
+
return true;
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
// =============================================================================
|
|
196
|
+
// Config Command
|
|
197
|
+
// =============================================================================
|
|
198
|
+
export const configCommand = {
|
|
199
|
+
name: 'config',
|
|
200
|
+
description: 'View settings and configuration',
|
|
201
|
+
async execute(_args, ctx) {
|
|
202
|
+
// Get context stats for usage tab
|
|
203
|
+
const contextManager = ctx.agent.getContextManager();
|
|
204
|
+
const history = ctx.agent.getHistory();
|
|
205
|
+
let contextUsed = 0;
|
|
206
|
+
let contextMax = 200000;
|
|
207
|
+
if (contextManager) {
|
|
208
|
+
const stats = contextManager.getStats(history.length);
|
|
209
|
+
contextUsed = stats.currentTokens;
|
|
210
|
+
contextMax = stats.maxTokens;
|
|
211
|
+
}
|
|
212
|
+
// Loop to handle sub-overlay requests (user can return to config after sub-overlay)
|
|
213
|
+
let continueConfig = true;
|
|
214
|
+
while (continueConfig) {
|
|
215
|
+
const configResult = await showConfigOverlay({
|
|
216
|
+
version: ctx.version,
|
|
217
|
+
cwd: process.cwd(),
|
|
218
|
+
model: ctx.currentModel,
|
|
219
|
+
provider: ctx.provider,
|
|
220
|
+
toolCount: ctx.agent.getToolDefinitions().length,
|
|
221
|
+
startTime: ctx.startTime,
|
|
222
|
+
// Usage stats
|
|
223
|
+
inputTokens: ctx.sessionInputTokens,
|
|
224
|
+
outputTokens: ctx.sessionOutputTokens,
|
|
225
|
+
requests: ctx.sessionRequests,
|
|
226
|
+
contextUsed,
|
|
227
|
+
contextMax,
|
|
228
|
+
messageCount: history.length,
|
|
229
|
+
// Model change callback for hot-switch
|
|
230
|
+
onModelChange: (model) => {
|
|
231
|
+
ctx.setModel(model);
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
// Handle sub-overlay requests
|
|
235
|
+
if (configResult.requestSubOverlay === 'theme') {
|
|
236
|
+
const themeResult = await showThemeOverlay();
|
|
237
|
+
if (themeResult.themeChanged) {
|
|
238
|
+
ctx.footer.refreshPrompt();
|
|
239
|
+
}
|
|
240
|
+
// Continue loop to return to config overlay
|
|
241
|
+
}
|
|
242
|
+
else if (configResult.requestSubOverlay === 'model') {
|
|
243
|
+
const modelResult = await showModelOverlay({
|
|
244
|
+
currentModel: ctx.currentModel,
|
|
245
|
+
currentProvider: ctx.provider,
|
|
246
|
+
});
|
|
247
|
+
if (modelResult.modelChanged) {
|
|
248
|
+
ctx.setModel(modelResult.modelChanged);
|
|
249
|
+
}
|
|
250
|
+
// Continue loop to return to config overlay
|
|
251
|
+
}
|
|
252
|
+
else if (configResult.requestSubOverlay === 'mascot') {
|
|
253
|
+
await showMascotOverlay();
|
|
254
|
+
// Continue loop to return to config overlay
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
// No sub-overlay requested, exit the loop
|
|
258
|
+
continueConfig = false;
|
|
259
|
+
// Handle model change result (for hot-switch)
|
|
260
|
+
if (configResult.modelChanged) {
|
|
261
|
+
ctx.setModel(configResult.modelChanged);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Refresh prompt in case theme changed
|
|
266
|
+
ctx.footer.refreshPrompt();
|
|
267
|
+
return true;
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
// =============================================================================
|
|
271
|
+
// Export All Overlay Commands
|
|
272
|
+
// =============================================================================
|
|
273
|
+
export const overlayCommands = [
|
|
274
|
+
agentsCommand,
|
|
275
|
+
anchorsCommand,
|
|
276
|
+
backlogCommand,
|
|
277
|
+
commandsCommand,
|
|
278
|
+
configCommand,
|
|
279
|
+
docsCommand,
|
|
280
|
+
helpCommand,
|
|
281
|
+
keysCommand,
|
|
282
|
+
mascotCommand,
|
|
283
|
+
modelCommand,
|
|
284
|
+
themeCommand,
|
|
285
|
+
toolsCommand,
|
|
286
|
+
tutorialCommand,
|
|
287
|
+
];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands related to project management:
|
|
5
|
+
* - init: Initialize a new project
|
|
6
|
+
* - projects: Switch between projects
|
|
7
|
+
*/
|
|
8
|
+
import type { CommandHandler } from '../handler-types.js';
|
|
9
|
+
export declare const newCommand: CommandHandler;
|
|
10
|
+
export declare const projectsCommand: CommandHandler;
|
|
11
|
+
export declare const projectCommands: CommandHandler[];
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands related to project management:
|
|
5
|
+
* - init: Initialize a new project
|
|
6
|
+
* - projects: Switch between projects
|
|
7
|
+
*/
|
|
8
|
+
import * as conversation from '../../ui/conversation.js';
|
|
9
|
+
import { showNewProjectOverlay } from '../../ui/new-overlay.js';
|
|
10
|
+
import { showProjectsOverlay } from '../../ui/projects-overlay.js';
|
|
11
|
+
import { showWorkflowOverlay } from '../../ui/workflow-overlay.js';
|
|
12
|
+
import { showBacklogOverlay } from '../../ui/backlog-overlay.js';
|
|
13
|
+
import { showAnchorsOverlay } from '../../ui/anchors-overlay.js';
|
|
14
|
+
import { showDocsOverlay } from '../../ui/docs-overlay.js';
|
|
15
|
+
import { projectRepository } from '../../db/repositories/index.js';
|
|
16
|
+
import { setActiveProject, getActiveProject } from '../../tools/project-db.js';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// New Command
|
|
19
|
+
// =============================================================================
|
|
20
|
+
export const newCommand = {
|
|
21
|
+
name: 'new',
|
|
22
|
+
description: 'Create a new project',
|
|
23
|
+
async execute(_args, ctx) {
|
|
24
|
+
// Pause footer during overlay (command overlay - we handle footer ourselves)
|
|
25
|
+
ctx.footer.pauseAnimation();
|
|
26
|
+
// Result may be undefined if user cancelled with Esc
|
|
27
|
+
const newProjectResult = await showNewProjectOverlay();
|
|
28
|
+
// Resume footer if user cancelled (no project created)
|
|
29
|
+
if (!newProjectResult?.created) {
|
|
30
|
+
ctx.footer.resumeAnimation();
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
// Project was created - continue with success handling
|
|
34
|
+
// Show success message with created files info
|
|
35
|
+
conversation.printSuccess(`Project created: ${newProjectResult.projectPath ?? ''}`);
|
|
36
|
+
if (newProjectResult.docsPath) {
|
|
37
|
+
conversation.printSuccess(`Docs repo created: ${newProjectResult.docsPath}`);
|
|
38
|
+
}
|
|
39
|
+
// Register project in database if tracking is enabled
|
|
40
|
+
if (newProjectResult.trackInDatabase && newProjectResult.projectName && newProjectResult.projectPath) {
|
|
41
|
+
try {
|
|
42
|
+
const project = projectRepository.create({
|
|
43
|
+
name: newProjectResult.projectName,
|
|
44
|
+
display_name: newProjectResult.projectName.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()),
|
|
45
|
+
description: newProjectResult.description,
|
|
46
|
+
path: newProjectResult.projectPath,
|
|
47
|
+
type: 'general',
|
|
48
|
+
workflow_mode: newProjectResult.workflowMode ?? 'flexible',
|
|
49
|
+
});
|
|
50
|
+
setActiveProject({ id: project.id, name: project.name, displayName: project.displayName, path: project.path });
|
|
51
|
+
conversation.printSuccess(`Project tracked in database (${newProjectResult.workflowMode ?? 'flexible'} mode)`);
|
|
52
|
+
}
|
|
53
|
+
catch (dbError) {
|
|
54
|
+
conversation.printWarning(`Could not register in database: ${dbError.message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
conversation.printInfo('');
|
|
58
|
+
conversation.printInfo('Next steps:');
|
|
59
|
+
conversation.printInfo(` cd ${newProjectResult.projectPath?.split('/').pop() ?? 'project'}`);
|
|
60
|
+
conversation.printInfo(' npm install');
|
|
61
|
+
conversation.printInfo(' npm run dev');
|
|
62
|
+
conversation.printInfo('');
|
|
63
|
+
// Resume footer animation before processing message
|
|
64
|
+
ctx.footer.resumeAnimation();
|
|
65
|
+
// Ask agent to read the COMPILR.md and understand the project
|
|
66
|
+
const compilrMdPath = newProjectResult.docsPath
|
|
67
|
+
? `${newProjectResult.docsPath}/COMPILR.md`
|
|
68
|
+
: `${newProjectResult.projectPath ?? '.'}/COMPILR.md`;
|
|
69
|
+
await ctx.processMessage(`I just created a new project using /new. Please read ${compilrMdPath} to understand the project context and confirm you're ready to help me build it.
|
|
70
|
+
|
|
71
|
+
(Note to user: When you want to define requirements and populate the backlog, type /design)`);
|
|
72
|
+
return true;
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
// =============================================================================
|
|
76
|
+
// Projects Command
|
|
77
|
+
// =============================================================================
|
|
78
|
+
export const projectsCommand = {
|
|
79
|
+
name: 'projects',
|
|
80
|
+
description: 'Switch between projects',
|
|
81
|
+
async execute(_args, ctx) {
|
|
82
|
+
// Remember old project for anchor cleanup
|
|
83
|
+
const oldProject = getActiveProject();
|
|
84
|
+
const oldProjectId = oldProject ? String(oldProject.id) : null;
|
|
85
|
+
// Loop between projects and workflow overlays
|
|
86
|
+
// User can: projects → workflow → back to projects → workflow → etc.
|
|
87
|
+
let stayInProjects = true;
|
|
88
|
+
while (stayInProjects) {
|
|
89
|
+
const projectsResult = await showProjectsOverlay();
|
|
90
|
+
if (projectsResult.action === 'open-workflow' && projectsResult.projectId) {
|
|
91
|
+
// Inner loop: workflow → view command → back to workflow
|
|
92
|
+
let stayInWorkflow = true;
|
|
93
|
+
while (stayInWorkflow) {
|
|
94
|
+
const workflowResult = await showWorkflowOverlay(projectsResult.projectId);
|
|
95
|
+
if (workflowResult.command) {
|
|
96
|
+
const cmd = workflowResult.command.replace(/^\//, '');
|
|
97
|
+
// Handle "view" commands within workflow loop
|
|
98
|
+
if (cmd === 'backlog') {
|
|
99
|
+
await showBacklogOverlay();
|
|
100
|
+
// After backlog closes, loop back to workflow
|
|
101
|
+
}
|
|
102
|
+
else if (cmd === 'anchors') {
|
|
103
|
+
await showAnchorsOverlay();
|
|
104
|
+
// After anchors closes, loop back to workflow
|
|
105
|
+
}
|
|
106
|
+
else if (cmd === 'docs') {
|
|
107
|
+
await showDocsOverlay();
|
|
108
|
+
// After docs closes, loop back to workflow
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Other commands (design, build, scaffold, etc.) - set project and handle
|
|
112
|
+
const project = projectRepository.getById(projectsResult.projectId);
|
|
113
|
+
if (project) {
|
|
114
|
+
// Set as active project
|
|
115
|
+
setActiveProject({
|
|
116
|
+
id: project.id,
|
|
117
|
+
name: project.name,
|
|
118
|
+
displayName: project.displayName,
|
|
119
|
+
path: project.path,
|
|
120
|
+
});
|
|
121
|
+
projectRepository.touch(project.id);
|
|
122
|
+
// Update footer with new project name
|
|
123
|
+
ctx.footer.setProjectName(project.displayName);
|
|
124
|
+
// Reload project-specific anchors (hot-reload)
|
|
125
|
+
ctx.reloadProjectAnchors(oldProjectId, String(project.id));
|
|
126
|
+
conversation.printSuccess(`Project "${project.displayName}" set as active`);
|
|
127
|
+
conversation.printInfo('');
|
|
128
|
+
// Handle the command
|
|
129
|
+
await ctx.handleCommand(cmd, '');
|
|
130
|
+
}
|
|
131
|
+
stayInWorkflow = false;
|
|
132
|
+
stayInProjects = false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (workflowResult.action) {
|
|
136
|
+
// Handle manage actions (edit, delete)
|
|
137
|
+
const project = projectRepository.getById(projectsResult.projectId);
|
|
138
|
+
if (workflowResult.action === 'delete' && project) {
|
|
139
|
+
conversation.printWarning(`Delete "${project.displayName}" via /projects (x to archive, d to delete)`);
|
|
140
|
+
}
|
|
141
|
+
else if (workflowResult.action === 'edit' && project) {
|
|
142
|
+
conversation.printInfo(`Edit is not yet implemented. Use /projects to manage projects.`);
|
|
143
|
+
}
|
|
144
|
+
stayInWorkflow = false;
|
|
145
|
+
stayInProjects = false;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Workflow cancelled (Esc), go back to projects list
|
|
149
|
+
stayInWorkflow = false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Projects cancelled (Esc), exit loop
|
|
155
|
+
stayInProjects = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return true;
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
// =============================================================================
|
|
162
|
+
// Export All Project Commands
|
|
163
|
+
// =============================================================================
|
|
164
|
+
export const projectCommands = [
|
|
165
|
+
newCommand,
|
|
166
|
+
projectsCommand,
|
|
167
|
+
];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Commands
|
|
3
|
+
*
|
|
4
|
+
* Handles straightforward commands that don't require complex logic:
|
|
5
|
+
* - exit/quit/q - Exit the REPL
|
|
6
|
+
* - plan - Switch to plan mode
|
|
7
|
+
*/
|
|
8
|
+
import type { CommandHandler } from '../handler-types.js';
|
|
9
|
+
export declare const exitCommand: CommandHandler;
|
|
10
|
+
export declare const planCommand: CommandHandler;
|
|
11
|
+
export declare const menuCommand: CommandHandler;
|
|
12
|
+
export declare const clearCommand: CommandHandler;
|
|
13
|
+
export declare const statusCommand: CommandHandler;
|
|
14
|
+
export declare const tokensCommand: CommandHandler;
|
|
15
|
+
export declare const contextCommand: CommandHandler;
|
|
16
|
+
export declare const todosCommand: CommandHandler;
|
|
17
|
+
export declare const compactCommand: CommandHandler;
|
|
18
|
+
export declare const exportCommand: CommandHandler;
|
|
19
|
+
export declare const simpleCommands: CommandHandler[];
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Commands
|
|
3
|
+
*
|
|
4
|
+
* Handles straightforward commands that don't require complex logic:
|
|
5
|
+
* - exit/quit/q - Exit the REPL
|
|
6
|
+
* - plan - Switch to plan mode
|
|
7
|
+
*/
|
|
8
|
+
import * as conversation from '../../ui/conversation.js';
|
|
9
|
+
import * as terminal from '../../ui/terminal.js';
|
|
10
|
+
import { getActiveProject } from '../../tools/project-db.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Exit Command
|
|
13
|
+
// =============================================================================
|
|
14
|
+
export const exitCommand = {
|
|
15
|
+
name: 'exit',
|
|
16
|
+
aliases: ['quit', 'q'],
|
|
17
|
+
description: 'Exit the REPL',
|
|
18
|
+
execute(_args, _ctx) {
|
|
19
|
+
// Return false to signal REPL should exit
|
|
20
|
+
return Promise.resolve(false);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Plan Command
|
|
25
|
+
// =============================================================================
|
|
26
|
+
export const planCommand = {
|
|
27
|
+
name: 'plan',
|
|
28
|
+
description: 'Switch to Plan mode (agent creates plans without executing)',
|
|
29
|
+
execute(_args, ctx) {
|
|
30
|
+
ctx.footer.setMode('plan');
|
|
31
|
+
if (ctx.onModeChange) {
|
|
32
|
+
ctx.onModeChange('plan');
|
|
33
|
+
}
|
|
34
|
+
conversation.printInfo('📋 Switched to Plan mode');
|
|
35
|
+
conversation.printInfo('The agent will create execution plans without performing actions.');
|
|
36
|
+
conversation.printInfo('Use Shift+Tab to switch back to Normal or Auto-accept mode.');
|
|
37
|
+
return Promise.resolve(true);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// =============================================================================
|
|
41
|
+
// Menu Command
|
|
42
|
+
// =============================================================================
|
|
43
|
+
export const menuCommand = {
|
|
44
|
+
name: 'menu',
|
|
45
|
+
description: 'Return to the startup menu',
|
|
46
|
+
execute(_args, ctx) {
|
|
47
|
+
// Signal that we want to return to the startup menu
|
|
48
|
+
ctx.setShouldReturnToMenu(true);
|
|
49
|
+
return Promise.resolve(false); // Exit REPL to return to menu
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Clear Command
|
|
54
|
+
// =============================================================================
|
|
55
|
+
export const clearCommand = {
|
|
56
|
+
name: 'clear',
|
|
57
|
+
description: 'Clear the screen',
|
|
58
|
+
execute(_args, ctx) {
|
|
59
|
+
terminal.clearScreen();
|
|
60
|
+
conversation.printWelcome(ctx.model, ctx.version, getActiveProject()?.displayName ?? null);
|
|
61
|
+
return Promise.resolve(true);
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
// =============================================================================
|
|
65
|
+
// Status Command
|
|
66
|
+
// =============================================================================
|
|
67
|
+
export const statusCommand = {
|
|
68
|
+
name: 'status',
|
|
69
|
+
description: 'Show session status',
|
|
70
|
+
execute(_args, ctx) {
|
|
71
|
+
ctx.showStatus();
|
|
72
|
+
return Promise.resolve(true);
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
// =============================================================================
|
|
76
|
+
// Tokens Command
|
|
77
|
+
// =============================================================================
|
|
78
|
+
export const tokensCommand = {
|
|
79
|
+
name: 'tokens',
|
|
80
|
+
description: 'Show token usage',
|
|
81
|
+
execute(_args, ctx) {
|
|
82
|
+
ctx.showTokens();
|
|
83
|
+
return Promise.resolve(true);
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// Context Command
|
|
88
|
+
// =============================================================================
|
|
89
|
+
export const contextCommand = {
|
|
90
|
+
name: 'context',
|
|
91
|
+
description: 'Show context statistics',
|
|
92
|
+
execute(_args, ctx) {
|
|
93
|
+
ctx.showContext();
|
|
94
|
+
return Promise.resolve(true);
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
// =============================================================================
|
|
98
|
+
// Todos Command
|
|
99
|
+
// =============================================================================
|
|
100
|
+
export const todosCommand = {
|
|
101
|
+
name: 'todos',
|
|
102
|
+
description: 'Show current todo list',
|
|
103
|
+
execute(_args, ctx) {
|
|
104
|
+
ctx.showTodos();
|
|
105
|
+
return Promise.resolve(true);
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
// =============================================================================
|
|
109
|
+
// Compact Command
|
|
110
|
+
// =============================================================================
|
|
111
|
+
export const compactCommand = {
|
|
112
|
+
name: 'compact',
|
|
113
|
+
description: 'Compact the conversation context',
|
|
114
|
+
async execute(_args, ctx) {
|
|
115
|
+
await ctx.handleCompact();
|
|
116
|
+
return true;
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
// =============================================================================
|
|
120
|
+
// Export Command
|
|
121
|
+
// =============================================================================
|
|
122
|
+
export const exportCommand = {
|
|
123
|
+
name: 'export',
|
|
124
|
+
description: 'Export the conversation',
|
|
125
|
+
async execute(args, ctx) {
|
|
126
|
+
await ctx.handleExport(args);
|
|
127
|
+
return true;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
// =============================================================================
|
|
131
|
+
// Export All Simple Commands
|
|
132
|
+
// =============================================================================
|
|
133
|
+
export const simpleCommands = [
|
|
134
|
+
exitCommand,
|
|
135
|
+
planCommand,
|
|
136
|
+
menuCommand,
|
|
137
|
+
clearCommand,
|
|
138
|
+
statusCommand,
|
|
139
|
+
tokensCommand,
|
|
140
|
+
contextCommand,
|
|
141
|
+
todosCommand,
|
|
142
|
+
compactCommand,
|
|
143
|
+
exportCommand,
|
|
144
|
+
];
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exports custom command types and registry.
|
|
5
5
|
*/
|
|
6
|
-
export { CustomCommand, CommandLocation
|
|
6
|
+
export type { CustomCommand, CommandLocation } from './types.js';
|
|
7
|
+
export { PROJECT_COMMANDS_DIR, USER_COMMANDS_DIR, isValidCommandName, } from './types.js';
|
|
7
8
|
export { CustomCommandRegistry, getCustomCommandRegistry, resetCustomCommandRegistry, expandArguments, } from './custom-registry.js';
|