@codemieai/code 0.0.35 → 0.0.37
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 +33 -0
- package/dist/agents/codemie-code/agent.d.ts +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +2 -2
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/index.js +1 -1
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/prompts.d.ts +1 -1
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillManager.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.js.map +1 -0
- package/dist/agents/codemie-code/skills/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/index.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.js +1 -1
- package/dist/agents/codemie-code/skills/utils/content-loader.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.js +2 -2
- package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +1 -1
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.js +11 -4
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
- package/dist/agents/core/session/BaseProcessor.d.ts +22 -1
- package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +5 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.js +12 -2
- package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +5 -1
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts +5 -0
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +101 -2
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +0 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +13 -19
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +29 -4
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/cli/commands/assistants/chat.js +9 -6
- package/dist/cli/commands/assistants/chat.js.map +1 -1
- package/dist/cli/commands/assistants/constants.d.ts +2 -6
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js +2 -5
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/index.js +1 -11
- package/dist/cli/commands/assistants/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/configuration/actions.d.ts +30 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.js +63 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.d.ts +49 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.js +56 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/index.d.ts +9 -0
- package/dist/cli/commands/assistants/setup/configuration/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/index.js +8 -0
- package/dist/cli/commands/assistants/setup/configuration/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.js +94 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/types.d.ts +22 -0
- package/dist/cli/commands/assistants/setup/configuration/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/types.js +2 -0
- package/dist/cli/commands/assistants/setup/configuration/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.d.ts +9 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.js +86 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/constants.d.ts +26 -0
- package/dist/cli/commands/assistants/setup/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/constants.js +21 -0
- package/dist/cli/commands/assistants/setup/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/data.d.ts +30 -0
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/data.js +125 -0
- package/dist/cli/commands/assistants/setup/data.js.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.js +6 -2
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +94 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/helpers.d.ts +27 -0
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/helpers.js +94 -0
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -0
- package/dist/cli/commands/assistants/setup/index.d.ts +17 -0
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/index.js +193 -0
- package/dist/cli/commands/assistants/setup/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts +47 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js +140 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts +56 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js +61 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.js +48 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts +6 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js +90 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +37 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.js +2 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts +6 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +103 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts +31 -0
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/actions.js +321 -0
- package/dist/cli/commands/assistants/setup/selection/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts +79 -0
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/constants.js +90 -0
- package/dist/cli/commands/assistants/setup/selection/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/index.d.ts +25 -0
- package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/index.js +127 -0
- package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts +20 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +328 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/types.d.ts +27 -0
- package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/types.js +2 -0
- package/dist/cli/commands/assistants/setup/selection/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts +11 -0
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/ui.js +189 -0
- package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts +36 -0
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/utils.js +55 -0
- package/dist/cli/commands/assistants/setup/selection/utils.js.map +1 -0
- package/dist/cli/commands/assistants/setup/summary/index.d.ts +16 -0
- package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/summary/index.js +48 -0
- package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +8 -0
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/log/cleaner.d.ts +33 -0
- package/dist/cli/commands/log/cleaner.d.ts.map +1 -0
- package/dist/cli/commands/log/cleaner.js +214 -0
- package/dist/cli/commands/log/cleaner.js.map +1 -0
- package/dist/cli/commands/log/filter.d.ts +55 -0
- package/dist/cli/commands/log/filter.d.ts.map +1 -0
- package/dist/cli/commands/log/filter.js +128 -0
- package/dist/cli/commands/log/filter.js.map +1 -0
- package/dist/cli/commands/log/follower.d.ts +36 -0
- package/dist/cli/commands/log/follower.d.ts.map +1 -0
- package/dist/cli/commands/log/follower.js +151 -0
- package/dist/cli/commands/log/follower.js.map +1 -0
- package/dist/cli/commands/log/formatter.d.ts +76 -0
- package/dist/cli/commands/log/formatter.d.ts.map +1 -0
- package/dist/cli/commands/log/formatter.js +261 -0
- package/dist/cli/commands/log/formatter.js.map +1 -0
- package/dist/cli/commands/log/index.d.ts +6 -0
- package/dist/cli/commands/log/index.d.ts.map +1 -0
- package/dist/cli/commands/log/index.js +398 -0
- package/dist/cli/commands/log/index.js.map +1 -0
- package/dist/cli/commands/log/parser.d.ts +20 -0
- package/dist/cli/commands/log/parser.d.ts.map +1 -0
- package/dist/cli/commands/log/parser.js +111 -0
- package/dist/cli/commands/log/parser.js.map +1 -0
- package/dist/cli/commands/log/reader.d.ts +61 -0
- package/dist/cli/commands/log/reader.d.ts.map +1 -0
- package/dist/cli/commands/log/reader.js +327 -0
- package/dist/cli/commands/log/reader.js.map +1 -0
- package/dist/cli/commands/log/types.d.ts +100 -0
- package/dist/cli/commands/log/types.d.ts.map +1 -0
- package/dist/cli/commands/log/types.js +5 -0
- package/dist/cli/commands/log/types.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +2 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill.js +1 -1
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +1 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +5 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.js +102 -3
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +25 -48
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +8 -34
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/utils/native-installer.d.ts +1 -0
- package/dist/utils/native-installer.d.ts.map +1 -1
- package/dist/utils/native-installer.js +60 -9
- package/dist/utils/native-installer.js.map +1 -1
- package/dist/utils/windows-path.d.ts +54 -0
- package/dist/utils/windows-path.d.ts.map +1 -0
- package/dist/utils/windows-path.js +347 -0
- package/dist/utils/windows-path.js.map +1 -0
- package/package.json +2 -2
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +0 -1
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +0 -1
- package/dist/cli/commands/assistants/list.d.ts +0 -11
- package/dist/cli/commands/assistants/list.d.ts.map +0 -1
- package/dist/cli/commands/assistants/list.js +0 -323
- package/dist/cli/commands/assistants/list.js.map +0 -1
- package/dist/skills/core/SkillDiscovery.d.ts.map +0 -1
- package/dist/skills/core/SkillDiscovery.js.map +0 -1
- package/dist/skills/core/SkillManager.d.ts.map +0 -1
- package/dist/skills/core/SkillManager.js.map +0 -1
- package/dist/skills/core/types.d.ts.map +0 -1
- package/dist/skills/core/types.js.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/utils/content-loader.d.ts.map +0 -1
- package/dist/skills/utils/content-loader.js.map +0 -1
- package/dist/skills/utils/frontmatter.d.ts.map +0 -1
- package/dist/skills/utils/frontmatter.js.map +0 -1
- package/dist/skills/utils/pattern-matcher.d.ts.map +0 -1
- package/dist/skills/utils/pattern-matcher.js.map +0 -1
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.js +0 -0
- /package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.d.ts +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { MODE_CYCLE_ORDER } from './constants.js';
|
|
2
|
+
import { ACTION_TYPE } from '../constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Cycle registration mode forward or backward
|
|
5
|
+
*/
|
|
6
|
+
function cycleMode(currentMode, direction) {
|
|
7
|
+
const currentIndex = MODE_CYCLE_ORDER.indexOf(currentMode);
|
|
8
|
+
let nextIndex;
|
|
9
|
+
if (direction === 'forward') {
|
|
10
|
+
nextIndex = (currentIndex + 1) % MODE_CYCLE_ORDER.length;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
nextIndex = (currentIndex - 1 + MODE_CYCLE_ORDER.length) % MODE_CYCLE_ORDER.length;
|
|
14
|
+
}
|
|
15
|
+
return MODE_CYCLE_ORDER[nextIndex];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create action handlers with closure over dependencies
|
|
19
|
+
*/
|
|
20
|
+
export function createActionHandlers(state, render, resolve) {
|
|
21
|
+
return {
|
|
22
|
+
/**
|
|
23
|
+
* Handle up arrow
|
|
24
|
+
*/
|
|
25
|
+
handleArrowUp() {
|
|
26
|
+
if (state.areNavigationButtonsFocused) {
|
|
27
|
+
// Move to last item in list
|
|
28
|
+
state.areNavigationButtonsFocused = false;
|
|
29
|
+
state.cursorIndex = state.registrations.length - 1;
|
|
30
|
+
}
|
|
31
|
+
else if (state.cursorIndex > 0) {
|
|
32
|
+
state.cursorIndex--;
|
|
33
|
+
}
|
|
34
|
+
render();
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Handle down arrow
|
|
38
|
+
*/
|
|
39
|
+
handleArrowDown() {
|
|
40
|
+
if (!state.areNavigationButtonsFocused) {
|
|
41
|
+
if (state.cursorIndex < state.registrations.length - 1) {
|
|
42
|
+
state.cursorIndex++;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Move to buttons
|
|
46
|
+
state.areNavigationButtonsFocused = true;
|
|
47
|
+
state.focusedButton = ACTION_TYPE.APPLY;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
render();
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* Handle left arrow
|
|
54
|
+
*/
|
|
55
|
+
handleArrowLeft() {
|
|
56
|
+
if (state.areNavigationButtonsFocused) {
|
|
57
|
+
// Toggle between buttons
|
|
58
|
+
state.focusedButton = state.focusedButton === ACTION_TYPE.APPLY ? ACTION_TYPE.CANCEL : ACTION_TYPE.APPLY;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Cycle mode backward
|
|
62
|
+
const registration = state.registrations[state.cursorIndex];
|
|
63
|
+
registration.mode = cycleMode(registration.mode, 'backward');
|
|
64
|
+
}
|
|
65
|
+
render();
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Handle right arrow
|
|
69
|
+
*/
|
|
70
|
+
handleArrowRight() {
|
|
71
|
+
if (state.areNavigationButtonsFocused) {
|
|
72
|
+
// Toggle between buttons
|
|
73
|
+
state.focusedButton = state.focusedButton === ACTION_TYPE.APPLY ? ACTION_TYPE.CANCEL : ACTION_TYPE.APPLY;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Cycle mode forward
|
|
77
|
+
const registration = state.registrations[state.cursorIndex];
|
|
78
|
+
registration.mode = cycleMode(registration.mode, 'forward');
|
|
79
|
+
}
|
|
80
|
+
render();
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Handle space key
|
|
84
|
+
*/
|
|
85
|
+
handleSpace() {
|
|
86
|
+
if (!state.areNavigationButtonsFocused) {
|
|
87
|
+
// Cycle mode forward
|
|
88
|
+
const registration = state.registrations[state.cursorIndex];
|
|
89
|
+
registration.mode = cycleMode(registration.mode, 'forward');
|
|
90
|
+
render();
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* Handle tab key
|
|
95
|
+
*/
|
|
96
|
+
handleTab() {
|
|
97
|
+
state.areNavigationButtonsFocused = !state.areNavigationButtonsFocused;
|
|
98
|
+
if (state.areNavigationButtonsFocused) {
|
|
99
|
+
state.focusedButton = ACTION_TYPE.APPLY;
|
|
100
|
+
}
|
|
101
|
+
render();
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Handle shift+tab key
|
|
105
|
+
*/
|
|
106
|
+
handleShiftTab() {
|
|
107
|
+
state.areNavigationButtonsFocused = !state.areNavigationButtonsFocused;
|
|
108
|
+
if (state.areNavigationButtonsFocused) {
|
|
109
|
+
state.focusedButton = ACTION_TYPE.CANCEL;
|
|
110
|
+
}
|
|
111
|
+
render();
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* Handle enter key
|
|
115
|
+
*/
|
|
116
|
+
handleEnter() {
|
|
117
|
+
if (state.areNavigationButtonsFocused) {
|
|
118
|
+
// Execute focused button
|
|
119
|
+
resolve(state.focusedButton === ACTION_TYPE.APPLY ? ACTION_TYPE.APPLY : ACTION_TYPE.CANCEL);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// From list: move to apply button and execute
|
|
123
|
+
resolve(ACTION_TYPE.APPLY);
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
/**
|
|
127
|
+
* Handle back (Esc) - go back to configuration mode selection
|
|
128
|
+
*/
|
|
129
|
+
handleBack() {
|
|
130
|
+
resolve(ACTION_TYPE.BACK);
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Handle cancel (Ctrl+C)
|
|
134
|
+
*/
|
|
135
|
+
handleCancel() {
|
|
136
|
+
resolve(ACTION_TYPE.CANCEL);
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { RegistrationMode } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registration mode values
|
|
4
|
+
*/
|
|
5
|
+
export declare const REGISTRATION_MODE: {
|
|
6
|
+
readonly AGENT: "agent";
|
|
7
|
+
readonly SKILL: "skill";
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* ANSI escape codes for terminal control
|
|
11
|
+
*/
|
|
12
|
+
export declare const ANSI: {
|
|
13
|
+
readonly CLEAR_SCREEN: "\u001B[2J\u001B[H";
|
|
14
|
+
readonly HIDE_CURSOR: "\u001B[?25l";
|
|
15
|
+
readonly SHOW_CURSOR: "\u001B[?25h";
|
|
16
|
+
readonly CLEAR_LINE: "\u001B[2K";
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Key codes for keyboard input
|
|
20
|
+
*/
|
|
21
|
+
export declare const KEY: {
|
|
22
|
+
readonly UP: "\u001B[A";
|
|
23
|
+
readonly DOWN: "\u001B[B";
|
|
24
|
+
readonly LEFT: "\u001B[D";
|
|
25
|
+
readonly RIGHT: "\u001B[C";
|
|
26
|
+
readonly ENTER: "\r";
|
|
27
|
+
readonly SPACE: " ";
|
|
28
|
+
readonly TAB: "\t";
|
|
29
|
+
readonly SHIFT_TAB: "\u001B[Z";
|
|
30
|
+
readonly ESC: "\u001B";
|
|
31
|
+
readonly CTRL_C: "\u0003";
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Labels for registration modes
|
|
35
|
+
*/
|
|
36
|
+
export declare const MODE_LABELS: Record<RegistrationMode, string>;
|
|
37
|
+
/**
|
|
38
|
+
* Order for cycling through modes
|
|
39
|
+
*/
|
|
40
|
+
export declare const MODE_CYCLE_ORDER: RegistrationMode[];
|
|
41
|
+
/**
|
|
42
|
+
* UI text strings
|
|
43
|
+
*/
|
|
44
|
+
export declare const UI_TEXT: {
|
|
45
|
+
readonly TITLE: "Configure Registration";
|
|
46
|
+
readonly SUBTITLE: "Select registration mode for each assistant:";
|
|
47
|
+
readonly INSTRUCTIONS: "↑↓: Navigate • ←→: Toggle Mode • Enter: Confirm • Esc: Cancel";
|
|
48
|
+
readonly APPLY_BUTTON: "Apply";
|
|
49
|
+
readonly CANCEL_BUTTON: "Cancel";
|
|
50
|
+
readonly NO_CHANGES: "No changes made";
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Keep-alive timer interval (ms)
|
|
54
|
+
*/
|
|
55
|
+
export declare const KEEP_ALIVE_INTERVAL = 60000;
|
|
56
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;CAKP,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;CAWN,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAG/C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAG9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;CAOV,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration mode values
|
|
3
|
+
*/
|
|
4
|
+
export const REGISTRATION_MODE = {
|
|
5
|
+
AGENT: 'agent',
|
|
6
|
+
SKILL: 'skill',
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* ANSI escape codes for terminal control
|
|
10
|
+
*/
|
|
11
|
+
export const ANSI = {
|
|
12
|
+
CLEAR_SCREEN: '\x1B[2J\x1B[H',
|
|
13
|
+
HIDE_CURSOR: '\x1B[?25l',
|
|
14
|
+
SHOW_CURSOR: '\x1B[?25h',
|
|
15
|
+
CLEAR_LINE: '\x1B[2K',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Key codes for keyboard input
|
|
19
|
+
*/
|
|
20
|
+
export const KEY = {
|
|
21
|
+
UP: '\x1B[A',
|
|
22
|
+
DOWN: '\x1B[B',
|
|
23
|
+
LEFT: '\x1B[D',
|
|
24
|
+
RIGHT: '\x1B[C',
|
|
25
|
+
ENTER: '\r',
|
|
26
|
+
SPACE: ' ',
|
|
27
|
+
TAB: '\t',
|
|
28
|
+
SHIFT_TAB: '\x1B[Z',
|
|
29
|
+
ESC: '\x1B',
|
|
30
|
+
CTRL_C: '\x03',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Labels for registration modes
|
|
34
|
+
*/
|
|
35
|
+
export const MODE_LABELS = {
|
|
36
|
+
[REGISTRATION_MODE.AGENT]: 'Claude Agent',
|
|
37
|
+
[REGISTRATION_MODE.SKILL]: 'Claude Skill',
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Order for cycling through modes
|
|
41
|
+
*/
|
|
42
|
+
export const MODE_CYCLE_ORDER = [
|
|
43
|
+
REGISTRATION_MODE.AGENT,
|
|
44
|
+
REGISTRATION_MODE.SKILL,
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* UI text strings
|
|
48
|
+
*/
|
|
49
|
+
export const UI_TEXT = {
|
|
50
|
+
TITLE: 'Configure Registration',
|
|
51
|
+
SUBTITLE: 'Select registration mode for each assistant:',
|
|
52
|
+
INSTRUCTIONS: '↑↓: Navigate • ←→: Toggle Mode • Enter: Confirm • Esc: Cancel',
|
|
53
|
+
APPLY_BUTTON: 'Apply',
|
|
54
|
+
CANCEL_BUTTON: 'Cancel',
|
|
55
|
+
NO_CHANGES: 'No changes made',
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Keep-alive timer interval (ms)
|
|
59
|
+
*/
|
|
60
|
+
export const KEEP_ALIVE_INTERVAL = 60000;
|
|
61
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,KAAK,EAAE,OAAgB;IACvB,KAAK,EAAE,OAAgB;CACd,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IACnB,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,WAAW;IACxB,UAAU,EAAE,SAAS;CACZ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG;IAClB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,QAAQ;IACnB,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,MAAM;CACL,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqC;IAC5D,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;IACzC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;CAChC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IACnD,iBAAiB,CAAC,KAAK;IACvB,iBAAiB,CAAC,KAAK;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,8CAA8C;IACxD,YAAY,EAAE,+DAA+D;IAC7E,YAAY,EAAE,OAAO;IACrB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,iBAAiB;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Assistant } from 'codemie-sdk';
|
|
2
|
+
import type { CodemieAssistant } from '../../../../../env/types.js';
|
|
3
|
+
import type { ConfigurationResult } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Prompt user to manually configure registration modes for selected assistants
|
|
6
|
+
* Returns a map of assistant IDs to registration modes and the action taken
|
|
7
|
+
* @param assistants - All selected assistants (both new and already registered)
|
|
8
|
+
* @param registeredIds - Set of IDs of already registered assistants
|
|
9
|
+
* @param registeredAssistants - Array of registered assistants with saved modes
|
|
10
|
+
*/
|
|
11
|
+
export declare function promptManualConfiguration(assistants: Assistant[], registeredIds: Set<string>, registeredAssistants: CodemieAssistant[]): Promise<ConfigurationResult>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAsB,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AAyB5F;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,oBAAoB,EAAE,gBAAgB,EAAE,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAyB9B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createInteractivePrompt } from './interactive-prompt.js';
|
|
2
|
+
import { REGISTRATION_MODE } from './constants.js';
|
|
3
|
+
import { ACTION_TYPE } from '../constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* Initialize state with saved registration modes or default to 'agent'
|
|
6
|
+
*/
|
|
7
|
+
function initializeState(assistants, registeredIds, savedModes) {
|
|
8
|
+
return {
|
|
9
|
+
registrations: assistants.map((assistant) => ({
|
|
10
|
+
assistant,
|
|
11
|
+
mode: savedModes.get(assistant.id) || REGISTRATION_MODE.AGENT,
|
|
12
|
+
isAlreadyRegistered: registeredIds.has(assistant.id),
|
|
13
|
+
})),
|
|
14
|
+
cursorIndex: 0,
|
|
15
|
+
areNavigationButtonsFocused: true,
|
|
16
|
+
focusedButton: ACTION_TYPE.APPLY,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Prompt user to manually configure registration modes for selected assistants
|
|
21
|
+
* Returns a map of assistant IDs to registration modes and the action taken
|
|
22
|
+
* @param assistants - All selected assistants (both new and already registered)
|
|
23
|
+
* @param registeredIds - Set of IDs of already registered assistants
|
|
24
|
+
* @param registeredAssistants - Array of registered assistants with saved modes
|
|
25
|
+
*/
|
|
26
|
+
export async function promptManualConfiguration(assistants, registeredIds, registeredAssistants) {
|
|
27
|
+
const savedModes = new Map();
|
|
28
|
+
for (const registered of registeredAssistants) {
|
|
29
|
+
if (registered.registrationMode) {
|
|
30
|
+
// Use saved mode, defaulting to AGENT for any other value (e.g., legacy 'both')
|
|
31
|
+
const mode = (registered.registrationMode === REGISTRATION_MODE.AGENT || registered.registrationMode === REGISTRATION_MODE.SKILL)
|
|
32
|
+
? registered.registrationMode
|
|
33
|
+
: REGISTRATION_MODE.AGENT;
|
|
34
|
+
savedModes.set(registered.id, mode);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const state = initializeState(assistants, registeredIds, savedModes);
|
|
38
|
+
const action = await createInteractivePrompt(state);
|
|
39
|
+
const registrationModes = new Map();
|
|
40
|
+
for (const registration of state.registrations) {
|
|
41
|
+
registrationModes.set(registration.assistant.id, registration.mode);
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
registrationModes,
|
|
45
|
+
action,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,SAAS,eAAe,CACvB,UAAuB,EACvB,aAA0B,EAC1B,UAAyC;IAEzC,OAAO;QACN,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7C,SAAS;YACT,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,KAAK;YAC7D,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;SACpD,CAAC,CAAC;QACH,WAAW,EAAE,CAAC;QACd,2BAA2B,EAAE,IAAI;QACjC,aAAa,EAAE,WAAW,CAAC,KAAK;KAChC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,UAAuB,EACvB,aAA0B,EAC1B,oBAAwC;IAExC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACjC,gFAAgF;YAChF,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,KAAK,iBAAiB,CAAC,KAAK,IAAI,UAAU,CAAC,gBAAgB,KAAK,iBAAiB,CAAC,KAAK,CAAC;gBAChI,CAAC,CAAC,UAAU,CAAC,gBAAgB;gBAC7B,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC3B,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC9D,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QAChD,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACN,iBAAiB;QACjB,MAAM;KACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ConfigurationState, ConfigurationAction } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interactive prompt for configuring assistant registration modes
|
|
4
|
+
*/
|
|
5
|
+
export declare function createInteractivePrompt(state: ConfigurationState): Promise<ConfigurationAction>;
|
|
6
|
+
//# sourceMappingURL=interactive-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-prompt.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAK1E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6F/F"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ANSI, KEY, KEEP_ALIVE_INTERVAL } from './constants.js';
|
|
2
|
+
import { renderUI } from './ui.js';
|
|
3
|
+
import { createActionHandlers } from './actions.js';
|
|
4
|
+
/**
|
|
5
|
+
* Interactive prompt for configuring assistant registration modes
|
|
6
|
+
*/
|
|
7
|
+
export function createInteractivePrompt(state) {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
let keepAliveTimer = null;
|
|
10
|
+
/**
|
|
11
|
+
* Render UI to stdout
|
|
12
|
+
*/
|
|
13
|
+
function render() {
|
|
14
|
+
const output = ANSI.CLEAR_SCREEN + ANSI.HIDE_CURSOR + renderUI(state);
|
|
15
|
+
process.stdout.write(output);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Cleanup and restore terminal
|
|
19
|
+
*/
|
|
20
|
+
function cleanup() {
|
|
21
|
+
if (keepAliveTimer) {
|
|
22
|
+
clearInterval(keepAliveTimer);
|
|
23
|
+
keepAliveTimer = null;
|
|
24
|
+
}
|
|
25
|
+
process.stdin.setRawMode(false);
|
|
26
|
+
process.stdin.pause();
|
|
27
|
+
process.stdin.removeAllListeners('data');
|
|
28
|
+
process.stdout.write(ANSI.SHOW_CURSOR + ANSI.CLEAR_SCREEN);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve promise and cleanup
|
|
32
|
+
*/
|
|
33
|
+
function stop(action) {
|
|
34
|
+
cleanup();
|
|
35
|
+
resolve(action);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Start interactive mode
|
|
39
|
+
*/
|
|
40
|
+
function start() {
|
|
41
|
+
const actions = createActionHandlers(state, render, stop);
|
|
42
|
+
process.stdin.setRawMode(true);
|
|
43
|
+
process.stdin.resume();
|
|
44
|
+
process.stdin.setEncoding('utf8');
|
|
45
|
+
process.stdin.on('data', (key) => {
|
|
46
|
+
switch (key) {
|
|
47
|
+
case KEY.UP:
|
|
48
|
+
actions.handleArrowUp();
|
|
49
|
+
break;
|
|
50
|
+
case KEY.DOWN:
|
|
51
|
+
actions.handleArrowDown();
|
|
52
|
+
break;
|
|
53
|
+
case KEY.LEFT:
|
|
54
|
+
actions.handleArrowLeft();
|
|
55
|
+
break;
|
|
56
|
+
case KEY.RIGHT:
|
|
57
|
+
actions.handleArrowRight();
|
|
58
|
+
break;
|
|
59
|
+
case KEY.SPACE:
|
|
60
|
+
actions.handleSpace();
|
|
61
|
+
break;
|
|
62
|
+
case KEY.TAB:
|
|
63
|
+
actions.handleTab();
|
|
64
|
+
break;
|
|
65
|
+
case KEY.SHIFT_TAB:
|
|
66
|
+
actions.handleShiftTab();
|
|
67
|
+
break;
|
|
68
|
+
case KEY.ENTER:
|
|
69
|
+
actions.handleEnter();
|
|
70
|
+
break;
|
|
71
|
+
case KEY.ESC:
|
|
72
|
+
actions.handleBack();
|
|
73
|
+
break;
|
|
74
|
+
case KEY.CTRL_C:
|
|
75
|
+
actions.handleCancel();
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
// Ignore other keys
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// Keep-alive timer to prevent process from exiting
|
|
83
|
+
keepAliveTimer = setInterval(() => {
|
|
84
|
+
}, KEEP_ALIVE_INTERVAL);
|
|
85
|
+
render();
|
|
86
|
+
}
|
|
87
|
+
start();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=interactive-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-prompt.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Assistant } from 'codemie-sdk';
|
|
2
|
+
import type { ACTION_TYPE } from '../constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registration mode for an assistant
|
|
5
|
+
* - agent: Register as Claude agent only (~/.claude/agents/{slug}.md)
|
|
6
|
+
* - skill: Register as Claude skill only (~/.codemie/skills/{slug}/SKILL.md)
|
|
7
|
+
*/
|
|
8
|
+
export type RegistrationMode = 'agent' | 'skill';
|
|
9
|
+
/**
|
|
10
|
+
* Action taken by the user in the configuration UI
|
|
11
|
+
*/
|
|
12
|
+
export type ConfigurationAction = typeof ACTION_TYPE.APPLY | typeof ACTION_TYPE.CANCEL | typeof ACTION_TYPE.BACK;
|
|
13
|
+
/**
|
|
14
|
+
* Represents a single assistant with its registration mode
|
|
15
|
+
*/
|
|
16
|
+
export interface AssistantRegistration {
|
|
17
|
+
assistant: Assistant;
|
|
18
|
+
mode: RegistrationMode;
|
|
19
|
+
isAlreadyRegistered: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* State for the manual configuration UI
|
|
23
|
+
*/
|
|
24
|
+
export interface ConfigurationState {
|
|
25
|
+
registrations: AssistantRegistration[];
|
|
26
|
+
cursorIndex: number;
|
|
27
|
+
areNavigationButtonsFocused: boolean;
|
|
28
|
+
focusedButton: typeof ACTION_TYPE.APPLY | typeof ACTION_TYPE.CANCEL;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result returned from the configuration UI
|
|
32
|
+
*/
|
|
33
|
+
export interface ConfigurationResult {
|
|
34
|
+
registrationModes: Map<string, RegistrationMode>;
|
|
35
|
+
action: ConfigurationAction;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,WAAW,CAAC,KAAK,GAAG,OAAO,WAAW,CAAC,MAAM,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAEjH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B,EAAE,OAAO,CAAC;IACrC,aAAa,EAAE,OAAO,WAAW,CAAC,KAAK,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,MAAM,EAAE,mBAAmB,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAqGvE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAiB1D"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { MODE_LABELS, MODE_CYCLE_ORDER, UI_TEXT } from './constants.js';
|
|
3
|
+
import { COLOR, ACTION_TYPE } from '../constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build top line (purple separator)
|
|
6
|
+
*/
|
|
7
|
+
function buildTopLine() {
|
|
8
|
+
const width = 60;
|
|
9
|
+
return chalk.rgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b)('─'.repeat(width));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build title section
|
|
13
|
+
*/
|
|
14
|
+
function buildTitle() {
|
|
15
|
+
return chalk.rgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b).bold(UI_TEXT.TITLE);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build subtitle section
|
|
19
|
+
*/
|
|
20
|
+
function buildSubtitle() {
|
|
21
|
+
return chalk.dim(UI_TEXT.SUBTITLE);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build mode switch display
|
|
25
|
+
* Shows: [Claude Agent] [Claude Skill]
|
|
26
|
+
* Active mode is highlighted in purple
|
|
27
|
+
*/
|
|
28
|
+
function buildModeSwitch(currentMode, isCursor) {
|
|
29
|
+
const switches = MODE_CYCLE_ORDER.map((mode) => {
|
|
30
|
+
const label = MODE_LABELS[mode];
|
|
31
|
+
const isActive = mode === currentMode;
|
|
32
|
+
if (isActive && isCursor) {
|
|
33
|
+
return chalk.rgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b).bold(`[${label}]`);
|
|
34
|
+
}
|
|
35
|
+
else if (isActive) {
|
|
36
|
+
return chalk.bold(`[${label}]`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return chalk.dim(`[${label}]`);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return switches.join(' ');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build single assistant line
|
|
46
|
+
*/
|
|
47
|
+
function buildAssistantLine(registration, isCursor) {
|
|
48
|
+
const cursor = isCursor ? chalk.rgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b)('› ') : ' ';
|
|
49
|
+
const name = isCursor ? chalk.bold(registration.assistant.name) : chalk.white(registration.assistant.name);
|
|
50
|
+
const badge = registration.isAlreadyRegistered ? chalk.dim(' (Already registered)') : '';
|
|
51
|
+
const modeSwitch = buildModeSwitch(registration.mode, isCursor);
|
|
52
|
+
return `${cursor}${name}${badge}\n Mode: ${modeSwitch}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build assistants list
|
|
56
|
+
*/
|
|
57
|
+
function buildAssistantsList(state) {
|
|
58
|
+
const lines = state.registrations.map((registration, index) => {
|
|
59
|
+
const isCursor = !state.areNavigationButtonsFocused && state.cursorIndex === index;
|
|
60
|
+
return buildAssistantLine(registration, isCursor);
|
|
61
|
+
});
|
|
62
|
+
return lines.join('\n\n');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build buttons (Apply / Cancel)
|
|
66
|
+
*/
|
|
67
|
+
function buildButtons(state) {
|
|
68
|
+
const { areNavigationButtonsFocused, focusedButton } = state;
|
|
69
|
+
const applyButton = areNavigationButtonsFocused && focusedButton === ACTION_TYPE.APPLY
|
|
70
|
+
? chalk.bgRgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b).black(` ${UI_TEXT.APPLY_BUTTON} `)
|
|
71
|
+
: chalk.dim(`[${UI_TEXT.APPLY_BUTTON}]`);
|
|
72
|
+
const cancelButton = areNavigationButtonsFocused && focusedButton === ACTION_TYPE.CANCEL
|
|
73
|
+
? chalk.bgRgb(COLOR.PURPLE.r, COLOR.PURPLE.g, COLOR.PURPLE.b).black(` ${UI_TEXT.CANCEL_BUTTON} `)
|
|
74
|
+
: chalk.dim(`[${UI_TEXT.CANCEL_BUTTON}]`);
|
|
75
|
+
return ` ${applyButton} ${cancelButton}`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Build instructions line
|
|
79
|
+
*/
|
|
80
|
+
function buildInstructions() {
|
|
81
|
+
return chalk.dim(UI_TEXT.INSTRUCTIONS);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Render full UI
|
|
85
|
+
*/
|
|
86
|
+
export function renderUI(state) {
|
|
87
|
+
const parts = [
|
|
88
|
+
buildTopLine(),
|
|
89
|
+
buildTitle(),
|
|
90
|
+
'',
|
|
91
|
+
buildSubtitle(),
|
|
92
|
+
'',
|
|
93
|
+
buildAssistantsList(state),
|
|
94
|
+
'',
|
|
95
|
+
buildTopLine(),
|
|
96
|
+
'',
|
|
97
|
+
buildButtons(state),
|
|
98
|
+
'',
|
|
99
|
+
buildInstructions(),
|
|
100
|
+
];
|
|
101
|
+
return parts.join('\n');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/manualConfiguration/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Handlers
|
|
3
|
+
*
|
|
4
|
+
* All user interaction handlers for the selection UI
|
|
5
|
+
*/
|
|
6
|
+
import type { SelectionState } from './types.js';
|
|
7
|
+
import type { DataFetcher } from '../data.js';
|
|
8
|
+
import type { InteractivePrompt } from './interactive-prompt.js';
|
|
9
|
+
export interface ActionHandlers {
|
|
10
|
+
handlePanelSwitch: (direction: 'next' | 'prev') => void;
|
|
11
|
+
handleSearchUpdate: (query: string) => void;
|
|
12
|
+
handleFocusSearch: () => void;
|
|
13
|
+
handleFocusList: () => void;
|
|
14
|
+
handleCursorMove: (direction: 'up' | 'down') => void;
|
|
15
|
+
handleToggleSelection: () => void;
|
|
16
|
+
handleConfirm: () => void;
|
|
17
|
+
handleCancel: () => void;
|
|
18
|
+
handlePageNext: () => void;
|
|
19
|
+
handlePagePrev: () => void;
|
|
20
|
+
handleButtonToggle: () => void;
|
|
21
|
+
handleButtonSwitch: (direction: 'left' | 'right') => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ActionHandlerDependencies {
|
|
24
|
+
state: SelectionState;
|
|
25
|
+
fetcher: DataFetcher;
|
|
26
|
+
prompt: () => InteractivePrompt | null;
|
|
27
|
+
setPrompt: (p: InteractivePrompt | null) => void;
|
|
28
|
+
setCancelled: (cancelled: boolean) => void;
|
|
29
|
+
}
|
|
30
|
+
export declare function createActionHandlers(deps: ActionHandlerDependencies): ActionHandlers;
|
|
31
|
+
//# sourceMappingURL=actions.d.ts.map
|