agim-cli 1.2.74 → 1.2.82

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 (173) hide show
  1. package/CHANGELOG.md +215 -0
  2. package/dist/cli-ui/tui/app.d.ts +22 -0
  3. package/dist/cli-ui/tui/app.d.ts.map +1 -0
  4. package/dist/cli-ui/tui/app.js +578 -0
  5. package/dist/cli-ui/tui/app.js.map +1 -0
  6. package/dist/cli-ui/tui/index.d.ts +7 -0
  7. package/dist/cli-ui/tui/index.d.ts.map +1 -0
  8. package/dist/cli-ui/tui/index.js +125 -0
  9. package/dist/cli-ui/tui/index.js.map +1 -0
  10. package/dist/cli-ui/tui/markdown.d.ts +5 -0
  11. package/dist/cli-ui/tui/markdown.d.ts.map +1 -0
  12. package/dist/cli-ui/tui/markdown.js +145 -0
  13. package/dist/cli-ui/tui/markdown.js.map +1 -0
  14. package/dist/cli-ui/tui/sessions.d.ts +31 -0
  15. package/dist/cli-ui/tui/sessions.d.ts.map +1 -0
  16. package/dist/cli-ui/tui/sessions.js +107 -0
  17. package/dist/cli-ui/tui/sessions.js.map +1 -0
  18. package/dist/cli.js +12 -0
  19. package/dist/cli.js.map +1 -1
  20. package/dist/web/public/assets/{a2a-BbtW9q1L.js → a2a-CWXsu7Oz.js} +2 -2
  21. package/dist/web/public/assets/{a2a-BbtW9q1L.js.map → a2a-CWXsu7Oz.js.map} +1 -1
  22. package/dist/web/public/assets/{activity-CJmQLZ6_.js → activity-CQ_aoBSr.js} +2 -2
  23. package/dist/web/public/assets/{activity-CJmQLZ6_.js.map → activity-CQ_aoBSr.js.map} +1 -1
  24. package/dist/web/public/assets/{admins-BJP9koxS.js → admins-eP0x1_cs.js} +2 -2
  25. package/dist/web/public/assets/{admins-BJP9koxS.js.map → admins-eP0x1_cs.js.map} +1 -1
  26. package/dist/web/public/assets/{agents-DC0XFC6e.js → agents-CS9zwgxI.js} +2 -2
  27. package/dist/web/public/assets/{agents-DC0XFC6e.js.map → agents-CS9zwgxI.js.map} +1 -1
  28. package/dist/web/public/assets/{approvals-DiPkpPN4.js → approvals-ngCeTrqa.js} +2 -2
  29. package/dist/web/public/assets/{approvals-DiPkpPN4.js.map → approvals-ngCeTrqa.js.map} +1 -1
  30. package/dist/web/public/assets/{asks-CG9chQgT.js → asks-CIJyUfTW.js} +2 -2
  31. package/dist/web/public/assets/{asks-CG9chQgT.js.map → asks-CIJyUfTW.js.map} +1 -1
  32. package/dist/web/public/assets/{audit-B40mxlW1.js → audit-ATQxEzuW.js} +2 -2
  33. package/dist/web/public/assets/{audit-B40mxlW1.js.map → audit-ATQxEzuW.js.map} +1 -1
  34. package/dist/web/public/assets/{bell-BC8Jqt9f.js → bell-aelaDeaH.js} +2 -2
  35. package/dist/web/public/assets/{bell-BC8Jqt9f.js.map → bell-aelaDeaH.js.map} +1 -1
  36. package/dist/web/public/assets/{bgjobs-ClrQ2jzx.js → bgjobs-Dte-HLN1.js} +2 -2
  37. package/dist/web/public/assets/{bgjobs-ClrQ2jzx.js.map → bgjobs-Dte-HLN1.js.map} +1 -1
  38. package/dist/web/public/assets/{brain-BBx7RF2j.js → brain-9-qx3BG8.js} +2 -2
  39. package/dist/web/public/assets/{brain-BBx7RF2j.js.map → brain-9-qx3BG8.js.map} +1 -1
  40. package/dist/web/public/assets/{briefcase-TihsRkSy.js → briefcase-B7t6pp3X.js} +2 -2
  41. package/dist/web/public/assets/{briefcase-TihsRkSy.js.map → briefcase-B7t6pp3X.js.map} +1 -1
  42. package/dist/web/public/assets/{chevron-right-DTLZLXDP.js → chevron-right-Bz8nTKHc.js} +2 -2
  43. package/dist/web/public/assets/{chevron-right-DTLZLXDP.js.map → chevron-right-Bz8nTKHc.js.map} +1 -1
  44. package/dist/web/public/assets/{circle-check-EHM2OMD5.js → circle-check-BMeq4ILK.js} +2 -2
  45. package/dist/web/public/assets/{circle-check-EHM2OMD5.js.map → circle-check-BMeq4ILK.js.map} +1 -1
  46. package/dist/web/public/assets/{circle-check-big-DJXNAZ3u.js → circle-check-big-BboRrbmc.js} +2 -2
  47. package/dist/web/public/assets/{circle-check-big-DJXNAZ3u.js.map → circle-check-big-BboRrbmc.js.map} +1 -1
  48. package/dist/web/public/assets/{circle-x-DsaHSb_C.js → circle-x-D_Y7XPyr.js} +2 -2
  49. package/dist/web/public/assets/{circle-x-DsaHSb_C.js.map → circle-x-D_Y7XPyr.js.map} +1 -1
  50. package/dist/web/public/assets/{confirm-dialog-DezSK6wB.js → confirm-dialog-K2ZSoNw3.js} +2 -2
  51. package/dist/web/public/assets/{confirm-dialog-DezSK6wB.js.map → confirm-dialog-K2ZSoNw3.js.map} +1 -1
  52. package/dist/web/public/assets/{data-table-DdSnbgyt.js → data-table-DAxlDpJz.js} +2 -2
  53. package/dist/web/public/assets/{data-table-DdSnbgyt.js.map → data-table-DAxlDpJz.js.map} +1 -1
  54. package/dist/web/public/assets/{dialog-45x-p0sR.js → dialog-DVgp7mMc.js} +2 -2
  55. package/dist/web/public/assets/{dialog-45x-p0sR.js.map → dialog-DVgp7mMc.js.map} +1 -1
  56. package/dist/web/public/assets/{download-BL4jeu4M.js → download-ylGDouA1.js} +2 -2
  57. package/dist/web/public/assets/{download-BL4jeu4M.js.map → download-ylGDouA1.js.map} +1 -1
  58. package/dist/web/public/assets/{email-BGUO-gme.js → email-TTd5YGoQ.js} +2 -2
  59. package/dist/web/public/assets/{email-BGUO-gme.js.map → email-TTd5YGoQ.js.map} +1 -1
  60. package/dist/web/public/assets/{empty-state-n-LfHo6N.js → empty-state-Dl99CYKJ.js} +2 -2
  61. package/dist/web/public/assets/{empty-state-n-LfHo6N.js.map → empty-state-Dl99CYKJ.js.map} +1 -1
  62. package/dist/web/public/assets/{external-link-CZd6ma6Y.js → external-link-CHOJij7R.js} +2 -2
  63. package/dist/web/public/assets/{external-link-CZd6ma6Y.js.map → external-link-CHOJij7R.js.map} +1 -1
  64. package/dist/web/public/assets/{eye-LsErAgqh.js → eye-BgiwYmz5.js} +2 -2
  65. package/dist/web/public/assets/{eye-LsErAgqh.js.map → eye-BgiwYmz5.js.map} +1 -1
  66. package/dist/web/public/assets/{facts-CxZ3L_7a.js → facts-BC2xi2cn.js} +2 -2
  67. package/dist/web/public/assets/{facts-CxZ3L_7a.js.map → facts-BC2xi2cn.js.map} +1 -1
  68. package/dist/web/public/assets/{goals-BjzgqVnW.js → goals-Cdv7CH0b.js} +2 -2
  69. package/dist/web/public/assets/{goals-BjzgqVnW.js.map → goals-Cdv7CH0b.js.map} +1 -1
  70. package/dist/web/public/assets/{health-BYX5IK98.js → health-CODeqKI3.js} +2 -2
  71. package/dist/web/public/assets/{health-BYX5IK98.js.map → health-CODeqKI3.js.map} +1 -1
  72. package/dist/web/public/assets/{heart-pulse-D_xUK9r0.js → heart-pulse-CaKtJESB.js} +2 -2
  73. package/dist/web/public/assets/{heart-pulse-D_xUK9r0.js.map → heart-pulse-CaKtJESB.js.map} +1 -1
  74. package/dist/web/public/assets/{heartbeat-DnSegIYS.js → heartbeat-DGznBjhs.js} +2 -2
  75. package/dist/web/public/assets/{heartbeat-DnSegIYS.js.map → heartbeat-DGznBjhs.js.map} +1 -1
  76. package/dist/web/public/assets/{hot-C5TxCTVL.js → hot-CNKZjFmQ.js} +2 -2
  77. package/dist/web/public/assets/{hot-C5TxCTVL.js.map → hot-CNKZjFmQ.js.map} +1 -1
  78. package/dist/web/public/assets/{index-CbWhcThC.js → index-SwfCEbMh.js} +3 -3
  79. package/dist/web/public/assets/{index-CbWhcThC.js.map → index-SwfCEbMh.js.map} +1 -1
  80. package/dist/web/public/assets/{installed-D_Hjs7uj.js → installed-DqE0CqJD.js} +2 -2
  81. package/dist/web/public/assets/{installed-D_Hjs7uj.js.map → installed-DqE0CqJD.js.map} +1 -1
  82. package/dist/web/public/assets/{jobs-DWtjJIAD.js → jobs-BlVHvUJL.js} +2 -2
  83. package/dist/web/public/assets/{jobs-DWtjJIAD.js.map → jobs-BlVHvUJL.js.map} +1 -1
  84. package/dist/web/public/assets/{layout-BLK9XuQB.js → layout-BiUaeLWY.js} +2 -2
  85. package/dist/web/public/assets/{layout-BLK9XuQB.js.map → layout-BiUaeLWY.js.map} +1 -1
  86. package/dist/web/public/assets/{layout-CvvZcaiO.js → layout-CIDMPUGA.js} +2 -2
  87. package/dist/web/public/assets/{layout-CvvZcaiO.js.map → layout-CIDMPUGA.js.map} +1 -1
  88. package/dist/web/public/assets/{layout-CTyy2kgf.js → layout-CdoRXtfJ.js} +2 -2
  89. package/dist/web/public/assets/{layout-CTyy2kgf.js.map → layout-CdoRXtfJ.js.map} +1 -1
  90. package/dist/web/public/assets/{layout-D1-LnIA_.js → layout-CrgrlI3C.js} +2 -2
  91. package/dist/web/public/assets/{layout-D1-LnIA_.js.map → layout-CrgrlI3C.js.map} +1 -1
  92. package/dist/web/public/assets/{layout-54-PzplU.js → layout-DQcPGciJ.js} +2 -2
  93. package/dist/web/public/assets/{layout-54-PzplU.js.map → layout-DQcPGciJ.js.map} +1 -1
  94. package/dist/web/public/assets/{llm-D59Tv6ne.js → llm-C9WnjLdH.js} +2 -2
  95. package/dist/web/public/assets/{llm-D59Tv6ne.js.map → llm-C9WnjLdH.js.map} +1 -1
  96. package/dist/web/public/assets/{loader-circle-U64eR4W2.js → loader-circle-BYuiEgu1.js} +2 -2
  97. package/dist/web/public/assets/{loader-circle-U64eR4W2.js.map → loader-circle-BYuiEgu1.js.map} +1 -1
  98. package/dist/web/public/assets/{map-pin-D08YlPs3.js → map-pin-CSu279sg.js} +2 -2
  99. package/dist/web/public/assets/{map-pin-D08YlPs3.js.map → map-pin-CSu279sg.js.map} +1 -1
  100. package/dist/web/public/assets/{mcp-Br9fBIWu.js → mcp-DhEhDagh.js} +2 -2
  101. package/dist/web/public/assets/{mcp-Br9fBIWu.js.map → mcp-DhEhDagh.js.map} +1 -1
  102. package/dist/web/public/assets/{memos-nZKV3SLq.js → memos-CmWcQsqu.js} +2 -2
  103. package/dist/web/public/assets/{memos-nZKV3SLq.js.map → memos-CmWcQsqu.js.map} +1 -1
  104. package/dist/web/public/assets/{messengers-C8ss4WVx.js → messengers-Dzgy15aJ.js} +2 -2
  105. package/dist/web/public/assets/{messengers-C8ss4WVx.js.map → messengers-Dzgy15aJ.js.map} +1 -1
  106. package/dist/web/public/assets/{native-agent-BiiYK91m.js → native-agent-oxVczUVP.js} +2 -2
  107. package/dist/web/public/assets/{native-agent-BiiYK91m.js.map → native-agent-oxVczUVP.js.map} +1 -1
  108. package/dist/web/public/assets/{network-D9rhTHz5.js → network-VKawx_Mf.js} +2 -2
  109. package/dist/web/public/assets/{network-D9rhTHz5.js.map → network-VKawx_Mf.js.map} +1 -1
  110. package/dist/web/public/assets/{outbox-BS_gla4W.js → outbox-tCNMec-W.js} +2 -2
  111. package/dist/web/public/assets/{outbox-BS_gla4W.js.map → outbox-tCNMec-W.js.map} +1 -1
  112. package/dist/web/public/assets/{pagination-CSuYj-hv.js → pagination-CoFiNhmI.js} +2 -2
  113. package/dist/web/public/assets/{pagination-CSuYj-hv.js.map → pagination-CoFiNhmI.js.map} +1 -1
  114. package/dist/web/public/assets/{persona-BByKd8Zd.js → persona-BPM9r0mz.js} +2 -2
  115. package/dist/web/public/assets/{persona-BByKd8Zd.js.map → persona-BPM9r0mz.js.map} +1 -1
  116. package/dist/web/public/assets/{play-B_11jKz_.js → play-AQXMreBP.js} +2 -2
  117. package/dist/web/public/assets/{play-B_11jKz_.js.map → play-AQXMreBP.js.map} +1 -1
  118. package/dist/web/public/assets/{plus-BxhCliGV.js → plus-Dxn0-UrW.js} +2 -2
  119. package/dist/web/public/assets/{plus-BxhCliGV.js.map → plus-Dxn0-UrW.js.map} +1 -1
  120. package/dist/web/public/assets/{policy-CHbUM0MU.js → policy-B3OVFhEU.js} +2 -2
  121. package/dist/web/public/assets/{policy-CHbUM0MU.js.map → policy-B3OVFhEU.js.map} +1 -1
  122. package/dist/web/public/assets/{refresh-ccw-BKw5Agez.js → refresh-ccw-BCY32ruL.js} +2 -2
  123. package/dist/web/public/assets/{refresh-ccw-BKw5Agez.js.map → refresh-ccw-BCY32ruL.js.map} +1 -1
  124. package/dist/web/public/assets/{reminders-_MsAKlS7.js → reminders-CE8FDfs4.js} +2 -2
  125. package/dist/web/public/assets/{reminders-_MsAKlS7.js.map → reminders-CE8FDfs4.js.map} +1 -1
  126. package/dist/web/public/assets/{save-DznSJZGN.js → save-DL2CVfM9.js} +2 -2
  127. package/dist/web/public/assets/{save-DznSJZGN.js.map → save-DL2CVfM9.js.map} +1 -1
  128. package/dist/web/public/assets/{schedules-CiRZXonB.js → schedules-QI2R8JnP.js} +2 -2
  129. package/dist/web/public/assets/{schedules-CiRZXonB.js.map → schedules-QI2R8JnP.js.map} +1 -1
  130. package/dist/web/public/assets/{search-CXr_r7L8.js → search-eX2P2oxa.js} +2 -2
  131. package/dist/web/public/assets/{search-CXr_r7L8.js.map → search-eX2P2oxa.js.map} +1 -1
  132. package/dist/web/public/assets/{security-CjySIq-k.js → security-DnuDl-Ua.js} +2 -2
  133. package/dist/web/public/assets/{security-CjySIq-k.js.map → security-DnuDl-Ua.js.map} +1 -1
  134. package/dist/web/public/assets/{service-LXlgJooI.js → service-NBv0B47N.js} +2 -2
  135. package/dist/web/public/assets/{service-LXlgJooI.js.map → service-NBv0B47N.js.map} +1 -1
  136. package/dist/web/public/assets/{status-badge-BsPU9NHK.js → status-badge-BgYMOzvd.js} +2 -2
  137. package/dist/web/public/assets/{status-badge-BsPU9NHK.js.map → status-badge-BgYMOzvd.js.map} +1 -1
  138. package/dist/web/public/assets/{subtasks-DM8tJkC7.js → subtasks-Dc7MIwsy.js} +2 -2
  139. package/dist/web/public/assets/{subtasks-DM8tJkC7.js.map → subtasks-Dc7MIwsy.js.map} +1 -1
  140. package/dist/web/public/assets/{table-CQbO75bn.js → table-CwXBhLOR.js} +2 -2
  141. package/dist/web/public/assets/{table-CQbO75bn.js.map → table-CwXBhLOR.js.map} +1 -1
  142. package/dist/web/public/assets/{topn-CaCYQ1NI.js → topn-2VUdLMlv.js} +2 -2
  143. package/dist/web/public/assets/{topn-CaCYQ1NI.js.map → topn-2VUdLMlv.js.map} +1 -1
  144. package/dist/web/public/assets/{trash-2-CdgBbY1Z.js → trash-2-Dx3VvXKw.js} +2 -2
  145. package/dist/web/public/assets/{trash-2-CdgBbY1Z.js.map → trash-2-Dx3VvXKw.js.map} +1 -1
  146. package/dist/web/public/assets/{use-background-tasks-DUDxcbbl.js → use-background-tasks-DloEt5di.js} +2 -2
  147. package/dist/web/public/assets/{use-background-tasks-DUDxcbbl.js.map → use-background-tasks-DloEt5di.js.map} +1 -1
  148. package/dist/web/public/assets/{use-llm-admin-Bpy7nDu-.js → use-llm-admin-C1P5gnfI.js} +2 -2
  149. package/dist/web/public/assets/{use-llm-admin-Bpy7nDu-.js.map → use-llm-admin-C1P5gnfI.js.map} +1 -1
  150. package/dist/web/public/assets/{use-memory-B00AYXi0.js → use-memory-DvKK1Ss3.js} +2 -2
  151. package/dist/web/public/assets/{use-memory-B00AYXi0.js.map → use-memory-DvKK1Ss3.js.map} +1 -1
  152. package/dist/web/public/assets/{use-observability-7ETfQyEP.js → use-observability-3xbug_pm.js} +2 -2
  153. package/dist/web/public/assets/{use-observability-7ETfQyEP.js.map → use-observability-3xbug_pm.js.map} +1 -1
  154. package/dist/web/public/assets/{use-settings-tzqyzhw3.js → use-settings-DB1Hur3n.js} +2 -2
  155. package/dist/web/public/assets/{use-settings-tzqyzhw3.js.map → use-settings-DB1Hur3n.js.map} +1 -1
  156. package/dist/web/public/assets/{use-workspace-B5gbK4s5.js → use-workspace-CKh9LYh0.js} +2 -2
  157. package/dist/web/public/assets/{use-workspace-B5gbK4s5.js.map → use-workspace-CKh9LYh0.js.map} +1 -1
  158. package/dist/web/public/assets/{useQuery-wnQifGeZ.js → useQuery-DhsW2X2S.js} +2 -2
  159. package/dist/web/public/assets/{useQuery-wnQifGeZ.js.map → useQuery-DhsW2X2S.js.map} +1 -1
  160. package/dist/web/public/assets/vector-BqCkB0IG.js +2 -0
  161. package/dist/web/public/assets/vector-BqCkB0IG.js.map +1 -0
  162. package/dist/web/public/assets/{viewer-C0f5b5eT.js → viewer-Dk0E_ROf.js} +2 -2
  163. package/dist/web/public/assets/{viewer-C0f5b5eT.js.map → viewer-Dk0E_ROf.js.map} +1 -1
  164. package/dist/web/public/assets/{workspace-CGE46-O2.js → workspace-BvcEO_Bp.js} +2 -2
  165. package/dist/web/public/assets/{workspace-CGE46-O2.js.map → workspace-BvcEO_Bp.js.map} +1 -1
  166. package/dist/web/public/assets/{workspaces-CqDIcIXo.js → workspaces-NE7wQUjq.js} +2 -2
  167. package/dist/web/public/assets/{workspaces-CqDIcIXo.js.map → workspaces-NE7wQUjq.js.map} +1 -1
  168. package/dist/web/public/assets/{x-DBZPbfu3.js → x-C8V9ODI5.js} +2 -2
  169. package/dist/web/public/assets/{x-DBZPbfu3.js.map → x-C8V9ODI5.js.map} +1 -1
  170. package/dist/web/public/index.html +1 -1
  171. package/package.json +5 -1
  172. package/dist/web/public/assets/vector-or1-MfRX.js +0 -2
  173. package/dist/web/public/assets/vector-or1-MfRX.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,221 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.2.82] - 2026-05-26
