titan-agent 5.4.2 → 5.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/agent.js +9 -5
  3. package/dist/agent/agent.js.map +1 -1
  4. package/dist/agent/agentLoop.js +7 -3
  5. package/dist/agent/agentLoop.js.map +1 -1
  6. package/dist/agent/checkpoint.js +2 -2
  7. package/dist/agent/checkpoint.js.map +1 -1
  8. package/dist/agent/commandPost.js +3 -3
  9. package/dist/agent/commandPost.js.map +1 -1
  10. package/dist/agent/goalProposer.js +2 -2
  11. package/dist/agent/goalProposer.js.map +1 -1
  12. package/dist/agent/goals.js +3 -3
  13. package/dist/agent/goals.js.map +1 -1
  14. package/dist/agent/peerAdvise.js +1 -1
  15. package/dist/agent/peerAdvise.js.map +1 -1
  16. package/dist/agent/planner.js +4 -4
  17. package/dist/agent/planner.js.map +1 -1
  18. package/dist/agent/userProfile.js +2 -2
  19. package/dist/agent/userProfile.js.map +1 -1
  20. package/dist/cli/doctor.js +33 -0
  21. package/dist/cli/doctor.js.map +1 -1
  22. package/dist/cli/onboard.js +4 -4
  23. package/dist/cli/onboard.js.map +1 -1
  24. package/dist/config/config.js +3 -3
  25. package/dist/config/config.js.map +1 -1
  26. package/dist/config/schema.js +8 -1
  27. package/dist/config/schema.js.map +1 -1
  28. package/dist/gateway/routes/adminRouter.js +500 -0
  29. package/dist/gateway/routes/adminRouter.js.map +1 -0
  30. package/dist/gateway/routes/agents.js +231 -0
  31. package/dist/gateway/routes/agents.js.map +1 -0
  32. package/dist/gateway/routes/agentsRouter.js +32 -0
  33. package/dist/gateway/routes/agentsRouter.js.map +1 -0
  34. package/dist/gateway/routes/checkpoints.js +41 -0
  35. package/dist/gateway/routes/checkpoints.js.map +1 -0
  36. package/dist/gateway/routes/commandPost.js +755 -0
  37. package/dist/gateway/routes/commandPost.js.map +1 -0
  38. package/dist/gateway/routes/companies.js +166 -0
  39. package/dist/gateway/routes/companies.js.map +1 -0
  40. package/dist/gateway/routes/files.js +295 -0
  41. package/dist/gateway/routes/files.js.map +1 -0
  42. package/dist/gateway/routes/hardwareRouter.js +151 -0
  43. package/dist/gateway/routes/hardwareRouter.js.map +1 -0
  44. package/dist/gateway/routes/mcpRouter.js +88 -0
  45. package/dist/gateway/routes/mcpRouter.js.map +1 -0
  46. package/dist/gateway/routes/mesh.js +464 -0
  47. package/dist/gateway/routes/mesh.js.map +1 -0
  48. package/dist/gateway/routes/metricsRouter.js +131 -0
  49. package/dist/gateway/routes/metricsRouter.js.map +1 -0
  50. package/dist/gateway/routes/organism.js +82 -0
  51. package/dist/gateway/routes/organism.js.map +1 -0
  52. package/dist/gateway/routes/paperclip.js +101 -0
  53. package/dist/gateway/routes/paperclip.js.map +1 -0
  54. package/dist/gateway/routes/sessions.js +227 -0
  55. package/dist/gateway/routes/sessions.js.map +1 -0
  56. package/dist/gateway/routes/skills.js +295 -0
  57. package/dist/gateway/routes/skills.js.map +1 -0
  58. package/dist/gateway/routes/socialRouter.js +145 -0
  59. package/dist/gateway/routes/socialRouter.js.map +1 -0
  60. package/dist/gateway/routes/systemRouter.js +220 -0
  61. package/dist/gateway/routes/systemRouter.js.map +1 -0
  62. package/dist/gateway/routes/teamsRecipes.js +297 -0
  63. package/dist/gateway/routes/teamsRecipes.js.map +1 -0
  64. package/dist/gateway/routes/tests.js +401 -0
  65. package/dist/gateway/routes/tests.js.map +1 -0
  66. package/dist/gateway/routes/traces.js +33 -0
  67. package/dist/gateway/routes/traces.js.map +1 -0
  68. package/dist/gateway/routes/voiceRouter.js +770 -0
  69. package/dist/gateway/routes/voiceRouter.js.map +1 -0
  70. package/dist/gateway/routes/watchRouter.js +131 -0
  71. package/dist/gateway/routes/watchRouter.js.map +1 -0
  72. package/dist/gateway/server.js +1179 -7379
  73. package/dist/gateway/server.js.map +1 -1
  74. package/dist/mcp/registry.js +2 -2
  75. package/dist/mcp/registry.js.map +1 -1
  76. package/dist/memory/episodic.js +2 -2
  77. package/dist/memory/episodic.js.map +1 -1
  78. package/dist/memory/learning.js +3 -3
  79. package/dist/memory/learning.js.map +1 -1
  80. package/dist/memory/memory.js +3 -3
  81. package/dist/memory/memory.js.map +1 -1
  82. package/dist/organism/drives.js +2 -2
  83. package/dist/organism/drives.js.map +1 -1
  84. package/dist/providers/errorTaxonomy.js +13 -0
  85. package/dist/providers/errorTaxonomy.js.map +1 -1
  86. package/dist/providers/ollama.js +3 -1
  87. package/dist/providers/ollama.js.map +1 -1
  88. package/dist/providers/openai_compat.js +4 -3
  89. package/dist/providers/openai_compat.js.map +1 -1
  90. package/dist/providers/router.js +13 -0
  91. package/dist/providers/router.js.map +1 -1
  92. package/dist/safety/fixOscillation.js +15 -0
  93. package/dist/safety/fixOscillation.js.map +1 -1
  94. package/dist/safety/killSwitch.js +2 -2
  95. package/dist/safety/killSwitch.js.map +1 -1
  96. package/dist/safety/selfRepair.js +7 -3
  97. package/dist/safety/selfRepair.js.map +1 -1
  98. package/dist/skills/builtin/agent_debate.js +2 -2
  99. package/dist/skills/builtin/agent_debate.js.map +1 -1
  100. package/dist/skills/builtin/apply_patch.js +3 -3
  101. package/dist/skills/builtin/apply_patch.js.map +1 -1
  102. package/dist/skills/builtin/shell.js +2 -2
  103. package/dist/skills/builtin/shell.js.map +1 -1
  104. package/dist/skills/builtin/voice_control.js +49 -0
  105. package/dist/skills/builtin/voice_control.js.map +1 -0
  106. package/dist/skills/builtin/widget_gallery.js +6 -1
  107. package/dist/skills/builtin/widget_gallery.js.map +1 -1
  108. package/dist/skills/registry.js +15 -4
  109. package/dist/skills/registry.js.map +1 -1
  110. package/dist/storage/JsonStorage.js +4 -4
  111. package/dist/storage/JsonStorage.js.map +1 -1
  112. package/dist/utils/constants.js +1 -1
  113. package/dist/utils/constants.js.map +1 -1
  114. package/dist/utils/helpers.js +3 -1
  115. package/dist/utils/helpers.js.map +1 -1
  116. package/dist/utils/lifecycle.js +86 -0
  117. package/dist/utils/lifecycle.js.map +1 -0
  118. package/dist/voice/bridge.js +136 -0
  119. package/dist/voice/bridge.js.map +1 -0
  120. package/docs/COO-MASTER-PLAN-2026-05-02.md +474 -0
  121. package/docs/HANDOFF/2026-04-29.md +141 -0
  122. package/docs/HANDOFF-2026-04-30.md +144 -0
  123. package/docs/HANDOFF-2026-05-03.md +114 -0
  124. package/docs/adr/2026-04-29-widget-pipeline-traceability.md +49 -0
  125. package/docs/agent-memory/README.md +45 -0
  126. package/docs/agent-memory/commands.md +100 -0
  127. package/docs/agent-memory/context-tree.md +101 -0
  128. package/docs/agent-memory/current-state.md +54 -0
  129. package/docs/agent-memory/decisions.md +78 -0
  130. package/docs/agent-memory/known-issues.md +76 -0
  131. package/docs/agent-memory/reflections.md +52 -0
  132. package/docs/agent-memory/skills-candidates.md +80 -0
  133. package/docs/superpowers/plans/2026-04-29-comprehensive-audit.md +256 -0
  134. package/docs/superpowers/plans/2026-04-29-comprehensive-test-plan.md +396 -0
  135. package/docs/superpowers/plans/2026-04-29-fix-all-prs.md +251 -0
  136. package/docs/superpowers/plans/2026-04-29-gitnexus-gap-remediation.md +969 -0
  137. package/package.json +5 -2
  138. package/ui/dist/assets/{AuditPanel-CM6Wg9hO.js → AuditPanel-VzSndmDN.js} +2 -2
  139. package/ui/dist/assets/{AutonomyPanel-CESx3ANg.js → AutonomyPanel-BiFouzAV.js} +2 -2
  140. package/ui/dist/assets/AutopilotPanel-fjOfM668.js +1 -0
  141. package/ui/dist/assets/{AutoresearchPanel-DR47NqT5.js → AutoresearchPanel-CVCxzAH3.js} +2 -2
  142. package/ui/dist/assets/BackupPanel-CHVTG--q.js +1 -0
  143. package/ui/dist/assets/{BrowserPanel-C15x9bLn.js → BrowserPanel-D5mvMKFU.js} +2 -2
  144. package/ui/dist/assets/CPActivity-B12mt35m.js +1 -0
  145. package/ui/dist/assets/CPAgentDetail-DsdShc-1.js +1 -0
  146. package/ui/dist/assets/CPAgents-j_7C-oQV.js +1 -0
  147. package/ui/dist/assets/CPApprovals-BShKSX9X.js +1 -0
  148. package/ui/dist/assets/CPCosts-CKPlhBDs.js +1 -0
  149. package/ui/dist/assets/CPDashboard-11c0nkxK.js +1 -0
  150. package/ui/dist/assets/CPFiles-BhLEOnXy.js +1 -0
  151. package/ui/dist/assets/CPGoals-Bi3t1b2P.js +1 -0
  152. package/ui/dist/assets/CPInbox-Bbr7khp6.js +11 -0
  153. package/ui/dist/assets/CPIssueDetail-DSdgNK8r.js +1 -0
  154. package/ui/dist/assets/CPIssues-DDEVKhX6.js +1 -0
  155. package/ui/dist/assets/CPLayout-DgPOfyGv.js +17 -0
  156. package/ui/dist/assets/CPOrg-Df73RrRJ.js +8 -0
  157. package/ui/dist/assets/CPRuns-ByioAz8w.js +1 -0
  158. package/ui/dist/assets/{CPSocial-nb-j7sOE.js → CPSocial-Dlnr_w1X.js} +2 -2
  159. package/ui/dist/assets/ChannelsPanel-DQjQCTK5.js +1 -0
  160. package/ui/dist/assets/CheckpointsPanel-C4vKjlAJ.js +1 -0
  161. package/ui/dist/assets/CommandPostHub-C9pp5Giq.js +24 -0
  162. package/ui/dist/assets/CronPanel-C6bzUfrD.js +1 -0
  163. package/ui/dist/assets/DaemonPanel-BA5Tb_UO.js +1 -0
  164. package/ui/dist/assets/{DataTable-B2Ma8hfi.js → DataTable-CH7IYJJh.js} +1 -1
  165. package/ui/dist/assets/{EmptyState-CcKyk5Yn.js → EmptyState-jU6yNDnF.js} +1 -1
  166. package/ui/dist/assets/{EvalHarnessPanel-BqtMc1ZM.js → EvalHarnessPanel-DnYqredY.js} +2 -2
  167. package/ui/dist/assets/EvalPanel-ChO7CD1r.js +1 -0
  168. package/ui/dist/assets/{FilesPanel-3QKvrWPo.js → FilesPanel-CaUkv2is.js} +2 -2
  169. package/ui/dist/assets/FleetPanel-DC_5uj0N.js +1 -0
  170. package/ui/dist/assets/{HomelabPanel-DhrjTX9m.js → HomelabPanel-CE5PGRpL.js} +2 -2
  171. package/ui/dist/assets/InfraView-C-uSlvb9.js +2 -0
  172. package/ui/dist/assets/InlineEditableField-BMQjiE6-.js +1 -0
  173. package/ui/dist/assets/Input-Bu_b3qmY.js +1 -0
  174. package/ui/dist/assets/IntegrationsPanel-DsYpAq43.js +1 -0
  175. package/ui/dist/assets/IntelligenceView-DUdIO1K7.js +2 -0
  176. package/ui/dist/assets/LearningPanel-UpQZC-mA.js +1 -0
  177. package/ui/dist/assets/LogsPanel-ClXJ4fcr.js +1 -0
  178. package/ui/dist/assets/McpPanel-JKgtIERQ.js +1 -0
  179. package/ui/dist/assets/{MemoryGraphPanel-Bzvjmzvk.js → MemoryGraphPanel-Bo2OrvA6.js} +2 -2
  180. package/ui/dist/assets/MemoryWikiPanel-BqJ1AmYm.js +11 -0
  181. package/ui/dist/assets/{MeshPanel-C3LJSlht.js → MeshPanel-BJVGYvwk.js} +2 -2
  182. package/ui/dist/assets/Modal-CAAooiZU.js +1 -0
  183. package/ui/dist/assets/NvidiaPanel-BtCg3G4w.js +1 -0
  184. package/ui/dist/assets/OrganismPanel-DgrTTzcF.js +1 -0
  185. package/ui/dist/assets/OverviewPanel-rVav1Hox.js +1 -0
  186. package/ui/dist/assets/{PageHeader-BimceqQo.js → PageHeader-CnZtP8ek.js} +1 -1
  187. package/ui/dist/assets/PaperclipPanel-C-FKdhiF.js +1 -0
  188. package/ui/dist/assets/{PersonasPanel-L1j78p6H.js → PersonasPanel-BmlxokfB.js} +1 -1
  189. package/ui/dist/assets/RecipesPanel-BNKKChis.js +1 -0
  190. package/ui/dist/assets/SecurityPanel-I7JRHiNy.js +1 -0
  191. package/ui/dist/assets/SelfImprovePanel-u9h0Lt3p.js +1 -0
  192. package/ui/dist/assets/{SelfProposalsPanel-lNmiDThB.js → SelfProposalsPanel-DKl9iBjM.js} +2 -2
  193. package/ui/dist/assets/SessionsPanel-BhRiWI_g.js +1 -0
  194. package/ui/dist/assets/{SessionsTab-JQbltWww.js → SessionsTab-Bk08wyeY.js} +1 -1
  195. package/ui/dist/assets/SettingsPanel-haLfmG2k.js +1 -0
  196. package/ui/dist/assets/SettingsView--gi3fxI8.js +2 -0
  197. package/ui/dist/assets/{SkeletonLoader-atQtpcF5.js → SkeletonLoader-B5v09EF_.js} +1 -1
  198. package/ui/dist/assets/{SkillsPanel-DlFs2ih7.js → SkillsPanel-BlAHFLcQ.js} +1 -1
  199. package/ui/dist/assets/SomaView-CExtS3zw.js +5 -0
  200. package/ui/dist/assets/{StatCard-DciE_Iqc.js → StatCard-BIsyMybM.js} +1 -1
  201. package/ui/dist/assets/{StatusBadge-BtfSPoW2.js → StatusBadge-D5nU7El8.js} +1 -1
  202. package/ui/dist/assets/Tabs-BBYZrBI8.js +1 -0
  203. package/ui/dist/assets/TeamsPanel-LPXJg823.js +1 -0
  204. package/ui/dist/assets/TelemetryPanel-EqpRBmOI.js +1 -0
  205. package/ui/dist/assets/TitanCanvas-BCbWnLMd.js +985 -0
  206. package/ui/dist/assets/ToolsView-CeP0Zz-N.js +2 -0
  207. package/ui/dist/assets/{Tooltip-70UK0E2I.js → Tooltip-BSO2XVpF.js} +1 -1
  208. package/ui/dist/assets/TraceViewer-BKI7o5B0.js +1 -0
  209. package/ui/dist/assets/TrainingPanel-c-RhjdE1.js +1 -0
  210. package/ui/dist/assets/VoiceOverlay-D-gc58b0.js +27 -0
  211. package/ui/dist/assets/VramPanel-C6xc7zgd.js +1 -0
  212. package/ui/dist/assets/{WatchView-C-sGFpVy.js → WatchView-dqBVCVH0.js} +1 -1
  213. package/ui/dist/assets/WorkTab-CBoLNrTM.js +1 -0
  214. package/ui/dist/assets/{WorkflowsPanel-CvgQU1xI.js → WorkflowsPanel-BAnSTOYe.js} +2 -2
  215. package/ui/dist/assets/approvalHeadline-DB9SgR-9.js +1 -0
  216. package/ui/dist/assets/{arrow-left-DwqHtJiU.js → arrow-left-5chqas7J.js} +1 -1
  217. package/ui/dist/assets/briefcase-D4vLzudp.js +6 -0
  218. package/ui/dist/assets/{chart-column-BtNO6sRy.js → chart-column-CdFlBpoP.js} +1 -1
  219. package/ui/dist/assets/check-Bpm1IONe.js +6 -0
  220. package/ui/dist/assets/chevron-down-D7OLjvuD.js +6 -0
  221. package/ui/dist/assets/chevron-right-aQEw2mUW.js +6 -0
  222. package/ui/dist/assets/chevron-up-C5g6pEj8.js +6 -0
  223. package/ui/dist/assets/{circle-check-big-DZRE_MbN.js → circle-check-big-fPhEdP88.js} +1 -1
  224. package/ui/dist/assets/clock-CTsgP_Sn.js +6 -0
  225. package/ui/dist/assets/{dollar-sign-aVG3a5eL.js → dollar-sign-CudFVYFc.js} +1 -1
  226. package/ui/dist/assets/{download-BxiWJU4G.js → download-DZRxDn67.js} +1 -1
  227. package/ui/dist/assets/external-link-BZ0y_Ahx.js +6 -0
  228. package/ui/dist/assets/{eye-off-CkgfFYhm.js → eye-off-BmJF0YYx.js} +1 -1
  229. package/ui/dist/assets/folder-DA43TRCm.js +11 -0
  230. package/ui/dist/assets/{funnel-PkLdxKyC.js → funnel-J3mULzrz.js} +1 -1
  231. package/ui/dist/assets/{git-branch-BM-Gw95X.js → git-branch-oHibJqDq.js} +1 -1
  232. package/ui/dist/assets/{index-D0RJ8701.css → index-BR0vfkIi.css} +1 -1
  233. package/ui/dist/assets/{index-CahJbWSR.js → index-DzwowwSI.js} +20 -20
  234. package/ui/dist/assets/{layers-BuGf4FIJ.js → layers-DsyEyu7z.js} +1 -1
  235. package/ui/dist/assets/{legacy-CR6o4t-y.js → legacy-8ITl64sV.js} +1 -1
  236. package/ui/dist/assets/{lightbulb-n8gc_XAL.js → lightbulb-C54Ske-p.js} +1 -1
  237. package/ui/dist/assets/list-todo-Cnd4rdoK.js +6 -0
  238. package/ui/dist/assets/loader-circle-1YOBsoQp.js +6 -0
  239. package/ui/dist/assets/network-DbGDAdrn.js +6 -0
  240. package/ui/dist/assets/{pause-DCV52koX.js → pause-CYhO_uQo.js} +1 -1
  241. package/ui/dist/assets/{play-CcJ9BnCh.js → play-DVY9c5Ck.js} +1 -1
  242. package/ui/dist/assets/{plug-CfWBXfCl.js → plug-BcXjlPUL.js} +1 -1
  243. package/ui/dist/assets/plus-Csu2v9GN.js +6 -0
  244. package/ui/dist/assets/{proxy-CzZDfLmm.js → proxy-DxS2_9D7.js} +1 -1
  245. package/ui/dist/assets/rotate-ccw-Co-_W04j.js +6 -0
  246. package/ui/dist/assets/save-Btx-kpoW.js +6 -0
  247. package/ui/dist/assets/search-0hXTwEZR.js +6 -0
  248. package/ui/dist/assets/send-TEpapzQR.js +6 -0
  249. package/ui/dist/assets/shield-check-DjBJXZUr.js +6 -0
  250. package/ui/dist/assets/{square-DJpUhlxi.js → square-OweUvjP-.js} +1 -1
  251. package/ui/dist/assets/{target-DWcmM_9m.js → target-BRW80Xer.js} +1 -1
  252. package/ui/dist/assets/terminal-BtiqJ628.js +16 -0
  253. package/ui/dist/assets/{toggle-right-YusFQ69L.js → toggle-right-CKtSrl28.js} +1 -1
  254. package/ui/dist/assets/{trash-2-CK7yQ55V.js → trash-2-DgWrHVax.js} +1 -1
  255. package/ui/dist/assets/{trending-up-DGjFyubC.js → trending-up-MpIrE4j6.js} +1 -1
  256. package/ui/dist/assets/{trophy-uQv_NgDB.js → trophy-CECuZNhX.js} +1 -1
  257. package/ui/dist/assets/users-dZgv4ePG.js +16 -0
  258. package/ui/dist/assets/wrench-CDz3xYve.js +11 -0
  259. package/ui/dist/index.html +2 -2
  260. package/ui/dist/assets/AutopilotPanel-DtEet1hJ.js +0 -1
  261. package/ui/dist/assets/BackupPanel-BGP8p3l3.js +0 -1
  262. package/ui/dist/assets/CPAgents-DYUtPzSq.js +0 -1
  263. package/ui/dist/assets/CPDashboard-Bf0-SyCh.js +0 -6
  264. package/ui/dist/assets/CPFiles-CxgxjQcO.js +0 -1
  265. package/ui/dist/assets/CPGoals-BsmCMTvT.js +0 -1
  266. package/ui/dist/assets/CPInbox-tMSbmQ9H.js +0 -11
  267. package/ui/dist/assets/ChannelsPanel-DP5C2OKd.js +0 -1
  268. package/ui/dist/assets/CheckpointsPanel-DlranVLZ.js +0 -1
  269. package/ui/dist/assets/CommandPostHub-BgxIa4Ev.js +0 -29
  270. package/ui/dist/assets/CronPanel-LoT5yKwJ.js +0 -1
  271. package/ui/dist/assets/DaemonPanel-DBGMqaE_.js +0 -1
  272. package/ui/dist/assets/EvalPanel-Bc33j0pN.js +0 -1
  273. package/ui/dist/assets/FleetPanel-CSsXuQYj.js +0 -1
  274. package/ui/dist/assets/InfraView-CR6HyrL6.js +0 -2
  275. package/ui/dist/assets/InlineEditableField-CnvF-yFR.js +0 -1
  276. package/ui/dist/assets/Input-GTHp2Rkr.js +0 -1
  277. package/ui/dist/assets/IntegrationsPanel-CymCRE3T.js +0 -1
  278. package/ui/dist/assets/IntelligenceView-C1IHxJRC.js +0 -2
  279. package/ui/dist/assets/LearningPanel-DOCES3lH.js +0 -1
  280. package/ui/dist/assets/LogsPanel-BLnAqEaZ.js +0 -1
  281. package/ui/dist/assets/McpPanel-ChUzmr3z.js +0 -1
  282. package/ui/dist/assets/MemoryWikiPanel-Dwk3Aqwd.js +0 -11
  283. package/ui/dist/assets/NvidiaPanel-CeZK_-CV.js +0 -1
  284. package/ui/dist/assets/OrganismPanel-BB6YOiQV.js +0 -1
  285. package/ui/dist/assets/OverviewPanel-BmtBhQnv.js +0 -1
  286. package/ui/dist/assets/PaperclipPanel-C-brgwA3.js +0 -1
  287. package/ui/dist/assets/RecipesPanel-34lCfynJ.js +0 -1
  288. package/ui/dist/assets/SecurityPanel-CBTPWLj6.js +0 -1
  289. package/ui/dist/assets/SelfImprovePanel-BrPbFHhG.js +0 -1
  290. package/ui/dist/assets/SessionsPanel-DAEYIn83.js +0 -1
  291. package/ui/dist/assets/SettingsPanel-CzRROAYQ.js +0 -1
  292. package/ui/dist/assets/SettingsView-CN7ii2uw.js +0 -2
  293. package/ui/dist/assets/SomaView-Ba642Oqb.js +0 -5
  294. package/ui/dist/assets/TeamsPanel-DKQ5z2Qe.js +0 -1
  295. package/ui/dist/assets/TelemetryPanel-B6KAc55Q.js +0 -1
  296. package/ui/dist/assets/TitanCanvas-C-s0A-lv.js +0 -1092
  297. package/ui/dist/assets/ToolsView-Dei0KMP0.js +0 -2
  298. package/ui/dist/assets/TraceViewer-BniolyBx.js +0 -1
  299. package/ui/dist/assets/TrainingPanel-Bz4CTPGW.js +0 -1
  300. package/ui/dist/assets/VoiceOverlay-CmNCrLcd.js +0 -37
  301. package/ui/dist/assets/VramPanel-Xh_OtRDR.js +0 -1
  302. package/ui/dist/assets/WorkTab-BjLNmgIK.js +0 -1
