@mrpatronz/nexusflow 0.2.17 → 0.2.19

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 (320) hide show
  1. package/.agents/skills/ccc/SKILL.md +71 -0
  2. package/.agents/skills/ccc/references/management.md +110 -0
  3. package/.agents/skills/ccc/references/settings.md +126 -0
  4. package/.github/dependabot.yml +52 -52
  5. package/.github/workflows/ci.yml +44 -0
  6. package/.github/workflows/dependabot-merge.yml +53 -53
  7. package/.github/workflows/release-desktop.yml +67 -0
  8. package/.github/workflows/release-npm.yml +65 -0
  9. package/.github/workflows/release-vscode.yml +61 -0
  10. package/.vscode/launch.json +17 -17
  11. package/.vscode/tasks.json +17 -17
  12. package/GETTING_STARTED.md +114 -114
  13. package/README.md +364 -336
  14. package/desktop/build-installer.js +228 -228
  15. package/desktop/build.js +118 -118
  16. package/desktop/installer/nexusflow.iss +35 -35
  17. package/desktop/neutralino.config.json +38 -38
  18. package/desktop/package-lock.json +1060 -1060
  19. package/desktop/package.json +14 -14
  20. package/dist/commands/adapter.d.ts +27 -0
  21. package/dist/commands/adapter.d.ts.map +1 -0
  22. package/dist/commands/adapter.js +318 -0
  23. package/dist/commands/adapter.js.map +1 -0
  24. package/dist/commands/add-repo.d.ts.map +1 -1
  25. package/dist/commands/add-repo.js +0 -1
  26. package/dist/commands/add-repo.js.map +1 -1
  27. package/dist/commands/commands.test.js +2 -2
  28. package/dist/commands/commands.test.js.map +1 -1
  29. package/dist/commands/config.d.ts +22 -0
  30. package/dist/commands/config.d.ts.map +1 -0
  31. package/dist/commands/config.js +50 -0
  32. package/dist/commands/config.js.map +1 -0
  33. package/dist/commands/create.d.ts.map +1 -1
  34. package/dist/commands/create.js +14 -17
  35. package/dist/commands/create.js.map +1 -1
  36. package/dist/commands/doctor.d.ts.map +1 -1
  37. package/dist/commands/doctor.js +11 -0
  38. package/dist/commands/doctor.js.map +1 -1
  39. package/dist/commands/refresh.d.ts +1 -0
  40. package/dist/commands/refresh.d.ts.map +1 -1
  41. package/dist/commands/refresh.js +2 -14
  42. package/dist/commands/refresh.js.map +1 -1
  43. package/dist/commands/sync.d.ts.map +1 -1
  44. package/dist/commands/sync.js +36 -54
  45. package/dist/commands/sync.js.map +1 -1
  46. package/dist/commands/tui.d.ts.map +1 -1
  47. package/dist/commands/tui.js +63 -10
  48. package/dist/commands/tui.js.map +1 -1
  49. package/dist/core/adapters/local-storage.d.ts +14 -0
  50. package/dist/core/adapters/local-storage.d.ts.map +1 -0
  51. package/dist/core/adapters/local-storage.js +58 -0
  52. package/dist/core/adapters/local-storage.js.map +1 -0
  53. package/dist/core/adapters/obsidian-storage.d.ts +28 -0
  54. package/dist/core/adapters/obsidian-storage.d.ts.map +1 -0
  55. package/dist/core/adapters/obsidian-storage.js +135 -0
  56. package/dist/core/adapters/obsidian-storage.js.map +1 -0
  57. package/dist/core/adapters/registry.d.ts +8 -0
  58. package/dist/core/adapters/registry.d.ts.map +1 -0
  59. package/dist/core/adapters/registry.js +37 -0
  60. package/dist/core/adapters/registry.js.map +1 -0
  61. package/dist/core/adapters/storage.test.d.ts +2 -0
  62. package/dist/core/adapters/storage.test.d.ts.map +1 -0
  63. package/dist/core/adapters/storage.test.js +106 -0
  64. package/dist/core/adapters/storage.test.js.map +1 -0
  65. package/dist/core/adapters/vault-storage.d.ts +16 -0
  66. package/dist/core/adapters/vault-storage.d.ts.map +1 -0
  67. package/dist/core/adapters/vault-storage.js +77 -0
  68. package/dist/core/adapters/vault-storage.js.map +1 -0
  69. package/dist/core/config.d.ts.map +1 -1
  70. package/dist/core/config.js +28 -4
  71. package/dist/core/config.js.map +1 -1
  72. package/dist/core/plugins/index.d.ts +14 -0
  73. package/dist/core/plugins/index.d.ts.map +1 -0
  74. package/dist/core/plugins/index.js +2 -0
  75. package/dist/core/plugins/index.js.map +1 -0
  76. package/dist/core/plugins/loader.d.ts +2 -0
  77. package/dist/core/plugins/loader.d.ts.map +1 -0
  78. package/dist/core/plugins/loader.js +34 -0
  79. package/dist/core/plugins/loader.js.map +1 -0
  80. package/dist/core/ports/storage.d.ts +59 -0
  81. package/dist/core/ports/storage.d.ts.map +1 -0
  82. package/dist/core/ports/storage.js +10 -0
  83. package/dist/core/ports/storage.js.map +1 -0
  84. package/dist/core/storage.d.ts +10 -0
  85. package/dist/core/storage.d.ts.map +1 -0
  86. package/dist/core/storage.js +29 -0
  87. package/dist/core/storage.js.map +1 -0
  88. package/dist/core/sync.d.ts +44 -0
  89. package/dist/core/sync.d.ts.map +1 -0
  90. package/dist/core/sync.js +82 -0
  91. package/dist/core/sync.js.map +1 -0
  92. package/dist/core/workspace-state.d.ts +51 -0
  93. package/dist/core/workspace-state.d.ts.map +1 -0
  94. package/dist/core/workspace-state.js +108 -0
  95. package/dist/core/workspace-state.js.map +1 -0
  96. package/dist/core/workspace-state.test.d.ts +2 -0
  97. package/dist/core/workspace-state.test.d.ts.map +1 -0
  98. package/dist/core/workspace-state.test.js +84 -0
  99. package/dist/core/workspace-state.test.js.map +1 -0
  100. package/dist/core/workspace.d.ts.map +1 -1
  101. package/dist/core/workspace.js +110 -16
  102. package/dist/core/workspace.js.map +1 -1
  103. package/dist/generators/base.d.ts.map +1 -1
  104. package/dist/generators/base.js +80 -79
  105. package/dist/generators/base.js.map +1 -1
  106. package/dist/generators/codex.js +11 -11
  107. package/dist/generators/copilot.js +17 -17
  108. package/dist/generators/cursor.js +5 -5
  109. package/dist/generators/diff-context.d.ts +6 -0
  110. package/dist/generators/diff-context.d.ts.map +1 -0
  111. package/dist/generators/diff-context.js +68 -0
  112. package/dist/generators/diff-context.js.map +1 -0
  113. package/dist/generators/index.d.ts +1 -1
  114. package/dist/generators/index.d.ts.map +1 -1
  115. package/dist/generators/index.js +125 -68
  116. package/dist/generators/index.js.map +1 -1
  117. package/dist/generators/map-generator.d.ts.map +1 -1
  118. package/dist/generators/map-generator.js +21 -25
  119. package/dist/generators/map-generator.js.map +1 -1
  120. package/dist/generators/plan-generator.d.ts.map +1 -1
  121. package/dist/generators/plan-generator.js +3 -5
  122. package/dist/generators/plan-generator.js.map +1 -1
  123. package/dist/generators/skills-generator.js +28 -28
  124. package/dist/gui/assets/index-Bdbld6yY.css +1 -0
  125. package/dist/gui/assets/index-D8iJPvnk.js +26 -0
  126. package/dist/gui/icons.svg +24 -24
  127. package/dist/gui/index.html +18 -18
  128. package/dist/index.js +131 -20
  129. package/dist/index.js.map +1 -1
  130. package/dist/mcp/server.d.ts.map +1 -1
  131. package/dist/mcp/server.js +42 -0
  132. package/dist/mcp/server.js.map +1 -1
  133. package/dist/server.d.ts.map +1 -1
  134. package/dist/server.js +140 -56
  135. package/dist/server.js.map +1 -1
  136. package/dist/server.test.js +105 -48
  137. package/dist/server.test.js.map +1 -1
  138. package/dist/types.d.ts +38 -2
  139. package/dist/types.d.ts.map +1 -1
  140. package/dist/utils/local-ai.d.ts.map +1 -1
  141. package/dist/utils/local-ai.js +7 -3
  142. package/dist/utils/local-ai.js.map +1 -1
  143. package/dist/utils/multi-git.d.ts +33 -8
  144. package/dist/utils/multi-git.d.ts.map +1 -1
  145. package/dist/utils/multi-git.js +91 -19
  146. package/dist/utils/multi-git.js.map +1 -1
  147. package/dist/utils/multi-git.test.d.ts +2 -0
  148. package/dist/utils/multi-git.test.d.ts.map +1 -0
  149. package/dist/utils/multi-git.test.js +125 -0
  150. package/dist/utils/multi-git.test.js.map +1 -0
  151. package/dist/utils/update-check.d.ts.map +1 -1
  152. package/dist/utils/update-check.js +0 -28
  153. package/dist/utils/update-check.js.map +1 -1
  154. package/dist/utils/workflow-advisor.d.ts +16 -0
  155. package/dist/utils/workflow-advisor.d.ts.map +1 -0
  156. package/dist/utils/workflow-advisor.js +100 -0
  157. package/dist/utils/workflow-advisor.js.map +1 -0
  158. package/extension/package-lock.json +6044 -2673
  159. package/extension/package.json +117 -108
  160. package/extension/src/extension.ts +653 -631
  161. package/extension/tsconfig.json +21 -21
  162. package/gui/README.md +73 -73
  163. package/gui/e2e/dashboard.spec.ts +61 -0
  164. package/gui/e2e/wizard.spec.ts +346 -346
  165. package/gui/eslint.config.js +26 -26
  166. package/gui/index.html +17 -17
  167. package/gui/package-lock.json +3137 -3079
  168. package/gui/package.json +37 -36
  169. package/gui/playwright.config.ts +41 -41
  170. package/gui/public/icons.svg +24 -24
  171. package/gui/src/App.css +1 -1
  172. package/gui/src/App.tsx +3573 -3407
  173. package/gui/src/app/AppSidebar.tsx +69 -0
  174. package/gui/src/assets/vite.svg +1 -1
  175. package/gui/src/components/AddRepoPicker.tsx +81 -0
  176. package/gui/src/components/ui/Button.tsx +40 -0
  177. package/gui/src/components/ui/Card.tsx +6 -0
  178. package/gui/src/components/ui/EmptyState.tsx +22 -0
  179. package/gui/src/components/ui/Input.tsx +21 -0
  180. package/gui/src/components/ui/Menu.tsx +71 -0
  181. package/gui/src/components/ui/Modal.tsx +39 -0
  182. package/gui/src/components/ui/PageHeader.tsx +21 -0
  183. package/gui/src/components/ui/RepoStatusStrip.tsx +33 -0
  184. package/gui/src/components/ui/Skeleton.tsx +5 -0
  185. package/gui/src/components/ui/StatusPill.tsx +36 -0
  186. package/gui/src/components/ui/Tabs.tsx +40 -0
  187. package/gui/src/components/ui/cn.ts +4 -0
  188. package/gui/src/components/ui/index.ts +16 -0
  189. package/gui/src/features/changes/ChangesViewer.tsx +388 -388
  190. package/gui/src/features/knowledge/KnowledgeBase.tsx +84 -84
  191. package/gui/src/features/onboarding/OnboardingWizard.tsx +230 -230
  192. package/gui/src/features/plan/ImplementationPlan.tsx +32 -32
  193. package/gui/src/features/services/ServiceConsole.tsx +215 -250
  194. package/gui/src/features/sessions/SessionHistory.tsx +195 -195
  195. package/gui/src/index.css +167 -152
  196. package/gui/src/lib/status.ts +24 -0
  197. package/gui/src/main.tsx +94 -94
  198. package/gui/src/pages/DashboardPage.tsx +129 -0
  199. package/gui/src/pages/WorkspacesPage.tsx +352 -0
  200. package/gui/src/types.ts +81 -62
  201. package/gui/tsconfig.app.json +25 -25
  202. package/gui/tsconfig.json +7 -7
  203. package/gui/tsconfig.node.json +24 -24
  204. package/gui/vite.config.ts +12 -12
  205. package/package.json +55 -56
  206. package/resources/workflows/plan-implement-review.md +8 -8
  207. package/resources/workflows/research-verify.md +6 -6
  208. package/resources/workflows/solo-developer.md +3 -3
  209. package/scripts/simulate-workspaces.ts +55 -55
  210. package/skills-lock.json +11 -0
  211. package/src/analyzers/detect-apis.ts +290 -290
  212. package/src/analyzers/detect-deps.ts +315 -315
  213. package/src/analyzers/detect-existing.ts +74 -74
  214. package/src/analyzers/detect-ports.ts +110 -110
  215. package/src/analyzers/index.ts +97 -97
  216. package/src/analyzers/messaging-analyzer.ts +254 -254
  217. package/src/analyzers/readme-summarizer.ts +102 -102
  218. package/src/analyzers/run-analyzer.ts +269 -269
  219. package/src/analyzers/tech-stack.ts +283 -283
  220. package/src/commands/adapter.ts +348 -0
  221. package/src/commands/add-repo.ts +156 -157
  222. package/src/commands/commands.test.ts +156 -155
  223. package/src/commands/commit.ts +131 -131
  224. package/src/commands/config.ts +52 -0
  225. package/src/commands/create.ts +204 -207
  226. package/src/commands/desktop.ts +128 -128
  227. package/src/commands/diff.ts +125 -125
  228. package/src/commands/doctor.ts +370 -357
  229. package/src/commands/handoff.ts +266 -266
  230. package/src/commands/init.ts +134 -134
  231. package/src/commands/list.ts +46 -46
  232. package/src/commands/logs.ts +63 -63
  233. package/src/commands/mcp.ts +94 -92
  234. package/src/commands/open.ts +129 -129
  235. package/src/commands/refresh.ts +137 -147
  236. package/src/commands/remove.ts +98 -98
  237. package/src/commands/start.ts +117 -117
  238. package/src/commands/status.ts +54 -54
  239. package/src/commands/stop.ts +55 -55
  240. package/src/commands/sync.ts +125 -151
  241. package/src/commands/tui.ts +484 -424
  242. package/src/commands/ui.ts +111 -111
  243. package/src/core/adapters/local-storage.ts +66 -0
  244. package/src/core/adapters/obsidian-storage.ts +151 -0
  245. package/src/core/adapters/registry.ts +44 -0
  246. package/src/core/adapters/storage.test.ts +174 -0
  247. package/src/core/adapters/vault-storage.ts +86 -0
  248. package/src/core/config.test.ts +96 -96
  249. package/src/core/config.ts +140 -115
  250. package/src/core/graph.ts +344 -344
  251. package/src/core/plugins/index.ts +17 -0
  252. package/src/core/plugins/loader.ts +36 -0
  253. package/src/core/ports/storage.ts +71 -0
  254. package/src/core/scanner.test.ts +61 -61
  255. package/src/core/scanner.ts +91 -91
  256. package/src/core/storage.ts +37 -0
  257. package/src/core/sync.ts +121 -0
  258. package/src/core/workspace-state.test.ts +108 -0
  259. package/src/core/workspace-state.ts +130 -0
  260. package/src/core/workspace.ts +487 -380
  261. package/src/core/worktree.ts +120 -120
  262. package/src/generators/antigravity.ts +32 -32
  263. package/src/generators/base.ts +243 -240
  264. package/src/generators/claude.ts +34 -34
  265. package/src/generators/codex.ts +48 -48
  266. package/src/generators/copilot.ts +56 -56
  267. package/src/generators/cursor.ts +44 -44
  268. package/src/generators/diff-context.ts +75 -0
  269. package/src/generators/index.ts +322 -250
  270. package/src/generators/map-generator.test.ts +159 -159
  271. package/src/generators/map-generator.ts +539 -542
  272. package/src/generators/plan-generator.ts +483 -481
  273. package/src/generators/skills-generator.ts +259 -259
  274. package/src/index.ts +539 -426
  275. package/src/mcp/server.ts +338 -294
  276. package/src/orchestration/detect.ts +313 -313
  277. package/src/orchestration/index.ts +7 -7
  278. package/src/orchestration/runner.ts +283 -283
  279. package/src/server.test.ts +618 -555
  280. package/src/server.ts +1402 -1308
  281. package/src/types.ts +451 -408
  282. package/src/utils/detect-ai.test.ts +44 -44
  283. package/src/utils/detect-ai.ts +84 -84
  284. package/src/utils/detect-editors.test.ts +48 -48
  285. package/src/utils/detect-editors.ts +57 -57
  286. package/src/utils/git.test.ts +74 -74
  287. package/src/utils/git.ts +117 -117
  288. package/src/utils/local-ai.test.ts +130 -130
  289. package/src/utils/local-ai.ts +116 -111
  290. package/src/utils/multi-git.test.ts +158 -0
  291. package/src/utils/multi-git.ts +405 -313
  292. package/src/utils/prompts.ts +209 -209
  293. package/src/utils/session-finder.ts +483 -483
  294. package/src/utils/system-scanner.test.ts +89 -89
  295. package/src/utils/system-scanner.ts +96 -96
  296. package/src/utils/update-check.ts +286 -309
  297. package/src/utils/workflow-advisor.ts +118 -0
  298. package/src/utils/workflows.test.ts +114 -114
  299. package/src/utils/workflows.ts +178 -178
  300. package/tsconfig.json +19 -19
  301. package/vitest.config.ts +14 -14
  302. package/.github/workflows/release.yml +0 -112
  303. package/dist/commands/pack.d.ts +0 -7
  304. package/dist/commands/pack.d.ts.map +0 -1
  305. package/dist/commands/pack.js +0 -64
  306. package/dist/commands/pack.js.map +0 -1
  307. package/dist/core/packer.d.ts +0 -14
  308. package/dist/core/packer.d.ts.map +0 -1
  309. package/dist/core/packer.js +0 -87
  310. package/dist/core/packer.js.map +0 -1
  311. package/dist/core/packer.test.d.ts +0 -2
  312. package/dist/core/packer.test.d.ts.map +0 -1
  313. package/dist/core/packer.test.js +0 -82
  314. package/dist/core/packer.test.js.map +0 -1
  315. package/dist/gui/assets/index-Ct3qq-X4.js +0 -25
  316. package/dist/gui/assets/index-P_ZrgHXg.css +0 -1
  317. package/gui/src/features/workspace/WorkspaceList.tsx +0 -666
  318. package/src/commands/pack.ts +0 -73
  319. package/src/core/packer.test.ts +0 -99
  320. package/src/core/packer.ts +0 -107
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: ccc
3
+ description: "This skill should be used when code search is needed (whether explicitly requested or as part of completing a task), when indexing the codebase after changes, or when the user asks about ccc, cocoindex-code, or the codebase index. Trigger phrases include 'search the codebase', 'find code related to', 'update the index', 'ccc', 'cocoindex-code'."
4
+ ---
5
+
6
+ # ccc - Semantic Code Search & Indexing
7
+
8
+ `ccc` is the CLI for CocoIndex Code, providing semantic search over the current codebase and index management.
9
+
10
+ ## Ownership
11
+
12
+ The agent owns the `ccc` lifecycle for the current project — initialization, indexing, and searching. Do not ask the user to perform these steps; handle them automatically.
13
+
14
+ - **Initialization**: If `ccc search` or `ccc index` fails with an initialization error (e.g., "Not in an initialized project directory"), run `ccc init` from the project root directory, then `ccc index` to build the index, then retry the original command.
15
+ - **Index freshness**: Keep the index up to date by running `ccc index` (or `ccc search --refresh`) when the index may be stale — e.g., at the start of a session, or after making significant code changes (new files, refactors, renamed modules). There is no need to re-index between consecutive searches if no code was changed in between.
16
+ - **Installation**: If `ccc` itself is not found (command not found), refer to [management.md](references/management.md) for installation instructions and inform the user.
17
+
18
+ ## Searching the Codebase
19
+
20
+ To perform a semantic search:
21
+
22
+ ```bash
23
+ ccc search <query terms>
24
+ ```
25
+
26
+ The query should describe the concept, functionality, or behavior to find, not exact code syntax. For example:
27
+
28
+ ```bash
29
+ ccc search database connection pooling
30
+ ccc search user authentication flow
31
+ ccc search error handling retry logic
32
+ ```
33
+
34
+ ### Filtering Results
35
+
36
+ - **By language** (`--lang`, repeatable): restrict results to specific languages.
37
+
38
+ ```bash
39
+ ccc search --lang python --lang markdown database schema
40
+ ```
41
+
42
+ - **By path** (`--path`): restrict results to a glob pattern relative to project root. If omitted, defaults to the current working directory (only results under that subdirectory are returned).
43
+
44
+ ```bash
45
+ ccc search --path 'src/api/*' request validation
46
+ ```
47
+
48
+ ### Pagination
49
+
50
+ Results default to the first page. To retrieve additional results:
51
+
52
+ ```bash
53
+ ccc search --offset 5 --limit 5 database schema
54
+ ```
55
+
56
+ If all returned results look relevant, use `--offset` to fetch the next page — there are likely more useful matches beyond the first page.
57
+
58
+ ### Working with Search Results
59
+
60
+ Search results include file paths and line ranges. To explore a result in more detail:
61
+
62
+ - Use the editor's built-in file reading capabilities (e.g., the `Read` tool) to load the matched file and read lines around the returned range for full context.
63
+ - When working in a terminal without a file-reading tool, use `sed -n '<start>,<end>p' <file>` to extract a specific line range.
64
+
65
+ ## Settings
66
+
67
+ To view or edit embedding model configuration, include/exclude patterns, or language overrides, see [settings.md](references/settings.md).
68
+
69
+ ## Management & Troubleshooting
70
+
71
+ For installation, initialization, daemon management, troubleshooting, and cleanup commands, see [management.md](references/management.md).
@@ -0,0 +1,110 @@
1
+ # ccc Management
2
+
3
+ ## Installation
4
+
5
+ Install CocoIndex Code via pipx. Two install styles:
6
+
7
+ ```bash
8
+ pipx install 'cocoindex-code[full]' # batteries included (local embeddings via sentence-transformers)
9
+ pipx install cocoindex-code # slim (LiteLLM-only; requires a cloud embedding provider + API key)
10
+ ```
11
+
12
+ The `[full]` extra pulls in `sentence-transformers` so the first-run default (local embeddings, no API key) works out of the box. The slim install is for environments where you don't want the torch/transformers deps and plan to use a LiteLLM-supported cloud provider instead.
13
+
14
+ To upgrade to the latest version:
15
+
16
+ ```bash
17
+ pipx upgrade cocoindex-code
18
+ ```
19
+
20
+ After installation, the `ccc` command is available globally.
21
+
22
+ ## Project Initialization
23
+
24
+ Run from the root directory of the project to index:
25
+
26
+ ```bash
27
+ ccc init
28
+ ```
29
+
30
+ **First run (global settings don't exist yet)** — `ccc init` prompts interactively for the embedding provider (sentence-transformers / litellm) and model, then runs a one-off test embed via the daemon to confirm the model works. Accept the defaults for the sentence-transformers path, or pick litellm and enter a model identifier.
31
+
32
+ **Subsequent runs** (global settings already exist) — prompts are skipped; only project settings and `.gitignore` are set up.
33
+
34
+ To skip the interactive prompts on the first run (e.g. in a script or container), pass `--litellm-model MODEL`:
35
+
36
+ ```bash
37
+ ccc init --litellm-model openai/text-embedding-3-small
38
+ ```
39
+
40
+ This is also the only way to pick a LiteLLM model when stdin isn't a TTY and you've done a slim install.
41
+
42
+ `ccc init` creates:
43
+ - `~/.cocoindex_code/global_settings.yml` (user-level, embedding config + env vars).
44
+ - `.cocoindex_code/settings.yml` (project-level, include/exclude patterns).
45
+
46
+ If `.git` exists in the directory, `.cocoindex_code/` is automatically added to `.gitignore`.
47
+
48
+ Use `-f` to skip the confirmation prompt if `ccc init` detects a potential parent project root.
49
+
50
+ After initialization, edit the settings files if needed (see [settings.md](settings.md) for format details), then run `ccc index` to build the initial index. If the model test printed `[FAIL]` during `init`, edit `global_settings.yml` (and optionally add API keys under the commented `envs:` block) and verify with `ccc doctor` before indexing.
51
+
52
+ ## Troubleshooting
53
+
54
+ ### Diagnostics
55
+
56
+ Run `ccc doctor` to check system health end-to-end:
57
+
58
+ ```bash
59
+ ccc doctor
60
+ ```
61
+
62
+ This checks global settings, daemon status, embedding model (runs a test embedding), and — if run from within a project — file matching (walks files using the same logic as the indexer) and index status. Results stream incrementally. Always points to `daemon.log` at the end for further investigation.
63
+
64
+ ### Checking Project Status
65
+
66
+ To view the current project's index status:
67
+
68
+ ```bash
69
+ ccc status
70
+ ```
71
+
72
+ This shows whether indexing is ongoing and index statistics.
73
+
74
+ ### Daemon Management
75
+
76
+ The daemon starts automatically on first use. To check its status:
77
+
78
+ ```bash
79
+ ccc daemon status
80
+ ```
81
+
82
+ This shows whether the daemon is running, its version, uptime, and loaded projects.
83
+
84
+ To restart the daemon (useful if it gets into a bad state):
85
+
86
+ ```bash
87
+ ccc daemon restart
88
+ ```
89
+
90
+ To stop the daemon:
91
+
92
+ ```bash
93
+ ccc daemon stop
94
+ ```
95
+
96
+ ## Cleanup
97
+
98
+ To reset a project's index (removes databases, keeps settings):
99
+
100
+ ```bash
101
+ ccc reset
102
+ ```
103
+
104
+ To fully remove all CocoIndex Code data for a project (including settings):
105
+
106
+ ```bash
107
+ ccc reset --all
108
+ ```
109
+
110
+ Both commands prompt for confirmation. Use `-f` to skip.
@@ -0,0 +1,126 @@
1
+ # ccc Settings
2
+
3
+ Configuration lives in two YAML files, both created automatically by `ccc init`.
4
+
5
+ ## User-Level Settings (`~/.cocoindex_code/global_settings.yml`)
6
+
7
+ Shared across all projects. Controls the embedding model and extra environment variables for the daemon.
8
+
9
+ ```yaml
10
+ embedding:
11
+ provider: sentence-transformers # or "litellm" (default when provider is omitted)
12
+ model: Snowflake/snowflake-arctic-embed-xs
13
+ device: mps # optional: cpu, cuda, mps (auto-detected if omitted)
14
+ min_interval_ms: 300 # optional: pace LiteLLM embedding requests to reduce 429s; defaults to 5 for LiteLLM
15
+
16
+ envs: # extra environment variables for the daemon
17
+ OPENAI_API_KEY: your-key # only needed if not already in the shell environment
18
+ ```
19
+
20
+ ### Fields
21
+
22
+ | Field | Description |
23
+ |-------|-------------|
24
+ | `embedding.provider` | `sentence-transformers` for local models, `litellm` (or omit) for cloud/remote models |
25
+ | `embedding.model` | Model identifier — format depends on provider (see examples below) |
26
+ | `embedding.device` | Optional. `cpu`, `cuda`, or `mps`. Auto-detected if omitted. Only relevant for `sentence-transformers`. |
27
+ | `embedding.min_interval_ms` | Optional. Minimum delay between LiteLLM embedding requests in milliseconds. Defaults to `5` for LiteLLM and is ignored by `sentence-transformers`. Set explicitly to override the default. |
28
+ | `envs` | Key-value map of environment variables injected into the daemon. Use for API keys not already in the shell environment. |
29
+
30
+ ### Embedding Model Examples
31
+
32
+ **Local (sentence-transformers, no API key needed):**
33
+
34
+ ```yaml
35
+ embedding:
36
+ provider: sentence-transformers
37
+ model: Snowflake/snowflake-arctic-embed-xs # default, lightweight
38
+ ```
39
+
40
+ ```yaml
41
+ embedding:
42
+ provider: sentence-transformers
43
+ model: nomic-ai/CodeRankEmbed # better code retrieval, needs GPU (~1 GB VRAM)
44
+ ```
45
+
46
+ **Ollama (local):**
47
+
48
+ ```yaml
49
+ embedding:
50
+ model: ollama/nomic-embed-text
51
+ ```
52
+
53
+ **OpenAI:**
54
+
55
+ ```yaml
56
+ embedding:
57
+ model: text-embedding-3-small
58
+ min_interval_ms: 300
59
+ envs:
60
+ OPENAI_API_KEY: your-api-key
61
+ ```
62
+
63
+ **Gemini:**
64
+
65
+ ```yaml
66
+ embedding:
67
+ model: gemini/gemini-embedding-001
68
+ envs:
69
+ GEMINI_API_KEY: your-api-key
70
+ ```
71
+
72
+ **Voyage (code-optimized):**
73
+
74
+ ```yaml
75
+ embedding:
76
+ model: voyage/voyage-code-3
77
+ envs:
78
+ VOYAGE_API_KEY: your-api-key
79
+ ```
80
+
81
+ For the full list of supported cloud providers and model identifiers, see [LiteLLM Embedding Models](https://docs.litellm.ai/docs/embedding/supported_embedding).
82
+
83
+ ### Important
84
+
85
+ Switching embedding models changes vector dimensions — you must re-index after changing the model:
86
+
87
+ ```bash
88
+ ccc reset && ccc index
89
+ ```
90
+
91
+ ## Project-Level Settings (`<project>/.cocoindex_code/settings.yml`)
92
+
93
+ Per-project. Controls which files to index. Created by `ccc init` and automatically added to `.gitignore`.
94
+
95
+ ```yaml
96
+ include_patterns:
97
+ - "**/*.py"
98
+ - "**/*.js"
99
+ - "**/*.ts"
100
+ # ... (sensible defaults for 28+ file types)
101
+
102
+ exclude_patterns:
103
+ - "**/.*" # hidden directories
104
+ - "**/__pycache__"
105
+ - "**/node_modules"
106
+ - "**/dist"
107
+ # ...
108
+
109
+ language_overrides:
110
+ - ext: inc # treat .inc files as PHP
111
+ lang: php
112
+ ```
113
+
114
+ ### Fields
115
+
116
+ | Field | Description |
117
+ |-------|-------------|
118
+ | `include_patterns` | Glob patterns for files to index. Defaults cover common languages (Python, JS/TS, Rust, Go, Java, C/C++, C#, SQL, Shell, Markdown, PHP, Lua, etc.). |
119
+ | `exclude_patterns` | Glob patterns for files/directories to skip. Defaults exclude hidden dirs, `node_modules`, `dist`, `__pycache__`, `vendor`, etc. |
120
+ | `language_overrides` | List of `{ext, lang}` pairs to override language detection for specific file extensions. |
121
+
122
+ ### Editing Tips
123
+
124
+ - To index additional file types, append glob patterns to `include_patterns` (e.g. `"**/*.proto"`).
125
+ - To exclude a directory, append to `exclude_patterns` (e.g. `"**/generated"`).
126
+ - After editing, run `ccc index` to re-index with the new settings.
@@ -1,52 +1,52 @@
1
- version: 2
2
- updates:
3
- # 1. Root npm dependencies
4
- - package-ecosystem: "npm"
5
- directory: "/"
6
- schedule:
7
- interval: "daily"
8
- time: "03:00"
9
- open-pull-requests-limit: 10
10
- reviewers:
11
- - "antan87"
12
- groups:
13
- root-minor-patch:
14
- patterns:
15
- - "*"
16
- update-types:
17
- - "minor"
18
- - "patch"
19
-
20
- # 2. GUI npm dependencies
21
- - package-ecosystem: "npm"
22
- directory: "/gui"
23
- schedule:
24
- interval: "daily"
25
- time: "03:00"
26
- open-pull-requests-limit: 10
27
- reviewers:
28
- - "antan87"
29
- groups:
30
- gui-minor-patch:
31
- patterns:
32
- - "*"
33
- update-types:
34
- - "minor"
35
- - "patch"
36
-
37
- # 3. VS Code Extension npm dependencies
38
- - package-ecosystem: "npm"
39
- directory: "/extension"
40
- schedule:
41
- interval: "daily"
42
- time: "03:00"
43
- open-pull-requests-limit: 10
44
- reviewers:
45
- - "antan87"
46
- groups:
47
- extension-minor-patch:
48
- patterns:
49
- - "*"
50
- update-types:
51
- - "minor"
52
- - "patch"
1
+ version: 2
2
+ updates:
3
+ # 1. Root npm dependencies
4
+ - package-ecosystem: "npm"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "daily"
8
+ time: "03:00"
9
+ open-pull-requests-limit: 10
10
+ reviewers:
11
+ - "antan87"
12
+ groups:
13
+ root-minor-patch:
14
+ patterns:
15
+ - "*"
16
+ update-types:
17
+ - "minor"
18
+ - "patch"
19
+
20
+ # 2. GUI npm dependencies
21
+ - package-ecosystem: "npm"
22
+ directory: "/gui"
23
+ schedule:
24
+ interval: "daily"
25
+ time: "03:00"
26
+ open-pull-requests-limit: 10
27
+ reviewers:
28
+ - "antan87"
29
+ groups:
30
+ gui-minor-patch:
31
+ patterns:
32
+ - "*"
33
+ update-types:
34
+ - "minor"
35
+ - "patch"
36
+
37
+ # 3. VS Code Extension npm dependencies
38
+ - package-ecosystem: "npm"
39
+ directory: "/extension"
40
+ schedule:
41
+ interval: "daily"
42
+ time: "03:00"
43
+ open-pull-requests-limit: 10
44
+ reviewers:
45
+ - "antan87"
46
+ groups:
47
+ extension-minor-patch:
48
+ patterns:
49
+ - "*"
50
+ update-types:
51
+ - "minor"
52
+ - "patch"
@@ -0,0 +1,44 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ build-and-test:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout Repository
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Setup Node.js
17
+ uses: actions/setup-node@v4
18
+ with:
19
+ node-version: 22
20
+
21
+ - name: Install Dependencies
22
+ run: npm ci
23
+
24
+ - name: Install GUI Dependencies
25
+ run: npm ci --prefix gui
26
+
27
+ - name: Install Extension Dependencies
28
+ run: npm ci --prefix extension
29
+
30
+ - name: Build Project
31
+ run: npm run build
32
+
33
+ - name: Compile VS Code Extension
34
+ run: npm run extension:compile
35
+
36
+ - name: Run Tests
37
+ run: npm test
38
+
39
+ - name: Install Playwright Browsers
40
+ run: npx playwright install chromium --with-deps
41
+ working-directory: gui
42
+
43
+ - name: Run GUI E2E Tests
44
+ run: npm run test:gui
@@ -1,53 +1,53 @@
1
- name: Dependabot Auto-Merge and Version Bump
2
-
3
- on:
4
- pull_request_target:
5
- types: [opened, reopened, synchronize]
6
- branches: [main]
7
-
8
- permissions:
9
- contents: write
10
- pull-requests: write
11
-
12
- jobs:
13
- dependabot:
14
- runs-on: ubuntu-latest
15
- if: github.actor == 'dependabot[bot]'
16
- steps:
17
- - name: Checkout PR branch
18
- uses: actions/checkout@v4
19
- with:
20
- ref: ${{ github.event.pull_request.head.ref }}
21
- fetch-depth: 0
22
-
23
- - name: Setup Node.js
24
- uses: actions/setup-node@v4
25
- with:
26
- node-version: 20
27
-
28
- - name: Bump Version
29
- run: |
30
- # Configure Git
31
- git config user.name "github-actions[bot]"
32
- git config user.email "github-actions[bot]@users.noreply.github.com"
33
-
34
- # Fetch main to compare versions
35
- git fetch origin main:main
36
-
37
- MAIN_VERSION=$(git show main:package.json | node -e "console.log(JSON.parse(require('fs').readFileSync(0, 'utf-8')).version)")
38
- PR_VERSION=$(node -e "console.log(JSON.parse(require('fs').readFileSync('package.json', 'utf-8')).version)")
39
-
40
- if [ "$PR_VERSION" = "$MAIN_VERSION" ]; then
41
- echo "Version has not been bumped yet. Bumping patch version..."
42
- npm version patch --no-git-tag-version
43
- git add package.json package-lock.json
44
- git commit -m "chore: bump version for dependabot update"
45
- git push origin HEAD:${{ github.event.pull_request.head.ref }}
46
- else
47
- echo "Version is already bumped ($PR_VERSION vs main $MAIN_VERSION). Skipping bump."
48
- fi
49
-
50
- - name: Enable Auto-Merge
51
- run: gh pr merge --auto --merge "${{ github.event.pull_request.html_url }}"
52
- env:
53
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1
+ name: Dependabot Auto-Merge and Version Bump
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, reopened, synchronize]
6
+ branches: [main]
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ dependabot:
14
+ runs-on: ubuntu-latest
15
+ if: github.actor == 'dependabot[bot]'
16
+ steps:
17
+ - name: Checkout PR branch
18
+ uses: actions/checkout@v4
19
+ with:
20
+ ref: ${{ github.event.pull_request.head.ref }}
21
+ fetch-depth: 0
22
+
23
+ - name: Setup Node.js
24
+ uses: actions/setup-node@v4
25
+ with:
26
+ node-version: 20
27
+
28
+ - name: Bump Version
29
+ run: |
30
+ # Configure Git
31
+ git config user.name "github-actions[bot]"
32
+ git config user.email "github-actions[bot]@users.noreply.github.com"
33
+
34
+ # Fetch main to compare versions
35
+ git fetch origin main:main
36
+
37
+ MAIN_VERSION=$(git show main:package.json | node -e "console.log(JSON.parse(require('fs').readFileSync(0, 'utf-8')).version)")
38
+ PR_VERSION=$(node -e "console.log(JSON.parse(require('fs').readFileSync('package.json', 'utf-8')).version)")
39
+
40
+ if [ "$PR_VERSION" = "$MAIN_VERSION" ]; then
41
+ echo "Version has not been bumped yet. Bumping patch version..."
42
+ npm version patch --no-git-tag-version
43
+ git add package.json package-lock.json
44
+ git commit -m "chore: bump version for dependabot update"
45
+ git push origin HEAD:${{ github.event.pull_request.head.ref }}
46
+ else
47
+ echo "Version is already bumped ($PR_VERSION vs main $MAIN_VERSION). Skipping bump."
48
+ fi
49
+
50
+ - name: Enable Auto-Merge
51
+ run: gh pr merge --auto --merge "${{ github.event.pull_request.html_url }}"
52
+ env:
53
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,67 @@
1
+ name: Release — Desktop Installer
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: [CI]
6
+ branches: [main]
7
+ types: [completed]
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ build-installer:
14
+ if: github.event.workflow_run.conclusion == 'success'
15
+ runs-on: windows-latest
16
+ steps:
17
+ - name: Checkout Repository
18
+ uses: actions/checkout@v4
19
+ with:
20
+ ref: ${{ github.event.workflow_run.head_sha }}
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: 22
26
+ registry-url: 'https://registry.npmjs.org/'
27
+
28
+ - name: Install Dependencies
29
+ run: npm ci
30
+
31
+ - name: Install GUI Dependencies
32
+ run: npm ci --prefix gui
33
+
34
+ - name: Install Desktop Dependencies
35
+ run: npm ci --prefix desktop
36
+
37
+ - name: Build Desktop GUI
38
+ run: npm run build --prefix gui
39
+
40
+ - name: Build Desktop Binaries
41
+ run: npm run build --prefix desktop
42
+
43
+ - name: Build Standalone Installer
44
+ run: npm run build:installer --prefix desktop
45
+
46
+ - name: Check npm version
47
+ id: check-version
48
+ shell: bash
49
+ run: |
50
+ VERSION=$(node -e "console.log(require('./package.json').version)")
51
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
52
+ if npm info @mrpatronz/nexusflow@$VERSION --json >/dev/null 2>&1; then
53
+ echo "is_new=false" >> $GITHUB_OUTPUT
54
+ echo "Version $VERSION already published. Skipping installer upload."
55
+ else
56
+ echo "is_new=true" >> $GITHUB_OUTPUT
57
+ echo "Version $VERSION is new."
58
+ fi
59
+ env:
60
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
61
+
62
+ - name: Upload installer to GitHub Release
63
+ if: steps.check-version.outputs.is_new == 'true'
64
+ uses: softprops/action-gh-release@v2
65
+ with:
66
+ tag_name: v${{ steps.check-version.outputs.version }}
67
+ files: desktop/dist-installer-output/NexusFlowSetup.exe