@codemieai/code 0.0.36 → 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.
Files changed (203) hide show
  1. package/README.md +33 -0
  2. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -1
  3. package/dist/agents/codemie-code/tools/assistant-invocation.js +2 -2
  4. package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -1
  5. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
  6. package/dist/agents/core/extension/BaseExtensionInstaller.js +11 -4
  7. package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
  8. package/dist/agents/core/session/BaseProcessor.d.ts +22 -1
  9. package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
  10. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +5 -0
  11. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -1
  12. package/dist/agents/plugins/claude/claude-acp.plugin.js +12 -2
  13. package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -1
  14. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  15. package/dist/agents/plugins/claude/claude.plugin.js +4 -0
  16. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  17. package/dist/agents/plugins/claude/claude.session.d.ts +5 -0
  18. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  19. package/dist/agents/plugins/claude/claude.session.js +101 -2
  20. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  21. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  22. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +0 -1
  23. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  24. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +13 -19
  25. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  26. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  27. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +29 -4
  28. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  29. package/dist/cli/commands/assistants/chat.js +9 -6
  30. package/dist/cli/commands/assistants/chat.js.map +1 -1
  31. package/dist/cli/commands/assistants/constants.d.ts +2 -6
  32. package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
  33. package/dist/cli/commands/assistants/constants.js +2 -5
  34. package/dist/cli/commands/assistants/constants.js.map +1 -1
  35. package/dist/cli/commands/assistants/index.d.ts.map +1 -1
  36. package/dist/cli/commands/assistants/index.js +1 -11
  37. package/dist/cli/commands/assistants/index.js.map +1 -1
  38. package/dist/cli/commands/assistants/setup/configuration/actions.d.ts +30 -0
  39. package/dist/cli/commands/assistants/setup/configuration/actions.d.ts.map +1 -0
  40. package/dist/cli/commands/assistants/setup/configuration/actions.js +63 -0
  41. package/dist/cli/commands/assistants/setup/configuration/actions.js.map +1 -0
  42. package/dist/cli/commands/assistants/setup/configuration/constants.d.ts +49 -0
  43. package/dist/cli/commands/assistants/setup/configuration/constants.d.ts.map +1 -0
  44. package/dist/cli/commands/assistants/setup/configuration/constants.js +56 -0
  45. package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -0
  46. package/dist/cli/commands/assistants/setup/configuration/index.d.ts +9 -0
  47. package/dist/cli/commands/assistants/setup/configuration/index.d.ts.map +1 -0
  48. package/dist/cli/commands/assistants/setup/configuration/index.js +8 -0
  49. package/dist/cli/commands/assistants/setup/configuration/index.js.map +1 -0
  50. package/dist/cli/commands/assistants/setup/configuration/selection.d.ts +12 -0
  51. package/dist/cli/commands/assistants/setup/configuration/selection.d.ts.map +1 -0
  52. package/dist/cli/commands/assistants/setup/configuration/selection.js +94 -0
  53. package/dist/cli/commands/assistants/setup/configuration/selection.js.map +1 -0
  54. package/dist/cli/commands/assistants/setup/configuration/types.d.ts +22 -0
  55. package/dist/cli/commands/assistants/setup/configuration/types.d.ts.map +1 -0
  56. package/dist/cli/commands/assistants/setup/configuration/types.js +2 -0
  57. package/dist/cli/commands/assistants/setup/configuration/types.js.map +1 -0
  58. package/dist/cli/commands/assistants/setup/configuration/ui.d.ts +9 -0
  59. package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -0
  60. package/dist/cli/commands/assistants/setup/configuration/ui.js +86 -0
  61. package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -0
  62. package/dist/cli/commands/assistants/setup/constants.d.ts +26 -0
  63. package/dist/cli/commands/assistants/setup/constants.d.ts.map +1 -0
  64. package/dist/cli/commands/assistants/setup/constants.js +21 -0
  65. package/dist/cli/commands/assistants/setup/constants.js.map +1 -0
  66. package/dist/cli/commands/assistants/setup/data.d.ts +30 -0
  67. package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -0
  68. package/dist/cli/commands/assistants/setup/data.js +125 -0
  69. package/dist/cli/commands/assistants/setup/data.js.map +1 -0
  70. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts.map +1 -0
  71. package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.js +6 -2
  72. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js.map +1 -0
  73. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts +12 -0
  74. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts.map +1 -0
  75. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +94 -0
  76. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js.map +1 -0
  77. package/dist/cli/commands/assistants/setup/helpers.d.ts +27 -0
  78. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -0
  79. package/dist/cli/commands/assistants/setup/helpers.js +94 -0
  80. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -0
  81. package/dist/cli/commands/assistants/setup/index.d.ts +17 -0
  82. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -0
  83. package/dist/cli/commands/assistants/setup/index.js +193 -0
  84. package/dist/cli/commands/assistants/setup/index.js.map +1 -0
  85. package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts +47 -0
  86. package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts.map +1 -0
  87. package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js +140 -0
  88. package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js.map +1 -0
  89. package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts +56 -0
  90. package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts.map +1 -0
  91. package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js +61 -0
  92. package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js.map +1 -0
  93. package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts +12 -0
  94. package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts.map +1 -0
  95. package/dist/cli/commands/assistants/setup/manualConfiguration/index.js +48 -0
  96. package/dist/cli/commands/assistants/setup/manualConfiguration/index.js.map +1 -0
  97. package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts +6 -0
  98. package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts.map +1 -0
  99. package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js +90 -0
  100. package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js.map +1 -0
  101. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +37 -0
  102. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts.map +1 -0
  103. package/dist/cli/commands/assistants/setup/manualConfiguration/types.js +2 -0
  104. package/dist/cli/commands/assistants/setup/manualConfiguration/types.js.map +1 -0
  105. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts +6 -0
  106. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts.map +1 -0
  107. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +103 -0
  108. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -0
  109. package/dist/cli/commands/assistants/setup/selection/actions.d.ts +31 -0
  110. package/dist/cli/commands/assistants/setup/selection/actions.d.ts.map +1 -0
  111. package/dist/cli/commands/assistants/setup/selection/actions.js +321 -0
  112. package/dist/cli/commands/assistants/setup/selection/actions.js.map +1 -0
  113. package/dist/cli/commands/assistants/setup/selection/constants.d.ts +79 -0
  114. package/dist/cli/commands/assistants/setup/selection/constants.d.ts.map +1 -0
  115. package/dist/cli/commands/assistants/setup/selection/constants.js +90 -0
  116. package/dist/cli/commands/assistants/setup/selection/constants.js.map +1 -0
  117. package/dist/cli/commands/assistants/setup/selection/index.d.ts +25 -0
  118. package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -0
  119. package/dist/cli/commands/assistants/setup/selection/index.js +127 -0
  120. package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -0
  121. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts +20 -0
  122. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -0
  123. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +328 -0
  124. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -0
  125. package/dist/cli/commands/assistants/setup/selection/types.d.ts +27 -0
  126. package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -0
  127. package/dist/cli/commands/assistants/setup/selection/types.js +2 -0
  128. package/dist/cli/commands/assistants/setup/selection/types.js.map +1 -0
  129. package/dist/cli/commands/assistants/setup/selection/ui.d.ts +11 -0
  130. package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -0
  131. package/dist/cli/commands/assistants/setup/selection/ui.js +189 -0
  132. package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -0
  133. package/dist/cli/commands/assistants/setup/selection/utils.d.ts +36 -0
  134. package/dist/cli/commands/assistants/setup/selection/utils.d.ts.map +1 -0
  135. package/dist/cli/commands/assistants/setup/selection/utils.js +55 -0
  136. package/dist/cli/commands/assistants/setup/selection/utils.js.map +1 -0
  137. package/dist/cli/commands/assistants/setup/summary/index.d.ts +16 -0
  138. package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -0
  139. package/dist/cli/commands/assistants/setup/summary/index.js +48 -0
  140. package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -0
  141. package/dist/cli/commands/log/cleaner.d.ts +33 -0
  142. package/dist/cli/commands/log/cleaner.d.ts.map +1 -0
  143. package/dist/cli/commands/log/cleaner.js +214 -0
  144. package/dist/cli/commands/log/cleaner.js.map +1 -0
  145. package/dist/cli/commands/log/filter.d.ts +55 -0
  146. package/dist/cli/commands/log/filter.d.ts.map +1 -0
  147. package/dist/cli/commands/log/filter.js +128 -0
  148. package/dist/cli/commands/log/filter.js.map +1 -0
  149. package/dist/cli/commands/log/follower.d.ts +36 -0
  150. package/dist/cli/commands/log/follower.d.ts.map +1 -0
  151. package/dist/cli/commands/log/follower.js +151 -0
  152. package/dist/cli/commands/log/follower.js.map +1 -0
  153. package/dist/cli/commands/log/formatter.d.ts +76 -0
  154. package/dist/cli/commands/log/formatter.d.ts.map +1 -0
  155. package/dist/cli/commands/log/formatter.js +261 -0
  156. package/dist/cli/commands/log/formatter.js.map +1 -0
  157. package/dist/cli/commands/log/index.d.ts +6 -0
  158. package/dist/cli/commands/log/index.d.ts.map +1 -0
  159. package/dist/cli/commands/log/index.js +398 -0
  160. package/dist/cli/commands/log/index.js.map +1 -0
  161. package/dist/cli/commands/log/parser.d.ts +20 -0
  162. package/dist/cli/commands/log/parser.d.ts.map +1 -0
  163. package/dist/cli/commands/log/parser.js +111 -0
  164. package/dist/cli/commands/log/parser.js.map +1 -0
  165. package/dist/cli/commands/log/reader.d.ts +61 -0
  166. package/dist/cli/commands/log/reader.d.ts.map +1 -0
  167. package/dist/cli/commands/log/reader.js +327 -0
  168. package/dist/cli/commands/log/reader.js.map +1 -0
  169. package/dist/cli/commands/log/types.d.ts +100 -0
  170. package/dist/cli/commands/log/types.d.ts.map +1 -0
  171. package/dist/cli/commands/log/types.js +5 -0
  172. package/dist/cli/commands/log/types.js.map +1 -0
  173. package/dist/cli/commands/setup.d.ts.map +1 -1
  174. package/dist/cli/commands/setup.js +2 -0
  175. package/dist/cli/commands/setup.js.map +1 -1
  176. package/dist/cli/index.js +2 -0
  177. package/dist/cli/index.js.map +1 -1
  178. package/dist/env/types.d.ts +1 -0
  179. package/dist/env/types.d.ts.map +1 -1
  180. package/dist/env/types.js.map +1 -1
  181. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +5 -0
  182. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
  183. package/dist/providers/plugins/sso/session/SessionSyncer.js +102 -3
  184. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
  185. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +0 -1
  186. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -1
  187. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +25 -48
  188. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -1
  189. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  190. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +8 -34
  191. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  192. package/dist/utils/native-installer.d.ts +1 -0
  193. package/dist/utils/native-installer.d.ts.map +1 -1
  194. package/dist/utils/native-installer.js +21 -7
  195. package/dist/utils/native-installer.js.map +1 -1
  196. package/package.json +2 -2
  197. package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +0 -1
  198. package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +0 -1
  199. package/dist/cli/commands/assistants/list.d.ts +0 -11
  200. package/dist/cli/commands/assistants/list.d.ts.map +0 -1
  201. package/dist/cli/commands/assistants/list.js +0 -323
  202. package/dist/cli/commands/assistants/list.js.map +0 -1
  203. /package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.d.ts +0 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Selection UI Module
3
+ *
4
+ * Main orchestration for assistant selection with panel interface
5
+ */
6
+ import type { CodeMieClient } from 'codemie-sdk';
7
+ import { ACTIONS } from '../../../../../cli/commands/assistants/constants.js';
8
+ type ActionType = typeof ACTIONS.UPDATE | typeof ACTIONS.CANCEL;
9
+ import type { ProviderProfile } from '../../../../../env/types.js';
10
+ import type { SetupCommandOptions } from '../index.js';
11
+ export interface SelectionOptions {
12
+ registeredIds: Set<string>;
13
+ config: ProviderProfile;
14
+ options: SetupCommandOptions;
15
+ client: CodeMieClient;
16
+ }
17
+ /**
18
+ * Prompt user to select assistants with panel interface
19
+ */
20
+ export declare function promptAssistantSelection(registeredIds: Set<string>, config: ProviderProfile, options: SetupCommandOptions, client: CodeMieClient): Promise<{
21
+ selectedIds: string[];
22
+ action: ActionType;
23
+ }>;
24
+ export {};
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjE,KAAK,UAAU,GAAG,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;CACvB;AAqDD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CAqExD"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Selection UI Module
3
+ *
4
+ * Main orchestration for assistant selection with panel interface
5
+ */
6
+ import { ACTIONS } from '../../../../../cli/commands/assistants/constants.js';
7
+ import { PANEL_ID, ANSI } from './constants.js';
8
+ import { createDataFetcher } from '../data.js';
9
+ import { createInteractivePrompt } from './interactive-prompt.js';
10
+ import { createActionHandlers } from './actions.js';
11
+ import { logger } from '../../../../../utils/logger.js';
12
+ import ora from 'ora';
13
+ const DEFAULT_PANEL_PARAMS = {
14
+ isActive: false,
15
+ data: null,
16
+ filteredData: [],
17
+ isFetching: false,
18
+ error: null,
19
+ currentPage: 0,
20
+ totalItems: 0,
21
+ totalPages: 0,
22
+ };
23
+ /**
24
+ * Initialize state with 3 panels (Registered, Project, Marketplace)
25
+ * Smart default: Project tab if no registered assistants exist
26
+ */
27
+ function initializeState(registeredIds) {
28
+ const hasRegisteredAssistants = registeredIds.size > 0;
29
+ const defaultPanelId = hasRegisteredAssistants
30
+ ? PANEL_ID.REGISTERED
31
+ : PANEL_ID.PROJECT;
32
+ return {
33
+ panels: [
34
+ {
35
+ id: PANEL_ID.REGISTERED,
36
+ label: 'Registered',
37
+ ...DEFAULT_PANEL_PARAMS,
38
+ isActive: defaultPanelId === PANEL_ID.REGISTERED,
39
+ },
40
+ {
41
+ id: PANEL_ID.PROJECT,
42
+ label: 'Project',
43
+ ...DEFAULT_PANEL_PARAMS,
44
+ isActive: defaultPanelId === PANEL_ID.PROJECT,
45
+ },
46
+ {
47
+ id: PANEL_ID.MARKETPLACE,
48
+ label: 'Marketplace',
49
+ ...DEFAULT_PANEL_PARAMS
50
+ }
51
+ ],
52
+ activePanelId: defaultPanelId,
53
+ searchQuery: '',
54
+ selectedIds: new Set(registeredIds),
55
+ registeredIds: registeredIds,
56
+ isSearchFocused: false,
57
+ isPaginationFocused: null,
58
+ areNavigationButtonsFocused: false,
59
+ focusedButton: 'continue'
60
+ };
61
+ }
62
+ /**
63
+ * Prompt user to select assistants with panel interface
64
+ */
65
+ export async function promptAssistantSelection(registeredIds, config, options, client) {
66
+ const state = initializeState(registeredIds);
67
+ const fetcher = createDataFetcher({
68
+ config,
69
+ client,
70
+ options
71
+ });
72
+ let prompt = null;
73
+ let isCancelled = false;
74
+ const actionHandlers = createActionHandlers({
75
+ state,
76
+ fetcher,
77
+ prompt: () => prompt,
78
+ setPrompt: (p) => { prompt = p; },
79
+ setCancelled: (cancelled) => { isCancelled = cancelled; }
80
+ });
81
+ const spinner = ora('Loading assistants...').start();
82
+ const activePanel = state.panels.find(p => p.id === state.activePanelId);
83
+ try {
84
+ const result = await fetcher.fetchAssistants({
85
+ scope: state.activePanelId,
86
+ searchQuery: state.searchQuery,
87
+ page: 0
88
+ });
89
+ activePanel.data = result.data;
90
+ activePanel.filteredData = result.data;
91
+ activePanel.totalItems = result.total;
92
+ activePanel.totalPages = result.pages;
93
+ spinner.succeed('Assistants loaded');
94
+ }
95
+ catch (error) {
96
+ spinner.fail('Failed to load assistants');
97
+ activePanel.error = error instanceof Error ? error.message : 'Unknown error';
98
+ activePanel.totalItems = 0;
99
+ activePanel.totalPages = 0;
100
+ }
101
+ // Clear spinner output before starting interactive mode
102
+ process.stdout.write(ANSI.CLEAR_LINE_ABOVE);
103
+ prompt = createInteractivePrompt({
104
+ state,
105
+ actions: actionHandlers
106
+ });
107
+ await prompt.start();
108
+ if (isCancelled) {
109
+ logger.debug('[AssistantSelection] Selection cancelled');
110
+ return {
111
+ selectedIds: [],
112
+ action: ACTIONS.CANCEL
113
+ };
114
+ }
115
+ const selectedIdsArray = Array.from(state.selectedIds);
116
+ logger.debug('[AssistantSelection] Returning selection', {
117
+ totalSelected: selectedIdsArray.length,
118
+ selectedIds: selectedIdsArray,
119
+ registeredCount: state.registeredIds.size,
120
+ registeredIds: Array.from(state.registeredIds)
121
+ });
122
+ return {
123
+ selectedIds: selectedIdsArray,
124
+ action: ACTIONS.UPDATE
125
+ };
126
+ }
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Interactive Prompt
3
+ *
4
+ * Handles prompt lifecycle (setup, keyboard handling, teardown)
5
+ */
6
+ import type { SelectionState } from './types.js';
7
+ import type { ActionHandlers } from './actions.js';
8
+ export interface InteractivePromptOptions {
9
+ state: SelectionState;
10
+ actions: ActionHandlers;
11
+ }
12
+ export interface InteractivePrompt {
13
+ start: () => Promise<void>;
14
+ stop: () => void;
15
+ render: () => void;
16
+ getCursorIndex: () => number;
17
+ setCursorIndex: (index: number) => void;
18
+ }
19
+ export declare function createInteractivePrompt(options: InteractivePromptOptions): InteractivePrompt;
20
+ //# sourceMappingURL=interactive-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-prompt.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/interactive-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CA6X5F"}
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Interactive Prompt
3
+ *
4
+ * Handles prompt lifecycle (setup, keyboard handling, teardown)
5
+ */
6
+ import { KEY, CONFIG, PAGINATION_CONTROL } from './constants.js';
7
+ import { renderUI } from './ui.js';
8
+ export function createInteractivePrompt(options) {
9
+ let cursorIndex = 0;
10
+ let isActive = false;
11
+ let resolvePromise = null;
12
+ let dataHandler = null;
13
+ let keepAliveTimer = null;
14
+ let searchDebounceTimer = null;
15
+ /**
16
+ * Start the interactive prompt
17
+ */
18
+ async function start() {
19
+ isActive = true;
20
+ keepAliveTimer = setInterval(() => { }, CONFIG.KEEP_ALIVE_INTERVAL_MS); // keep event loop running
21
+ process.stdin.resume();
22
+ if (process.stdin.isTTY) {
23
+ process.stdin.setRawMode(true);
24
+ }
25
+ process.stdin.setEncoding('utf8');
26
+ setupKeyHandlers();
27
+ render();
28
+ return new Promise((resolve) => {
29
+ resolvePromise = resolve;
30
+ });
31
+ }
32
+ /**
33
+ * Stop the interactive prompt
34
+ */
35
+ function stop() {
36
+ isActive = false;
37
+ if (keepAliveTimer) {
38
+ clearInterval(keepAliveTimer);
39
+ keepAliveTimer = null;
40
+ }
41
+ if (searchDebounceTimer) {
42
+ clearTimeout(searchDebounceTimer);
43
+ searchDebounceTimer = null;
44
+ }
45
+ if (dataHandler) {
46
+ process.stdin.removeListener('data', dataHandler);
47
+ dataHandler = null;
48
+ }
49
+ if (process.stdin.isTTY) {
50
+ process.stdin.setRawMode(false);
51
+ }
52
+ process.stdin.pause();
53
+ process.stdin.unref();
54
+ if (resolvePromise) {
55
+ resolvePromise();
56
+ resolvePromise = null;
57
+ }
58
+ }
59
+ /**
60
+ * Get current cursor index
61
+ */
62
+ function getCursorIndex() {
63
+ return cursorIndex;
64
+ }
65
+ /**
66
+ * Set cursor index
67
+ */
68
+ function setCursorIndex(index) {
69
+ cursorIndex = index;
70
+ }
71
+ /**
72
+ * Render the UI
73
+ */
74
+ function render() {
75
+ if (!isActive)
76
+ return;
77
+ const output = renderUI(options.state, cursorIndex);
78
+ process.stdout.write(output);
79
+ }
80
+ /**
81
+ * Check if character is printable (for search input)
82
+ */
83
+ function isPrintableChar(key) {
84
+ return key.length === 1 &&
85
+ key.charCodeAt(0) >= CONFIG.PRINTABLE_CHAR_MIN &&
86
+ key.charCodeAt(0) <= CONFIG.PRINTABLE_CHAR_MAX;
87
+ }
88
+ /**
89
+ * Handle exit (Ctrl+C or Esc)
90
+ */
91
+ function handleExit() {
92
+ options.actions.handleCancel();
93
+ }
94
+ function handleEsc() {
95
+ const state = options.state;
96
+ if (state.isSearchFocused && state.searchQuery.length > 0) {
97
+ updateSearchQuery('');
98
+ return;
99
+ }
100
+ if (state.isSearchFocused) {
101
+ options.actions.handleFocusList();
102
+ render();
103
+ return;
104
+ }
105
+ options.actions.handleCancel();
106
+ }
107
+ /**
108
+ * Handle next panel (Tab only, not Right arrow when on pagination controls)
109
+ */
110
+ function handleNextPanel() {
111
+ const state = options.state;
112
+ // If on buttons, cycle back to list
113
+ if (state.areNavigationButtonsFocused) {
114
+ options.actions.handleButtonToggle();
115
+ render();
116
+ return;
117
+ }
118
+ cursorIndex = 0;
119
+ state.isPaginationFocused = null;
120
+ options.actions.handlePanelSwitch('next');
121
+ render();
122
+ }
123
+ /**
124
+ * Handle previous panel (Shift+Tab only, not Left arrow when on pagination controls)
125
+ */
126
+ function handlePrevPanel() {
127
+ const state = options.state;
128
+ // If on buttons, cycle back to list
129
+ if (state.areNavigationButtonsFocused) {
130
+ options.actions.handleButtonToggle();
131
+ render();
132
+ return;
133
+ }
134
+ cursorIndex = 0;
135
+ state.isPaginationFocused = null;
136
+ options.actions.handlePanelSwitch('prev');
137
+ render();
138
+ }
139
+ function handleArrowRight() {
140
+ const state = options.state;
141
+ // If buttons are focused, switch between them
142
+ if (state.areNavigationButtonsFocused) {
143
+ options.actions.handleButtonSwitch('right');
144
+ render();
145
+ return;
146
+ }
147
+ if (state.isPaginationFocused === PAGINATION_CONTROL.PREV) {
148
+ state.isPaginationFocused = PAGINATION_CONTROL.NEXT;
149
+ render();
150
+ return;
151
+ }
152
+ if (state.isPaginationFocused === null) {
153
+ handleNextPanel();
154
+ }
155
+ }
156
+ function handleArrowLeft() {
157
+ const state = options.state;
158
+ if (state.areNavigationButtonsFocused) {
159
+ options.actions.handleButtonSwitch('left');
160
+ render();
161
+ return;
162
+ }
163
+ if (state.isPaginationFocused === PAGINATION_CONTROL.NEXT) {
164
+ state.isPaginationFocused = PAGINATION_CONTROL.PREV;
165
+ render();
166
+ return;
167
+ }
168
+ if (state.isPaginationFocused === null) {
169
+ handlePrevPanel();
170
+ }
171
+ }
172
+ function handleConfirm() {
173
+ const state = options.state;
174
+ // Handle button confirmation first
175
+ if (state.areNavigationButtonsFocused) {
176
+ options.actions.handleConfirm();
177
+ return;
178
+ }
179
+ if (state.isSearchFocused) {
180
+ if (searchDebounceTimer) {
181
+ clearTimeout(searchDebounceTimer);
182
+ searchDebounceTimer = null;
183
+ }
184
+ options.actions.handleSearchUpdate(state.searchQuery);
185
+ options.actions.handleFocusList();
186
+ render();
187
+ return;
188
+ }
189
+ if (state.isPaginationFocused === PAGINATION_CONTROL.PREV) {
190
+ options.actions.handlePagePrev();
191
+ return;
192
+ }
193
+ if (state.isPaginationFocused === PAGINATION_CONTROL.NEXT) {
194
+ options.actions.handlePageNext();
195
+ return;
196
+ }
197
+ }
198
+ /**
199
+ * Handle arrow up
200
+ */
201
+ function handleArrowUp() {
202
+ const state = options.state;
203
+ if (state.isSearchFocused) {
204
+ return;
205
+ }
206
+ if (cursorIndex === 0 && state.isPaginationFocused === null) {
207
+ options.actions.handleFocusSearch();
208
+ render();
209
+ return;
210
+ }
211
+ options.actions.handleCursorMove('up');
212
+ render();
213
+ }
214
+ /**
215
+ * Handle arrow down
216
+ */
217
+ function handleArrowDown() {
218
+ const state = options.state;
219
+ if (state.isSearchFocused) {
220
+ options.actions.handleFocusList();
221
+ cursorIndex = 0;
222
+ }
223
+ else {
224
+ options.actions.handleCursorMove('down');
225
+ }
226
+ render();
227
+ }
228
+ /**
229
+ * Handle toggle selection (Space)
230
+ */
231
+ function handleToggleSelection() {
232
+ const state = options.state;
233
+ if (!state.isSearchFocused) {
234
+ options.actions.handleToggleSelection();
235
+ render();
236
+ }
237
+ }
238
+ /**
239
+ * Update search query with debounce
240
+ */
241
+ function updateSearchQuery(newQuery) {
242
+ options.state.searchQuery = newQuery;
243
+ cursorIndex = 0;
244
+ render();
245
+ if (searchDebounceTimer) {
246
+ clearTimeout(searchDebounceTimer);
247
+ }
248
+ searchDebounceTimer = setTimeout(() => {
249
+ options.actions.handleSearchUpdate(newQuery);
250
+ }, CONFIG.SEARCH_DEBOUNCE_MS);
251
+ }
252
+ /**
253
+ * Handle backspace
254
+ */
255
+ function handleBackspace() {
256
+ const currentSearch = options.state.searchQuery;
257
+ if (currentSearch.length > 0) {
258
+ if (!options.state.isSearchFocused) {
259
+ options.actions.handleFocusSearch();
260
+ }
261
+ updateSearchQuery(currentSearch.slice(0, -1));
262
+ }
263
+ }
264
+ /**
265
+ * Handle Ctrl+] (next page)
266
+ */
267
+ function handleCtrlBracketRight() {
268
+ const state = options.state;
269
+ if (state.isSearchFocused) {
270
+ return; // Ignore pagination when search is focused
271
+ }
272
+ options.actions.handlePageNext();
273
+ render();
274
+ }
275
+ /**
276
+ * Handle regular character input (for search)
277
+ */
278
+ function handleRegularInput(key) {
279
+ if (!options.state.isSearchFocused) {
280
+ options.actions.handleFocusSearch();
281
+ }
282
+ const currentSearch = options.state.searchQuery;
283
+ updateSearchQuery(currentSearch + key);
284
+ }
285
+ /**
286
+ * Setup keyboard event handlers
287
+ */
288
+ function setupKeyHandlers() {
289
+ const keyHandlers = {
290
+ [KEY.CTRL_C]: handleExit,
291
+ [KEY.ESC]: handleEsc,
292
+ [KEY.TAB]: handleNextPanel,
293
+ [KEY.SHIFT_TAB]: handlePrevPanel,
294
+ [KEY.ARROW_RIGHT]: handleArrowRight,
295
+ [KEY.ARROW_LEFT]: handleArrowLeft,
296
+ [KEY.ENTER]: handleConfirm,
297
+ [KEY.NEWLINE]: handleConfirm,
298
+ [KEY.ARROW_UP]: handleArrowUp,
299
+ [KEY.ARROW_DOWN]: handleArrowDown,
300
+ [KEY.SPACE]: handleToggleSelection,
301
+ [KEY.BACKSPACE]: handleBackspace,
302
+ [KEY.BACKSPACE_ALT]: handleBackspace,
303
+ [KEY.CTRL_BRACKET_RIGHT]: handleCtrlBracketRight,
304
+ };
305
+ dataHandler = (data) => {
306
+ if (!isActive)
307
+ return;
308
+ const key = data.toString();
309
+ const handler = keyHandlers[key];
310
+ if (handler) {
311
+ handler();
312
+ return;
313
+ }
314
+ if (isPrintableChar(key)) {
315
+ handleRegularInput(key);
316
+ }
317
+ };
318
+ process.stdin.on('data', dataHandler);
319
+ }
320
+ return {
321
+ start,
322
+ stop,
323
+ render,
324
+ getCursorIndex,
325
+ setCursorIndex
326
+ };
327
+ }
328
+ //# sourceMappingURL=interactive-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-prompt.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/interactive-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Assistant, AssistantBase } from 'codemie-sdk';
2
+ import type { PanelId, PaginationControl } from './constants.js';
3
+ export type ButtonType = 'continue' | 'cancel';
4
+ export interface SelectionState {
5
+ panels: PanelState[];
6
+ activePanelId: PanelId;
7
+ searchQuery: string;
8
+ selectedIds: Set<string>;
9
+ registeredIds: Set<string>;
10
+ isSearchFocused: boolean;
11
+ isPaginationFocused: PaginationControl | null;
12
+ areNavigationButtonsFocused: boolean;
13
+ focusedButton: ButtonType;
14
+ }
15
+ export interface PanelState {
16
+ id: PanelId;
17
+ label: string;
18
+ isActive: boolean;
19
+ data: (Assistant | AssistantBase)[] | null;
20
+ filteredData: (Assistant | AssistantBase)[];
21
+ isFetching: boolean;
22
+ error: string | null;
23
+ currentPage: number;
24
+ totalItems: number;
25
+ totalPages: number;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC9C,2BAA2B,EAAE,OAAO,CAAC;IACrC,aAAa,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * UI Rendering
3
+ *
4
+ * All UI building and rendering functions
5
+ */
6
+ import type { SelectionState } from './types.js';
7
+ /**
8
+ * Render the complete UI
9
+ */
10
+ export declare function renderUI(state: SelectionState, cursorIndex: number): string;
11
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/assistants/setup/selection/ui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB3E"}