@orion-agents/orion-code 0.1.7 → 0.1.8

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 (237) hide show
  1. package/README.md +51 -41
  2. package/README.zh-CN.md +14 -7
  3. package/dist/commands/core-command-handlers.d.ts.map +1 -1
  4. package/dist/commands/core-command-handlers.js +3 -4
  5. package/dist/commands/core-command-handlers.js.map +1 -1
  6. package/dist/commands/diagnostic-command-handlers.d.ts.map +1 -1
  7. package/dist/commands/diagnostic-command-handlers.js +3 -0
  8. package/dist/commands/diagnostic-command-handlers.js.map +1 -1
  9. package/dist/commands/registry.d.ts.map +1 -1
  10. package/dist/commands/registry.js +7 -3
  11. package/dist/commands/registry.js.map +1 -1
  12. package/dist/commands/workflow-command-handlers.d.ts.map +1 -1
  13. package/dist/commands/workflow-command-handlers.js +2 -2
  14. package/dist/commands/workflow-command-handlers.js.map +1 -1
  15. package/dist/commands/workflow-commands.d.ts.map +1 -1
  16. package/dist/commands/workflow-commands.js +1 -1
  17. package/dist/commands/workflow-commands.js.map +1 -1
  18. package/dist/core/checkpoint.d.ts.map +1 -1
  19. package/dist/core/checkpoint.js +9 -8
  20. package/dist/core/checkpoint.js.map +1 -1
  21. package/dist/framework/prompt.d.ts +1 -1
  22. package/dist/framework/prompt.d.ts.map +1 -1
  23. package/dist/framework/prompt.js +5 -4
  24. package/dist/framework/prompt.js.map +1 -1
  25. package/dist/framework/query.d.ts +4 -0
  26. package/dist/framework/query.d.ts.map +1 -1
  27. package/dist/framework/query.js +10 -0
  28. package/dist/framework/query.js.map +1 -1
  29. package/dist/framework/store.d.ts.map +1 -1
  30. package/dist/framework/store.js +4 -4
  31. package/dist/framework/store.js.map +1 -1
  32. package/dist/framework/tool-scheduler.d.ts +18 -13
  33. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  34. package/dist/framework/tool-scheduler.js +69 -68
  35. package/dist/framework/tool-scheduler.js.map +1 -1
  36. package/dist/framework/tool.d.ts +7 -0
  37. package/dist/framework/tool.d.ts.map +1 -1
  38. package/dist/framework/tool.js +9 -0
  39. package/dist/framework/tool.js.map +1 -1
  40. package/dist/print-ui/launch.d.ts +1 -0
  41. package/dist/print-ui/launch.d.ts.map +1 -1
  42. package/dist/print-ui/launch.js +5 -2
  43. package/dist/print-ui/launch.js.map +1 -1
  44. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  45. package/dist/runtime/agent-runtime-controller.js +60 -22
  46. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  47. package/dist/runtime/chat-checkpoint.d.ts.map +1 -1
  48. package/dist/runtime/chat-checkpoint.js +2 -5
  49. package/dist/runtime/chat-checkpoint.js.map +1 -1
  50. package/dist/runtime/chat-command-scope.d.ts +5 -0
  51. package/dist/runtime/chat-command-scope.d.ts.map +1 -0
  52. package/dist/runtime/chat-command-scope.js +22 -0
  53. package/dist/runtime/chat-command-scope.js.map +1 -0
  54. package/dist/runtime/chat-controller.d.ts.map +1 -1
  55. package/dist/runtime/chat-controller.js +38 -56
  56. package/dist/runtime/chat-controller.js.map +1 -1
  57. package/dist/runtime/chat-presentation.d.ts +6 -3
  58. package/dist/runtime/chat-presentation.d.ts.map +1 -1
  59. package/dist/runtime/chat-presentation.js +30 -6
  60. package/dist/runtime/chat-presentation.js.map +1 -1
  61. package/dist/runtime/goals/coordinator.d.ts +5 -0
  62. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  63. package/dist/runtime/goals/coordinator.js +102 -19
  64. package/dist/runtime/goals/coordinator.js.map +1 -1
  65. package/dist/runtime/goals/evidence.d.ts +10 -0
  66. package/dist/runtime/goals/evidence.d.ts.map +1 -1
  67. package/dist/runtime/goals/evidence.js +18 -0
  68. package/dist/runtime/goals/evidence.js.map +1 -1
  69. package/dist/runtime/goals/lifecycle.d.ts +13 -0
  70. package/dist/runtime/goals/lifecycle.d.ts.map +1 -0
  71. package/dist/runtime/goals/lifecycle.js +46 -0
  72. package/dist/runtime/goals/lifecycle.js.map +1 -0
  73. package/dist/runtime/goals/objective.d.ts +18 -0
  74. package/dist/runtime/goals/objective.d.ts.map +1 -0
  75. package/dist/runtime/goals/objective.js +60 -0
  76. package/dist/runtime/goals/objective.js.map +1 -0
  77. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  78. package/dist/runtime/goals/prompt.js +7 -1
  79. package/dist/runtime/goals/prompt.js.map +1 -1
  80. package/dist/runtime/goals/tools.d.ts.map +1 -1
  81. package/dist/runtime/goals/tools.js +2 -2
  82. package/dist/runtime/goals/tools.js.map +1 -1
  83. package/dist/runtime/goals/types.d.ts +4 -0
  84. package/dist/runtime/goals/types.d.ts.map +1 -1
  85. package/dist/runtime/goals/types.js +2 -0
  86. package/dist/runtime/goals/types.js.map +1 -1
  87. package/dist/runtime/loop-budget.d.ts +2 -0
  88. package/dist/runtime/loop-budget.d.ts.map +1 -1
  89. package/dist/runtime/loop-budget.js +6 -2
  90. package/dist/runtime/loop-budget.js.map +1 -1
  91. package/dist/runtime/ui-events.d.ts +35 -1
  92. package/dist/runtime/ui-events.d.ts.map +1 -1
  93. package/dist/runtime/ui-events.js.map +1 -1
  94. package/dist/runtime/ui-view-model.d.ts +10 -1
  95. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  96. package/dist/runtime/ui-view-model.js +93 -4
  97. package/dist/runtime/ui-view-model.js.map +1 -1
  98. package/dist/services/bounded-response.d.ts +12 -0
  99. package/dist/services/bounded-response.d.ts.map +1 -0
  100. package/dist/services/bounded-response.js +67 -0
  101. package/dist/services/bounded-response.js.map +1 -0
  102. package/dist/services/concurrent-sessions.d.ts +1 -0
  103. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  104. package/dist/services/concurrent-sessions.js +35 -22
  105. package/dist/services/concurrent-sessions.js.map +1 -1
  106. package/dist/services/file-lock.d.ts.map +1 -1
  107. package/dist/services/file-lock.js +60 -27
  108. package/dist/services/file-lock.js.map +1 -1
  109. package/dist/services/global-config.d.ts.map +1 -1
  110. package/dist/services/global-config.js +15 -13
  111. package/dist/services/global-config.js.map +1 -1
  112. package/dist/services/goal-storage.d.ts +1 -1
  113. package/dist/services/goal-storage.d.ts.map +1 -1
  114. package/dist/services/goal-storage.js +14 -4
  115. package/dist/services/goal-storage.js.map +1 -1
  116. package/dist/services/project-instructions.d.ts +8 -0
  117. package/dist/services/project-instructions.d.ts.map +1 -1
  118. package/dist/services/project-instructions.js +95 -38
  119. package/dist/services/project-instructions.js.map +1 -1
  120. package/dist/services/provider-resilience/request-gate.d.ts +9 -5
  121. package/dist/services/provider-resilience/request-gate.d.ts.map +1 -1
  122. package/dist/services/provider-resilience/request-gate.js +71 -23
  123. package/dist/services/provider-resilience/request-gate.js.map +1 -1
  124. package/dist/services/session-storage.d.ts +12 -5
  125. package/dist/services/session-storage.d.ts.map +1 -1
  126. package/dist/services/session-storage.js +124 -63
  127. package/dist/services/session-storage.js.map +1 -1
  128. package/dist/services/tool-allowlist.d.ts +4 -4
  129. package/dist/services/tool-allowlist.js +4 -4
  130. package/dist/services/web-search-adapters.d.ts.map +1 -1
  131. package/dist/services/web-search-adapters.js +24 -10
  132. package/dist/services/web-search-adapters.js.map +1 -1
  133. package/dist/services/web-search-mcp.d.ts.map +1 -1
  134. package/dist/services/web-search-mcp.js +13 -3
  135. package/dist/services/web-search-mcp.js.map +1 -1
  136. package/dist/services/workspace-containment.d.ts +8 -0
  137. package/dist/services/workspace-containment.d.ts.map +1 -0
  138. package/dist/services/workspace-containment.js +44 -0
  139. package/dist/services/workspace-containment.js.map +1 -0
  140. package/dist/terminal-ui/completion.d.ts.map +1 -1
  141. package/dist/terminal-ui/completion.js +5 -1
  142. package/dist/terminal-ui/completion.js.map +1 -1
  143. package/dist/terminal-ui/launch.d.ts +5 -0
  144. package/dist/terminal-ui/launch.d.ts.map +1 -1
  145. package/dist/terminal-ui/launch.js +53 -17
  146. package/dist/terminal-ui/launch.js.map +1 -1
  147. package/dist/tools/git.d.ts.map +1 -1
  148. package/dist/tools/git.js +47 -12
  149. package/dist/tools/git.js.map +1 -1
  150. package/dist/tools/index.d.ts.map +1 -1
  151. package/dist/tools/index.js +73 -64
  152. package/dist/tools/index.js.map +1 -1
  153. package/dist/tools/plan.d.ts.map +1 -1
  154. package/dist/tools/plan.js +7 -6
  155. package/dist/tools/plan.js.map +1 -1
  156. package/dist/tools/web.d.ts.map +1 -1
  157. package/dist/tools/web.js +11 -2
  158. package/dist/tools/web.js.map +1 -1
  159. package/dist/tui-ui/chrome-view-model.js +1 -1
  160. package/dist/tui-ui/chrome-view-model.js.map +1 -1
  161. package/dist/tui-ui/inline-surface.d.ts +1 -1
  162. package/dist/tui-ui/inline-surface.d.ts.map +1 -1
  163. package/dist/tui-ui/inline-surface.js +24 -16
  164. package/dist/tui-ui/inline-surface.js.map +1 -1
  165. package/dist/tui-ui/state.d.ts.map +1 -1
  166. package/dist/tui-ui/state.js +93 -13
  167. package/dist/tui-ui/state.js.map +1 -1
  168. package/dist/tui-ui/transcript-layout.d.ts.map +1 -1
  169. package/dist/tui-ui/transcript-layout.js +38 -29
  170. package/dist/tui-ui/transcript-layout.js.map +1 -1
  171. package/dist/ui/command-panel.d.ts +2 -0
  172. package/dist/ui/command-panel.d.ts.map +1 -1
  173. package/dist/ui/command-panel.js +46 -20
  174. package/dist/ui/command-panel.js.map +1 -1
  175. package/dist/ui/file-completion.d.ts.map +1 -1
  176. package/dist/ui/file-completion.js +12 -6
  177. package/dist/ui/file-completion.js.map +1 -1
  178. package/dist/ui/shared/command-palette.d.ts.map +1 -1
  179. package/dist/ui/shared/command-palette.js +13 -9
  180. package/dist/ui/shared/command-palette.js.map +1 -1
  181. package/dist/ui/shared/text.d.ts +2 -0
  182. package/dist/ui/shared/text.d.ts.map +1 -1
  183. package/dist/ui/shared/text.js +20 -12
  184. package/dist/ui/shared/text.js.map +1 -1
  185. package/dist/ui/suggestions.d.ts.map +1 -1
  186. package/dist/ui/suggestions.js +7 -6
  187. package/dist/ui/suggestions.js.map +1 -1
  188. package/npm-shrinkwrap.json +7148 -0
  189. package/package.json +13 -7
  190. package/dist/ink/index.d.ts +0 -54
  191. package/dist/ink/index.d.ts.map +0 -1
  192. package/dist/ink/index.js +0 -111
  193. package/dist/ink/index.js.map +0 -1
  194. package/dist/ui-v2/components/command-palette.d.ts +0 -2
  195. package/dist/ui-v2/components/command-palette.d.ts.map +0 -1
  196. package/dist/ui-v2/components/command-palette.js +0 -18
  197. package/dist/ui-v2/components/command-palette.js.map +0 -1
  198. package/dist/ui-v2/components/edit-preview-picker.d.ts +0 -26
  199. package/dist/ui-v2/components/edit-preview-picker.d.ts.map +0 -1
  200. package/dist/ui-v2/components/edit-preview-picker.js +0 -79
  201. package/dist/ui-v2/components/edit-preview-picker.js.map +0 -1
  202. package/dist/ui-v2/components/session-picker.d.ts +0 -19
  203. package/dist/ui-v2/components/session-picker.d.ts.map +0 -1
  204. package/dist/ui-v2/components/session-picker.js +0 -52
  205. package/dist/ui-v2/components/session-picker.js.map +0 -1
  206. package/dist/ui-v2/components/shell.d.ts +0 -36
  207. package/dist/ui-v2/components/shell.d.ts.map +0 -1
  208. package/dist/ui-v2/components/shell.js +0 -131
  209. package/dist/ui-v2/components/shell.js.map +0 -1
  210. package/dist/ui-v2/index.d.ts +0 -11
  211. package/dist/ui-v2/index.d.ts.map +0 -1
  212. package/dist/ui-v2/index.js +0 -27
  213. package/dist/ui-v2/index.js.map +0 -1
  214. package/dist/ui-v2/runtime/text.d.ts +0 -2
  215. package/dist/ui-v2/runtime/text.d.ts.map +0 -1
  216. package/dist/ui-v2/runtime/text.js +0 -18
  217. package/dist/ui-v2/runtime/text.js.map +0 -1
  218. package/dist/ui-v2/state/input-reducer.d.ts +0 -39
  219. package/dist/ui-v2/state/input-reducer.d.ts.map +0 -1
  220. package/dist/ui-v2/state/input-reducer.js +0 -82
  221. package/dist/ui-v2/state/input-reducer.js.map +0 -1
  222. package/dist/ui-v2/state/picker.d.ts +0 -16
  223. package/dist/ui-v2/state/picker.d.ts.map +0 -1
  224. package/dist/ui-v2/state/picker.js +0 -52
  225. package/dist/ui-v2/state/picker.js.map +0 -1
  226. package/dist/ui-v2/state/sessions.d.ts +0 -15
  227. package/dist/ui-v2/state/sessions.d.ts.map +0 -1
  228. package/dist/ui-v2/state/sessions.js +0 -70
  229. package/dist/ui-v2/state/sessions.js.map +0 -1
  230. package/dist/ui-v2/state/suggestions.d.ts +0 -2
  231. package/dist/ui-v2/state/suggestions.d.ts.map +0 -1
  232. package/dist/ui-v2/state/suggestions.js +0 -18
  233. package/dist/ui-v2/state/suggestions.js.map +0 -1
  234. package/dist/ui-v2/types.d.ts +0 -2
  235. package/dist/ui-v2/types.d.ts.map +0 -1
  236. package/dist/ui-v2/types.js +0 -18
  237. package/dist/ui-v2/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-agents/orion-code",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Orion Code - goal-driven coding agent for the terminal.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,24 +10,25 @@
