cli-jaw 2.17.62 → 2.17.63

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 (360) hide show
  1. package/README.ja.md +17 -17
  2. package/README.ko.md +17 -17
  3. package/README.md +17 -17
  4. package/README.zh-CN.md +17 -17
  5. package/dist/bin/commands/tui/input-handler.js +19 -0
  6. package/dist/bin/commands/tui/input-handler.js.map +1 -1
  7. package/dist/bin/commands/tui/overlays.js +8 -4
  8. package/dist/bin/commands/tui/overlays.js.map +1 -1
  9. package/dist/bin/star-prompt.js +1 -1
  10. package/dist/bin/star-prompt.js.map +1 -1
  11. package/dist/server.js +14 -1
  12. package/dist/server.js.map +1 -1
  13. package/dist/src/agent/claude-runtime-pool.js +2 -1
  14. package/dist/src/agent/claude-runtime-pool.js.map +1 -1
  15. package/dist/src/agent/claude-runtime-run.js +28 -7
  16. package/dist/src/agent/claude-runtime-run.js.map +1 -1
  17. package/dist/src/agent/lifecycle-handler.js +34 -6
  18. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  19. package/dist/src/agent/runtime/claude-sdk-events.js +136 -9
  20. package/dist/src/agent/runtime/claude-sdk-events.js.map +1 -1
  21. package/dist/src/agent/runtime/claude-sdk-history-loader.js +24 -0
  22. package/dist/src/agent/runtime/claude-sdk-history-loader.js.map +1 -0
  23. package/dist/src/agent/runtime/claude-sdk-hooks.js +10 -4
  24. package/dist/src/agent/runtime/claude-sdk-hooks.js.map +1 -1
  25. package/dist/src/agent/runtime/claude-sdk-messages.js +25 -2
  26. package/dist/src/agent/runtime/claude-sdk-messages.js.map +1 -1
  27. package/dist/src/agent/runtime/claude-sdk-options.js +36 -3
  28. package/dist/src/agent/runtime/claude-sdk-options.js.map +1 -1
  29. package/dist/src/agent/runtime/claude-sdk-permissions.js +32 -9
  30. package/dist/src/agent/runtime/claude-sdk-permissions.js.map +1 -1
  31. package/dist/src/agent/runtime/claude-sdk-session.js +165 -17
  32. package/dist/src/agent/runtime/claude-sdk-session.js.map +1 -1
  33. package/dist/src/agent/runtime/claude-sdk-version.js +8 -0
  34. package/dist/src/agent/runtime/claude-sdk-version.js.map +1 -0
  35. package/dist/src/agent/spawn/backend-codex-app.js +619 -0
  36. package/dist/src/agent/spawn/backend-codex-app.js.map +1 -0
  37. package/dist/src/agent/spawn/backend-context.js +2 -0
  38. package/dist/src/agent/spawn/backend-context.js.map +1 -0
  39. package/dist/src/agent/spawn/backend-copilot.js +385 -0
  40. package/dist/src/agent/spawn/backend-copilot.js.map +1 -0
  41. package/dist/src/agent/spawn/backend-native-acp.js +379 -0
  42. package/dist/src/agent/spawn/backend-native-acp.js.map +1 -0
  43. package/dist/src/agent/spawn/backend-pi.js +565 -0
  44. package/dist/src/agent/spawn/backend-pi.js.map +1 -0
  45. package/dist/src/agent/spawn/types.js +2 -0
  46. package/dist/src/agent/spawn/types.js.map +1 -0
  47. package/dist/src/agent/spawn.js +44 -1858
  48. package/dist/src/agent/spawn.js.map +1 -1
  49. package/dist/src/cli/claude-default-model-boot.js +36 -0
  50. package/dist/src/cli/claude-default-model-boot.js.map +1 -0
  51. package/dist/src/cli/claude-model-discovery.js +13 -1
  52. package/dist/src/cli/claude-model-discovery.js.map +1 -1
  53. package/dist/src/cli/claude-models.js +7 -1
  54. package/dist/src/cli/claude-models.js.map +1 -1
  55. package/dist/src/cli/commands.js +5 -15
  56. package/dist/src/cli/commands.js.map +1 -1
  57. package/dist/src/cli/tui/composer.js +3 -3
  58. package/dist/src/cli/tui/composer.js.map +1 -1
  59. package/dist/src/cli/tui/skill-mention.js +15 -0
  60. package/dist/src/cli/tui/skill-mention.js.map +1 -0
  61. package/dist/src/code-mode/manager.js +174 -9
  62. package/dist/src/code-mode/manager.js.map +1 -1
  63. package/dist/src/code-mode/providers/catalog.js +5 -3
  64. package/dist/src/code-mode/providers/catalog.js.map +1 -1
  65. package/dist/src/code-mode/providers/claude-history.js +132 -0
  66. package/dist/src/code-mode/providers/claude-history.js.map +1 -0
  67. package/dist/src/code-mode/providers/claude.js +74 -7
  68. package/dist/src/code-mode/providers/claude.js.map +1 -1
  69. package/dist/src/code-mode/providers/codex-app.js +7 -1
  70. package/dist/src/code-mode/providers/codex-app.js.map +1 -1
  71. package/dist/src/code-mode/session.js +158 -11
  72. package/dist/src/code-mode/session.js.map +1 -1
  73. package/dist/src/code-mode/store.js +416 -28
  74. package/dist/src/code-mode/store.js.map +1 -1
  75. package/dist/src/command-contract/catalog.js +3 -22
  76. package/dist/src/command-contract/catalog.js.map +1 -1
  77. package/dist/src/core/codex-config.js +3 -62
  78. package/dist/src/core/codex-config.js.map +1 -1
  79. package/dist/src/core/config.js +116 -14
  80. package/dist/src/core/config.js.map +1 -1
  81. package/dist/src/core/runtime-settings.js +20 -10
  82. package/dist/src/core/runtime-settings.js.map +1 -1
  83. package/dist/src/core/settings-watch.js +1 -0
  84. package/dist/src/core/settings-watch.js.map +1 -1
  85. package/dist/src/core/skill-mentions.js +83 -0
  86. package/dist/src/core/skill-mentions.js.map +1 -0
  87. package/dist/src/manager/registry.js +5 -1
  88. package/dist/src/manager/registry.js.map +1 -1
  89. package/dist/src/manager/routes/desktop-status.js +1 -1
  90. package/dist/src/manager/routes/desktop-status.js.map +1 -1
  91. package/dist/src/orchestrator/pipeline.js +11 -1
  92. package/dist/src/orchestrator/pipeline.js.map +1 -1
  93. package/dist/src/prompt/builder.js +10 -4
  94. package/dist/src/prompt/builder.js.map +1 -1
  95. package/dist/src/prompt/templates/a1-system.md +1 -1
  96. package/dist/src/routes/code-native.js +51 -3
  97. package/dist/src/routes/code-native.js.map +1 -1
  98. package/dist/src/routes/settings.js +1 -4
  99. package/dist/src/routes/settings.js.map +1 -1
  100. package/dist/src/routes/skills.js +7 -0
  101. package/dist/src/routes/skills.js.map +1 -1
  102. package/dist/src/shared/skill-mention.js +61 -0
  103. package/dist/src/shared/skill-mention.js.map +1 -0
  104. package/dist/src/shared/tool-input.js +137 -0
  105. package/dist/src/shared/tool-input.js.map +1 -0
  106. package/package.json +7 -5
  107. package/public/css/activity.css +83 -20
  108. package/public/css/layout.css +2 -2
  109. package/public/css/sidebar.css +18 -0
  110. package/public/css/variables.css +23 -2
  111. package/public/dist/.vite/manifest.json +302 -334
  112. package/public/dist/assets/Activity-DPLlOJ46.js +1 -0
  113. package/public/dist/assets/AdvancedExport-BgOgGvc5.js +1 -0
  114. package/public/dist/assets/Agent-O_U8ny90.js +1 -0
  115. package/public/dist/assets/Browser-m6VynQXV.js +1 -0
  116. package/public/dist/assets/BrowserPanel-Bb-Bge6B.js +3 -0
  117. package/public/dist/assets/ChannelEnablementControl-BSuKQhTW.js +85 -0
  118. package/public/dist/assets/ChannelSetupEntry-DHLoZEzJ.js +1 -0
  119. package/public/dist/assets/ChannelsDiscord-B-G8vsYy.js +1 -0
  120. package/public/dist/assets/ChannelsSlack-oPuh922z.js +1 -0
  121. package/public/dist/assets/ChannelsTelegram-PmTv43KQ.js +1 -0
  122. package/public/dist/assets/CodeCanvas-CVbdp0S-.js +3 -0
  123. package/public/dist/assets/DashboardMeta-BqEiJrvr.js +1 -0
  124. package/public/dist/assets/DesignPanel-BOb-HMbl.js +2 -0
  125. package/public/dist/assets/{Developer-BdKPcw8Z.js → Developer-CbySB7_Z.js} +1 -1
  126. package/public/dist/assets/{DiffPanel-DtJuvU5y.js → DiffPanel-D9Cch5FG.js} +1 -1
  127. package/public/dist/assets/Display-C0Zdamcb.js +1 -0
  128. package/public/dist/assets/Display-DU4_76cS.js +1 -0
  129. package/public/dist/assets/DocPanel-DvtFw8AP.js +1 -0
  130. package/public/dist/assets/{Embedding-DvdTj1BF.js → Embedding-CCFMOB_2.js} +1 -1
  131. package/public/dist/assets/Employees-BanvF58d.js +1 -0
  132. package/public/dist/assets/FolderPanel-CJvwRwIV.js +3 -0
  133. package/public/dist/assets/Heartbeat-uyi_MpUd.js +1 -0
  134. package/public/dist/assets/InlineWarn-Cq4z28F3.js +1 -0
  135. package/public/dist/assets/MarkdownRenderer-Cc3DeHvm.js +1 -0
  136. package/public/dist/assets/{MarkdownRenderer-DhonsAPC.js → MarkdownRenderer-DzN66XVb.js} +1 -1
  137. package/public/dist/assets/Mcp-rjPoL_Zo.js +4 -0
  138. package/public/dist/assets/Memory-C9I33pIi.js +1 -0
  139. package/public/dist/assets/{MilkdownWysiwygEditor-D6JaLDE4.js → MilkdownWysiwygEditor-xObhviw7.js} +1 -1
  140. package/public/dist/assets/ModelProvider-fiUktMaO.js +1 -0
  141. package/public/dist/assets/Network-CuqFrOvR.js +1 -0
  142. package/public/dist/assets/NotesGraphWorkspace-DO9LtVGF.js +1 -0
  143. package/public/dist/assets/PanelLayoutProvider-DRZ4QkBC.js +1 -0
  144. package/public/dist/assets/Permissions-BltXiZnz.js +1 -0
  145. package/public/dist/assets/{Permissions-BwiMEoTV.js → Permissions-DcCbFMIq.js} +1 -1
  146. package/public/dist/assets/Profile-DUL7-RE_.js +1 -0
  147. package/public/dist/assets/Prompts-C9vY8ivQ.js +1 -0
  148. package/public/dist/assets/SpeechKeys-BJ8V7U5E.js +1 -0
  149. package/public/dist/assets/TelegramHub-DtyjLGFR.js +1 -0
  150. package/public/dist/assets/{TerminalPanel-Bu9i-P2f.js → TerminalPanel-c1xhiy53.js} +1 -1
  151. package/public/dist/assets/app-BjKzqXCv.css +1 -0
  152. package/public/dist/assets/app-CZwx0V6K.js +59 -0
  153. package/public/dist/assets/bgtask-badge-CnVkcp3c.js +1 -0
  154. package/public/dist/assets/{bgtask-badge-DfiHuzxT.js → bgtask-badge-Cp26S8Uq.js} +1 -1
  155. package/public/dist/assets/client-platform-WO8m6kPQ.js +1 -0
  156. package/public/dist/assets/{employees-BQaJNp-u.js → employees-CsvI0_5V.js} +1 -1
  157. package/public/dist/assets/error-normalize-clOi-AAA.js +1 -0
  158. package/public/dist/assets/fields-CicOWY-X.js +1 -0
  159. package/public/dist/assets/iframe-renderer-DWx9v2Iz.js +1 -0
  160. package/public/dist/assets/iframe-renderer-DmHYOI1A.js +142 -0
  161. package/public/dist/assets/{react-C_pPTFsM.js → jsx-runtime-CkEUZM6i.js} +1 -1
  162. package/public/dist/assets/manager-CCXm5Yfe.js +5 -0
  163. package/public/dist/assets/manager-D9rhKFKc.css +1 -0
  164. package/public/dist/assets/manager-shortcuts-Cqmr0mEq.js +1 -0
  165. package/public/dist/assets/{memory-EG1B51up.js → memory-C6qtAMdJ.js} +1 -1
  166. package/public/dist/assets/memory-PPofQPeB.js +1 -0
  167. package/public/dist/assets/message-history-DcjBuubA.js +4 -0
  168. package/public/dist/assets/message-history-bw4qF01Z.js +1 -0
  169. package/public/dist/assets/page-shell-DfinU3mb.js +1 -0
  170. package/public/dist/assets/react-dom-URBLzV3w.js +1 -0
  171. package/public/dist/assets/{render-Dp07lZAJ.js → render-DfYro-fG.js} +1 -1
  172. package/public/dist/assets/{settings-jlI4X-zt.js → settings-CvsLWlJn.js} +38 -30
  173. package/public/dist/assets/settings-DMiQe469.js +1 -0
  174. package/public/dist/assets/settings-DgAlohx9.js +1 -0
  175. package/public/dist/assets/settings-core-BH7J_Rbm.js +1 -0
  176. package/public/dist/assets/{settings-core-B5Uf_lWY.js → settings-core-pnpw-eZv.js} +1 -1
  177. package/public/dist/assets/{settings-embedding-BfWzWKMM.js → settings-embedding-BRW0WZvh.js} +3 -3
  178. package/public/dist/assets/{settings-embedding-DhEdT86W.css → settings-embedding-CUQ8Is3y.css} +1 -1
  179. package/public/dist/assets/settings-types-CYKy0xz4.js +1 -0
  180. package/public/dist/assets/shared-D1begqvi.js +1 -0
  181. package/public/dist/assets/{sidebar-BUemG2ZN.js → sidebar-C_80w4iY.js} +3 -3
  182. package/public/dist/assets/{skills-CKUcEN9m.js → skills-D_2adqge.js} +1 -1
  183. package/public/dist/assets/skills-DeNVAVgt.js +1 -0
  184. package/public/dist/assets/{slash-commands-D34GgHFX.js → slash-commands-B_Hq5RkC.js} +2 -2
  185. package/public/dist/assets/slash-commands-Cj5qoRWc.js +1 -0
  186. package/public/dist/assets/tool-input-DI7uu8Ah.js +2 -0
  187. package/public/dist/assets/{trace-drawer-DBmK-5F_.js → trace-drawer-B6XuPodh.js} +1 -1
  188. package/public/dist/assets/ui-BbR_fFiK.js +1 -0
  189. package/public/dist/assets/{ui-vm2iuLcS.js → ui-D8xzm7DN.js} +1 -1
  190. package/public/dist/index.html +11 -3
  191. package/public/dist/manager/index.html +3 -3
  192. package/public/dist/settings/index.html +2 -2
  193. package/public/index.html +9 -1
  194. package/public/js/features/activity-history.ts +50 -21
  195. package/public/js/features/activity-rows.ts +158 -10
  196. package/public/js/features/activity-view.ts +5 -5
  197. package/public/js/features/chat.ts +2 -0
  198. package/public/js/features/employees.ts +1 -0
  199. package/public/js/features/resize-guard.ts +39 -0
  200. package/public/js/features/settings-cli-status.ts +49 -17
  201. package/public/js/features/settings-types.ts +39 -1
  202. package/public/js/features/skill-mentions.ts +143 -0
  203. package/public/js/main.ts +15 -0
  204. package/public/js/virtual-scroll.ts +67 -1
  205. package/public/locales/en.json +2 -0
  206. package/public/locales/ja.json +2 -0
  207. package/public/locales/ko.json +2 -0
  208. package/public/locales/zh.json +2 -0
  209. package/public/manager/src/AppChrome.tsx +2 -0
  210. package/public/manager/src/InstancePreview.tsx +1 -1
  211. package/public/manager/src/SidebarRailRouter.tsx +3 -1
  212. package/public/manager/src/browser-panel/BrowserPanel.tsx +47 -12
  213. package/public/manager/src/browser-panel/browser-address-state.ts +11 -0
  214. package/public/manager/src/client-platform.ts +18 -0
  215. package/public/manager/src/code/CodeCanvas.tsx +4 -2
  216. package/public/manager/src/code/CodeComposer.tsx +22 -10
  217. package/public/manager/src/code/CodeDraftEmptyState.tsx +64 -0
  218. package/public/manager/src/code/CodeSessionList.tsx +154 -40
  219. package/public/manager/src/code/CodeTranscript.tsx +104 -16
  220. package/public/manager/src/code/CodeWorkbench.tsx +21 -11
  221. package/public/manager/src/code/CodeWorkspaceHeader.tsx +5 -10
  222. package/public/manager/src/code/ComposerFooter.tsx +9 -1
  223. package/public/manager/src/code/code-composer.css +1 -1
  224. package/public/manager/src/code/code-controller-draft-storage.ts +16 -8
  225. package/public/manager/src/code/code-controller-drafts.ts +33 -6
  226. package/public/manager/src/code/code-controller-runtime.ts +189 -17
  227. package/public/manager/src/code/code-controller-types.ts +19 -1
  228. package/public/manager/src/code/code-recent-workspaces.ts +25 -0
  229. package/public/manager/src/code/code-session-client.ts +19 -1
  230. package/public/manager/src/code/code-session-sidebar.css +38 -0
  231. package/public/manager/src/code/code-session-state.ts +2 -0
  232. package/public/manager/src/code/code-types.ts +47 -0
  233. package/public/manager/src/code/code-workbench.css +36 -1
  234. package/public/manager/src/code/code.css +171 -7
  235. package/public/manager/src/code/session-order.ts +80 -0
  236. package/public/manager/src/code/tool-summary.ts +45 -11
  237. package/public/manager/src/folder-panel/folder-shortcuts.ts +5 -9
  238. package/public/manager/src/hooks/useCommandPalette.ts +3 -7
  239. package/public/manager/src/main.tsx +1 -0
  240. package/public/manager/src/manager-components.css +25 -23
  241. package/public/manager/src/manager-dashboard-reminders.css +2 -2
  242. package/public/manager/src/manager-layout.css +1 -1
  243. package/public/manager/src/manager-shortcut-runner.ts +9 -2
  244. package/public/manager/src/manager-shortcuts.ts +83 -21
  245. package/public/manager/src/panels/desktop-bridge.ts +4 -1
  246. package/public/manager/src/panels/panels.css +9 -0
  247. package/public/manager/src/preview.ts +19 -4
  248. package/public/manager/src/settings/pages/AdvancedExport.tsx +28 -30
  249. package/public/manager/src/settings/pages/Browser.tsx +45 -47
  250. package/public/manager/src/settings/pages/ChannelsDiscord.tsx +51 -26
  251. package/public/manager/src/settings/pages/ChannelsSlack.tsx +59 -17
  252. package/public/manager/src/settings/pages/ChannelsTelegram.tsx +51 -26
  253. package/public/manager/src/settings/pages/Display.tsx +2 -1
  254. package/public/manager/src/settings/pages/Employees.tsx +3 -3
  255. package/public/manager/src/settings/pages/Mcp.tsx +220 -200
  256. package/public/manager/src/settings/pages/Memory.tsx +35 -41
  257. package/public/manager/src/settings/pages/ModelProvider.tsx +23 -98
  258. package/public/manager/src/settings/pages/Network.tsx +5 -4
  259. package/public/manager/src/settings/pages/Permissions.tsx +38 -16
  260. package/public/manager/src/settings/pages/Prompts.tsx +12 -9
  261. package/public/manager/src/settings/pages/SpeechKeys.tsx +132 -139
  262. package/public/manager/src/settings/pages/TelegramHub.tsx +67 -20
  263. package/public/manager/src/settings/pages/components/AvatarCard.tsx +9 -8
  264. package/public/manager/src/settings/pages/components/ChannelSetupEntry.tsx +2 -2
  265. package/public/manager/src/settings/pages/components/EmployeeRow.tsx +6 -12
  266. package/public/manager/src/settings/pages/components/HealthBadge.tsx +11 -6
  267. package/public/manager/src/settings/pages/components/HeartbeatJobRow.tsx +35 -16
  268. package/public/manager/src/settings/pages/components/HeartbeatJobsSection.tsx +11 -11
  269. package/public/manager/src/settings/pages/components/HeartbeatMarkdownSection.tsx +7 -7
  270. package/public/manager/src/settings/pages/components/InlineWarn.tsx +4 -9
  271. package/public/manager/src/settings/pages/components/McpServerCard.tsx +39 -27
  272. package/public/manager/src/settings/pages/components/MemoryRow.tsx +21 -16
  273. package/public/manager/src/settings/pages/components/PerCliRow.tsx +122 -121
  274. package/public/manager/src/settings/pages/components/PiProfileDialog.tsx +9 -6
  275. package/public/manager/src/settings/pages/components/SlackSetup.tsx +8 -8
  276. package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +14 -10
  277. package/public/manager/src/settings/pages/components/agent/AgentEmployeesSection.tsx +26 -26
  278. package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +5 -5
  279. package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +14 -11
  280. package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +1 -3
  281. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +0 -2
  282. package/public/manager/src/settings/pages/components/runtime-transport-field.tsx +2 -2
  283. package/public/manager/src/settings/pages/manager/Activity.tsx +6 -2
  284. package/public/manager/src/settings/pages/manager/Display.tsx +3 -8
  285. package/public/manager/src/settings/pages/manager/shared.tsx +44 -33
  286. package/public/manager/src/settings/pages/page-shell.tsx +66 -0
  287. package/public/manager/src/settings-agent.css +185 -36
  288. package/public/manager/src/settings-standalone.tsx +1 -0
  289. package/public/manager/src/settings-surface.css +96 -0
  290. package/public/manager/src/types.ts +1 -0
  291. package/scripts/ci/install-ripgrep.sh +35 -0
  292. package/scripts/collect-fresh-install-evidence.sh +2 -2
  293. package/scripts/install-risk-gate.mjs +2 -3
  294. package/scripts/install-wsl.sh +1 -1
  295. package/scripts/install.ps1 +1 -1
  296. package/scripts/install.sh +1 -1
  297. package/scripts/release-1.6.0.sh +1 -1
  298. package/scripts/release-gates.mjs +48 -13
  299. package/scripts/release-preview.sh +2 -2
  300. package/scripts/restack-pr.sh +88 -0
  301. package/scripts/verify-electron-update-metadata.mjs +1 -1
  302. package/scripts/windows-support-contract.json +1 -1
  303. package/public/dist/assets/Activity-BUrp73Re.js +0 -1
  304. package/public/dist/assets/AdvancedExport-B7h_ZvBu.js +0 -1
  305. package/public/dist/assets/Agent-DnbZJP7b.js +0 -1
  306. package/public/dist/assets/Browser-CiBoK5Qx.js +0 -1
  307. package/public/dist/assets/BrowserPanel-SZAUc9T2.js +0 -3
  308. package/public/dist/assets/ChannelEnablementControl-Dl0uYx38.js +0 -85
  309. package/public/dist/assets/ChannelSetupEntry-DxtOrN01.js +0 -1
  310. package/public/dist/assets/ChannelsDiscord-BEGGwd_3.js +0 -1
  311. package/public/dist/assets/ChannelsSlack-BryC2Ahr.js +0 -1
  312. package/public/dist/assets/ChannelsTelegram-CGSpaImJ.js +0 -1
  313. package/public/dist/assets/CodeCanvas-DpkFi5Au.js +0 -2
  314. package/public/dist/assets/DashboardMeta-Dh-tasbY.js +0 -1
  315. package/public/dist/assets/DesignPanel-NLNK9wCo.js +0 -2
  316. package/public/dist/assets/Display-BHGFX3O0.js +0 -1
  317. package/public/dist/assets/Display-BW-_pKRf.js +0 -1
  318. package/public/dist/assets/DocPanel-BM41cYpS.js +0 -1
  319. package/public/dist/assets/Employees-BuFw6-fT.js +0 -1
  320. package/public/dist/assets/FolderPanel-C-eQT3Yq.js +0 -3
  321. package/public/dist/assets/Heartbeat-CIVtKWNc.js +0 -1
  322. package/public/dist/assets/InlineWarn-DIMbcbzk.js +0 -1
  323. package/public/dist/assets/MarkdownRenderer-DyVx6DxM.js +0 -1
  324. package/public/dist/assets/Mcp-uKjor7vh.js +0 -4
  325. package/public/dist/assets/Memory-BSDIXT0B.js +0 -1
  326. package/public/dist/assets/ModelProvider-DMh2tXUx.js +0 -1
  327. package/public/dist/assets/Network-4Pa6JkhK.js +0 -1
  328. package/public/dist/assets/NotesGraphWorkspace-CgdC-fM6.js +0 -1
  329. package/public/dist/assets/PanelLayoutProvider-mn8sI0h-.js +0 -1
  330. package/public/dist/assets/Permissions-CodIW-Yd.js +0 -1
  331. package/public/dist/assets/Profile-DPqrYA44.js +0 -1
  332. package/public/dist/assets/Prompts-CvAx7QqR.js +0 -1
  333. package/public/dist/assets/SpeechKeys-CVBCqoBn.js +0 -1
  334. package/public/dist/assets/TelegramHub-4zKwpk0P.js +0 -1
  335. package/public/dist/assets/app-ByMfeXp-.js +0 -55
  336. package/public/dist/assets/app-DAJWqs33.css +0 -1
  337. package/public/dist/assets/bgtask-badge-Ch88fnhf.js +0 -1
  338. package/public/dist/assets/error-normalize-CL69Bl7z.js +0 -1
  339. package/public/dist/assets/fields-mlGpofqQ.js +0 -1
  340. package/public/dist/assets/iframe-renderer-Bj1JolO8.js +0 -142
  341. package/public/dist/assets/iframe-renderer-DWnvUSrx.js +0 -1
  342. package/public/dist/assets/jsx-runtime-NZYk81nU.js +0 -1
  343. package/public/dist/assets/manager-Bi_xw7TW.js +0 -5
  344. package/public/dist/assets/manager-BnQHAKk6.css +0 -1
  345. package/public/dist/assets/manager-shortcuts-BDOzd8zm.js +0 -1
  346. package/public/dist/assets/memory-Bk_cb3sw.js +0 -1
  347. package/public/dist/assets/message-history-D2vniu04.js +0 -4
  348. package/public/dist/assets/message-history-GAtF_wbZ.js +0 -1
  349. package/public/dist/assets/page-shell-BeGD0rRQ.js +0 -1
  350. package/public/dist/assets/react-dom-DyUOYpVL.js +0 -1
  351. package/public/dist/assets/settings-W4KG9ivu.js +0 -1
  352. package/public/dist/assets/settings-WVGhtneN.js +0 -1
  353. package/public/dist/assets/settings-client-CmwRsVd1.js +0 -1
  354. package/public/dist/assets/settings-core-CgKGnMA5.js +0 -1
  355. package/public/dist/assets/settings-types-D3cd6SWy.js +0 -1
  356. package/public/dist/assets/shared-CiNP20HB.js +0 -1
  357. package/public/dist/assets/skills-Co7Mr-qP.js +0 -1
  358. package/public/dist/assets/slash-commands-BEr-vmIr.js +0 -1
  359. package/public/dist/assets/ui-TUyJsMUf.js +0 -1
  360. package/public/manager/src/settings/pages/components/EngineSubsection.tsx +0 -25
