@nghyane/arcane 0.1.12 → 0.1.14

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 (333) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.json +21 -70
  3. package/scripts/format-prompts.ts +1 -3
  4. package/src/cli/args.ts +2 -7
  5. package/src/cli/config-cli.ts +1 -1
  6. package/src/cli/plugin-cli.ts +1 -1
  7. package/src/cli/setup-cli.ts +1 -1
  8. package/src/cli/update-cli.ts +1 -1
  9. package/src/cli/web-search-cli.ts +1 -1
  10. package/src/cli.ts +0 -1
  11. package/src/commands/config.ts +1 -1
  12. package/src/commands/grep.ts +1 -1
  13. package/src/commands/jupyter.ts +1 -1
  14. package/src/commands/plugin.ts +1 -1
  15. package/src/commands/setup.ts +1 -1
  16. package/src/commands/shell.ts +1 -1
  17. package/src/commands/ssh.ts +1 -1
  18. package/src/commands/stats.ts +1 -1
  19. package/src/commands/update.ts +1 -1
  20. package/src/config/model-registry.ts +3 -4
  21. package/src/config/model-resolver.ts +36 -9
  22. package/src/config/prompt-templates.ts +1 -9
  23. package/src/config/settings-schema.ts +32 -88
  24. package/src/config/settings.ts +3 -4
  25. package/src/debug/index.ts +1 -1
  26. package/src/debug/log-formatting.ts +1 -1
  27. package/src/debug/log-viewer.ts +2 -2
  28. package/src/discovery/helpers.ts +13 -3
  29. package/src/exa/company.ts +2 -7
  30. package/src/exa/index.ts +1 -35
  31. package/src/exa/linkedin.ts +2 -7
  32. package/src/exa/mcp-client.ts +21 -11
  33. package/src/exa/render.ts +30 -190
  34. package/src/exa/researcher.ts +2 -12
  35. package/src/exa/search.ts +5 -25
  36. package/src/exa/types.ts +3 -3
  37. package/src/exec/bash-executor.ts +2 -1
  38. package/src/exec/non-interactive-env.ts +43 -0
  39. package/src/export/html/index.ts +1 -1
  40. package/src/extensibility/custom-tools/loader.ts +1 -1
  41. package/src/extensibility/custom-tools/types.ts +5 -1
  42. package/src/extensibility/custom-tools/wrapper.ts +1 -1
  43. package/src/extensibility/extensions/runner.ts +1 -1
  44. package/src/extensibility/extensions/types.ts +1 -1
  45. package/src/extensibility/extensions/wrapper.ts +7 -15
  46. package/src/extensibility/hooks/runner.ts +1 -1
  47. package/src/extensibility/hooks/types.ts +1 -1
  48. package/src/extensibility/plugins/doctor.ts +1 -1
  49. package/src/index.ts +13 -13
  50. package/src/lsp/index.ts +77 -24
  51. package/src/lsp/render.ts +34 -583
  52. package/src/lsp/types.ts +3 -3
  53. package/src/lsp/utils.ts +1 -1
  54. package/src/main.ts +1 -1
  55. package/src/mcp/tool-bridge.ts +1 -24
  56. package/src/modes/components/assistant-message.ts +7 -7
  57. package/src/modes/components/bash-execution.ts +48 -113
  58. package/src/modes/components/bordered-loader.ts +1 -1
  59. package/src/modes/components/branch-summary-message.ts +13 -10
  60. package/src/modes/components/compaction-summary-message.ts +14 -13
  61. package/src/modes/components/context-group.ts +106 -0
  62. package/src/modes/components/custom-message.ts +4 -5
  63. package/src/modes/components/diff.ts +2 -2
  64. package/src/modes/components/dynamic-border.ts +1 -1
  65. package/src/modes/components/extensions/extension-dashboard.ts +2 -2
  66. package/src/modes/components/extensions/extension-list.ts +1 -1
  67. package/src/modes/components/extensions/inspector-panel.ts +8 -3
  68. package/src/modes/components/footer.ts +2 -2
  69. package/src/modes/components/history-search.ts +1 -1
  70. package/src/modes/components/hook-editor.ts +1 -1
  71. package/src/modes/components/hook-input.ts +1 -1
  72. package/src/modes/components/hook-message.ts +4 -5
  73. package/src/modes/components/hook-selector.ts +1 -1
  74. package/src/modes/components/index.ts +0 -2
  75. package/src/modes/components/keybinding-hints.ts +1 -1
  76. package/src/modes/components/login-dialog.ts +1 -1
  77. package/src/modes/components/mcp-add-wizard.ts +1 -1
  78. package/src/modes/components/model-selector.ts +1 -1
  79. package/src/modes/components/oauth-selector.ts +1 -1
  80. package/src/modes/components/plugin-settings.ts +1 -1
  81. package/src/modes/components/python-execution.ts +49 -92
  82. package/src/modes/components/queue-mode-selector.ts +1 -1
  83. package/src/modes/components/session-selector.ts +1 -1
  84. package/src/modes/components/settings-defs.ts +5 -10
  85. package/src/modes/components/settings-selector.ts +1 -1
  86. package/src/modes/components/show-images-selector.ts +1 -1
  87. package/src/modes/components/skill-message.ts +4 -4
  88. package/src/modes/components/status-line/segments.ts +2 -2
  89. package/src/modes/components/status-line/separators.ts +1 -1
  90. package/src/modes/components/status-line-segment-editor.ts +1 -1
  91. package/src/modes/components/status-line.ts +1 -1
  92. package/src/modes/components/theme-selector.ts +1 -1
  93. package/src/modes/components/thinking-selector.ts +1 -1
  94. package/src/modes/components/todo-display.ts +2 -4
  95. package/src/modes/components/todo-reminder.ts +4 -4
  96. package/src/modes/components/tool-execution.ts +118 -440
  97. package/src/modes/components/tool-image-display.ts +107 -0
  98. package/src/modes/components/tree-selector.ts +2 -2
  99. package/src/modes/components/ttsr-notification.ts +4 -17
  100. package/src/modes/components/user-message-selector.ts +1 -1
  101. package/src/modes/components/user-message.ts +9 -10
  102. package/src/modes/components/welcome.ts +1 -1
  103. package/src/modes/controllers/command-controller.ts +1 -1
  104. package/src/modes/controllers/event-controller.ts +58 -187
  105. package/src/modes/controllers/extension-ui-controller.ts +1 -1
  106. package/src/modes/controllers/input-controller.ts +3 -1
  107. package/src/modes/controllers/mcp-command-controller.ts +1 -1
  108. package/src/modes/controllers/selector-controller.ts +3 -26
  109. package/src/modes/controllers/ssh-command-controller.ts +1 -1
  110. package/src/modes/interactive-mode.ts +3 -7
  111. package/src/modes/print-mode.ts +5 -5
  112. package/src/modes/rpc/rpc-mode.ts +1 -1
  113. package/src/modes/types.ts +1 -2
  114. package/src/modes/utils/ui-helpers.ts +34 -32
  115. package/src/patch/edit-tool.ts +742 -0
  116. package/src/patch/index.ts +32 -898
  117. package/src/patch/schemas.ts +208 -0
  118. package/src/patch/shared.ts +83 -151
  119. package/src/prompts/agents/explore.md +22 -37
  120. package/src/prompts/agents/frontmatter.md +1 -1
  121. package/src/prompts/agents/init.md +2 -2
  122. package/src/prompts/agents/librarian.md +30 -21
  123. package/src/prompts/agents/oracle.md +9 -2
  124. package/src/prompts/agents/reviewer.md +15 -49
  125. package/src/prompts/agents/task.md +17 -9
  126. package/src/prompts/compaction/branch-summary-context.md +1 -1
  127. package/src/prompts/compaction/branch-summary-preamble.md +1 -1
  128. package/src/prompts/compaction/branch-summary.md +4 -1
  129. package/src/prompts/compaction/compaction-short-summary.md +1 -1
  130. package/src/prompts/compaction/compaction-summary-context.md +1 -1
  131. package/src/prompts/compaction/compaction-summary.md +4 -1
  132. package/src/prompts/compaction/compaction-turn-prefix.md +1 -1
  133. package/src/prompts/compaction/compaction-update-summary.md +1 -1
  134. package/src/prompts/memories/consolidation.md +1 -1
  135. package/src/prompts/memories/read_path.md +1 -1
  136. package/src/prompts/memories/stage_one_input.md +1 -1
  137. package/src/prompts/memories/stage_one_system.md +1 -1
  138. package/src/prompts/review-request.md +1 -1
  139. package/src/prompts/system/agent-creation-architect.md +1 -1
  140. package/src/prompts/system/agent-creation-user.md +1 -1
  141. package/src/prompts/system/custom-system-prompt.md +1 -1
  142. package/src/prompts/system/file-operations.md +1 -1
  143. package/src/prompts/system/subagent-system-prompt.md +2 -2
  144. package/src/prompts/system/summarization-system.md +1 -1
  145. package/src/prompts/system/system-prompt.md +163 -178
  146. package/src/prompts/system/title-system.md +1 -1
  147. package/src/prompts/system/ttsr-interrupt.md +1 -1
  148. package/src/prompts/system/verification-reminder.md +6 -0
  149. package/src/prompts/system/web-search.md +1 -1
  150. package/src/sdk.ts +0 -9
  151. package/src/session/agent-session.ts +244 -1459
  152. package/src/session/auth-storage.ts +5 -0
  153. package/src/session/model-controller.ts +406 -0
  154. package/src/session/retry-utils.ts +71 -0
  155. package/src/session/session-manager.ts +22 -186
  156. package/src/session/session-types.ts +312 -0
  157. package/src/session/stats.ts +387 -0
  158. package/src/session/streaming-edit.ts +258 -0
  159. package/src/session/ttsr.ts +213 -0
  160. package/src/slash-commands/builtin-registry.ts +0 -8
  161. package/src/ssh/connection-manager.ts +1 -0
  162. package/src/stt/recorder.ts +2 -2
  163. package/src/system-prompt.ts +1 -14
  164. package/src/task/agents.ts +7 -33
  165. package/src/task/executor.ts +50 -438
  166. package/src/task/index.ts +104 -71
  167. package/src/task/progress-tracker.ts +390 -0
  168. package/src/task/render.ts +371 -187
  169. package/src/task/subprocess-tool-registry.ts +1 -1
  170. package/src/task/types.ts +14 -47
  171. package/src/tools/ask.ts +31 -42
  172. package/src/tools/bash-interactive.ts +4 -47
  173. package/src/tools/bash-interceptor.ts +2 -2
  174. package/src/tools/bash-normalize.ts +1 -1
  175. package/src/tools/bash-skill-urls.ts +2 -2
  176. package/src/tools/bash.ts +87 -136
  177. package/src/tools/browser.ts +54 -84
  178. package/src/tools/create-tools.ts +186 -0
  179. package/src/tools/default-renderer.ts +104 -0
  180. package/src/tools/explore.ts +11 -10
  181. package/src/tools/fetch.ts +24 -114
  182. package/src/tools/find.ts +48 -132
  183. package/src/tools/gemini-image.ts +5 -15
  184. package/src/tools/github.ts +450 -0
  185. package/src/tools/grep.ts +43 -179
  186. package/src/tools/index.ts +35 -198
  187. package/src/tools/json-tree.ts +3 -3
  188. package/src/tools/librarian.ts +18 -18
  189. package/src/tools/list-limit.ts +2 -2
  190. package/src/tools/notebook.ts +35 -87
  191. package/src/tools/oracle.ts +25 -25
  192. package/src/tools/output-meta.ts +89 -4
  193. package/src/tools/output-utils.ts +2 -2
  194. package/src/tools/python.ts +86 -637
  195. package/src/tools/read.ts +36 -119
  196. package/src/tools/reviewer-tool.ts +19 -21
  197. package/src/tools/search-code.ts +128 -0
  198. package/src/tools/ssh.ts +67 -126
  199. package/src/tools/subagent-tool.ts +197 -123
  200. package/src/tools/todo-write.ts +15 -31
  201. package/src/tools/tool-errors.ts +0 -30
  202. package/src/tools/undo-edit.ts +30 -67
  203. package/src/tools/write.ts +78 -127
  204. package/src/tui/code-cell.ts +4 -4
  205. package/src/tui/file-list.ts +2 -2
  206. package/src/tui/output-block.ts +1 -1
  207. package/src/tui/status-line.ts +1 -1
  208. package/src/tui/tree-list.ts +2 -2
  209. package/src/tui/types.ts +1 -1
  210. package/src/tui/utils.ts +1 -1
  211. package/src/{tools → ui}/render-utils.ts +87 -126
  212. package/src/utils/external-editor.ts +4 -4
  213. package/src/utils/file-mentions.ts +1 -1
  214. package/src/utils/index.ts +30 -0
  215. package/src/utils/tools-manager.ts +9 -19
  216. package/src/web/github-client.ts +290 -0
  217. package/src/web/scrapers/github.ts +11 -62
  218. package/src/web/search/auth.ts +1 -3
  219. package/src/web/search/index.ts +85 -49
  220. package/src/web/search/provider.ts +11 -16
  221. package/src/web/search/providers/grep.ts +160 -0
  222. package/src/web/search/render.ts +48 -235
  223. package/src/web/search/types.ts +1 -1
  224. package/src/commands/commit.ts +0 -36
  225. package/src/commit/agentic/agent.ts +0 -311
  226. package/src/commit/agentic/fallback.ts +0 -96
  227. package/src/commit/agentic/index.ts +0 -359
  228. package/src/commit/agentic/prompts/analyze-file.md +0 -22
  229. package/src/commit/agentic/prompts/session-user.md +0 -25
  230. package/src/commit/agentic/prompts/split-confirm.md +0 -1
  231. package/src/commit/agentic/prompts/system.md +0 -38
  232. package/src/commit/agentic/state.ts +0 -69
  233. package/src/commit/agentic/tools/analyze-file.ts +0 -118
  234. package/src/commit/agentic/tools/git-file-diff.ts +0 -194
  235. package/src/commit/agentic/tools/git-hunk.ts +0 -50
  236. package/src/commit/agentic/tools/git-overview.ts +0 -84
  237. package/src/commit/agentic/tools/index.ts +0 -56
  238. package/src/commit/agentic/tools/propose-changelog.ts +0 -128
  239. package/src/commit/agentic/tools/propose-commit.ts +0 -154
  240. package/src/commit/agentic/tools/recent-commits.ts +0 -81
  241. package/src/commit/agentic/tools/split-commit.ts +0 -280
  242. package/src/commit/agentic/topo-sort.ts +0 -44
  243. package/src/commit/agentic/trivial.ts +0 -51
  244. package/src/commit/agentic/validation.ts +0 -200
  245. package/src/commit/analysis/conventional.ts +0 -165
  246. package/src/commit/analysis/index.ts +0 -4
  247. package/src/commit/analysis/scope.ts +0 -242
  248. package/src/commit/analysis/summary.ts +0 -112
  249. package/src/commit/analysis/validation.ts +0 -66
  250. package/src/commit/changelog/detect.ts +0 -37
  251. package/src/commit/changelog/generate.ts +0 -110
  252. package/src/commit/changelog/index.ts +0 -234
  253. package/src/commit/changelog/parse.ts +0 -44
  254. package/src/commit/cli.ts +0 -93
  255. package/src/commit/git/diff.ts +0 -148
  256. package/src/commit/git/errors.ts +0 -9
  257. package/src/commit/git/index.ts +0 -211
  258. package/src/commit/git/operations.ts +0 -54
  259. package/src/commit/index.ts +0 -5
  260. package/src/commit/map-reduce/index.ts +0 -64
  261. package/src/commit/map-reduce/map-phase.ts +0 -178
  262. package/src/commit/map-reduce/reduce-phase.ts +0 -145
  263. package/src/commit/map-reduce/utils.ts +0 -9
  264. package/src/commit/message.ts +0 -11
  265. package/src/commit/model-selection.ts +0 -69
  266. package/src/commit/pipeline.ts +0 -243
  267. package/src/commit/prompts/analysis-system.md +0 -148
  268. package/src/commit/prompts/analysis-user.md +0 -38
  269. package/src/commit/prompts/changelog-system.md +0 -50
  270. package/src/commit/prompts/changelog-user.md +0 -18
  271. package/src/commit/prompts/file-observer-system.md +0 -24
  272. package/src/commit/prompts/file-observer-user.md +0 -8
  273. package/src/commit/prompts/reduce-system.md +0 -50
  274. package/src/commit/prompts/reduce-user.md +0 -17
  275. package/src/commit/prompts/summary-retry.md +0 -3
  276. package/src/commit/prompts/summary-system.md +0 -38
  277. package/src/commit/prompts/summary-user.md +0 -13
  278. package/src/commit/prompts/types-description.md +0 -2
  279. package/src/commit/types.ts +0 -109
  280. package/src/commit/utils/exclusions.ts +0 -42
  281. package/src/mcp/render.ts +0 -123
  282. package/src/modes/components/agent-dashboard.ts +0 -1130
  283. package/src/modes/components/codemode-group.ts +0 -369
  284. package/src/modes/components/read-tool-group.ts +0 -119
  285. package/src/modes/components/visual-truncate.ts +0 -63
  286. package/src/prompts/system/subagent-user-prompt.md +0 -8
  287. package/src/prompts/tools/ask.md +0 -44
  288. package/src/prompts/tools/bash.md +0 -24
  289. package/src/prompts/tools/browser.md +0 -33
  290. package/src/prompts/tools/calculator.md +0 -12
  291. package/src/prompts/tools/explore.md +0 -29
  292. package/src/prompts/tools/fetch.md +0 -16
  293. package/src/prompts/tools/find.md +0 -18
  294. package/src/prompts/tools/gemini-image.md +0 -23
  295. package/src/prompts/tools/grep.md +0 -28
  296. package/src/prompts/tools/hashline.md +0 -232
  297. package/src/prompts/tools/librarian.md +0 -24
  298. package/src/prompts/tools/lsp.md +0 -28
  299. package/src/prompts/tools/oracle.md +0 -26
  300. package/src/prompts/tools/patch.md +0 -74
  301. package/src/prompts/tools/python.md +0 -66
  302. package/src/prompts/tools/read.md +0 -36
  303. package/src/prompts/tools/replace.md +0 -38
  304. package/src/prompts/tools/reviewer.md +0 -41
  305. package/src/prompts/tools/ssh.md +0 -51
  306. package/src/prompts/tools/task-summary.md +0 -28
  307. package/src/prompts/tools/task.md +0 -146
  308. package/src/prompts/tools/todo-write.md +0 -65
  309. package/src/prompts/tools/undo-edit.md +0 -7
  310. package/src/prompts/tools/web-search.md +0 -19
  311. package/src/prompts/tools/write.md +0 -18
  312. package/src/task/batch.ts +0 -102
  313. package/src/task/discovery.ts +0 -126
  314. package/src/task/parallel.ts +0 -84
  315. package/src/task/template.ts +0 -32
  316. package/src/tools/calculator.ts +0 -537
  317. package/src/tools/jtd-to-typescript.ts +0 -198
  318. package/src/tools/renderers.ts +0 -60
  319. package/src/tools/tool-result.ts +0 -86
  320. /package/src/{modes/theme → theme}/dark.json +0 -0
  321. /package/src/{modes/theme → theme}/defaults/dark-catppuccin.json +0 -0
  322. /package/src/{modes/theme → theme}/defaults/dark-dracula.json +0 -0
  323. /package/src/{modes/theme → theme}/defaults/dark-gruvbox.json +0 -0
  324. /package/src/{modes/theme → theme}/defaults/dark-solarized.json +0 -0
  325. /package/src/{modes/theme → theme}/defaults/dark-tokyo-night.json +0 -0
  326. /package/src/{modes/theme → theme}/defaults/index.ts +0 -0
  327. /package/src/{modes/theme → theme}/defaults/light-catppuccin.json +0 -0
  328. /package/src/{modes/theme → theme}/defaults/light-github.json +0 -0
  329. /package/src/{modes/theme → theme}/defaults/light-solarized.json +0 -0
  330. /package/src/{modes/theme → theme}/light.json +0 -0
  331. /package/src/{modes/theme → theme}/mermaid-cache.ts +0 -0
  332. /package/src/{modes/theme → theme}/theme-schema.json +0 -0
  333. /package/src/{modes/theme → theme}/theme.ts +0 -0