10
10
  "files": [
11
11
  "dist/",
12
12
  "bin/",
13
- "assets/",
13
+ "assets/orion-tui-icon.png",
14
14
  "LICENSE",
15
15
  "README.md",
16
- "README.zh-CN.md"
16
+ "README.zh-CN.md",
17
+ "npm-shrinkwrap.json"
17
18
  ],
18
19
  "scripts": {
19
20
  "start": "ts-node src/cli.ts",
20
21
  "dev": "nodemon src/cli.ts",
21
22
  "cli": "ts-node src/cli.ts",
22
- "clean": "node scripts/clean-dist.js",
23
+ "clean": "node scripts/maintenance/clean-dist.js",
23
24
  "build": "npm run clean && tsc",
24
25
  "test": "jest",
25
26
  "test:coverage": "jest --coverage",
26
27
  "test:ink-compat": "ORION_RUN_DEPRECATED_INK_PTY=1 jest tests/ink-ui-pty.test.ts --runInBand",
27
- "deps:check": "bash scripts/dep-health-check.sh",
28
+ "deps:check": "bash scripts/release/dep-health-check.sh",
28
29
  "lint": "eslint src/",
29
30
  "format": "prettier --write src/",
30
- "release:check": "node scripts/release-check.js",
31
+ "release:check": "node scripts/release/release-check.js",
31
32
  "prepack": "npm run build",
32
33
  "prepublishOnly": "npm run deps:check -- --policy-only && npm run lint && npm run build && npm run release:check -- --skip-tests && npm run test:coverage -- --runInBand"
33
34
  },
