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
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scholar-evaluation
|
|
3
|
+
description: Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Scholar Evaluation
|
|
8
|
+
|
|
9
|
+
Use this skill to evaluate academic or scientific work with a repeatable rubric.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Reviewing a research paper, proposal, thesis chapter, or literature review.
|
|
14
|
+
- Checking whether claims are supported by cited evidence.
|
|
15
|
+
- Evaluating methodology, study design, analysis, or limitations.
|
|
16
|
+
- Comparing two or more papers for quality or relevance.
|
|
17
|
+
- Producing structured feedback for revision.
|
|
18
|
+
|
|
19
|
+
## Evaluation Scope
|
|
20
|
+
|
|
21
|
+
Start by identifying the artifact:
|
|
22
|
+
|
|
23
|
+
- empirical research paper
|
|
24
|
+
- theoretical paper
|
|
25
|
+
- technical report
|
|
26
|
+
- systematic or narrative literature review
|
|
27
|
+
- research proposal
|
|
28
|
+
- thesis or dissertation chapter
|
|
29
|
+
- conference abstract or short paper
|
|
30
|
+
|
|
31
|
+
Then choose scope:
|
|
32
|
+
|
|
33
|
+
- **comprehensive**: all rubric dimensions
|
|
34
|
+
- **targeted**: one or two dimensions, such as method or citations
|
|
35
|
+
- **comparative**: rank multiple works against the same rubric
|
|
36
|
+
|
|
37
|
+
## Rubric
|
|
38
|
+
|
|
39
|
+
Score each applicable dimension from 1 to 5:
|
|
40
|
+
|
|
41
|
+
- 5: excellent; clear, rigorous, and publication-ready
|
|
42
|
+
- 4: good; minor improvements needed
|
|
43
|
+
- 3: adequate; meaningful gaps but usable
|
|
44
|
+
- 2: weak; substantial revision needed
|
|
45
|
+
- 1: poor; major validity or clarity problems
|
|
46
|
+
|
|
47
|
+
Use `N/A` for dimensions that do not apply.
|
|
48
|
+
|
|
49
|
+
### 1. Problem and Research Question
|
|
50
|
+
|
|
51
|
+
- Is the problem clear and specific?
|
|
52
|
+
- Is the contribution meaningful?
|
|
53
|
+
- Are scope and assumptions explicit?
|
|
54
|
+
- Does the question match the claimed contribution?
|
|
55
|
+
|
|
56
|
+
### 2. Literature and Context
|
|
57
|
+
|
|
58
|
+
- Is relevant prior work covered?
|
|
59
|
+
- Does the work synthesize rather than merely list sources?
|
|
60
|
+
- Are gaps accurately identified?
|
|
61
|
+
- Are recent and foundational sources balanced?
|
|
62
|
+
|
|
63
|
+
### 3. Methodology
|
|
64
|
+
|
|
65
|
+
- Does the method answer the research question?
|
|
66
|
+
- Are design choices justified?
|
|
67
|
+
- Are variables, datasets, participants, or materials described clearly?
|
|
68
|
+
- Could another researcher reproduce the work?
|
|
69
|
+
- Are ethical and practical constraints acknowledged?
|
|
70
|
+
|
|
71
|
+
### 4. Data and Evidence
|
|
72
|
+
|
|
73
|
+
- Are data sources credible and appropriate?
|
|
74
|
+
- Is sample size or corpus coverage adequate?
|
|
75
|
+
- Are inclusion, exclusion, and preprocessing decisions documented?
|
|
76
|
+
- Are missing data and bias risks discussed?
|
|
77
|
+
|
|
78
|
+
### 5. Analysis
|
|
79
|
+
|
|
80
|
+
- Are statistical, qualitative, or computational methods appropriate?
|
|
81
|
+
- Are baselines and controls fair?
|
|
82
|
+
- Are uncertainty, sensitivity, or robustness checks included when needed?
|
|
83
|
+
- Are alternative explanations considered?
|
|
84
|
+
|
|
85
|
+
### 6. Results and Interpretation
|
|
86
|
+
|
|
87
|
+
- Are results clearly presented?
|
|
88
|
+
- Do claims stay within the evidence?
|
|
89
|
+
- Are figures, tables, and metrics understandable?
|
|
90
|
+
- Are negative or null results handled honestly?
|
|
91
|
+
|
|
92
|
+
### 7. Limitations and Threats to Validity
|
|
93
|
+
|
|
94
|
+
- Are limitations specific rather than generic?
|
|
95
|
+
- Are internal, external, construct, and conclusion-validity risks addressed?
|
|
96
|
+
- Does the paper distinguish speculation from demonstrated results?
|
|
97
|
+
|
|
98
|
+
### 8. Writing and Structure
|
|
99
|
+
|
|
100
|
+
- Is the argument easy to follow?
|
|
101
|
+
- Are sections organized around the research question?
|
|
102
|
+
- Are definitions and notation clear?
|
|
103
|
+
- Is the tone precise and scholarly?
|
|
104
|
+
|
|
105
|
+
### 9. Citations
|
|
106
|
+
|
|
107
|
+
- Do cited papers support the claims attached to them?
|
|
108
|
+
- Are primary sources used where possible?
|
|
109
|
+
- Are reviews labeled as reviews?
|
|
110
|
+
- Are preprints labeled as preprints?
|
|
111
|
+
- Are citation metadata and links correct?
|
|
112
|
+
|
|
113
|
+
## Review Process
|
|
114
|
+
|
|
115
|
+
1. Read the abstract, introduction, figures, and conclusion for claimed
|
|
116
|
+
contribution.
|
|
117
|
+
2. Read methods and results for evidence quality.
|
|
118
|
+
3. Check the strongest claims against cited sources.
|
|
119
|
+
4. Score each applicable dimension.
|
|
120
|
+
5. Separate critical blockers from revision suggestions.
|
|
121
|
+
6. End with concrete next edits.
|
|
122
|
+
|
|
123
|
+
## Output Template
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+
# Scholar Evaluation: <Artifact>
|
|
127
|
+
|
|
128
|
+
## Overall Assessment
|
|
129
|
+
|
|
130
|
+
- Overall score: <1-5 or N/A>
|
|
131
|
+
- Confidence: <high | medium | low>
|
|
132
|
+
- Summary: <3-5 sentences>
|
|
133
|
+
|
|
134
|
+
## Dimension Scores
|
|
135
|
+
|
|
136
|
+
| Dimension | Score | Evidence | Revision priority |
|
|
137
|
+
| --- | ---: | --- | --- |
|
|
138
|
+
| Problem and question | | | |
|
|
139
|
+
| Literature and context | | | |
|
|
140
|
+
| Methodology | | | |
|
|
141
|
+
| Data and evidence | | | |
|
|
142
|
+
| Analysis | | | |
|
|
143
|
+
| Results and interpretation | | | |
|
|
144
|
+
| Limitations | | | |
|
|
145
|
+
| Writing and structure | | | |
|
|
146
|
+
| Citations | | | |
|
|
147
|
+
|
|
148
|
+
## Critical Issues
|
|
149
|
+
|
|
150
|
+
## Recommended Revisions
|
|
151
|
+
|
|
152
|
+
## Evidence Checks Needed
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Pitfalls
|
|
156
|
+
|
|
157
|
+
- Do not use the score as a substitute for concrete feedback.
|
|
158
|
+
- Do not penalize a paper for omitting a dimension outside its scope.
|
|
159
|
+
- Do not treat citation count, venue, or author reputation as proof of quality.
|
|
160
|
+
- Do not accept unsupported claims just because they appear in the abstract.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-loop
|
|
3
|
+
description: "A comprehensive verification system for TITAN sessions."
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Verification Loop Skill
|
|
8
|
+
|
|
9
|
+
A comprehensive verification system for TITAN sessions.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
Invoke this skill:
|
|
14
|
+
- After completing a feature or significant code change
|
|
15
|
+
- Before creating a PR
|
|
16
|
+
- When you want to ensure quality gates pass
|
|
17
|
+
- After refactoring
|
|
18
|
+
|
|
19
|
+
## Verification Phases
|
|
20
|
+
|
|
21
|
+
### Phase 1: Build Verification
|
|
22
|
+
```bash
|
|
23
|
+
# Check if project builds
|
|
24
|
+
npm run build 2>&1 | tail -20
|
|
25
|
+
# OR
|
|
26
|
+
pnpm build 2>&1 | tail -20
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If build fails, STOP and fix before continuing.
|
|
30
|
+
|
|
31
|
+
### Phase 2: Type Check
|
|
32
|
+
```bash
|
|
33
|
+
# TypeScript projects
|
|
34
|
+
npx tsc --noEmit 2>&1 | head -30
|
|
35
|
+
|
|
36
|
+
# Python projects
|
|
37
|
+
pyright . 2>&1 | head -30
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Report all type errors. Fix critical ones before continuing.
|
|
41
|
+
|
|
42
|
+
### Phase 3: Lint Check
|
|
43
|
+
```bash
|
|
44
|
+
# JavaScript/TypeScript
|
|
45
|
+
npm run lint 2>&1 | head -30
|
|
46
|
+
|
|
47
|
+
# Python
|
|
48
|
+
ruff check . 2>&1 | head -30
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Phase 4: Test Suite
|
|
52
|
+
```bash
|
|
53
|
+
# Run tests with coverage
|
|
54
|
+
npm run test -- --coverage 2>&1 | tail -50
|
|
55
|
+
|
|
56
|
+
# Check coverage threshold
|
|
57
|
+
# Target: 80% minimum
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Report:
|
|
61
|
+
- Total tests: X
|
|
62
|
+
- Passed: X
|
|
63
|
+
- Failed: X
|
|
64
|
+
- Coverage: X%
|
|
65
|
+
|
|
66
|
+
### Phase 5: Security Scan
|
|
67
|
+
```bash
|
|
68
|
+
# Check for secrets
|
|
69
|
+
grep -rn "sk-" --include="*.ts" --include="*.js" . 2>/dev/null | head -10
|
|
70
|
+
grep -rn "api_key" --include="*.ts" --include="*.js" . 2>/dev/null | head -10
|
|
71
|
+
|
|
72
|
+
# Check for console.log
|
|
73
|
+
grep -rn "console.log" --include="*.ts" --include="*.tsx" src/ 2>/dev/null | head -10
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Phase 6: Diff Review
|
|
77
|
+
```bash
|
|
78
|
+
# Show what changed
|
|
79
|
+
git diff --stat
|
|
80
|
+
git diff HEAD~1 --name-only
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Review each changed file for:
|
|
84
|
+
- Unintended changes
|
|
85
|
+
- Missing error handling
|
|
86
|
+
- Potential edge cases
|
|
87
|
+
|
|
88
|
+
## Output Format
|
|
89
|
+
|
|
90
|
+
After running all phases, produce a verification report:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
VERIFICATION REPORT
|
|
94
|
+
==================
|
|
95
|
+
|
|
96
|
+
Build: [PASS/FAIL]
|
|
97
|
+
Types: [PASS/FAIL] (X errors)
|
|
98
|
+
Lint: [PASS/FAIL] (X warnings)
|
|
99
|
+
Tests: [PASS/FAIL] (X/Y passed, Z% coverage)
|
|
100
|
+
Security: [PASS/FAIL] (X issues)
|
|
101
|
+
Diff: [X files changed]
|
|
102
|
+
|
|
103
|
+
Overall: [READY/NOT READY] for PR
|
|
104
|
+
|
|
105
|
+
Issues to Fix:
|
|
106
|
+
1. ...
|
|
107
|
+
2. ...
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Continuous Mode
|
|
111
|
+
|
|
112
|
+
For long sessions, run verification every 15 minutes or after major changes:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
Set a mental checkpoint:
|
|
116
|
+
- After completing each function
|
|
117
|
+
- After finishing a component
|
|
118
|
+
- Before moving to next task
|
|
119
|
+
|
|
120
|
+
Run: /verify
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Integration with Hooks
|
|
124
|
+
|
|
125
|
+
This skill complements PostToolUse hooks but provides deeper verification.
|
|
126
|
+
Hooks catch issues immediately; this skill provides comprehensive review.
|
package/dist/agent/agent.js
CHANGED
|
@@ -35,6 +35,7 @@ import { getAgent } from "./multiAgent.js";
|
|
|
35
35
|
import { isDangerous } from "../utils/safety.js";
|
|
36
36
|
import { registerTool } from "./toolRunner.js";
|
|
37
37
|
import { runAgentLoop } from "./agentLoop.js";
|
|
38
|
+
import { detectSystemWidget, buildSystemWidgetGate } from "./systemWidgets.js";
|
|
38
39
|
import { startTrace } from "./tracer.js";
|
|
39
40
|
import { initSoulState, consolidateWisdom, clearSoulState, getWisdomHints } from "./soul.js";
|
|
40
41
|
import logger from "../utils/logger.js";
|
|
@@ -489,12 +490,15 @@ ${memories.map((m) => `- ${m.key}: ${m.value}`).join("\n")}` : "";
|
|
|
489
490
|
} catch {
|
|
490
491
|
}
|
|
491
492
|
let goalPlanBlock = "";
|
|
493
|
+
let goalSpecBlock = "";
|
|
492
494
|
try {
|
|
493
495
|
const { getSessionGoal } = await import("./autonomyContext.js");
|
|
494
496
|
const goalCtx = sessionId ? getSessionGoal(sessionId) : null;
|
|
495
497
|
if (goalCtx?.goalId) {
|
|
496
498
|
const { renderGoalPlanForPrompt } = await import("./goalPlanFile.js");
|
|
497
499
|
goalPlanBlock = renderGoalPlanForPrompt(goalCtx.goalId);
|
|
500
|
+
const { renderGoalSpecForPrompt } = await import("./goalSpec.js");
|
|
501
|
+
goalSpecBlock = renderGoalSpecForPrompt(goalCtx.goalId);
|
|
498
502
|
}
|
|
499
503
|
} catch {
|
|
500
504
|
}
|
|
@@ -674,6 +678,10 @@ ${transientIncludes}` : "" },
|
|
|
674
678
|
// Top-N most relevant lessons this agent has learned, injected
|
|
675
679
|
// near the recency position so they actually inform the next move.
|
|
676
680
|
{ name: "agentLessons", content: agentLessonsBlock },
|
|
681
|
+
// v7.0 — Living goal SPEC (spec-driven workflow). The definition-of-done
|
|
682
|
+
// lands just before the plan so the agent checks acceptance criteria
|
|
683
|
+
// ("are we done?") before reciting the step ladder ("what's next?").
|
|
684
|
+
{ name: "goalSpec", content: goalSpecBlock },
|
|
677
685
|
// v6.0 Command Post upgrade #2 — Living goal plan (Manus recitation).
|
|
678
686
|
// When the session is tied to a goal, the goal's plan.md surfaces
|
|
679
687
|
// so the agent recites + updates progress every turn.
|
|
@@ -1148,34 +1156,19 @@ Continue executing this task NOW using the appropriate tools. Do NOT re-explain,
|
|
|
1148
1156
|
taskEnforcementActive = true;
|
|
1149
1157
|
}
|
|
1150
1158
|
if (/\b(fix|change|modify|update|refactor|implement|add|remove|replace|uncomment|activate|enable|rewrite|patch|upgrade)\b.{0,80}\b(code|function|file|class|method|module|component|logic|bug|feature|session|title|tool|test)\b/i.test(message)) {
|
|
1151
|
-
systemPrompt += "\n\nWhen editing code: 1) read the relevant
|
|
1159
|
+
systemPrompt += "\n\nWhen editing code: 1) read the relevant file first with read_file, 2) make the change with edit_file (for a small change) or write_file \u2014 do NOT use shell/sed/echo/cat to edit files; edit_file is the correct, verifiable tool, 3) run tests to verify, 4) report what you changed. Do NOT stop after reading \u2014 actually save your changes.";
|
|
1152
1160
|
taskEnforcementActive = true;
|
|
1153
1161
|
}
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
{ pattern: /\b(?:vram|gpu|nvidia)\b/i, widget: "system:vram", name: "VRAM Monitor" },
|
|
1159
|
-
{ pattern: /\b(?:teams?|members?|roles?|permissions?|rbac)\b/i, widget: "system:teams", name: "Team Hub" },
|
|
1160
|
-
{ pattern: /\b(?:cron|schedules?|jobs?|timers?)\b/i, widget: "system:cron", name: "Cron Scheduler" },
|
|
1161
|
-
{ pattern: /\b(?:checkpoints?|restores?|save state)\b/i, widget: "system:checkpoints", name: "Checkpoints" },
|
|
1162
|
-
{ pattern: /\b(?:organism|guardrails?)\b/i, widget: "system:organism", name: "Organism Monitor" },
|
|
1163
|
-
{ pattern: /\b(?:fleet|nodes?|routes?|mesh)\b/i, widget: "system:fleet", name: "Fleet Router" },
|
|
1164
|
-
{ pattern: /\b(?:captcha|form fill|web automation)\b/i, widget: "system:browser", name: "Browser Tools" },
|
|
1165
|
-
// v6.0 step 1 — paperclip Bucket C / killed
|
|
1166
|
-
{ pattern: /\b(?:tests?|flaky|failing|coverage|eval)\b/i, widget: "system:eval", name: "Test Lab" }
|
|
1167
|
-
];
|
|
1168
|
-
const imperativeRe = /\b(?:add|open|show|pin|create|launch|put|give\s+me|i\s+want|let'?s\s+see|i\s+need)\b/i;
|
|
1169
|
-
const widgetNounRe = /\b(?:widget|panel|dashboard|hub|gallery|kitchen|scheduler)\b/i;
|
|
1170
|
-
const hasWidgetIntent = imperativeRe.test(message) && widgetNounRe.test(message);
|
|
1171
|
-
const matchedWidget = hasWidgetIntent ? systemWidgetPatterns.find((p) => p.pattern.test(message)) : null;
|
|
1162
|
+
if (/\b(remind|schedule|every (day|week|morning|hour)|later|tomorrow|at \d|recurring|cron|alarm|automat)/i.test(message)) {
|
|
1163
|
+
systemPrompt += "\n\nHONESTY RULE: never claim you scheduled, set a reminder, automated, sent, or posted something unless you ACTUALLY called the corresponding tool in this turn (the `reminder` tool for one-time reminders \u2014 action=set with message + ISO `when`; the `cron` tool for recurring jobs). If you cannot do it with your tools, say so plainly instead of pretending.";
|
|
1164
|
+
}
|
|
1165
|
+
const matchedWidget = detectSystemWidget(message);
|
|
1172
1166
|
if (matchedWidget && !taskEnforcementActive) {
|
|
1173
1167
|
systemPrompt += `
|
|
1174
1168
|
|
|
1175
|
-
The user is asking about ${matchedWidget.name}. You MUST call gallery_search for "${matchedWidget.
|
|
1169
|
+
The user is asking about ${matchedWidget.name}. You MUST call gallery_search for "${matchedWidget.source}" FIRST to find the widget template, then call gallery_get to fetch it, and emit it through the _____widget gate as JSON with format "system":
|
|
1176
1170
|
|
|
1177
|
-
|
|
1178
|
-
{ "name": "${matchedWidget.name}", "format": "system", "source": "${matchedWidget.widget}", "w": 6, "h": 6 }
|
|
1171
|
+
${buildSystemWidgetGate(matchedWidget)}
|
|
1179
1172
|
|
|
1180
1173
|
Do NOT just describe it \u2014 actually create the widget on the canvas.`;
|
|
1181
1174
|
taskEnforcementActive = true;
|
|
@@ -1301,12 +1294,43 @@ CRITICAL: Widgets are NOT files. Do NOT use write_file, edit_file, or any file t
|
|
|
1301
1294
|
}
|
|
1302
1295
|
}
|
|
1303
1296
|
const SMALL_MODEL_PATTERNS = ["llama3.2", "llama3.1:8b", "phi", "gemma:2b", "qwen3.5:4b", "tinyllama", "dolphin3"];
|
|
1304
|
-
const
|
|
1305
|
-
|
|
1297
|
+
const nameIsTiny = SMALL_MODEL_PATTERNS.some((p) => activeModel.toLowerCase().includes(p));
|
|
1298
|
+
const { getModelCapabilitiesEx } = await import("../providers/modelCapabilities.js");
|
|
1299
|
+
const bareModel = activeModel.includes("/") ? activeModel.slice(activeModel.indexOf("/") + 1) : activeModel;
|
|
1300
|
+
const capsA = getModelCapabilitiesEx(activeModel);
|
|
1301
|
+
const capsB = getModelCapabilitiesEx(bareModel);
|
|
1302
|
+
const best = capsA.caps.contextWindow <= capsB.caps.contextWindow ? capsA : capsB;
|
|
1303
|
+
const modelCtxWindow = best.caps.contextWindow;
|
|
1304
|
+
const ctxIsKnown = best.source !== "fallback";
|
|
1305
|
+
const contextTier = nameIsTiny || ctxIsKnown && modelCtxWindow < 12e3 ? "tiny" : ctxIsKnown && modelCtxWindow < 48e3 ? "small" : "full";
|
|
1306
|
+
const isSmallModel = contextTier !== "full";
|
|
1307
|
+
if (contextTier === "tiny") {
|
|
1306
1308
|
const CORE_TOOL_NAMES = ["shell", "read_file", "write_file", "edit_file", "list_dir", "memory"];
|
|
1307
1309
|
const coreTools = activeTools.filter((t) => CORE_TOOL_NAMES.includes(t.function.name));
|
|
1308
|
-
logger.info(COMPONENT, `[
|
|
1310
|
+
logger.info(COMPONENT, `[ContextFit] tier=tiny (ctx=${modelCtxWindow}) \u2014 ${activeTools.length} \u2192 ${coreTools.length} tools for ${activeModel}`);
|
|
1309
1311
|
activeTools = coreTools;
|
|
1312
|
+
} else if (contextTier === "small") {
|
|
1313
|
+
const LEAN_TOOL_NAMES = [
|
|
1314
|
+
"shell",
|
|
1315
|
+
"read_file",
|
|
1316
|
+
"write_file",
|
|
1317
|
+
"edit_file",
|
|
1318
|
+
"list_dir",
|
|
1319
|
+
"web_search",
|
|
1320
|
+
"browse_url",
|
|
1321
|
+
"memory",
|
|
1322
|
+
"create_widget",
|
|
1323
|
+
"gallery_search",
|
|
1324
|
+
"gallery_get",
|
|
1325
|
+
"cron",
|
|
1326
|
+
"reminder",
|
|
1327
|
+
"tool_search"
|
|
1328
|
+
];
|
|
1329
|
+
const leanTools = activeTools.filter((t) => LEAN_TOOL_NAMES.includes(t.function.name));
|
|
1330
|
+
if (leanTools.length > 0) {
|
|
1331
|
+
logger.info(COMPONENT, `[ContextFit] tier=small (ctx=${modelCtxWindow}) \u2014 ${activeTools.length} \u2192 ${leanTools.length} tools for ${activeModel}`);
|
|
1332
|
+
activeTools = leanTools;
|
|
1333
|
+
}
|
|
1310
1334
|
}
|
|
1311
1335
|
if (!voiceFastPath && !isSmallModel && isBrainAvailable()) {
|
|
1312
1336
|
const brainFiltered = await brainSelectTools(message, activeTools);
|
|
@@ -1479,7 +1503,7 @@ Synthesize these results into a coherent response for the user.`
|
|
|
1479
1503
|
if (!budgetExhausted) {
|
|
1480
1504
|
import("./checkpoint.js").then((m) => m.clearCheckpoints(session.id)).catch((e) => logger.debug("Agent", `Background op failed: ${e.message}`));
|
|
1481
1505
|
}
|
|
1482
|
-
if (toolsUsed.length > 0) {
|
|
1506
|
+
if (toolsUsed.length > 0 && channel !== "eval") {
|
|
1483
1507
|
const success = !finalContent.toLowerCase().includes("error") && !budgetExhausted;
|
|
1484
1508
|
recordStrategy(message, [...new Set(toolsUsed)], orderedToolSequence.length, success, orderedToolSequence);
|
|
1485
1509
|
if (orderedToolSequence.length > 0) {
|
|
@@ -1509,6 +1533,23 @@ Synthesize these results into a coherent response for the user.`
|
|
|
1509
1533
|
logger.warn(COMPONENT, `[HallucinationGuard] Cloud model claimed action but toolsUsed is empty \u2014 sanitizing response`);
|
|
1510
1534
|
finalContent = "I wasn't able to finish that task \u2014 the connection to my brain hiccupped. Try asking again, or I can switch to my offline mode if you prefer.";
|
|
1511
1535
|
}
|
|
1536
|
+
{
|
|
1537
|
+
const sw = detectSystemWidget(message);
|
|
1538
|
+
if (sw && !finalContent.includes("_____widget")) {
|
|
1539
|
+
finalContent = finalContent ? `${finalContent}
|
|
1540
|
+
|
|
1541
|
+
${buildSystemWidgetGate(sw)}` : buildSystemWidgetGate(sw);
|
|
1542
|
+
logger.info(COMPONENT, `[SystemWidgetShortcut] Deterministically emitted _____widget gate for ${sw.source}`);
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
{
|
|
1546
|
+
const claimsScheduled = /\b(i(?:'|’)?(?:ve| have)\s+(?:set|scheduled|created)|(?:reminder|schedule[d]?)\s+(?:is\s+)?(?:set|created|scheduled)|i(?:'|’)?ll remind you|scheduled a reminder)\b/i.test(finalContent);
|
|
1547
|
+
const schedulingToolRan = toolsUsed.some((t) => /^(reminder|cron|schedule|event_trigger|workflows?|social_scheduler)/i.test(t));
|
|
1548
|
+
if (claimsScheduled && !schedulingToolRan) {
|
|
1549
|
+
finalContent += "\n\n\u26A0\uFE0F Correction: I described scheduling that, but I did not actually create a scheduled job this turn. Ask me again and I'll set it with the reminder tool properly.";
|
|
1550
|
+
logger.warn(COMPONENT, "[HonestyGuard] Reply claimed scheduling without a scheduling tool \u2014 appended correction");
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1512
1553
|
addMessage(session, "assistant", finalContent, {
|
|
1513
1554
|
model: modelUsed,
|
|
1514
1555
|
tokenCount: totalCompletionTokens
|
|
@@ -1586,9 +1627,11 @@ Synthesize these results into a coherent response for the user.`
|
|
|
1586
1627
|
durationMs,
|
|
1587
1628
|
sessionId: session.id
|
|
1588
1629
|
};
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1630
|
+
if (channel !== "eval") {
|
|
1631
|
+
logTrajectory(trajectory);
|
|
1632
|
+
processTrajectoryForSkills(trajectory);
|
|
1633
|
+
}
|
|
1634
|
+
if (channel !== "eval") processTrajectoryForLearningReview(trajectory);
|
|
1592
1635
|
trace.setModel(modelUsed);
|
|
1593
1636
|
trace.setRounds(loopResult.toolCallDetails.length);
|
|
1594
1637
|
trace.setTokens(totalPromptTokens, totalCompletionTokens);
|
|
@@ -1611,11 +1654,43 @@ Synthesize these results into a coherent response for the user.`
|
|
|
1611
1654
|
});
|
|
1612
1655
|
} catch {
|
|
1613
1656
|
}
|
|
1657
|
+
try {
|
|
1658
|
+
const { recordSpan } = await import("../telemetry/traceStore.js");
|
|
1659
|
+
let costUsd = 0;
|
|
1660
|
+
try {
|
|
1661
|
+
const { calculateActualCost } = await import("./costEstimator.js");
|
|
1662
|
+
costUsd = calculateActualCost(modelUsed, { prompt: totalPromptTokens, completion: totalCompletionTokens });
|
|
1663
|
+
} catch {
|
|
1664
|
+
}
|
|
1665
|
+
recordSpan({
|
|
1666
|
+
sessionId: session.id,
|
|
1667
|
+
startedAt: new Date(startTime).toISOString(),
|
|
1668
|
+
durationMs,
|
|
1669
|
+
model: modelUsed,
|
|
1670
|
+
input: (message || "").slice(0, 500),
|
|
1671
|
+
output: (finalContent || "").slice(0, 1e3),
|
|
1672
|
+
toolsUsed: [...new Set(toolsUsed)],
|
|
1673
|
+
promptTokens: totalPromptTokens,
|
|
1674
|
+
completionTokens: totalCompletionTokens,
|
|
1675
|
+
costUsd,
|
|
1676
|
+
ok: !budgetExhausted && !!finalContent
|
|
1677
|
+
});
|
|
1678
|
+
} catch {
|
|
1679
|
+
}
|
|
1680
|
+
try {
|
|
1681
|
+
const { isBenchMode } = await import("../utils/benchMode.js");
|
|
1682
|
+
if (!isBenchMode()) {
|
|
1683
|
+
const { maybeObserve } = await import("./observationWriter.js");
|
|
1684
|
+
maybeObserve(channel, message || "", finalContent || "");
|
|
1685
|
+
}
|
|
1686
|
+
} catch {
|
|
1687
|
+
}
|
|
1614
1688
|
return {
|
|
1615
1689
|
content: finalContent,
|
|
1616
1690
|
sessionId: session.id,
|
|
1617
1691
|
toolsUsed: [...new Set(toolsUsed)],
|
|
1618
1692
|
attemptedTools: [...new Set(attemptedTools)],
|
|
1693
|
+
orderedToolSequence: [...orderedToolSequence],
|
|
1619
1694
|
tokenUsage: {
|
|
1620
1695
|
prompt: totalPromptTokens,
|
|
1621
1696
|
completion: totalCompletionTokens,
|