titan-agent 6.5.3 → 7.1.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 (411) hide show
  1. package/README.md +200 -47
  2. package/assets/agent-skills/NOTICE-ECC.md +39 -0
  3. package/assets/agent-skills/agent-introspection-debugging/SKILL.md +153 -0
  4. package/assets/agent-skills/continuous-agent-loop/SKILL.md +45 -0
  5. package/assets/agent-skills/continuous-learning/SKILL.md +131 -0
  6. package/assets/agent-skills/continuous-learning/config.json +18 -0
  7. package/assets/agent-skills/continuous-learning/evaluate-session.sh +69 -0
  8. package/assets/agent-skills/production-audit/SKILL.md +206 -0
  9. package/assets/agent-skills/recursive-decision-ledger/SKILL.md +79 -0
  10. package/assets/agent-skills/scientific-thinking-literature-review/SKILL.md +192 -0
  11. package/assets/agent-skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  12. package/assets/agent-skills/verification-loop/SKILL.md +126 -0
  13. package/dist/agent/agent.js +104 -29
  14. package/dist/agent/agent.js.map +1 -1
  15. package/dist/agent/agentLoop.js +6 -2
  16. package/dist/agent/agentLoop.js.map +1 -1
  17. package/dist/agent/autoModeClassifier.js +26 -2
  18. package/dist/agent/autoModeClassifier.js.map +1 -1
  19. package/dist/agent/contextManager.js +1 -1
  20. package/dist/agent/contextManager.js.map +1 -1
  21. package/dist/agent/goalDriver.js +2 -0
  22. package/dist/agent/goalDriver.js.map +1 -1
  23. package/dist/agent/goalSpec.js +229 -0
  24. package/dist/agent/goalSpec.js.map +1 -0
  25. package/dist/agent/heartbeat.js +130 -0
  26. package/dist/agent/heartbeat.js.map +1 -0
  27. package/dist/agent/missionDecompose.js +38 -0
  28. package/dist/agent/missionDecompose.js.map +1 -0
  29. package/dist/agent/muscleMemory.js +291 -0
  30. package/dist/agent/muscleMemory.js.map +1 -0
  31. package/dist/agent/observationWriter.js +56 -0
  32. package/dist/agent/observationWriter.js.map +1 -0
  33. package/dist/agent/promptSectionCaps.js +6 -0
  34. package/dist/agent/promptSectionCaps.js.map +1 -1
  35. package/dist/agent/reminders.js +101 -0
  36. package/dist/agent/reminders.js.map +1 -0
  37. package/dist/agent/systemWidgets.js +41 -0
  38. package/dist/agent/systemWidgets.js.map +1 -0
  39. package/dist/agent/toolRunner.js +24 -0
  40. package/dist/agent/toolRunner.js.map +1 -1
  41. package/dist/agent/toolSearch.js +12 -2
  42. package/dist/agent/toolSearch.js.map +1 -1
  43. package/dist/channels/messenger.js +39 -0
  44. package/dist/channels/messenger.js.map +1 -1
  45. package/dist/config/config.js +7 -0
  46. package/dist/config/config.js.map +1 -1
  47. package/dist/config/schema.js +36 -1
  48. package/dist/config/schema.js.map +1 -1
  49. package/dist/eval/harness.js +17 -4
  50. package/dist/eval/harness.js.map +1 -1
  51. package/dist/gateway/onboarding.js +91 -0
  52. package/dist/gateway/onboarding.js.map +1 -0
  53. package/dist/gateway/routes/skills.js +2 -1
  54. package/dist/gateway/routes/skills.js.map +1 -1
  55. package/dist/gateway/routes/studioRouter.js +88 -0
  56. package/dist/gateway/routes/studioRouter.js.map +1 -0
  57. package/dist/gateway/routes/watchRouter.js +4 -4
  58. package/dist/gateway/routes/watchRouter.js.map +1 -1
  59. package/dist/gateway/server.js +270 -46
  60. package/dist/gateway/server.js.map +1 -1
  61. package/dist/gateway/slashCommands.js +31 -0
  62. package/dist/gateway/slashCommands.js.map +1 -1
  63. package/dist/mcp/agentTools.js +135 -0
  64. package/dist/mcp/agentTools.js.map +1 -0
  65. package/dist/mcp/server.js +19 -2
  66. package/dist/mcp/server.js.map +1 -1
  67. package/dist/memory/graph.js +2 -0
  68. package/dist/memory/graph.js.map +1 -1
  69. package/dist/memory/taxonomy.js +117 -0
  70. package/dist/memory/taxonomy.js.map +1 -0
  71. package/dist/providers/errorTaxonomy.js +4 -0
  72. package/dist/providers/errorTaxonomy.js.map +1 -1
  73. package/dist/providers/moa.js +151 -0
  74. package/dist/providers/moa.js.map +1 -0
  75. package/dist/providers/modelCapabilities.js +78 -2
  76. package/dist/providers/modelCapabilities.js.map +1 -1
  77. package/dist/providers/ollama.js +9 -2
  78. package/dist/providers/ollama.js.map +1 -1
  79. package/dist/providers/openai.js +1 -1
  80. package/dist/providers/openai.js.map +1 -1
  81. package/dist/providers/openai_compat.js +52 -4
  82. package/dist/providers/openai_compat.js.map +1 -1
  83. package/dist/providers/router.js +16 -0
  84. package/dist/providers/router.js.map +1 -1
  85. package/dist/recipes/runner.js +8 -1
  86. package/dist/recipes/runner.js.map +1 -1
  87. package/dist/recipes/store.js +2 -1
  88. package/dist/recipes/store.js.map +1 -1
  89. package/dist/skills/builtin/codebase_explore.js +214 -0
  90. package/dist/skills/builtin/codebase_explore.js.map +1 -0
  91. package/dist/skills/builtin/config_audit.js +160 -0
  92. package/dist/skills/builtin/config_audit.js.map +1 -0
  93. package/dist/skills/builtin/delegate_agent.js +107 -0
  94. package/dist/skills/builtin/delegate_agent.js.map +1 -0
  95. package/dist/skills/builtin/memory_map.js +38 -0
  96. package/dist/skills/builtin/memory_map.js.map +1 -0
  97. package/dist/skills/builtin/reminders.js +67 -0
  98. package/dist/skills/builtin/reminders.js.map +1 -0
  99. package/dist/skills/builtin/spec.js +139 -0
  100. package/dist/skills/builtin/spec.js.map +1 -0
  101. package/dist/skills/builtin/widget_gallery.js +12 -5
  102. package/dist/skills/builtin/widget_gallery.js.map +1 -1
  103. package/dist/skills/frontmatterLoader.js +7 -1
  104. package/dist/skills/frontmatterLoader.js.map +1 -1
  105. package/dist/skills/registry.js +12 -0
  106. package/dist/skills/registry.js.map +1 -1
  107. package/dist/substrate/traceBus.js.map +1 -1
  108. package/dist/telemetry/traceStore.js +127 -0
  109. package/dist/telemetry/traceStore.js.map +1 -0
  110. package/dist/utils/benchMode.js +8 -0
  111. package/dist/utils/benchMode.js.map +1 -0
  112. package/dist/utils/constants.js +1 -1
  113. package/dist/utils/constants.js.map +1 -1
  114. package/dist/utils/contrast.js +69 -0
  115. package/dist/utils/contrast.js.map +1 -0
  116. package/dist/watch/sessionContext.js +14 -0
  117. package/dist/watch/sessionContext.js.map +1 -0
  118. package/dist/watch/sessionTrace.js +51 -0
  119. package/dist/watch/sessionTrace.js.map +1 -0
  120. package/dist/watch/studioBuffer.js +53 -0
  121. package/dist/watch/studioBuffer.js.map +1 -0
  122. package/package.json +29 -28
  123. package/ui/dist/assets/AboutYouMemory-57X5SqHQ.js +1 -0
  124. package/ui/dist/assets/AuditPanel-AyB8ciLZ.js +1 -0
  125. package/ui/dist/assets/AutonomyPanel-wmVPr-n3.js +1 -0
  126. package/ui/dist/assets/AutopilotPanel-CbLy4lJP.js +1 -0
  127. package/ui/dist/assets/AutoresearchPanel-DxRO1rBF.js +1 -0
  128. package/ui/dist/assets/BackupPanel-BUh9rQ-3.js +1 -0
  129. package/ui/dist/assets/BrowserPanel-OqKwGrIL.js +1 -0
  130. package/ui/dist/assets/CPActivity-DGfS7EY3.js +1 -0
  131. package/ui/dist/assets/CPAgentDetail-p0Kvzhhb.js +1 -0
  132. package/ui/dist/assets/CPAgents-B6wSSQZM.js +1 -0
  133. package/ui/dist/assets/CPApprovals-CYv9Do0i.js +1 -0
  134. package/ui/dist/assets/CPCosts-Dx6Q71rN.js +1 -0
  135. package/ui/dist/assets/CPDashboard-DA8-tE-l.js +1 -0
  136. package/ui/dist/assets/CPFiles-BJ49tzai.js +1 -0
  137. package/ui/dist/assets/CPGoals-h0dKL5V_.js +1 -0
  138. package/ui/dist/assets/CPInbox-CDvefgNH.js +1 -0
  139. package/ui/dist/assets/CPIssueDetail-CnmLzzDD.js +1 -0
  140. package/ui/dist/assets/CPIssues-DknAIMyl.js +1 -0
  141. package/ui/dist/assets/CPLayout-C2nqgkmY.js +2 -0
  142. package/ui/dist/assets/CPOrg-tDbHFphX.js +1 -0
  143. package/ui/dist/assets/CPRuns-UlrIURqG.js +1 -0
  144. package/ui/dist/assets/CPSocial-B-gHgvEw.js +1 -0
  145. package/ui/dist/assets/CPVoice-CJy938ZF.js +1 -0
  146. package/ui/dist/assets/ChannelsPanel-DLbxg1zO.js +1 -0
  147. package/ui/dist/assets/CheckpointsPanel-BB6TT0aE.js +1 -0
  148. package/ui/dist/assets/CommandPostHub-fIslwU_t.js +2 -0
  149. package/ui/dist/assets/ConfirmDialog-6hcNjmAh.js +9 -0
  150. package/ui/dist/assets/CronPanel-DLpw3Y25.js +1 -0
  151. package/ui/dist/assets/DataTable-KVqtDzvP.js +1 -0
  152. package/ui/dist/assets/DreamPanel-lcMXpbEb.js +5 -0
  153. package/ui/dist/assets/EmptyState-D-Dg8B8r.js +1 -0
  154. package/ui/dist/assets/EvalHarnessPanel-BKzRiiQw.js +2 -0
  155. package/ui/dist/assets/EvalPanel-Dtodacmj.js +1 -0
  156. package/ui/dist/assets/FileViewer-DjcVKkO2.js +60 -0
  157. package/ui/dist/assets/FilesPanel-BI90Pplh.js +1 -0
  158. package/ui/dist/assets/FleetPanel-tr0wjAwr.js +1 -0
  159. package/ui/dist/assets/HomelabPanel-m8vMm5rE.js +1 -0
  160. package/ui/dist/assets/InfraView-3WriJnyE.js +2 -0
  161. package/ui/dist/assets/IntegrationsPanel-BmL70fOw.js +1 -0
  162. package/ui/dist/assets/IntelligenceView-BGVxCKD3.js +2 -0
  163. package/ui/dist/assets/LearningPanel-CrYLQ6eV.js +1 -0
  164. package/ui/dist/assets/LiveStudio-CnW3eZYF.js +2 -0
  165. package/ui/dist/assets/LogsPanel-DbShr4Ic.js +1 -0
  166. package/ui/dist/assets/McpPanel-uMYEsPI4.js +1 -0
  167. package/ui/dist/assets/MemoryGraphPanel-C7-Z8f0v.js +1 -0
  168. package/ui/dist/assets/MemoryTaxonomyPanel-KrxN8U1G.js +1 -0
  169. package/ui/dist/assets/MemoryWikiPanel-DI3q6IHC.js +1 -0
  170. package/ui/dist/assets/MeshPanel-D4-g2tlu.js +1 -0
  171. package/ui/dist/assets/MissionCanvas-D8cjakJe.js +61 -0
  172. package/ui/dist/assets/MissionChat-BvqCUf1E.js +3 -0
  173. package/ui/dist/assets/MissionLibrary-CZoJQ9WD.js +1 -0
  174. package/ui/dist/assets/MissionStart-CXCq-_AD.js +1 -0
  175. package/ui/dist/assets/NvidiaPanel-BfI1K5Pg.js +1 -0
  176. package/ui/dist/assets/OrganismPanel-B7Gm9pP-.js +1 -0
  177. package/ui/dist/assets/OverviewPanel-B9tKWRK2.js +1 -0
  178. package/ui/dist/assets/PageHeader-CH85uoZG.js +1 -0
  179. package/ui/dist/assets/PersonaProfilesPanel-BPi8fl-U.js +3 -0
  180. package/ui/dist/assets/PersonasPanel-Dwr7sycT.js +1 -0
  181. package/ui/dist/assets/PhoneDeskPanel-D7qc6wUI.js +1 -0
  182. package/ui/dist/assets/RecipesPanel-DcqPWRSU.js +1 -0
  183. package/ui/dist/assets/SecurityPanel-Bv_B9Ahf.js +1 -0
  184. package/ui/dist/assets/SelfImprovePanel-Ca4rGwEG.js +1 -0
  185. package/ui/dist/assets/SelfProposalsPanel-DteMSASq.js +1 -0
  186. package/ui/dist/assets/SessionsPanel-BdbbKTbL.js +1 -0
  187. package/ui/dist/assets/SessionsTab-BJipiVJs.js +1 -0
  188. package/ui/dist/assets/SettingsPanel-mV7ykOCc.js +1 -0
  189. package/ui/dist/assets/SettingsView-Bu_wYTT5.js +2 -0
  190. package/ui/dist/assets/SkeletonLoader-9H7QWa9E.js +1 -0
  191. package/ui/dist/assets/SkillsPanel-CHwX2kDR.js +1 -0
  192. package/ui/dist/assets/SomaView-Bpsm4ZW7.js +5 -0
  193. package/ui/dist/assets/SomaView-Dghh9om4.css +1 -0
  194. package/ui/dist/assets/StatCard-wmSgMAM3.js +1 -0
  195. package/ui/dist/assets/TeamsPanel-XJiHxdDX.js +1 -0
  196. package/ui/dist/assets/TelemetryPanel-_pmGVxpO.js +1 -0
  197. package/ui/dist/assets/TitanCanvas-Cb7KG80W.css +1 -0
  198. package/ui/dist/assets/TitanCanvas-CmLy7p2N.js +883 -0
  199. package/ui/dist/assets/ToolsView-PHizHZBx.js +2 -0
  200. package/ui/dist/assets/TraceViewer-CYAzIcfB.js +1 -0
  201. package/ui/dist/assets/TracesPanel-CRSN_dzK.js +1 -0
  202. package/ui/dist/assets/TrainingPanel-B9rcuMsV.js +1 -0
  203. package/ui/dist/assets/VoiceOverlay-BL_ns1ZA.js +7 -0
  204. package/ui/dist/assets/VramPanel-BNPQ06_9.js +1 -0
  205. package/ui/dist/assets/WatchView-BgAkNnur.js +13 -0
  206. package/ui/dist/assets/WorkTab-RRpPpEOg.js +1 -0
  207. package/ui/dist/assets/WorkflowBuilderPanel-BPHIH8pf.js +1 -0
  208. package/ui/dist/assets/WorkflowsPanel-DqtmT0NB.js +1 -0
  209. package/ui/dist/assets/approvalHeadline-BRg3ReTi.js +1 -0
  210. package/ui/dist/assets/archive-DcK9HrbE.js +1 -0
  211. package/ui/dist/assets/arrow-left-4c2FnES1.js +1 -0
  212. package/ui/dist/assets/book-open-Ds_yciQm.js +1 -0
  213. package/ui/dist/assets/bot-CWDCc265.js +1 -0
  214. package/ui/dist/assets/chart-column-hhZMdCgB.js +1 -0
  215. package/ui/dist/assets/chevron-right-A_pvnRh_.js +1 -0
  216. package/ui/dist/assets/circle-check-big-C-JUM7wb.js +1 -0
  217. package/ui/dist/assets/circle-stop-yZuG9ZAE.js +1 -0
  218. package/ui/dist/assets/clipboard-list-C2HUEjZc.js +1 -0
  219. package/ui/dist/assets/clock-DSPgndSD.js +1 -0
  220. package/ui/dist/assets/clsx-CjueKrWZ.js +1 -0
  221. package/ui/dist/assets/createLucideIcon-qnlrxww7.js +1 -0
  222. package/ui/dist/assets/database-C1SgHa8T.js +1 -0
  223. package/ui/dist/assets/dollar-sign-D9siqK91.js +1 -0
  224. package/ui/dist/assets/download-CJZWQNfV.js +1 -0
  225. package/ui/dist/assets/external-link-CpQLWKKE.js +1 -0
  226. package/ui/dist/assets/file-text-BbGTi-Po.js +1 -0
  227. package/ui/dist/assets/flask-conical-B1YVft4E.js +1 -0
  228. package/ui/dist/assets/folder-EbR-w2Mq.js +1 -0
  229. package/ui/dist/assets/funnel-D2Dkn8Pf.js +1 -0
  230. package/ui/dist/assets/git-branch-CQ2yNSzU.js +1 -0
  231. package/ui/dist/assets/git-pull-request-BxL5wlGX.js +1 -0
  232. package/ui/dist/assets/index-Cz8190xO.css +2 -0
  233. package/ui/dist/assets/index-WI-E4I3h.js +243 -0
  234. package/ui/dist/assets/jsx-runtime-B15e6lOy.js +1 -0
  235. package/ui/dist/assets/layers-BPu5SRjI.js +1 -0
  236. package/ui/dist/assets/legacy-BIzifT-t.js +3 -0
  237. package/ui/dist/assets/lightbulb-BY7CpMte.js +1 -0
  238. package/ui/dist/assets/link-VDQkrGJw.js +1 -0
  239. package/ui/dist/assets/list-todo-DfnNUV_T.js +1 -0
  240. package/ui/dist/assets/message-square-BpzrINHz.js +1 -0
  241. package/ui/dist/assets/mic-De6oZFaV.js +1 -0
  242. package/ui/dist/assets/missions-y-qg_f9b.js +1 -0
  243. package/ui/dist/assets/network-CM7y1ats.js +1 -0
  244. package/ui/dist/assets/pause-C4TDJSfA.js +1 -0
  245. package/ui/dist/assets/pencil-Dd_vzHE-.js +1 -0
  246. package/ui/dist/assets/play-9WxZWVHA.js +1 -0
  247. package/ui/dist/assets/plug-Dm25Wbrc.js +1 -0
  248. package/ui/dist/assets/plus-CHryCIkk.js +1 -0
  249. package/ui/dist/assets/radio-D-XnoAVu.js +1 -0
  250. package/ui/dist/assets/refresh-cw-Disd5wRB.js +1 -0
  251. package/ui/dist/assets/rotate-ccw-Cw1T2W1T.js +1 -0
  252. package/ui/dist/assets/save-DP7oNar2.js +1 -0
  253. package/ui/dist/assets/search-aNVcX-nv.js +1 -0
  254. package/ui/dist/assets/send-D7iQD57b.js +1 -0
  255. package/ui/dist/assets/server-DFfeYjoM.js +1 -0
  256. package/ui/dist/assets/settings-5NWXzgyY.js +1 -0
  257. package/ui/dist/assets/shared-DLz_Jtg3.js +1 -0
  258. package/ui/dist/assets/shield-check-Cd50jCAn.js +1 -0
  259. package/ui/dist/assets/square-DlcoJ1ZM.js +1 -0
  260. package/ui/dist/assets/terminal-DgFz2Vsf.js +1 -0
  261. package/ui/dist/assets/test-tube-BimtS92_.js +1 -0
  262. package/ui/dist/assets/toggle-right-BMaR-sfT.js +1 -0
  263. package/ui/dist/assets/trash-2-CwUv7ww1.js +1 -0
  264. package/ui/dist/assets/trending-up-Ba9TwEow.js +1 -0
  265. package/ui/dist/assets/trophy-Gfv1QC45.js +1 -0
  266. package/ui/dist/assets/volume-2-BVlfVl2U.js +1 -0
  267. package/ui/dist/assets/wifi-off-CWLeusSV.js +1 -0
  268. package/ui/dist/assets/zoom-out-DeggJ7RM.js +1 -0
  269. package/ui/dist/index.html +4 -2
  270. package/ui/dist/sw.js +1 -1
  271. package/ui/dist/assets/AuditPanel-BaftX5MP.js +0 -1
  272. package/ui/dist/assets/AutonomyPanel-CmaXJV8d.js +0 -11
  273. package/ui/dist/assets/AutopilotPanel-CbohPtXW.js +0 -1
  274. package/ui/dist/assets/AutoresearchPanel-DCwiQ2v2.js +0 -6
  275. package/ui/dist/assets/BackupPanel-DAy9G7Wt.js +0 -1
  276. package/ui/dist/assets/BrowserPanel-D6UaSxap.js +0 -6
  277. package/ui/dist/assets/CPActivity-BYDsUoMn.js +0 -1
  278. package/ui/dist/assets/CPAgentDetail-Bb9-GAJY.js +0 -1
  279. package/ui/dist/assets/CPAgents-BTZuGnki.js +0 -1
  280. package/ui/dist/assets/CPApprovals-BME2ARkO.js +0 -1
  281. package/ui/dist/assets/CPCosts-mOXwWq0i.js +0 -1
  282. package/ui/dist/assets/CPDashboard-CTlKGXXQ.js +0 -1
  283. package/ui/dist/assets/CPFiles-BO73EZwJ.js +0 -1
  284. package/ui/dist/assets/CPGoals-BNWhNP14.js +0 -1
  285. package/ui/dist/assets/CPInbox-ybe4r8LW.js +0 -16
  286. package/ui/dist/assets/CPIssueDetail-DaMMGbjw.js +0 -1
  287. package/ui/dist/assets/CPIssues-BgpQOISw.js +0 -1
  288. package/ui/dist/assets/CPLayout-bgErauTx.js +0 -2
  289. package/ui/dist/assets/CPOrg-C8l5SIWJ.js +0 -8
  290. package/ui/dist/assets/CPRuns-DB8S7loF.js +0 -1
  291. package/ui/dist/assets/CPSocial-Qw5rKy_4.js +0 -11
  292. package/ui/dist/assets/CPVoice-DfwHPewA.js +0 -1
  293. package/ui/dist/assets/ChannelsPanel-DS21E-Iz.js +0 -1
  294. package/ui/dist/assets/CheckpointsPanel-9-l_8GdG.js +0 -1
  295. package/ui/dist/assets/CommandPostHub-z55Yrhj1.js +0 -24
  296. package/ui/dist/assets/CronPanel-kEZK3gpx.js +0 -1
  297. package/ui/dist/assets/DataTable-PnhPeDBG.js +0 -1
  298. package/ui/dist/assets/DreamPanel-DIrtlk2K.js +0 -15
  299. package/ui/dist/assets/EmptyState-CfvU7SdB.js +0 -1
  300. package/ui/dist/assets/EvalHarnessPanel-uYb_ZEQG.js +0 -2
  301. package/ui/dist/assets/EvalPanel-CDG-njyj.js +0 -1
  302. package/ui/dist/assets/FileViewer-CVO3TRs3.js +0 -61
  303. package/ui/dist/assets/FilesPanel-CaLPog2e.js +0 -16
  304. package/ui/dist/assets/FleetPanel-BtlaV6pH.js +0 -1
  305. package/ui/dist/assets/HomelabPanel-BZvN4LPM.js +0 -6
  306. package/ui/dist/assets/InfraView-C0zEuFrR.js +0 -2
  307. package/ui/dist/assets/InlineEditableField-mBzpbcLB.js +0 -1
  308. package/ui/dist/assets/Input-CbrMbLgn.js +0 -1
  309. package/ui/dist/assets/IntegrationsPanel-B4TyR6jC.js +0 -1
  310. package/ui/dist/assets/IntelligenceView-DZ4HxYZ3.js +0 -2
  311. package/ui/dist/assets/LearningPanel-B4RIm_iQ.js +0 -1
  312. package/ui/dist/assets/LogsPanel-DbP3Mwnr.js +0 -1
  313. package/ui/dist/assets/McpPanel-BmNUFozc.js +0 -1
  314. package/ui/dist/assets/MemoryGraphPanel-JPurHV0L.js +0 -16
  315. package/ui/dist/assets/MemoryWikiPanel-DdvCAZHa.js +0 -6
  316. package/ui/dist/assets/MeshPanel-Bf-4brXL.js +0 -11
  317. package/ui/dist/assets/MissionCanvas-CJyhnauG.js +0 -72
  318. package/ui/dist/assets/MissionChat-C2Nto3zM.js +0 -7
  319. package/ui/dist/assets/MissionLibrary-RXyBHsLL.js +0 -5
  320. package/ui/dist/assets/MissionStart-wUkcEP0T.js +0 -1
  321. package/ui/dist/assets/Modal-BmS7C6FN.js +0 -1
  322. package/ui/dist/assets/NvidiaPanel-4DlcQlyl.js +0 -1
  323. package/ui/dist/assets/OrganismPanel-C2LYDPrn.js +0 -1
  324. package/ui/dist/assets/OverviewPanel-DK8uuq4D.js +0 -1
  325. package/ui/dist/assets/PageHeader-bnc85wQN.js +0 -1
  326. package/ui/dist/assets/PersonaProfilesPanel-DGtokXUu.js +0 -8
  327. package/ui/dist/assets/PersonasPanel-dR8VppcD.js +0 -1
  328. package/ui/dist/assets/PhoneDeskPanel-CdVOY7H9.js +0 -11
  329. package/ui/dist/assets/RecipesPanel-D3Zs2wxr.js +0 -1
  330. package/ui/dist/assets/SecurityPanel-BMERf796.js +0 -1
  331. package/ui/dist/assets/SelfImprovePanel-BxqWHXCU.js +0 -1
  332. package/ui/dist/assets/SelfProposalsPanel-CuC94vdx.js +0 -2
  333. package/ui/dist/assets/SessionsPanel-CQ8qvzp7.js +0 -1
  334. package/ui/dist/assets/SessionsTab-B3eHV3jf.js +0 -1
  335. package/ui/dist/assets/SettingsPanel-Cumls7N2.js +0 -1
  336. package/ui/dist/assets/SettingsView-BtA67pol.js +0 -2
  337. package/ui/dist/assets/SkeletonLoader-Cax7YTqW.js +0 -1
  338. package/ui/dist/assets/SkillsPanel-CA415CT8.js +0 -11
  339. package/ui/dist/assets/SomaView-BtCkeWfZ.css +0 -1
  340. package/ui/dist/assets/SomaView-eG3wI4S1.js +0 -5
  341. package/ui/dist/assets/StatCard-Djr487DV.js +0 -1
  342. package/ui/dist/assets/StatusBadge-JpCoA33_.js +0 -1
  343. package/ui/dist/assets/Tabs-DJHu-roP.js +0 -1
  344. package/ui/dist/assets/TeamsPanel-C_Vu6vnY.js +0 -1
  345. package/ui/dist/assets/TelemetryPanel-D4PXsd-X.js +0 -1
  346. package/ui/dist/assets/TitanCanvas-BfitWg9R.css +0 -1
  347. package/ui/dist/assets/TitanCanvas-TuYZSZO7.js +0 -1117
  348. package/ui/dist/assets/ToolsView-BvTN6vFn.js +0 -2
  349. package/ui/dist/assets/Tooltip-B1LhTXJ8.js +0 -6
  350. package/ui/dist/assets/TraceViewer-Bh8Jo3Dr.js +0 -1
  351. package/ui/dist/assets/TrainingPanel-Dmbd1rJ-.js +0 -1
  352. package/ui/dist/assets/VoiceOverlay-B_ss7Zg_.js +0 -17
  353. package/ui/dist/assets/VramPanel-CPICbZ2s.js +0 -1
  354. package/ui/dist/assets/WatchView-BCgLVfiV.js +0 -13
  355. package/ui/dist/assets/WorkTab-iptofXO9.js +0 -1
  356. package/ui/dist/assets/WorkflowsPanel-3RYkFHyf.js +0 -11
  357. package/ui/dist/assets/approvalHeadline-DB9SgR-9.js +0 -1
  358. package/ui/dist/assets/archive-gZFnGd5A.js +0 -6
  359. package/ui/dist/assets/arrow-left-qA0Qer2h.js +0 -6
  360. package/ui/dist/assets/book-open-DIxdPqmD.js +0 -6
  361. package/ui/dist/assets/bot-CvIF1uHi.js +0 -6
  362. package/ui/dist/assets/chart-column-BQiM-Td4.js +0 -6
  363. package/ui/dist/assets/check-DgyDEFtq.js +0 -6
  364. package/ui/dist/assets/chevron-right-CQ1NTOtd.js +0 -6
  365. package/ui/dist/assets/chevron-up-UyfdjRp6.js +0 -6
  366. package/ui/dist/assets/circle-check-big-CAFcaPPH.js +0 -6
  367. package/ui/dist/assets/circle-stop-C-8xGv0n.js +0 -6
  368. package/ui/dist/assets/clipboard-list-9DdqBj1F.js +0 -6
  369. package/ui/dist/assets/clock-CF9BCIpL.js +0 -6
  370. package/ui/dist/assets/clsx-B-dksMZM.js +0 -1
  371. package/ui/dist/assets/dollar-sign-LDRZBae6.js +0 -6
  372. package/ui/dist/assets/download-BBNXvBO0.js +0 -6
  373. package/ui/dist/assets/external-link-D_ji4Bec.js +0 -6
  374. package/ui/dist/assets/file-text-DrdTDEYp.js +0 -6
  375. package/ui/dist/assets/flask-conical-BGn5PgFX.js +0 -6
  376. package/ui/dist/assets/folder-BeZZUGnK.js +0 -6
  377. package/ui/dist/assets/funnel-CAJgGO5M.js +0 -6
  378. package/ui/dist/assets/git-branch-BcXabeOs.js +0 -6
  379. package/ui/dist/assets/index-CUgepw5Q.js +0 -337
  380. package/ui/dist/assets/index-Dm6zcSTS.css +0 -1
  381. package/ui/dist/assets/layers-DxYDmPA_.js +0 -6
  382. package/ui/dist/assets/legacy-dHWI7k8P.js +0 -3
  383. package/ui/dist/assets/lightbulb-B0Du4SM4.js +0 -6
  384. package/ui/dist/assets/link-CUpaumqr.js +0 -6
  385. package/ui/dist/assets/list-todo-CDDhmPQB.js +0 -6
  386. package/ui/dist/assets/message-square-D5VWlv-Q.js +0 -6
  387. package/ui/dist/assets/mic-Ddcc6Ann.js +0 -6
  388. package/ui/dist/assets/missions-2zox16Tc.js +0 -1
  389. package/ui/dist/assets/network-DaJ7ugwX.js +0 -6
  390. package/ui/dist/assets/pause-BukaK6rs.js +0 -6
  391. package/ui/dist/assets/pencil-D_YwQBeg.js +0 -6
  392. package/ui/dist/assets/play-BjdwtYMk.js +0 -6
  393. package/ui/dist/assets/plug-yISDdeW2.js +0 -6
  394. package/ui/dist/assets/plus-BSjTdepW.js +0 -6
  395. package/ui/dist/assets/proxy-CWET5FFX.js +0 -9
  396. package/ui/dist/assets/radio-B7kX_yWE.js +0 -6
  397. package/ui/dist/assets/refresh-cw-CwDpzXUn.js +0 -6
  398. package/ui/dist/assets/rotate-ccw-7SQDTI0_.js +0 -6
  399. package/ui/dist/assets/save-CjTPAQM0.js +0 -6
  400. package/ui/dist/assets/search-BP7VlNxX.js +0 -6
  401. package/ui/dist/assets/send-C2XDuRPf.js +0 -6
  402. package/ui/dist/assets/server-BE8W-AT4.js +0 -6
  403. package/ui/dist/assets/shield-check-s7la2J2K.js +0 -6
  404. package/ui/dist/assets/terminal-B8IK4WsO.js +0 -6
  405. package/ui/dist/assets/test-tube-Xfn9DJeg.js +0 -11
  406. package/ui/dist/assets/toggle-right-CHpzOIlj.js +0 -11
  407. package/ui/dist/assets/trash-2-B1C85ePK.js +0 -6
  408. package/ui/dist/assets/trending-up-DDGHQZY1.js +0 -6
  409. package/ui/dist/assets/trophy-D0LhJSPA.js +0 -6
  410. package/ui/dist/assets/volume-2-DMaE91b5.js +0 -6
  411. package/ui/dist/assets/wifi-off-DR9h8HGA.js +0 -6
