@mrpatronz/nexusflow 2.9.0 → 2.10.0

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 (732) hide show
  1. package/README.md +172 -113
  2. package/dist/agent/AcpCliAdapter.d.ts +2 -0
  3. package/dist/agent/AcpCliAdapter.d.ts.map +1 -1
  4. package/dist/agent/AcpCliAdapter.js +50 -4
  5. package/dist/agent/AcpCliAdapter.js.map +1 -1
  6. package/dist/agent/AntigravityCliAdapter.d.ts +44 -2
  7. package/dist/agent/AntigravityCliAdapter.d.ts.map +1 -1
  8. package/dist/agent/AntigravityCliAdapter.js +363 -16
  9. package/dist/agent/AntigravityCliAdapter.js.map +1 -1
  10. package/dist/agent/ClaudeCliAdapter.d.ts +3 -0
  11. package/dist/agent/ClaudeCliAdapter.d.ts.map +1 -1
  12. package/dist/agent/ClaudeCliAdapter.js +37 -10
  13. package/dist/agent/ClaudeCliAdapter.js.map +1 -1
  14. package/dist/agent/ClaudeSdkAdapter.d.ts +1 -0
  15. package/dist/agent/ClaudeSdkAdapter.d.ts.map +1 -1
  16. package/dist/agent/ClaudeSdkAdapter.js +38 -11
  17. package/dist/agent/ClaudeSdkAdapter.js.map +1 -1
  18. package/dist/agent/CliAdapterBase.d.ts +2 -0
  19. package/dist/agent/CliAdapterBase.d.ts.map +1 -1
  20. package/dist/agent/CliAdapterBase.js +5 -1
  21. package/dist/agent/CliAdapterBase.js.map +1 -1
  22. package/dist/agent/CodexCliAdapter.d.ts +1 -1
  23. package/dist/agent/CodexCliAdapter.d.ts.map +1 -1
  24. package/dist/agent/CodexCliAdapter.js +5 -4
  25. package/dist/agent/CodexCliAdapter.js.map +1 -1
  26. package/dist/agent/CodexSdkAdapter.d.ts.map +1 -1
  27. package/dist/agent/CodexSdkAdapter.js +4 -1
  28. package/dist/agent/CodexSdkAdapter.js.map +1 -1
  29. package/dist/agent/CopilotAcpAdapter.d.ts.map +1 -1
  30. package/dist/agent/CopilotAcpAdapter.js +2 -2
  31. package/dist/agent/CopilotAcpAdapter.js.map +1 -1
  32. package/dist/agent/ProviderRegistry.d.ts +8 -1
  33. package/dist/agent/ProviderRegistry.d.ts.map +1 -1
  34. package/dist/agent/ProviderRegistry.js.map +1 -1
  35. package/dist/agent/TurnSessionManager.d.ts +65 -0
  36. package/dist/agent/TurnSessionManager.d.ts.map +1 -0
  37. package/dist/agent/TurnSessionManager.js +330 -0
  38. package/dist/agent/TurnSessionManager.js.map +1 -0
  39. package/dist/agent/adapters.d.ts.map +1 -1
  40. package/dist/agent/adapters.js +23 -6
  41. package/dist/agent/adapters.js.map +1 -1
  42. package/dist/agent/cliAvailability.d.ts.map +1 -1
  43. package/dist/agent/cliAvailability.js +12 -0
  44. package/dist/agent/cliAvailability.js.map +1 -1
  45. package/dist/agent/mcp-config.d.ts +0 -5
  46. package/dist/agent/mcp-config.d.ts.map +1 -1
  47. package/dist/agent/mcp-config.js +2 -1
  48. package/dist/agent/mcp-config.js.map +1 -1
  49. package/dist/agent/models.d.ts +13 -0
  50. package/dist/agent/models.d.ts.map +1 -1
  51. package/dist/agent/models.js +262 -8
  52. package/dist/agent/models.js.map +1 -1
  53. package/dist/agent/nativeTools.d.ts.map +1 -1
  54. package/dist/agent/nativeTools.js +1 -0
  55. package/dist/agent/nativeTools.js.map +1 -1
  56. package/dist/agent/orchestrator.d.ts.map +1 -1
  57. package/dist/agent/orchestrator.js +3 -2
  58. package/dist/agent/orchestrator.js.map +1 -1
  59. package/dist/agent/session.d.ts +1 -0
  60. package/dist/agent/session.d.ts.map +1 -1
  61. package/dist/agent/session.js.map +1 -1
  62. package/dist/analyzers/detect-deps.js +16 -1
  63. package/dist/analyzers/detect-deps.js.map +1 -1
  64. package/dist/analyzers/run-analyzer.d.ts.map +1 -1
  65. package/dist/analyzers/run-analyzer.js.map +1 -1
  66. package/dist/commands/adapter.d.ts.map +1 -1
  67. package/dist/commands/adapter.js +15 -14
  68. package/dist/commands/adapter.js.map +1 -1
  69. package/dist/commands/add-repo.d.ts.map +1 -1
  70. package/dist/commands/add-repo.js +6 -5
  71. package/dist/commands/add-repo.js.map +1 -1
  72. package/dist/commands/commit.js +6 -8
  73. package/dist/commands/commit.js.map +1 -1
  74. package/dist/commands/config.d.ts.map +1 -1
  75. package/dist/commands/config.js +2 -1
  76. package/dist/commands/config.js.map +1 -1
  77. package/dist/commands/create.d.ts +4 -4
  78. package/dist/commands/create.d.ts.map +1 -1
  79. package/dist/commands/create.js +8 -7
  80. package/dist/commands/create.js.map +1 -1
  81. package/dist/commands/desktop.d.ts +44 -3
  82. package/dist/commands/desktop.d.ts.map +1 -1
  83. package/dist/commands/desktop.js +246 -7
  84. package/dist/commands/desktop.js.map +1 -1
  85. package/dist/commands/diff.d.ts.map +1 -1
  86. package/dist/commands/diff.js +3 -2
  87. package/dist/commands/diff.js.map +1 -1
  88. package/dist/commands/doctor.d.ts.map +1 -1
  89. package/dist/commands/doctor.js +3 -2
  90. package/dist/commands/doctor.js.map +1 -1
  91. package/dist/commands/finish.js +2 -1
  92. package/dist/commands/finish.js.map +1 -1
  93. package/dist/commands/handoff.d.ts.map +1 -1
  94. package/dist/commands/handoff.js +12 -12
  95. package/dist/commands/handoff.js.map +1 -1
  96. package/dist/commands/init.d.ts +2 -2
  97. package/dist/commands/init.d.ts.map +1 -1
  98. package/dist/commands/init.js +8 -7
  99. package/dist/commands/init.js.map +1 -1
  100. package/dist/commands/isolate.d.ts.map +1 -1
  101. package/dist/commands/isolate.js +2 -1
  102. package/dist/commands/isolate.js.map +1 -1
  103. package/dist/commands/knowledge.d.ts.map +1 -1
  104. package/dist/commands/knowledge.js +3 -2
  105. package/dist/commands/knowledge.js.map +1 -1
  106. package/dist/commands/list.d.ts.map +1 -1
  107. package/dist/commands/list.js +3 -2
  108. package/dist/commands/list.js.map +1 -1
  109. package/dist/commands/logs.js +3 -3
  110. package/dist/commands/logs.js.map +1 -1
  111. package/dist/commands/mcp.d.ts +1 -2
  112. package/dist/commands/mcp.d.ts.map +1 -1
  113. package/dist/commands/mcp.js +19 -12
  114. package/dist/commands/mcp.js.map +1 -1
  115. package/dist/commands/migrate.d.ts +12 -0
  116. package/dist/commands/migrate.d.ts.map +1 -0
  117. package/dist/commands/migrate.js +128 -0
  118. package/dist/commands/migrate.js.map +1 -0
  119. package/dist/commands/open.d.ts.map +1 -1
  120. package/dist/commands/open.js +2 -1
  121. package/dist/commands/open.js.map +1 -1
  122. package/dist/commands/progress.d.ts.map +1 -1
  123. package/dist/commands/progress.js +2 -1
  124. package/dist/commands/progress.js.map +1 -1
  125. package/dist/commands/project.d.ts.map +1 -1
  126. package/dist/commands/project.js +7 -6
  127. package/dist/commands/project.js.map +1 -1
  128. package/dist/commands/refresh.d.ts.map +1 -1
  129. package/dist/commands/refresh.js +8 -11
  130. package/dist/commands/refresh.js.map +1 -1
  131. package/dist/commands/remove.d.ts.map +1 -1
  132. package/dist/commands/remove.js +2 -1
  133. package/dist/commands/remove.js.map +1 -1
  134. package/dist/commands/schedule.js +16 -18
  135. package/dist/commands/schedule.js.map +1 -1
  136. package/dist/commands/start.d.ts.map +1 -1
  137. package/dist/commands/start.js +9 -8
  138. package/dist/commands/start.js.map +1 -1
  139. package/dist/commands/status.d.ts.map +1 -1
  140. package/dist/commands/status.js +2 -1
  141. package/dist/commands/status.js.map +1 -1
  142. package/dist/commands/stop.d.ts.map +1 -1
  143. package/dist/commands/stop.js +2 -1
  144. package/dist/commands/stop.js.map +1 -1
  145. package/dist/commands/strategy.d.ts.map +1 -1
  146. package/dist/commands/strategy.js +6 -5
  147. package/dist/commands/strategy.js.map +1 -1
  148. package/dist/commands/sync.js +8 -10
  149. package/dist/commands/sync.js.map +1 -1
  150. package/dist/commands/tui.d.ts.map +1 -1
  151. package/dist/commands/tui.js +11 -10
  152. package/dist/commands/tui.js.map +1 -1
  153. package/dist/commands/ui.d.ts.map +1 -1
  154. package/dist/commands/ui.js +4 -3
  155. package/dist/commands/ui.js.map +1 -1
  156. package/dist/core/adapters/local-storage.d.ts +3 -1
  157. package/dist/core/adapters/local-storage.d.ts.map +1 -1
  158. package/dist/core/adapters/local-storage.js +62 -4
  159. package/dist/core/adapters/local-storage.js.map +1 -1
  160. package/dist/core/analysis-cache.d.ts.map +1 -1
  161. package/dist/core/analysis-cache.js +8 -7
  162. package/dist/core/analysis-cache.js.map +1 -1
  163. package/dist/core/brand-config.d.ts +261 -0
  164. package/dist/core/brand-config.d.ts.map +1 -0
  165. package/dist/core/brand-config.js +514 -0
  166. package/dist/core/brand-config.js.map +1 -0
  167. package/dist/core/config.d.ts +1 -1
  168. package/dist/core/config.d.ts.map +1 -1
  169. package/dist/core/config.js +18 -8
  170. package/dist/core/config.js.map +1 -1
  171. package/dist/core/constants.d.ts +88 -0
  172. package/dist/core/constants.d.ts.map +1 -0
  173. package/dist/core/constants.js +103 -0
  174. package/dist/core/constants.js.map +1 -0
  175. package/dist/core/doctor.d.ts.map +1 -1
  176. package/dist/core/doctor.js +11 -3
  177. package/dist/core/doctor.js.map +1 -1
  178. package/dist/core/generation-lock.d.ts +2 -2
  179. package/dist/core/generation-lock.d.ts.map +1 -1
  180. package/dist/core/generation-lock.js +49 -22
  181. package/dist/core/generation-lock.js.map +1 -1
  182. package/dist/core/knowledge.d.ts +19 -0
  183. package/dist/core/knowledge.d.ts.map +1 -1
  184. package/dist/core/knowledge.js +150 -24
  185. package/dist/core/knowledge.js.map +1 -1
  186. package/dist/core/migrate.d.ts +53 -0
  187. package/dist/core/migrate.d.ts.map +1 -0
  188. package/dist/core/migrate.js +607 -0
  189. package/dist/core/migrate.js.map +1 -0
  190. package/dist/core/new-repo.js +1 -1
  191. package/dist/core/new-repo.js.map +1 -1
  192. package/dist/core/projects.d.ts.map +1 -1
  193. package/dist/core/projects.js +13 -4
  194. package/dist/core/projects.js.map +1 -1
  195. package/dist/core/refresh.d.ts.map +1 -1
  196. package/dist/core/refresh.js +6 -4
  197. package/dist/core/refresh.js.map +1 -1
  198. package/dist/core/scheduler.d.ts +1 -1
  199. package/dist/core/scheduler.d.ts.map +1 -1
  200. package/dist/core/scheduler.js +11 -9
  201. package/dist/core/scheduler.js.map +1 -1
  202. package/dist/core/sync.js +1 -1
  203. package/dist/core/sync.js.map +1 -1
  204. package/dist/core/workspace-git.d.ts.map +1 -1
  205. package/dist/core/workspace-git.js +34 -10
  206. package/dist/core/workspace-git.js.map +1 -1
  207. package/dist/core/workspace-state.d.ts +4 -0
  208. package/dist/core/workspace-state.d.ts.map +1 -1
  209. package/dist/core/workspace-state.js +8 -8
  210. package/dist/core/workspace-state.js.map +1 -1
  211. package/dist/core/workspace.d.ts +3 -4
  212. package/dist/core/workspace.d.ts.map +1 -1
  213. package/dist/core/workspace.js +62 -30
  214. package/dist/core/workspace.js.map +1 -1
  215. package/dist/desktop-server.js +6 -3
  216. package/dist/desktop-server.js.map +1 -1
  217. package/dist/generators/base.d.ts.map +1 -1
  218. package/dist/generators/base.js +7 -5
  219. package/dist/generators/base.js.map +1 -1
  220. package/dist/generators/claude.d.ts.map +1 -1
  221. package/dist/generators/claude.js +2 -1
  222. package/dist/generators/claude.js.map +1 -1
  223. package/dist/generators/cursor.d.ts +1 -1
  224. package/dist/generators/cursor.d.ts.map +1 -1
  225. package/dist/generators/cursor.js +9 -4
  226. package/dist/generators/cursor.js.map +1 -1
  227. package/dist/generators/index.d.ts +4 -8
  228. package/dist/generators/index.d.ts.map +1 -1
  229. package/dist/generators/index.js +34 -69
  230. package/dist/generators/index.js.map +1 -1
  231. package/dist/generators/plan-generator.d.ts.map +1 -1
  232. package/dist/generators/plan-generator.js +20 -11
  233. package/dist/generators/plan-generator.js.map +1 -1
  234. package/dist/generators/skills-generator.d.ts.map +1 -1
  235. package/dist/generators/skills-generator.js +26 -11
  236. package/dist/generators/skills-generator.js.map +1 -1
  237. package/dist/gui/app_logo.png +0 -0
  238. package/dist/gui/assets/AgentsPage-CnXzZFo1.js +3 -0
  239. package/dist/gui/assets/DashboardPage-rm3hKgsw.js +1 -0
  240. package/dist/gui/assets/GettingStartedPage-BKeuSHZQ.js +1 -0
  241. package/dist/gui/assets/NullStore-DuSDhGOe.js +1 -0
  242. package/dist/gui/assets/ProjectsPage-CioaA4uf.js +1 -0
  243. package/dist/gui/assets/ScaffoldRepoInline-DKZ1rPmE.js +1 -0
  244. package/dist/gui/assets/Separator-BgWyHDtg.js +1 -0
  245. package/dist/gui/assets/SettingsPage-BevO8oge.js +1 -0
  246. package/dist/gui/assets/SkillsPage-D2stJRWy.js +6 -0
  247. package/dist/gui/assets/StartWorkPage-C8a6eN90.js +1 -0
  248. package/dist/gui/assets/{StrategiesPage-C36TZgDX.js → StrategiesPage-BRQMly_d.js} +2 -2
  249. package/dist/gui/assets/WorkroomsPage-KqBkRD-x.js +4 -0
  250. package/dist/gui/assets/WorkspacesPage-DcA2i5HN.js +2 -0
  251. package/dist/gui/assets/alert-QnMXzwpU.js +1 -0
  252. package/dist/gui/assets/alert-dialog-BHEUQVyS.js +1 -0
  253. package/dist/gui/assets/badge-DTBzXOWn.js +1 -0
  254. package/dist/gui/assets/brand-hHByyyzq.js +1 -0
  255. package/dist/gui/assets/button-CREn1mup.js +1 -0
  256. package/dist/gui/assets/card-yrg6ov8B.js +1 -0
  257. package/dist/gui/assets/chevron-down-B_Mwbim8.js +1 -0
  258. package/dist/gui/assets/{circle-plus-lmU1yNJd.js → circle-plus--zM3-3r3.js} +1 -1
  259. package/dist/gui/assets/{code-xml-jFAa3-TT.js → code-xml-DH-38Tt7.js} +1 -1
  260. package/dist/gui/assets/{git-branch-Cfj9D8yW.js → git-branch-Ce0I2663.js} +1 -1
  261. package/dist/gui/assets/index-BB4BuHBQ.css +2 -0
  262. package/dist/gui/assets/index-BTe-_1Mu.js +57 -0
  263. package/dist/gui/assets/isElementDisabled-BrwmCB1d.js +1 -0
  264. package/dist/gui/assets/label-DC730X8s.js +1 -0
  265. package/dist/gui/assets/layers-j_brOuoa.js +1 -0
  266. package/dist/gui/assets/menu-d_G9km1-.js +1 -0
  267. package/dist/gui/assets/shield-check-Dd1Yv3l2.js +1 -0
  268. package/dist/gui/assets/square-check-big-BSIiYXPI.js +1 -0
  269. package/dist/gui/assets/tabs-BHwTt4t1.js +1 -0
  270. package/dist/gui/assets/{trash-2-CtR35_eF.js → trash-2-CMdv3eD3.js} +1 -1
  271. package/dist/gui/assets/useAriaLabelledBy-BmJErI5a.js +1 -0
  272. package/dist/gui/assets/useValueChanged-WS99hTmm.js +1 -0
  273. package/dist/gui/assets/{vsc-DFh0-53h.js → vsc-eMRaEwN3.js} +1 -1
  274. package/dist/gui/favicon-aurora.svg +8 -0
  275. package/dist/gui/favicon.ico +0 -0
  276. package/dist/gui/favicon.svg +8 -1
  277. package/dist/gui/index.html +21 -12
  278. package/dist/harness/claude.d.ts.map +1 -1
  279. package/dist/harness/claude.js +97 -7
  280. package/dist/harness/claude.js.map +1 -1
  281. package/dist/harness/codex.d.ts +1 -0
  282. package/dist/harness/codex.d.ts.map +1 -1
  283. package/dist/harness/codex.js +51 -34
  284. package/dist/harness/codex.js.map +1 -1
  285. package/dist/index.js +57 -27
  286. package/dist/index.js.map +1 -1
  287. package/dist/mcp/server.d.ts +12 -1
  288. package/dist/mcp/server.d.ts.map +1 -1
  289. package/dist/mcp/server.js +24 -6
  290. package/dist/mcp/server.js.map +1 -1
  291. package/dist/mcp/tools.d.ts +4 -2
  292. package/dist/mcp/tools.d.ts.map +1 -1
  293. package/dist/mcp/tools.js +372 -17
  294. package/dist/mcp/tools.js.map +1 -1
  295. package/dist/orchestration/detect.d.ts.map +1 -1
  296. package/dist/orchestration/detect.js +12 -5
  297. package/dist/orchestration/detect.js.map +1 -1
  298. package/dist/orchestration/log-tail.js +17 -17
  299. package/dist/orchestration/log-tail.js.map +1 -1
  300. package/dist/orchestration/runner.d.ts +1 -1
  301. package/dist/orchestration/runner.d.ts.map +1 -1
  302. package/dist/orchestration/runner.js +13 -8
  303. package/dist/orchestration/runner.js.map +1 -1
  304. package/dist/resources/agents-catalog.d.ts +3 -1
  305. package/dist/resources/agents-catalog.d.ts.map +1 -1
  306. package/dist/resources/agents-catalog.js +12 -6
  307. package/dist/resources/agents-catalog.js.map +1 -1
  308. package/dist/resources/contracts.d.ts +7 -0
  309. package/dist/resources/contracts.d.ts.map +1 -1
  310. package/dist/resources/contracts.js +8 -1
  311. package/dist/resources/contracts.js.map +1 -1
  312. package/dist/resources/fs-safety.d.ts +7 -1
  313. package/dist/resources/fs-safety.d.ts.map +1 -1
  314. package/dist/resources/fs-safety.js +44 -1
  315. package/dist/resources/fs-safety.js.map +1 -1
  316. package/dist/resources/materializer.d.ts +1 -0
  317. package/dist/resources/materializer.d.ts.map +1 -1
  318. package/dist/resources/materializer.js +48 -17
  319. package/dist/resources/materializer.js.map +1 -1
  320. package/dist/resources/service.d.ts.map +1 -1
  321. package/dist/resources/service.js +3 -2
  322. package/dist/resources/service.js.map +1 -1
  323. package/dist/server.d.ts +2 -19
  324. package/dist/server.d.ts.map +1 -1
  325. package/dist/server.js +1158 -318
  326. package/dist/server.js.map +1 -1
  327. package/dist/static-resources/workflows/cost-aware-sol-luna.md +95 -0
  328. package/dist/storage/db.d.ts +94 -0
  329. package/dist/storage/db.d.ts.map +1 -0
  330. package/dist/storage/db.js +609 -0
  331. package/dist/storage/db.js.map +1 -0
  332. package/dist/types.d.ts +19 -0
  333. package/dist/types.d.ts.map +1 -1
  334. package/dist/utils/detect-ai.d.ts.map +1 -1
  335. package/dist/utils/detect-ai.js +1 -3
  336. package/dist/utils/detect-ai.js.map +1 -1
  337. package/dist/utils/multi-git.d.ts +0 -8
  338. package/dist/utils/multi-git.d.ts.map +1 -1
  339. package/dist/utils/multi-git.js +12 -4
  340. package/dist/utils/multi-git.js.map +1 -1
  341. package/dist/utils/pr.d.ts.map +1 -1
  342. package/dist/utils/pr.js +10 -5
  343. package/dist/utils/pr.js.map +1 -1
  344. package/dist/utils/resolve-workspace.d.ts +1 -1
  345. package/dist/utils/resolve-workspace.d.ts.map +1 -1
  346. package/dist/utils/resolve-workspace.js +10 -3
  347. package/dist/utils/resolve-workspace.js.map +1 -1
  348. package/dist/utils/session-finder.d.ts +12 -1
  349. package/dist/utils/session-finder.d.ts.map +1 -1
  350. package/dist/utils/session-finder.js +183 -0
  351. package/dist/utils/session-finder.js.map +1 -1
  352. package/dist/utils/skills-catalog.d.ts +5 -1
  353. package/dist/utils/skills-catalog.d.ts.map +1 -1
  354. package/dist/utils/skills-catalog.js +131 -75
  355. package/dist/utils/skills-catalog.js.map +1 -1
  356. package/dist/utils/terminal-launch.d.ts +4 -0
  357. package/dist/utils/terminal-launch.d.ts.map +1 -1
  358. package/dist/utils/terminal-launch.js +71 -12
  359. package/dist/utils/terminal-launch.js.map +1 -1
  360. package/dist/utils/update-check.d.ts +4 -1
  361. package/dist/utils/update-check.d.ts.map +1 -1
  362. package/dist/utils/update-check.js +66 -19
  363. package/dist/utils/update-check.js.map +1 -1
  364. package/dist/utils/workflows.d.ts +4 -1
  365. package/dist/utils/workflows.d.ts.map +1 -1
  366. package/dist/utils/workflows.js +51 -21
  367. package/dist/utils/workflows.js.map +1 -1
  368. package/dist/workrooms/client.d.ts +54 -0
  369. package/dist/workrooms/client.d.ts.map +1 -0
  370. package/dist/workrooms/client.js +191 -0
  371. package/dist/workrooms/client.js.map +1 -0
  372. package/dist/workrooms/contracts.d.ts +579 -0
  373. package/dist/workrooms/contracts.d.ts.map +1 -0
  374. package/dist/workrooms/contracts.js +231 -0
  375. package/dist/workrooms/contracts.js.map +1 -0
  376. package/dist/workrooms/crypto.d.ts +30 -0
  377. package/dist/workrooms/crypto.d.ts.map +1 -0
  378. package/dist/workrooms/crypto.js +72 -0
  379. package/dist/workrooms/crypto.js.map +1 -0
  380. package/dist/workrooms/host.d.ts +61 -0
  381. package/dist/workrooms/host.d.ts.map +1 -0
  382. package/dist/workrooms/host.js +747 -0
  383. package/dist/workrooms/host.js.map +1 -0
  384. package/dist/workrooms/local-resources.d.ts +26 -0
  385. package/dist/workrooms/local-resources.d.ts.map +1 -0
  386. package/dist/workrooms/local-resources.js +367 -0
  387. package/dist/workrooms/local-resources.js.map +1 -0
  388. package/dist/workrooms/manager.d.ts +228 -0
  389. package/dist/workrooms/manager.d.ts.map +1 -0
  390. package/dist/workrooms/manager.js +768 -0
  391. package/dist/workrooms/manager.js.map +1 -0
  392. package/dist/workrooms/milestones.d.ts +42 -0
  393. package/dist/workrooms/milestones.d.ts.map +1 -0
  394. package/dist/workrooms/milestones.js +94 -0
  395. package/dist/workrooms/milestones.js.map +1 -0
  396. package/dist/workrooms/portable.d.ts +21 -0
  397. package/dist/workrooms/portable.d.ts.map +1 -0
  398. package/dist/workrooms/portable.js +201 -0
  399. package/dist/workrooms/portable.js.map +1 -0
  400. package/dist/workrooms/resource-package.d.ts +7 -0
  401. package/dist/workrooms/resource-package.d.ts.map +1 -0
  402. package/dist/workrooms/resource-package.js +260 -0
  403. package/dist/workrooms/resource-package.js.map +1 -0
  404. package/dist/workrooms/service.d.ts +92 -0
  405. package/dist/workrooms/service.d.ts.map +1 -0
  406. package/dist/workrooms/service.js +788 -0
  407. package/dist/workrooms/service.js.map +1 -0
  408. package/dist/workrooms/sqlite-store.d.ts +31 -0
  409. package/dist/workrooms/sqlite-store.d.ts.map +1 -0
  410. package/dist/workrooms/sqlite-store.js +511 -0
  411. package/dist/workrooms/sqlite-store.js.map +1 -0
  412. package/dist/workrooms/store.d.ts +542 -0
  413. package/dist/workrooms/store.d.ts.map +1 -0
  414. package/dist/workrooms/store.js +71 -0
  415. package/dist/workrooms/store.js.map +1 -0
  416. package/package.json +16 -10
  417. package/resources/workflows/cost-aware-sol-luna.md +95 -0
  418. package/dist/agent/AcpCliAdapter.test.d.ts +0 -2
  419. package/dist/agent/AcpCliAdapter.test.d.ts.map +0 -1
  420. package/dist/agent/AcpCliAdapter.test.js +0 -235
  421. package/dist/agent/AcpCliAdapter.test.js.map +0 -1
  422. package/dist/agent/AntigravityCliAdapter.test.d.ts +0 -2
  423. package/dist/agent/AntigravityCliAdapter.test.d.ts.map +0 -1
  424. package/dist/agent/AntigravityCliAdapter.test.js +0 -222
  425. package/dist/agent/AntigravityCliAdapter.test.js.map +0 -1
  426. package/dist/agent/ClaudeCliAdapter.test.d.ts +0 -2
  427. package/dist/agent/ClaudeCliAdapter.test.d.ts.map +0 -1
  428. package/dist/agent/ClaudeCliAdapter.test.js +0 -320
  429. package/dist/agent/ClaudeCliAdapter.test.js.map +0 -1
  430. package/dist/agent/ClaudeSdkAdapter.test.d.ts +0 -2
  431. package/dist/agent/ClaudeSdkAdapter.test.d.ts.map +0 -1
  432. package/dist/agent/ClaudeSdkAdapter.test.js +0 -155
  433. package/dist/agent/ClaudeSdkAdapter.test.js.map +0 -1
  434. package/dist/agent/CliAdapterBase.test.d.ts +0 -2
  435. package/dist/agent/CliAdapterBase.test.d.ts.map +0 -1
  436. package/dist/agent/CliAdapterBase.test.js +0 -240
  437. package/dist/agent/CliAdapterBase.test.js.map +0 -1
  438. package/dist/agent/CodexCliAdapter.test.d.ts +0 -2
  439. package/dist/agent/CodexCliAdapter.test.d.ts.map +0 -1
  440. package/dist/agent/CodexCliAdapter.test.js +0 -331
  441. package/dist/agent/CodexCliAdapter.test.js.map +0 -1
  442. package/dist/agent/CodexSdkAdapter.test.d.ts +0 -2
  443. package/dist/agent/CodexSdkAdapter.test.d.ts.map +0 -1
  444. package/dist/agent/CodexSdkAdapter.test.js +0 -76
  445. package/dist/agent/CodexSdkAdapter.test.js.map +0 -1
  446. package/dist/agent/ProviderRegistry.test.d.ts +0 -2
  447. package/dist/agent/ProviderRegistry.test.d.ts.map +0 -1
  448. package/dist/agent/ProviderRegistry.test.js +0 -129
  449. package/dist/agent/ProviderRegistry.test.js.map +0 -1
  450. package/dist/agent/adapters.test.d.ts +0 -2
  451. package/dist/agent/adapters.test.d.ts.map +0 -1
  452. package/dist/agent/adapters.test.js +0 -71
  453. package/dist/agent/adapters.test.js.map +0 -1
  454. package/dist/agent/cliAvailability.test.d.ts +0 -2
  455. package/dist/agent/cliAvailability.test.d.ts.map +0 -1
  456. package/dist/agent/cliAvailability.test.js +0 -217
  457. package/dist/agent/cliAvailability.test.js.map +0 -1
  458. package/dist/agent/mcp-config.test.d.ts +0 -2
  459. package/dist/agent/mcp-config.test.d.ts.map +0 -1
  460. package/dist/agent/mcp-config.test.js +0 -22
  461. package/dist/agent/mcp-config.test.js.map +0 -1
  462. package/dist/agent/models.test.d.ts +0 -2
  463. package/dist/agent/models.test.d.ts.map +0 -1
  464. package/dist/agent/models.test.js +0 -40
  465. package/dist/agent/models.test.js.map +0 -1
  466. package/dist/agent/nativeAgent.test.d.ts +0 -2
  467. package/dist/agent/nativeAgent.test.d.ts.map +0 -1
  468. package/dist/agent/nativeAgent.test.js +0 -35
  469. package/dist/agent/nativeAgent.test.js.map +0 -1
  470. package/dist/agent/nativeTools.test.d.ts +0 -2
  471. package/dist/agent/nativeTools.test.d.ts.map +0 -1
  472. package/dist/agent/nativeTools.test.js +0 -67
  473. package/dist/agent/nativeTools.test.js.map +0 -1
  474. package/dist/agent/orchestrator.test.d.ts +0 -2
  475. package/dist/agent/orchestrator.test.d.ts.map +0 -1
  476. package/dist/agent/orchestrator.test.js +0 -284
  477. package/dist/agent/orchestrator.test.js.map +0 -1
  478. package/dist/agent/session.test.d.ts +0 -2
  479. package/dist/agent/session.test.d.ts.map +0 -1
  480. package/dist/agent/session.test.js +0 -74
  481. package/dist/agent/session.test.js.map +0 -1
  482. package/dist/agent/smoke-chat.test.d.ts +0 -2
  483. package/dist/agent/smoke-chat.test.d.ts.map +0 -1
  484. package/dist/agent/smoke-chat.test.js +0 -166
  485. package/dist/agent/smoke-chat.test.js.map +0 -1
  486. package/dist/commands/add-repo.test.d.ts +0 -2
  487. package/dist/commands/add-repo.test.d.ts.map +0 -1
  488. package/dist/commands/add-repo.test.js +0 -30
  489. package/dist/commands/add-repo.test.js.map +0 -1
  490. package/dist/commands/commands.test.d.ts +0 -2
  491. package/dist/commands/commands.test.d.ts.map +0 -1
  492. package/dist/commands/commands.test.js +0 -156
  493. package/dist/commands/commands.test.js.map +0 -1
  494. package/dist/commands/commit.test.d.ts +0 -2
  495. package/dist/commands/commit.test.d.ts.map +0 -1
  496. package/dist/commands/commit.test.js +0 -54
  497. package/dist/commands/commit.test.js.map +0 -1
  498. package/dist/commands/isolate.test.d.ts +0 -2
  499. package/dist/commands/isolate.test.d.ts.map +0 -1
  500. package/dist/commands/isolate.test.js +0 -59
  501. package/dist/commands/isolate.test.js.map +0 -1
  502. package/dist/commands/knowledge.test.d.ts +0 -2
  503. package/dist/commands/knowledge.test.d.ts.map +0 -1
  504. package/dist/commands/knowledge.test.js +0 -90
  505. package/dist/commands/knowledge.test.js.map +0 -1
  506. package/dist/commands/status.test.d.ts +0 -2
  507. package/dist/commands/status.test.d.ts.map +0 -1
  508. package/dist/commands/status.test.js +0 -31
  509. package/dist/commands/status.test.js.map +0 -1
  510. package/dist/commands/ui.test.d.ts +0 -2
  511. package/dist/commands/ui.test.d.ts.map +0 -1
  512. package/dist/commands/ui.test.js +0 -58
  513. package/dist/commands/ui.test.js.map +0 -1
  514. package/dist/core/adapters/storage.test.d.ts +0 -2
  515. package/dist/core/adapters/storage.test.d.ts.map +0 -1
  516. package/dist/core/adapters/storage.test.js +0 -65
  517. package/dist/core/adapters/storage.test.js.map +0 -1
  518. package/dist/core/analysis-cache.test.d.ts +0 -2
  519. package/dist/core/analysis-cache.test.d.ts.map +0 -1
  520. package/dist/core/analysis-cache.test.js +0 -163
  521. package/dist/core/analysis-cache.test.js.map +0 -1
  522. package/dist/core/config.test.d.ts +0 -2
  523. package/dist/core/config.test.d.ts.map +0 -1
  524. package/dist/core/config.test.js +0 -90
  525. package/dist/core/config.test.js.map +0 -1
  526. package/dist/core/finish.test.d.ts +0 -2
  527. package/dist/core/finish.test.d.ts.map +0 -1
  528. package/dist/core/finish.test.js +0 -110
  529. package/dist/core/finish.test.js.map +0 -1
  530. package/dist/core/generation-lock.test.d.ts +0 -2
  531. package/dist/core/generation-lock.test.d.ts.map +0 -1
  532. package/dist/core/generation-lock.test.js +0 -134
  533. package/dist/core/generation-lock.test.js.map +0 -1
  534. package/dist/core/isolate.test.d.ts +0 -2
  535. package/dist/core/isolate.test.d.ts.map +0 -1
  536. package/dist/core/isolate.test.js +0 -320
  537. package/dist/core/isolate.test.js.map +0 -1
  538. package/dist/core/knowledge.test.d.ts +0 -2
  539. package/dist/core/knowledge.test.d.ts.map +0 -1
  540. package/dist/core/knowledge.test.js +0 -287
  541. package/dist/core/knowledge.test.js.map +0 -1
  542. package/dist/core/locks.test.d.ts +0 -2
  543. package/dist/core/locks.test.d.ts.map +0 -1
  544. package/dist/core/locks.test.js +0 -143
  545. package/dist/core/locks.test.js.map +0 -1
  546. package/dist/core/new-repo.test.d.ts +0 -2
  547. package/dist/core/new-repo.test.d.ts.map +0 -1
  548. package/dist/core/new-repo.test.js +0 -78
  549. package/dist/core/new-repo.test.js.map +0 -1
  550. package/dist/core/progress.test.d.ts +0 -2
  551. package/dist/core/progress.test.d.ts.map +0 -1
  552. package/dist/core/progress.test.js +0 -52
  553. package/dist/core/progress.test.js.map +0 -1
  554. package/dist/core/projects.test.d.ts +0 -2
  555. package/dist/core/projects.test.d.ts.map +0 -1
  556. package/dist/core/projects.test.js +0 -165
  557. package/dist/core/projects.test.js.map +0 -1
  558. package/dist/core/refresh.test.d.ts +0 -2
  559. package/dist/core/refresh.test.d.ts.map +0 -1
  560. package/dist/core/refresh.test.js +0 -93
  561. package/dist/core/refresh.test.js.map +0 -1
  562. package/dist/core/scanner.test.d.ts +0 -2
  563. package/dist/core/scanner.test.d.ts.map +0 -1
  564. package/dist/core/scanner.test.js +0 -53
  565. package/dist/core/scanner.test.js.map +0 -1
  566. package/dist/core/scheduler.test.d.ts +0 -2
  567. package/dist/core/scheduler.test.d.ts.map +0 -1
  568. package/dist/core/scheduler.test.js +0 -169
  569. package/dist/core/scheduler.test.js.map +0 -1
  570. package/dist/core/sync.test.d.ts +0 -2
  571. package/dist/core/sync.test.d.ts.map +0 -1
  572. package/dist/core/sync.test.js +0 -128
  573. package/dist/core/sync.test.js.map +0 -1
  574. package/dist/core/workspace-git.test.d.ts +0 -2
  575. package/dist/core/workspace-git.test.d.ts.map +0 -1
  576. package/dist/core/workspace-git.test.js +0 -52
  577. package/dist/core/workspace-git.test.js.map +0 -1
  578. package/dist/core/workspace-skills-workflow.integration.test.d.ts +0 -2
  579. package/dist/core/workspace-skills-workflow.integration.test.d.ts.map +0 -1
  580. package/dist/core/workspace-skills-workflow.integration.test.js +0 -177
  581. package/dist/core/workspace-skills-workflow.integration.test.js.map +0 -1
  582. package/dist/core/workspace-state.test.d.ts +0 -2
  583. package/dist/core/workspace-state.test.d.ts.map +0 -1
  584. package/dist/core/workspace-state.test.js +0 -84
  585. package/dist/core/workspace-state.test.js.map +0 -1
  586. package/dist/core/workspace.create.test.d.ts +0 -2
  587. package/dist/core/workspace.create.test.d.ts.map +0 -1
  588. package/dist/core/workspace.create.test.js +0 -224
  589. package/dist/core/workspace.create.test.js.map +0 -1
  590. package/dist/core/workspace.test.d.ts +0 -2
  591. package/dist/core/workspace.test.d.ts.map +0 -1
  592. package/dist/core/workspace.test.js +0 -53
  593. package/dist/core/workspace.test.js.map +0 -1
  594. package/dist/core/worktree.test.d.ts +0 -2
  595. package/dist/core/worktree.test.d.ts.map +0 -1
  596. package/dist/core/worktree.test.js +0 -153
  597. package/dist/core/worktree.test.js.map +0 -1
  598. package/dist/generators/base.test.d.ts +0 -2
  599. package/dist/generators/base.test.d.ts.map +0 -1
  600. package/dist/generators/base.test.js +0 -287
  601. package/dist/generators/base.test.js.map +0 -1
  602. package/dist/generators/knowledge-migration.test.d.ts +0 -2
  603. package/dist/generators/knowledge-migration.test.d.ts.map +0 -1
  604. package/dist/generators/knowledge-migration.test.js +0 -22
  605. package/dist/generators/knowledge-migration.test.js.map +0 -1
  606. package/dist/generators/plan-generator.test.d.ts +0 -2
  607. package/dist/generators/plan-generator.test.d.ts.map +0 -1
  608. package/dist/generators/plan-generator.test.js +0 -220
  609. package/dist/generators/plan-generator.test.js.map +0 -1
  610. package/dist/generators/skills-generator.test.d.ts +0 -2
  611. package/dist/generators/skills-generator.test.d.ts.map +0 -1
  612. package/dist/generators/skills-generator.test.js +0 -79
  613. package/dist/generators/skills-generator.test.js.map +0 -1
  614. package/dist/gui/assets/AgentsPage-B4fx43rd.js +0 -3
  615. package/dist/gui/assets/CSPContext-DBUu9tE0.js +0 -1
  616. package/dist/gui/assets/DashboardPage-DH52G8IG.js +0 -1
  617. package/dist/gui/assets/GettingStartedPage-BlTrQhvi.js +0 -1
  618. package/dist/gui/assets/ProjectsPage-BPVSLPXv.js +0 -1
  619. package/dist/gui/assets/ScaffoldRepoInline-ywcpq9PX.js +0 -1
  620. package/dist/gui/assets/SettingsPage-RQr8SalV.js +0 -1
  621. package/dist/gui/assets/SkillsPage-CYoSRrwx.js +0 -6
  622. package/dist/gui/assets/StartWorkPage-DBKK4lFi.js +0 -1
  623. package/dist/gui/assets/WorkspacesPage-DxEONvSq.js +0 -6
  624. package/dist/gui/assets/alert-dialog-CQAX2yRx.js +0 -1
  625. package/dist/gui/assets/badge-CAohJGj6.js +0 -1
  626. package/dist/gui/assets/bot-C2HWrAft.js +0 -1
  627. package/dist/gui/assets/button-BDDZnIHx.js +0 -1
  628. package/dist/gui/assets/card-BKXzd_5L.js +0 -1
  629. package/dist/gui/assets/chevron-down-qTL8HPug.js +0 -1
  630. package/dist/gui/assets/cpu-Cdwd84Jz.js +0 -1
  631. package/dist/gui/assets/empty-BdlgbifD.js +0 -1
  632. package/dist/gui/assets/index-BF6pre6G.css +0 -2
  633. package/dist/gui/assets/index-C_rwnBzF.js +0 -52
  634. package/dist/gui/assets/isElementDisabled-uy_EOitH.js +0 -1
  635. package/dist/gui/assets/label-CG5exjag.js +0 -1
  636. package/dist/gui/assets/square-DlIYnlSq.js +0 -1
  637. package/dist/gui/assets/textarea-ByfoCb54.js +0 -1
  638. package/dist/gui/assets/useAriaLabelledBy-ClesgjMe.js +0 -1
  639. package/dist/gui/assets/useValueChanged-DeYvGnKs.js +0 -1
  640. package/dist/gui/assets/zap-CWG_Lvki.js +0 -1
  641. package/dist/harness/contract.test.d.ts +0 -2
  642. package/dist/harness/contract.test.d.ts.map +0 -1
  643. package/dist/harness/contract.test.js +0 -426
  644. package/dist/harness/contract.test.js.map +0 -1
  645. package/dist/harness/harness.test.d.ts +0 -2
  646. package/dist/harness/harness.test.d.ts.map +0 -1
  647. package/dist/harness/harness.test.js +0 -215
  648. package/dist/harness/harness.test.js.map +0 -1
  649. package/dist/mcp/tools.test.d.ts +0 -2
  650. package/dist/mcp/tools.test.d.ts.map +0 -1
  651. package/dist/mcp/tools.test.js +0 -194
  652. package/dist/mcp/tools.test.js.map +0 -1
  653. package/dist/orchestration/log-tail.test.d.ts +0 -2
  654. package/dist/orchestration/log-tail.test.d.ts.map +0 -1
  655. package/dist/orchestration/log-tail.test.js +0 -72
  656. package/dist/orchestration/log-tail.test.js.map +0 -1
  657. package/dist/orchestration/orchestrator.test.d.ts +0 -2
  658. package/dist/orchestration/orchestrator.test.d.ts.map +0 -1
  659. package/dist/orchestration/orchestrator.test.js +0 -85
  660. package/dist/orchestration/orchestrator.test.js.map +0 -1
  661. package/dist/orchestration/runner.test.d.ts +0 -2
  662. package/dist/orchestration/runner.test.d.ts.map +0 -1
  663. package/dist/orchestration/runner.test.js +0 -233
  664. package/dist/orchestration/runner.test.js.map +0 -1
  665. package/dist/resources/agents-catalog.test.d.ts +0 -2
  666. package/dist/resources/agents-catalog.test.d.ts.map +0 -1
  667. package/dist/resources/agents-catalog.test.js +0 -50
  668. package/dist/resources/agents-catalog.test.js.map +0 -1
  669. package/dist/resources/codex-agent.test.d.ts +0 -2
  670. package/dist/resources/codex-agent.test.d.ts.map +0 -1
  671. package/dist/resources/codex-agent.test.js +0 -27
  672. package/dist/resources/codex-agent.test.js.map +0 -1
  673. package/dist/resources/materializer.test.d.ts +0 -2
  674. package/dist/resources/materializer.test.d.ts.map +0 -1
  675. package/dist/resources/materializer.test.js +0 -149
  676. package/dist/resources/materializer.test.js.map +0 -1
  677. package/dist/resources/service.test.d.ts +0 -2
  678. package/dist/resources/service.test.d.ts.map +0 -1
  679. package/dist/resources/service.test.js +0 -58
  680. package/dist/resources/service.test.js.map +0 -1
  681. package/dist/server.test.d.ts +0 -2
  682. package/dist/server.test.d.ts.map +0 -1
  683. package/dist/server.test.js +0 -1697
  684. package/dist/server.test.js.map +0 -1
  685. package/dist/utils/detect-ai.test.d.ts +0 -2
  686. package/dist/utils/detect-ai.test.d.ts.map +0 -1
  687. package/dist/utils/detect-ai.test.js +0 -70
  688. package/dist/utils/detect-ai.test.js.map +0 -1
  689. package/dist/utils/detect-editors.test.d.ts +0 -2
  690. package/dist/utils/detect-editors.test.d.ts.map +0 -1
  691. package/dist/utils/detect-editors.test.js +0 -85
  692. package/dist/utils/detect-editors.test.js.map +0 -1
  693. package/dist/utils/git.test.d.ts +0 -2
  694. package/dist/utils/git.test.d.ts.map +0 -1
  695. package/dist/utils/git.test.js +0 -125
  696. package/dist/utils/git.test.js.map +0 -1
  697. package/dist/utils/multi-git.test.d.ts +0 -2
  698. package/dist/utils/multi-git.test.d.ts.map +0 -1
  699. package/dist/utils/multi-git.test.js +0 -330
  700. package/dist/utils/multi-git.test.js.map +0 -1
  701. package/dist/utils/pr.test.d.ts +0 -2
  702. package/dist/utils/pr.test.d.ts.map +0 -1
  703. package/dist/utils/pr.test.js +0 -47
  704. package/dist/utils/pr.test.js.map +0 -1
  705. package/dist/utils/session-finder.test.d.ts +0 -2
  706. package/dist/utils/session-finder.test.d.ts.map +0 -1
  707. package/dist/utils/session-finder.test.js +0 -304
  708. package/dist/utils/session-finder.test.js.map +0 -1
  709. package/dist/utils/skills-catalog.test.d.ts +0 -2
  710. package/dist/utils/skills-catalog.test.d.ts.map +0 -1
  711. package/dist/utils/skills-catalog.test.js +0 -281
  712. package/dist/utils/skills-catalog.test.js.map +0 -1
  713. package/dist/utils/system-scanner.test.d.ts +0 -2
  714. package/dist/utils/system-scanner.test.d.ts.map +0 -1
  715. package/dist/utils/system-scanner.test.js +0 -73
  716. package/dist/utils/system-scanner.test.js.map +0 -1
  717. package/dist/utils/terminal-launch.test.d.ts +0 -2
  718. package/dist/utils/terminal-launch.test.d.ts.map +0 -1
  719. package/dist/utils/terminal-launch.test.js +0 -117
  720. package/dist/utils/terminal-launch.test.js.map +0 -1
  721. package/dist/utils/update-check.test.d.ts +0 -2
  722. package/dist/utils/update-check.test.d.ts.map +0 -1
  723. package/dist/utils/update-check.test.js +0 -30
  724. package/dist/utils/update-check.test.js.map +0 -1
  725. package/dist/utils/workflows.test.d.ts +0 -2
  726. package/dist/utils/workflows.test.d.ts.map +0 -1
  727. package/dist/utils/workflows.test.js +0 -86
  728. package/dist/utils/workflows.test.js.map +0 -1
  729. package/dist/utils/workspace-launch.test.d.ts +0 -2
  730. package/dist/utils/workspace-launch.test.d.ts.map +0 -1
  731. package/dist/utils/workspace-launch.test.js +0 -128
  732. package/dist/utils/workspace-launch.test.js.map +0 -1