@@ -0,0 +1,76 @@
1
+ # Known Issues
2
+
3
+ > Bugs, broken things, workarounds, and suspicious behavior.
4
+ > Each entry is a typed memory.
5
+
6
+ ---
7
+
8
+ ## Issue: npm test appears to hang
9
+
10
+ - **type:** BUG
11
+ - **date:** 2026-05-03
12
+ - **source:** KIMI-COO observation
13
+ - **confidence:** high
14
+ - **verified_by:** `npx vitest run --reporter=basic` completed successfully
15
+ - **content:** Running `npm test` (which uses default vitest reporter) appears to hang with no output. Root cause: test suite takes ~181s to complete, and the default command timeout is too short. The tests are NOT broken — they just take ~3 minutes.
16
+ - **workaround:** Use `npx vitest run --reporter=basic` or wait longer. For fast feedback, run `npx vitest run tests/unit/` (~8s).
17
+ - **review_after:** 2026-05-10
18
+
19
+ ## Issue: Version mismatch between package.json and README
20
+
21
+ - **type:** BUG
22
+ - **date:** 2026-05-03
23
+ - **source:** KIMI-COO observation
24
+ - **confidence:** high
25
+ - **verified_by:** File read
26
+ - **content:** `package.json` says v5.5.3 but `README.md` says v5.4.3. Needs sync.
27
+ - **workaround:** None — cosmetic issue.
28
+ - **review_after:** Next release
29
+
30
+ ## Issue: MacBook repo 1 commit ahead of origin
31
+
32
+ - **type:** RISK
33
+ - **date:** 2026-05-03
34
+ - **source:** KIMI-COO observation
35
+ - **confidence:** high
36
+ - **verified_by:** `git status` and `git log`
37
+ - **content:** MacBook `TITAN-main` has commit `95fbb07` (handoff doc) not present on origin or Titan PC. Risk of divergence.
38
+ - **workaround:** Push the commit or reset to origin/main.
39
+ - **review_after:** Next session
40
+
41
+ ## Issue: titan-saas has uncommitted work on Titan PC
42
+
43
+ - **type:** RISK
44
+ - **date:** 2026-05-03
45
+ - **source:** KIMI-COO recon
46
+ - **confidence:** high
47
+ - **verified_by:** `ssh titan 'cd ~/titan-saas && git status'`
48
+ - **content:** Titan PC `~/titan-saas` has many modified files and untracked files. Risk of losing work if machine crashes or disk fails.
49
+ - **workaround:** Commit the work or decide to discard.
50
+ - **review_after:** Next session
51
+
52
+ ## Issue: titan-synapse has uncommitted work on MacBook
53
+
54
+ - **type:** RISK
55
+ - **date:** 2026-05-03
56
+ - **source:** KIMI-COO recon
57
+ - **confidence:** high
58
+ - **verified_by:** `git status` in titan-synapse folder
59
+ - **content:** MacBook `~/Desktop/titan-synapse` has uncommitted Rust/Python changes.
60
+ - **workaround:** Commit the work or decide to discard.
61
+ - **review_after:** Next session
62
+
63
+ ## Issue: Stale TITAN folders on Titan PC Desktop
64
+
65
+ - **type:** RISK
66
+ - **date:** 2026-05-03
67
+ - **source:** KIMI-COO recon
68
+ - **confidence:** medium
69
+ - **verified_by:** `ssh titan 'ls -la ~/Desktop/'`
70
+ - **content:** Titan PC Desktop has `TITAN`, `NewTitan22626`, `TITAN_GitHub`, `TITAN_Original_Project` — potentially stale copies that could confuse future work.
71
+ - **workaround:** Archive and delete after Tony confirms they're not needed.
72
+ - **review_after:** Next session
73
+
74
+ ---
75
+
76
+ *Last updated: 2026-05-03 by KIMI-COO 🧠*
@@ -0,0 +1,52 @@
1
+ # Reflections
2
+
3
+ > Failure → root cause → rule to remember.
4
+ > Each entry is a typed memory.
5
+
6
+ ---
7
+
8
+ ## Reflection: npm test "hang" was actually just slow
9
+
10
+ - **type:** REFLECTION
11
+ - **date:** 2026-05-03
12
+ - **context:** Running `npm test` on TITAN repo
13
+ - **what_failed:** Command appeared to hang with zero output. Had to SIGTERM kill it.
14
+ - **evidence:**
15
+ - First run: killed after ~2.5 min with no output
16
+ - Second run with verbose reporter: tests actually running, just taking time
17
+ - Final verification: `npx vitest run --reporter=basic` completed in 181.85s with 249 files passed, 6593 tests passed
18
+ - **root_cause:** Default command timeout was too short. TITAN's test suite loads 200+ modules and takes ~3 minutes to complete. The vitest fork pool with `--max-old-space-size=12288` takes time to initialize and run.
19
+ - **fix:** Use `npx vitest run --reporter=basic` for full suite, or `npx vitest run tests/unit/` for fast feedback (~8s).
20
+ - **verification:** ✅ Ran full suite successfully. 249 files, 6593 tests, 181.85s.
21
+ - **rule_to_remember:** "Tests hanging" on TITAN usually means "tests are slow, not broken." Always try verbose reporter and longer timeout before declaring a hang.
22
+ - **confidence:** high
23
+
24
+ ## Reflection: Previous agent's handoff was accurate
25
+
26
+ - **type:** REFLECTION
27
+ - **date:** 2026-05-03
28
+ - **context:** Doubting the handoff doc's claim of "249/249 passing"
29
+ - **what_failed:** My skepticism about the handoff doc's test claims.
30
+ - **evidence:** Handoff said 249/249 files passing. I found `npm test` hanging. But after investigation, tests DO pass exactly as claimed.
31
+ - **root_cause:** I assumed "hang" meant "broken" without sufficient evidence. The handoff was from the same day and the agent had actually run the tests.
32
+ - **fix:** Verify before doubting. Run the command with different flags to understand behavior.
33
+ - **verification:** ✅ Tests pass as claimed.
34
+ - **rule_to_remember:** Previous agent handoffs are usually accurate. Verify claims with evidence before assuming they're wrong.
35
+ - **confidence:** high
36
+
37
+ ## Reflection: Build is clean and fast
38
+
39
+ - **type:** REFLECTION
40
+ - **date:** 2026-05-03
41
+ - **context:** Uncertainty about whether MacBook could build TITAN
42
+ - **what_failed:** No evidence that `npm run build` worked on MacBook.
43
+ - **evidence:** `npm run build` completed in 371ms. `dist/cli/index.js` generated. `npm run typecheck` passed immediately.
44
+ - **root_cause:** Just hadn't tried it yet.
45
+ - **fix:** Run the build command.
46
+ - **verification:** ✅ Build and typecheck both pass.
47
+ - **rule_to_remember:** Don't assume the build is broken until you actually run it. TITAN's build is fast and reliable.
48
+ - **confidence:** high
49
+
50
+ ---
51
+
52
+ *Last updated: 2026-05-03 by KIMI-COO 🧠*
@@ -0,0 +1,80 @@
1
+ # Skill Candidates
2
+
3
+ > Workflows repeated 3+ times get drafted as skill candidates.
4
+ > Do not install or activate automatically. Save here for Tony review.
5
+
6
+ ---
7
+
8
+ ## Skill Candidate: TITAN Test Runner
9
+
10
+ - **trigger_count:** 2 (need 1 more to promote)
11
+ - **name:** titan-test-runner
12
+ - **purpose:** Run TITAN tests with correct flags for speed and reliability.
13
+ - **trigger_phrase:** "run TITAN tests" or "test TITAN" or "npm test"
14
+ - **inputs:** test_subset (optional: 'unit', 'full', or specific file)
15
+ - **steps:**
16
+ 1. Check if `vitest.config.ts` exists
17
+ 2. If unit subset: `npx vitest run --reporter=basic tests/unit/` (~8s)
18
+ 3. If full suite: `npx vitest run --reporter=basic` (~180s)
19
+ 4. If specific file: `npx vitest run --reporter=verbose <file>`
20
+ - **safety_limits:**
21
+ - Never run with `--no-parallel` unless debugging
22
+ - Use `--reporter=basic` to avoid output buffer issues
23
+ - Set timeout to 300s for full suite
24
+ - **commands:**
25
+ - `npx vitest run --reporter=basic tests/unit/`
26
+ - `npx vitest run --reporter=basic`
27
+ - **verification:** Check exit code 0 and "Test Files X passed" in output.
28
+ - **rollback:** N/A — test command is read-only.
29
+ - **requires_tony_approval:** no
30
+
31
+ ## Skill Candidate: TITAN Recon
32
+
33
+ - **trigger_count:** 1 (need 2 more to promote)
34
+ - **name:** titan-recon
35
+ - **purpose:** Map all TITAN-related folders, repos, and runtime data across machines.
36
+ - **trigger_phrase:** "where is TITAN" or "TITAN recon" or "find TITAN"
37
+ - **inputs:** machine (macbook, titan, or both)
38
+ - **steps:**
39
+ 1. Run `find ~ -maxdepth 4` with TITAN-related patterns
40
+ 2. Check `~/.gitnexus/registry.json`
41
+ 3. For each repo found: `git status`, `git branch`, `git remote -v`
42
+ 4. Check for `.titan` runtime folders
43
+ 5. Look for marketing/docs files in home dir
44
+ - **safety_limits:**
45
+ - Exclude `node_modules`, `.git`, `.ssh`, keychain folders
46
+ - Never print secrets
47
+ - Read-only only
48
+ - **commands:**
49
+ - `find ~ -maxdepth 4 \( -iname "*titan*" -o -iname "*gitnexus*" \) ...`
50
+ - `cat ~/.gitnexus/registry.json`
51
+ - **verification:** Produces list of paths with git status for each.
52
+ - **rollback:** N/A — read-only.
53
+ - **requires_tony_approval:** no
54
+
55
+ ## Skill Candidate: Repo Sync Check
56
+
57
+ - **trigger_count:** 1 (need 2 more to promote)
58
+ - **name:** titan-sync-check
59
+ - **purpose:** Compare MacBook and Titan PC repo states before syncing.
60
+ - **trigger_phrase:** "are we in sync" or "check sync" or "compare repos"
61
+ - **inputs:** repo_path_macbook, repo_path_titan_pc
62
+ - **steps:**
63
+ 1. Get MacBook: `git log --oneline -5`, `git status`
64
+ 2. Get Titan PC via ssh: `git log --oneline -5`, `git status`
65
+ 3. Compare commit hashes
66
+ 4. Check for uncommitted changes on both
67
+ 5. Report divergence
68
+ - **safety_limits:**
69
+ - Read-only only
70
+ - Never push or pull without approval
71
+ - **commands:**
72
+ - `git log --oneline --graph --left-right --decorate origin/main...HEAD`
73
+ - `ssh titan 'cd /opt/TITAN && git log --oneline -5 && git status'`
74
+ - **verification:** Produces clear divergence report.
75
+ - **rollback:** N/A — read-only.
76
+ - **requires_tony_approval:** no
77
+
78
+ ---
79
+
80
+ *Last updated: 2026-05-03 by KIMI-COO 🧠*
@@ -0,0 +1,256 @@
1
+ # TITAN v5.4.5 — Comprehensive Codebase Audit Report
2
+
3
+ > Generated from GitNexus knowledge graph analysis
4
+ > Date: 2026-04-29
5
+ > Commit: `7f5a6b7` (v5.4.5)
6
+
7
+ ---
8
+
9
+ ## Executive Summary
10
+
11
+ | Metric | Value | Risk |
12
+ |---|---|---|
13
+ | Total symbols | 29,559 | — |
14
+ | Gateway inline routes | **406** (was ~500+ before v5.4.5) | **HIGH** |
15
+ | Duplicate function names | 24× `ensureDir`, 23× `main` | **MEDIUM** |
16
+ | init/start/stop functions | 94 lifecycle functions across 37 files | **HIGH** |
17
+ | Widget compiler CDN dep | Loads Babel from unpkg.com | **CRITICAL** |
18
+ | Test-to-source ratio | 64% (248 tests / 383 source) | **MEDIUM** |
19
+ | UI/Server shared files | 10 files crossing boundary | **MEDIUM** |
20
+
21
+ ---
22
+
23
+ ## CRITICAL Issues
24
+
25
+ ### C1: Widget Compiler Loads Remote Babel CDN
26
+
27
+ **File:** `ui/src/space-agent/widgetCompiler.ts:12`
28
+ **Code:**
29
+ ```typescript
30
+ script.src = 'https://unpkg.com/@babel/standalone@7.26.0/babel.min.js';
31
+ ```
32
+
33
+ **Problem:** The `SandboxRuntime.ts` (lines 26-28) already loads React, ReactDOM, and Babel from **local paths** (`/react.development.js`, `/react-dom.development.js`, `/babel.min.js`). But the separate `widgetCompiler.ts` for the space-agent canvas loads Babel from a **third-party CDN**.
34
+
35
+ **Impact:**
36
+ - Offline/air-gapped deployments break completely
37
+ - Supply chain attack vector (unpkg.com compromise)
38
+ - Version drift (unpkg may serve a different patch than the self-hosted file)
39
+ - DNS/routing failure in restricted networks
40
+
41
+ **Fix:** Change to `script.src = '/babel.min.js';` to match the sandbox.
42
+
43
+ ---
44
+
45
+ ### C2: Gateway Still Monolithic (406 Inline Routes)
46
+
47
+ After extracting 4 sub-routers in v5.4.5, `src/gateway/server.ts` still contains **406 inline route handlers**. The largest remaining blocks:
48
+
49
+ | Route Prefix | Count | Status |
50
+ |---|---|---|
51
+ | `/api/command-post/*` | 64 | **NOT EXTRACTED** |
52
+ | `/api/voice/*` | 17 | NOT EXTRACTED |
53
+ | `/api/sessions/*` | 16 | NOT EXTRACTED |
54
+ | `/api/teams/*` | 14 | NOT EXTRACTED |
55
+ | `/api/files/*` | 12 | NOT EXTRACTED |
56
+ | `/api/goals/*` | 10 | NOT EXTRACTED |
57
+ | `/api/organism/*` | 9 | NOT EXTRACTED |
58
+ | `/api/mesh/*` | 9 | NOT EXTRACTED |
59
+ | `/api/drivers/*` | 9 | NOT EXTRACTED |
60
+ | `/api/tests/*` | 8 | NOT EXTRACTED |
61
+ | `/api/recipes/*` | 8 | NOT EXTRACTED |
62
+ | ... | ... | ... |
63
+
64
+ **Problem:** `startGateway()` is a 9,623-line function. It handles HTTP routes, WebSocket upgrades, auth, rate limiting, proxying, static serving, health checks, LLM request throttling, and shutdown — all in one file. This is the single biggest architectural risk in TITAN.
65
+
66
+ **Impact:**
67
+ - Any bug in one route can crash the entire gateway
68
+ - Impossible to unit test individual route groups
69
+ - No route-level middleware isolation
70
+ - Code review is impractical (10,000+ lines)
71
+
72
+ **Fix Priority:**
73
+ 1. Extract `/api/command-post/*` (64 routes) — highest impact
74
+ 2. Extract `/api/voice/*` and `/api/sessions/*`
75
+ 3. Extract static/admin routes
76
+
77
+ ---
78
+
79
+ ### C3: No Unified Lifecycle Manager (94 Lifecycle Functions)
80
+
81
+ 45 `init*` functions across 37 files:
82
+ ```
83
+ initPool, initWakeupSystem, initAlerts, initAuditStore, initChecklist,
84
+ initAutopilot, initCommandPost, initDaemon, initHeartbeatScheduler,
85
+ initMonitors, initAgents, initBudget, initShadowRepo, initSoulState,
86
+ initOtel, initSlashCommands, initMcpServers, initGraph, initIdentity,
87
+ initLearning, initMemory, initVectors, initPlugins, initProviders,
88
+ initVault, initCronScheduler, initFileWatchers, initPopulation,
89
+ initModelSwitchTool, initPromptFiles, initBenchmarks, initProviders,
90
+ initWebBrowserTool, initPersistentWebhooks, initDevSkills, initNvidiaSkills,
91
+ initBuiltinSkills, initFileLogger, initVRAMOrchestrator, initWebGL,
92
+ initBuffers, initShaders, init, initSession
93
+ ```
94
+
95
+ 49 start/stop function pairs but no central registry:
96
+ ```
97
+ startGateway ↔ stopGateway
98
+ startPaperclip ↔ stopPaperclip
99
+ startAutopilot ↔ stopAutopilot
100
+ startDaemon ↔ stopDaemon
101
+ startBridge ↔ stopBridge
102
+ startF5TTSHandler ↔ stopF5TTSHandler
103
+ startMonitor ↔ stopMonitor
104
+ startTunnel ↔ stopTunnel
105
+ startHeartbeat ↔ stopHeartbeat
106
+ startDiscovery ↔ stopDiscovery
107
+ ...
108
+ ```
109
+
110
+ **Problem:** `gracefulShutdown()` in `server.ts` closes the HTTP server and cleans intervals, but it does NOT:
111
+ - Stop the F5-TTS Python server (leaked process)
112
+ - Stop Paperclip sidecar (leaked child process)
113
+ - Stop mesh transport heartbeats (hanging WebSockets)
114
+ - Flush pending analytics events to PostHog
115
+ - Unload GPU VRAM leases
116
+ - Terminate the `TitanAgentBridge` Python process (new in v5.4.5)
117
+
118
+ **Impact:** Restarting TITAN on Titan PC with `pkill -f 'node dist/cli/index.js gateway'` leaves 3-5 zombie Python processes per restart. Over days this exhausts RAM.
119
+
120
+ **Fix:** Create a `LifecycleManager` that registers all startables and shuts them down in reverse dependency order.
121
+
122
+ ---
123
+
124
+ ## HIGH Issues
125
+
126
+ ### H1: Duplicate Function Names Break Traces
127
+
128
+ | Function | Count | Files |
129
+ |---|---|---|
130
+ | `ensureDir` | 24 | utils, memory, testing, safety, skills |
131
+ | `main` | 23 | scripts, tests, examples, server |
132
+ | `timeSince` | 20 | utils, ui, gateway |
133
+ | `load` | 16 | storage, config, memory, examples |
134
+ | `handler` | 14 | channels, gateway, mcp |
135
+ | `timeAgo` | 11 | ui, gateway |
136
+ | `register` | 10 | skills, channels, agent |
137
+ | `handleDelete` | 9 | ui, gateway |
138
+ | `makeConfig` | 8 | config, testing |
139
+ | `__init__` | 8 | python voice files |
140
+
141
+ **Problem:** GitNexus Process traces use function names as step labels. When 24 functions are all named `ensureDir`, the trace is `init → ensureDir → ensureDir → ensureDir` — useless for debugging. Impact analysis also fails because it can't determine WHICH `ensureDir` is being called.
142
+
143
+ **Fix:**
144
+ - Rename utility `ensureDir` to `mkdirIfNotExists`
145
+ - Rename script `main` to descriptive names (`runStressTest`, `startF5TTSServer`)
146
+ - Add `--name` uniqueness check to GitNexus analyzer
147
+
148
+ ---
149
+
150
+ ### H2: UI/Server Boundary Violations
151
+
152
+ Files imported by both frontend UI and backend server:
153
+
154
+ | File | Imported By Server? | Imported By UI? | Risk |
155
+ |---|---|---|---|
156
+ | `ui/src/space-agent/widgetCompiler.ts` | **YES** (types path) | YES | `document` API in node build |
157
+ | `ui/src/space-agent/useCanvasSSE.ts` | **YES** (types path) | YES | Hooks in server bundle |
158
+ | `ui/src/titan2/types.ts` | **YES** (gateway server) | YES | UI types leaked to server |
159
+
160
+ **Problem:** `server.ts` imports `../agent/company.js` but the graph shows it also pulls in UI-side modules through shared type paths. This bloats the server bundle and can cause runtime crashes when UI-only APIs (like `document`) are called server-side.
161
+
162
+ **Fix:** Create a `shared/types.ts` file for server-safe types only. Move UI-only types back to `ui/src/`.
163
+
164
+ ---
165
+
166
+ ### H3: Test Suite Unreliable at Scale
167
+
168
+ | Metric | Value |
169
+ |---|---|
170
+ | Test files | 248 |
171
+ | Total test lines | 88,289 |
172
+ | Source files | 383 |
173
+ | Test-to-source ratio | 64% |
174
+ | Tests excluded in CI | 1 (agent.test.ts — OOMs at >7GB) |
175
+ | Vitest heap (local) | 12 GB |
176
+ | Vitest heap (CI) | 4 GB |
177
+
178
+ **Problem:** The full suite times out or OOMs on CI. The workaround is to exclude heavy tests, which means CI doesn't actually test the full module graph. This creates a blind spot where refactoring `src/agent/agent.js` or `src/agent/agentLoop.ts` can break production without CI catching it.
179
+
180
+ **Fix:**
181
+ - Split `agent.test.ts` into unit tests (no module graph reload) and integration tests (mock providers)
182
+ - Add shard count detection: if CI runner has <8GB RAM, skip heavy tests automatically
183
+ - Run heavy tests nightly instead of per-PR
184
+
185
+ ---
186
+
187
+ ## MEDIUM Issues
188
+
189
+ ### M1: Gateway Route Count Still Growing
190
+
191
+ Before v5.4.5: ~500 inline routes
192
+ After v5.4.5: **406 inline routes** (only 94 extracted)
193
+
194
+ At the current pace (~4 routes extracted per release), it'll take 100+ releases to fully decompose the gateway. The `command-post` block (64 routes) alone should be a priority — it's larger than the entire extracted paperclip router.
195
+
196
+ ### M2: Voice Bridge Process Leak Risk
197
+
198
+ The new `TitanAgentBridge` in v5.4.5 spawns a Python child process but:
199
+ - No process timeout (30s only for audio processing)
200
+ - No automatic cleanup on parent crash
201
+ - No PID tracking file
202
+ - Python process is not in `gracefulShutdown()`
203
+
204
+ If the Node gateway crashes, the Python voice agent becomes an orphan. Over time, these accumulate and cause the "Vitest OOM" symptom in production (not just tests).
205
+
206
+ ### M3: Gateway Has 9,623 Lines in Single Function
207
+
208
+ `startGateway()` is the longest function in the graph:
209
+ ```
210
+ Function: startGateway | src/gateway/server.ts | LOC: 9623
211
+ ```
212
+
213
+ This is 15× longer than the second-longest function (`getMissionControlHTML` at 3,286 lines). No single function should exceed 500 lines — the cognitive load for maintainers is too high.
214
+
215
+ ### M4: Caddyfile Has Hardcoded Configs
216
+
217
+ `Caddyfile` in repo root uses hardcoded port `:48420` and auth tokens. If TITAN needs to run on a different port or domain, this file must be manually edited and isn't templated.
218
+
219
+ ---
220
+
221
+ ## Recommended Fix Order
222
+
223
+ Based on blast radius, user impact, and GitNexus traceability:
224
+
225
+ | Priority | Issue | Effort | Impact |
226
+ |---|---|---|---|
227
+ | P0 | C1: Fix widgetCompiler.ts CDN → `/babel.min.js` | 1 line | **CRITICAL** — offline deployments break |
228
+ | P0 | C3: Add LifecycleManager for shutdown | 1 file | **CRITICAL** — zombie processes on Titan PC |
229
+ | P1 | C2: Extract `/api/command-post/*` (64 routes) | 200 lines | **HIGH** — largest route block |
230
+ | P1 | H1: Rename duplicate `ensureDir`/`main` | 50 files | **HIGH** — fixes GitNexus traces |
231
+ | P2 | H2: Separate UI/server types | 5 files | **MEDIUM** — prevents node/browser API leaks |
232
+ | P2 | M2: Add Python child process cleanup | 20 lines | **MEDIUM** — prevents memory leaks |
233
+ | P3 | H3: Split agent.test.ts into unit + integration | 1 file | **MEDIUM** — enables CI coverage |
234
+ | P3 | C2: Extract voice/sessions/teams routers | 3 files | **LOW** — already have pattern from paperclip |
235
+
236
+ ---
237
+
238
+ ## Appendix: Useful GitNexus Queries for Ongoing Monitoring
239
+
240
+ ```bash
241
+ # Monitor gateway route count (should decrease over releases)
242
+ npm run gitnexus:cypher "MATCH (r:Route) RETURN COUNT(r)"
243
+
244
+ # Monitor function growth (should stay flat or decrease)
245
+ npm run gitnexus:cypher "MATCH (f:Function) RETURN COUNT(f)"
246
+
247
+ # Find new lifecycle functions added without cleanup
248
+ npm run gitnexus:cypher "MATCH (f:Function) WHERE f.name STARTS WITH 'start' AND NOT EXISTS { (f2:Function {name: REPLACE(f.name,'start','stop')}) } RETURN f.name, f.filePath"
249
+
250
+ # Find files crossing UI/server boundary
251
+ npm run gitnexus:cypher "MATCH (f:File) WHERE f.filePath CONTAINS 'ui/src/' AND EXISTS { (f2:File)-[:{type:'IMPORTS'}]->(f) WHERE f2.filePath CONTAINS 'src/' AND NOT f2.filePath CONTAINS 'ui/' } RETURN f.name, f.filePath"
252
+ ```
253
+
254
+ ---
255
+
256
+ *Report generated by OpenCode using GitNexus knowledge graph (29,559 symbols, 50,352 edges, v5.4.5)*