@@ -11,10 +11,11 @@
11
11
  font-size: 12px;
12
12
  }
13
13
 
14
+ /* Flush runtime disclosure: the summary mirrors a shared key-value row and
15
+ * the expanded fields take the same divided-row rhythm as the card. */
14
16
  .settings-agent-flush summary {
15
17
  display: flex;
16
18
  align-items: center;
17
- justify-content: space-between;
18
19
  gap: 12px;
19
20
  cursor: pointer;
20
21
  color: var(--text-primary);
@@ -32,72 +33,219 @@
32
33
  margin-bottom: 12px;
33
34
  }
34
35
 
35
- .settings-runtime-employee-summary {
36
+ .settings-shell .settings-agent-flush {
37
+ min-width: 0;
38
+ }
39
+
40
+ .settings-shell .settings-agent-flush summary {
41
+ justify-content: flex-start;
42
+ list-style: none;
43
+ padding: 12px 16px;
44
+ font-size: 14px;
45
+ font-weight: 500;
46
+ }
47
+
48
+ .settings-shell .settings-agent-flush summary::-webkit-details-marker {
49
+ display: none;
50
+ }
51
+
52
+ .settings-shell .settings-agent-flush summary::before {
53
+ content: '';
54
+ width: 8px;
55
+ height: 8px;
56
+ flex: 0 0 auto;
57
+ border-right: 1.8px solid currentColor;
58
+ border-bottom: 1.8px solid currentColor;
59
+ opacity: 0.7;
60
+ transform: translateY(-1px) rotate(-45deg);
61
+ transition: transform 150ms ease, opacity 150ms ease;
62
+ }
63
+
64
+ .settings-shell .settings-agent-flush[open] summary {
65
+ margin-bottom: 0;
66
+ }
67
+
68
+ .settings-shell .settings-agent-flush[open] summary::before {
69
+ transform: translateY(2px) rotate(45deg);
70
+ }
71
+
72
+ .settings-shell .settings-agent-flush summary:hover::before {
73
+ opacity: 1;
74
+ }
75
+
76
+ .settings-shell .settings-agent-flush summary code {
77
+ margin-left: auto;
78
+ font-size: 13px;
79
+ font-weight: 400;
80
+ }
81
+
82
+ .settings-shell .settings-agent-flush > .settings-field-error {
83
+ display: block;
84
+ margin: 0;
85
+ padding: 0 16px 12px;
86
+ }
87
+
88
+ /* Page-level inline notices share the section card chrome. */
89
+ .settings-shell .settings-inline-notice {
90
+ border: 1px solid var(--settings-border);
91
+ border-radius: 12px;
92
+ background: var(--settings-card);
93
+ padding: 12px 16px;
94
+ font-size: 13px;
95
+ line-height: 20px;
96
+ color: var(--text-secondary);
97
+ }
98
+
99
+ .settings-shell .settings-inline-notice > strong {
100
+ display: block;
101
+ margin-bottom: 4px;
102
+ color: var(--text-primary);
103
+ font-weight: 600;
104
+ }
105
+
106
+ .settings-shell .settings-inline-notice > p {
107
+ margin: 0;
108
+ }
109
+
110
+ .settings-shell .settings-inline-actions {
36
111
  display: flex;
37
- align-items: center;
112
+ flex-wrap: wrap;
38
113
  gap: 8px;
39
- color: var(--text-secondary);
40
- font-size: 12px;
114
+ margin-top: 10px;
41
115
  }
42
116
 
43
- .settings-runtime-employee-summary span {
44
- padding: 2px 6px;
45
- border: 1px solid var(--border-subtle);
46
- border-radius: 999px;
47
- background: var(--surface-raised);
117
+ .settings-shell .settings-inline-notice > .settings-field-error {
118
+ display: block;
119
+ margin-top: 8px;
48
120
  }
49
121
 
50
- .settings-runtime-employee-summary strong {
51
- color: var(--text-danger, #c83232);
52
- font-size: 11px;
53
- font-weight: 600;
122
+ /* Per-CLI model defaults: each group is a divided block inside the card;
123
+ * notes tuck under their field instead of drawing their own divider. */
124
+ .settings-shell .settings-percli-row {
125
+ border-bottom: 0;
126
+ border-top: 1px solid var(--settings-border);
127
+ padding-bottom: 0;
128
+ min-width: 0;
54
129
  }
55
130
 
56
- .settings-runtime-employee-list {
131
+ /* The grid class stays as the test-facing row wrapper; inside the shell the
132
+ * fields stack in the card's divided-row rhythm instead of a track grid. */
133
+ .settings-shell .settings-percli-grid {
57
134
  display: flex;
58
135
  flex-direction: column;
59
- gap: 10px;
136
+ gap: 0;
137
+ align-items: stretch;
138
+ min-width: 0;
60
139
  }
61
140
 
62
- .settings-runtime-employee-row {
63
- border: 1px solid var(--border-subtle);
64
- border-radius: 8px;
65
- padding: 10px;
141
+ .settings-shell .settings-percli-grid > .settings-action {
142
+ align-self: flex-start;
143
+ margin: 0 16px 12px;
144
+ }
145
+
146
+ .settings-shell .settings-percli-title {
66
147
  margin: 0;
148
+ font-size: 13px;
149
+ font-weight: 600;
150
+ color: var(--text-primary);
67
151
  }
68
152
 
69
- .settings-runtime-employee-row legend {
153
+ .settings-shell .settings-percli-note {
154
+ margin: 0;
155
+ padding: 0 16px 10px;
156
+ font-size: 12px;
157
+ line-height: 18px;
158
+ }
159
+
160
+ .settings-shell .settings-percli-note--effort {
161
+ margin-bottom: 0;
162
+ }
163
+
164
+ .settings-shell .settings-percli-row > .settings-field-error,
165
+ .settings-shell .settings-percli-grid > .settings-field-error {
166
+ display: block;
167
+ margin: 0;
168
+ padding: 0 16px 10px;
169
+ }
170
+
171
+ /* Nested groups (STT engine sub-sections, runtime employees) become divided
172
+ * blocks of the same rows rather than floating fieldsets. */
173
+ .settings-shell .settings-engine-subsection {
174
+ border-top: 1px solid var(--settings-border);
175
+ min-width: 0;
176
+ }
177
+
178
+ .settings-shell .settings-engine-subsection-head {
70
179
  display: flex;
71
180
  align-items: center;
181
+ flex-wrap: wrap;
72
182
  gap: 8px;
73
- padding: 0 4px;
183
+ margin: 0;
184
+ padding: 10px 16px;
185
+ font-size: 13px;
186
+ font-weight: 600;
74
187
  color: var(--text-primary);
188
+ }
189
+
190
+ .settings-shell .settings-engine-subsection-hint {
191
+ margin: 0;
192
+ padding: 0 16px 8px;
75
193
  font-size: 12px;
76
- font-weight: 600;
194
+ color: var(--text-secondary);
77
195
  }
78
196
 
79
- .settings-runtime-employee-row legend span {
197
+ .settings-shell .settings-runtime-employee-row {
198
+ border: 0;
199
+ border-top: 1px solid var(--settings-border);
200
+ border-radius: 0;
201
+ margin: 0;
202
+ padding: 0;
203
+ min-width: 0;
204
+ }
205
+
206
+ .settings-shell .settings-runtime-employee-head {
207
+ display: flex;
208
+ align-items: center;
209
+ flex-wrap: wrap;
210
+ gap: 8px;
211
+ margin: 0;
212
+ padding: 10px 16px;
213
+ font-size: 12px;
80
214
  color: var(--text-secondary);
81
- font-size: 10px;
82
- font-weight: 500;
83
- text-transform: uppercase;
84
215
  }
85
216
 
86
- .settings-runtime-employee-grid {
87
- display: grid;
88
- grid-template-columns: minmax(120px, 1fr) minmax(100px, 0.8fr) minmax(160px, 1.2fr) minmax(120px, 1fr);
89
- gap: 10px;
90
- align-items: end;
217
+ .settings-shell .settings-runtime-employee-name {
218
+ font-size: 13px;
219
+ font-weight: 600;
220
+ color: var(--text-primary);
91
221
  }
92
222
 
93
- .settings-runtime-employee-footer {
223
+ .settings-runtime-employee-summary {
94
224
  display: flex;
95
225
  align-items: center;
96
- justify-content: space-between;
97
- gap: 10px;
98
- margin-top: 4px;
226
+ gap: 8px;
99
227
  color: var(--text-secondary);
228
+ font-size: 12px;
229
+ }
230
+
231
+ .settings-runtime-employee-summary span {
232
+ padding: 2px 6px;
233
+ border: 1px solid var(--border-subtle);
234
+ border-radius: 999px;
235
+ background: var(--surface-raised);
236
+ }
237
+
238
+ .settings-runtime-employee-summary strong {
239
+ color: var(--text-danger, #c83232);
100
240
  font-size: 11px;
241
+ font-weight: 600;
242
+ }
243
+
244
+ .settings-runtime-employee-grid {
245
+ display: grid;
246
+ grid-template-columns: minmax(120px, 1fr) minmax(100px, 0.8fr) minmax(160px, 1.2fr) minmax(120px, 1fr);
247
+ gap: 10px;
248
+ align-items: end;
101
249
  }
102
250
 
103
251
  @media (max-width: 900px) {
@@ -112,6 +260,7 @@
112
260
  .settings-shell .settings-runtime-employee-grid {
113
261
  min-width: 0;
114
262
  align-items: start;
263
+ padding: 0 16px;
115
264
  }
116
265
  .settings-shell .settings-runtime-employee-grid > .settings-field {
117
266
  grid-template-columns: minmax(0, 1fr);
@@ -9,6 +9,7 @@ import './manager-dashboard-settings.css';
9
9
  import './settings-shell.css';
10
10
  import './settings-controls.css';
11
11
  import './settings-agent.css';
12
+ import './settings-surface.css';
12
13
  import './settings-embedding.css';
13
14
 
14
15
  const proxyMatch = location.pathname.match(/^\/i\/(\d+)\//);
@@ -0,0 +1,96 @@
1
+ /* Card-body primitives shared by every settings page (see page-shell.tsx).
2
+ * Each primitive is a full-width divided row inside `.settings-section-body`
3
+ * so it inherits the card border, radius and row separators. */
4
+
5
+ .settings-shell .settings-section-body > :is(.settings-kv, .settings-card-actions, .settings-card-toolbar, .settings-card-note) {
6
+ border-top: 1px solid var(--settings-border);
7
+ }
8
+ .settings-shell .settings-section-body > :is(.settings-kv, .settings-card-actions, .settings-card-toolbar, .settings-card-note):first-child {
9
+ border-top: 0;
10
+ }
11
+
12
+ .settings-kv { margin: 0; display: flex; flex-direction: column; }
13
+ .settings-kv-row {
14
+ display: grid;
15
+ grid-template-columns: minmax(120px, 1fr) minmax(0, 2fr);
16
+ align-items: baseline;
17
+ column-gap: 24px;
18
+ padding: 12px 16px;
19
+ font-size: 14px;
20
+ }
21
+ .settings-kv-row + .settings-kv-row { border-top: 1px solid var(--settings-border); }
22
+ .settings-kv-row dt { font-weight: 500; color: var(--text-primary); }
23
+ .settings-kv-row dd { margin: 0; min-width: 0; color: var(--text-secondary); overflow-wrap: anywhere; text-align: right; }
24
+ .settings-kv-mono { font-family: var(--font-mono, ui-monospace, monospace); font-size: 13px; }
25
+
26
+ .settings-status {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 6px;
30
+ padding: 2px 8px;
31
+ border-radius: 999px;
32
+ font-size: 12px;
33
+ font-weight: 500;
34
+ line-height: 20px;
35
+ background: var(--settings-hover);
36
+ color: var(--text-secondary);
37
+ }
38
+ .settings-status-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
39
+ .settings-status-ok { color: var(--success-text, #1f9d55); background: color-mix(in srgb, var(--success-text, #1f9d55) 12%, transparent); }
40
+ .settings-status-warn { color: var(--warning-text, #b7791f); background: color-mix(in srgb, var(--warning-text, #b7791f) 12%, transparent); }
41
+ .settings-status-error { color: var(--error-text, #c83232); background: color-mix(in srgb, var(--error-text, #c83232) 12%, transparent); }
42
+
43
+ .settings-card-actions {
44
+ display: flex;
45
+ align-items: center;
46
+ flex-wrap: wrap;
47
+ gap: 8px 16px;
48
+ padding: 12px 16px;
49
+ }
50
+ .settings-card-actions-status { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--text-secondary); }
51
+ .settings-card-actions-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
52
+
53
+ .settings-card-toolbar {
54
+ display: flex;
55
+ align-items: center;
56
+ flex-wrap: wrap;
57
+ gap: 8px;
58
+ padding: 10px 16px;
59
+ font-size: 12px;
60
+ color: var(--text-secondary);
61
+ }
62
+
63
+ .settings-card-note { margin: 0; padding: 12px 16px; font-size: 13px; line-height: 20px; color: var(--text-secondary); }
64
+ .settings-card-note-error { color: var(--error-text, #c83232); }
65
+ .settings-card-note-warn { color: var(--warning-text, #b7791f); }
66
+
67
+ .settings-card-actions .settings-action { min-height: 32px; padding: 6px 12px; border-radius: 8px; font-size: 13px; font-weight: 500; }
68
+ .settings-card-actions .settings-action:disabled { cursor: not-allowed; opacity: 0.5; }
69
+ .settings-card-actions .settings-action:not(:disabled):hover { background: var(--settings-hover); }
70
+ .settings-card-actions .settings-action-save:not(:disabled):hover { background: var(--text-primary); opacity: 0.88; }
71
+ .settings-shell .settings-action-danger { color: var(--error-text, #c83232); }
72
+ .settings-card-actions-buttons > .settings-field-hint { flex-basis: 100%; text-align: right; }
73
+
74
+ .settings-card-scroll { overflow-x: auto; padding: 0 16px 12px; }
75
+
76
+ @container settings (max-width: 719px) {
77
+ .settings-kv-row { grid-template-columns: minmax(0, 1fr); row-gap: 4px; }
78
+ .settings-kv-row dd { text-align: left; }
79
+ .settings-card-actions-buttons { margin-left: 0; }
80
+ }
81
+
82
+ .settings-shell .settings-card-group > .settings-card-actions { border-top: 1px solid var(--settings-border); }
83
+ .settings-shell .settings-section-body > .settings-card-group:first-child > .settings-card-actions:first-child { border-top: 0; }
84
+
85
+ .settings-card-toolbar .settings-action[aria-pressed="true"] { background: var(--settings-hover); border-color: var(--text-primary); color: var(--text-primary); }
86
+
87
+ .settings-shell .settings-mono-input { font-family: var(--font-mono, ui-monospace, monospace); }
88
+ .settings-shell .settings-memory-modal-body {
89
+ margin: 0;
90
+ font-family: var(--font-mono, ui-monospace, monospace);
91
+ font-size: 12px;
92
+ white-space: pre-wrap;
93
+ overflow-wrap: anywhere;
94
+ overflow: auto;
95
+ max-height: 60vh;
96
+ }
@@ -24,6 +24,7 @@ export type DashboardShortcutAction =
24
24
  | 'toggleRightPanel'
25
25
  | 'focusTerminal'
26
26
  | 'newTerminalSession'
27
+ | 'newCodeSession'
27
28
  | 'openDiff'
28
29
  | 'openFolderTree'
29
30
  | 'closeFocusedTab'
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ RG_VERSION=15.2.0
5
+ RG_ASSET="ripgrep-${RG_VERSION}-x86_64-unknown-linux-musl.tar.gz"
6
+ RG_SHA256=33e15bcf1624b25cdd2a55813a47a2f95dbe126268203e76aa6a585d1e7b149c
7
+
8
+ if [ "$(uname -s)" != "Linux" ]; then
9
+ echo "ERROR: install-ripgrep.sh only supports Linux (got $(uname -s))" >&2
10
+ exit 2
11
+ fi
12
+
13
+ if [ "$(uname -m)" != "x86_64" ]; then
14
+ echo "ERROR: install-ripgrep.sh only supports x86_64 (got $(uname -m))" >&2
15
+ exit 2
16
+ fi
17
+
18
+ DEST="${DEST:-${RUNNER_TEMP:-$(mktemp -d)}/ripgrep-bin}"
19
+ RG_WORK_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/ripgrep-dl.XXXXXX")"
20
+
21
+ mkdir -p "$DEST"
22
+
23
+ cd "$RG_WORK_DIR"
24
+ curl -fsSL --retry 3 "https://github.com/BurntSushi/ripgrep/releases/download/${RG_VERSION}/${RG_ASSET}" -o "$RG_ASSET"
25
+ echo "${RG_SHA256} ${RG_ASSET}" | sha256sum -c -
26
+
27
+ tar -xzf "$RG_ASSET"
28
+ cp "ripgrep-${RG_VERSION}-x86_64-unknown-linux-musl/rg" "${DEST}/rg"
29
+ chmod +x "${DEST}/rg"
30
+
31
+ if [ -n "${GITHUB_PATH:-}" ]; then
32
+ echo "$DEST" >> "$GITHUB_PATH"
33
+ fi
34
+
35
+ "${DEST}/rg" --version
@@ -9,7 +9,7 @@ OUT_DIR=""
9
9
  INSTALL_SCRIPT="${CLI_JAW_INSTALL_SCRIPT:-}"
10
10
  VERIFIER_SCRIPT="${CLI_JAW_VERIFIER_SCRIPT:-}"
11
11
  INSTALL_REF="${CLI_JAW_INSTALL_REF:-main}"
12
- RAW_BASE="${CLI_JAW_RAW_BASE:-https://raw.githubusercontent.com/lidge-jun/cli-jaw/${INSTALL_REF}}"
12
+ RAW_BASE="${CLI_JAW_RAW_BASE:-https://raw.githubusercontent.com/lidge-ai/cli-jaw/${INSTALL_REF}}"
13
13
  FAILURES=0
14
14
 
15
15
  usage() {
@@ -69,7 +69,7 @@ while [ "$#" -gt 0 ]; do
69
69
  --install-ref)
70
70
  [ "$#" -ge 2 ] || { echo "Missing value for --install-ref" >&2; exit 2; }
71
71
  INSTALL_REF="$2"
72
- RAW_BASE="https://raw.githubusercontent.com/lidge-jun/cli-jaw/${INSTALL_REF}"
72
+ RAW_BASE="https://raw.githubusercontent.com/lidge-ai/cli-jaw/${INSTALL_REF}"
73
73
  shift 2
74
74
  ;;
75
75
  --raw-base)
@@ -109,8 +109,7 @@ function runPackageContentsCheck() {
109
109
  function structureVerifierSkipReason() {
110
110
  if (!hasBash) return 'bash not available';
111
111
  if (!existsSync('structure/verify-counts.sh')) return 'structure verifier not available';
112
- if (!commandExists('rg')) return 'ripgrep not available';
113
- if (!existsSync('public/dist')) return 'public/dist build output not available';
112
+ // The membership verifier needs only node + git; it no longer reads build output.
114
113
  return '';
115
114
  }
116
115
 
@@ -161,7 +160,7 @@ checks.push(() => run('electron staged sidecar no-JWC contract', npm, ['run', 'c
161
160
  }));
162
161
  checks.push(() => run('app icon asset contract', npm, ['run', 'check:app-icons']));
163
162
 
164
- checks.push(() => run('structure line-count sync', 'bash', ['structure/verify-counts.sh'], {
163
+ checks.push(() => run('structure tree membership', 'bash', ['structure/verify-counts.sh'], {
165
164
  skip: structureVerifierSkipReason(),
166
165
  }));
167
166
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # ═══════════════════════════════════════════════════════════════
3
3
  # 🦈 CLI-JAW — WSL One-Click Installer
4
- # Usage: curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/main/scripts/install-wsl.sh | bash
4
+ # Usage: curl -fsSL https://raw.githubusercontent.com/lidge-ai/cli-jaw/main/scripts/install-wsl.sh | bash
5
5
  # ═══════════════════════════════════════════════════════════════
6
6
  set -euo pipefail
7
7
 
@@ -25,7 +25,7 @@
25
25
  blocked-postinstall scenario deliberately.
26
26
 
27
27
  .EXAMPLE
28
- irm https://raw.githubusercontent.com/lidge-jun/cli-jaw/main/scripts/install.ps1 | iex
28
+ irm https://raw.githubusercontent.com/lidge-ai/cli-jaw/main/scripts/install.ps1 | iex
29
29
  #>
30
30
  [CmdletBinding()]
31
31
  param(
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # ═══════════════════════════════════════════════════════════════
3
3
  # 🦈 CLI-JAW — One-Click Installer (macOS / Linux)
4
- # Usage: curl -fsSL https://raw.githubusercontent.com/lidge-jun/cli-jaw/main/scripts/install.sh | bash
4
+ # Usage: curl -fsSL https://raw.githubusercontent.com/lidge-ai/cli-jaw/main/scripts/install.sh | bash
5
5
  # ═══════════════════════════════════════════════════════════════
6
6
  set -euo pipefail
7
7
 
@@ -66,4 +66,4 @@ gh release create "v$VERSION" \
66
66
  echo ""
67
67
  echo "✅ cli-jaw@$VERSION released"
68
68
  echo " Install: npm install -g cli-jaw"
69
- echo " Release: https://github.com/lidge-jun/cli-jaw/releases/tag/v$VERSION"
69
+ echo " Release: https://github.com/lidge-ai/cli-jaw/releases/tag/v$VERSION"
@@ -147,6 +147,44 @@ const FORBIDDEN_IN_READY = [
147
147
  ];
148
148
 
149
149
  const GATES = {
150
+ 'dev-ff-main': {
151
+ description: 'dev branch is fast-forwardable on origin/main',
152
+ check() {
153
+ // actions/checkout leaves HEAD detached, so on Actions read the ref the
154
+ // run was triggered for (push and workflow_dispatch both use
155
+ // refs/heads/<branch>; pull_request uses refs/pull/* and is skipped).
156
+ const ghRef = process.env.GITHUB_REF || '';
157
+ const branch = ghRef.startsWith('refs/heads/')
158
+ ? ghRef.slice('refs/heads/'.length)
159
+ : run('git', ['rev-parse', '--abbrev-ref', 'HEAD']).stdout.trim();
160
+ if (branch !== 'dev') {
161
+ return { ok: true, detail: `not on dev (branch=${branch}); skipped` };
162
+ }
163
+ // Always refresh: a stale local origin/main would pass vacuously.
164
+ const fetched = run('git', ['fetch', '--no-tags', 'origin', '+refs/heads/main:refs/remotes/origin/main'], { timeout: 60_000 });
165
+ if (fetched.status !== 0) {
166
+ return { ok: false, detail: `could not fetch origin/main: ${(fetched.stderr || '').trim()}` };
167
+ }
168
+ const ff = run('git', ['merge-base', '--is-ancestor', 'origin/main', 'HEAD']);
169
+ if (ff.status !== 0) {
170
+ return { ok: false, detail: 'dev is not fast-forwardable on main: merge/rebase origin/main (AGENTS.md Remote/브랜치 정책)' };
171
+ }
172
+ return { ok: true, detail: 'dev is fast-forwardable on origin/main' };
173
+ },
174
+ },
175
+ 'agents-size': {
176
+ description: 'AGENTS.md line-count ratchet',
177
+ check() {
178
+ const AGENTS_MD_MAX_LINES = 480; // rounded-up new line count; lowering is the ratchet
179
+ const text = readFile('AGENTS.md');
180
+ // Same count as `wc -l`: newline characters.
181
+ const lines = (text.match(/\n/g) || []).length;
182
+ if (lines > AGENTS_MD_MAX_LINES) {
183
+ return { ok: false, detail: `AGENTS.md is ${lines} lines (max ${AGENTS_MD_MAX_LINES}); shrink or document the raise` };
184
+ }
185
+ return { ok: true, detail: `AGENTS.md: ${lines}/${AGENTS_MD_MAX_LINES} lines` };
186
+ },
187
+ },
150
188
  'typecheck': {
151
189
  description: 'tsc --noEmit (server + frontend) clean',
152
190
  check() {
@@ -481,15 +519,18 @@ const GATES = {
481
519
  },
482
520
  },
483
521
  'doc-drift': {
484
- description: 'no tracked file carries merge conflict markers (every run) + structure docs match live inventory (local only)',
522
+ description: 'no tracked file carries merge conflict markers (every run) + structure docs match live inventory',
485
523
  check() {
486
524
  // A merge that commits its own conflict markers is the one docs
487
- // failure CI has to catch, and nothing did: the #660 merge landed 14
488
- // unresolved blocks on dev (README.md, AGENTS.md, CLAUDE.md,
489
- // structure/str_func.md) and gate:all still went green, because the
490
- // inventory steps below are skipped on CI and nothing else reads
491
- // those files' contents. This scan is a string match on tracked
492
- // paths — platform-neutral — so it runs before that skip.
525
+ // failure CI has to catch: the #660 merge landed 14 unresolved
526
+ // blocks on dev (README.md, AGENTS.md, CLAUDE.md,
527
+ // structure/str_func.md) while gate:all stayed green. This scan is a
528
+ // string match on tracked paths, platform-neutral, and runs first.
529
+ //
530
+ // The inventory steps below used to be skipped on CI because
531
+ // str_func.md carried line counts that differ per checkout (no
532
+ // public/dist, different tracked-file set). str_func.md is now a
533
+ // membership map checked against tracked paths, so they run on CI too.
493
534
  const markers = trackedConflictMarkers();
494
535
  if (markers.error) return { ok: false, detail: markers.error };
495
536
  if (markers.hits.length) {
@@ -500,12 +541,6 @@ const GATES = {
500
541
  const unscanned = markers.unscanned?.length
501
542
  ? ` (not scanned, uninitialised submodule(s): ${markers.unscanned.join(', ')})`
502
543
  : '';
503
- // CI runners produce platform-dependent file/line inventories
504
- // (no public/dist, different tracked-file set) that this gate
505
- // cannot reconcile; it stays a local/pre-release discipline gate.
506
- if (process.env.CI) {
507
- return { ok: true, detail: `conflict-marker scan clean${unscanned}; inventory steps skipped on CI (local/pre-release only)` };
508
- }
509
544
  const steps = [
510
545
  { name: 'docs:check', cmd: 'npm', args: ['run', 'docs:check', '--silent'], timeout: 120_000 },
511
546
  { name: 'check-doc-drift.sh', cmd: 'bash', args: ['structure/check-doc-drift.sh'], timeout: 120_000 },
@@ -420,5 +420,5 @@ echo ""
420
420
  echo "✅ Preview release queued: cli-jaw@$VERSION"
421
421
  echo " Install: npm install -g cli-jaw@preview"
422
422
  echo " Exact: npm install -g cli-jaw@$VERSION"
423
- echo " Release: https://github.com/lidge-jun/cli-jaw/releases/tag/v$VERSION"
424
- echo " Workflow: https://github.com/lidge-jun/cli-jaw/actions/workflows/publish.yml?query=event%3Aworkflow_dispatch"
423
+ echo " Release: https://github.com/lidge-ai/cli-jaw/releases/tag/v$VERSION"
424
+ echo " Workflow: https://github.com/lidge-ai/cli-jaw/actions/workflows/publish.yml?query=event%3Aworkflow_dispatch"