@@ -0,0 +1,609 @@
1
+ /**
2
+ * @module storage/db
3
+ * Server-side SQLite persistence using Node's built-in `node:sqlite` DatabaseSync.
4
+ * Gracefully falls back to a durable in-process store when running on Node < 22.5.
5
+ * Stores chat threads, turns, and approval records durably in ~/.nexusflow/nexusflow.db.
6
+ */
7
+ import { createRequire } from 'node:module';
8
+ import * as path from 'node:path';
9
+ import * as fs from 'node:fs';
10
+ import * as os from 'node:os';
11
+ import { getConfigDir } from '../core/config.js';
12
+ let NodeDatabaseSyncClass = null;
13
+ try {
14
+ const req = createRequire(import.meta.url);
15
+ const sqlite = req('node:sqlite');
16
+ if (sqlite && typeof sqlite.DatabaseSync === 'function') {
17
+ NodeDatabaseSyncClass = sqlite.DatabaseSync;
18
+ }
19
+ }
20
+ catch {
21
+ NodeDatabaseSyncClass = null;
22
+ }
23
+ /**
24
+ * Lightweight in-memory/JSON database fallback used when node:sqlite is not
25
+ * present in the runtime (e.g. Node 20 or earlier).
26
+ */
27
+ export class FallbackDatabase {
28
+ targetPath;
29
+ threads = new Map();
30
+ turns = new Map();
31
+ approvals = new Map();
32
+ inTransaction = false;
33
+ stagingThreads = new Map();
34
+ stagingTurns = new Map();
35
+ stagingApprovals = new Map();
36
+ constructor(targetPath) {
37
+ this.targetPath = targetPath;
38
+ this.loadFromDisk();
39
+ }
40
+ getJsonPaths() {
41
+ const jsonPath = this.targetPath.endsWith('.db')
42
+ ? this.targetPath.replace(/\.db$/, '.json')
43
+ : this.targetPath + '.json';
44
+ const bakPath = `${jsonPath}.bak`;
45
+ return { jsonPath, bakPath };
46
+ }
47
+ getActiveThreads() {
48
+ return this.inTransaction ? this.stagingThreads : this.threads;
49
+ }
50
+ getActiveTurns() {
51
+ return this.inTransaction ? this.stagingTurns : this.turns;
52
+ }
53
+ getActiveApprovals() {
54
+ return this.inTransaction ? this.stagingApprovals : this.approvals;
55
+ }
56
+ onMutation() {
57
+ if (!this.inTransaction) {
58
+ this.saveToDisk();
59
+ }
60
+ }
61
+ loadFromDisk() {
62
+ if (this.targetPath === ':memory:')
63
+ return;
64
+ const { jsonPath, bakPath } = this.getJsonPaths();
65
+ let parsedData = null;
66
+ try {
67
+ const raw = fs.readFileSync(jsonPath, 'utf8');
68
+ parsedData = JSON.parse(raw);
69
+ }
70
+ catch (err) {
71
+ if (err?.code !== 'ENOENT') {
72
+ console.warn(`[FallbackDatabase] Failed to read or parse ${jsonPath}, attempting backup recovery:`, err);
73
+ }
74
+ parsedData = null;
75
+ }
76
+ if (!parsedData) {
77
+ try {
78
+ const raw = fs.readFileSync(bakPath, 'utf8');
79
+ parsedData = JSON.parse(raw);
80
+ }
81
+ catch (bakErr) {
82
+ if (bakErr?.code !== 'ENOENT') {
83
+ console.warn(`[FallbackDatabase] Failed to read or parse backup ${bakPath}:`, bakErr);
84
+ }
85
+ parsedData = null;
86
+ }
87
+ }
88
+ if (parsedData) {
89
+ if (parsedData.threads) {
90
+ for (const [k, v] of Object.entries(parsedData.threads)) {
91
+ this.threads.set(k, v);
92
+ }
93
+ }
94
+ if (parsedData.turns) {
95
+ for (const [k, v] of Object.entries(parsedData.turns)) {
96
+ this.turns.set(k, v);
97
+ }
98
+ }
99
+ if (parsedData.approvals) {
100
+ for (const [k, v] of Object.entries(parsedData.approvals)) {
101
+ this.approvals.set(k, v);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ saveToDisk(threadsMap = this.threads, turnsMap = this.turns, approvalsMap = this.approvals) {
107
+ if (this.targetPath === ':memory:')
108
+ return;
109
+ const { jsonPath, bakPath } = this.getJsonPaths();
110
+ const dir = path.dirname(jsonPath);
111
+ try {
112
+ fs.mkdirSync(dir, { recursive: true });
113
+ }
114
+ catch {
115
+ // ignore
116
+ }
117
+ const data = {
118
+ threads: Object.fromEntries(threadsMap),
119
+ turns: Object.fromEntries(turnsMap),
120
+ approvals: Object.fromEntries(approvalsMap),
121
+ };
122
+ const content = JSON.stringify(data, null, 2);
123
+ const tempPath = `${jsonPath}.tmp.${Date.now()}.${Math.random().toString(36).slice(2)}`;
124
+ try {
125
+ fs.writeFileSync(tempPath, content, 'utf8');
126
+ try {
127
+ fs.copyFileSync(jsonPath, bakPath);
128
+ }
129
+ catch {
130
+ // Ignore backup copy failure, proceed with atomic rename
131
+ }
132
+ fs.renameSync(tempPath, jsonPath);
133
+ }
134
+ catch (err) {
135
+ try {
136
+ fs.unlinkSync(tempPath);
137
+ }
138
+ catch {
139
+ // ignore unlink error
140
+ }
141
+ throw err;
142
+ }
143
+ }
144
+ exec(sql) {
145
+ const trimmed = sql.trim().toUpperCase();
146
+ if (trimmed.startsWith('BEGIN')) {
147
+ this.inTransaction = true;
148
+ this.stagingThreads = new Map(Array.from(this.threads.entries()).map(([k, v]) => [k, { ...v }]));
149
+ this.stagingTurns = new Map(Array.from(this.turns.entries()).map(([k, v]) => [k, v.map((item) => ({ ...item }))]));
150
+ this.stagingApprovals = new Map(Array.from(this.approvals.entries()).map(([k, v]) => [k, { ...v }]));
151
+ return;
152
+ }
153
+ if (trimmed.startsWith('COMMIT')) {
154
+ if (this.inTransaction) {
155
+ // Persist staging maps to disk first; if persistence fails,
156
+ // active maps remain untouched and caller can issue ROLLBACK.
157
+ this.saveToDisk(this.stagingThreads, this.stagingTurns, this.stagingApprovals);
158
+ this.threads = this.stagingThreads;
159
+ this.turns = this.stagingTurns;
160
+ this.approvals = this.stagingApprovals;
161
+ this.inTransaction = false;
162
+ this.stagingThreads = new Map();
163
+ this.stagingTurns = new Map();
164
+ this.stagingApprovals = new Map();
165
+ }
166
+ return;
167
+ }
168
+ if (trimmed.startsWith('ROLLBACK')) {
169
+ if (this.inTransaction) {
170
+ this.inTransaction = false;
171
+ this.stagingThreads = new Map();
172
+ this.stagingTurns = new Map();
173
+ this.stagingApprovals = new Map();
174
+ }
175
+ return;
176
+ }
177
+ }
178
+ prepare(sql) {
179
+ const normalized = sql.trim().replace(/\s+/g, ' ');
180
+ const self = this;
181
+ if (normalized.startsWith('INSERT INTO chat_threads')) {
182
+ return {
183
+ run(workspace_id, provider_id, sessions_json, profiles_json, models_json, efforts_json, updated_at) {
184
+ self.getActiveThreads().set(workspace_id, {
185
+ workspace_id,
186
+ provider_id,
187
+ sessions_json,
188
+ profiles_json,
189
+ models_json,
190
+ efforts_json,
191
+ updated_at,
192
+ });
193
+ self.onMutation();
194
+ return { changes: 1 };
195
+ },
196
+ get() { return undefined; },
197
+ all() { return []; },
198
+ };
199
+ }
200
+ if (normalized.startsWith('DELETE FROM chat_turns WHERE workspace_id = ?')) {
201
+ return {
202
+ run(workspace_id) {
203
+ self.getActiveTurns().delete(workspace_id);
204
+ self.onMutation();
205
+ return { changes: 1 };
206
+ },
207
+ get() { return undefined; },
208
+ all() { return []; },
209
+ };
210
+ }
211
+ if (normalized.startsWith('INSERT INTO chat_turns')) {
212
+ return {
213
+ run(id, workspace_id, turn_index, role, content, kind, execution_profile, images_json, files_changed_json, created_at) {
214
+ const map = self.getActiveTurns();
215
+ let list = map.get(workspace_id);
216
+ if (!list) {
217
+ list = [];
218
+ map.set(workspace_id, list);
219
+ }
220
+ list.push({
221
+ id,
222
+ workspace_id,
223
+ turn_index,
224
+ role,
225
+ content,
226
+ kind,
227
+ execution_profile,
228
+ images_json,
229
+ files_changed_json,
230
+ created_at,
231
+ });
232
+ self.onMutation();
233
+ return { changes: 1 };
234
+ },
235
+ get() { return undefined; },
236
+ all() { return []; },
237
+ };
238
+ }
239
+ if (normalized.startsWith('SELECT * FROM chat_threads WHERE workspace_id = ?')) {
240
+ return {
241
+ run() { return {}; },
242
+ get(workspace_id) {
243
+ return self.getActiveThreads().get(workspace_id);
244
+ },
245
+ all(workspace_id) {
246
+ const item = self.getActiveThreads().get(workspace_id);
247
+ return item ? [item] : [];
248
+ },
249
+ };
250
+ }
251
+ if (normalized.startsWith('SELECT * FROM chat_turns WHERE workspace_id = ?')) {
252
+ return {
253
+ run() { return {}; },
254
+ get(workspace_id) {
255
+ const list = self.getActiveTurns().get(workspace_id) || [];
256
+ return list[0];
257
+ },
258
+ all(workspace_id) {
259
+ const list = self.getActiveTurns().get(workspace_id) || [];
260
+ return [...list].sort((a, b) => a.turn_index - b.turn_index);
261
+ },
262
+ };
263
+ }
264
+ if (normalized.startsWith('DELETE FROM chat_threads WHERE workspace_id = ?')) {
265
+ return {
266
+ run(workspace_id) {
267
+ self.getActiveThreads().delete(workspace_id);
268
+ self.getActiveTurns().delete(workspace_id);
269
+ self.onMutation();
270
+ return { changes: 1 };
271
+ },
272
+ get() { return undefined; },
273
+ all() { return []; },
274
+ };
275
+ }
276
+ if (normalized.startsWith('INSERT INTO tool_approvals')) {
277
+ return {
278
+ run(id, workspace_id, tool, input_json, description, created_at) {
279
+ const map = self.getActiveApprovals();
280
+ const existing = map.get(id);
281
+ map.set(id, {
282
+ id,
283
+ workspace_id,
284
+ tool,
285
+ input_json,
286
+ description,
287
+ decision: existing ? existing.decision : 'pending',
288
+ created_at,
289
+ resolved_at: existing?.resolved_at ?? null,
290
+ });
291
+ self.onMutation();
292
+ return { changes: 1 };
293
+ },
294
+ get() { return undefined; },
295
+ all() { return []; },
296
+ };
297
+ }
298
+ if (normalized.startsWith('UPDATE tool_approvals SET decision = ?, resolved_at = ? WHERE id = ?')) {
299
+ return {
300
+ run(decision, resolved_at, id) {
301
+ const map = self.getActiveApprovals();
302
+ const existing = map.get(id);
303
+ if (existing) {
304
+ existing.decision = decision;
305
+ existing.resolved_at = resolved_at;
306
+ self.onMutation();
307
+ }
308
+ return { changes: 1 };
309
+ },
310
+ get() { return undefined; },
311
+ all() { return []; },
312
+ };
313
+ }
314
+ if (normalized.startsWith('SELECT * FROM tool_approvals WHERE workspace_id = ?')) {
315
+ return {
316
+ run() { return {}; },
317
+ get(workspace_id) {
318
+ const list = Array.from(self.getActiveApprovals().values()).filter((a) => a.workspace_id === workspace_id && a.decision === 'pending');
319
+ return list[0];
320
+ },
321
+ all(workspace_id) {
322
+ const list = Array.from(self.getActiveApprovals().values()).filter((a) => a.workspace_id === workspace_id && a.decision === 'pending');
323
+ return list.sort((a, b) => a.created_at - b.created_at);
324
+ },
325
+ };
326
+ }
327
+ return {
328
+ run() { return { changes: 0 }; },
329
+ get() { return undefined; },
330
+ all() { return []; },
331
+ };
332
+ }
333
+ close() {
334
+ this.saveToDisk();
335
+ }
336
+ }
337
+ let activeDb = null;
338
+ let activeDbPath = null;
339
+ export function getDefaultDbPath() {
340
+ try {
341
+ const configDir = getConfigDir();
342
+ if (typeof configDir === 'string' && configDir && !configDir.startsWith('/mock/')) {
343
+ return path.join(configDir, 'nexusflow.db');
344
+ }
345
+ }
346
+ catch {
347
+ // ignore
348
+ }
349
+ return path.join(os.homedir(), '.nexusflow', 'nexusflow.db');
350
+ }
351
+ export function initDatabase(dbPath) {
352
+ if (!dbPath && activeDb) {
353
+ return activeDb;
354
+ }
355
+ let targetPath = dbPath || getDefaultDbPath();
356
+ if (activeDb && activeDbPath === targetPath) {
357
+ return activeDb;
358
+ }
359
+ if (activeDb) {
360
+ try {
361
+ activeDb.close();
362
+ }
363
+ catch {
364
+ // Ignore closure error on reconnect
365
+ }
366
+ }
367
+ // If native node:sqlite is available (Node 22.5+), use it
368
+ if (NodeDatabaseSyncClass) {
369
+ if (targetPath !== ':memory:') {
370
+ try {
371
+ const dir = path.dirname(targetPath);
372
+ if (!fs.existsSync(dir)) {
373
+ fs.mkdirSync(dir, { recursive: true });
374
+ }
375
+ }
376
+ catch {
377
+ targetPath = ':memory:';
378
+ }
379
+ }
380
+ let db;
381
+ try {
382
+ db = new NodeDatabaseSyncClass(targetPath);
383
+ }
384
+ catch {
385
+ targetPath = ':memory:';
386
+ db = new NodeDatabaseSyncClass(targetPath);
387
+ }
388
+ activeDb = db;
389
+ activeDbPath = targetPath;
390
+ // Optimize SQLite performance & concurrency with WAL mode
391
+ if (dbPath !== ':memory:') {
392
+ try {
393
+ db.exec('PRAGMA journal_mode = WAL;');
394
+ }
395
+ catch { /* ignore */ }
396
+ }
397
+ db.exec('PRAGMA foreign_keys = ON;');
398
+ // Schema creation
399
+ db.exec(`
400
+ CREATE TABLE IF NOT EXISTS chat_threads (
401
+ workspace_id TEXT PRIMARY KEY,
402
+ provider_id TEXT,
403
+ sessions_json TEXT NOT NULL DEFAULT '{}',
404
+ profiles_json TEXT NOT NULL DEFAULT '{}',
405
+ models_json TEXT NOT NULL DEFAULT '{}',
406
+ efforts_json TEXT NOT NULL DEFAULT '{}',
407
+ updated_at INTEGER NOT NULL
408
+ );
409
+
410
+ CREATE TABLE IF NOT EXISTS chat_turns (
411
+ id TEXT PRIMARY KEY,
412
+ workspace_id TEXT NOT NULL,
413
+ turn_index INTEGER NOT NULL,
414
+ role TEXT NOT NULL,
415
+ content TEXT NOT NULL,
416
+ kind TEXT,
417
+ execution_profile TEXT,
418
+ images_json TEXT,
419
+ files_changed_json TEXT,
420
+ created_at INTEGER NOT NULL,
421
+ FOREIGN KEY (workspace_id) REFERENCES chat_threads(workspace_id) ON DELETE CASCADE
422
+ );
423
+
424
+ CREATE INDEX IF NOT EXISTS idx_chat_turns_workspace ON chat_turns(workspace_id, turn_index);
425
+
426
+ CREATE TABLE IF NOT EXISTS tool_approvals (
427
+ id TEXT PRIMARY KEY,
428
+ workspace_id TEXT NOT NULL,
429
+ tool TEXT NOT NULL,
430
+ input_json TEXT NOT NULL,
431
+ description TEXT,
432
+ decision TEXT NOT NULL DEFAULT 'pending',
433
+ created_at INTEGER NOT NULL,
434
+ resolved_at INTEGER
435
+ );
436
+
437
+ CREATE INDEX IF NOT EXISTS idx_tool_approvals_pending ON tool_approvals(workspace_id, decision);
438
+ `);
439
+ try {
440
+ db.exec('ALTER TABLE chat_turns ADD COLUMN files_changed_json TEXT;');
441
+ }
442
+ catch {
443
+ // Column already exists
444
+ }
445
+ return db;
446
+ }
447
+ // Graceful fallback when node:sqlite is not available (Node < 22.5)
448
+ const db = new FallbackDatabase(targetPath);
449
+ activeDb = db;
450
+ activeDbPath = targetPath;
451
+ return db;
452
+ }
453
+ export function closeDatabase() {
454
+ if (activeDb) {
455
+ try {
456
+ activeDb.close();
457
+ }
458
+ catch {
459
+ // Ignore
460
+ }
461
+ activeDb = null;
462
+ activeDbPath = null;
463
+ }
464
+ }
465
+ export function saveChatThread(thread, db = initDatabase()) {
466
+ const updatedAt = Date.now();
467
+ db.exec('BEGIN TRANSACTION;');
468
+ try {
469
+ const insertThreadStmt = db.prepare(`
470
+ INSERT INTO chat_threads (workspace_id, provider_id, sessions_json, profiles_json, models_json, efforts_json, updated_at)
471
+ VALUES (?, ?, ?, ?, ?, ?, ?)
472
+ ON CONFLICT(workspace_id) DO UPDATE SET
473
+ provider_id = excluded.provider_id,
474
+ sessions_json = excluded.sessions_json,
475
+ profiles_json = excluded.profiles_json,
476
+ models_json = excluded.models_json,
477
+ efforts_json = excluded.efforts_json,
478
+ updated_at = excluded.updated_at
479
+ `);
480
+ insertThreadStmt.run(thread.workspaceId, thread.providerId ?? null, JSON.stringify(thread.sessions || {}), JSON.stringify(thread.profilesByProvider || {}), JSON.stringify(thread.modelsByProvider || {}), JSON.stringify(thread.effortsByProvider || {}), updatedAt);
481
+ const deleteTurnsStmt = db.prepare('DELETE FROM chat_turns WHERE workspace_id = ?');
482
+ deleteTurnsStmt.run(thread.workspaceId);
483
+ const insertTurnStmt = db.prepare(`
484
+ INSERT INTO chat_turns (id, workspace_id, turn_index, role, content, kind, execution_profile, images_json, files_changed_json, created_at)
485
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
486
+ `);
487
+ for (let i = 0; i < thread.messages.length; i++) {
488
+ const msg = thread.messages[i];
489
+ const id = `${thread.workspaceId}_turn_${i}_${msg.ts ?? Date.now()}`;
490
+ insertTurnStmt.run(id, thread.workspaceId, i, msg.role, msg.content, msg.kind ?? null, msg.executionProfile ?? null, msg.images && msg.images.length > 0 ? JSON.stringify(msg.images) : null, msg.filesChanged && msg.filesChanged.length > 0 ? JSON.stringify(msg.filesChanged) : null, msg.ts ?? Date.now());
491
+ }
492
+ db.exec('COMMIT;');
493
+ }
494
+ catch (err) {
495
+ db.exec('ROLLBACK;');
496
+ throw err;
497
+ }
498
+ }
499
+ export function loadChatThread(workspaceId, db = initDatabase()) {
500
+ const threadStmt = db.prepare('SELECT * FROM chat_threads WHERE workspace_id = ?');
501
+ const threadRow = threadStmt.get(workspaceId);
502
+ if (!threadRow)
503
+ return null;
504
+ const turnsStmt = db.prepare('SELECT * FROM chat_turns WHERE workspace_id = ? ORDER BY turn_index ASC');
505
+ const turnRows = turnsStmt.all(workspaceId);
506
+ const messages = turnRows.map((row) => {
507
+ let images;
508
+ if (row.images_json) {
509
+ try {
510
+ images = JSON.parse(row.images_json);
511
+ }
512
+ catch {
513
+ // Ignore
514
+ }
515
+ }
516
+ let filesChanged;
517
+ if (row.files_changed_json) {
518
+ try {
519
+ filesChanged = JSON.parse(row.files_changed_json);
520
+ }
521
+ catch {
522
+ // Ignore
523
+ }
524
+ }
525
+ return {
526
+ role: row.role,
527
+ content: row.content,
528
+ ts: Number(row.created_at),
529
+ kind: row.kind ? row.kind : undefined,
530
+ executionProfile: row.execution_profile || undefined,
531
+ images,
532
+ filesChanged,
533
+ };
534
+ });
535
+ let sessions = {};
536
+ let profilesByProvider = {};
537
+ let modelsByProvider = {};
538
+ let effortsByProvider = {};
539
+ try {
540
+ sessions = JSON.parse(threadRow.sessions_json || '{}');
541
+ }
542
+ catch { /* ignore */ }
543
+ try {
544
+ profilesByProvider = JSON.parse(threadRow.profiles_json || '{}');
545
+ }
546
+ catch { /* ignore */ }
547
+ try {
548
+ modelsByProvider = JSON.parse(threadRow.models_json || '{}');
549
+ }
550
+ catch { /* ignore */ }
551
+ try {
552
+ effortsByProvider = JSON.parse(threadRow.efforts_json || '{}');
553
+ }
554
+ catch { /* ignore */ }
555
+ return {
556
+ workspaceId: threadRow.workspace_id,
557
+ providerId: threadRow.provider_id ?? null,
558
+ sessions,
559
+ profilesByProvider,
560
+ modelsByProvider,
561
+ effortsByProvider,
562
+ messages,
563
+ updatedAt: Number(threadRow.updated_at),
564
+ };
565
+ }
566
+ export function clearChatThread(workspaceId, db = initDatabase()) {
567
+ const deleteTurns = db.prepare('DELETE FROM chat_turns WHERE workspace_id = ?');
568
+ deleteTurns.run(workspaceId);
569
+ const deleteThread = db.prepare('DELETE FROM chat_threads WHERE workspace_id = ?');
570
+ deleteThread.run(workspaceId);
571
+ }
572
+ export function recordApproval(approval, db = initDatabase()) {
573
+ const stmt = db.prepare(`
574
+ INSERT INTO tool_approvals (id, workspace_id, tool, input_json, description, decision, created_at)
575
+ VALUES (?, ?, ?, ?, ?, 'pending', ?)
576
+ ON CONFLICT(id) DO UPDATE SET
577
+ tool = excluded.tool,
578
+ input_json = excluded.input_json,
579
+ description = excluded.description
580
+ `);
581
+ stmt.run(approval.id, approval.workspaceId, approval.tool, JSON.stringify(approval.input || {}), approval.description ?? null, Date.now());
582
+ }
583
+ export function resolveApproval(id, decision, db = initDatabase()) {
584
+ const stmt = db.prepare(`
585
+ UPDATE tool_approvals
586
+ SET decision = ?, resolved_at = ?
587
+ WHERE id = ?
588
+ `);
589
+ stmt.run(decision, Date.now(), id);
590
+ }
591
+ export function getPendingApprovals(workspaceId, db = initDatabase()) {
592
+ const stmt = db.prepare(`
593
+ SELECT * FROM tool_approvals
594
+ WHERE workspace_id = ? AND decision = 'pending'
595
+ ORDER BY created_at ASC
596
+ `);
597
+ const rows = stmt.all(workspaceId);
598
+ return rows.map((row) => ({
599
+ id: row.id,
600
+ workspaceId: row.workspace_id,
601
+ tool: row.tool,
602
+ input: JSON.parse(row.input_json || '{}'),
603
+ description: row.description || undefined,
604
+ decision: row.decision,
605
+ createdAt: Number(row.created_at),
606
+ resolvedAt: row.resolved_at ? Number(row.resolved_at) : undefined,
607
+ }));
608
+ }
609
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -410,6 +410,23 @@ export interface RunningState {
410
410
  * See `utils/multi-git.ts` for the meaning of each value.
411
411
  */
412
412
  export type SyncStatus = 'up-to-date' | 'rebased' | 'conflict' | 'stash-conflict' | 'error';
413
+ /** At-a-glance status for one workspace, from GET /api/workspaces/status. */
414
+ export interface WorkspaceStatus {
415
+ id: string;
416
+ branchName: string;
417
+ /** Total uncommitted files across all repo worktrees. */
418
+ changedFiles: number;
419
+ /** Number of repos with uncommitted changes. */
420
+ dirtyRepos: number;
421
+ /** Number of currently running orchestrated services. */
422
+ runningServices: number;
423
+ /** Worst-case sync classification across repos, or 'unknown' if never synced. */
424
+ syncStatus: SyncStatus | 'unknown';
425
+ /** True when any repo pulled in new commits and awaits re-validation. */
426
+ pendingValidation: boolean;
427
+ /** AI assistants that have active/recorded sessions in this workspace. */
428
+ activeAssistants?: AIAssistant[];
429
+ }
413
430
  /** Persisted sync/validation state for a single repo in a workspace. */
414
431
  export interface RepoSyncState {
415
432
  /** Directory name of the repo. */
@@ -542,6 +559,8 @@ export interface WorkspaceSkillsConfig {
542
559
  revision?: number;
543
560
  /** Active enabled skill IDs. */
544
561
  enabledSkills: string[];
562
+ /** Explicitly disabled skill IDs (persisted opt-out). */
563
+ disabledSkills?: string[];
545
564
  /** Active Codex custom-agent IDs. */
546
565
  enabledAgents?: string[];
547
566
  /** Active enabled category IDs. */