@@ -1,198 +0,0 @@
1
- /**
2
- * Convert JSON Type Definition (JTD) to TypeScript interface notation.
3
- *
4
- * Produces human-readable TypeScript for embedding in system prompts,
5
- * helping models understand expected output structure.
6
- */
7
-
8
- type JTDPrimitive =
9
- | "boolean"
10
- | "string"
11
- | "timestamp"
12
- | "float32"
13
- | "float64"
14
- | "int8"
15
- | "uint8"
16
- | "int16"
17
- | "uint16"
18
- | "int32"
19
- | "uint32";
20
-
21
- interface JTDType {
22
- type: JTDPrimitive;
23
- }
24
-
25
- interface JTDEnum {
26
- enum: string[];
27
- }
28
-
29
- interface JTDElements {
30
- elements: JTDSchema;
31
- }
32
-
33
- interface JTDValues {
34
- values: JTDSchema;
35
- }
36
-
37
- interface JTDProperties {
38
- properties?: Record<string, JTDSchema>;
39
- optionalProperties?: Record<string, JTDSchema>;
40
- }
41
-
42
- interface JTDDiscriminator {
43
- discriminator: string;
44
- mapping: Record<string, JTDProperties>;
45
- }
46
-
47
- interface JTDRef {
48
- ref: string;
49
- }
50
-
51
- type JTDSchema = JTDType | JTDEnum | JTDElements | JTDValues | JTDProperties | JTDDiscriminator | JTDRef | object;
52
-
53
- const primitiveMap: Record<JTDPrimitive, string> = {
54
- boolean: "boolean",
55
- string: "string",
56
- timestamp: "string",
57
- float32: "number",
58
- float64: "number",
59
- int8: "number",
60
- uint8: "number",
61
- int16: "number",
62
- uint16: "number",
63
- int32: "number",
64
- uint32: "number",
65
- };
66
-
67
- function isJTDType(schema: unknown): schema is JTDType {
68
- return typeof schema === "object" && schema !== null && "type" in schema;
69
- }
70
-
71
- function isJTDEnum(schema: unknown): schema is JTDEnum {
72
- return typeof schema === "object" && schema !== null && "enum" in schema && Array.isArray((schema as JTDEnum).enum);
73
- }
74
-
75
- function isJTDElements(schema: unknown): schema is JTDElements {
76
- return typeof schema === "object" && schema !== null && "elements" in schema;
77
- }
78
-
79
- function isJTDValues(schema: unknown): schema is JTDValues {
80
- return typeof schema === "object" && schema !== null && "values" in schema;
81
- }
82
-
83
- function isJTDProperties(schema: unknown): schema is JTDProperties {
84
- return typeof schema === "object" && schema !== null && ("properties" in schema || "optionalProperties" in schema);
85
- }
86
-
87
- function isJTDDiscriminator(schema: unknown): schema is JTDDiscriminator {
88
- return typeof schema === "object" && schema !== null && "discriminator" in schema && "mapping" in schema;
89
- }
90
-
91
- function isJTDRef(schema: unknown): schema is JTDRef {
92
- return typeof schema === "object" && schema !== null && "ref" in schema;
93
- }
94
-
95
- function convertToTypeScript(schema: unknown, inline = false): string {
96
- if (schema === null || schema === undefined || (typeof schema === "object" && Object.keys(schema).length === 0)) {
97
- return "unknown";
98
- }
99
-
100
- if (isJTDType(schema)) {
101
- const tsType = primitiveMap[schema.type as JTDPrimitive];
102
- return tsType ?? "unknown";
103
- }
104
-
105
- if (isJTDEnum(schema)) {
106
- return schema.enum.map(v => `"${v}"`).join(" | ");
107
- }
108
-
109
- if (isJTDElements(schema)) {
110
- const itemType = convertToTypeScript(schema.elements, true);
111
- if (itemType.includes("\n") || itemType.length > 40) {
112
- return `Array<${itemType}>`;
113
- }
114
- return `${itemType}[]`;
115
- }
116
-
117
- if (isJTDValues(schema)) {
118
- const valueType = convertToTypeScript(schema.values, true);
119
- return `Record<string, ${valueType}>`;
120
- }
121
-
122
- if (isJTDProperties(schema)) {
123
- const lines: string[] = [];
124
- lines.push("{");
125
-
126
- if (schema.properties) {
127
- for (const [key, value] of Object.entries(schema.properties)) {
128
- const propType = convertToTypeScript(value, true);
129
- const safeName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) ? key : `"${key}"`;
130
- lines.push(` ${safeName}: ${propType};`);
131
- }
132
- }
133
-
134
- if (schema.optionalProperties) {
135
- for (const [key, value] of Object.entries(schema.optionalProperties)) {
136
- const propType = convertToTypeScript(value, true);
137
- const safeName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) ? key : `"${key}"`;
138
- lines.push(` ${safeName}?: ${propType};`);
139
- }
140
- }
141
-
142
- lines.push("}");
143
-
144
- if (inline && lines.length <= 4) {
145
- // Compact single-line for small objects
146
- const props = lines.slice(1, -1).map(l => l.trim());
147
- if (props.join(" ").length < 60) {
148
- return `{ ${props.join(" ")} }`;
149
- }
150
- }
151
-
152
- return lines.join("\n");
153
- }
154
-
155
- if (isJTDDiscriminator(schema)) {
156
- const variants: string[] = [];
157
- for (const [tag, props] of Object.entries(schema.mapping)) {
158
- const propsType = convertToTypeScript(props, true);
159
- if (propsType === "{}") {
160
- variants.push(`{ ${schema.discriminator}: "${tag}" }`);
161
- } else {
162
- // Merge discriminator into props
163
- const inner = propsType.slice(1, -1).trim();
164
- variants.push(`{ ${schema.discriminator}: "${tag}"; ${inner} }`);
165
- }
166
- }
167
- return variants.join(" | ");
168
- }
169
-
170
- if (isJTDRef(schema)) {
171
- return schema.ref;
172
- }
173
-
174
- return "unknown";
175
- }
176
-
177
- /**
178
- * Convert JTD schema to TypeScript interface string.
179
- *
180
- * @example
181
- * ```ts
182
- * const schema = {
183
- * properties: {
184
- * name: { type: "string" },
185
- * count: { type: "int32" }
186
- * }
187
- * };
188
- * jtdToTypeScript(schema);
189
- * // Returns:
190
- * // {
191
- * // name: string;
192
- * // count: number;
193
- * // }
194
- * ```
195
- */
196
- export function jtdToTypeScript(schema: unknown): string {
197
- return convertToTypeScript(schema, false);
198
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * TUI renderers for built-in tools.
3
- *
4
- * These provide rich visualization for tool calls and results in the TUI.
5
- */
6
- import type { Component } from "@nghyane/arcane-tui";
7
- import type { RenderResultOptions } from "../extensibility/custom-tools/types";
8
- import { lspToolRenderer } from "../lsp/render";
9
- import type { Theme } from "../modes/theme/theme";
10
- import { editToolRenderer } from "../patch";
11
- import { taskToolRenderer } from "../task/render";
12
- import { webSearchToolRenderer } from "../web/search/render";
13
- import { askToolRenderer } from "./ask";
14
- import { bashToolRenderer } from "./bash";
15
- import { calculatorToolRenderer } from "./calculator";
16
- import { fetchToolRenderer } from "./fetch";
17
- import { findToolRenderer } from "./find";
18
- import { grepToolRenderer } from "./grep";
19
- import { notebookToolRenderer } from "./notebook";
20
- import { pythonToolRenderer } from "./python";
21
- import { readToolRenderer } from "./read";
22
- import { sshToolRenderer } from "./ssh";
23
- import { todoWriteToolRenderer } from "./todo-write";
24
- import { undoEditToolRenderer } from "./undo-edit";
25
- import { writeToolRenderer } from "./write";
26
-
27
- type ToolRenderer = {
28
- renderCall: (args: unknown, options: RenderResultOptions, theme: Theme) => Component;
29
- renderResult: (
30
- result: { content: Array<{ type: string; text?: string }>; details?: unknown; isError?: boolean },
31
- options: RenderResultOptions & { renderContext?: Record<string, unknown> },
32
- theme: Theme,
33
- args?: unknown,
34
- ) => Component;
35
- mergeCallAndResult?: boolean;
36
- /** Render without background box, inline in the response flow */
37
- inline?: boolean;
38
- };
39
-
40
- export const toolRenderers: Record<string, ToolRenderer> = {
41
- ask: askToolRenderer as ToolRenderer,
42
- bash: bashToolRenderer as ToolRenderer,
43
- python: pythonToolRenderer as ToolRenderer,
44
- calc: calculatorToolRenderer as ToolRenderer,
45
- edit: editToolRenderer as ToolRenderer,
46
- find: findToolRenderer as ToolRenderer,
47
- grep: grepToolRenderer as ToolRenderer,
48
- lsp: lspToolRenderer as ToolRenderer,
49
- notebook: notebookToolRenderer as ToolRenderer,
50
- read: readToolRenderer as ToolRenderer,
51
- ssh: sshToolRenderer as ToolRenderer,
52
- task: taskToolRenderer as ToolRenderer,
53
- explore: taskToolRenderer as ToolRenderer,
54
- review: taskToolRenderer as ToolRenderer,
55
- todo_write: todoWriteToolRenderer as ToolRenderer,
56
- undo_edit: undoEditToolRenderer as ToolRenderer,
57
- fetch: fetchToolRenderer as ToolRenderer,
58
- web_search: webSearchToolRenderer as ToolRenderer,
59
- write: writeToolRenderer as ToolRenderer,
60
- };
@@ -1,86 +0,0 @@
1
- import type { AgentToolResult } from "@nghyane/arcane-agent";
2
- import type { ImageContent, TextContent } from "@nghyane/arcane-ai";
3
- import type { OutputSummary, TruncationResult } from "../session/streaming-output";
4
- import type { OutputMeta, TruncationOptions, TruncationSummaryOptions, TruncationTextOptions } from "./output-meta";
5
- import { outputMeta } from "./output-meta";
6
-
7
- type ToolContent = Array<TextContent | ImageContent>;
8
-
9
- type DetailsWithMeta = { meta?: OutputMeta };
10
-
11
- export class ToolResultBuilder<TDetails extends DetailsWithMeta> {
12
- #details: TDetails;
13
- #meta = outputMeta();
14
- #content: ToolContent = [];
15
-
16
- constructor(details?: TDetails) {
17
- this.#details = details ?? ({} as TDetails);
18
- }
19
-
20
- text(text: string): this {
21
- this.#content = [{ type: "text", text }];
22
- return this;
23
- }
24
-
25
- content(content: ToolContent): this {
26
- this.#content = content;
27
- return this;
28
- }
29
-
30
- truncation(result: TruncationResult, options: TruncationOptions): this {
31
- this.#meta.truncation(result, options);
32
- return this;
33
- }
34
-
35
- truncationFromSummary(summary: OutputSummary, options: TruncationSummaryOptions): this {
36
- this.#meta.truncationFromSummary(summary, options);
37
- return this;
38
- }
39
-
40
- truncationFromText(text: string, options: TruncationTextOptions): this {
41
- this.#meta.truncationFromText(text, options);
42
- return this;
43
- }
44
-
45
- limits(limits: { matchLimit?: number; resultLimit?: number; headLimit?: number; columnMax?: number }): this {
46
- this.#meta.limits(limits);
47
- return this;
48
- }
49
-
50
- sourceUrl(value: string): this {
51
- this.#meta.sourceUrl(value);
52
- return this;
53
- }
54
-
55
- sourcePath(value: string): this {
56
- this.#meta.sourcePath(value);
57
- return this;
58
- }
59
-
60
- sourceInternal(value: string): this {
61
- this.#meta.sourceInternal(value);
62
- return this;
63
- }
64
-
65
- diagnostics(summary: string, messages: string[]): this {
66
- this.#meta.diagnostics(summary, messages);
67
- return this;
68
- }
69
-
70
- done(): AgentToolResult<TDetails> {
71
- const meta = this.#meta.get();
72
- if (meta) {
73
- this.#details.meta = meta;
74
- }
75
- const hasDetails = Object.entries(this.#details).some(([, value]) => value !== undefined);
76
-
77
- return {
78
- content: this.#content,
79
- details: hasDetails ? this.#details : undefined,
80
- };
81
- }
82
- }
83
-
84
- export function toolResult<TDetails extends DetailsWithMeta>(details?: TDetails): ToolResultBuilder<TDetails> {
85
- return new ToolResultBuilder(details);
86
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes