nikcli 0.0.6

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 (602) hide show
  1. package/.turbo/turbo-typecheck.log +1 -0
  2. package/AGENTS.md +27 -0
  3. package/Dockerfile +18 -0
  4. package/README.md +15 -0
  5. package/bin/nikcli +84 -0
  6. package/config.json +13 -0
  7. package/docs/tailscale-mobile/01-tailscale-setup.md +94 -0
  8. package/docs/tailscale-mobile/02-host-setup.md +115 -0
  9. package/docs/tailscale-mobile/03-phone-and-serve.md +134 -0
  10. package/docs/tailscale-mobile/README.md +59 -0
  11. package/examples/README.md +54 -0
  12. package/package.json +147 -0
  13. package/parsers-config.ts +253 -0
  14. package/script/build.ts +179 -0
  15. package/script/postinstall.mjs +125 -0
  16. package/script/publish-registries.ts +187 -0
  17. package/script/publish.ts +100 -0
  18. package/script/schema.ts +47 -0
  19. package/script/seed-e2e.ts +50 -0
  20. package/sequential-prancing-forest.md +373 -0
  21. package/src/acp/README.md +164 -0
  22. package/src/acp/agent.ts +1303 -0
  23. package/src/acp/session.ts +105 -0
  24. package/src/acp/types.ts +22 -0
  25. package/src/agent/agent.ts +528 -0
  26. package/src/agent/generate.txt +32 -0
  27. package/src/agent/prompt/compaction.txt +14 -0
  28. package/src/agent/prompt/explore.txt +18 -0
  29. package/src/agent/prompt/summary.txt +11 -0
  30. package/src/agent/prompt/title.txt +44 -0
  31. package/src/auth/index.ts +73 -0
  32. package/src/bun/index.ts +119 -0
  33. package/src/bun/registry.ts +54 -0
  34. package/src/bus/bus-event.ts +43 -0
  35. package/src/bus/global.ts +10 -0
  36. package/src/bus/index.ts +105 -0
  37. package/src/chatbot/handlers.ts +150 -0
  38. package/src/chatbot/index.ts +132 -0
  39. package/src/cli/bootstrap.ts +17 -0
  40. package/src/cli/cmd/acp.ts +69 -0
  41. package/src/cli/cmd/ads.ts +377 -0
  42. package/src/cli/cmd/agent.ts +259 -0
  43. package/src/cli/cmd/auth.ts +400 -0
  44. package/src/cli/cmd/chatbot.ts +420 -0
  45. package/src/cli/cmd/cmd.ts +7 -0
  46. package/src/cli/cmd/companion.ts +81 -0
  47. package/src/cli/cmd/connectors.ts +593 -0
  48. package/src/cli/cmd/debug/agent.ts +166 -0
  49. package/src/cli/cmd/debug/config.ts +16 -0
  50. package/src/cli/cmd/debug/file.ts +97 -0
  51. package/src/cli/cmd/debug/index.ts +48 -0
  52. package/src/cli/cmd/debug/lsp.ts +52 -0
  53. package/src/cli/cmd/debug/ripgrep.ts +87 -0
  54. package/src/cli/cmd/debug/scrap.ts +16 -0
  55. package/src/cli/cmd/debug/skill.ts +16 -0
  56. package/src/cli/cmd/debug/snapshot.ts +52 -0
  57. package/src/cli/cmd/export.ts +88 -0
  58. package/src/cli/cmd/generate.ts +38 -0
  59. package/src/cli/cmd/github.ts +412 -0
  60. package/src/cli/cmd/image-model.ts +128 -0
  61. package/src/cli/cmd/import.ts +201 -0
  62. package/src/cli/cmd/lovable.ts +128 -0
  63. package/src/cli/cmd/mcp.ts +738 -0
  64. package/src/cli/cmd/mobile.ts +223 -0
  65. package/src/cli/cmd/models.ts +77 -0
  66. package/src/cli/cmd/plug.ts +231 -0
  67. package/src/cli/cmd/pr.ts +104 -0
  68. package/src/cli/cmd/rag-model.ts +167 -0
  69. package/src/cli/cmd/remote.ts +416 -0
  70. package/src/cli/cmd/run.ts +589 -0
  71. package/src/cli/cmd/serve.ts +51 -0
  72. package/src/cli/cmd/session.ts +133 -0
  73. package/src/cli/cmd/speak-model.ts +204 -0
  74. package/src/cli/cmd/stats.ts +402 -0
  75. package/src/cli/cmd/tui/app.tsx +841 -0
  76. package/src/cli/cmd/tui/attach.ts +31 -0
  77. package/src/cli/cmd/tui/component/border.tsx +75 -0
  78. package/src/cli/cmd/tui/component/dialog-agent.tsx +31 -0
  79. package/src/cli/cmd/tui/component/dialog-command.tsx +172 -0
  80. package/src/cli/cmd/tui/component/dialog-config.tsx +291 -0
  81. package/src/cli/cmd/tui/component/dialog-connectors.tsx +440 -0
  82. package/src/cli/cmd/tui/component/dialog-image-model.tsx +97 -0
  83. package/src/cli/cmd/tui/component/dialog-mcp.tsx +86 -0
  84. package/src/cli/cmd/tui/component/dialog-model.tsx +234 -0
  85. package/src/cli/cmd/tui/component/dialog-provider.tsx +260 -0
  86. package/src/cli/cmd/tui/component/dialog-rag-model.tsx +217 -0
  87. package/src/cli/cmd/tui/component/dialog-remote.tsx +489 -0
  88. package/src/cli/cmd/tui/component/dialog-session-list.tsx +170 -0
  89. package/src/cli/cmd/tui/component/dialog-session-rename.tsx +31 -0
  90. package/src/cli/cmd/tui/component/dialog-settings/index.tsx +59 -0
  91. package/src/cli/cmd/tui/component/dialog-settings/prompt.tsx +40 -0
  92. package/src/cli/cmd/tui/component/dialog-settings/sidebar.tsx +39 -0
  93. package/src/cli/cmd/tui/component/dialog-settings/spinner.tsx +62 -0
  94. package/src/cli/cmd/tui/component/dialog-settings/ui.tsx +58 -0
  95. package/src/cli/cmd/tui/component/dialog-skills.tsx +117 -0
  96. package/src/cli/cmd/tui/component/dialog-speak-model.tsx +304 -0
  97. package/src/cli/cmd/tui/component/dialog-stash.tsx +87 -0
  98. package/src/cli/cmd/tui/component/dialog-status.tsx +165 -0
  99. package/src/cli/cmd/tui/component/dialog-tag.tsx +44 -0
  100. package/src/cli/cmd/tui/component/dialog-theme-create.tsx +717 -0
  101. package/src/cli/cmd/tui/component/dialog-theme-list.tsx +52 -0
  102. package/src/cli/cmd/tui/component/dialog-workspace-list.tsx +350 -0
  103. package/src/cli/cmd/tui/component/error-component.tsx +91 -0
  104. package/src/cli/cmd/tui/component/logo.tsx +103 -0
  105. package/src/cli/cmd/tui/component/plugin-route-missing.tsx +14 -0
  106. package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +669 -0
  107. package/src/cli/cmd/tui/component/prompt/frecency.tsx +89 -0
  108. package/src/cli/cmd/tui/component/prompt/history.tsx +108 -0
  109. package/src/cli/cmd/tui/component/prompt/index.tsx +2165 -0
  110. package/src/cli/cmd/tui/component/prompt/stash.tsx +63 -0
  111. package/src/cli/cmd/tui/component/spinner.tsx +24 -0
  112. package/src/cli/cmd/tui/component/startup-loading.tsx +63 -0
  113. package/src/cli/cmd/tui/component/table/markdown-table.tsx +267 -0
  114. package/src/cli/cmd/tui/component/table-db/db/connections.ts +75 -0
  115. package/src/cli/cmd/tui/component/table-db/db/db-connection.ts +223 -0
  116. package/src/cli/cmd/tui/component/table-db/db/db-preview.ts +202 -0
  117. package/src/cli/cmd/tui/component/table-db/db/factory.ts +77 -0
  118. package/src/cli/cmd/tui/component/table-db/db/index.ts +9 -0
  119. package/src/cli/cmd/tui/component/table-db/db/mysql-connection.ts +330 -0
  120. package/src/cli/cmd/tui/component/table-db/db/postgres-connection.ts +338 -0
  121. package/src/cli/cmd/tui/component/table-db/db/sqlite-connection.ts +302 -0
  122. package/src/cli/cmd/tui/component/table-db/db/types.ts +108 -0
  123. package/src/cli/cmd/tui/component/table-db/table/dbedit-hooks.ts +74 -0
  124. package/src/cli/cmd/tui/component/table-db/table/index.ts +15 -0
  125. package/src/cli/cmd/tui/component/table-db/table/table-events.ts +54 -0
  126. package/src/cli/cmd/tui/component/table-db/table/table-formatters.ts +191 -0
  127. package/src/cli/cmd/tui/component/table-db/table/table-hooks.ts +105 -0
  128. package/src/cli/cmd/tui/component/table-db/table/table-keyboard-handler.ts +255 -0
  129. package/src/cli/cmd/tui/component/table-db/table/table-layout-engine.ts +208 -0
  130. package/src/cli/cmd/tui/component/table-db/table/table-renderable.ts +486 -0
  131. package/src/cli/cmd/tui/component/table-db/table/table-selection-manager.ts +136 -0
  132. package/src/cli/cmd/tui/component/table-db/table/table-state.ts +198 -0
  133. package/src/cli/cmd/tui/component/table-db/table/types.ts +69 -0
  134. package/src/cli/cmd/tui/component/table-db/ui/db-visualizer.tsx +71 -0
  135. package/src/cli/cmd/tui/component/table-db/ui/index.ts +2 -0
  136. package/src/cli/cmd/tui/component/table-db/ui/table-renderer.ts +607 -0
  137. package/src/cli/cmd/tui/component/textarea-keybindings.ts +73 -0
  138. package/src/cli/cmd/tui/component/tips.tsx +195 -0
  139. package/src/cli/cmd/tui/component/todo-item.tsx +32 -0
  140. package/src/cli/cmd/tui/context/args.tsx +14 -0
  141. package/src/cli/cmd/tui/context/directory.ts +13 -0
  142. package/src/cli/cmd/tui/context/exit.tsx +24 -0
  143. package/src/cli/cmd/tui/context/helper.tsx +25 -0
  144. package/src/cli/cmd/tui/context/keybind.tsx +102 -0
  145. package/src/cli/cmd/tui/context/kv.tsx +52 -0
  146. package/src/cli/cmd/tui/context/local.tsx +458 -0
  147. package/src/cli/cmd/tui/context/plugin-keybinds.ts +41 -0
  148. package/src/cli/cmd/tui/context/prompt.tsx +18 -0
  149. package/src/cli/cmd/tui/context/route.tsx +54 -0
  150. package/src/cli/cmd/tui/context/sdk.tsx +128 -0
  151. package/src/cli/cmd/tui/context/server.tsx +8 -0
  152. package/src/cli/cmd/tui/context/sync.tsx +510 -0
  153. package/src/cli/cmd/tui/context/theme/abyss.json +233 -0
  154. package/src/cli/cmd/tui/context/theme/apple.json +235 -0
  155. package/src/cli/cmd/tui/context/theme/arctic.json +232 -0
  156. package/src/cli/cmd/tui/context/theme/aura.json +69 -0
  157. package/src/cli/cmd/tui/context/theme/ayu.json +80 -0
  158. package/src/cli/cmd/tui/context/theme/ayuai.json +229 -0
  159. package/src/cli/cmd/tui/context/theme/blood.json +229 -0
  160. package/src/cli/cmd/tui/context/theme/carbonfox.json +248 -0
  161. package/src/cli/cmd/tui/context/theme/catmoe.json +235 -0
  162. package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +233 -0
  163. package/src/cli/cmd/tui/context/theme/catppuccin-latte.json +233 -0
  164. package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +233 -0
  165. package/src/cli/cmd/tui/context/theme/catppuccin.json +259 -0
  166. package/src/cli/cmd/tui/context/theme/charcoal.json +230 -0
  167. package/src/cli/cmd/tui/context/theme/chromatic.json +235 -0
  168. package/src/cli/cmd/tui/context/theme/cobalt2.json +228 -0
  169. package/src/cli/cmd/tui/context/theme/cosmic.json +234 -0
  170. package/src/cli/cmd/tui/context/theme/cursor.json +249 -0
  171. package/src/cli/cmd/tui/context/theme/cyber.json +235 -0
  172. package/src/cli/cmd/tui/context/theme/dawnfox.json +229 -0
  173. package/src/cli/cmd/tui/context/theme/dimension.json +235 -0
  174. package/src/cli/cmd/tui/context/theme/dracula-official.json +222 -0
  175. package/src/cli/cmd/tui/context/theme/dracula.json +219 -0
  176. package/src/cli/cmd/tui/context/theme/dream.json +235 -0
  177. package/src/cli/cmd/tui/context/theme/duo.json +235 -0
  178. package/src/cli/cmd/tui/context/theme/dusk.json +235 -0
  179. package/src/cli/cmd/tui/context/theme/ebony.json +232 -0
  180. package/src/cli/cmd/tui/context/theme/equilibrium.json +232 -0
  181. package/src/cli/cmd/tui/context/theme/ethereal.json +235 -0
  182. package/src/cli/cmd/tui/context/theme/everforest.json +241 -0
  183. package/src/cli/cmd/tui/context/theme/flexoki.json +237 -0
  184. package/src/cli/cmd/tui/context/theme/fusion.json +235 -0
  185. package/src/cli/cmd/tui/context/theme/ghost.json +235 -0
  186. package/src/cli/cmd/tui/context/theme/github-dark.json +229 -0
  187. package/src/cli/cmd/tui/context/theme/github-dimmed.json +231 -0
  188. package/src/cli/cmd/tui/context/theme/github-light.json +229 -0
  189. package/src/cli/cmd/tui/context/theme/github.json +233 -0
  190. package/src/cli/cmd/tui/context/theme/glass.json +235 -0
  191. package/src/cli/cmd/tui/context/theme/gold.json +235 -0
  192. package/src/cli/cmd/tui/context/theme/gone.json +234 -0
  193. package/src/cli/cmd/tui/context/theme/greyscale.json +229 -0
  194. package/src/cli/cmd/tui/context/theme/gruvbox.json +242 -0
  195. package/src/cli/cmd/tui/context/theme/hacker.json +229 -0
  196. package/src/cli/cmd/tui/context/theme/holo.json +235 -0
  197. package/src/cli/cmd/tui/context/theme/ink.json +235 -0
  198. package/src/cli/cmd/tui/context/theme/jet.json +233 -0
  199. package/src/cli/cmd/tui/context/theme/kanagawa.json +227 -0
  200. package/src/cli/cmd/tui/context/theme/lavender.json +236 -0
  201. package/src/cli/cmd/tui/context/theme/lightph.json +235 -0
  202. package/src/cli/cmd/tui/context/theme/lucent-orng.json +237 -0
  203. package/src/cli/cmd/tui/context/theme/material-ocean.json +230 -0
  204. package/src/cli/cmd/tui/context/theme/material.json +235 -0
  205. package/src/cli/cmd/tui/context/theme/matrix.json +227 -0
  206. package/src/cli/cmd/tui/context/theme/mercury.json +245 -0
  207. package/src/cli/cmd/tui/context/theme/midnight.json +235 -0
  208. package/src/cli/cmd/tui/context/theme/modern.json +235 -0
  209. package/src/cli/cmd/tui/context/theme/monokai.json +221 -0
  210. package/src/cli/cmd/tui/context/theme/muted.json +229 -0
  211. package/src/cli/cmd/tui/context/theme/neon.json +229 -0
  212. package/src/cli/cmd/tui/context/theme/neonfusion.json +235 -0
  213. package/src/cli/cmd/tui/context/theme/neutral.json +235 -0
  214. package/src/cli/cmd/tui/context/theme/nightowl.json +221 -0
  215. package/src/cli/cmd/tui/context/theme/nikcli.json +245 -0
  216. package/src/cli/cmd/tui/context/theme/nord.json +223 -0
  217. package/src/cli/cmd/tui/context/theme/nordic.json +235 -0
  218. package/src/cli/cmd/tui/context/theme/nova.json +235 -0
  219. package/src/cli/cmd/tui/context/theme/obsidian.json +234 -0
  220. package/src/cli/cmd/tui/context/theme/one-dark.json +231 -0
  221. package/src/cli/cmd/tui/context/theme/one-pro.json +229 -0
  222. package/src/cli/cmd/tui/context/theme/onyx.json +233 -0
  223. package/src/cli/cmd/tui/context/theme/orng.json +249 -0
  224. package/src/cli/cmd/tui/context/theme/osaka-jade.json +240 -0
  225. package/src/cli/cmd/tui/context/theme/oxocarbon.json +229 -0
  226. package/src/cli/cmd/tui/context/theme/palenight.json +222 -0
  227. package/src/cli/cmd/tui/context/theme/poimandres.json +230 -0
  228. package/src/cli/cmd/tui/context/theme/prism.json +235 -0
  229. package/src/cli/cmd/tui/context/theme/radiant.json +235 -0
  230. package/src/cli/cmd/tui/context/theme/rosepine.json +234 -0
  231. package/src/cli/cmd/tui/context/theme/shadow.json +235 -0
  232. package/src/cli/cmd/tui/context/theme/silicon.json +235 -0
  233. package/src/cli/cmd/tui/context/theme/slate.json +233 -0
  234. package/src/cli/cmd/tui/context/theme/soft.json +235 -0
  235. package/src/cli/cmd/tui/context/theme/solarized.json +223 -0
  236. package/src/cli/cmd/tui/context/theme/spectrum.json +235 -0
  237. package/src/cli/cmd/tui/context/theme/starlight.json +233 -0
  238. package/src/cli/cmd/tui/context/theme/sunrise.json +235 -0
  239. package/src/cli/cmd/tui/context/theme/synthwave84.json +226 -0
  240. package/src/cli/cmd/tui/context/theme/tech.json +235 -0
  241. package/src/cli/cmd/tui/context/theme/tokyonight-storm.json +245 -0
  242. package/src/cli/cmd/tui/context/theme/tokyonight.json +243 -0
  243. package/src/cli/cmd/tui/context/theme/vapor.json +235 -0
  244. package/src/cli/cmd/tui/context/theme/vercel.json +245 -0
  245. package/src/cli/cmd/tui/context/theme/vesper.json +218 -0
  246. package/src/cli/cmd/tui/context/theme/vivid.json +232 -0
  247. package/src/cli/cmd/tui/context/theme/void.json +235 -0
  248. package/src/cli/cmd/tui/context/theme/vscode.json +235 -0
  249. package/src/cli/cmd/tui/context/theme/zenburn.json +223 -0
  250. package/src/cli/cmd/tui/context/theme/zinc.json +236 -0
  251. package/src/cli/cmd/tui/context/theme.tsx +1303 -0
  252. package/src/cli/cmd/tui/event.ts +48 -0
  253. package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +152 -0
  254. package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +50 -0
  255. package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +63 -0
  256. package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +62 -0
  257. package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +93 -0
  258. package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +66 -0
  259. package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +96 -0
  260. package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +48 -0
  261. package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +288 -0
  262. package/src/cli/cmd/tui/plugin/api.tsx +407 -0
  263. package/src/cli/cmd/tui/plugin/index.ts +3 -0
  264. package/src/cli/cmd/tui/plugin/internal.ts +25 -0
  265. package/src/cli/cmd/tui/plugin/runtime.ts +1048 -0
  266. package/src/cli/cmd/tui/plugin/slots.tsx +61 -0
  267. package/src/cli/cmd/tui/routes/home.tsx +153 -0
  268. package/src/cli/cmd/tui/routes/session/dbedit.tsx +474 -0
  269. package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +65 -0
  270. package/src/cli/cmd/tui/routes/session/dialog-message.tsx +110 -0
  271. package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +105 -0
  272. package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +47 -0
  273. package/src/cli/cmd/tui/routes/session/footer.tsx +75 -0
  274. package/src/cli/cmd/tui/routes/session/header.tsx +177 -0
  275. package/src/cli/cmd/tui/routes/session/index.tsx +2280 -0
  276. package/src/cli/cmd/tui/routes/session/permission.tsx +540 -0
  277. package/src/cli/cmd/tui/routes/session/question.tsx +435 -0
  278. package/src/cli/cmd/tui/routes/session/sidebar.tsx +313 -0
  279. package/src/cli/cmd/tui/thread.ts +174 -0
  280. package/src/cli/cmd/tui/ui/dialog-alert.tsx +57 -0
  281. package/src/cli/cmd/tui/ui/dialog-confirm.tsx +83 -0
  282. package/src/cli/cmd/tui/ui/dialog-export-options.tsx +204 -0
  283. package/src/cli/cmd/tui/ui/dialog-help.tsx +38 -0
  284. package/src/cli/cmd/tui/ui/dialog-prompt.tsx +102 -0
  285. package/src/cli/cmd/tui/ui/dialog-select.tsx +389 -0
  286. package/src/cli/cmd/tui/ui/dialog.tsx +180 -0
  287. package/src/cli/cmd/tui/ui/link.tsx +34 -0
  288. package/src/cli/cmd/tui/ui/spinner.ts +368 -0
  289. package/src/cli/cmd/tui/ui/toast.tsx +138 -0
  290. package/src/cli/cmd/tui/util/clipboard.ts +154 -0
  291. package/src/cli/cmd/tui/util/editor.ts +32 -0
  292. package/src/cli/cmd/tui/util/signal.ts +7 -0
  293. package/src/cli/cmd/tui/util/terminal.ts +114 -0
  294. package/src/cli/cmd/tui/util/transcript.ts +98 -0
  295. package/src/cli/cmd/tui/win32.ts +110 -0
  296. package/src/cli/cmd/tui/worker.ts +156 -0
  297. package/src/cli/cmd/uninstall.ts +357 -0
  298. package/src/cli/cmd/upgrade.ts +72 -0
  299. package/src/cli/cmd/web.ts +87 -0
  300. package/src/cli/cmd/workspace-serve.ts +16 -0
  301. package/src/cli/error.ts +57 -0
  302. package/src/cli/network.ts +55 -0
  303. package/src/cli/remote/index.ts +36 -0
  304. package/src/cli/remote/notifications.ts +104 -0
  305. package/src/cli/remote/qr-renderer.ts +86 -0
  306. package/src/cli/remote/remote-service.ts +757 -0
  307. package/src/cli/remote/session-manager.ts +284 -0
  308. package/src/cli/remote/subagent-hooks.ts +151 -0
  309. package/src/cli/remote/types.ts +121 -0
  310. package/src/cli/ui.ts +96 -0
  311. package/src/cli/upgrade.ts +25 -0
  312. package/src/command/index.ts +174 -0
  313. package/src/command/template/initialize.txt +10 -0
  314. package/src/command/template/review.txt +99 -0
  315. package/src/config/config.ts +1760 -0
  316. package/src/config/markdown.ts +88 -0
  317. package/src/config/migrate-tui-config.ts +155 -0
  318. package/src/config/paths.ts +174 -0
  319. package/src/config/tui-schema.ts +36 -0
  320. package/src/config/tui.ts +209 -0
  321. package/src/connectors/api/base.ts +75 -0
  322. package/src/connectors/api/figma.ts +103 -0
  323. package/src/connectors/api/github.ts +247 -0
  324. package/src/connectors/api/lovable.ts +126 -0
  325. package/src/connectors/api/slack.ts +137 -0
  326. package/src/connectors/auth.ts +68 -0
  327. package/src/connectors/cache.ts +119 -0
  328. package/src/connectors/credentials.ts +81 -0
  329. package/src/connectors/index.ts +202 -0
  330. package/src/connectors/registry.ts +358 -0
  331. package/src/docs/context.ts +120 -0
  332. package/src/docs/library.ts +189 -0
  333. package/src/env/index.ts +26 -0
  334. package/src/file/ignore.ts +83 -0
  335. package/src/file/index.ts +411 -0
  336. package/src/file/ripgrep.ts +402 -0
  337. package/src/file/time.ts +65 -0
  338. package/src/file/watcher.ts +127 -0
  339. package/src/flag/flag.ts +128 -0
  340. package/src/format/formatter.ts +356 -0
  341. package/src/format/index.ts +137 -0
  342. package/src/global/index.ts +57 -0
  343. package/src/id/id.ts +83 -0
  344. package/src/ide/index.ts +76 -0
  345. package/src/index.ts +184 -0
  346. package/src/installation/index.ts +246 -0
  347. package/src/lsp/client.ts +250 -0
  348. package/src/lsp/index.ts +483 -0
  349. package/src/lsp/language.ts +119 -0
  350. package/src/lsp/server.ts +2046 -0
  351. package/src/mcp/auth.ts +121 -0
  352. package/src/mcp/index.ts +860 -0
  353. package/src/mcp/oauth-callback.ts +198 -0
  354. package/src/mcp/oauth-provider.ts +148 -0
  355. package/src/mobile/auth.ts +97 -0
  356. package/src/mobile/github-repo.ts +185 -0
  357. package/src/patch/index.ts +631 -0
  358. package/src/permission/arity.ts +150 -0
  359. package/src/permission/dbedit.ts +236 -0
  360. package/src/permission/index.ts +210 -0
  361. package/src/permission/next.ts +287 -0
  362. package/src/plugin/codex.ts +493 -0
  363. package/src/plugin/copilot.ts +261 -0
  364. package/src/plugin/index.ts +714 -0
  365. package/src/plugin/install.ts +379 -0
  366. package/src/plugin/meta.ts +165 -0
  367. package/src/plugin/shared.ts +188 -0
  368. package/src/project/bootstrap.ts +35 -0
  369. package/src/project/instance.ts +84 -0
  370. package/src/project/project.ts +373 -0
  371. package/src/project/state.ts +66 -0
  372. package/src/project/vcs.ts +76 -0
  373. package/src/prompt/stash-store.ts +93 -0
  374. package/src/provider/auth.ts +147 -0
  375. package/src/provider/models-macro.ts +22 -0
  376. package/src/provider/models.ts +216 -0
  377. package/src/provider/provider.ts +1483 -0
  378. package/src/provider/sdk/openai-compatible/src/README.md +5 -0
  379. package/src/provider/sdk/openai-compatible/src/index.ts +2 -0
  380. package/src/provider/sdk/openai-compatible/src/openai-compatible-provider.ts +100 -0
  381. package/src/provider/sdk/openai-compatible/src/responses/convert-to-openai-responses-input.ts +303 -0
  382. package/src/provider/sdk/openai-compatible/src/responses/map-openai-responses-finish-reason.ts +22 -0
  383. package/src/provider/sdk/openai-compatible/src/responses/openai-config.ts +18 -0
  384. package/src/provider/sdk/openai-compatible/src/responses/openai-error.ts +22 -0
  385. package/src/provider/sdk/openai-compatible/src/responses/openai-responses-api-types.ts +207 -0
  386. package/src/provider/sdk/openai-compatible/src/responses/openai-responses-language-model.ts +1732 -0
  387. package/src/provider/sdk/openai-compatible/src/responses/openai-responses-prepare-tools.ts +177 -0
  388. package/src/provider/sdk/openai-compatible/src/responses/openai-responses-settings.ts +1 -0
  389. package/src/provider/sdk/openai-compatible/src/responses/tool/code-interpreter.ts +88 -0
  390. package/src/provider/sdk/openai-compatible/src/responses/tool/file-search.ts +128 -0
  391. package/src/provider/sdk/openai-compatible/src/responses/tool/image-generation.ts +115 -0
  392. package/src/provider/sdk/openai-compatible/src/responses/tool/local-shell.ts +65 -0
  393. package/src/provider/sdk/openai-compatible/src/responses/tool/web-search-preview.ts +104 -0
  394. package/src/provider/sdk/openai-compatible/src/responses/tool/web-search.ts +103 -0
  395. package/src/provider/transform.ts +828 -0
  396. package/src/pty/index.ts +241 -0
  397. package/src/question/index.ts +171 -0
  398. package/src/rag/chunk.ts +43 -0
  399. package/src/rag/embed.ts +179 -0
  400. package/src/rag/index.ts +376 -0
  401. package/src/rag/storage.ts +76 -0
  402. package/src/scheduler/index.ts +61 -0
  403. package/src/server/error.ts +36 -0
  404. package/src/server/event.ts +7 -0
  405. package/src/server/mdns.ts +59 -0
  406. package/src/server/routes/chatbot.ts +205 -0
  407. package/src/server/routes/companion.ts +729 -0
  408. package/src/server/routes/config.ts +92 -0
  409. package/src/server/routes/connectors.ts +121 -0
  410. package/src/server/routes/dbedit.ts +76 -0
  411. package/src/server/routes/experimental.ts +210 -0
  412. package/src/server/routes/file.ts +197 -0
  413. package/src/server/routes/global.ts +135 -0
  414. package/src/server/routes/mcp.ts +225 -0
  415. package/src/server/routes/mobile.ts +2044 -0
  416. package/src/server/routes/permission.ts +68 -0
  417. package/src/server/routes/project.ts +82 -0
  418. package/src/server/routes/provider.ts +235 -0
  419. package/src/server/routes/pty.ts +169 -0
  420. package/src/server/routes/question.ts +98 -0
  421. package/src/server/routes/session.ts +968 -0
  422. package/src/server/routes/tui.ts +379 -0
  423. package/src/server/routes/workspace.ts +104 -0
  424. package/src/server/server.ts +761 -0
  425. package/src/server/ssh.ts +207 -0
  426. package/src/session/auth.ts +402 -0
  427. package/src/session/compaction.ts +253 -0
  428. package/src/session/generate.ts +38 -0
  429. package/src/session/index.ts +598 -0
  430. package/src/session/llm.ts +273 -0
  431. package/src/session/message-v2.ts +836 -0
  432. package/src/session/message.ts +189 -0
  433. package/src/session/processor.ts +408 -0
  434. package/src/session/prompt/anthropic-20250930.txt +165 -0
  435. package/src/session/prompt/anthropic.txt +105 -0
  436. package/src/session/prompt/anthropic_spoof.txt +1 -0
  437. package/src/session/prompt/beast.txt +147 -0
  438. package/src/session/prompt/build-switch.txt +5 -0
  439. package/src/session/prompt/codex_header.txt +79 -0
  440. package/src/session/prompt/copilot-gpt-5.txt +143 -0
  441. package/src/session/prompt/gemini.txt +155 -0
  442. package/src/session/prompt/max-steps.txt +16 -0
  443. package/src/session/prompt/plan-reminder-anthropic.txt +67 -0
  444. package/src/session/prompt/plan.txt +25 -0
  445. package/src/session/prompt/qwen.txt +108 -0
  446. package/src/session/prompt.ts +1942 -0
  447. package/src/session/retry.ts +90 -0
  448. package/src/session/revert.ts +120 -0
  449. package/src/session/stats.ts +404 -0
  450. package/src/session/status.ts +84 -0
  451. package/src/session/summary.ts +184 -0
  452. package/src/session/system.ts +195 -0
  453. package/src/session/toast.tsx +105 -0
  454. package/src/session/todo.ts +258 -0
  455. package/src/session/uninstall.ts +357 -0
  456. package/src/share/share-next.ts +421 -0
  457. package/src/share/share.ts +92 -0
  458. package/src/shell/shell.ts +65 -0
  459. package/src/skill/index.ts +1 -0
  460. package/src/skill/skill.ts +232 -0
  461. package/src/snapshot/index.ts +297 -0
  462. package/src/storage/storage.ts +227 -0
  463. package/src/tool/apply_patch.ts +288 -0
  464. package/src/tool/apply_patch.txt +33 -0
  465. package/src/tool/bash.ts +252 -0
  466. package/src/tool/bash.txt +115 -0
  467. package/src/tool/batch.ts +175 -0
  468. package/src/tool/batch.txt +24 -0
  469. package/src/tool/codesearch.ts +132 -0
  470. package/src/tool/codesearch.txt +12 -0
  471. package/src/tool/context_collect.ts +152 -0
  472. package/src/tool/context_collect.txt +9 -0
  473. package/src/tool/context_diagnostics.ts +81 -0
  474. package/src/tool/context_diagnostics.txt +5 -0
  475. package/src/tool/context_related.ts +117 -0
  476. package/src/tool/context_related.txt +5 -0
  477. package/src/tool/context_search.ts +108 -0
  478. package/src/tool/context_search.txt +8 -0
  479. package/src/tool/db-diff.ts +434 -0
  480. package/src/tool/db-table.txt +15 -0
  481. package/src/tool/docs_add.ts +50 -0
  482. package/src/tool/docs_add.txt +5 -0
  483. package/src/tool/docs_context.ts +56 -0
  484. package/src/tool/docs_context.txt +4 -0
  485. package/src/tool/docs_gap_report.ts +79 -0
  486. package/src/tool/docs_gap_report.txt +7 -0
  487. package/src/tool/docs_load.ts +41 -0
  488. package/src/tool/docs_load.txt +4 -0
  489. package/src/tool/docs_request.ts +129 -0
  490. package/src/tool/docs_request.txt +7 -0
  491. package/src/tool/docs_search.ts +51 -0
  492. package/src/tool/docs_search.txt +6 -0
  493. package/src/tool/docs_unload.ts +38 -0
  494. package/src/tool/docs_unload.txt +5 -0
  495. package/src/tool/edit.ts +614 -0
  496. package/src/tool/edit.txt +10 -0
  497. package/src/tool/external-directory.ts +32 -0
  498. package/src/tool/generate_image.ts +174 -0
  499. package/src/tool/generate_image.txt +12 -0
  500. package/src/tool/glob.ts +79 -0
  501. package/src/tool/glob.txt +6 -0
  502. package/src/tool/grep.ts +153 -0
  503. package/src/tool/grep.txt +8 -0
  504. package/src/tool/invalid.ts +17 -0
  505. package/src/tool/ls.ts +116 -0
  506. package/src/tool/ls.txt +1 -0
  507. package/src/tool/lsp.ts +96 -0
  508. package/src/tool/lsp.txt +19 -0
  509. package/src/tool/memory_search.ts +141 -0
  510. package/src/tool/memory_search.txt +8 -0
  511. package/src/tool/multiedit.ts +46 -0
  512. package/src/tool/multiedit.txt +41 -0
  513. package/src/tool/plan-enter.txt +14 -0
  514. package/src/tool/plan-exit.txt +13 -0
  515. package/src/tool/plan.ts +130 -0
  516. package/src/tool/question.ts +33 -0
  517. package/src/tool/question.txt +10 -0
  518. package/src/tool/rag_index.ts +77 -0
  519. package/src/tool/rag_index.txt +10 -0
  520. package/src/tool/rag_reset.ts +26 -0
  521. package/src/tool/rag_reset.txt +4 -0
  522. package/src/tool/rag_search.ts +62 -0
  523. package/src/tool/rag_search.txt +6 -0
  524. package/src/tool/rag_status.ts +45 -0
  525. package/src/tool/rag_status.txt +4 -0
  526. package/src/tool/read.ts +203 -0
  527. package/src/tool/read.txt +12 -0
  528. package/src/tool/registry.ts +214 -0
  529. package/src/tool/skill.ts +169 -0
  530. package/src/tool/skill.txt +3 -0
  531. package/src/tool/smart_docs.ts +74 -0
  532. package/src/tool/smart_docs.txt +7 -0
  533. package/src/tool/speak/elevenlabs.ts +201 -0
  534. package/src/tool/speak/openrouter.ts +240 -0
  535. package/src/tool/speak/provider.ts +83 -0
  536. package/src/tool/speak.ts +440 -0
  537. package/src/tool/task.ts +194 -0
  538. package/src/tool/task.txt +60 -0
  539. package/src/tool/todo.ts +53 -0
  540. package/src/tool/todoread.txt +14 -0
  541. package/src/tool/todowrite.txt +167 -0
  542. package/src/tool/tool.ts +87 -0
  543. package/src/tool/tree.ts +218 -0
  544. package/src/tool/tree.txt +8 -0
  545. package/src/tool/truncation.ts +106 -0
  546. package/src/tool/use-connector.ts +47 -0
  547. package/src/tool/voice.ts +188 -0
  548. package/src/tool/webfetch.ts +205 -0
  549. package/src/tool/webfetch.txt +13 -0
  550. package/src/tool/websearch.ts +150 -0
  551. package/src/tool/websearch.txt +14 -0
  552. package/src/tool/write.ts +80 -0
  553. package/src/tool/write.txt +8 -0
  554. package/src/util/archive.ts +16 -0
  555. package/src/util/color.ts +19 -0
  556. package/src/util/context.ts +25 -0
  557. package/src/util/defer.ts +12 -0
  558. package/src/util/error.ts +77 -0
  559. package/src/util/eventloop.ts +20 -0
  560. package/src/util/filesystem.ts +125 -0
  561. package/src/util/flock.ts +329 -0
  562. package/src/util/fn.ts +11 -0
  563. package/src/util/format.ts +20 -0
  564. package/src/util/hash.ts +7 -0
  565. package/src/util/iife.ts +3 -0
  566. package/src/util/keybind.ts +103 -0
  567. package/src/util/lazy.ts +18 -0
  568. package/src/util/locale.ts +81 -0
  569. package/src/util/lock.ts +98 -0
  570. package/src/util/log.ts +180 -0
  571. package/src/util/network.ts +9 -0
  572. package/src/util/process.ts +15 -0
  573. package/src/util/queue.ts +32 -0
  574. package/src/util/record.ts +3 -0
  575. package/src/util/rpc.ts +66 -0
  576. package/src/util/scrap.ts +10 -0
  577. package/src/util/signal.ts +12 -0
  578. package/src/util/timeout.ts +14 -0
  579. package/src/util/token.ts +7 -0
  580. package/src/util/wildcard.ts +56 -0
  581. package/src/workspace/adaptors/index.ts +271 -0
  582. package/src/workspace/adaptors/types.ts +14 -0
  583. package/src/workspace/adaptors/worktree.ts +31 -0
  584. package/src/workspace/config.ts +19 -0
  585. package/src/workspace/index.ts +223 -0
  586. package/src/workspace/session-proxy-middleware.ts +97 -0
  587. package/src/workspace/sse.ts +66 -0
  588. package/src/workspace/workspace-context.ts +23 -0
  589. package/src/workspace/workspace-server/routes.ts +33 -0
  590. package/src/workspace/workspace-server/server.ts +47 -0
  591. package/src/worktree/index.ts +487 -0
  592. package/sst-env.d.ts +10 -0
  593. package/test/benchmark.test.ts +121 -0
  594. package/test/build-optimizations.test.ts +124 -0
  595. package/test/id-benchmark.test.ts +132 -0
  596. package/test/optimizations.test.ts +302 -0
  597. package/test/preload.ts +1 -0
  598. package/test/solidjs-benchmark.test.ts +262 -0
  599. package/test/solidjs-optimizations.test.ts +259 -0
  600. package/test/tui-benchmark.test.ts +230 -0
  601. package/test/wildcard-benchmark.test.ts +180 -0
  602. package/tsconfig.json +26 -0
@@ -0,0 +1 @@
1
+ $ tsgo --noEmit
package/AGENTS.md ADDED
@@ -0,0 +1,27 @@
1
+ # nikcli agent guidelines
2
+
3
+ ## Build/Test Commands
4
+
5
+ - **Install**: `bun install`
6
+ - **Run**: `bun run --conditions=browser ./src/index.ts`
7
+ - **Typecheck**: `bun run typecheck` (npm run typecheck)
8
+ - **Test**: `bun test` (runs all tests)
9
+ - **Single test**: `bun test test/tool/tool.test.ts` (specific test file)
10
+
11
+ ## Code Style
12
+
13
+ - **Runtime**: Bun with TypeScript ESM modules
14
+ - **Imports**: Use relative imports for local modules, named imports preferred
15
+ - **Types**: Zod schemas for validation, TypeScript interfaces for structure
16
+ - **Naming**: camelCase for variables/functions, PascalCase for classes/namespaces
17
+ - **Error handling**: Use Result patterns, avoid throwing exceptions in tools
18
+ - **File structure**: Namespace-based organization (e.g., `Tool.define()`, `Session.create()`)
19
+
20
+ ## Architecture
21
+
22
+ - **Tools**: Implement `Tool.Info` interface with `execute()` method
23
+ - **Context**: Pass `sessionID` in tool context, use `App.provide()` for DI
24
+ - **Validation**: All inputs validated with Zod schemas
25
+ - **Logging**: Use `Log.create({ service: "name" })` pattern
26
+ - **Storage**: Use `Storage` namespace for persistence
27
+ - **API Client**: The TypeScript TUI (built with SolidJS + OpenTUI) communicates with the Nikcli server using `@nikcli-ai/sdk`. When adding/modifying server endpoints in `src/server/server.ts`, regenerate the SDK in `packages/sdk/js` to keep types in sync.
package/Dockerfile ADDED
@@ -0,0 +1,18 @@
1
+ FROM alpine AS base
2
+
3
+ # Disable the runtime transpiler cache by default inside Docker containers.
4
+ # On ephemeral containers, the cache is not useful
5
+ ARG BUN_RUNTIME_TRANSPILER_CACHE_PATH=0
6
+ ENV BUN_RUNTIME_TRANSPILER_CACHE_PATH=${BUN_RUNTIME_TRANSPILER_CACHE_PATH}
7
+ RUN apk add libgcc libstdc++ ripgrep
8
+
9
+ FROM base AS build-amd64
10
+ COPY dist/nikcli-linux-x64-baseline-musl/bin/nikcli /usr/local/bin/nikcli
11
+
12
+ FROM base AS build-arm64
13
+ COPY dist/nikcli-linux-arm64-musl/bin/nikcli /usr/local/bin/nikcli
14
+
15
+ ARG TARGETARCH
16
+ FROM build-${TARGETARCH}
17
+ RUN nikcli --version
18
+ ENTRYPOINT ["nikcli"]
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # js
2
+
3
+ To install dependencies:
4
+
5
+ ```bash
6
+ bun install
7
+ ```
8
+
9
+ To run:
10
+
11
+ ```bash
12
+ bun run index.ts
13
+ ```
14
+
15
+ This project was created using `bun init` in bun v1.2.12. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
package/bin/nikcli ADDED
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+
3
+ const childProcess = require("child_process")
4
+ const fs = require("fs")
5
+ const path = require("path")
6
+ const os = require("os")
7
+
8
+ function run(target) {
9
+ const result = childProcess.spawnSync(target, process.argv.slice(2), {
10
+ stdio: "inherit",
11
+ })
12
+ if (result.error) {
13
+ console.error(result.error.message)
14
+ process.exit(1)
15
+ }
16
+ const code = typeof result.status === "number" ? result.status : 0
17
+ process.exit(code)
18
+ }
19
+
20
+ const envPath = process.env.NIKCLI_BIN_PATH
21
+ if (envPath) {
22
+ run(envPath)
23
+ }
24
+
25
+ const scriptPath = fs.realpathSync(__filename)
26
+ const scriptDir = path.dirname(scriptPath)
27
+
28
+ const platformMap = {
29
+ darwin: "darwin",
30
+ linux: "linux",
31
+ win32: "windows",
32
+ }
33
+ const archMap = {
34
+ x64: "x64",
35
+ arm64: "arm64",
36
+ arm: "arm",
37
+ }
38
+
39
+ let platform = platformMap[os.platform()]
40
+ if (!platform) {
41
+ platform = os.platform()
42
+ }
43
+ let arch = archMap[os.arch()]
44
+ if (!arch) {
45
+ arch = os.arch()
46
+ }
47
+ const base = "nikcli-" + platform + "-" + arch
48
+ const binary = platform === "windows" ? "nikcli.exe" : "nikcli"
49
+
50
+ function findBinary(startDir) {
51
+ let current = startDir
52
+ for (;;) {
53
+ const modules = path.join(current, "node_modules")
54
+ if (fs.existsSync(modules)) {
55
+ const entries = fs.readdirSync(modules)
56
+ for (const entry of entries) {
57
+ if (!entry.startsWith(base)) {
58
+ continue
59
+ }
60
+ const candidate = path.join(modules, entry, "bin", binary)
61
+ if (fs.existsSync(candidate)) {
62
+ return candidate
63
+ }
64
+ }
65
+ }
66
+ const parent = path.dirname(current)
67
+ if (parent === current) {
68
+ return
69
+ }
70
+ current = parent
71
+ }
72
+ }
73
+
74
+ const resolved = findBinary(scriptDir)
75
+ if (!resolved) {
76
+ console.error(
77
+ 'It seems that your package manager failed to install the right version of the nikcli CLI for your platform. You can try manually installing the "' +
78
+ base +
79
+ '" package',
80
+ )
81
+ process.exit(1)
82
+ }
83
+
84
+ run(resolved)
package/config.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://nikcli.store/config.json",
3
+ "remote": {
4
+ "enableTunnel": true,
5
+ "provider": "cloudflared"
6
+ },
7
+ "connectors": {
8
+ "figma": {
9
+ "type": "figma",
10
+ "enabled": true
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,94 @@
1
+ # 01 - Setup Tailscale (host + telefono)
2
+
3
+ Questa sezione configura Tailscale in modo che:
4
+
5
+ - l'host abbia un nome DNS nel tailnet (`...ts.net`)
6
+ - il telefono possa raggiungere l'host in modo privato
7
+ - Tailscale Serve possa generare cert HTTPS per il tuo nodo
8
+
9
+ ## 1) Crea (o scegli) il tuo tailnet
10
+
11
+ 1. Vai nella console admin di Tailscale (web).
12
+ 2. Assicurati di sapere quale account/tailnet userai per i device.
13
+
14
+ Consiglio: se usi un tailnet condiviso (team/famiglia), pianifica subito ACL (vedi sezione 6).
15
+
16
+ ## 2) Installa Tailscale sull'host
17
+
18
+ ### macOS (consigliato)
19
+
20
+ 1. Installa l'app Tailscale (GUI).
21
+ 2. Apri l'app e fai login.
22
+ 3. Verifica da terminale:
23
+
24
+ ```bash
25
+ tailscale version
26
+ tailscale status
27
+ ```
28
+
29
+ ### Linux (generico)
30
+
31
+ 1. Installa e avvia Tailscale (metodo ufficiale):
32
+
33
+ ```bash
34
+ curl -fsSL https://tailscale.com/install.sh | sh
35
+ sudo tailscale up
36
+ ```
37
+
38
+ 2. Verifica:
39
+
40
+ ```bash
41
+ tailscale version
42
+ tailscale status
43
+ ```
44
+
45
+ ## 3) Installa Tailscale sul telefono
46
+
47
+ 1. Installa l'app Tailscale (iOS/Android).
48
+ 2. Login con lo stesso tailnet.
49
+ 3. Attiva la VPN (toggle ON).
50
+ 4. Verifica che l'host appaia nella lista dei device.
51
+
52
+ ## 4) Abilita MagicDNS (consigliato)
53
+
54
+ 1. Console admin Tailscale -> DNS.
55
+ 2. Abilita MagicDNS.
56
+
57
+ Questo ti permette di raggiungere l'host con un nome tipo:
58
+ `nome-host.tuo-tailnet.ts.net`
59
+
60
+ ## 5) Abilita HTTPS certificates (Serve)
61
+
62
+ 1. Console admin Tailscale -> DNS.
63
+ 2. Abilita "HTTPS Certificates" (o voce equivalente).
64
+
65
+ Serve usa questi cert per esporre `https://...ts.net`.
66
+
67
+ ## 6) (Raccomandato) Configura Access Controls / ACL
68
+
69
+ Se il tailnet e' solo tuo e i device sono solo i tuoi, puoi anche evitare, ma e' meglio restringere.
70
+
71
+ Obiettivo minimo:
72
+
73
+ - solo il tuo utente/device puo' raggiungere questo host
74
+
75
+ Da console admin Tailscale -> Access controls:
76
+
77
+ - limita chi puo' connettersi al nodo che userai per Nikcli
78
+
79
+ Nota: le ACL dipendono molto da come organizzi users/tags. Se vuoi, dimmi se il tuo tailnet e' personale o team e ti scrivo una policy ACL precisa.
80
+
81
+ ## 7) Trova il DNSName del tuo host (ti servira' dopo)
82
+
83
+ Metodo 1 (piu' semplice)
84
+
85
+ - apri `tailscale status`
86
+ - cerca la riga del tuo host e copia il nome `...ts.net`
87
+
88
+ Metodo 2 (automatica, senza jq, usando bun)
89
+
90
+ ```bash
91
+ tailscale status --json | bun -e 'import { readFileSync } from "fs"; const j = JSON.parse(readFileSync(0, "utf8")); process.stdout.write(j.Self.DNSName.replace(/\.$/, ""))'
92
+ ```
93
+
94
+ Salva questo valore: lo userai per aprire la UI dal telefono e per configurare l'API.
@@ -0,0 +1,115 @@
1
+ # 02 - Setup host (Nikcli server + Web UI)
2
+
3
+ In questa sezione avvii i due processi sull'host:
4
+
5
+ - Nikcli API server (loopback)
6
+ - Web UI (loopback)
7
+
8
+ Nota importante
9
+
10
+ - Con auth Tailscale attiva e senza password, le chiamate locali dirette a `127.0.0.1:4096` (senza header Tailscale) rispondono 401. E' normale.
11
+
12
+ ## 1) Prerequisiti sull'host
13
+
14
+ Verifica binari:
15
+
16
+ ```bash
17
+ tailscale version
18
+ nikcli --version || true
19
+ bun --version || true
20
+ ```
21
+
22
+ Se `nikcli` non e' nel PATH, usa la modalita' repo (vedi sotto) oppure installalo come fai di solito nel tuo ambiente.
23
+
24
+ ## 2) Scegli la directory workspace
25
+
26
+ Decidi dove vuoi che Nikcli lavori (repo/progetto).
27
+
28
+ Consiglio:
29
+
30
+ - avvia `nikcli serve` con working directory uguale al workspace
31
+ - cosi' il client mobile non deve impostare `Directory` nelle Settings
32
+
33
+ Esempio:
34
+
35
+ ```bash
36
+ cd /percorso/al/tuo/workspace
37
+ pwd
38
+ ```
39
+
40
+ ## 3) Abilita auth passwordless via Tailscale
41
+
42
+ Imposta queste env:
43
+
44
+ ```bash
45
+ export NIKCLI_SERVER_TAILSCALE_AUTH=1
46
+
47
+ # Raccomandato: allowlist. Di solito e' la mail con cui fai login a Tailscale.
48
+ export NIKCLI_SERVER_TAILSCALE_USERS="tuo-utente@dominio.com"
49
+ ```
50
+
51
+ Opzionale (fallback Basic Auth per accessi locali non via Serve):
52
+
53
+ ```bash
54
+ export NIKCLI_SERVER_PASSWORD="una_password_forte"
55
+ export NIKCLI_SERVER_USERNAME="nikcli"
56
+ ```
57
+
58
+ ## 4) Avvia Nikcli API server (loopback)
59
+
60
+ Raccomandato (porta stabile):
61
+
62
+ ```bash
63
+ nikcli --print-logs serve --hostname 127.0.0.1 --port 4096
64
+ ```
65
+
66
+ Se stai lavorando dal monorepo e vuoi avviare la versione dev:
67
+
68
+ ```bash
69
+ cd /percorso/al/monorepo/packages/nikcli
70
+ bun run dev -- serve --hostname 127.0.0.1 --port 4096
71
+ ```
72
+
73
+ ## 5) Avvia la Web UI (packages/app)
74
+
75
+ Se hai il monorepo:
76
+
77
+ 1. Installa deps (una volta sola):
78
+
79
+ ```bash
80
+ cd /percorso/al/monorepo
81
+ bun install
82
+ ```
83
+
84
+ 2. Build + preview:
85
+
86
+ ```bash
87
+ cd packages/app
88
+ bun run build
89
+ bun run preview -- --host 127.0.0.1 --port 3002
90
+ ```
91
+
92
+ Nota: `preview` va bene per uso personale. Se vuoi, puoi anche servire `packages/app/dist` con un web server a tua scelta.
93
+
94
+ ## 6) Verifica locale (host)
95
+
96
+ UI (deve rispondere HTML):
97
+
98
+ ```bash
99
+ curl -I http://127.0.0.1:3002
100
+ ```
101
+
102
+ API (con Tailscale auth attiva e senza password, e' normale vedere 401):
103
+
104
+ ```bash
105
+ curl -i http://127.0.0.1:4096/global/health
106
+ ```
107
+
108
+ ## 7) (Opzionale) Avvio automatico
109
+
110
+ Se vuoi che tutto riparta dopo reboot, usa:
111
+
112
+ - macOS: launchd
113
+ - Linux: systemd
114
+
115
+ Qui non creo file di sistema automaticamente (dipende dal tuo OS e percorsi), ma se mi dici macOS o Linux ti scrivo gli unit/plist completi con i comandi esatti che stai usando.
@@ -0,0 +1,134 @@
1
+ # 03 - Tailscale Serve (Option B) + configurazione telefono
2
+
3
+ Questa e' la parte che rende raggiungibili UI e API dal telefono tramite `https://...ts.net`.
4
+
5
+ ## 1) Configura Tailscale Serve sull'host
6
+
7
+ Esegui sull'host:
8
+
9
+ ```bash
10
+ # UI: espone in HTTPS 443 e proxya verso 127.0.0.1:3002
11
+ tailscale serve --bg --https=443 3002
12
+
13
+ # API: espone in HTTPS 8443 e proxya verso 127.0.0.1:4096
14
+ tailscale serve --bg --https=8443 4096
15
+
16
+ tailscale serve status
17
+ ```
18
+
19
+ Se in futuro vuoi spegnere tutto:
20
+
21
+ ```bash
22
+ tailscale serve off
23
+ ```
24
+
25
+ ## 2) Trova gli URL corretti
26
+
27
+ Il comando `tailscale serve status` ti stampa gli URL pubblicati nel tailnet.
28
+
29
+ In particolare ti servono:
30
+
31
+ - URL UI: `https://<dnsname>.ts.net`
32
+ - URL API: `https://<dnsname>.ts.net:8443`
33
+
34
+ Se vuoi stampare solo il DNSName con bun:
35
+
36
+ ```bash
37
+ tailscale status --json | bun -e 'import { readFileSync } from "fs"; const j = JSON.parse(readFileSync(0, "utf8")); process.stdout.write(j.Self.DNSName.replace(/\.$/, ""))'
38
+ ```
39
+
40
+ ## 3) Apri la UI dal telefono
41
+
42
+ 1. Sul telefono: apri Tailscale e metti ON.
43
+ 2. Apri Safari/Chrome.
44
+ 3. Vai all'URL UI (quello su 443).
45
+
46
+ Se la pagina non carica:
47
+
48
+ - verifica che l'host sia online
49
+ - verifica `tailscale status` su host e telefono
50
+
51
+ ## 4) Configura la UI per puntare all'API (porta 8443)
52
+
53
+ Nella web UI:
54
+
55
+ 1. Vai su Settings.
56
+ 2. In "Server URL" inserisci l'URL API su porta 8443.
57
+ 3. (Opzionale) "Directory": lascia vuoto per usare la directory di avvio del server, oppure imposta un path specifico.
58
+ 4. Premi Save.
59
+
60
+ Se auth Tailscale e' corretta:
61
+
62
+ - Status diventa Connected
63
+ - La sezione Authentication mostra che non serve login
64
+
65
+ ## 5) Test end-to-end
66
+
67
+ 1. Crea una sessione.
68
+ 2. Invia un prompt.
69
+ 3. Verifica che i messaggi arrivino in realtime.
70
+ 4. Se Nikcli chiede permission/question/dbedit, rispondi dalla modale: la sessione deve riprendere.
71
+
72
+ ## 6) Troubleshooting
73
+
74
+ ### A) UI ok, ma API "Disconnected"
75
+
76
+ Checklist:
77
+
78
+ - `tailscale serve status` mostra anche la porta 8443?
79
+ - il processo `nikcli serve` e' vivo sull'host?
80
+ - hai inserito Server URL corretto (porta 8443)?
81
+
82
+ Test da un altro device nel tailnet:
83
+
84
+ ```bash
85
+ curl -i https://DNSNAME:8443/global/health
86
+ ```
87
+
88
+ ### B) 403 Forbidden
89
+
90
+ Significa che l'header Tailscale e' presente ma l'utente non e' ammesso.
91
+
92
+ Azioni:
93
+
94
+ - controlla `NIKCLI_SERVER_TAILSCALE_USERS`
95
+ - ricordati che in genere e' la mail con cui fai login a Tailscale
96
+
97
+ ### C) 401 Unauthorized
98
+
99
+ Cause tipiche:
100
+
101
+ - stai chiamando direttamente `http://127.0.0.1:4096` (non passa da Serve)
102
+ - `tailscale serve` non e' configurato per 8443/4096
103
+ - hai attivato Tailscale auth ma non hai header (Serve non in mezzo)
104
+
105
+ Soluzioni:
106
+
107
+ - usa sempre l'URL `https://...:8443` dal telefono
108
+ - oppure imposta `NIKCLI_SERVER_PASSWORD` se vuoi anche accesso locale senza header
109
+
110
+ ### D) Errori CORS nel browser
111
+
112
+ Con Option B l'origin e' `https://DNSNAME.ts.net` e l'API e' su `https://DNSNAME.ts.net:8443`.
113
+
114
+ In Nikcli ho abilitato automaticamente CORS per `https://*.ts.net` quando:
115
+
116
+ - `NIKCLI_SERVER_TAILSCALE_AUTH=1`
117
+ - il server e' in listen su loopback (`127.0.0.1` / `localhost`)
118
+
119
+ Se stai usando un origin diverso (custom domain, reverse proxy esterno, ecc.), allora avvia il server con `--cors <origin>`.
120
+
121
+ ### E) SSE (realtime) non aggiorna
122
+
123
+ Controlla che l'endpoint eventi sia raggiungibile:
124
+
125
+ ```bash
126
+ curl -N https://DNSNAME:8443/event
127
+ ```
128
+
129
+ Devi vedere una riga iniziale con `server.connected` e poi heartbeat.
130
+
131
+ ## 7) Aggiungi alla Home Screen (esperienza "app")
132
+
133
+ iOS (Safari): Share -> Add to Home Screen.
134
+ Android (Chrome): menu -> Add to Home screen.
@@ -0,0 +1,59 @@
1
+ # Nikcli sul telefono via Tailscale (Option B)
2
+
3
+ Questa guida ti porta da zero ad avere Nikcli utilizzabile dal browser del tuo telefono, collegandoti in modo privato tramite Tailscale (nessuna porta esposta su Internet).
4
+
5
+ Obiettivo finale
6
+
7
+ - Apri un URL `https://...ts.net` dal telefono (Safari/Chrome).
8
+ - Vedi la web UI di Nikcli.
9
+ - Il telefono parla con il Nikcli server remoto (API) tramite Tailscale.
10
+ - Autenticazione passwordless: l'accesso e' concesso solo se la richiesta arriva da Tailscale Serve e (opzionale) se l'utente Tailscale e' in allowlist.
11
+
12
+ Architettura (Option B)
13
+
14
+ ```
15
+ Telefono (Tailscale ON)
16
+ |
17
+ | HTTPS 443 -> Web UI (Vite preview o static)
18
+ | HTTPS 8443 -> Nikcli API (Hono/Bun)
19
+ v
20
+ Tailscale Serve sul nodo host
21
+ |
22
+ | proxy verso 127.0.0.1
23
+ v
24
+ Host (workspace e processi)
25
+ - Web UI locale: http://127.0.0.1:3002
26
+ - Nikcli API: http://127.0.0.1:4096
27
+ ```
28
+
29
+ Perche' Option B
30
+
31
+ - Funziona bene su mobile.
32
+ - Mantiene API e UI separate (utile per debug e upgrade).
33
+ - Non richiede reverse proxy esterni.
34
+
35
+ Porte usate
36
+
37
+ - UI locale (host): `3002` (solo loopback)
38
+ - API locale (host): `4096` (solo loopback)
39
+ - UI esposta nel tailnet: `443` (HTTPS)
40
+ - API esposta nel tailnet: `8443` (HTTPS)
41
+
42
+ Prerequisiti
43
+
44
+ - Un "host" sempre acceso (Mac/Linux/VM) dove risiede il tuo workspace.
45
+ - Tailscale installato su host e telefono.
46
+ - Nikcli disponibile sull'host (binario installato o repo).
47
+ - Bun sull'host se vuoi buildare la web UI dal repo.
48
+
49
+ Indice (leggi in ordine)
50
+
51
+ - `docs/tailscale-mobile/01-tailscale-setup.md`
52
+ - `docs/tailscale-mobile/02-host-setup.md`
53
+ - `docs/tailscale-mobile/03-phone-and-serve.md`
54
+
55
+ Security note (importante)
56
+
57
+ - Nikcli puo' leggere/scrivere file ed eseguire comandi sul tuo host.
58
+ - Non usare Funnel.
59
+ - Se il tailnet non e' solo tuo, configura ACL Tailscale e/o `NIKCLI_SERVER_TAILSCALE_USERS`.
@@ -0,0 +1,54 @@
1
+ # Nikcli Visual Examples
2
+
3
+ This directory contains visual demonstrations of nikcli's capabilities.
4
+
5
+ ## Examples
6
+
7
+ ### 1. CLI Interface Demo (`cli-demo/`)
8
+
9
+ Interactive terminal UI showcasing nikcli's command-line interface with:
10
+
11
+ - Session management display
12
+ - Real-time AI response streaming
13
+ - File tree visualization
14
+ - Command palette
15
+
16
+ ### 2. Web App Components (`web-components/`)
17
+
18
+ React components from the nikcli web app:
19
+
20
+ - Session viewer with syntax highlighting
21
+ - Settings panel with theme switcher
22
+ - Connection status indicators
23
+ - Terminal emulator
24
+
25
+ ### 3. Mobile App UI (`mobile-ui/`)
26
+
27
+ Expo/React Native screens:
28
+
29
+ - Session list with swipe actions
30
+ - Chat interface with code blocks
31
+ - Settings and connection management
32
+ - Offline mode indicators
33
+
34
+ ### 4. AI Tools Visualization (`ai-tools/`)
35
+
36
+ Visual representations of nikcli's AI tool system:
37
+
38
+ - Tool execution flow diagrams
39
+ - Context collection visualization
40
+ - RAG search result display
41
+ - Multi-agent orchestration
42
+
43
+ ## Running Examples
44
+
45
+ ```bash
46
+ # CLI Demo
47
+ bun run packages/nikcli/examples/cli-demo/demo.ts
48
+
49
+ # Web Components
50
+ cd packages/app && bun dev
51
+
52
+ # Mobile UI
53
+ cd packages/mobile && bun start
54
+ ```