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.
- package/README.md +200 -47
- package/assets/agent-skills/NOTICE-ECC.md +39 -0
- package/assets/agent-skills/agent-introspection-debugging/SKILL.md +153 -0
- package/assets/agent-skills/continuous-agent-loop/SKILL.md +45 -0
- package/assets/agent-skills/continuous-learning/SKILL.md +131 -0
- package/assets/agent-skills/continuous-learning/config.json +18 -0
- package/assets/agent-skills/continuous-learning/evaluate-session.sh +69 -0
- package/assets/agent-skills/production-audit/SKILL.md +206 -0
- package/assets/agent-skills/recursive-decision-ledger/SKILL.md +79 -0
- package/assets/agent-skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/assets/agent-skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/assets/agent-skills/verification-loop/SKILL.md +126 -0
- package/dist/agent/agent.js +104 -29
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/agentLoop.js +6 -2
- package/dist/agent/agentLoop.js.map +1 -1
- package/dist/agent/autoModeClassifier.js +26 -2
- package/dist/agent/autoModeClassifier.js.map +1 -1
- package/dist/agent/contextManager.js +1 -1
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/goalDriver.js +2 -0
- package/dist/agent/goalDriver.js.map +1 -1
- package/dist/agent/goalSpec.js +229 -0
- package/dist/agent/goalSpec.js.map +1 -0
- package/dist/agent/heartbeat.js +130 -0
- package/dist/agent/heartbeat.js.map +1 -0
- package/dist/agent/missionDecompose.js +38 -0
- package/dist/agent/missionDecompose.js.map +1 -0
- package/dist/agent/muscleMemory.js +291 -0
- package/dist/agent/muscleMemory.js.map +1 -0
- package/dist/agent/observationWriter.js +56 -0
- package/dist/agent/observationWriter.js.map +1 -0
- package/dist/agent/promptSectionCaps.js +6 -0
- package/dist/agent/promptSectionCaps.js.map +1 -1
- package/dist/agent/reminders.js +101 -0
- package/dist/agent/reminders.js.map +1 -0
- package/dist/agent/systemWidgets.js +41 -0
- package/dist/agent/systemWidgets.js.map +1 -0
- package/dist/agent/toolRunner.js +24 -0
- package/dist/agent/toolRunner.js.map +1 -1
- package/dist/agent/toolSearch.js +12 -2
- package/dist/agent/toolSearch.js.map +1 -1
- package/dist/channels/messenger.js +39 -0
- package/dist/channels/messenger.js.map +1 -1
- package/dist/config/config.js +7 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/schema.js +36 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/eval/harness.js +17 -4
- package/dist/eval/harness.js.map +1 -1
- package/dist/gateway/onboarding.js +91 -0
- package/dist/gateway/onboarding.js.map +1 -0
- package/dist/gateway/routes/skills.js +2 -1
- package/dist/gateway/routes/skills.js.map +1 -1
- package/dist/gateway/routes/studioRouter.js +88 -0
- package/dist/gateway/routes/studioRouter.js.map +1 -0
- package/dist/gateway/routes/watchRouter.js +4 -4
- package/dist/gateway/routes/watchRouter.js.map +1 -1
- package/dist/gateway/server.js +270 -46
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/slashCommands.js +31 -0
- package/dist/gateway/slashCommands.js.map +1 -1
- package/dist/mcp/agentTools.js +135 -0
- package/dist/mcp/agentTools.js.map +1 -0
- package/dist/mcp/server.js +19 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/graph.js +2 -0
- package/dist/memory/graph.js.map +1 -1
- package/dist/memory/taxonomy.js +117 -0
- package/dist/memory/taxonomy.js.map +1 -0
- package/dist/providers/errorTaxonomy.js +4 -0
- package/dist/providers/errorTaxonomy.js.map +1 -1
- package/dist/providers/moa.js +151 -0
- package/dist/providers/moa.js.map +1 -0
- package/dist/providers/modelCapabilities.js +78 -2
- package/dist/providers/modelCapabilities.js.map +1 -1
- package/dist/providers/ollama.js +9 -2
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.js +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openai_compat.js +52 -4
- package/dist/providers/openai_compat.js.map +1 -1
- package/dist/providers/router.js +16 -0
- package/dist/providers/router.js.map +1 -1
- package/dist/recipes/runner.js +8 -1
- package/dist/recipes/runner.js.map +1 -1
- package/dist/recipes/store.js +2 -1
- package/dist/recipes/store.js.map +1 -1
- package/dist/skills/builtin/codebase_explore.js +214 -0
- package/dist/skills/builtin/codebase_explore.js.map +1 -0
- package/dist/skills/builtin/config_audit.js +160 -0
- package/dist/skills/builtin/config_audit.js.map +1 -0
- package/dist/skills/builtin/delegate_agent.js +107 -0
- package/dist/skills/builtin/delegate_agent.js.map +1 -0
- package/dist/skills/builtin/memory_map.js +38 -0
- package/dist/skills/builtin/memory_map.js.map +1 -0
- package/dist/skills/builtin/reminders.js +67 -0
- package/dist/skills/builtin/reminders.js.map +1 -0
- package/dist/skills/builtin/spec.js +139 -0
- package/dist/skills/builtin/spec.js.map +1 -0
- package/dist/skills/builtin/widget_gallery.js +12 -5
- package/dist/skills/builtin/widget_gallery.js.map +1 -1
- package/dist/skills/frontmatterLoader.js +7 -1
- package/dist/skills/frontmatterLoader.js.map +1 -1
- package/dist/skills/registry.js +12 -0
- package/dist/skills/registry.js.map +1 -1
- package/dist/substrate/traceBus.js.map +1 -1
- package/dist/telemetry/traceStore.js +127 -0
- package/dist/telemetry/traceStore.js.map +1 -0
- package/dist/utils/benchMode.js +8 -0
- package/dist/utils/benchMode.js.map +1 -0
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/contrast.js +69 -0
- package/dist/utils/contrast.js.map +1 -0
- package/dist/watch/sessionContext.js +14 -0
- package/dist/watch/sessionContext.js.map +1 -0
- package/dist/watch/sessionTrace.js +51 -0
- package/dist/watch/sessionTrace.js.map +1 -0
- package/dist/watch/studioBuffer.js +53 -0
- package/dist/watch/studioBuffer.js.map +1 -0
- package/package.json +29 -28
- package/ui/dist/assets/AboutYouMemory-57X5SqHQ.js +1 -0
- package/ui/dist/assets/AuditPanel-AyB8ciLZ.js +1 -0
- package/ui/dist/assets/AutonomyPanel-wmVPr-n3.js +1 -0
- package/ui/dist/assets/AutopilotPanel-CbLy4lJP.js +1 -0
- package/ui/dist/assets/AutoresearchPanel-DxRO1rBF.js +1 -0
- package/ui/dist/assets/BackupPanel-BUh9rQ-3.js +1 -0
- package/ui/dist/assets/BrowserPanel-OqKwGrIL.js +1 -0
- package/ui/dist/assets/CPActivity-DGfS7EY3.js +1 -0
- package/ui/dist/assets/CPAgentDetail-p0Kvzhhb.js +1 -0
- package/ui/dist/assets/CPAgents-B6wSSQZM.js +1 -0
- package/ui/dist/assets/CPApprovals-CYv9Do0i.js +1 -0
- package/ui/dist/assets/CPCosts-Dx6Q71rN.js +1 -0
- package/ui/dist/assets/CPDashboard-DA8-tE-l.js +1 -0
- package/ui/dist/assets/CPFiles-BJ49tzai.js +1 -0
- package/ui/dist/assets/CPGoals-h0dKL5V_.js +1 -0
- package/ui/dist/assets/CPInbox-CDvefgNH.js +1 -0
- package/ui/dist/assets/CPIssueDetail-CnmLzzDD.js +1 -0
- package/ui/dist/assets/CPIssues-DknAIMyl.js +1 -0
- package/ui/dist/assets/CPLayout-C2nqgkmY.js +2 -0
- package/ui/dist/assets/CPOrg-tDbHFphX.js +1 -0
- package/ui/dist/assets/CPRuns-UlrIURqG.js +1 -0
- package/ui/dist/assets/CPSocial-B-gHgvEw.js +1 -0
- package/ui/dist/assets/CPVoice-CJy938ZF.js +1 -0
- package/ui/dist/assets/ChannelsPanel-DLbxg1zO.js +1 -0
- package/ui/dist/assets/CheckpointsPanel-BB6TT0aE.js +1 -0
- package/ui/dist/assets/CommandPostHub-fIslwU_t.js +2 -0
- package/ui/dist/assets/ConfirmDialog-6hcNjmAh.js +9 -0
- package/ui/dist/assets/CronPanel-DLpw3Y25.js +1 -0
- package/ui/dist/assets/DataTable-KVqtDzvP.js +1 -0
- package/ui/dist/assets/DreamPanel-lcMXpbEb.js +5 -0
- package/ui/dist/assets/EmptyState-D-Dg8B8r.js +1 -0
- package/ui/dist/assets/EvalHarnessPanel-BKzRiiQw.js +2 -0
- package/ui/dist/assets/EvalPanel-Dtodacmj.js +1 -0
- package/ui/dist/assets/FileViewer-DjcVKkO2.js +60 -0
- package/ui/dist/assets/FilesPanel-BI90Pplh.js +1 -0
- package/ui/dist/assets/FleetPanel-tr0wjAwr.js +1 -0
- package/ui/dist/assets/HomelabPanel-m8vMm5rE.js +1 -0
- package/ui/dist/assets/InfraView-3WriJnyE.js +2 -0
- package/ui/dist/assets/IntegrationsPanel-BmL70fOw.js +1 -0
- package/ui/dist/assets/IntelligenceView-BGVxCKD3.js +2 -0
- package/ui/dist/assets/LearningPanel-CrYLQ6eV.js +1 -0
- package/ui/dist/assets/LiveStudio-CnW3eZYF.js +2 -0
- package/ui/dist/assets/LogsPanel-DbShr4Ic.js +1 -0
- package/ui/dist/assets/McpPanel-uMYEsPI4.js +1 -0
- package/ui/dist/assets/MemoryGraphPanel-C7-Z8f0v.js +1 -0
- package/ui/dist/assets/MemoryTaxonomyPanel-KrxN8U1G.js +1 -0
- package/ui/dist/assets/MemoryWikiPanel-DI3q6IHC.js +1 -0
- package/ui/dist/assets/MeshPanel-D4-g2tlu.js +1 -0
- package/ui/dist/assets/MissionCanvas-D8cjakJe.js +61 -0
- package/ui/dist/assets/MissionChat-BvqCUf1E.js +3 -0
- package/ui/dist/assets/MissionLibrary-CZoJQ9WD.js +1 -0
- package/ui/dist/assets/MissionStart-CXCq-_AD.js +1 -0
- package/ui/dist/assets/NvidiaPanel-BfI1K5Pg.js +1 -0
- package/ui/dist/assets/OrganismPanel-B7Gm9pP-.js +1 -0
- package/ui/dist/assets/OverviewPanel-B9tKWRK2.js +1 -0
- package/ui/dist/assets/PageHeader-CH85uoZG.js +1 -0
- package/ui/dist/assets/PersonaProfilesPanel-BPi8fl-U.js +3 -0
- package/ui/dist/assets/PersonasPanel-Dwr7sycT.js +1 -0
- package/ui/dist/assets/PhoneDeskPanel-D7qc6wUI.js +1 -0
- package/ui/dist/assets/RecipesPanel-DcqPWRSU.js +1 -0
- package/ui/dist/assets/SecurityPanel-Bv_B9Ahf.js +1 -0
- package/ui/dist/assets/SelfImprovePanel-Ca4rGwEG.js +1 -0
- package/ui/dist/assets/SelfProposalsPanel-DteMSASq.js +1 -0
- package/ui/dist/assets/SessionsPanel-BdbbKTbL.js +1 -0
- package/ui/dist/assets/SessionsTab-BJipiVJs.js +1 -0
- package/ui/dist/assets/SettingsPanel-mV7ykOCc.js +1 -0
- package/ui/dist/assets/SettingsView-Bu_wYTT5.js +2 -0
- package/ui/dist/assets/SkeletonLoader-9H7QWa9E.js +1 -0
- package/ui/dist/assets/SkillsPanel-CHwX2kDR.js +1 -0
- package/ui/dist/assets/SomaView-Bpsm4ZW7.js +5 -0
- package/ui/dist/assets/SomaView-Dghh9om4.css +1 -0
- package/ui/dist/assets/StatCard-wmSgMAM3.js +1 -0
- package/ui/dist/assets/TeamsPanel-XJiHxdDX.js +1 -0
- package/ui/dist/assets/TelemetryPanel-_pmGVxpO.js +1 -0
- package/ui/dist/assets/TitanCanvas-Cb7KG80W.css +1 -0
- package/ui/dist/assets/TitanCanvas-CmLy7p2N.js +883 -0
- package/ui/dist/assets/ToolsView-PHizHZBx.js +2 -0
- package/ui/dist/assets/TraceViewer-CYAzIcfB.js +1 -0
- package/ui/dist/assets/TracesPanel-CRSN_dzK.js +1 -0
- package/ui/dist/assets/TrainingPanel-B9rcuMsV.js +1 -0
- package/ui/dist/assets/VoiceOverlay-BL_ns1ZA.js +7 -0
- package/ui/dist/assets/VramPanel-BNPQ06_9.js +1 -0
- package/ui/dist/assets/WatchView-BgAkNnur.js +13 -0
- package/ui/dist/assets/WorkTab-RRpPpEOg.js +1 -0
- package/ui/dist/assets/WorkflowBuilderPanel-BPHIH8pf.js +1 -0
- package/ui/dist/assets/WorkflowsPanel-DqtmT0NB.js +1 -0
- package/ui/dist/assets/approvalHeadline-BRg3ReTi.js +1 -0
- package/ui/dist/assets/archive-DcK9HrbE.js +1 -0
- package/ui/dist/assets/arrow-left-4c2FnES1.js +1 -0
- package/ui/dist/assets/book-open-Ds_yciQm.js +1 -0
- package/ui/dist/assets/bot-CWDCc265.js +1 -0
- package/ui/dist/assets/chart-column-hhZMdCgB.js +1 -0
- package/ui/dist/assets/chevron-right-A_pvnRh_.js +1 -0
- package/ui/dist/assets/circle-check-big-C-JUM7wb.js +1 -0
- package/ui/dist/assets/circle-stop-yZuG9ZAE.js +1 -0
- package/ui/dist/assets/clipboard-list-C2HUEjZc.js +1 -0
- package/ui/dist/assets/clock-DSPgndSD.js +1 -0
- package/ui/dist/assets/clsx-CjueKrWZ.js +1 -0
- package/ui/dist/assets/createLucideIcon-qnlrxww7.js +1 -0
- package/ui/dist/assets/database-C1SgHa8T.js +1 -0
- package/ui/dist/assets/dollar-sign-D9siqK91.js +1 -0
- package/ui/dist/assets/download-CJZWQNfV.js +1 -0
- package/ui/dist/assets/external-link-CpQLWKKE.js +1 -0
- package/ui/dist/assets/file-text-BbGTi-Po.js +1 -0
- package/ui/dist/assets/flask-conical-B1YVft4E.js +1 -0
- package/ui/dist/assets/folder-EbR-w2Mq.js +1 -0
- package/ui/dist/assets/funnel-D2Dkn8Pf.js +1 -0
- package/ui/dist/assets/git-branch-CQ2yNSzU.js +1 -0
- package/ui/dist/assets/git-pull-request-BxL5wlGX.js +1 -0
- package/ui/dist/assets/index-Cz8190xO.css +2 -0
- package/ui/dist/assets/index-WI-E4I3h.js +243 -0
- package/ui/dist/assets/jsx-runtime-B15e6lOy.js +1 -0
- package/ui/dist/assets/layers-BPu5SRjI.js +1 -0
- package/ui/dist/assets/legacy-BIzifT-t.js +3 -0
- package/ui/dist/assets/lightbulb-BY7CpMte.js +1 -0
- package/ui/dist/assets/link-VDQkrGJw.js +1 -0
- package/ui/dist/assets/list-todo-DfnNUV_T.js +1 -0
- package/ui/dist/assets/message-square-BpzrINHz.js +1 -0
- package/ui/dist/assets/mic-De6oZFaV.js +1 -0
- package/ui/dist/assets/missions-y-qg_f9b.js +1 -0
- package/ui/dist/assets/network-CM7y1ats.js +1 -0
- package/ui/dist/assets/pause-C4TDJSfA.js +1 -0
- package/ui/dist/assets/pencil-Dd_vzHE-.js +1 -0
- package/ui/dist/assets/play-9WxZWVHA.js +1 -0
- package/ui/dist/assets/plug-Dm25Wbrc.js +1 -0
- package/ui/dist/assets/plus-CHryCIkk.js +1 -0
- package/ui/dist/assets/radio-D-XnoAVu.js +1 -0
- package/ui/dist/assets/refresh-cw-Disd5wRB.js +1 -0
- package/ui/dist/assets/rotate-ccw-Cw1T2W1T.js +1 -0
- package/ui/dist/assets/save-DP7oNar2.js +1 -0
- package/ui/dist/assets/search-aNVcX-nv.js +1 -0
- package/ui/dist/assets/send-D7iQD57b.js +1 -0
- package/ui/dist/assets/server-DFfeYjoM.js +1 -0
- package/ui/dist/assets/settings-5NWXzgyY.js +1 -0
- package/ui/dist/assets/shared-DLz_Jtg3.js +1 -0
- package/ui/dist/assets/shield-check-Cd50jCAn.js +1 -0
- package/ui/dist/assets/square-DlcoJ1ZM.js +1 -0
- package/ui/dist/assets/terminal-DgFz2Vsf.js +1 -0
- package/ui/dist/assets/test-tube-BimtS92_.js +1 -0
- package/ui/dist/assets/toggle-right-BMaR-sfT.js +1 -0
- package/ui/dist/assets/trash-2-CwUv7ww1.js +1 -0
- package/ui/dist/assets/trending-up-Ba9TwEow.js +1 -0
- package/ui/dist/assets/trophy-Gfv1QC45.js +1 -0
- package/ui/dist/assets/volume-2-BVlfVl2U.js +1 -0
- package/ui/dist/assets/wifi-off-CWLeusSV.js +1 -0
- package/ui/dist/assets/zoom-out-DeggJ7RM.js +1 -0
- package/ui/dist/index.html +4 -2
- package/ui/dist/sw.js +1 -1
- package/ui/dist/assets/AuditPanel-BaftX5MP.js +0 -1
- package/ui/dist/assets/AutonomyPanel-CmaXJV8d.js +0 -11
- package/ui/dist/assets/AutopilotPanel-CbohPtXW.js +0 -1
- package/ui/dist/assets/AutoresearchPanel-DCwiQ2v2.js +0 -6
- package/ui/dist/assets/BackupPanel-DAy9G7Wt.js +0 -1
- package/ui/dist/assets/BrowserPanel-D6UaSxap.js +0 -6
- package/ui/dist/assets/CPActivity-BYDsUoMn.js +0 -1
- package/ui/dist/assets/CPAgentDetail-Bb9-GAJY.js +0 -1
- package/ui/dist/assets/CPAgents-BTZuGnki.js +0 -1
- package/ui/dist/assets/CPApprovals-BME2ARkO.js +0 -1
- package/ui/dist/assets/CPCosts-mOXwWq0i.js +0 -1
- package/ui/dist/assets/CPDashboard-CTlKGXXQ.js +0 -1
- package/ui/dist/assets/CPFiles-BO73EZwJ.js +0 -1
- package/ui/dist/assets/CPGoals-BNWhNP14.js +0 -1
- package/ui/dist/assets/CPInbox-ybe4r8LW.js +0 -16
- package/ui/dist/assets/CPIssueDetail-DaMMGbjw.js +0 -1
- package/ui/dist/assets/CPIssues-BgpQOISw.js +0 -1
- package/ui/dist/assets/CPLayout-bgErauTx.js +0 -2
- package/ui/dist/assets/CPOrg-C8l5SIWJ.js +0 -8
- package/ui/dist/assets/CPRuns-DB8S7loF.js +0 -1
- package/ui/dist/assets/CPSocial-Qw5rKy_4.js +0 -11
- package/ui/dist/assets/CPVoice-DfwHPewA.js +0 -1
- package/ui/dist/assets/ChannelsPanel-DS21E-Iz.js +0 -1
- package/ui/dist/assets/CheckpointsPanel-9-l_8GdG.js +0 -1
- package/ui/dist/assets/CommandPostHub-z55Yrhj1.js +0 -24
- package/ui/dist/assets/CronPanel-kEZK3gpx.js +0 -1
- package/ui/dist/assets/DataTable-PnhPeDBG.js +0 -1
- package/ui/dist/assets/DreamPanel-DIrtlk2K.js +0 -15
- package/ui/dist/assets/EmptyState-CfvU7SdB.js +0 -1
- package/ui/dist/assets/EvalHarnessPanel-uYb_ZEQG.js +0 -2
- package/ui/dist/assets/EvalPanel-CDG-njyj.js +0 -1
- package/ui/dist/assets/FileViewer-CVO3TRs3.js +0 -61
- package/ui/dist/assets/FilesPanel-CaLPog2e.js +0 -16
- package/ui/dist/assets/FleetPanel-BtlaV6pH.js +0 -1
- package/ui/dist/assets/HomelabPanel-BZvN4LPM.js +0 -6
- package/ui/dist/assets/InfraView-C0zEuFrR.js +0 -2
- package/ui/dist/assets/InlineEditableField-mBzpbcLB.js +0 -1
- package/ui/dist/assets/Input-CbrMbLgn.js +0 -1
- package/ui/dist/assets/IntegrationsPanel-B4TyR6jC.js +0 -1
- package/ui/dist/assets/IntelligenceView-DZ4HxYZ3.js +0 -2
- package/ui/dist/assets/LearningPanel-B4RIm_iQ.js +0 -1
- package/ui/dist/assets/LogsPanel-DbP3Mwnr.js +0 -1
- package/ui/dist/assets/McpPanel-BmNUFozc.js +0 -1
- package/ui/dist/assets/MemoryGraphPanel-JPurHV0L.js +0 -16
- package/ui/dist/assets/MemoryWikiPanel-DdvCAZHa.js +0 -6
- package/ui/dist/assets/MeshPanel-Bf-4brXL.js +0 -11
- package/ui/dist/assets/MissionCanvas-CJyhnauG.js +0 -72
- package/ui/dist/assets/MissionChat-C2Nto3zM.js +0 -7
- package/ui/dist/assets/MissionLibrary-RXyBHsLL.js +0 -5
- package/ui/dist/assets/MissionStart-wUkcEP0T.js +0 -1
- package/ui/dist/assets/Modal-BmS7C6FN.js +0 -1
- package/ui/dist/assets/NvidiaPanel-4DlcQlyl.js +0 -1
- package/ui/dist/assets/OrganismPanel-C2LYDPrn.js +0 -1
- package/ui/dist/assets/OverviewPanel-DK8uuq4D.js +0 -1
- package/ui/dist/assets/PageHeader-bnc85wQN.js +0 -1
- package/ui/dist/assets/PersonaProfilesPanel-DGtokXUu.js +0 -8
- package/ui/dist/assets/PersonasPanel-dR8VppcD.js +0 -1
- package/ui/dist/assets/PhoneDeskPanel-CdVOY7H9.js +0 -11
- package/ui/dist/assets/RecipesPanel-D3Zs2wxr.js +0 -1
- package/ui/dist/assets/SecurityPanel-BMERf796.js +0 -1
- package/ui/dist/assets/SelfImprovePanel-BxqWHXCU.js +0 -1
- package/ui/dist/assets/SelfProposalsPanel-CuC94vdx.js +0 -2
- package/ui/dist/assets/SessionsPanel-CQ8qvzp7.js +0 -1
- package/ui/dist/assets/SessionsTab-B3eHV3jf.js +0 -1
- package/ui/dist/assets/SettingsPanel-Cumls7N2.js +0 -1
- package/ui/dist/assets/SettingsView-BtA67pol.js +0 -2
- package/ui/dist/assets/SkeletonLoader-Cax7YTqW.js +0 -1
- package/ui/dist/assets/SkillsPanel-CA415CT8.js +0 -11
- package/ui/dist/assets/SomaView-BtCkeWfZ.css +0 -1
- package/ui/dist/assets/SomaView-eG3wI4S1.js +0 -5
- package/ui/dist/assets/StatCard-Djr487DV.js +0 -1
- package/ui/dist/assets/StatusBadge-JpCoA33_.js +0 -1
- package/ui/dist/assets/Tabs-DJHu-roP.js +0 -1
- package/ui/dist/assets/TeamsPanel-C_Vu6vnY.js +0 -1
- package/ui/dist/assets/TelemetryPanel-D4PXsd-X.js +0 -1
- package/ui/dist/assets/TitanCanvas-BfitWg9R.css +0 -1
- package/ui/dist/assets/TitanCanvas-TuYZSZO7.js +0 -1117
- package/ui/dist/assets/ToolsView-BvTN6vFn.js +0 -2
- package/ui/dist/assets/Tooltip-B1LhTXJ8.js +0 -6
- package/ui/dist/assets/TraceViewer-Bh8Jo3Dr.js +0 -1
- package/ui/dist/assets/TrainingPanel-Dmbd1rJ-.js +0 -1
- package/ui/dist/assets/VoiceOverlay-B_ss7Zg_.js +0 -17
- package/ui/dist/assets/VramPanel-CPICbZ2s.js +0 -1
- package/ui/dist/assets/WatchView-BCgLVfiV.js +0 -13
- package/ui/dist/assets/WorkTab-iptofXO9.js +0 -1
- package/ui/dist/assets/WorkflowsPanel-3RYkFHyf.js +0 -11
- package/ui/dist/assets/approvalHeadline-DB9SgR-9.js +0 -1
- package/ui/dist/assets/archive-gZFnGd5A.js +0 -6
- package/ui/dist/assets/arrow-left-qA0Qer2h.js +0 -6
- package/ui/dist/assets/book-open-DIxdPqmD.js +0 -6
- package/ui/dist/assets/bot-CvIF1uHi.js +0 -6
- package/ui/dist/assets/chart-column-BQiM-Td4.js +0 -6
- package/ui/dist/assets/check-DgyDEFtq.js +0 -6
- package/ui/dist/assets/chevron-right-CQ1NTOtd.js +0 -6
- package/ui/dist/assets/chevron-up-UyfdjRp6.js +0 -6
- package/ui/dist/assets/circle-check-big-CAFcaPPH.js +0 -6
- package/ui/dist/assets/circle-stop-C-8xGv0n.js +0 -6
- package/ui/dist/assets/clipboard-list-9DdqBj1F.js +0 -6
- package/ui/dist/assets/clock-CF9BCIpL.js +0 -6
- package/ui/dist/assets/clsx-B-dksMZM.js +0 -1
- package/ui/dist/assets/dollar-sign-LDRZBae6.js +0 -6
- package/ui/dist/assets/download-BBNXvBO0.js +0 -6
- package/ui/dist/assets/external-link-D_ji4Bec.js +0 -6
- package/ui/dist/assets/file-text-DrdTDEYp.js +0 -6
- package/ui/dist/assets/flask-conical-BGn5PgFX.js +0 -6
- package/ui/dist/assets/folder-BeZZUGnK.js +0 -6
- package/ui/dist/assets/funnel-CAJgGO5M.js +0 -6
- package/ui/dist/assets/git-branch-BcXabeOs.js +0 -6
- package/ui/dist/assets/index-CUgepw5Q.js +0 -337
- package/ui/dist/assets/index-Dm6zcSTS.css +0 -1
- package/ui/dist/assets/layers-DxYDmPA_.js +0 -6
- package/ui/dist/assets/legacy-dHWI7k8P.js +0 -3
- package/ui/dist/assets/lightbulb-B0Du4SM4.js +0 -6
- package/ui/dist/assets/link-CUpaumqr.js +0 -6
- package/ui/dist/assets/list-todo-CDDhmPQB.js +0 -6
- package/ui/dist/assets/message-square-D5VWlv-Q.js +0 -6
- package/ui/dist/assets/mic-Ddcc6Ann.js +0 -6
- package/ui/dist/assets/missions-2zox16Tc.js +0 -1
- package/ui/dist/assets/network-DaJ7ugwX.js +0 -6
- package/ui/dist/assets/pause-BukaK6rs.js +0 -6
- package/ui/dist/assets/pencil-D_YwQBeg.js +0 -6
- package/ui/dist/assets/play-BjdwtYMk.js +0 -6
- package/ui/dist/assets/plug-yISDdeW2.js +0 -6
- package/ui/dist/assets/plus-BSjTdepW.js +0 -6
- package/ui/dist/assets/proxy-CWET5FFX.js +0 -9
- package/ui/dist/assets/radio-B7kX_yWE.js +0 -6
- package/ui/dist/assets/refresh-cw-CwDpzXUn.js +0 -6
- package/ui/dist/assets/rotate-ccw-7SQDTI0_.js +0 -6
- package/ui/dist/assets/save-CjTPAQM0.js +0 -6
- package/ui/dist/assets/search-BP7VlNxX.js +0 -6
- package/ui/dist/assets/send-C2XDuRPf.js +0 -6
- package/ui/dist/assets/server-BE8W-AT4.js +0 -6
- package/ui/dist/assets/shield-check-s7la2J2K.js +0 -6
- package/ui/dist/assets/terminal-B8IK4WsO.js +0 -6
- package/ui/dist/assets/test-tube-Xfn9DJeg.js +0 -11
- package/ui/dist/assets/toggle-right-CHpzOIlj.js +0 -11
- package/ui/dist/assets/trash-2-B1C85ePK.js +0 -6
- package/ui/dist/assets/trending-up-DDGHQZY1.js +0 -6
- package/ui/dist/assets/trophy-D0LhJSPA.js +0 -6
- package/ui/dist/assets/volume-2-DMaE91b5.js +0 -6
- package/ui/dist/assets/wifi-off-DR9h8HGA.js +0 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[//]: # "npm-text-start"
|
|
2
2
|
|
|
3
|
-
> **TITAN** — A local-first AI agent framework that runs on your hardware, with your models, under your control. Spawn a team of specialists around a goal, watch them work
|
|
3
|
+
> **TITAN** — A local-first AI agent framework that runs on your hardware, with your models, under your control. Spawn a team of specialists around a goal, watch them work live — step-by-step, with real file diffs — and stay in the loop without giving up control. `npm i -g titan-agent`
|
|
4
4
|
> [//]: # (npm-text-end)
|
|
5
5
|
|
|
6
6
|
<div align="center">
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<strong>The local-first AI agent framework
|
|
18
|
-
<br><small>Your hardware. Your models. Your control. Built in TypeScript, MIT-licensed,
|
|
17
|
+
<strong>The local-first AI agent framework that teaches itself, mixes councils of models, plays well with other agents — and lets you watch it work.</strong>
|
|
18
|
+
<br><small>Your hardware. Your models. Your control. Built in TypeScript, MIT-licensed, 40K+ lifetime installs.</small>
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
@@ -26,12 +26,18 @@
|
|
|
26
26
|
<a href="https://github.com/sponsors/Djtony707"><img src="https://img.shields.io/badge/sponsor-♥-ec4899" alt="Sponsor"/></a>
|
|
27
27
|
</p>
|
|
28
28
|
|
|
29
|
+
<p align="center">
|
|
30
|
+
<img src="docs/assets/titan-desk.gif" alt="The TITAN Living Desk — the mascot announces a self-learned skill and celebrates on the canvas" width="880"/>
|
|
31
|
+
<br><small><em>The Living Desk: home is a canvas, the mascot is a creature — here it announces a skill it just taught itself.</em></small>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
29
34
|
<p align="center">
|
|
30
35
|
<a href="#whats-new"><img src="https://img.shields.io/npm/v/titan-agent?color=blueviolet&label=version" alt="npm version"/></a>
|
|
31
|
-
<img src="https://img.shields.io/badge/providers-
|
|
36
|
+
<img src="https://img.shields.io/badge/providers-36-purple" alt="36 LLM Providers"/>
|
|
32
37
|
<img src="https://img.shields.io/badge/channels-19-orange" alt="19 Channels"/>
|
|
33
|
-
<img src="https://img.shields.io/badge/skills-
|
|
34
|
-
<img src="https://img.shields.io/badge/
|
|
38
|
+
<img src="https://img.shields.io/badge/skills-~143%20loaded-teal" alt="~143 skills loaded"/>
|
|
39
|
+
<img src="https://img.shields.io/badge/WCAG-2.1%20AA-blueviolet" alt="WCAG 2.1 AA"/>
|
|
40
|
+
<img src="https://img.shields.io/badge/tests-8000%2B-green" alt="8000+ tests"/>
|
|
35
41
|
</p>
|
|
36
42
|
|
|
37
43
|
<p align="center">
|
|
@@ -44,15 +50,132 @@
|
|
|
44
50
|
|
|
45
51
|
<a id="whats-new"></a>
|
|
46
52
|
|
|
47
|
-
## What's new in
|
|
53
|
+
## What's new in v7.1.0 "Council" — Local-First Intelligence, Together
|
|
54
|
+
|
|
55
|
+
**Agents advising agents, models sized to their machines, and benchmarks you can trust.**
|
|
48
56
|
|
|
49
|
-
|
|
57
|
+
### 🧠 `/moa` — Mixture of Agents
|
|
58
|
+
Ask a **council**, not a model: N reference advisors answer in parallel (trimmed context, no tools, per-advisor timeouts), and one acting aggregator synthesizes the answer with full tool use. Advisors default to **your own local models across your own machines** — the mixture costs nothing and parallelizes across GPUs. `/moa <prompt>` for one answer, `/moa use <preset>` for a session, presets in config.
|
|
50
59
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- **6.5.2 — Dependency hygiene.** Removed a vestigial pnpm lockfile and bumped `hono` + a transitive `uuid` — open Dependabot alerts dropped 38 → 4.
|
|
60
|
+
### 🌐 Works alongside Hermes Agent & OpenClaw — the MCP triangle
|
|
61
|
+
TITAN's MCP server now speaks **whole-agent**: `titan_chat`, `titan_delegate_task` / `titan_task_status`, `titan_moa`, `titan_status`. One config line makes TITAN a tool inside Hermes or OpenClaw — and TITAN's MCP client consumes their servers right back. Six directed edges, all shipped surfaces, no adapters. ([docs/INTEROP.md](docs/INTEROP.md))
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
### 📏 Context-Fit — local models become first-class
|
|
64
|
+
TITAN now **learns each deployment's real context ceiling from live traffic** and sizes its toolset to fit: small-context deployments get a lean toolset instead of a fatal overflow, and every request got ~4K tokens lighter (the tool catalog shrank 5×). Strict local backends (vLLM/llama.cpp/LM Studio template quirks) are handled; gateway misroutes fail fast.
|
|
65
|
+
|
|
66
|
+
**Proof, not vibes**: under the new `TITAN_BENCH=1` isolation mode, **Qwen3.6-35B-A3B NVFP4 on DGX-Spark-class hardware scores 85% through TITAN's harness — tying the RTX 5090's best local model.** Full corrected tables in [benchmarks/MODEL_COMPARISON.md](benchmarks/MODEL_COMPARISON.md).
|
|
67
|
+
|
|
68
|
+
See **[CHANGELOG.md](CHANGELOG.md)** for the complete v7.1.0 entry.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## What's new in v7.0.0 "Independence" — Alive, Welcoming, Model-Agnostic
|
|
73
|
+
|
|
74
|
+
**The Independence Day release** — because local-first *is* independence: your AI, your hardware, your data. Four themes: **TITAN provably teaches itself from your usage, first run takes one minute, it lives on your machine between conversations, and it runs well on any capable model.** (Connect your first model and you'll see the fireworks. 🎆)
|
|
75
|
+
|
|
76
|
+
### 💪 Muscle Memory — self-improvement you can actually trust
|
|
77
|
+
|
|
78
|
+
The #1 wish across agent-framework reviews: agents that turn repeated workflows into skills *by themselves* — without the untrustworthy self-grading that plagues every attempt at it. TITAN ships it, with proof:
|
|
79
|
+
|
|
80
|
+
- **It notices.** Repeat a workflow ~3 times and TITAN mines the pattern from its own task trajectories and drafts a reusable, parameterized skill with its own slash command.
|
|
81
|
+
- **The replay exam.** Before you ever see a learned skill, it must **reproduce the original workflow's exact tool path against your real historical request**, verified by the deterministic eval harness. No self-praise — grounded proof. Failed drafts stay hidden.
|
|
82
|
+
- **Structurally safe.** Exams replay inside a tool allowlist sandbox; workflows containing side-effectful tools (send / post / delete / deploy / …) are never mined at all; nothing ever auto-adopts.
|
|
83
|
+
- **One click to adopt** → instant `/slash-command` in every channel, a savings ledger per run, and a mascot that announces what it learned. "Not for me" is remembered forever.
|
|
84
|
+
|
|
85
|
+
### 👋 Welcome Mode — first run in about a minute
|
|
86
|
+
|
|
87
|
+
- **The gateway always boots.** No Ollama, no API keys? v7.0 starts anyway and greets you — no more terminal refusal before you've ever seen the desk.
|
|
88
|
+
- **The dashboard walks you in:** one-click connect when Ollama is detected (models auto-listed), or paste an Anthropic/OpenAI key, or point at any OpenAI-compatible endpoint (LiteLLM, vLLM, LM Studio, llama.cpp).
|
|
89
|
+
- **No restart** — connect a model and the desk unlocks live. Chat answers with friendly setup guidance until then.
|
|
90
|
+
|
|
91
|
+
### 🧠 Model-agnostic harness
|
|
92
|
+
|
|
93
|
+
TITAN no longer assumes one vendor's quirks. The generic `openai_compat` provider (DeepSeek / Qwen / GLM / Kimi / MiniMax / xAI / Groq / …) now honors per-model tool-calling instead of a blind passthrough:
|
|
94
|
+
|
|
95
|
+
- **Native tool-calls per vendor** via a shared **per-model capability registry** (qwen3.6, deepseek-v4, glm-5.1, kimi-k2.6, minimax, nemotron-3) used by *both* the Ollama and openai-compat paths.
|
|
96
|
+
- **`forceToolUse` → `tool_choice`** per-model, plus JSON `format` (`response_format` + a 2 KB anti-truncation floor), with a guard for the DeepSeek-reasoner HTTP-400 case.
|
|
97
|
+
- **Adaptive `max_tokens`** — parse a deployment's real ceiling out of a 400 and retry, so a static `maxOutput` never hard-fails a model on a constrained deployment.
|
|
98
|
+
- **Deterministic system-widget gates** — "show backup" reliably renders the widget no matter which model is driving, instead of depending on per-model formatting adherence.
|
|
99
|
+
|
|
100
|
+
> TITAN is deliberately **not** tuned to one LLM. Model-fit and harness bugs are kept separate so the framework stays model-agnostic.
|
|
101
|
+
|
|
102
|
+
### ♿ Accessible by design (WCAG 2.1 AA)
|
|
103
|
+
|
|
104
|
+
- a11y primitives across the UI: Input / Modal / Toast / Button focus + ARIA, a skip-link and `<main>` landmark, and a global focus-visible baseline.
|
|
105
|
+
- A new **"Studio" theme** (clean neutral graphite) plus a **WCAG contrast-audit harness** that programmatically proves every theme meets AA.
|
|
106
|
+
|
|
107
|
+
### 👀 Living-agents foundation — *watch it work*
|
|
108
|
+
|
|
109
|
+
A session-scoped **event spine** now emits `tool:call` / `tool:result` events (with a diff for file changes) as the agent runs. On top of it:
|
|
110
|
+
|
|
111
|
+
- **Live Studio** — a "watch it work" split-pane that shows a **step timeline**, **live file diffs**, and a **changed-files rail** as the agent operates.
|
|
112
|
+
- Sessions are **URL-addressable and replayable** — share a link, scrub the timeline.
|
|
113
|
+
|
|
114
|
+
*(The Live Studio ships with the timeline + diff stream + changed-files list. A live preview server, a one-click-revert button, and the round/token spine tail are on the [roadmap](#roadmap) — not in v7.0.)*
|
|
115
|
+
|
|
116
|
+
### 🫀 Alive by default — the life loop
|
|
117
|
+
|
|
118
|
+
TITAN doesn't just respond — it lives on your machine:
|
|
119
|
+
|
|
120
|
+
- **The Heartbeat.** Every ~30 minutes TITAN checks its world and decides if ONE thing is worth telling you, unprompted — the mascot says it. Default is silence; quiet hours respected.
|
|
121
|
+
- **Proactive memory.** It quietly notices durable things about you from real conversations (strict rules, never sensitive categories) — what it learns shapes every future reply and fills the plain-language **"What I know about you"** page.
|
|
122
|
+
- **It proposes work.** When a drive is genuinely neglected, Soma files a suggestion into your approvals — shadow-rehearsed first, never auto-run. (v7.0 fixes the threshold that had made this mathematically impossible.)
|
|
123
|
+
- **Real reminders, honestly kept.** "Remind me Friday at 5pm" actually fires — the mascot announces it at the right time. And a built-in anti-fabrication guard means TITAN can never claim it scheduled something it didn't.
|
|
124
|
+
|
|
125
|
+
### 🪵 The Living Desk — home is a canvas, the mascot is a creature
|
|
126
|
+
|
|
127
|
+
- **Home IS your canvas.** The "Ask TITAN" input is itself a widget — move it, resize it, build your desk around it. Five desk themes (incl. the new **Night Desk** dark walnut), zoomable 40–200%.
|
|
128
|
+
- **The mascot wanders the desk**, goes wherever you place it, narrates work in plain English, celebrates finishes, carries your day-streak flame, and greets you with what it finished while you were away.
|
|
129
|
+
- **Edit widgets by talking** — the editor's "Ask AI" bar rewrites a widget from a plain-English request; History undoes.
|
|
130
|
+
- **Five doors, not 48** — Home · Desk · Studio · Memory · Workshop. All the power is still there, behind the Workshop door.
|
|
131
|
+
|
|
132
|
+
### 🔭 Observability & tracing
|
|
133
|
+
|
|
134
|
+
- Per-run **spans** (latency, tokens, cost, tools) with a live summary and **OTel export**.
|
|
135
|
+
- File-backed per-run trace store at `$TITAN_HOME/traces`, served via `/api/traces`, `/api/traces/summary`, and OTel `/api/traces/export`.
|
|
136
|
+
|
|
137
|
+
### 🧩 Mission Control — 4 new panels
|
|
138
|
+
|
|
139
|
+
**Memory Taxonomy** (9 memory types + the drive-backed *emotional* differentiator) · **Security self-audit** (severity-grouped config findings) · **Evals dashboard** · **Observability / tracing**.
|
|
140
|
+
|
|
141
|
+
### Also in v7.0
|
|
142
|
+
|
|
143
|
+
- **Workflow Builder** — a dependency-free SVG **goal/subtask DAG** of any mission: nodes coloured by status, edges from `dependsOn`, layered by longest-dependency-depth, the live current subtask highlighted. Click a node for detail, or author a new workflow from a plain-English prompt. Mission decomposition now threads real dependency edges (backward-only, always-acyclic), so the DAG reflects true ordering.
|
|
144
|
+
- **2 new agent skills:** `codebase_explore` (walks a repo into a structured map — entrypoints, key files, language mix, top dirs) and `delegate_agent` (orchestrates external coding agents — codex / aider / goose / gemini / opencode; **never** the `claude` CLI).
|
|
145
|
+
- **8 ECC software-craft skills** (MIT, attributed), `config_audit` (config security self-audit), a spec-driven workflow (acceptance criteria recited every turn), and a named memory taxonomy (`memory_map`).
|
|
146
|
+
- **SECURITY:** the Facebook Messenger webhook verifies the `X-Hub-Signature-256` HMAC (constant-time) when `FB_APP_SECRET` is set — forged POSTs are then rejected with 403. (Set the secret to enable enforcement; without it, verification is skipped.)
|
|
147
|
+
- **FIX:** the agent loop-breaker could itself infinite-loop (the round counter froze) — now terminal and bounded.
|
|
148
|
+
|
|
149
|
+
See **[CHANGELOG.md](CHANGELOG.md)** for the full v7.0.0 entry and everything before it.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## See it
|
|
154
|
+
|
|
155
|
+
| 👋 Welcome Mode — first run in a minute | 💪 Muscle Memory — a real learned skill |
|
|
156
|
+
|---|---|
|
|
157
|
+
| <img src="docs/assets/welcome-mode.png" alt="Welcome Mode setup card over the dimmed desk" width="420"/> | <img src="docs/assets/muscle-widget.png" alt="Muscle Memory widget showing a replay-verified learned skill awaiting adoption" width="420"/> |
|
|
158
|
+
| *No model configured? The gateway boots anyway and walks you in.* | *An actual skill TITAN taught itself from repeated usage — exam badge and evidence included.* |
|
|
159
|
+
|
|
160
|
+
<p align="center">
|
|
161
|
+
<img src="docs/assets/mascot-learned.png" alt="The mascot announcing a learned skill on the desk" width="880"/>
|
|
162
|
+
<br><small><em>“I taught myself add-widget — replay exam passed!” — proactive, and provable.</em></small>
|
|
163
|
+
</p>
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Why TITAN
|
|
168
|
+
|
|
169
|
+
- **It teaches itself — provably.** Muscle Memory turns your repeated workflows into replay-verified skills. Every learned skill passes a deterministic exam against your real usage before you see it; nothing auto-adopts. No other framework ships trustworthy self-improvement on by default.
|
|
170
|
+
- **A council, not just a model.** `/moa` fans your question to advisor models across your own machines and synthesizes one sharper answer — mixture-of-agents at $0/turn.
|
|
171
|
+
- **Plays well with other agents.** TITAN is an MCP tool inside Hermes/OpenClaw and consumes them right back — delegate jobs, share councils, cooperate.
|
|
172
|
+
- **One-minute first run.** `npm install -g titan-agent && titan gateway` — the dashboard greets you and connects a model in about a minute. No Docker, no YAML, no config-file editing.
|
|
173
|
+
- **Model-agnostic, for real.** One harness, native tool-calls per vendor, a per-model capability registry, adaptive token ceilings. Bring DeepSeek, Qwen, GLM, Kimi, MiniMax, Anthropic, OpenAI, Gemini, or anything OpenAI-compatible — the framework adapts instead of being tuned to one LLM.
|
|
174
|
+
- **Local-first.** Run any model on your own hardware via Ollama, or route to any of 36 providers through one router. Switch models mid-conversation. Failed models auto-fallback. Your data never leaves your machine unless you explicitly send it to a cloud provider.
|
|
175
|
+
- **Watch it work.** The Live Studio shows the agent's step timeline, real file diffs, and changed files as it runs. Sessions are URL-addressable and replayable.
|
|
176
|
+
- **A team of specialists, not a chatbot.** The orchestrator decomposes a mission, fans the work out to up to 4 specialists in parallel, verifies output, and synthesizes the result.
|
|
177
|
+
- **Accessible by design.** WCAG 2.1 AA primitives, a contrast-audit harness that proves every theme meets AA, full keyboard focus, ARIA, and a skip-link landmark.
|
|
178
|
+
- **Observable.** Per-run spans (latency, tokens, cost, tools) with OTel export.
|
|
56
179
|
|
|
57
180
|
---
|
|
58
181
|
|
|
@@ -61,10 +184,13 @@ See [CHANGELOG.md](CHANGELOG.md) for everything.
|
|
|
61
184
|
```bash
|
|
62
185
|
# Stable release
|
|
63
186
|
npm install -g titan-agent
|
|
64
|
-
titan onboard # interactive setup wizard
|
|
65
187
|
titan gateway # opens Mission Control at http://localhost:48420
|
|
66
188
|
```
|
|
67
189
|
|
|
190
|
+
That's it — no setup required first. The dashboard greets you and connects a model in about a minute (one click if Ollama is running; or paste any API key / OpenAI-compatible endpoint). Prefer the terminal? `titan onboard` runs the full interactive wizard.
|
|
191
|
+
|
|
192
|
+
**Which model?** Benchmarked through TITAN's own harness (July 2026, clean rerun): best local = **`qwen3-coder-next`** (85%, 5.2s median) and — on DGX-Spark-class unified memory — **Qwen3.6-35B-A3B NVFP4** (85%, ties it); best cloud = **GLM-5.1** / **Kimi K2.6** (93%). TITAN v7.1 auto-adapts to each deployment's real context (learned live), so small-context deployments degrade gracefully instead of failing — details and honest caveats in [benchmarks/MODEL_COMPARISON.md](benchmarks/MODEL_COMPARISON.md).
|
|
193
|
+
|
|
68
194
|
Or one-liner:
|
|
69
195
|
|
|
70
196
|
```bash
|
|
@@ -88,15 +214,17 @@ docker run -d -p 48420:48420 --name titan \
|
|
|
88
214
|
|
|
89
215
|
## What TITAN actually does
|
|
90
216
|
|
|
91
|
-
**A team of specialists, not a chatbot.** Type a mission. The orchestrator decomposes it, fans the work out to up to 4 specialists in parallel (Scout/Builder/Writer/Analyst/Sage), and synthesizes the result. You watch them work in real time on
|
|
217
|
+
**A team of specialists, not a chatbot.** Type a mission. The orchestrator decomposes it, fans the work out to up to 4 specialists in parallel (Scout / Builder / Writer / Analyst / Sage), and synthesizes the result. You watch them work in real time on Mission Control.
|
|
92
218
|
|
|
93
|
-
**
|
|
219
|
+
**Watch it work, live.** The Live Studio is a split-pane "watch it work" view: a **step timeline** on one side, **live file diffs** and a **changed-files rail** on the other, driven by a session-scoped event spine that emits `tool:call` / `tool:result` as the agent runs. Sessions are URL-addressable and replayable, so you can share a link or scrub back through what happened.
|
|
94
220
|
|
|
95
|
-
**
|
|
221
|
+
**Model-agnostic by design.** TITAN binds native tool-calls per vendor through a shared capability registry, maps `forceToolUse` to each model's `tool_choice`, enforces JSON mode with an anti-truncation floor, and adapts `max_tokens` to a deployment's real ceiling. Run any capable model — the harness fits the model, not the other way around.
|
|
222
|
+
|
|
223
|
+
**A real autonomous loop.** Goals run in the background. The driver picks subtasks, spawns specialists, verifies output, retries with smarter strategies on failure, and surfaces blocking questions only when a human is actually needed. Up to 25 tool rounds per turn, real planning, real verification, with a bounded loop-breaker that can't itself spin.
|
|
96
224
|
|
|
97
|
-
**
|
|
225
|
+
**Materializes the workspace around you.** Don't have a tool for the job? Ask the agent and it builds one. Stock tracker, pomodoro, SDR widget, dashboard — drag them around on infinite canvases. Built on Mission Control, a React 19 SPA served by the gateway at port 48420.
|
|
98
226
|
|
|
99
|
-
**A soul that does something.** TITAN-Soma is a homeostatic drive layer (purpose, curiosity, hunger, safety, social) that ticks every 60s and modulates behavior.
|
|
227
|
+
**A soul that does something.** TITAN-Soma is a homeostatic drive layer (purpose, curiosity, hunger, safety, social) that ticks every 60s and modulates behavior. Dream Mode writes a journal entry about its day at 03:30 local. Persona profiles + auto-revert A/B test prompt changes against drive satisfaction and roll back regressions automatically.
|
|
100
228
|
|
|
101
229
|
---
|
|
102
230
|
|
|
@@ -110,15 +238,15 @@ docker run -d -p 48420:48420 --name titan \
|
|
|
110
238
|
| **Analyst** | Data analysis, decisions, reasoning, spreadsheets | "Compare option A vs B vs C" |
|
|
111
239
|
| **Sage** | Review, critique, verification, quality assurance | "Make sure this is right before I send it" |
|
|
112
240
|
|
|
113
|
-
The LLM picks which specialists to spawn based on the goal. You can also call them directly via `agent_team`, `agent_chain`, `agent_delegate`, or `spawn_agent`
|
|
241
|
+
The LLM picks which specialists to spawn based on the goal. You can also call them directly via `agent_team`, `agent_chain`, `agent_delegate`, or `spawn_agent`. For *external* coding agents (codex / aider / goose / gemini / opencode), use the new `delegate_agent` skill — it never shells out to the `claude` CLI.
|
|
114
242
|
|
|
115
243
|
---
|
|
116
244
|
|
|
117
245
|
## Where TITAN runs
|
|
118
246
|
|
|
119
|
-
**LLM providers (
|
|
247
|
+
**LLM providers (36 total).** 4 native: Anthropic, OpenAI, Google, Ollama. 32 OpenAI-compatible presets: Groq, Mistral, Fireworks, xAI, Together, DeepSeek, Cerebras, Cohere, Perplexity, Venice, Bedrock, LiteLLM, Azure, DeepInfra, SambaNova, Kimi, HuggingFace, AI21, Cohere v2, Reka, Zhipu, Yi, Inflection, Novita, Replicate, Lepton, Anyscale, Octo, Nous, OpenRouter, NVIDIA, MiniMax. The generic `openai_compat` path binds native tool-calls per model via the shared capability registry. Verify in `src/providers/openai_compat.ts`.
|
|
120
248
|
|
|
121
|
-
**Channels (19 adapters).** Discord, Telegram, Slack, WhatsApp, Matrix, Signal, MS Teams, Facebook Messenger, Google Chat, IRC, Mattermost, Lark/Feishu, LINE, Zulip,
|
|
249
|
+
**Channels (19 adapters).** Discord, Telegram, Slack, WhatsApp, Matrix, Signal, MS Teams, Facebook Messenger (HMAC-verified webhook), Google Chat, IRC, Mattermost, Lark/Feishu, LINE, Zulip, Email (inbound), WebChat. Verify in `src/channels/`.
|
|
122
250
|
|
|
123
251
|
**Mesh networking.** Run TITAN on multiple machines and they discover each other via mDNS, or peer them statically over Tailscale or any overlay. Distribute work across your homelab.
|
|
124
252
|
|
|
@@ -134,30 +262,40 @@ The LLM picks which specialists to spawn based on the goal. You can also call th
|
|
|
134
262
|
|
|
135
263
|
| Thing | Count | Verify with |
|
|
136
264
|
|---|---|---|
|
|
137
|
-
| **Version** |
|
|
138
|
-
| **Downloads** |
|
|
139
|
-
| **LLM providers** |
|
|
140
|
-
| **Channel adapters** | 19 | `src/channels/*.ts`
|
|
141
|
-
| **Built-in skill files** | 91 | `src/skills/builtin/` |
|
|
265
|
+
| **Version** | 7.0.0 | `package.json`, `src/utils/constants.ts` |
|
|
266
|
+
| **Downloads** | 40K+ lifetime | `npm view titan-agent` + npm stats |
|
|
267
|
+
| **LLM providers** | 36 (4 native + 32 OpenAI-compat) | `src/providers/openai_compat.ts` |
|
|
268
|
+
| **Channel adapters** | 19 | `src/channels/*.ts` |
|
|
142
269
|
| **Skills loaded at runtime** | ~143 | `GET /api/skills` |
|
|
143
|
-
| **Tools registered** | ~
|
|
144
|
-
| **Test
|
|
145
|
-
| **
|
|
146
|
-
| **Live-eval suites** | 11 | `src/eval/harness.ts` |
|
|
147
|
-
| **Mission Control admin panels** | 43 | `ui/src/components/admin/` |
|
|
270
|
+
| **Tools registered** | ~248 | `GET /api/skills` |
|
|
271
|
+
| **Test cases** | 8,122 passing / 9 skipped / 0 failing | `npm test` |
|
|
272
|
+
| **Mission Control admin panels** | 51 | `ui/src/components/admin/` |
|
|
148
273
|
| **Soma drives** | 5 (purpose, curiosity, hunger, safety, social) | `src/organism/` |
|
|
149
274
|
| **Gateway port (default)** | 48420 | `src/utils/constants.ts` |
|
|
150
275
|
| **Node** | ≥ 22, pure ESM | `package.json` |
|
|
151
276
|
| **License** | MIT | `LICENSE` |
|
|
152
277
|
|
|
153
|
-
Every row above traces to code. The repo has a self-check at `tests/unit/readme-claims.test.ts` that fails CI if
|
|
278
|
+
Every row above traces to code. The repo has a self-check at `tests/unit/readme-claims.test.ts` that fails CI if the verified counts drift beyond tolerance.
|
|
279
|
+
|
|
280
|
+
### v7.0 verification
|
|
281
|
+
|
|
282
|
+
The v7.0.0 release was verified end-to-end before publish:
|
|
283
|
+
|
|
284
|
+
- **Full test suite:** 8,122 pass / 9 skip / **0 fail**.
|
|
285
|
+
- **Muscle Memory adversarial review:** 26-agent review fleet, 21 confirmed findings — all fixed before ship; the learned-skill pipeline was proven live (mined a real repeated workflow, drafted `add-widget`, passed its replay exam unprompted on first boot).
|
|
286
|
+
- **Welcome Mode first-run:** verified on a virgin machine end-to-end — boot with zero config → guided connect → first real reply, no restart.
|
|
287
|
+
- **Live UI route sweep:** 40 / 40 routes render clean (zero console errors).
|
|
288
|
+
- **v7-smoke e2e:** 12 / 12.
|
|
289
|
+
- **API sweep:** 18 / 19 (the one non-200 is a 503 by design).
|
|
290
|
+
- **Chat:** works end-to-end.
|
|
291
|
+
- **Behavioral eval-gate:** 93% (GO).
|
|
154
292
|
|
|
155
293
|
---
|
|
156
294
|
|
|
157
295
|
## Testing
|
|
158
296
|
|
|
159
297
|
```bash
|
|
160
|
-
npm test #
|
|
298
|
+
npm test # full suite (8,000+ cases)
|
|
161
299
|
npm run test:watch # watch mode
|
|
162
300
|
npm run test:parity # cross-model parity (replays the same scenario across providers)
|
|
163
301
|
npm run test:eval # live behavioral eval against a running gateway (5-15 min)
|
|
@@ -168,11 +306,26 @@ Five testing layers cover regression risk at different levels:
|
|
|
168
306
|
|
|
169
307
|
| Layer | What it covers | Speed |
|
|
170
308
|
|---|---|---|
|
|
171
|
-
| Unit | Pure functions: regex, classifiers, gate extraction, token budget, secret scanner,
|
|
309
|
+
| Unit | Pure functions: regex, classifiers, gate extraction, token budget, secret scanner, capability registry, contrast harness | seconds |
|
|
172
310
|
| Mock trajectory | Tape-replay through `MockOllamaProvider` — asserts the right tools fire in the right order | < 1s |
|
|
173
311
|
| Cross-model parity | Same scenario across multiple provider tapes — catches behavioral drift | < 1s |
|
|
174
312
|
| Full deterministic | Whole vitest run | 2-4 min |
|
|
175
|
-
| Live eval |
|
|
313
|
+
| Live eval | Behavioral suites against a running agent | 5-15 min |
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
<a id="roadmap"></a>
|
|
318
|
+
|
|
319
|
+
## Roadmap (not in v7.0)
|
|
320
|
+
|
|
321
|
+
These are **planned**, not shipped. v7.0 lays the foundation for them but does not include them:
|
|
322
|
+
|
|
323
|
+
- **Roster Forge — dynamic agent spawning.** Define and spin up new specialist roles at runtime, beyond the fixed five.
|
|
324
|
+
- **Verdict-grounded self-evolution loop.** Close the loop so the agent's own eval verdicts drive prompt/behavior evolution automatically. (v7.0's Muscle Memory covers *workflow-level* self-learning with replay exams; this item extends grounded verdicts to prompt/behavior evolution, e.g. GEPA fitness.)
|
|
325
|
+
- **Live Studio live preview pane.** A running preview server in the Studio right-pane (today: timeline + file-diff stream + changed-files list only — **no preview pane**).
|
|
326
|
+
- **One-click revert + the round/token spine tail.** A revert button on the change rail and round/token accounting on the event spine (today: **no revert button**, diffs are read-only).
|
|
327
|
+
|
|
328
|
+
If you want one of these sooner, [open a discussion](https://github.com/Djtony707/TITAN/discussions) or a PR.
|
|
176
329
|
|
|
177
330
|
---
|
|
178
331
|
|
|
@@ -180,7 +333,7 @@ Five testing layers cover regression risk at different levels:
|
|
|
180
333
|
|
|
181
334
|
TITAN is experimental. It can execute commands, modify files, and take autonomous actions. **Use at your own risk.** Think of it as a motivated intern with root access who never sleeps and occasionally gets too creative.
|
|
182
335
|
|
|
183
|
-
Start in supervised mode. Review what it does. Don't hand it root on systems you can't afford to lose. The safety features are strong (5-layer secret scanner, prompt-injection shield, kill switch, approval gates on destructive tools, atomic file checkpoints with restore) but they augment good judgment, not replace it.
|
|
336
|
+
Start in supervised mode. Review what it does — the Live Studio makes that easier than ever. Don't hand it root on systems you can't afford to lose. The safety features are strong (5-layer secret scanner, prompt-injection shield, kill switch, approval gates on destructive tools that can't be bypassed by sibling tools in a batch, atomic file checkpoints with restore, HMAC-verified inbound webhooks) but they augment good judgment, not replace it.
|
|
184
337
|
|
|
185
338
|
---
|
|
186
339
|
|
|
@@ -189,27 +342,27 @@ Start in supervised mode. Review what it does. Don't hand it root on systems you
|
|
|
189
342
|
```
|
|
190
343
|
src/
|
|
191
344
|
├── agent/ # Core loop, orchestrator, sub-agents, Command Post governance,
|
|
192
|
-
│ # Soma drives, Dream Mode, Persona A/B, mission lifecycle
|
|
345
|
+
│ # Soma drives, Dream Mode, Persona A/B, mission lifecycle, event spine
|
|
193
346
|
├── browsing/ # Playwright pool + CapSolver CAPTCHA
|
|
194
|
-
├── channels/ #
|
|
347
|
+
├── channels/ # Channel adapters (16)
|
|
195
348
|
├── config/ # Zod-validated schema
|
|
196
349
|
├── context/ # ContextEngine plugin system
|
|
197
|
-
├── gateway/ # Express + Mission Control React SPA (port 48420)
|
|
350
|
+
├── gateway/ # Express + Mission Control React SPA (port 48420), traces API
|
|
198
351
|
├── mcp/ # MCP Server (stdio + HTTP)
|
|
199
|
-
├── memory/ # Memory, learning, graph, briefings
|
|
352
|
+
├── memory/ # Memory, learning, graph, briefings, memory taxonomy
|
|
200
353
|
├── mesh/ # mDNS + WebSocket + HMAC mesh networking
|
|
201
354
|
├── organism/ # TITAN-Soma homeostatic drive layer
|
|
202
|
-
├── providers/ #
|
|
203
|
-
├── skills/ #
|
|
355
|
+
├── providers/ # 36 LLM providers + router + fallback chain + capability registry
|
|
356
|
+
├── skills/ # Builtin skills + dev + NVIDIA + ECC software-craft + personal
|
|
204
357
|
├── telephony/ # Phone Desk / Dograh integration (opt-in)
|
|
205
358
|
├── voice/ # F5-TTS + LiveKit WebRTC
|
|
206
359
|
└── vram/ # GPU VRAM orchestrator (auto model swap)
|
|
207
|
-
ui/ # React 19 + Vite + Tailwind 4 + Router 7 (Mission Control)
|
|
208
|
-
tests/ #
|
|
360
|
+
ui/ # React 19 + Vite + Tailwind 4 + React Router 7 (Mission Control + Live Studio)
|
|
361
|
+
tests/ # vitest suite (8,000+ cases)
|
|
209
362
|
e2e/ # Playwright E2E
|
|
210
363
|
```
|
|
211
364
|
|
|
212
|
-
**Pure ESM, TypeScript strict mode, zero `__dirname`.** All config via Zod. Provider/model format: `"provider/model-name"` (e.g. `"anthropic/claude-sonnet-4-20250514"`). Multi-round tool loop up to 25 rounds in autonomous mode. Auth defaults to token mode; bypassed if no token configured (open access — turn on for multi-user deployments).
|
|
365
|
+
**Pure ESM, TypeScript strict mode, zero `__dirname`.** All config via Zod. Provider/model format: `"provider/model-name"` (e.g. `"anthropic/claude-sonnet-4-20250514"`). Multi-round tool loop up to 25 rounds in autonomous mode. Auth defaults to token mode; bypassed if no token configured (open access — turn it on for multi-user deployments). The `/v1` OpenAI-compatible endpoint is authenticated when auth is configured.
|
|
213
366
|
|
|
214
367
|
---
|
|
215
368
|
|
|
@@ -223,7 +376,7 @@ npm run build && npm run build:ui
|
|
|
223
376
|
npm run dev:gateway # http://localhost:48420
|
|
224
377
|
```
|
|
225
378
|
|
|
226
|
-
CI on GitHub Actions runs full test suite + eval gate. See `.github/workflows/`.
|
|
379
|
+
CI on GitHub Actions runs the full test suite + eval gate. See `.github/workflows/`.
|
|
227
380
|
|
|
228
381
|
---
|
|
229
382
|
|
|
@@ -233,7 +386,7 @@ CI on GitHub Actions runs full test suite + eval gate. See `.github/workflows/`.
|
|
|
233
386
|
- **[ARCHITECTURE.md](ARCHITECTURE.md)** — deeper architecture notes
|
|
234
387
|
- **[CONTRIBUTING.md](CONTRIBUTING.md)** — how to contribute a skill, channel, or fix
|
|
235
388
|
- **[SECURITY.md](SECURITY.md)** — security model + reporting issues
|
|
236
|
-
- **[AGENTS.md](AGENTS.md)** — agent design notes
|
|
389
|
+
- **[AGENTS.md](AGENTS.md)** — agent design notes
|
|
237
390
|
- **[GitHub Discussions](https://github.com/Djtony707/TITAN/discussions)** — community Q&A
|
|
238
391
|
- **[Issues](https://github.com/Djtony707/TITAN/issues)** — bugs, requests
|
|
239
392
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Third-party agent-skills — ECC (Everything Claude Code)
|
|
2
|
+
|
|
3
|
+
The following skills in this directory are ported from **ECC**
|
|
4
|
+
(https://github.com/affaan-m/ECC) by Affaan Mustafa, used under the MIT License
|
|
5
|
+
and lightly adapted for TITAN (framing only). Each retains `origin: ECC` in its
|
|
6
|
+
frontmatter:
|
|
7
|
+
|
|
8
|
+
- continuous-learning
|
|
9
|
+
- verification-loop
|
|
10
|
+
- recursive-decision-ledger
|
|
11
|
+
- production-audit
|
|
12
|
+
- agent-introspection-debugging
|
|
13
|
+
- continuous-agent-loop
|
|
14
|
+
- scientific-thinking-literature-review
|
|
15
|
+
- scientific-thinking-scholar-evaluation
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
MIT License
|
|
20
|
+
|
|
21
|
+
Copyright (c) 2026 Affaan Mustafa
|
|
22
|
+
|
|
23
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
24
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
25
|
+
in the Software without restriction, including without limitation the rights
|
|
26
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
27
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
28
|
+
furnished to do so, subject to the following conditions:
|
|
29
|
+
|
|
30
|
+
The above copyright notice and this permission notice shall be included in all
|
|
31
|
+
copies or substantial portions of the Software.
|
|
32
|
+
|
|
33
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
34
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
35
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
36
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
37
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
38
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
39
|
+
SOFTWARE.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-introspection-debugging
|
|
3
|
+
description: Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent Introspection Debugging
|
|
8
|
+
|
|
9
|
+
Use this skill when an agent run is failing repeatedly, consuming tokens without progress, looping on the same tools, or drifting away from the intended task.
|
|
10
|
+
|
|
11
|
+
This is a workflow skill, not a hidden runtime. It teaches the agent to debug itself systematically before escalating to a human.
|
|
12
|
+
|
|
13
|
+
## When to Activate
|
|
14
|
+
|
|
15
|
+
- Maximum tool call / loop-limit failures
|
|
16
|
+
- Repeated retries with no forward progress
|
|
17
|
+
- Context growth or prompt drift that starts degrading output quality
|
|
18
|
+
- File-system or environment state mismatch between expectation and reality
|
|
19
|
+
- Tool failures that are likely recoverable with diagnosis and a smaller corrective action
|
|
20
|
+
|
|
21
|
+
## Scope Boundaries
|
|
22
|
+
|
|
23
|
+
Activate this skill for:
|
|
24
|
+
- capturing failure state before retrying blindly
|
|
25
|
+
- diagnosing common agent-specific failure patterns
|
|
26
|
+
- applying contained recovery actions
|
|
27
|
+
- producing a structured human-readable debug report
|
|
28
|
+
|
|
29
|
+
Do not use this skill as the primary source for:
|
|
30
|
+
- feature verification after code changes; use `verification-loop`
|
|
31
|
+
- framework-specific debugging when a narrower ECC skill already exists
|
|
32
|
+
- runtime promises the current harness cannot enforce automatically
|
|
33
|
+
|
|
34
|
+
## Four-Phase Loop
|
|
35
|
+
|
|
36
|
+
### Phase 1: Failure Capture
|
|
37
|
+
|
|
38
|
+
Before trying to recover, record the failure precisely.
|
|
39
|
+
|
|
40
|
+
Capture:
|
|
41
|
+
- error type, message, and stack trace when available
|
|
42
|
+
- last meaningful tool call sequence
|
|
43
|
+
- what the agent was trying to do
|
|
44
|
+
- current context pressure: repeated prompts, oversized pasted logs, duplicated plans, or runaway notes
|
|
45
|
+
- current environment assumptions: cwd, branch, relevant service state, expected files
|
|
46
|
+
|
|
47
|
+
Minimum capture template:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
## Failure Capture
|
|
51
|
+
- Session / task:
|
|
52
|
+
- Goal in progress:
|
|
53
|
+
- Error:
|
|
54
|
+
- Last successful step:
|
|
55
|
+
- Last failed tool / command:
|
|
56
|
+
- Repeated pattern seen:
|
|
57
|
+
- Environment assumptions to verify:
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Phase 2: Root-Cause Diagnosis
|
|
61
|
+
|
|
62
|
+
Match the failure to a known pattern before changing anything.
|
|
63
|
+
|
|
64
|
+
| Pattern | Likely Cause | Check |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| Maximum tool calls / repeated same command | loop or no-exit observer path | inspect the last N tool calls for repetition |
|
|
67
|
+
| Context overflow / degraded reasoning | unbounded notes, repeated plans, oversized logs | inspect recent context for duplication and low-signal bulk |
|
|
68
|
+
| `ECONNREFUSED` / timeout | service unavailable or wrong port | verify service health, URL, and port assumptions |
|
|
69
|
+
| `429` / quota exhaustion | retry storm or missing backoff | count repeated calls and inspect retry spacing |
|
|
70
|
+
| file missing after write / stale diff | race, wrong cwd, or branch drift | re-check path, cwd, git status, and actual file existence |
|
|
71
|
+
| tests still failing after “fix” | wrong hypothesis | isolate the exact failing test and re-derive the bug |
|
|
72
|
+
|
|
73
|
+
Diagnosis questions:
|
|
74
|
+
- is this a logic failure, state failure, environment failure, or policy failure?
|
|
75
|
+
- did the agent lose the real objective and start optimizing the wrong subtask?
|
|
76
|
+
- is the failure deterministic or transient?
|
|
77
|
+
- what is the smallest reversible action that would validate the diagnosis?
|
|
78
|
+
|
|
79
|
+
### Phase 3: Contained Recovery
|
|
80
|
+
|
|
81
|
+
Recover with the smallest action that changes the diagnosis surface.
|
|
82
|
+
|
|
83
|
+
Safe recovery actions:
|
|
84
|
+
- stop repeated retries and restate the hypothesis
|
|
85
|
+
- trim low-signal context and keep only the active goal, blockers, and evidence
|
|
86
|
+
- re-check the actual filesystem / branch / process state
|
|
87
|
+
- narrow the task to one failing command, one file, or one test
|
|
88
|
+
- switch from speculative reasoning to direct observation
|
|
89
|
+
- escalate to a human when the failure is high-risk or externally blocked
|
|
90
|
+
|
|
91
|
+
Do not claim unsupported auto-healing actions like “reset agent state” or “update harness config” unless you are actually doing them through real tools in the current environment.
|
|
92
|
+
|
|
93
|
+
Contained recovery checklist:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
## Recovery Action
|
|
97
|
+
- Diagnosis chosen:
|
|
98
|
+
- Smallest action taken:
|
|
99
|
+
- Why this is safe:
|
|
100
|
+
- What evidence would prove the fix worked:
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Phase 4: Introspection Report
|
|
104
|
+
|
|
105
|
+
End with a report that makes the recovery legible to the next agent or human.
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
## Agent Self-Debug Report
|
|
109
|
+
- Session / task:
|
|
110
|
+
- Failure:
|
|
111
|
+
- Root cause:
|
|
112
|
+
- Recovery action:
|
|
113
|
+
- Result: success | partial | blocked
|
|
114
|
+
- Token / time burn risk:
|
|
115
|
+
- Follow-up needed:
|
|
116
|
+
- Preventive change to encode later:
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Recovery Heuristics
|
|
120
|
+
|
|
121
|
+
Prefer these interventions in order:
|
|
122
|
+
|
|
123
|
+
1. Restate the real objective in one sentence.
|
|
124
|
+
2. Verify the world state instead of trusting memory.
|
|
125
|
+
3. Shrink the failing scope.
|
|
126
|
+
4. Run one discriminating check.
|
|
127
|
+
5. Only then retry.
|
|
128
|
+
|
|
129
|
+
Bad pattern:
|
|
130
|
+
- retrying the same action three times with slightly different wording
|
|
131
|
+
|
|
132
|
+
Good pattern:
|
|
133
|
+
- capture failure
|
|
134
|
+
- classify the pattern
|
|
135
|
+
- run one direct check
|
|
136
|
+
- change the plan only if the check supports it
|
|
137
|
+
|
|
138
|
+
## Integration with ECC
|
|
139
|
+
|
|
140
|
+
- Use `verification-loop` after recovery if code was changed.
|
|
141
|
+
- Use `continuous-learning-v2` when the failure pattern is worth turning into an instinct or later skill.
|
|
142
|
+
- Use `council` when the issue is not technical failure but decision ambiguity.
|
|
143
|
+
- Use `workspace-surface-audit` if the failure came from conflicting local state or repo drift.
|
|
144
|
+
|
|
145
|
+
## Output Standard
|
|
146
|
+
|
|
147
|
+
When this skill is active, do not end with “I fixed it” alone.
|
|
148
|
+
|
|
149
|
+
Always provide:
|
|
150
|
+
- the failure pattern
|
|
151
|
+
- the root-cause hypothesis
|
|
152
|
+
- the recovery action
|
|
153
|
+
- the evidence that the situation is now better or still blocked
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: continuous-agent-loop
|
|
3
|
+
description: Patterns for continuous autonomous agent loops with quality gates, evals, and recovery controls.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Continuous Agent Loop
|
|
8
|
+
|
|
9
|
+
This is the v1.8+ canonical loop skill name. It supersedes `autonomous-loops` while keeping compatibility for one release.
|
|
10
|
+
|
|
11
|
+
## Loop Selection Flow
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
Start
|
|
15
|
+
|
|
|
16
|
+
+-- Need strict CI/PR control? -- yes --> continuous-pr
|
|
17
|
+
|
|
|
18
|
+
+-- Need RFC decomposition? -- yes --> rfc-dag
|
|
19
|
+
|
|
|
20
|
+
+-- Need exploratory parallel generation? -- yes --> infinite
|
|
21
|
+
|
|
|
22
|
+
+-- default --> sequential
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Combined Pattern
|
|
26
|
+
|
|
27
|
+
Recommended production stack:
|
|
28
|
+
1. RFC decomposition (`ralphinho-rfc-pipeline`)
|
|
29
|
+
2. quality gates (`plankton-code-quality` + `/quality-gate`)
|
|
30
|
+
3. eval loop (`eval-harness`)
|
|
31
|
+
4. session persistence (`nanoclaw-repl`)
|
|
32
|
+
|
|
33
|
+
## Failure Modes
|
|
34
|
+
|
|
35
|
+
- loop churn without measurable progress
|
|
36
|
+
- repeated retries with same root cause
|
|
37
|
+
- merge queue stalls
|
|
38
|
+
- cost drift from unbounded escalation
|
|
39
|
+
|
|
40
|
+
## Recovery
|
|
41
|
+
|
|
42
|
+
- freeze loop
|
|
43
|
+
- run `/harness-audit`
|
|
44
|
+
- reduce scope to failing unit
|
|
45
|
+
- replay with explicit acceptance criteria
|