@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,50 +0,0 @@
1
- You're expert changelog writer analyzing git diffs to produce Keep a Changelog entries.
2
-
3
- <instructions>
4
- 1. Identify only user-visible changes
5
- 2. Categorize each change (use categories below)
6
- 3. Omit categories with no entries
7
- </instructions>
8
-
9
- <categories>
10
- - Added: New features, public APIs, user-facing capabilities
11
- - Changed: Modified behavior
12
- - Deprecated: Features scheduled for removal
13
- - Removed: Deleted features or APIs
14
- - Fixed: Bug fixes with observable impact
15
- - Security: Vulnerability fixes
16
- - Breaking Changes: API-incompatible changes (use sparingly)
17
- </categories>
18
-
19
- <entry_format>
20
- - Start with past-tense verb (Added, Fixed, Implemented, Updated)
21
- - Describe user-visible impact, not implementation
22
- - Name specific feature, option, or behavior
23
- - Keep 1-2 lines, no trailing periods
24
- </entry_format>
25
-
26
- <examples>
27
- Good:
28
- - Added --dry-run flag to preview changes without applying them
29
- - Fixed memory leak when processing large files
30
- - Changed default timeout from 30s to 60s for slow connections
31
-
32
- Bad:
33
- - **cli**: Added dry-run flag -> redundant scope prefix
34
- - Added new feature. -> vague, trailing period
35
- - Refactored parser internals -> not user-visible
36
-
37
- Breaking Changes:
38
- - Removed legacy auth flow; users must re-authenticate with OAuth tokens
39
- </examples>
40
-
41
- <exclude>
42
- Internal refactoring, code style changes, test-only modifications, minor doc updates.
43
- </exclude>
44
-
45
- <output_format>
46
- Return ONLY valid JSON; no markdown fences or explanation.
47
-
48
- With entries: {"entries": {"Added": ["entry 1"], "Fixed": ["entry 2"]}}
49
- No changelog-worthy changes: {"entries": {}}
50
- </output_format>
@@ -1,18 +0,0 @@
1
- <context>
2
- Changelog: {{ changelog_path }}
3
- {{#if is_package_changelog}}Scope: Package-level changelog. Omit package name prefix from entries.{{/if}}
4
- </context>
5
- {{#if existing_entries}}
6
- <existing_entries>
7
- Already documented—skip these:
8
- {{ existing_entries }}
9
- </existing_entries>
10
- {{/if}}
11
-
12
- <diff_summary>
13
- {{ stat }}
14
- </diff_summary>
15
-
16
- <diff>
17
- {{ diff }}
18
- </diff>
@@ -1,24 +0,0 @@
1
- <role>Expert code analyst extracting structured observations from diffs.</role>
2
-
3
- <instructions>
4
- Extract factual observations from diff. This matters—be precise.
5
- 1. Use past-tense verb + specific target + optional purpose
6
- 2. Max 100 characters per observation
7
- 3. Consolidate related changes (e.g., "renamed 5 helper functions")
8
- 4. Return 1-5 observations only
9
- </instructions>
10
-
11
- <scope>
12
- Include: functions, methods, types, API changes, behavior/logic changes, error handling, performance, security.
13
-
14
- Exclude: import reordering, whitespace/formatting, comment-only changes, debug statements.
15
- </scope>
16
-
17
- <output_format>
18
- Plain list, no preamble, no summary, no markdown formatting.
19
- - added 'parse_config()' function for TOML configuration loading
20
- - removed deprecated 'legacy_init()' and all callers
21
- - changed 'Connection::new()' to accept '&Config' instead of individual params
22
- </output_format>
23
-
24
- Observations only. Classification in reduce phase.
@@ -1,8 +0,0 @@
1
- <file path="{{ filename }}">
2
- {{ diff }}
3
- </file>
4
- {{#if context_header}}
5
- <related_files>
6
- {{ context_header }}
7
- </related_files>
8
- {{/if}}
@@ -1,50 +0,0 @@
1
- Senior engineer synthesizing file-level observations into conventional commit analysis.
2
- <context>
3
- Given map-phase observations, produce unified commit classification with changelog metadata.
4
- </context>
5
- <instructions>
6
- Determine:
7
- 1. TYPE: Single classification
8
- 2. SCOPE: Primary component
9
- 3. DETAILS: 3–4 summary points (max 6)
10
- 4. CHANGELOG: Metadata for user-visible changes
11
- </instructions>
12
- <scope_rules>
13
- - Component name if >=60% changes target it
14
- - null if spread across multiple components
15
- - scope_candidates as primary source
16
- - Valid: specific component names (api, parser, config, etc.)
17
- </scope_rules>
18
- <output_format>
19
- Each detail point:
20
- - Start with past-tense verb (added, fixed, moved, extracted)
21
- - Under 120 chars, ends with period
22
- - Group related cross-file changes
23
- Priority: user-visible behavior > performance/security > architecture > internal implementation
24
- changelog_category: Added|Changed|Fixed|Deprecated|Removed|Security
25
- user_visible: true for features, user-facing bugs, breaking changes, security
26
- </output_format>
27
- <example>
28
- Input observations:
29
- - api/client.ts: added token refresh guard to prevent duplicate refreshes
30
- - api/http.ts: introduced retry wrapper for 429 responses
31
- - api/index.ts: updated exports for retry helper
32
- Output:
33
- {
34
- "type": "fix",
35
- "scope": "api",
36
- "details": [
37
- {
38
- "text": "Added token refresh guard to prevent duplicate refreshes.",
39
- "changelog_category": "Fixed",
40
- "user_visible": true
41
- },
42
- {
43
- "text": "Introduced retry wrapper for 429 responses.",
44
- "changelog_category": "Fixed",
45
- "user_visible": true
46
- }
47
- ],
48
- "issue_refs": []
49
- }
50
- </example>
@@ -1,17 +0,0 @@
1
- {{#if types_description}}
2
- <type_definitions>
3
- {{ types_description }}
4
- </type_definitions>
5
- {{/if}}
6
-
7
- <observations>
8
- {{ observations }}
9
- </observations>
10
-
11
- <diff_statistics>
12
- {{ stat }}
13
- </diff_statistics>
14
-
15
- <scope_candidates>
16
- {{ scope_candidates }}
17
- </scope_candidates>
@@ -1,3 +0,0 @@
1
- {{#if base_context}}
2
- {{ base_context }}
3
- {{/if}}Previous summary failed validation: {{ errors }}
@@ -1,38 +0,0 @@
1
- You are commit message specialist generating precise, informative descriptions.
2
- <context>
3
- Output: ONLY description after "{{ commit_type }}{{ scope_prefix }}:"; max {{ chars }} chars; no trailing period; no type prefix.
4
- </context>
5
-
6
- <instructions>
7
- 1. Start with lowercase past-tense verb (not "{{ commit_type }}")
8
- 2. Name specific subsystem/component affected
9
- 3. Include WHY when clarifies intent
10
- 4. One focused concept per message
11
- </instructions>
12
-
13
- <verb_reference>
14
- |Type|Use|
15
- |---|---|
16
- |feat|added, introduced, implemented, enabled|
17
- |fix|corrected, resolved, patched, addressed|
18
- |refactor|restructured, reorganized, migrated, simplified|
19
- |perf|optimized, reduced, eliminated, accelerated|
20
- |docs|documented, clarified, expanded|
21
- |build|upgraded, pinned, configured|
22
- |chore|cleaned, removed, renamed, organized|
23
- </verb_reference>
24
- <examples>
25
- feat | TLS encryption added to HTTP client for MITM prevention
26
- -> added TLS support to prevent man-in-the-middle attacks
27
- refactor | Consolidated HTTP transport into unified builder pattern
28
- -> migrated HTTP transport to unified builder API
29
- fix | Race condition in connection pool causing exhaustion under load
30
- -> corrected race condition causing connection pool exhaustion
31
- perf | Batch processing optimized to reduce memory allocations
32
- -> eliminated allocation overhead in batch processing
33
- build | Updated serde to fix CVE-2024-1234
34
- -> upgraded serde to 1.0.200 for CVE-2024-1234
35
- </examples>
36
- <banned_words>
37
- comprehensive, various, several, improved, enhanced, quickly, simply, basically, this change, this commit, now
38
- </banned_words>
@@ -1,13 +0,0 @@
1
- {{#if user_context}}
2
- <user_context>
3
- {{ user_context }}
4
- </user_context>
5
- {{/if}}
6
-
7
- <detail_points>
8
- {{ details }}
9
- </detail_points>
10
-
11
- <diff_stat>
12
- {{ stat }}
13
- </diff_stat>
@@ -1,2 +0,0 @@
1
- Types: feat, fix, refactor, perf, docs, test, build, ci, chore, style, revert.
2
- Format: <type>(<scope>): <summary> with past-tense summary.
@@ -1,109 +0,0 @@
1
- /**
2
- * Types for the arcane commit pipeline.
3
- */
4
-
5
- export type CommitType =
6
- | "feat"
7
- | "fix"
8
- | "refactor"
9
- | "perf"
10
- | "docs"
11
- | "test"
12
- | "build"
13
- | "ci"
14
- | "chore"
15
- | "style"
16
- | "revert";
17
-
18
- export type ChangelogCategory =
19
- | "Breaking Changes"
20
- | "Added"
21
- | "Changed"
22
- | "Deprecated"
23
- | "Removed"
24
- | "Fixed"
25
- | "Security";
26
-
27
- export interface CommitCommandArgs {
28
- /** Push after commit */
29
- push: boolean;
30
- /** Preview without committing */
31
- dryRun: boolean;
32
- /** Skip changelog updates */
33
- noChangelog: boolean;
34
- /** Use legacy deterministic pipeline */
35
- legacy?: boolean;
36
- /** Additional user context for the model */
37
- context?: string;
38
- /** Override the model selection */
39
- model?: string;
40
- }
41
-
42
- export interface NumstatEntry {
43
- path: string;
44
- additions: number;
45
- deletions: number;
46
- }
47
-
48
- export interface ConventionalDetail {
49
- text: string;
50
- changelogCategory?: ChangelogCategory;
51
- userVisible: boolean;
52
- }
53
-
54
- export interface ConventionalAnalysis {
55
- type: CommitType;
56
- scope: string | null;
57
- details: ConventionalDetail[];
58
- issueRefs: string[];
59
- }
60
-
61
- export interface CommitSummary {
62
- summary: string;
63
- }
64
-
65
- export interface FileObservation {
66
- file: string;
67
- observations: string[];
68
- additions: number;
69
- deletions: number;
70
- }
71
-
72
- export interface FileDiff {
73
- filename: string;
74
- content: string;
75
- additions: number;
76
- deletions: number;
77
- isBinary: boolean;
78
- }
79
-
80
- export interface DiffHunk {
81
- index: number;
82
- header: string;
83
- oldStart: number;
84
- oldLines: number;
85
- newStart: number;
86
- newLines: number;
87
- content: string;
88
- }
89
-
90
- export interface FileHunks {
91
- filename: string;
92
- isBinary: boolean;
93
- hunks: DiffHunk[];
94
- }
95
-
96
- export interface ChangelogBoundary {
97
- changelogPath: string;
98
- files: string[];
99
- }
100
-
101
- export interface UnreleasedSection {
102
- startLine: number;
103
- endLine: number;
104
- entries: Record<string, string[]>;
105
- }
106
-
107
- export interface ChangelogGenerationResult {
108
- entries: Record<string, string[]>;
109
- }
@@ -1,42 +0,0 @@
1
- const EXCLUDED_FILES = [
2
- "Cargo.lock",
3
- "package-lock.json",
4
- "npm-shrinkwrap.json",
5
- "yarn.lock",
6
- "pnpm-lock.yaml",
7
- "shrinkwrap.yaml",
8
- "bun.lock",
9
- "bun.lockb",
10
- "deno.lock",
11
- "composer.lock",
12
- "Gemfile.lock",
13
- "poetry.lock",
14
- "Pipfile.lock",
15
- "pdm.lock",
16
- "uv.lock",
17
- "go.sum",
18
- "flake.lock",
19
- "pubspec.lock",
20
- "Podfile.lock",
21
- "Packages.resolved",
22
- "mix.lock",
23
- "packages.lock.json",
24
- "config.yml.lock",
25
- "config.yaml.lock",
26
- "settings.yml.lock",
27
- "settings.yaml.lock",
28
- ];
29
-
30
- const EXCLUDED_SUFFIXES = [".lock.yml", ".lock.yaml", "-lock.yml", "-lock.yaml"];
31
-
32
- export function isExcludedFile(path: string): boolean {
33
- const lower = path.toLowerCase();
34
- if (EXCLUDED_FILES.some(name => lower.endsWith(name.toLowerCase()))) {
35
- return true;
36
- }
37
- return EXCLUDED_SUFFIXES.some(suffix => lower.endsWith(suffix));
38
- }
39
-
40
- export function filterExcludedFiles<T extends { filename: string }>(files: T[]): T[] {
41
- return files.filter(file => !isExcludedFile(file.filename));
42
- }
package/src/mcp/render.ts DELETED
@@ -1,123 +0,0 @@
1
- /**
2
- * TUI rendering for MCP tools.
3
- *
4
- * Provides structured display of MCP tool calls and results,
5
- * showing args and output in JSON tree format similar to task tool.
6
- */
7
- import type { Component } from "@nghyane/arcane-tui";
8
- import { Text } from "@nghyane/arcane-tui";
9
- import type { RenderResultOptions } from "../extensibility/custom-tools/types";
10
- import type { Theme } from "../modes/theme/theme";
11
- import {
12
- formatArgsInline,
13
- JSON_TREE_MAX_DEPTH_COLLAPSED,
14
- JSON_TREE_MAX_DEPTH_EXPANDED,
15
- JSON_TREE_MAX_LINES_COLLAPSED,
16
- JSON_TREE_MAX_LINES_EXPANDED,
17
- JSON_TREE_SCALAR_LEN_COLLAPSED,
18
- JSON_TREE_SCALAR_LEN_EXPANDED,
19
- renderJsonTreeLines,
20
- } from "../tools/json-tree";
21
- import { formatExpandHint, truncateToWidth } from "../tools/render-utils";
22
- import { renderStatusLine } from "../tui";
23
- import type { MCPToolDetails } from "./tool-bridge";
24
-
25
- /**
26
- * Render MCP tool call.
27
- */
28
- export function renderMCPCall(args: Record<string, unknown>, theme: Theme, label: string): Component {
29
- const lines: string[] = [];
30
- lines.push(renderStatusLine({ icon: "pending", title: label }, theme));
31
-
32
- if (args && typeof args === "object" && Object.keys(args).length > 0) {
33
- // Show args inline preview
34
- const preview = formatArgsInline(args, 70);
35
- if (preview) {
36
- lines.push(` ${theme.fg("dim", theme.tree.last)} ${theme.fg("dim", preview)}`);
37
- }
38
- }
39
-
40
- return new Text(lines.join("\n"), 0, 0);
41
- }
42
-
43
- /**
44
- * Render MCP tool result.
45
- */
46
- export function renderMCPResult(
47
- result: { content: Array<{ type: string; text?: string }>; details?: MCPToolDetails; isError?: boolean },
48
- options: RenderResultOptions,
49
- theme: Theme,
50
- args?: Record<string, unknown>,
51
- ): Component {
52
- const { expanded } = options;
53
- const lines: string[] = [];
54
-
55
- // Args section (when expanded)
56
- if (expanded && args && typeof args === "object" && Object.keys(args).length > 0) {
57
- lines.push(`${theme.fg("dim", "Args")}`);
58
- const maxDepth = JSON_TREE_MAX_DEPTH_EXPANDED;
59
- const maxLines = JSON_TREE_MAX_LINES_EXPANDED;
60
- const tree = renderJsonTreeLines(args, theme, maxDepth, maxLines, JSON_TREE_SCALAR_LEN_EXPANDED);
61
- for (const line of tree.lines) {
62
- lines.push(line);
63
- }
64
- if (tree.truncated) {
65
- lines.push(theme.fg("dim", "…"));
66
- }
67
- lines.push(""); // Blank line before output
68
- }
69
-
70
- // Output section
71
- const textContent = result.content?.find(c => c.type === "text")?.text ?? "";
72
- const trimmedOutput = textContent.trimEnd();
73
-
74
- if (!trimmedOutput) {
75
- lines.push(theme.fg("dim", "(no output)"));
76
- return new Text(lines.join("\n"), 0, 0);
77
- }
78
-
79
- // Try to parse as JSON for structured display
80
- if (trimmedOutput.startsWith("{") || trimmedOutput.startsWith("[")) {
81
- try {
82
- const parsed = JSON.parse(trimmedOutput);
83
- const maxDepth = expanded ? JSON_TREE_MAX_DEPTH_EXPANDED : JSON_TREE_MAX_DEPTH_COLLAPSED;
84
- const maxLines = expanded ? JSON_TREE_MAX_LINES_EXPANDED : JSON_TREE_MAX_LINES_COLLAPSED;
85
- const maxScalarLen = expanded ? JSON_TREE_SCALAR_LEN_EXPANDED : JSON_TREE_SCALAR_LEN_COLLAPSED;
86
- const tree = renderJsonTreeLines(parsed, theme, maxDepth, maxLines, maxScalarLen);
87
-
88
- if (tree.lines.length > 0) {
89
- for (const line of tree.lines) {
90
- lines.push(line);
91
- }
92
- // Always show expand hint when collapsed (expanded view shows longer values and deeper nesting)
93
- if (!expanded) {
94
- lines.push(formatExpandHint(theme, expanded, true));
95
- } else if (tree.truncated) {
96
- lines.push(theme.fg("dim", "…"));
97
- }
98
- return new Text(lines.join("\n"), 0, 0);
99
- }
100
- } catch {
101
- // Fall through to raw output
102
- }
103
- }
104
-
105
- // Raw text output
106
- const outputLines = trimmedOutput.split("\n");
107
- const maxOutputLines = expanded ? 12 : 4;
108
- const displayLines = outputLines.slice(0, maxOutputLines);
109
-
110
- for (const line of displayLines) {
111
- lines.push(theme.fg("toolOutput", truncateToWidth(line, 80)));
112
- }
113
-
114
- if (outputLines.length > maxOutputLines) {
115
- const remaining = outputLines.length - maxOutputLines;
116
- lines.push(`${theme.fg("dim", `… ${remaining} more lines`)} ${formatExpandHint(theme, expanded, true)}`);
117
- } else if (!expanded) {
118
- // Show expand hint when collapsed even if all lines shown (lines may be truncated)
119
- lines.push(formatExpandHint(theme, expanded, true));
120
- }
121
-
122
- return new Text(lines.join("\n"), 0, 0);
123
- }