@@ -103,5 +104,10 @@
103
104
  },
104
105
  "engines": {
105
106
  "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
106
- }
107
+ },
108
+ "directories": {
109
+ "doc": "docs",
110
+ "test": "tests"
111
+ },
112
+ "type": "commonjs"
107
113
  }
@@ -1,54 +0,0 @@
1
- /**
2
- * Orion Code - Minimal Terminal UI Utilities
3
- *
4
- * 简化的终端 UI 工具,不依赖 React hooks
5
- */
6
- export declare const COLORS: {
7
- black: string;
8
- red: string;
9
- green: string;
10
- yellow: string;
11
- blue: string;
12
- magenta: string;
13
- cyan: string;
14
- white: string;
15
- gray: string;
16
- brightRed: string;
17
- brightGreen: string;
18
- brightYellow: string;
19
- brightBlue: string;
20
- brightMagenta: string;
21
- brightCyan: string;
22
- brightWhite: string;
23
- };
24
- export declare const STYLES: {
25
- bold: string;
26
- dim: string;
27
- italic: string;
28
- underline: string;
29
- reset: string;
30
- };
31
- export declare const CURSOR: {
32
- hide: string;
33
- show: string;
34
- };
35
- export declare const SCREEN: {
36
- clear: string;
37
- home: string;
38
- clearLine: string;
39
- };
40
- export declare const SPINNER_FRAMES: string[];
41
- export declare function createSpinner(onUpdate: (frame: string) => void): {
42
- start: () => void;
43
- stop: () => void;
44
- };
45
- export declare function setupRawInput(onChar: (char: string, key: {
46
- name: string;
47
- ctrl: boolean;
48
- }) => void): {
49
- cleanup: () => void;
50
- };
51
- export declare function clearScreen(): void;
52
- export declare function hideCursor(): void;
53
- export declare function showCursor(): void;
54
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAiBlB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;CAIlB,CAAC;AAMF,eAAO,MAAM,cAAc,UAAqD,CAAC;AAEjF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAkBxG;AAMD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GACnE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA0BzB;AAMD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
package/dist/ink/index.js DELETED
@@ -1,111 +0,0 @@
1
- "use strict";
2
- /**
3
- * Orion Code - Minimal Terminal UI Utilities
4
- *
5
- * 简化的终端 UI 工具,不依赖 React hooks
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.SPINNER_FRAMES = exports.SCREEN = exports.CURSOR = exports.STYLES = exports.COLORS = void 0;
9
- exports.createSpinner = createSpinner;
10
- exports.setupRawInput = setupRawInput;
11
- exports.clearScreen = clearScreen;
12
- exports.hideCursor = hideCursor;
13
- exports.showCursor = showCursor;
14
- // ============================================================================
15
- // ANSI 颜色辅助函数
16
- // ============================================================================
17
- exports.COLORS = {
18
- black: '\x1b[30m',
19
- red: '\x1b[31m',
20
- green: '\x1b[32m',
21
- yellow: '\x1b[33m',
22
- blue: '\x1b[34m',
23
- magenta: '\x1b[35m',
24
- cyan: '\x1b[36m',
25
- white: '\x1b[37m',
26
- gray: '\x1b[90m',
27
- brightRed: '\x1b[91m',
28
- brightGreen: '\x1b[92m',
29
- brightYellow: '\x1b[93m',
30
- brightBlue: '\x1b[94m',
31
- brightMagenta: '\x1b[95m',
32
- brightCyan: '\x1b[96m',
33
- brightWhite: '\x1b[97m',
34
- };
35
- exports.STYLES = {
36
- bold: '\x1b[1m',
37
- dim: '\x1b[2m',
38
- italic: '\x1b[3m',
39
- underline: '\x1b[4m',
40
- reset: '\x1b[0m',
41
- };
42
- exports.CURSOR = {
43
- hide: '\x1b[?25l',
44
- show: '\x1b[?25h',
45
- };
46
- exports.SCREEN = {
47
- clear: '\x1b[2J',
48
- home: '\x1b[H',
49
- clearLine: '\x1b[2K',
50
- };
51
- // ============================================================================
52
- // Spinner
53
- // ============================================================================
54
- exports.SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
55
- function createSpinner(onUpdate) {
56
- let frameIndex = 0;
57
- let timer = null;
58
- return {
59
- start: () => {
60
- timer = setInterval(() => {
61
- frameIndex = (frameIndex + 1) % exports.SPINNER_FRAMES.length;
62
- onUpdate(exports.SPINNER_FRAMES[frameIndex]);
63
- }, 80);
64
- },
65
- stop: () => {
66
- if (timer) {
67
- clearInterval(timer);
68
- timer = null;
69
- }
70
- },
71
- };
72
- }
73
- // ============================================================================
74
- // 输入处理
75
- // ============================================================================
76
- function setupRawInput(onChar) {
77
- if (!process.stdin.isTTY) {
78
- return { cleanup: () => { } };
79
- }
80
- process.stdin.setRawMode(true);
81
- process.stdin.resume();
82
- process.stdin.setEncoding('utf8');
83
- const handler = (data) => {
84
- const char = data.charAt(0);
85
- const key = {
86
- name: char,
87
- ctrl: char === '\x03', // Ctrl+C
88
- };
89
- onChar(data, key);
90
- };
91
- process.stdin.on('data', handler);
92
- return {
93
- cleanup: () => {
94
- process.stdin.setRawMode(false);
95
- process.stdin.removeListener('data', handler);
96
- },
97
- };
98
- }
99
- // ============================================================================
100
- // 渲染辅助
101
- // ============================================================================
102
- function clearScreen() {
103
- process.stdout.write(exports.SCREEN.clear + exports.SCREEN.home);
104
- }
105
- function hideCursor() {
106
- process.stdout.write(exports.CURSOR.hide);
107
- }
108
- function showCursor() {
109
- process.stdout.write(exports.CURSOR.show);
110
- }
111
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ink/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAkDH,sCAkBC;AAMD,sCA4BC;AAMD,kCAEC;AAED,gCAEC;AAED,gCAEC;AApHD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAElE,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;CACxB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;CAClB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAElE,QAAA,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEjF,SAAgB,aAAa,CAAC,QAAiC;IAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAA0B,IAAI,CAAC;IAExC,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBACvB,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,sBAAc,CAAC,MAAM,CAAC;gBACtD,QAAQ,CAAC,sBAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YACvC,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,SAAgB,aAAa,CAC3B,MAAoE;IAEpE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,SAAS;SACjC,CAAC;QACF,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,SAAgB,WAAW;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,KAAK,GAAG,cAAM,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from '../../ui/shared/command-palette';
2
- //# sourceMappingURL=command-palette.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("../../ui/shared/command-palette"), exports);
18
- //# sourceMappingURL=command-palette.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD"}
@@ -1,26 +0,0 @@
1
- /**
2
- * UI v2 edit preview picker renderer.
3
- * Displays edit_file preview candidates in a structured picker UI.
4
- */
5
- import type { PaletteTheme } from '../types';
6
- export interface EditPreviewCandidate {
7
- index: number;
8
- line: number;
9
- match: string;
10
- contextBefore: string;
11
- contextAfter: string;
12
- isReplaceAll: boolean;
13
- }
14
- export interface RenderEditPreviewOptions {
15
- title?: string;
16
- path: string;
17
- newString: string;
18
- kind: 'exact' | 'fuzzy';
19
- candidates: EditPreviewCandidate[];
20
- selectedIndex?: number;
21
- maxVisibleItems?: number;
22
- width: number;
23
- theme: PaletteTheme;
24
- }
25
- export declare function renderEditPreview(options: RenderEditPreviewOptions): string[];
26
- //# sourceMappingURL=edit-preview-picker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit-preview-picker.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/edit-preview-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,UAAU,CAAC;AAG7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,EAAE,CAgC7E"}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- /**
3
- * UI v2 edit preview picker renderer.
4
- * Displays edit_file preview candidates in a structured picker UI.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.renderEditPreview = renderEditPreview;
8
- const command_palette_1 = require("./command-palette");
9
- function renderEditPreview(options) {
10
- const selectedIndex = clamp(options.selectedIndex ?? 0, 0, Math.max(0, options.candidates.length - 1));
11
- const maxVisibleItems = options.maxVisibleItems && options.maxVisibleItems > 0
12
- ? Math.floor(options.maxVisibleItems)
13
- : options.candidates.length;
14
- const items = buildCandidateItems(options);
15
- const windowStart = getPickerWindowStart(selectedIndex, items.length, maxVisibleItems);
16
- const windowEnd = Math.min(items.length, windowStart + maxVisibleItems);
17
- const visibleItems = items.slice(windowStart, windowEnd);
18
- const viewportLabel = items.length > visibleItems.length
19
- ? `Showing ${windowStart + 1}-${windowEnd}/${items.length}`
20
- : undefined;
21
- const header = `${options.path} (${options.kind})`;
22
- const title = options.title ?? `Edit Preview: ${header}`;
23
- const footer = [
24
- ' ↑↓ Select Enter Apply Esc Cancel',
25
- viewportLabel,
26
- ].filter(Boolean).join(' ');
27
- return (0, command_palette_1.renderCommandPalette)({
28
- title,
29
- items: visibleItems,
30
- selectedIndex: selectedIndex - windowStart,
31
- width: options.width,
32
- emptyLabel: 'No matches found',
33
- footer,
34
- theme: options.theme,
35
- });
36
- }
37
- function buildCandidateItems(options) {
38
- const { candidates, newString } = options;
39
- const maxMatchPreview = 60;
40
- return candidates.map(c => {
41
- const matchPreview = c.match.length > maxMatchPreview
42
- ? c.match.slice(0, maxMatchPreview) + '...'
43
- : c.match;
44
- const newPreview = newString.length > maxMatchPreview
45
- ? newString.slice(0, maxMatchPreview) + '...'
46
- : newString;
47
- const lines = [];
48
- if (c.contextBefore) {
49
- lines.push(c.contextBefore.split('\n').slice(-2).join(' | '));
50
- }
51
- lines.push(`→ ${matchPreview}`);
52
- if (c.contextAfter) {
53
- lines.push(c.contextAfter.split('\n').slice(0, 2).join(' | '));
54
- }
55
- const label = `Line ${c.line}`;
56
- const description = c.isReplaceAll ? 'replace all' : `→ ${newPreview}`;
57
- return {
58
- id: `candidate-${c.index}`,
59
- kind: 'edit',
60
- label,
61
- description,
62
- detail: lines.join(' | '),
63
- };
64
- });
65
- }
66
- function getPickerWindowStart(selectedIndex, total, maxVisibleItems) {
67
- if (total <= 0 || maxVisibleItems <= 0 || total <= maxVisibleItems)
68
- return 0;
69
- const clamped = clamp(selectedIndex, 0, total - 1);
70
- if (clamped < maxVisibleItems)
71
- return 0;
72
- return Math.min(total - maxVisibleItems, clamped - maxVisibleItems + 1);
73
- }
74
- function clamp(value, min, max) {
75
- if (max < min)
76
- return min;
77
- return Math.max(min, Math.min(max, value));
78
- }
79
- //# sourceMappingURL=edit-preview-picker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit-preview-picker.js","sourceRoot":"","sources":["../../../src/ui-v2/components/edit-preview-picker.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * UI v2 session picker renderer.
3
- */
4
- import type { SessionMeta } from '../../services/session-storage';
5
- import type { PaletteTheme } from '../types';
6
- export interface RenderSessionPickerOptions {
7
- title?: string;
8
- sessions: SessionMeta[];
9
- selectedIndex?: number;
10
- maxVisibleItems?: number;
11
- width: number;
12
- showProject?: boolean;
13
- moreCount?: number;
14
- footer?: string;
15
- theme: PaletteTheme;
16
- }
17
- export declare function renderSessionPicker(options: RenderSessionPickerOptions): string[];
18
- export declare function getSessionWindowStart(selectedIndex: number, total: number, maxVisibleItems: number): number;
19
- //# sourceMappingURL=session-picker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-picker.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CA6BjF;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAK3G"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- /**
3
- * UI v2 session picker renderer.
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderSessionPicker = renderSessionPicker;
7
- exports.getSessionWindowStart = getSessionWindowStart;
8
- const command_palette_1 = require("./command-palette");
9
- const sessions_1 = require("../state/sessions");
10
- function renderSessionPicker(options) {
11
- const selectedIndex = clamp(options.selectedIndex ?? 0, 0, Math.max(0, options.sessions.length - 1));
12
- const maxVisibleItems = options.maxVisibleItems && options.maxVisibleItems > 0
13
- ? Math.floor(options.maxVisibleItems)
14
- : options.sessions.length;
15
- const windowStart = getSessionWindowStart(selectedIndex, options.sessions.length, maxVisibleItems);
16
- const windowEnd = Math.min(options.sessions.length, windowStart + maxVisibleItems);
17
- const allItems = (0, sessions_1.buildSessionSuggestions)(options.sessions, {
18
- showProject: options.showProject,
19
- });
20
- const visibleItems = allItems.slice(windowStart, windowEnd);
21
- const viewportLabel = options.sessions.length > visibleItems.length
22
- ? `Showing ${windowStart + 1}-${windowEnd}/${options.sessions.length}`
23
- : undefined;
24
- const footer = [
25
- options.footer ?? ' ↑↓ Select Enter Resume Esc Cancel',
26
- viewportLabel,
27
- ].filter(Boolean).join(' ');
28
- return (0, command_palette_1.renderCommandPalette)({
29
- title: options.title ?? 'Pick a Session',
30
- items: visibleItems,
31
- selectedIndex: selectedIndex - windowStart,
32
- width: options.width,
33
- moreCount: options.moreCount,
34
- emptyLabel: 'No sessions found',
35
- footer,
36
- theme: options.theme,
37
- });
38
- }
39
- function getSessionWindowStart(selectedIndex, total, maxVisibleItems) {
40
- if (total <= 0 || maxVisibleItems <= 0 || total <= maxVisibleItems)
41
- return 0;
42
- const clamped = clamp(selectedIndex, 0, total - 1);
43
- if (clamped < maxVisibleItems)
44
- return 0;
45
- return Math.min(total - maxVisibleItems, clamped - maxVisibleItems + 1);
46
- }
47
- function clamp(value, min, max) {
48
- if (max < min)
49
- return min;
50
- return Math.max(min, Math.min(max, value));
51
- }
52
- //# sourceMappingURL=session-picker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-picker.js","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAmBH,kDA6BC;AAED,sDAKC;AAnDD,uDAAyD;AACzD,gDAA4D;AAc5D,SAAgB,mBAAmB,CAAC,OAAmC;IACrE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC;QAC5E,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B,MAAM,WAAW,GAAG,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,IAAA,kCAAuB,EAAC,OAAO,CAAC,QAAQ,EAAE;QACzD,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;QACjE,CAAC,CAAC,WAAW,WAAW,GAAG,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;QACtE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,MAAM,GAAG;QACb,OAAO,CAAC,MAAM,IAAI,uCAAuC;QACzD,aAAa;KACd,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO,IAAA,sCAAoB,EAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB;QACxC,KAAK,EAAE,YAAY;QACnB,aAAa,EAAE,aAAa,GAAG,WAAW;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,KAAa,EAAE,eAAuB;IACjG,IAAI,KAAK,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,KAAK,IAAI,eAAe;QAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,eAAe;QAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,eAAe,EAAE,OAAO,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,IAAI,GAAG,GAAG,GAAG;QAAE,OAAO,GAAG,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,36 +0,0 @@
1
- /**
2
- * UI v2 visible shell components.
3
- */
4
- export { renderV2InputFrame, renderV2Prompt, type V2InputFrameOptions, type V2InputFrameRender, } from '../../ui/shared/input-frame';
5
- export interface V2ShellHeaderConfig {
6
- provider: string;
7
- model: string;
8
- projectPath: string;
9
- status: 'ready' | 'loading' | 'error' | 'processing';
10
- statusText?: string;
11
- version: string;
12
- width?: number;
13
- }
14
- export interface V2StatusLineStats {
15
- model: string;
16
- tokens: number;
17
- promptTokens: number;
18
- completionTokens: number;
19
- cost: number;
20
- ctxPercent: number;
21
- mcpConnected: number;
22
- mcpTotal: number;
23
- sessionId?: string;
24
- modeText?: string;
25
- width?: number;
26
- }
27
- export interface V2ShortcutItem {
28
- key: string;
29
- label: string;
30
- }
31
- export declare function renderV2ShellHeader(config: V2ShellHeaderConfig): string;
32
- export declare function renderV2StatusBadge(stats: V2StatusLineStats): string;
33
- export declare function renderV2StatusLine(stats: V2StatusLineStats): string;
34
- export declare function renderV2FooterHint(width?: number): string;
35
- export declare function renderV2Shortcuts(width?: number): string;
36
- //# sourceMappingURL=shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AAsBrC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAInE;AAaD,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAetF"}
@@ -1,131 +0,0 @@
1
- "use strict";
2
- /**
3
- * UI v2 visible shell components.
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.renderV2Prompt = exports.renderV2InputFrame = void 0;
10
- exports.renderV2ShellHeader = renderV2ShellHeader;
11
- exports.renderV2StatusBadge = renderV2StatusBadge;
12
- exports.renderV2StatusLine = renderV2StatusLine;
13
- exports.renderV2FooterHint = renderV2FooterHint;
14
- exports.renderV2Shortcuts = renderV2Shortcuts;
15
- const path_1 = require("path");
16
- const chalk_1 = __importDefault(require("chalk"));
17
- const text_1 = require("../runtime/text");
18
- var input_frame_1 = require("../../ui/shared/input-frame");
19
- Object.defineProperty(exports, "renderV2InputFrame", { enumerable: true, get: function () { return input_frame_1.renderV2InputFrame; } });
20
- Object.defineProperty(exports, "renderV2Prompt", { enumerable: true, get: function () { return input_frame_1.renderV2Prompt; } });
21
- const NO_COLOR = process.env.NO_COLOR !== undefined || process.env.TERM === 'dumb';
22
- const colorize = NO_COLOR ? {
23
- brand: (s) => s,
24
- accent: (s) => s,
25
- dim: (s) => s,
26
- success: (s) => s,
27
- warn: (s) => s,
28
- danger: (s) => s,
29
- label: (s) => s,
30
- } : {
31
- brand: chalk_1.default.hex('#FF6B35').bold,
32
- accent: chalk_1.default.hex('#00D4AA'),
33
- dim: chalk_1.default.dim,
34
- success: chalk_1.default.green,
35
- warn: chalk_1.default.yellow,
36
- danger: chalk_1.default.red,
37
- label: chalk_1.default.hex('#94A3B8'),
38
- };
39
- const DEFAULT_SHORTCUTS = [
40
- { key: '/', label: 'commands' },
41
- { key: '@', label: 'files' },
42
- { key: 'Ctrl+R', label: 'history' },
43
- { key: 'Ctrl+L', label: 'clear view' },
44
- { key: '?', label: 'shortcuts' },
45
- { key: 'Ctrl+C', label: 'exit' },
46
- ];
47
- function renderV2ShellHeader(config) {
48
- const width = Math.max(44, config.width || process.stdout.columns || 80);
49
- const innerWidth = Math.max(24, width - 4);
50
- const title = `Orion Code v${config.version}`;
51
- const topFill = Math.max(1, innerWidth - (0, text_1.visualWidth)(title) - 3);
52
- const projectName = (0, path_1.basename)(config.projectPath) || config.projectPath;
53
- const status = renderStatus(config.status, config.statusText);
54
- const body = [
55
- renderToken('model', config.model),
56
- renderToken('provider', shortProvider(config.provider)),
57
- renderToken('project', projectName),
58
- status,
59
- ].filter(Boolean).join(colorize.dim(' | '));
60
- return [
61
- colorize.dim(`╭─ ${colorize.brand(title)} ${'─'.repeat(topFill)}╮`),
62
- colorize.dim('│ ') + (0, text_1.padEndVisible)((0, text_1.truncateVisible)(body, innerWidth - 2), innerWidth - 2) + colorize.dim(' │'),
63
- colorize.dim(`╰${'─'.repeat(innerWidth)}╯`),
64
- ].join('\n');
65
- }
66
- function renderV2StatusBadge(stats) {
67
- const width = Math.max(20, stats.width || process.stdout.columns || 80);
68
- const parts = buildStatusParts(stats).join(colorize.dim(' '));
69
- return (0, text_1.truncateVisible)(parts, Math.max(1, width));
70
- }
71
- function renderV2StatusLine(stats) {
72
- const width = Math.max(44, stats.width || process.stdout.columns || 80);
73
- const content = buildStatusParts(stats).join(colorize.dim(' '));
74
- return colorize.dim(' ') + (0, text_1.truncateVisible)(content, Math.max(1, width - 2));
75
- }
76
- function buildStatusParts(stats) {
77
- return [
78
- renderToken('model', stats.model),
79
- stats.sessionId ? renderToken('session', stats.sessionId.slice(0, 8)) : '',
80
- renderToken('tokens', formatTokens(stats.tokens)),
81
- stats.ctxPercent > 0 ? renderToken('ctx', `${stats.ctxPercent}%`) : '',
82
- stats.mcpTotal > 0 ? renderToken('mcp', `${stats.mcpConnected}/${stats.mcpTotal}`) : '',
83
- stats.modeText ? renderToken('mode', stats.modeText) : '',
84
- ].filter(Boolean);
85
- }
86
- function renderV2FooterHint(width = process.stdout.columns || 80) {
87
- const text = DEFAULT_SHORTCUTS
88
- .slice(0, 5)
89
- .map(item => `${colorize.accent(item.key)} ${colorize.label(item.label)}`)
90
- .join(colorize.dim(' '));
91
- return colorize.dim(' ') + (0, text_1.truncateVisible)(text, Math.max(1, width - 2));
92
- }
93
- function renderV2Shortcuts(width = process.stdout.columns || 80) {
94
- const innerWidth = Math.max(36, Math.min(width - 4, 72));
95
- const title = 'Shortcuts';
96
- const titleFill = Math.max(1, innerWidth - (0, text_1.visualWidth)(title) - 3);
97
- const rows = DEFAULT_SHORTCUTS.map(item => {
98
- const key = (0, text_1.padEndVisible)(item.key, 8);
99
- const content = `${colorize.accent(key)} ${colorize.label(item.label)}`;
100
- return colorize.dim('│ ') + (0, text_1.padEndVisible)((0, text_1.truncateVisible)(content, innerWidth - 2), innerWidth - 2) + colorize.dim(' │');
101
- });
102
- return [
103
- colorize.dim(`┌─ ${title} ${'─'.repeat(titleFill)}┐`),
104
- ...rows,
105
- colorize.dim(`└${'─'.repeat(innerWidth)}┘`),
106
- ].join('\n');
107
- }
108
- function renderStatus(status, text) {
109
- const dot = status === 'ready'
110
- ? colorize.success('●')
111
- : status === 'loading'
112
- ? colorize.warn('●')
113
- : status === 'error'
114
- ? colorize.danger('●')
115
- : colorize.accent('●');
116
- return `${dot} ${colorize.label(text || status)}`;
117
- }
118
- function renderToken(label, value) {
119
- return `${colorize.label(label)}=${colorize.accent(value)}`;
120
- }
121
- function shortProvider(provider) {
122
- return provider === 'Alibaba Cloud' ? 'Qwen' : provider;
123
- }
124
- function formatTokens(tokens) {
125
- if (tokens >= 1000000)
126
- return `${(tokens / 1000000).toFixed(1)}M`;
127
- if (tokens >= 1000)
128
- return `${(tokens / 1000).toFixed(1)}K`;
129
- return String(tokens);
130
- }
131
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"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"}