@@ -1 +0,0 @@
1
- import{r as a,j as e,b as _,aB as we,i as ee,m as Ne,L as te,a8 as se,aC as Se,aD as ke,aE as Ce,aF as Ve,t as Ee,aG as Te,aH as ae,aI as Le,aJ as Ue,a9 as Pe}from"./index-CUgepw5Q.js";import"./Input-CbrMbLgn.js";import{P as re}from"./PageHeader-bnc85wQN.js";import{H as ce}from"./Tooltip-B1LhTXJ8.js";import{C as Ae}from"./circle-check-big-CAFcaPPH.js";import{M as B}from"./mic-Ddcc6Ann.js";import{R as Ie}from"./refresh-cw-CwDpzXUn.js";import{W as Me}from"./wifi-off-DR9h8HGA.js";import{D as Fe}from"./download-BBNXvBO0.js";import{P as $e}from"./play-BjdwtYMk.js";import{S as Re}from"./save-CjTPAQM0.js";import"./clsx-B-dksMZM.js";import"./chevron-right-CQ1NTOtd.js";const oe=[{id:"oak",label:"Oak",swatch:"linear-gradient(135deg, #6e4724, #482a13)"},{id:"walnut",label:"Walnut",swatch:"linear-gradient(135deg, #4a2e18, #2a1808)"},{id:"mahogany",label:"Mahogany",swatch:"linear-gradient(135deg, #5e2a1a, #38160c)"},{id:"white",label:"White",swatch:"linear-gradient(135deg, #f4f1ea, #ddd9ce)"}],H="titan-desk-theme";function Oe(){try{const r=localStorage.getItem(H);if(r==="oak"||r==="walnut"||r==="mahogany"||r==="white")return r}catch{}return"oak"}function De(r){try{localStorage.setItem(H,r)}catch{}}function _e({className:r}){const[f,p]=a.useState(Oe);a.useEffect(()=>{const n=h=>{if(h.key===H&&h.newValue){const x=h.newValue;oe.some(j=>j.id===x)&&p(x)}};return window.addEventListener("storage",n),()=>window.removeEventListener("storage",n)},[]);const C=a.useCallback(n=>{p(n),De(n),window.dispatchEvent(new CustomEvent("desk-theme",{detail:n}))},[]);return e.jsxs("div",{className:`flex items-center gap-2 ${r??""}`,children:[e.jsx("span",{className:"text-[10px] uppercase tracking-widest text-[#a89070]",children:"Desk"}),oe.map(n=>e.jsx("button",{type:"button",onClick:()=>C(n.id),title:n.label,className:`w-5 h-5 rounded-full border-2 transition-transform hover:scale-110 ${f===n.id?"border-[#c4a35a] scale-110":"border-transparent"}`,style:{background:n.swatch}},n.id))]})}const F=["ollama","lmstudio","localai"];function Be({ok:r}){return r?e.jsx("div",{className:"h-2 w-2 rounded-full bg-success shadow-[0_0_6px_rgba(34,197,94,0.4)]"}):e.jsx("div",{className:"h-2 w-2 rounded-full bg-border-light"})}function He({models:r,selectedModel:f,onSelect:p,onSwitch:C,currentModel:n}){const h=n.includes("/")?n.split("/")[0]:"",[x,j]=a.useState(h);a.useEffect(()=>{j(h)},[h]);const b=a.useMemo(()=>[...new Set(r.map(i=>i.provider))].sort((i,m)=>{const l=F.includes(i.toLowerCase()),k=F.includes(m.toLowerCase());return l&&!k?-1:!l&&k?1:i.localeCompare(m)}),[r]),S=a.useMemo(()=>r.filter(o=>o.provider===x),[r,x]),U=o=>{j(o);const i=r.filter(l=>l.provider===o),m=i.find(l=>l.id===n);m?p(m.id):i.length>0&&p(i[0].id)},$=f!==n,y=F.includes(x.toLowerCase());return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-1.5",children:[e.jsx("label",{className:"text-xs text-text-muted",children:"Provider"}),e.jsx(ce,{title:"AI Provider",description:"The company or service that hosts the AI model. Local providers (Ollama, LM Studio) run on your machine. Cloud providers (Anthropic, OpenAI) run remotely and require an API key."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[e.jsx("select",{value:x,onChange:o=>U(o.target.value),className:"w-full rounded-lg border border-border bg-bg px-3 py-2.5 text-sm text-text outline-none transition-colors focus:border-accent min-h-[44px]",children:b.map(o=>{const i=F.includes(o.toLowerCase()),m=r.filter(l=>l.provider===o).length;return e.jsxs("option",{value:o,children:[i?`💻 ${o} (local)`:o," — ",m," model",m!==1?"s":""]},o)})}),y&&e.jsxs("span",{className:"flex items-center gap-1 whitespace-nowrap rounded bg-success/15 px-2 py-1 text-xs font-medium text-success self-start mt-0.5 sm:self-auto sm:mt-0",children:[e.jsx(ke,{className:"h-3 w-3"})," Local"]}),!y&&x&&e.jsxs("span",{className:"flex items-center gap-1 whitespace-nowrap rounded bg-accent/15 px-2 py-1 text-xs font-medium text-accent-hover self-start mt-0.5 sm:self-auto sm:mt-0",children:[e.jsx(Ce,{className:"h-3 w-3"})," Cloud"]})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-1.5",children:[e.jsx("label",{className:"text-xs text-text-muted",children:"Model"}),e.jsx(ce,{title:"Model Selection",description:"The specific AI model TITAN uses to think and respond. Larger models are smarter but slower and cost more. You can switch anytime without losing conversation history."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-end gap-2 md:gap-3",children:[e.jsxs("select",{value:f,onChange:o=>p(o.target.value),className:"w-full rounded-lg border border-border bg-bg px-3 py-2.5 text-sm text-text outline-none transition-colors focus:border-accent min-h-[44px]",children:[S.map(o=>e.jsxs("option",{value:o.id,disabled:!o.available,children:[o.name,o.id===n?" (active)":"",o.available?"":" — unavailable"]},o.id)),S.length===0&&e.jsx("option",{disabled:!0,children:"No models for this provider"})]}),e.jsx("button",{onClick:C,disabled:!$,className:"rounded-lg bg-accent px-4 py-2.5 text-sm font-medium text-white transition-colors hover:bg-accent/80 disabled:opacity-50 min-h-[44px] w-full sm:w-auto active:scale-[0.98]",children:"Switch"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-bg px-3 py-2.5",children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-success animate-pulse flex-shrink-0"}),e.jsx("span",{className:"text-xs text-text-muted",children:"Active:"}),e.jsx("span",{className:"text-xs text-text-secondary font-mono overflow-x-auto scrollbar-thin",children:n||"None"})]})]})}function mt(){var X,Y,J;const[r,f]=a.useState(null),[p,C]=a.useState([]),[n,h]=a.useState(!0),[x,j]=a.useState(!1),[b,S]=a.useState(""),[U,$]=a.useState(null),[y,o]=a.useState(null),[i,m]=a.useState(!1),[l,k]=a.useState(""),[V,E]=a.useState("andrew"),[w,W]=a.useState("f5-tts"),[ne,q]=a.useState("http://localhost:5006"),[ie,T]=a.useState(["andrew"]),[We,qe]=a.useState(null),[Ke,ze]=a.useState(!1),[Ge,Qe]=a.useState(""),P=[{id:"f5-tts",name:"F5-TTS",desc:"Voice cloning with MLX (Apple Silicon)",defaultUrl:"http://localhost:5006",defaultVoices:["andrew"]}],[Xe,le]=a.useState(null),[de,Ye]=a.useState(!1),[xe,Je]=a.useState(""),[K,R]=a.useState([]),[z,G]=a.useState(!1),[v,me]=a.useState(null),[L,ue]=a.useState(null),[O,Q]=a.useState(!1),A=t=>{var s;return((s=t==null?void 0:t.agent)==null?void 0:s.model)??(t==null?void 0:t.model)??""};a.useEffect(()=>{(async()=>{try{const[s,c]=await Promise.all([se(),Se()]);f(s),C(c),S(A(s));const d=(s==null?void 0:s.voice)??{};m(d.enabled??!1),k(d.livekitUrl??""),E(d.ttsVoice??"andrew"),W(d.ttsEngine??"f5-tts"),q(d.ttsUrl??"http://localhost:5006")}catch(s){const c=s instanceof Error?s.message:"Failed to load config";$(c),u("error",c)}finally{h(!1)}})()},[]),a.useEffect(()=>{(async()=>{var t;try{const s=await _("/api/voice/voices");if(s.ok){const c=await s.json();(t=c.voices)!=null&&t.length&&T(c.voices)}}catch{}})()},[]);const D=async()=>{Q(!0);try{const[t,s]=await Promise.allSettled([_("/api/voice/health").then(c=>c.json()),_("/api/voice/status").then(c=>c.json())]);t.status==="fulfilled"&&me(t.value),s.status==="fulfilled"&&(ue(s.value),s.value.livekitUrl&&!l&&k(s.value.livekitUrl))}catch{}Q(!1)};a.useEffect(()=>{n||D()},[n]),a.useEffect(()=>{i&&we().then(t=>{var s;le({installed:t.installed,running:t.running,voices:t.voices}),R(t.voices.map(c=>({name:c,hasTranscript:!1,sizeBytes:0}))),(s=t.voices)!=null&&s.length&&T(["andrew",...t.voices])}).catch(()=>{})},[i]);const pe=async()=>{const t=document.createElement("input");t.type="file",t.accept="audio/wav,audio/mp3,audio/mpeg,audio/flac,.wav,.mp3,.flac",t.onchange=async()=>{var g;const s=(g=t.files)==null?void 0:g[0];if(!s)return;const c=prompt('Name this voice (e.g., "robin", "jarvis"):',s.name.replace(/\.[^.]+$/,""));if(!c)return;const d=prompt("(Optional) Transcript of the audio — improves cloning quality:","")||"";G(!0);try{const N=await s.arrayBuffer(),I=btoa(String.fromCharCode(...new Uint8Array(N))),M=await Te(c,I,d),je=M!=null&&M.duration?` Duration: ${M.duration}s,`:"";u("success",`Voice "${c}" uploaded!${je} preprocessed and normalized.`);const Z=await ae();R(Z.voices||[]),T(["default",...Z.voices.map(ye=>ye.name)]),E(c)}catch(N){u("error",N instanceof Error?N.message:"Failed to upload voice")}finally{G(!1)}},t.click()},he=async t=>{try{u("success",`Generating preview for "${t}"...`);const s=["Hello, how can I help you today?","I am ready to assist you with anything you need.","Good morning. It is a pleasure to be of service."],c=s[Math.floor(Math.random()*s.length)],d=await Le(t,c),g=new Blob([d],{type:"audio/wav"}),N=URL.createObjectURL(g),I=new Audio(N);I.onended=()=>URL.revokeObjectURL(N),I.play()}catch(s){u("error",s instanceof Error?s.message:"Failed to preview voice")}},be=async t=>{if(confirm(`Delete voice "${t}"?`))try{await Ue(t);const s=await ae();R(s.voices||[]),T(["andrew",...s.voices.map(c=>c.name)]),V===t&&E("default"),u("success",`Voice "${t}" deleted`)}catch(s){u("error",s instanceof Error?s.message:"Failed to delete voice")}},u=(t,s)=>{o({type:t,message:s}),setTimeout(()=>o(null),3e3)},ge=async()=>{if(!(!b||b===A(r??{})))try{const t=p.find(c=>c.id===b);await Ve(b,t==null?void 0:t.provider),Ee("model_switched",{model:b,provider:t==null?void 0:t.provider});const s=await se();f(s),S(A(s)),u("success",`Switched to ${b}`)}catch(t){u("error",t instanceof Error?t.message:"Failed to switch model")}},fe=async()=>{var t,s,c,d;j(!0);try{const g=await Pe({voice:{enabled:i,livekitUrl:l,ttsVoice:V,ttsEngine:w,ttsUrl:ne||"http://localhost:5005",sttUrl:((t=r==null?void 0:r.voice)==null?void 0:t.sttUrl)??"http://localhost:48421",livekitApiKey:((s=r==null?void 0:r.voice)==null?void 0:s.livekitApiKey)??"",livekitApiSecret:((c=r==null?void 0:r.voice)==null?void 0:c.livekitApiSecret)??"",agentUrl:((d=r==null?void 0:r.voice)==null?void 0:d.agentUrl)??""}});f(g),u("success","Settings saved"),i&&D()}catch(g){u("error",g instanceof Error?g.message:"Failed to save settings")}finally{j(!1)}};if(n)return e.jsx("div",{className:"space-y-4",children:Array.from({length:3}).map((t,s)=>e.jsx("div",{className:"h-32 animate-pulse rounded-xl border border-border bg-bg-secondary"},s))});if(U)return e.jsxs("div",{className:"space-y-4",children:[e.jsx(re,{title:"Settings",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Settings"},{label:"Settings"}]}),e.jsxs("div",{className:"rounded-xl border border-error/50 bg-bg-secondary p-6",children:[e.jsxs("div",{className:"flex items-center gap-2 text-error",children:[e.jsx(ee,{className:"h-5 w-5"}),e.jsx("p",{className:"text-sm font-medium",children:"Failed to load settings"})]}),e.jsx("p",{className:"mt-2 text-sm text-text-secondary",children:U}),e.jsx("button",{onClick:()=>window.location.reload(),className:"mt-4 rounded-lg bg-bg-tertiary px-4 py-2 text-sm text-text hover:bg-border transition-colors",children:"Retry"})]})]});const ve=r?A(r):"";return e.jsxs("div",{className:"space-y-4 md:space-y-6",children:[e.jsx(re,{title:"Settings",subtitle:"Provider, model, voice, theme, and channel configuration",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"System"},{label:"Settings"}]}),e.jsx("div",{className:"rounded-lg border border-border bg-bg-secondary/50 px-3 py-2.5",children:e.jsx(_e,{})}),y&&e.jsxs("div",{className:`flex items-center gap-2 rounded-lg border px-3 md:px-4 py-2.5 md:py-2 text-[11px] md:text-sm ${y.type==="success"?"border-success/50 text-success":"border-error/50 text-error"}`,children:[y.type==="success"?e.jsx(Ae,{className:"h-4 w-4"}):e.jsx(ee,{className:"h-4 w-4"}),y.message]}),e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-3 md:p-6",children:[e.jsx("h3",{className:"mb-3 md:mb-4 text-[11px] md:text-sm font-medium text-text-secondary",children:"Model"}),e.jsx(He,{models:p,selectedModel:b,onSelect:S,onSwitch:ge,currentModel:ve})]}),e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-3 md:p-6",children:[e.jsxs("div",{className:"mb-3 md:mb-4 flex items-center justify-between flex-wrap gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-4 w-4 text-accent-hover"}),e.jsx("h3",{className:"text-sm font-medium text-text-secondary",children:"Voice"}),e.jsx("span",{className:"rounded-full bg-accent/20 px-2 py-0.5 text-[9px] font-medium text-purple-light",children:((X=P.find(t=>t.id===w))==null?void 0:X.name)||w})]}),e.jsxs("button",{onClick:D,disabled:O,className:"flex items-center gap-1.5 rounded-md px-2 py-1 text-[10px] text-text-muted hover:bg-bg-tertiary hover:text-text-secondary transition-colors",children:[e.jsx(Ie,{className:`h-3 w-3 ${O?"animate-spin":""}`}),O?"Scanning...":"Scan Services"]})]}),e.jsxs("div",{className:"space-y-4",children:[v&&e.jsxs("div",{className:"rounded-lg border border-bg-tertiary bg-bg p-3",children:[e.jsx("p",{className:"mb-2 text-[10px] font-medium uppercase tracking-wider text-text-muted",children:"Service Discovery"}),e.jsx("div",{className:"grid grid-cols-2 gap-2",children:[{label:"LiveKit Server",ok:v.livekit},{label:"Voice Agent",ok:v.agent},{label:"STT",ok:v.stt},{label:`TTS (${((Y=P.find(t=>t.id===w))==null?void 0:Y.name)||"TTS"})`,ok:v.tts}].map(({label:t,ok:s})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Be,{ok:s}),e.jsx("span",{className:`text-xs ${s?"text-text-secondary":"text-text-muted"}`,children:t}),s&&e.jsx("span",{className:"text-[9px] text-success",children:"Online"})]},t))}),(L==null?void 0:L.available)!==void 0&&e.jsx("div",{className:"mt-2 flex items-center gap-2 border-t border-bg-tertiary pt-2",children:L.available?e.jsxs(e.Fragment,{children:[e.jsx(Ne,{className:"h-3.5 w-3.5 text-success"}),e.jsx("span",{className:"text-xs text-success",children:"Voice system ready"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Me,{className:"h-3.5 w-3.5 text-text-muted"}),e.jsx("span",{className:"text-xs text-text-muted",children:L.reason||"Voice not available"})]})})]}),e.jsxs("label",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"checkbox",checked:i,onChange:t=>m(t.target.checked),className:"h-4 w-4 rounded border-border accent-accent"}),e.jsx("span",{className:"text-sm text-text",children:"Enable Voice Chat"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-2 block text-xs text-text-muted",children:"TTS Engine"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:P.map(t=>e.jsxs("button",{type:"button",onClick:()=>{W(t.id),q(t.defaultUrl),E(t.defaultVoices[0]||"default"),T(t.defaultVoices)},className:`rounded-lg border p-3 text-left transition-all min-h-[64px] active:scale-[0.98] sm:min-h-[56px] ${w===t.id?"border-accent bg-accent/10":"border-border hover:border-border-light"}`,children:[e.jsx("div",{className:"text-xs font-medium text-text",children:t.name}),e.jsx("div",{className:"mt-0.5 text-[10px] text-text-muted",children:t.desc})]},t.id))}),e.jsx("div",{className:"mt-3 rounded-xl border border-border bg-bg-secondary p-4 space-y-4",children:de?e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(te,{className:"h-4 w-4 text-accent2 animate-spin"}),e.jsx("span",{className:"text-sm font-medium text-text",children:"Installing F5-TTS..."})]}),e.jsx("div",{className:"rounded-lg bg-bg border border-bg-tertiary p-3",children:e.jsx("p",{className:"text-xs text-text-secondary font-mono break-all",children:xe})})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-success shadow-[0_0_6px_rgba(34,197,94,0.4)]"}),e.jsx("span",{className:"text-sm text-text",children:"F5-TTS Running"})]})}),e.jsxs("div",{className:"rounded-lg border border-bg-tertiary bg-bg p-3 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-xs font-medium text-text-secondary",children:"Cloned Voices"}),e.jsxs("button",{onClick:pe,disabled:z,className:"flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-medium text-accent2 border border-border hover:border-accent2/50 hover:bg-accent2/10 transition-colors disabled:opacity-50",children:[z?e.jsx(te,{className:"h-3 w-3 animate-spin"}):e.jsx(Fe,{className:"h-3 w-3 rotate-180"}),"Upload Voice"]})]}),e.jsx("p",{className:"text-[10px] text-text-muted leading-relaxed",children:"Upload 5-10 seconds of clear speech. No background noise or music. Adding a transcript significantly improves quality."}),K.length>0?e.jsx("div",{className:"space-y-1.5",children:K.map(t=>e.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-bg-tertiary px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-3.5 w-3.5 text-accent2"}),e.jsx("span",{className:"text-sm text-text capitalize",children:t.name}),e.jsxs("span",{className:"text-[9px] text-text-muted",children:[(t.sizeBytes/1024).toFixed(0),"KB"]}),t.hasTranscript&&e.jsx("span",{className:"rounded bg-success/15 px-1 py-0.5 text-[8px] text-success",children:"transcript"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>he(t.name),className:"text-text-muted hover:text-accent2 transition-colors",title:"Preview voice",children:e.jsx($e,{className:"h-3.5 w-3.5"})}),e.jsx("button",{onClick:()=>be(t.name),className:"text-text-muted hover:text-error transition-colors",title:"Delete voice",children:e.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{d:"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"})})})]})]},t.name))}):e.jsx("p",{className:"text-xs text-text-muted",children:"No cloned voices yet. Upload a 5-10 second WAV reference to clone any voice."})]})]})})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"mb-1 flex items-center gap-2 text-xs text-text-muted",children:["LiveKit URL",(v==null?void 0:v.livekit)&&e.jsx("span",{className:"rounded bg-success/15 px-1.5 py-0.5 text-[9px] font-medium text-success",children:"Connected"})]}),e.jsx("input",{value:l,onChange:t=>k(t.target.value),placeholder:"ws://localhost:7880",className:"w-full rounded-lg border border-border bg-bg px-3 py-2 text-sm text-text outline-none focus:border-accent"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-2 block text-xs text-text-muted",children:"Voice"}),e.jsx("div",{className:"grid grid-cols-4 gap-2",children:ie.map(t=>e.jsx("button",{type:"button",onClick:()=>E(t),className:`rounded-lg border px-3 py-2 text-sm transition-all capitalize ${V===t?"border-accent bg-accent/10 text-text":"border-border text-text-secondary hover:border-border-light hover:text-text"}`,children:t},t))}),e.jsx("p",{className:"mt-2 text-xs text-text-muted",children:"F5-TTS voice cloning via MLX. Upload a 5-10 second reference audio to clone any voice."})]}),V&&e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-bg px-3 py-2",children:[e.jsx(B,{className:"h-3.5 w-3.5 text-accent-hover"}),e.jsx("span",{className:"text-xs text-text-muted",children:"Selected:"}),e.jsx("span",{className:"text-xs font-mono text-text-secondary",children:V}),e.jsx("span",{className:"ml-auto rounded bg-accent/15 px-1.5 py-0.5 text-[9px] font-medium text-purple-light",children:((J=P.find(t=>t.id===w))==null?void 0:J.name)||w})]})]})]}),e.jsxs("button",{onClick:fe,disabled:x,className:"flex items-center gap-2 rounded-lg bg-accent px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-accent/80 disabled:opacity-50",children:[e.jsx(Re,{className:"h-4 w-4"}),x?"Saving...":"Save Settings"]})]})}export{mt as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SettingsPanel-Cumls7N2.js","assets/index-CUgepw5Q.js","assets/index-Dm6zcSTS.css","assets/Input-CbrMbLgn.js","assets/clsx-B-dksMZM.js","assets/PageHeader-bnc85wQN.js","assets/chevron-right-CQ1NTOtd.js","assets/Tooltip-B1LhTXJ8.js","assets/circle-check-big-CAFcaPPH.js","assets/mic-Ddcc6Ann.js","assets/refresh-cw-CwDpzXUn.js","assets/wifi-off-DR9h8HGA.js","assets/download-BBNXvBO0.js","assets/play-BjdwtYMk.js","assets/save-CjTPAQM0.js","assets/SecurityPanel-BMERf796.js","assets/AuditPanel-BaftX5MP.js","assets/funnel-CAJgGO5M.js","assets/clipboard-list-9DdqBj1F.js","assets/AutonomyPanel-CmaXJV8d.js","assets/rotate-ccw-7SQDTI0_.js","assets/radio-B7kX_yWE.js","assets/bot-CvIF1uHi.js","assets/server-BE8W-AT4.js","assets/network-DaJ7ugwX.js","assets/message-square-D5VWlv-Q.js","assets/TitanCanvas-TuYZSZO7.js","assets/chevron-up-UyfdjRp6.js","assets/plus-BSjTdepW.js","assets/file-text-DrdTDEYp.js","assets/terminal-B8IK4WsO.js","assets/book-open-DIxdPqmD.js","assets/pencil-D_YwQBeg.js","assets/search-BP7VlNxX.js","assets/send-C2XDuRPf.js","assets/flask-conical-BGn5PgFX.js","assets/clock-CF9BCIpL.js","assets/archive-gZFnGd5A.js","assets/test-tube-Xfn9DJeg.js","assets/VoiceOverlay-B_ss7Zg_.js","assets/volume-2-DMaE91b5.js","assets/folder-BeZZUGnK.js","assets/check-DgyDEFtq.js","assets/shield-check-s7la2J2K.js","assets/external-link-D_ji4Bec.js","assets/chart-column-BQiM-Td4.js","assets/link-CUpaumqr.js","assets/trash-2-B1C85ePK.js","assets/TitanCanvas-BfitWg9R.css"])))=>i.map(i=>d[i]);
2
- import{r as s,j as e,_ as i}from"./index-CUgepw5Q.js";import{c as o}from"./clsx-B-dksMZM.js";const r=s.lazy(()=>i(()=>import("./SettingsPanel-Cumls7N2.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))),n=s.lazy(()=>i(()=>import("./SecurityPanel-BMERf796.js"),__vite__mapDeps([15,1,2,5,6]))),d=s.lazy(()=>i(()=>import("./AuditPanel-BaftX5MP.js"),__vite__mapDeps([16,1,2,5,6,10,17,18]))),c=s.lazy(()=>i(()=>import("./AutonomyPanel-CmaXJV8d.js"),__vite__mapDeps([19,1,2,14,8,10,20,21,22,23,24,13,25,26,27,28,29,30,31,32,33,34,9,35,36,37,38,39,6,40,41,42,43,44,11,45,46,47,48]))),x=[{id:"general",label:"General"},{id:"autonomy",label:"Autonomy"},{id:"security",label:"Security"},{id:"audit",label:"Audit Log"}];function _(){const[t,a]=s.useState("general");return e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"shrink-0 px-5 pt-4 pb-0",children:[e.jsx("h1",{className:"text-sm font-semibold text-text mb-3",children:"Settings"}),e.jsx("div",{className:"flex items-center gap-0.5 border-b border-border/50",children:x.map(l=>e.jsxs("button",{onClick:()=>a(l.id),className:o("px-3 py-2 text-xs font-medium transition-colors relative",t===l.id?"text-accent":"text-text-muted hover:text-text-secondary"),children:[l.label,t===l.id&&e.jsx("div",{className:"absolute bottom-0 left-1 right-1 h-[2px] bg-accent rounded-full"})]},l.id))})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-auto p-5",children:e.jsxs(s.Suspense,{fallback:e.jsx("div",{className:"skeleton-shimmer h-40 rounded-lg"}),children:[t==="general"&&e.jsx(r,{}),t==="autonomy"&&e.jsx(c,{}),t==="security"&&e.jsx(n,{}),t==="audit"&&e.jsx(d,{})]})})]})}export{_ as default};
@@ -1 +0,0 @@
1
- import{j as r}from"./index-CUgepw5Q.js";import{c as n}from"./clsx-B-dksMZM.js";const s={card:"h-28 rounded-xl border border-border",row:"h-12 rounded-lg",text:"h-4 rounded",metric:"h-24 rounded-xl border border-border"};function i({variant:e="card",count:o=1,className:d}){return r.jsx(r.Fragment,{children:Array.from({length:o},(a,t)=>r.jsx("div",{className:n("skeleton-shimmer",s[e],d)},t))})}export{i as S};
@@ -1,11 +0,0 @@
1
- import{c as j,r as s,ah as T,b as p,j as t}from"./index-CUgepw5Q.js";import{P as I}from"./PageHeader-bnc85wQN.js";import{S as $}from"./search-BP7VlNxX.js";import{T as E}from"./trash-2-B1C85ePK.js";import{D as P}from"./download-BBNXvBO0.js";import"./chevron-right-CQ1NTOtd.js";/**
2
- * @license lucide-react v0.513.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const z=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],_=j("package",z);/**
7
- * @license lucide-react v0.513.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const O=[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]],D=j("store",O);function R(){const[d,N]=s.useState([]),[n,v]=s.useState([]),[w,k]=s.useState(!0),[u,S]=s.useState(null),[c,m]=s.useState("all"),[o,h]=s.useState("installed"),[l,C]=s.useState(""),[b,g]=s.useState(null),i=s.useCallback(async()=>{try{const e=await T();N(e)}catch(e){S(e instanceof Error?e.message:"Failed to fetch skills")}finally{k(!1)}},[]),x=s.useCallback(async()=>{try{const e=await p("/api/marketplace");if(e.ok){const a=await e.json();v(a.skills||[])}}catch{}},[]);s.useEffect(()=>{i(),x()},[i,x]);const M=async e=>{g(e);try{(await p("/api/marketplace/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})})).ok&&(i(),x())}finally{g(null)}},A=async e=>{if(confirm(`Uninstall skill "${e}"?`))try{await p("/api/marketplace/uninstall",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})}),i(),x()}catch{}},L=s.useMemo(()=>{const e=o==="installed"?d:n,a=new Set(e.map(r=>("category"in r?r.category:"")||"other"));return["all",...Array.from(a).sort()]},[d,n,o]),f=s.useMemo(()=>{let e=d;return c!=="all"&&(e=e.filter(a=>a.category===c)),l&&(e=e.filter(a=>{var r;return a.name.toLowerCase().includes(l.toLowerCase())||((r=a.description)==null?void 0:r.toLowerCase().includes(l.toLowerCase()))})),e},[d,c,l]),y=s.useMemo(()=>{let e=n;return c!=="all"&&(e=e.filter(a=>(a.category||"other")===c)),l&&(e=e.filter(a=>{var r;return a.name.toLowerCase().includes(l.toLowerCase())||((r=a.description)==null?void 0:r.toLowerCase().includes(l.toLowerCase()))})),e},[n,c,l]);return w?t.jsx("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-3",children:Array.from({length:6}).map((e,a)=>t.jsx("div",{className:"h-28 animate-pulse rounded-xl border border-border bg-bg-secondary"},a))}):u?t.jsx("div",{className:"rounded-xl border border-error/50 bg-bg-secondary p-6 text-center text-error",children:u}):t.jsxs("div",{className:"space-y-4",children:[t.jsx(I,{title:"Skills",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Tools"},{label:"Skills"}]}),t.jsxs("div",{className:"flex items-center gap-4 border-b border-border pb-2",children:[t.jsxs("button",{onClick:()=>{h("installed"),m("all")},className:`flex items-center gap-1.5 pb-2 text-sm font-medium border-b-2 transition-colors ${o==="installed"?"border-accent text-accent":"border-transparent text-text-muted hover:text-text"}`,children:[t.jsx(_,{className:"h-4 w-4"})," Installed (",d.length,")"]}),t.jsxs("button",{onClick:()=>{h("marketplace"),m("all")},className:`flex items-center gap-1.5 pb-2 text-sm font-medium border-b-2 transition-colors ${o==="marketplace"?"border-accent text-accent":"border-transparent text-text-muted hover:text-text"}`,children:[t.jsx(D,{className:"h-4 w-4"})," Marketplace (",n.length,")"]})]}),t.jsxs("div",{className:"relative",children:[t.jsx($,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-text-muted"}),t.jsx("input",{type:"text",value:l,onChange:e=>C(e.target.value),placeholder:`Search ${o==="installed"?"installed skills":"marketplace"}...`,className:"w-full rounded-lg border border-border bg-bg-secondary py-2 pl-9 pr-4 text-sm text-text placeholder:text-text-muted focus:border-accent focus:outline-none"})]}),t.jsx("div",{className:"flex flex-wrap gap-2",children:L.map(e=>t.jsx("button",{onClick:()=>m(e),className:`rounded-lg px-3 py-1.5 text-xs font-medium capitalize transition-colors ${c===e?"bg-accent text-white":"bg-bg-tertiary text-text-secondary hover:text-text"}`,children:e},e))}),o==="installed"?t.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",children:[f.map(e=>t.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[t.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[t.jsx("h3",{className:"font-medium text-text text-sm",children:e.name}),t.jsx("span",{className:`rounded-full px-2 py-0.5 text-[10px] font-medium ${e.enabled?"bg-success/10 text-success":"bg-text-muted/10 text-text-muted"}`,children:e.enabled?"Enabled":"Disabled"})]}),t.jsx("p",{className:"text-xs text-text-secondary line-clamp-2",children:e.description}),t.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[t.jsx("span",{className:"text-[10px] capitalize text-text-muted",children:e.category}),n.some(a=>a.name===e.name&&a.installed)&&t.jsxs("button",{onClick:()=>A(e.name),className:"text-[10px] text-error hover:underline flex items-center gap-1",children:[t.jsx(E,{className:"h-3 w-3"})," Uninstall"]})]})]},e.name)),f.length===0&&t.jsx("p",{className:"col-span-full py-12 text-center text-text-muted",children:"No skills match your search"})]}):t.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",children:[y.map(e=>{var a;return t.jsxs("div",{className:`rounded-xl border bg-bg-secondary p-4 ${e.installed?"border-success/30":"border-border"}`,children:[t.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[t.jsx("h3",{className:"font-medium text-text text-sm",children:e.name}),e.installed?t.jsx("span",{className:"rounded-full bg-success/10 px-2 py-0.5 text-[10px] font-medium text-success",children:"Installed"}):t.jsxs("button",{onClick:()=>M(e.name),disabled:b===e.name,className:"flex items-center gap-1 rounded-md bg-accent/10 px-2 py-1 text-[10px] font-medium text-accent hover:bg-accent/20 disabled:opacity-50 transition-colors",children:[t.jsx(P,{className:"h-3 w-3"}),b===e.name?"Installing...":"Install"]})]}),t.jsx("p",{className:"text-xs text-text-secondary line-clamp-2",children:e.description}),t.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[t.jsx("span",{className:"text-[10px] capitalize text-text-muted",children:e.category||"other"}),e.author&&t.jsxs("span",{className:"text-[10px] text-text-muted",children:["by ",e.author]}),(a=e.tags)==null?void 0:a.slice(0,3).map(r=>t.jsx("span",{className:"rounded bg-bg-tertiary px-1.5 py-0.5 text-[9px] text-text-muted",children:r},r))]})]},e.name)}),y.length===0&&t.jsx("p",{className:"col-span-full py-12 text-center text-text-muted",children:n.length===0?"Marketplace unavailable — check network connection":"No skills match your search"})]})]})}export{R as default};
@@ -1 +0,0 @@
1
- :root{--soma-purpose: #8b5cf6;--soma-hunger: #f59e0b;--soma-curiosity: #06b6d4;--soma-safety: #10b981;--soma-social: #ec4899;--soma-rest: #64748b}.soma-body-indicator{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;margin:0 10px;border:1px solid rgba(255,255,255,.06);border-radius:999px;background:#ffffff04;cursor:pointer;transition:background .14s ease,border-color .14s ease}.soma-body-indicator:hover{background:#ffffff0a;border-color:#ffffff1f}.soma-drive-pip{width:10px;height:10px;border-radius:50%;display:inline-block;animation:soma-pip-breathe 8s ease-in-out infinite;box-shadow:0 0 8px currentColor}.soma-drive-pip--elevated{animation-name:soma-pip-pulse}@keyframes soma-pip-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes soma-pip-pulse{0%,to{transform:scale(1);opacity:.4}50%{transform:scale(1.25);opacity:1}}.soma-page{position:relative;min-height:100%;padding:24px 32px 160px;overflow-x:hidden}.soma-page__atmosphere{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .6s ease,background .9s ease;z-index:0}.soma-page__atmosphere[data-dominant=safety]{opacity:.1;background:radial-gradient(ellipse at top,#f97316 0%,transparent 55%)}.soma-page__atmosphere[data-dominant=hunger]{opacity:.1;background:radial-gradient(ellipse at top,#f59e0b 0%,transparent 55%)}.soma-page__atmosphere[data-dominant=purpose]{opacity:.08;background:radial-gradient(ellipse at top,#8b5cf6 0%,transparent 55%)}.soma-page__atmosphere[data-dominant=curiosity]{opacity:.08;background:radial-gradient(ellipse at top,#06b6d4 0%,transparent 55%)}.soma-page__atmosphere[data-dominant=social]{opacity:.08;background:radial-gradient(ellipse at top,#ec4899 0%,transparent 55%)}.soma-page__content{position:relative;z-index:1}.soma-page__header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:28px}.soma-page__title{font-size:28px;font-weight:600;letter-spacing:-.5px;color:#ffffffeb}.soma-page__subtitle{font-size:12px;color:#fff6;margin-top:4px}.soma-body{position:relative;width:100%;max-width:720px;aspect-ratio:4 / 5;margin:0 auto}.soma-silhouette{position:absolute;top:0;right:0;bottom:0;left:0;border:1px dashed rgba(255,255,255,.05);border-radius:50% 50% 48% 48%/40% 40% 60% 60%;background:radial-gradient(ellipse at center,rgba(255,255,255,.015) 0%,transparent 70%)}.soma-region{position:absolute;border-radius:50%;transform:translate(-50%,-50%);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease;display:flex;align-items:center;justify-content:center;animation:soma-region-breathe 9s ease-in-out infinite}.soma-region--elevated{animation-name:soma-region-pulse}.soma-region:hover,.soma-region:focus-visible{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 0 40px currentColor;outline:none}.soma-region--active{transform:translate(-50%,-50%) scale(1.12);box-shadow:0 0 48px currentColor}.soma-region__label{font-size:11px;font-weight:500;color:#ffffffeb;text-shadow:0 2px 8px rgba(0,0,0,.8);pointer-events:none;letter-spacing:.4px}@keyframes soma-region-breathe{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.04)}}@keyframes soma-region-pulse{0%,to{transform:translate(-50%,-50%) scale(1);filter:brightness(.85)}50%{transform:translate(-50%,-50%) scale(1.14);filter:brightness(1.15)}}.soma-region[data-drive=purpose]{top:12%;left:50%;width:100px;height:100px;background:var(--soma-purpose)}.soma-region[data-drive=curiosity]{top:36%;left:22%;width:88px;height:88px;background:var(--soma-curiosity)}.soma-region[data-drive=social]{top:36%;left:78%;width:88px;height:88px;background:var(--soma-social)}.soma-region[data-drive=safety]{top:62%;left:32%;width:92px;height:92px;background:var(--soma-safety)}.soma-region[data-drive=hunger]{top:62%;left:68%;width:92px;height:92px;background:var(--soma-hunger)}.soma-region[data-drive=rest]{top:82%;left:50%;width:80px;height:80px;background:var(--soma-rest);transform:translate(-50%)}.soma-inspector{position:fixed;top:64px;right:0;bottom:0;width:380px;padding:24px;background:#0a0a0ef5;border-left:1px solid rgba(255,255,255,.06);overflow-y:auto;z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:soma-inspector-slide .22s ease}@keyframes soma-inspector-slide{0%{transform:translate(100%)}to{transform:translate(0)}}.soma-inspector__close{position:absolute;top:16px;right:16px;background:none;border:none;color:#ffffff59;font-size:20px;cursor:pointer}.soma-inspector__title{font-size:20px;font-weight:600;margin-bottom:4px;color:#fffffff2}.soma-inspector__reason{font-size:12px;color:#ffffff8c;font-style:italic;margin-bottom:20px}.soma-inspector__stat{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.04);font-size:12px}.soma-inspector__stat-label{color:#fff6}.soma-inspector__stat-value{color:#ffffffd9;font-variant-numeric:tabular-nums}.soma-inspector__slider-row{margin:18px 0}.soma-inspector__slider-label{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:#fff6;margin-bottom:6px;display:flex;justify-content:space-between}.soma-inspector__slider{width:100%;accent-color:currentColor}.soma-proposal-queue{margin-top:36px}.soma-proposal-card{padding:14px 16px;background:#ffffff05;border:1px solid rgba(255,255,255,.06);border-radius:10px;margin-bottom:10px;transition:border-color .14s ease}.soma-proposal-card:hover{border-color:#ffffff24}.soma-proposal-card__badges{display:flex;gap:6px;margin-bottom:8px}.soma-drive-badge{font-size:10px;text-transform:uppercase;letter-spacing:.5px;padding:2px 8px;border-radius:999px;color:#fffffff2}.soma-proposal-card__title{font-size:13px;font-weight:500;margin-bottom:4px;color:#ffffffe0}.soma-proposal-card__description{font-size:11px;color:#ffffff8c;margin-bottom:8px}.soma-proposal-card__shadow{display:flex;gap:12px;padding:8px 10px;background:#ffffff08;border-radius:6px;font-size:10px;color:#ffffff8c;margin:8px 0}.soma-proposal-card__shadow-stat{display:flex;flex-direction:column;gap:2px}.soma-proposal-card__shadow-label{text-transform:uppercase;letter-spacing:.5px;color:#ffffff4d}.soma-proposal-card__buttons{display:flex;gap:6px;margin-top:8px}.soma-btn{flex:1;padding:6px 10px;font-size:11px;border-radius:6px;border:none;cursor:pointer;transition:filter .12s ease}.soma-btn:hover{filter:brightness(1.12)}.soma-btn--approve{background:#10b981;color:#fff}.soma-btn--reject{background:#ef4444aa;color:#fff}.soma-btn--defer{background:#ffffff0f;color:#ffffffb3}@media(max-width:1024px){.soma-inspector{width:100%;border-left:none;border-top:1px solid rgba(255,255,255,.06)}}@media(prefers-reduced-motion:reduce){.soma-drive-pip,.soma-region{animation-name:soma-opacity-breathe}@keyframes soma-opacity-breathe{0%,to{opacity:.7}50%{opacity:1}}.soma-inspector{animation:none}}
@@ -1,5 +0,0 @@
1
- import{r as i,b as n,j as e}from"./index-CUgepw5Q.js";import"./Input-CbrMbLgn.js";import{H as X}from"./Tooltip-B1LhTXJ8.js";import"./clsx-B-dksMZM.js";const p={purpose:"var(--soma-purpose)",hunger:"var(--soma-hunger)",curiosity:"var(--soma-curiosity)",safety:"var(--soma-safety)",social:"var(--soma-social)",rest:"var(--soma-rest)"},a={bgBase:"var(--theme-bg-base, var(--color-bg, #09090b))",bgGrain:"var(--theme-bg-grain, var(--color-bg-secondary, #18181b))",surface:"color-mix(in srgb, var(--theme-bg-grain, var(--color-bg-secondary, #18181b)) 88%, transparent)",surfaceSoft:"color-mix(in srgb, var(--theme-bg-grain, var(--color-bg-tertiary, #27272a)) 64%, transparent)",surfaceFaint:"color-mix(in srgb, var(--theme-bg-grain, var(--color-bg-tertiary, #27272a)) 42%, transparent)",border:"color-mix(in srgb, var(--theme-metal-dark, var(--color-border, #3f3f46)) 68%, transparent)",borderSoft:"color-mix(in srgb, var(--theme-metal-dark, var(--color-border, #3f3f46)) 42%, transparent)",metal:"var(--theme-metal, var(--color-border-light, #52525b))",ink:"var(--theme-paper-fg, var(--color-text, #fafafa))",inkSoft:"color-mix(in srgb, var(--theme-paper-fg, var(--color-text-secondary, #a1a1aa)) 72%, transparent)",paperFg:"var(--theme-paper-fg, var(--color-text-secondary, #a1a1aa))",accent:"var(--theme-accent, var(--color-accent, #6366f1))",warning:"var(--color-warning, #f59e0b)",success:"var(--color-success, #22c55e)",error:"var(--color-error, #ef4444)"},T={background:a.bgBase,color:a.ink},P={background:a.surface,border:`1px solid ${a.borderSoft}`,color:a.ink},$={color:a.ink},F={color:a.paperFg},Y={background:a.surfaceFaint,borderColor:a.borderSoft},Z={...P,borderRadius:10},ee={background:a.surfaceSoft,color:a.inkSoft},se={background:a.surface,borderColor:a.border,color:a.ink},x={borderColor:a.borderSoft};function ie(){var D,E;const[d,b]=i.useState(null),[C,I]=i.useState([]),[f,L]=i.useState([]),[j,M]=i.useState([]),[y,z]=i.useState(!1),[v,S]=i.useState(null),[m,_]=i.useState(null),[R,B]=i.useState(!1),[h,O]=i.useState(null),[A,k]=i.useState(null),l=i.useCallback((s,t="error")=>{O({message:s,type:t}),setTimeout(()=>O(null),4e3)},[]),c=i.useCallback(async()=>{try{const s=await n("/api/soma/state");if(s.ok){const t=await s.json();b(t),k(null)}else throw new Error(`${s.status} ${s.statusText}`)}catch(s){try{const t=await n("/api/watch/snapshot");if(t.ok){const o=await t.json();b({enabled:!0,timestamp:o.timestamp,drives:o.drives||[],totalPressure:o.totalPressure||0,dominantDrives:o.dominantDrives||[],message:"Showing live watch snapshot because Soma state is unavailable."}),k("using watch snapshot")}else throw new Error(`${t.status} ${t.statusText}`)}catch{b({enabled:!1,message:`Soma state is unavailable: ${s.message}`}),k(s.message)}}try{const s=await n("/api/soma/history?hours=24");if(s.ok){const t=await s.json();t.enabled&&I(t.history)}}catch{}try{const s=await n("/api/command-post/approvals?status=pending");if(s.ok){const t=await s.json();L(t.filter(o=>o.type==="soma_proposal"))}}catch{}try{const s=await n("/api/soma/advisories?limit=10");if(s.ok){const t=await s.json();M(t.advisories||[])}}catch{}},[]),W=i.useCallback(async()=>{z(!0);try{const s=await n("/api/soma/gift",{method:"POST",body:JSON.stringify({force:!0}),headers:{"Content-Type":"application/json"}});if(s.ok){const t=await s.json();l(t.message||"Soma is thinking about your gift…","success")}else l("Soma gift request failed.","error")}catch(s){l(s.message||"Gift request failed.","error")}finally{z(!1)}},[l]);i.useEffect(()=>{c();const s=setInterval(c,15e3),t=()=>c();return window.addEventListener("titan:soma:changed",t),()=>{clearInterval(s),window.removeEventListener("titan:soma:changed",t)}},[c]);const H=async s=>{try{const t=await n(`/api/command-post/approvals/${s}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decidedBy:"board"})});if(!t.ok)throw new Error(`${t.status} ${t.statusText}`);c()}catch(t){l(`Approve failed: ${t.message}`)}},q=async s=>{try{const t=await n(`/api/command-post/approvals/${s}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({decidedBy:"board"})});if(!t.ok)throw new Error(`${t.status} ${t.statusText}`);c()}catch(t){l(`Reject failed: ${t.message}`)}},G=async()=>{if(!(!v||m===null)){B(!0);try{const s=await n("/api/soma/setpoints",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[v]:m})});if(!s.ok)throw new Error(`${s.status} ${s.statusText}`);_(null),c()}catch(s){l(`Setpoint update failed: ${s.message}`)}B(!1)}},J=async(s,t)=>{try{const o=await n("/api/soma/weights",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[s]:t})});if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);c()}catch(o){l(`Weight update failed: ${o.message}`)}},V=async(s,t)=>{try{const o=await n(`/api/soma/drives/${s}/disable`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:t})});if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);c()}catch(o){l(`Drive toggle failed: ${o.message}`)}};if(!d)return e.jsx("div",{className:"soma-page",style:T,children:e.jsxs("div",{className:"soma-page__content",children:[e.jsx("div",{className:"soma-page__title",style:$,children:"TITAN-Soma"}),e.jsx("div",{className:"soma-page__subtitle",style:F,children:"Loading organism state…"})]})});if(!d.enabled)return e.jsx("div",{className:"soma-page",style:T,children:e.jsxs("div",{className:"soma-page__content",style:{maxWidth:640},children:[e.jsx("div",{className:"soma-page__title",style:$,children:"TITAN-Soma"}),e.jsx("div",{className:"soma-page__subtitle",style:F,children:"Homeostatic digital organism"}),e.jsxs("div",{style:{marginTop:32,padding:24,...P,borderRadius:12},children:[e.jsx("div",{style:{fontSize:14,color:a.ink,marginBottom:12},children:d.message||"Soma is not enabled on this gateway."}),e.jsxs("div",{style:{fontSize:12,color:a.inkSoft,lineHeight:1.7},children:["To turn on the organism layer, edit ",e.jsx("code",{style:{background:a.surfaceSoft,padding:"2px 6px",borderRadius:4},children:"~/.titan/titan.json"})," and add:",e.jsx("pre",{style:{marginTop:12,padding:12,background:a.bgGrain,borderRadius:6,color:a.ink,fontSize:11},children:`{
2
- "organism": {
3
- "enabled": true
4
- }
5
- }`}),"Then restart the gateway. All other features keep working exactly as before — Soma is purely additive."]})]})]})});const w=d.drives||[],r=w.find(s=>s.id===v),U=((D=d.dominantDrives)==null?void 0:D[0])??null;return e.jsxs("div",{className:"soma-page",style:T,children:[e.jsx("div",{className:"soma-page__atmosphere","data-dominant":U||""}),e.jsxs("div",{className:"soma-page__content",children:[e.jsxs("div",{className:"soma-page__header",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"soma-page__title flex items-center gap-2",style:$,children:["Soma",e.jsx(X,{title:"TITAN-Soma",description:"TITAN's homeostatic core. Six internal drives (purpose, curiosity, hunger, safety, social, rest) drift over time. When a drive crosses its threshold, Soma proposes work to you. Every proposal still requires your approval."})]}),e.jsx("div",{className:"soma-page__subtitle",style:F,children:(E=d.hormonal)!=null&&E.elevated.length?`Body state: ${d.hormonal.elevated.map(s=>`${s.label.toLowerCase()} ${Math.round(s.satisfaction*100)}%`).join(" · ")}`:"All drives satiated — routine operation"}),A&&e.jsxs("div",{style:{marginTop:6,fontSize:11,color:a.warning},children:["Live fallback active — ",A]})]}),e.jsxs("div",{style:{fontSize:11,color:a.paperFg},children:["total pressure: ",(d.totalPressure??0).toFixed(2)]})]}),h&&e.jsx("div",{style:{padding:"10px 14px",borderRadius:8,fontSize:12,marginBottom:12,background:h.type==="error"?"color-mix(in srgb, var(--color-error, #ef4444) 14%, transparent)":"color-mix(in srgb, var(--color-success, #22c55e) 14%, transparent)",border:`1px solid ${h.type==="error"?"color-mix(in srgb, var(--color-error, #ef4444) 34%, transparent)":"color-mix(in srgb, var(--color-success, #22c55e) 34%, transparent)"}`,color:h.type==="error"?a.error:a.success,transition:"opacity 0.3s ease"},children:h.message}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_380px] gap-6 lg:gap-8",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"soma-body",children:[e.jsx("div",{className:"soma-silhouette",style:Y}),w.map(s=>e.jsx("button",{className:`soma-region${s.pressure>0?" soma-region--elevated":""}${s.id===v?" soma-region--active":""}`,"data-drive":s.id,style:{color:p[s.id]||a.ink,animationDuration:s.pressure>0?`${1+s.satisfaction*1.5}s`:`${8+s.satisfaction*3}s`,opacity:.5+.5*s.satisfaction},onClick:()=>{S(s.id),_(null)},children:e.jsx("span",{className:"soma-region__label",style:{color:a.ink,textShadow:"0 2px 8px color-mix(in srgb, var(--theme-bg-base, var(--color-bg, #09090b)) 82%, transparent)"},children:s.label})},s.id))]}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:10,marginTop:32},children:w.map(s=>e.jsxs("div",{onClick:()=>S(s.id),style:{padding:"10px 14px",border:`1px solid ${s.pressure>0?p[s.id]:a.borderSoft}`,borderRadius:8,background:a.surfaceFaint,cursor:"pointer"},children:[e.jsx("div",{style:{fontSize:11,color:a.inkSoft,textTransform:"uppercase",letterSpacing:.5},children:s.label}),e.jsxs("div",{style:{fontSize:20,fontWeight:500,color:a.ink,marginTop:2},children:[Math.round(s.satisfaction*100),"%"]}),e.jsx("div",{style:{fontSize:10,color:a.paperFg,marginTop:4,minHeight:14},children:s.description})]},s.id))})]}),e.jsxs("div",{className:"soma-proposal-queue",children:[e.jsxs("div",{style:{fontSize:13,textTransform:"uppercase",letterSpacing:.8,color:a.inkSoft,marginBottom:8,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[e.jsxs("span",{children:["TITAN noticed (",j.length,")"]}),e.jsx("button",{onClick:W,disabled:y,title:"Ask Soma to build something for you right now, using what it knows about you.",style:{fontSize:10,padding:"4px 10px",borderRadius:999,border:`1px solid ${a.accent}`,background:y?a.surfaceFaint:"color-mix(in srgb, var(--theme-accent, var(--color-accent, #6366f1)) 18%, transparent)",color:a.accent,cursor:y?"wait":"pointer",textTransform:"none",letterSpacing:0},children:y?"Thinking…":"🎁 Gift me"})]}),j.length===0?e.jsxs("div",{style:{fontSize:11,color:a.paperFg,padding:"12px 16px",textAlign:"center",marginBottom:18,background:a.surfaceFaint,border:`1px solid ${a.borderSoft}`,borderRadius:8},children:["Soma hasn't noticed anything yet.",e.jsx("br",{}),"The pulse runs every 5 min."]}):e.jsx("div",{style:{marginBottom:18,display:"flex",flexDirection:"column",gap:6},children:j.slice(0,5).map((s,t)=>e.jsxs("div",{style:{padding:"8px 10px",borderRadius:8,background:a.surfaceFaint,border:`1px solid ${a.borderSoft}`},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:4},children:[e.jsx("span",{style:{fontSize:10,color:a.accent,textTransform:"uppercase",letterSpacing:.6},children:s.action}),e.jsx("span",{style:{fontSize:9,color:a.paperFg},children:new Date(s.at).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),e.jsx("div",{style:{fontSize:12,color:a.ink,lineHeight:1.4},children:s.rationale})]},t))}),e.jsxs("div",{style:{fontSize:13,textTransform:"uppercase",letterSpacing:.8,color:a.inkSoft,marginBottom:12},children:["Pending Proposals (",f.length,")"]}),f.length===0?e.jsxs("div",{style:{fontSize:11,color:a.paperFg,padding:24,textAlign:"center"},children:["No proposals in flight.",e.jsx("br",{}),"Soma only proposes when pressure crosses threshold."]}):f.map(s=>{const t=s.payload.shadowVerdict,g=s.requestedBy.split(":")[1];return e.jsxs("div",{className:"soma-proposal-card",style:Z,children:[g&&e.jsx("div",{className:"soma-proposal-card__badges",children:e.jsx("span",{className:"soma-drive-badge",style:{background:p[g],color:a.ink},children:g})}),e.jsx("div",{className:"soma-proposal-card__title",style:{color:a.ink},children:s.payload.title||"(untitled)"}),s.payload.description&&e.jsx("div",{className:"soma-proposal-card__description",style:{color:a.inkSoft},children:s.payload.description}),t&&e.jsxs("div",{className:"soma-proposal-card__shadow",style:ee,children:[e.jsxs("div",{className:"soma-proposal-card__shadow-stat",children:[e.jsx("span",{className:"soma-proposal-card__shadow-label",style:{color:a.paperFg},children:"Cost"}),e.jsxs("span",{children:["$",t.estimatedCostUsd.toFixed(2)]})]}),e.jsxs("div",{className:"soma-proposal-card__shadow-stat",children:[e.jsx("span",{className:"soma-proposal-card__shadow-label",style:{color:a.paperFg},children:"Reversible"}),e.jsxs("span",{children:[Math.round(t.reversibilityScore*100),"%"]})]}),e.jsxs("div",{className:"soma-proposal-card__shadow-stat",children:[e.jsx("span",{className:"soma-proposal-card__shadow-label",style:{color:a.paperFg},children:"Risks"}),e.jsx("span",{children:t.breakRisks.length})]})]}),(t==null?void 0:t.breakRisks)&&t.breakRisks.length>0&&e.jsx("div",{style:{fontSize:10,color:a.paperFg,marginBottom:6},children:t.breakRisks.slice(0,2).join(" · ")}),e.jsxs("div",{className:"soma-proposal-card__buttons",children:[e.jsx("button",{className:"soma-btn soma-btn--approve",style:{background:a.success,color:a.bgBase},onClick:()=>H(s.id),children:"Approve"}),e.jsx("button",{className:"soma-btn soma-btn--reject",style:{background:a.error,color:a.bgBase},onClick:()=>q(s.id),children:"Reject"})]})]},s.id)})]})]}),C.length>0&&e.jsxs("div",{style:{marginTop:48},children:[e.jsx("div",{style:{fontSize:13,textTransform:"uppercase",letterSpacing:.8,color:a.inkSoft,marginBottom:12},children:"Last 24h"}),Object.keys(p).map(s=>{const t=C.map(N=>{var u;return((u=N.satisfactions)==null?void 0:u[s])??1});if(t.length<2)return null;const o=800,g=28,K=o/Math.max(1,t.length-1),Q=t.map((N,u)=>`${u===0?"M":"L"} ${(u*K).toFixed(1)} ${(g-N*g).toFixed(1)}`).join(" ");return e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:4},children:[e.jsx("div",{style:{fontSize:10,color:a.paperFg,width:60,textTransform:"capitalize"},children:s}),e.jsx("svg",{width:o,height:g,style:{opacity:.85},children:e.jsx("path",{d:Q,stroke:p[s],strokeWidth:"1.5",fill:"none"})})]},s)})]})]}),r&&e.jsxs("div",{className:"soma-inspector",style:se,children:[e.jsx("button",{className:"soma-inspector__close",style:{color:a.metal},onClick:()=>S(null),"aria-label":"Close",children:"✕"}),e.jsx("div",{className:"soma-inspector__title",style:{color:p[r.id]},children:r.label}),e.jsx("div",{className:"soma-inspector__reason",style:{color:a.inkSoft},children:r.description}),e.jsxs("div",{className:"soma-inspector__stat",style:x,children:[e.jsx("span",{className:"soma-inspector__stat-label",style:{color:a.paperFg},children:"Satisfaction"}),e.jsxs("span",{className:"soma-inspector__stat-value",style:{color:a.ink},children:[Math.round(r.satisfaction*100),"%"]})]}),e.jsxs("div",{className:"soma-inspector__stat",style:x,children:[e.jsx("span",{className:"soma-inspector__stat-label",style:{color:a.paperFg},children:"Setpoint"}),e.jsxs("span",{className:"soma-inspector__stat-value",style:{color:a.ink},children:[Math.round((m??r.setpoint)*100),"%"]})]}),e.jsxs("div",{className:"soma-inspector__stat",style:x,children:[e.jsx("span",{className:"soma-inspector__stat-label",style:{color:a.paperFg},children:"Pressure"}),e.jsx("span",{className:"soma-inspector__stat-value",style:{color:a.ink},children:r.pressure.toFixed(2)})]}),e.jsxs("div",{className:"soma-inspector__stat",style:x,children:[e.jsx("span",{className:"soma-inspector__stat-label",style:{color:a.paperFg},children:"Weight"}),e.jsxs("span",{className:"soma-inspector__stat-value",style:{color:a.ink},children:[r.weight.toFixed(1),"×"]})]}),e.jsxs("div",{className:"soma-inspector__slider-row",children:[e.jsxs("div",{className:"soma-inspector__slider-label",style:{color:a.paperFg},children:[e.jsx("span",{children:"Adjust setpoint"}),e.jsxs("span",{children:[Math.round((m??r.setpoint)*100),"%"]})]}),e.jsx("input",{type:"range",className:"soma-inspector__slider",min:0,max:100,value:Math.round((m??r.setpoint)*100),onChange:s=>_(Number(s.target.value)/100),style:{color:p[r.id]}}),m!==null&&m!==r.setpoint&&e.jsx("button",{className:"soma-btn soma-btn--approve",onClick:G,disabled:R,style:{marginTop:12,background:a.success,color:a.bgBase},children:R?"Saving...":"Save setpoint"})]}),e.jsxs("div",{className:"soma-inspector__slider-row",children:[e.jsxs("div",{className:"soma-inspector__slider-label",style:{color:a.paperFg},children:[e.jsx("span",{children:"Weight (pressure multiplier)"}),e.jsxs("span",{children:[r.weight.toFixed(1),"×"]})]}),e.jsx("input",{type:"range",className:"soma-inspector__slider",min:1,max:30,step:1,value:Math.round(r.weight*10),onChange:s=>J(r.id,Number(s.target.value)/10),style:{color:p[r.id]},title:"Drag to adjust how much this drive contributes to total pressure. 1.0 is baseline."})]}),e.jsxs("div",{style:{marginTop:14,paddingTop:10,borderTop:`1px solid ${a.borderSoft}`},children:[e.jsxs("button",{onClick:()=>V(r.id,!0),style:{width:"100%",padding:"8px",fontSize:11,border:"1px solid color-mix(in srgb, var(--color-error, #ef4444) 28%, transparent)",background:"color-mix(in srgb, var(--color-error, #ef4444) 10%, transparent)",color:"var(--color-error)",borderRadius:6,cursor:"pointer"},title:"Skip this drive in pressure fusion. Soma stays on for the other drives.",children:["Disable ",r.label," drive"]}),e.jsxs("div",{style:{fontSize:10,color:a.paperFg,marginTop:4,textAlign:"center"},children:["Re-enable by editing ",e.jsx("code",{style:{background:a.surfaceSoft,padding:"1px 4px",borderRadius:3},children:"organism.disabledDrives"})," in titan.json"]})]}),r.inputs&&e.jsxs("div",{style:{marginTop:20,paddingTop:14,borderTop:`1px solid ${a.borderSoft}`},children:[e.jsx("div",{className:"soma-inspector__slider-label",style:{color:a.paperFg},children:"Signals"}),Object.entries(r.inputs).map(([s,t])=>e.jsxs("div",{className:"soma-inspector__stat",style:x,children:[e.jsx("span",{className:"soma-inspector__stat-label",style:{color:a.paperFg},children:s}),e.jsx("span",{className:"soma-inspector__stat-value",style:{color:a.ink},children:String(t)})]},s))]})]})]})}export{ie as default};
@@ -1 +0,0 @@
1
- import{j as t}from"./index-CUgepw5Q.js";function r({title:m,value:d,icon:s,trend:e,subtitle:x}){return t.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-3 md:p-4 min-h-[100px]",children:[s&&t.jsx("div",{className:"mb-1.5 md:mb-2 text-text-muted",children:s}),t.jsx("p",{className:"text-[11px] md:text-sm text-text-secondary",children:m}),t.jsxs("div",{className:"mt-1 flex items-baseline gap-2",children:[t.jsx("span",{className:"text-xl md:text-2xl font-semibold text-text",children:d}),e&&t.jsx("span",{className:e==="up"?"text-xs md:text-sm text-success":"text-xs md:text-sm text-error",children:e==="up"?"↑":"↓"})]}),x&&t.jsx("p",{className:"mt-1 text-[10px] md:text-xs text-text-muted",children:x})]})}export{r as S};
@@ -1 +0,0 @@
1
- import{j as s}from"./index-CUgepw5Q.js";import{c as g}from"./clsx-B-dksMZM.js";const d={active:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},running:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},completed:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},done:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},succeeded:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},enabled:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},healthy:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},approved:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},connected:{bg:"bg-success/10",text:"text-success",dot:"bg-success"},in_progress:{bg:"bg-accent/10",text:"text-accent",dot:"bg-accent"},in_review:{bg:"bg-accent/10",text:"text-accent",dot:"bg-accent"},processing:{bg:"bg-accent/10",text:"text-accent",dot:"bg-accent"},training:{bg:"bg-accent/10",text:"text-accent",dot:"bg-accent"},deploying:{bg:"bg-accent/10",text:"text-accent",dot:"bg-accent"},warning:{bg:"bg-warning/10",text:"text-warning",dot:"bg-warning"},pending:{bg:"bg-warning/10",text:"text-warning",dot:"bg-warning"},queued:{bg:"bg-warning/10",text:"text-warning",dot:"bg-warning"},backlog:{bg:"bg-warning/10",text:"text-warning",dot:"bg-warning"},todo:{bg:"bg-warning/10",text:"text-warning",dot:"bg-warning"},error:{bg:"bg-error/10",text:"text-error",dot:"bg-error"},failed:{bg:"bg-error/10",text:"text-error",dot:"bg-error"},critical:{bg:"bg-error/10",text:"text-error",dot:"bg-error"},rejected:{bg:"bg-error/10",text:"text-error",dot:"bg-error"},blocked:{bg:"bg-error/10",text:"text-error",dot:"bg-error"},idle:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"},disabled:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"},stopped:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"},paused:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"},cancelled:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"},unknown:{bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"}},o={bg:"bg-text-muted/10",text:"text-text-muted",dot:"bg-text-muted"};function u(t){return d[t.toLowerCase().replace(/[- ]/g,"_")]??o}function m({status:t,variant:r="pill",size:c="sm",label:n,className:x}){const e=u(t),b=n??t.replace(/_/g," ");return r==="dot"?s.jsxs("span",{className:g("inline-flex items-center gap-1.5",x),children:[s.jsx("span",{className:g("rounded-full",e.dot,c==="sm"?"h-1.5 w-1.5":"h-2 w-2")}),s.jsx("span",{className:g(e.text,c==="sm"?"text-xs":"text-sm"),children:b})]}):s.jsx("span",{className:g("inline-flex items-center rounded-full font-medium capitalize",e.bg,e.text,c==="sm"?"px-2 py-0.5 text-xs":"px-2.5 py-1 text-xs",x),children:b})}export{m as S};
@@ -1 +0,0 @@
1
- import{j as t}from"./index-CUgepw5Q.js";import{c as r}from"./clsx-B-dksMZM.js";function i({tabs:n,activeTab:o,onChange:s,className:c}){return t.jsx("div",{className:r("flex gap-1 border-b border-border",c),children:n.map(e=>t.jsxs("button",{onClick:()=>s(e.id),className:r("flex items-center gap-1.5 px-3 py-2 text-sm font-medium transition-colors border-b-2 -mb-px",o===e.id?"border-accent text-accent":"border-transparent text-text-muted hover:text-text-secondary"),children:[e.icon,e.label,e.count!==void 0&&t.jsx("span",{className:r("ml-1 rounded-full px-1.5 py-0.5 text-[10px] font-medium",o===e.id?"bg-accent/15 text-accent":"bg-bg-tertiary text-text-muted"),children:e.count})]},e.id))})}export{i as T};
@@ -1 +0,0 @@
1
- import{r as t,bC as d,j as e,U as n,bD as o}from"./index-CUgepw5Q.js";import{P as x}from"./PageHeader-bnc85wQN.js";import{R as f}from"./refresh-cw-CwDpzXUn.js";import{T as h}from"./trash-2-B1C85ePK.js";import"./chevron-right-CQ1NTOtd.js";function v(){const[l,c]=t.useState([]),[r,i]=t.useState(!0),a=t.useCallback(async()=>{i(!0);try{const s=await d();c(s.teams||[])}catch{}i(!1)},[]);t.useEffect(()=>{a()},[a]);const m=async s=>{if(confirm("Delete this team?"))try{await o(s),await a()}catch{}};return e.jsxs("div",{className:"space-y-4",children:[e.jsx(x,{title:"Team Hub",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Security"},{label:"Teams"}]}),e.jsx("div",{className:"flex gap-2",children:e.jsxs("button",{onClick:a,disabled:r,className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-[#27272a] text-[#a1a1aa] text-sm font-medium hover:bg-[#3f3f46] disabled:opacity-50",children:[e.jsx(f,{className:`w-4 h-4 ${r?"animate-spin":""}`})," Refresh"]})}),e.jsx("div",{className:"space-y-2",children:l.map(s=>e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg bg-[#0a0a0f] border border-[#27272a]",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(n,{className:"w-4 h-4 text-[#6366f1]"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-sm text-[#e4e4e7]",children:s.name}),e.jsxs("div",{className:"text-xs text-[#52525b]",children:[s.members.length," members • ",s.description]})]})]}),e.jsx("button",{onClick:()=>m(s.id),className:"p-1.5 rounded-md bg-[#27272a] text-[#a1a1aa] hover:bg-[#3f3f46] hover:text-red-400",children:e.jsx(h,{className:"w-3.5 h-3.5"})})]},s.id))})]})}export{v as default};
@@ -1 +0,0 @@
1
- import{r as o,j as e,A as G,Z as S,C as B,B as x,h as T,br as I,b7 as V,bs as $,bt as F,bu as q,bv as U}from"./index-CUgepw5Q.js";import{S as l}from"./StatCard-Djr487DV.js";import{C as W}from"./clock-CF9BCIpL.js";import{G as Z}from"./git-branch-BcXabeOs.js";import{C as O}from"./chart-column-BQiM-Td4.js";import{S as _}from"./server-BE8W-AT4.js";function Y(){var m,u,h,g,j,p,v;const[s,C]=o.useState(null),[i,w]=o.useState(null),[a,M]=o.useState(null),[R,A]=o.useState(0),[L,P]=o.useState(0),[n,k]=o.useState(null),[D,E]=o.useState(!0);return o.useEffect(()=>{const t=async()=>{try{const[c,d,f,N,y,b]=await Promise.allSettled([I(),V(1),$(),F(100),q(100),U()]);c.status==="fulfilled"&&C(c.value),d.status==="fulfilled"&&w(d.value.stats),f.status==="fulfilled"&&M(f.value),N.status==="fulfilled"&&A((N.value.alerts||[]).length),y.status==="fulfilled"&&P((y.value.violations||[]).length),b.status==="fulfilled"&&k(b.value)}catch{}E(!1)};t();const r=setInterval(t,15e3);return()=>clearInterval(r)},[]),D?e.jsx("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:Array.from({length:8}).map((t,r)=>e.jsx("div",{className:"h-28 animate-pulse rounded-xl border border-border bg-bg-secondary"},r))}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-text",children:"Telemetry & Monitoring"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[e.jsx(l,{title:"Total Requests",value:((m=s==null?void 0:s.totalRequests)==null?void 0:m.toLocaleString())??"0",icon:e.jsx(G,{className:"h-5 w-5"})}),e.jsx(l,{title:"Avg Latency",value:s!=null&&s.avgLatencyMs?`${Math.round(s.avgLatencyMs)}ms`:"—",icon:e.jsx(W,{className:"h-5 w-5"})}),e.jsx(l,{title:"Error Rate",value:(s==null?void 0:s.errorRate)!==void 0?`${(s.errorRate*100).toFixed(1)}%`:"0%",icon:e.jsx(S,{className:"h-5 w-5"})}),e.jsx(l,{title:"Total Tokens",value:(()=>{const t=s==null?void 0:s.totalTokens;return typeof t=="number"?t.toLocaleString():t&&typeof t=="object"?(t.total??(t.prompt??0)+(t.completion??0)).toLocaleString():"0"})(),icon:e.jsx(B,{className:"h-5 w-5"})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[e.jsx(l,{title:"Traces",value:((u=i==null?void 0:i.totalTraces)==null?void 0:u.toString())??"0",icon:e.jsx(Z,{className:"h-5 w-5"})}),e.jsx(l,{title:"Avg Rounds/Task",value:((h=i==null?void 0:i.avgRounds)==null?void 0:h.toFixed(1))??"—",icon:e.jsx(O,{className:"h-5 w-5"})}),e.jsx(l,{title:"Soul Tasks",value:((g=a==null?void 0:a.totalTasks)==null?void 0:g.toString())??"0",icon:e.jsx(x,{className:"h-5 w-5"})}),e.jsx(l,{title:"Confidence",value:a!=null&&a.avgConfidence?`${Math.round(a.avgConfidence*100)}%`:"—",icon:e.jsx(x,{className:"h-5 w-5"})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[e.jsx(l,{title:"Alerts",value:R.toString(),icon:e.jsx(T,{className:"h-5 w-5"})}),e.jsx(l,{title:"Guardrail Violations",value:L.toString(),icon:e.jsx(T,{className:"h-5 w-5"})}),e.jsx(l,{title:"Total Errors",value:((j=s==null?void 0:s.totalErrors)==null?void 0:j.toString())??"0",icon:e.jsx(S,{className:"h-5 w-5"})}),e.jsx(l,{title:"Learned Patterns",value:((v=(p=a==null?void 0:a.patterns)==null?void 0:p.length)==null?void 0:v.toString())??"0",icon:e.jsx(x,{className:"h-5 w-5"})})]}),n&&e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[e.jsxs("h3",{className:"text-sm font-medium text-text-secondary mb-3 flex items-center gap-2",children:[e.jsx(_,{className:"h-4 w-4"}),"System Profile"]}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"OS"})," ",e.jsxs("span",{className:"text-text-secondary ml-1",children:[n.os," ",n.arch]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"CPU"})," ",e.jsxs("span",{className:"text-text-secondary ml-1",children:[n.cpuCores,"c — ",n.cpuModel.split("@")[0].trim()]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"RAM"})," ",e.jsxs("span",{className:"text-text-secondary ml-1",children:[Math.round(n.ramTotalMB/1024),"GB"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"GPU"})," ",e.jsx("span",{className:"text-text-secondary ml-1",children:n.gpuName})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"Node"})," ",e.jsx("span",{className:"text-text-secondary ml-1",children:n.nodeVersion})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"Install"})," ",e.jsx("span",{className:"text-text-secondary ml-1",children:n.installMethod})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"Version"})," ",e.jsx("span",{className:"text-text-secondary ml-1",children:n.version})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-text-muted",children:"ID"})," ",e.jsx("span",{className:"text-text-secondary ml-1 font-mono",children:n.installId.slice(0,8)})]})]})]}),(s==null?void 0:s.topTools)&&s.topTools.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-text-secondary mb-3",children:"Top Tools"}),e.jsx("div",{className:"space-y-2",children:s.topTools.map((t,r)=>{const c=s.topTools[0].count,d=c>0?t.count/c*100:0;return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-xs text-text-secondary w-24 truncate font-mono",children:t.tool}),e.jsx("div",{className:"flex-1 h-2 rounded-full bg-bg-tertiary overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-accent/60",style:{width:`${d}%`}})}),e.jsx("span",{className:"text-xs text-text-muted w-10 text-right",children:t.count})]},r)})})]}),(a==null?void 0:a.patterns)&&a.patterns.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-text-secondary mb-3",children:"Learned Task Patterns"}),e.jsx("div",{className:"grid grid-cols-1 gap-2 lg:grid-cols-2",children:a.patterns.slice(0,8).map((t,r)=>e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 rounded-lg bg-bg-secondary border border-border text-xs",children:[e.jsx("span",{className:"text-text-secondary",children:t.taskType}),e.jsxs("div",{className:"flex items-center gap-3 text-text-muted",children:[e.jsx("span",{className:"font-mono",children:t.bestStrategy}),e.jsxs("span",{children:[t.avgRounds.toFixed(1)," rounds"]}),e.jsxs("span",{className:t.successRate>=.7?"text-success":"text-warning",children:[Math.round(t.successRate*100),"%"]})]})]},r))})]})]})}export{Y as default};
@@ -1 +0,0 @@
1
- .react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}