8
+
9
+ ### Fixed
10
+
11
+ - **Release CI: build step now skips test type-check.** v1.2.81's
12
+ npm-latest install path worked (the arborist hang is gone), but
13
+ the build then died in `web-app: tsc --noEmit` with TS2305
14
+ "Module '@testing-library/react' has no exported member 'fireEvent'
15
+ / 'screen' / 'waitFor' / 'within'". Root cause: CI's
16
+ `--no-package-lock` install resolved testing-library to a patch
17
+ version whose `.d.ts` is missing those named re-exports. The
18
+ fix doesn't try to pin testing-library (we don't want to chase
19
+ CI-only patch drift); instead we exclude `*.test.tsx` from
20
+ `src/web-app/tsconfig.json`, so the production build doesn't
21
+ type-check tests. Tests are still type-checked by their own
22
+ vitest run (`npm run test`) which uses Vite/vitest's resolver
23
+ and isn't on the publish path.
24
+
25
+ ## [1.2.81] - 2026-05-26
26
+
27
+ ### Fixed
28
+
29
+ - **Release CI publishes again** (second attempt). v1.2.80's bun-install
30
+ pivot tripped on `ConnectionRefused` / `FailedToOpenSocket` when bun
31
+ tried to fetch tarballs — likely interaction between setup-node's
32
+ `always-auth=true` npmrc and bun's connection pool. Fallback: stay
33
+ with npm but **upgrade to `npm@latest` first** (npm 11 patched the
34
+ arborist "Exit handler never called!" stall that broke 1.2.76-78)
35
+ and use `npm install --no-package-lock --legacy-peer-deps --no-audit
36
+ --no-fund` so the tree resolution doesn't re-hit the same path. End
37
+ users still get the canonical npm path; this only changes CI.
38
+
39
+ ## [1.2.80] - 2026-05-26
40
+
41
+ ### Fixed
42
+
43
+ - **Release CI publishes again** (real root cause). v1.2.76 / 1.2.77 /
44
+ 1.2.78 / 1.2.79 all never reached npm. The actual error in the
45
+ GitHub Actions log is **`npm error Exit handler never called!`**
46
+ during both `npm ci --omit=optional` AND the fallback `npm install
47
+ --omit=optional`. This is a known npm 10.x arborist bug that
48
+ previously only surfaced via the `@xenova/transformers` ONNX
49
+ postinstall — the TUI deps added in v1.2.76 (ink / react /
50
+ ink-text-input + their transitive chalk / wrap-ansi / cli-truncate
51
+ chain) pushed the dep tree over the same threshold and triggered
52
+ the same hang. Lock-sync (the v1.2.79 hypothesis) was a red
53
+ herring — the lockfile was already in sync.
54
+ - **Fix**: `release.yml` install steps switched from `npm ci` to
55
+ `bun install --frozen-lockfile`. bun is already on PATH from the
56
+ earlier `oven-sh/setup-bun@v2` step and handles the same
57
+ `package.json` cleanly (we've used bun for the `npm test` step for
58
+ months). `--no-optional` preserves the existing skip of
59
+ `@xenova/transformers` — agim-cli doesn't need it at publish time.
60
+ - **End-user `npm install -g agim-cli` is unaffected** — only the
61
+ CI publish path uses bun now; consumers still get the canonical
62
+ npm install path from npm.
63
+
64
+ ## [1.2.79] - 2026-05-26 — UNRELEASED (CI publish failed, see 1.2.80)
65
+
66
+ ### Attempted
67
+
68
+ - Bumped + re-synced `package-lock.json` thinking the publish failure
69
+ was a lock/package mismatch. Wrong diagnosis: the actual issue was
70
+ npm's `Exit handler never called!` arborist hang. Folded into the
71
+ v1.2.80 fix.
72
+
73
+ ## [1.2.78] - 2026-05-26
74
+
75
+ ### Fixed / Added (TUI feedback batch)
76
+
77
+ - **Session persistence + resume**. Every TUI session writes to
78
+ `<AGIM_HOME>/tui-sessions/<id>.json` after each agent turn and on
79
+ graceful exit. On exit the terminal prints the resume hint:
80
+ ```
81
+ 会话 ID:tui-20260526-090530-a1b2c3
82
+ 恢复命令:agim tui --resume tui-20260526-090530-a1b2c3
83
+ 查看所有会话:agim tui --list-sessions
84
+ ```
85
+ New CLI flags:
86
+ - `agim tui --resume <id>` — load a specific session
87
+ - `agim tui --resume last` (or bare `--resume`) — load the most
88
+ recent session
89
+ - `agim tui --list-sessions` — print saved sessions, latest first
90
+ System-only / empty sessions are NOT saved (avoid clutter when the
91
+ user launches and exits without chatting).
92
+ - **Newline + cursor cleanup on exit**. Without the trailing `\n`,
93
+ the next shell prompt collided with the last rendered frame.
94
+ - **Markdown code-block colour fixed**. The keyword highlighter
95
+ looked up `KEYWORDS[lang.toLowerCase()]` directly, so fences spelled
96
+ `` ```typescript `` / `` ```python `` / `` ```bash `` never matched
97
+ (the table is keyed by short aliases: `ts` / `py` / `sh`). Added
98
+ `LANG_ALIASES` to normalise the common spellings:
99
+ `javascript/jsx/node → js`, `typescript/tsx → ts`,
100
+ `python/python3 → py`, `shell/bash/zsh → sh`, `golang → go`.
101
+ - **Input-keystroke flicker reduced.** Extracted the chat history
102
+ into a `React.memo`-wrapped `ChatHistory` component. Typing in the
103
+ input box changes `input` state on the parent but no longer
104
+ triggers a full reconciliation of every message Box — Ink's diff
105
+ pass skips the subtree when `messages` identity is unchanged.
106
+
107
+ ## [1.2.77] - 2026-05-26
108
+
109
+ ### Added (TUI opencode-parity iteration)
110
+
111
+ - **`!cmd` inline bash**. Messages starting with `!` get run in a child
112
+ shell (cwd inherited, 60s timeout, 1 MB output cap); stdout / stderr
113
+ / exit code are rendered as a system message with timing.
114
+ - **`@file` fuzzy file picker**. Typing `@` in the input opens a popup
115
+ filtered against the cwd (skips `node_modules` / `.git` / `dist` /
116
+ `.next` / `target` / `venv` / `__pycache__`); Tab / Enter inserts
117
+ the cwd-relative path. The agent receives the literal token; tools
118
+ like Read can pick it up.
119
+ - **`/editor`** opens `$EDITOR` (or `vi`) on a temp file pre-seeded
120
+ with the current input draft. Save + quit submits the body as a
121
+ user prompt; lines starting with `#` are stripped (vi convention).
122
+ This is our multi-line input substitute.
123
+ - **`/compact`** asks the current agent to summarise the conversation
124
+ into 3-5 bullet points, then replaces history with that summary as
125
+ a system message. Use for long sessions where token budget runs hot.
126
+ - **`/redo`** re-sends the last user message.
127
+ - **`/undo`** drops the most recent user-and-reply pair.
128
+ - **`/export`** writes the transcript to `./agim-tui-<timestamp>.md`
129
+ with role headers + elapsed-time annotations.
130
+ - **Ctrl-P command palette**. Modal fuzzy search over every slash
131
+ command; works regardless of input state. Up / Down + Enter to
132
+ pick, Esc to dismiss.
133
+ - **Completion bell**. After each agent reply ends successfully, write
134
+ `\x07` to stdout. Disable with `IMHUB_TUI_NO_BELL=1`.
135
+ - **Markdown rendering** for assistant replies. New `Markdown` Ink
136
+ component walks `marked`'s lexer tokens to emit native Ink boxes:
137
+ headings (depth-coloured), paragraphs, bold / italic / strikethrough,
138
+ inline code (cyan), bordered code blocks with language label and a
139
+ dependency-free keyword colouriser (js / ts / py / sh / go), bullet
140
+ + ordered lists, blockquotes (dim `│` prefix), `<hr>`, links
141
+ (underlined text + dim URL). Tables fall back to raw text to avoid
142
+ CJK width landmines. Streaming partial content stays plain-text;
143
+ the markdown pass kicks in once the reply is complete (so
144
+ half-formed fences don't flicker the layout).
145
+
146
+ ### Still deferred
147
+
148
+ - Multi-line input in the chat box itself (`/editor` fills this for
149
+ now)
150
+ - Image attachments
151
+ - Multi-session list (`/new` / `/sessions`)
152
+ - Remote-daemon client mode (TUI still in-process only)
153
+ - Per-message token / cost stats (needs adapter hooks)
154
+
155
+ ## [1.2.76] - 2026-05-26
156
+
157
+ ### Added
158
+
159
+ - **`agim tui` — terminal chat UI (first usable iteration).** Ink-based
160
+ React renderer that drives any registered agent in-process. Use case:
161
+ ssh into a box, run `agim tui`, chat with claude-code / codex /
162
+ native / opencode / cursor without needing web admin or daemon.
163
+ - **Features in this iteration**:
164
+ - `agim tui [--agent <name>]` subcommand
165
+ - Streaming agent replies (live chunk rendering)
166
+ - Slash-command popup: type `/`, get a filterable command menu with
167
+ ↑↓ navigation, Tab completion, Enter to select
168
+ - Commands: `/agents` `/agent <name>` `/clear` `/help` `/exit`
169
+ `/quit` (more to come — per-message tools, /compact, /diff, /fork
170
+ follow opencode's playbook)
171
+ - Per-message footer on assistant replies: `■ agent · 4.9s` (model
172
+ + elapsed time)
173
+ - Bottom status bar: cwd, message count, key hints
174
+ - `Esc` aborts an in-flight reply via `AbortController`
175
+ - `Ctrl-C` exits cleanly
176
+ - **Architecture**: TUI is **in-process**, not a client of a running
177
+ `agim start` daemon. Loads `registry.loadBuiltInPlugins()` + reads
178
+ config.json for ACP agents, then talks directly to adapter
179
+ `sendPrompt()` generators. No HTTP, no SSE — works on boxes where
180
+ the daemon isn't running. Remote-daemon-client mode is on the
181
+ roadmap.
182
+ - **Quality cuts** (deliberate for first iteration):
183
+ - Single-line input (no `Shift+Enter` newline yet) — will switch
184
+ to custom multiline buffer
185
+ - Plain-text rendering (no markdown / table formatting) — avoids
186
+ terminal CJK width landmines
187
+ - Single thread (no session list, no fork)
188
+ - No approval-bus integration (TUI can't currently approve
189
+ tool-use cards; non-issue for read-only agent runs)
190
+
191
+ ### Internal
192
+
193
+ - New deps: `ink ^5`, `ink-text-input ^6`, `react ^18` in `dependencies`;
194
+ `@types/react ^18` in `devDependencies`. Lazy-imported by the `tui`
195
+ subcommand only — other CLI paths pay zero startup cost.
196
+ - `tsconfig.json`: `"jsx": "react-jsx"` for tsx files.
197
+ - Root logger is set to `silent` for the TUI session (and restored
198
+ on exit) so pino-pretty doesn't write to fd 1 and scramble Ink's
199
+ diff renderer. `IMHUB_TUI_VERBOSE=1` keeps logs flowing (helpful
200
+ when stuck — pair with `2>tui.log`).
201
+
202
+ ## [1.2.75] - 2026-05-26
203
+
204
+ ### Fixed
205
+
206
+ - **Vector backend form: "本地模型 id 不能为空" on fresh save.** The
207
+ form left the local-model / batch-size / hybrid-weight inputs empty
208
+ when the operator had never set those env vars; switching backend
209
+ from `off` to `本地(BGE)` then clicking 保存并测试 immediately
210
+ failed validation. Operators had to manually copy
211
+ `Xenova/bge-base-zh-v1.5` from the placeholder.
212
+ - **Fix** (`web-app/src/routes/memory/vector-backend-form.tsx`): new
213
+ `selectBackend()` handler auto-prefills sensible defaults whenever
214
+ the backend selector flips off→local or off→openai and the
215
+ corresponding fields are still empty:
216
+ - local: `Xenova/bge-base-zh-v1.5`
217
+ - openai: `https://api.openai.com/v1` + `text-embedding-3-small`
218
+ - shared: batch=32, weight=0.5
219
+ - The operator can still edit any of these afterwards. Existing
220
+ saved values are never overwritten.
221
+
7
222
  ## [1.2.74] - 2026-05-26
8
223
 
9
224
  ### Fixed
@@ -0,0 +1,22 @@
1
+ export interface ChatMessage {
2
+ role: 'user' | 'assistant' | 'system';
3
+ content: string;
4
+ pending?: boolean;
5
+ elapsedMs?: number;
6
+ agentName?: string;
7
+ }
8
+ interface AppProps {
9
+ initialAgent?: string;
10
+ /** Resume from disk; overrides initial empty state. */
11
+ resumed?: {
12
+ id: string;
13
+ agent?: string;
14
+ messages: ChatMessage[];
15
+ };
16
+ /** Stable session id — generated upstream and printed on exit so
17
+ * user can `agim tui --resume <id>` next time. */
18
+ sessionId: string;
19
+ }
20
+ export declare function TuiApp({ initialAgent, resumed, sessionId }: AppProps): JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/cli-ui/tui/app.tsx"],"names":[],"mappings":"AAoCA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmDD,UAAU,QAAQ;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CAAA;IACjE;uDACmD;IACnD,SAAS,EAAE,MAAM,CAAA;CAClB;AA0CD,wBAAgB,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,CAmgBlF"}