titan-agent 5.3.0 → 5.3.2
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 +5 -5
- package/dist/agent/agent.js +33 -4
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/subAgent.js +16 -1
- package/dist/agent/subAgent.js.map +1 -1
- package/dist/agent/toolRunner.js +17 -0
- package/dist/agent/toolRunner.js.map +1 -1
- package/dist/config/schema.js +10 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/eval/record.js +21 -2
- package/dist/eval/record.js.map +1 -1
- package/dist/gateway/metrics.js +26 -3
- package/dist/gateway/metrics.js.map +1 -1
- package/dist/gateway/server.js +58 -6
- package/dist/gateway/server.js.map +1 -1
- package/dist/organism/drives.js +47 -11
- package/dist/organism/drives.js.map +1 -1
- package/dist/organism/pressure.js +16 -0
- package/dist/organism/pressure.js.map +1 -1
- package/dist/skills/builtin/fb_autopilot.js +16 -1
- package/dist/skills/builtin/fb_autopilot.js.map +1 -1
- package/dist/telemetry/activityLog.js +158 -0
- package/dist/telemetry/activityLog.js.map +1 -0
- package/dist/utils/constants.js +3 -1
- package/dist/utils/constants.js.map +1 -1
- package/package.json +1 -1
- package/ui/dist/assets/{AuditPanel-C31LRHZX.js → AuditPanel-CM6Wg9hO.js} +1 -1
- package/ui/dist/assets/{AutonomyPanel-CxQU72ZY.js → AutonomyPanel-CESx3ANg.js} +1 -1
- package/ui/dist/assets/{AutopilotPanel-D4FnBwJm.js → AutopilotPanel-DtEet1hJ.js} +1 -1
- package/ui/dist/assets/{AutoresearchPanel-BYHXZ9AO.js → AutoresearchPanel-DR47NqT5.js} +1 -1
- package/ui/dist/assets/{BackupPanel-C4CQKf2P.js → BackupPanel-BGP8p3l3.js} +1 -1
- package/ui/dist/assets/{BrowserPanel-C-OFYyLm.js → BrowserPanel-C15x9bLn.js} +1 -1
- package/ui/dist/assets/{CPAgents-CvkZDm_3.js → CPAgents-DYUtPzSq.js} +1 -1
- package/ui/dist/assets/{CPDashboard-JmBLBbj7.js → CPDashboard-Bf0-SyCh.js} +1 -1
- package/ui/dist/assets/{CPFiles-BDToRw0a.js → CPFiles-CxgxjQcO.js} +1 -1
- package/ui/dist/assets/{CPGoals-Dh9qJNWa.js → CPGoals-BsmCMTvT.js} +1 -1
- package/ui/dist/assets/{CPInbox-B6iaIbNG.js → CPInbox-tMSbmQ9H.js} +1 -1
- package/ui/dist/assets/{CPSocial-CsFrwZRC.js → CPSocial-nb-j7sOE.js} +1 -1
- package/ui/dist/assets/{ChannelsPanel-D-S4ktFn.js → ChannelsPanel-DP5C2OKd.js} +1 -1
- package/ui/dist/assets/{CheckpointsPanel-D-sP9ZuS.js → CheckpointsPanel-DlranVLZ.js} +1 -1
- package/ui/dist/assets/{CommandPostHub-BhlNyeDH.js → CommandPostHub-BgxIa4Ev.js} +3 -3
- package/ui/dist/assets/{CronPanel-Bf3rV7N2.js → CronPanel-LoT5yKwJ.js} +1 -1
- package/ui/dist/assets/{DaemonPanel-GGBWjTG2.js → DaemonPanel-DBGMqaE_.js} +1 -1
- package/ui/dist/assets/{DataTable-D2Px4o6f.js → DataTable-B2Ma8hfi.js} +1 -1
- package/ui/dist/assets/{EmptyState-DH6-Jy6A.js → EmptyState-CcKyk5Yn.js} +1 -1
- package/ui/dist/assets/EvalHarnessPanel-BqtMc1ZM.js +2 -0
- package/ui/dist/assets/{EvalPanel-CdjxzHlJ.js → EvalPanel-Bc33j0pN.js} +1 -1
- package/ui/dist/assets/{FilesPanel-Dz8TFydL.js → FilesPanel-3QKvrWPo.js} +1 -1
- package/ui/dist/assets/{FleetPanel-CWwWWTD4.js → FleetPanel-CSsXuQYj.js} +1 -1
- package/ui/dist/assets/{HomelabPanel-C7VBV7AC.js → HomelabPanel-DhrjTX9m.js} +1 -1
- package/ui/dist/assets/{InfraView-B1TgXARJ.js → InfraView-CR6HyrL6.js} +2 -2
- package/ui/dist/assets/{InlineEditableField-DOJNOL8m.js → InlineEditableField-CnvF-yFR.js} +1 -1
- package/ui/dist/assets/{Input-BgyHgQ3D.js → Input-GTHp2Rkr.js} +1 -1
- package/ui/dist/assets/{IntegrationsPanel-O26b4nhv.js → IntegrationsPanel-CymCRE3T.js} +1 -1
- package/ui/dist/assets/{IntelligenceView-DUhTQ8f_.js → IntelligenceView-C1IHxJRC.js} +2 -2
- package/ui/dist/assets/{LearningPanel-DX5S9ovg.js → LearningPanel-DOCES3lH.js} +1 -1
- package/ui/dist/assets/{LogsPanel-DdeTnATQ.js → LogsPanel-BLnAqEaZ.js} +1 -1
- package/ui/dist/assets/{McpPanel-BpXWrP1a.js → McpPanel-ChUzmr3z.js} +1 -1
- package/ui/dist/assets/{MemoryGraphPanel-CNkZmTUy.js → MemoryGraphPanel-Bzvjmzvk.js} +1 -1
- package/ui/dist/assets/{MemoryWikiPanel-o4L8Df-n.js → MemoryWikiPanel-Dwk3Aqwd.js} +1 -1
- package/ui/dist/assets/{MeshPanel-DMBQJFCC.js → MeshPanel-C3LJSlht.js} +1 -1
- package/ui/dist/assets/{NvidiaPanel-C8P-tJFG.js → NvidiaPanel-CeZK_-CV.js} +1 -1
- package/ui/dist/assets/{OrganismPanel-CcfHDWDk.js → OrganismPanel-BB6YOiQV.js} +1 -1
- package/ui/dist/assets/{OverviewPanel-BSotI1Zv.js → OverviewPanel-BmtBhQnv.js} +1 -1
- package/ui/dist/assets/{PageHeader-DPJuAgJk.js → PageHeader-BimceqQo.js} +1 -1
- package/ui/dist/assets/{PaperclipPanel-aXoXUjo6.js → PaperclipPanel-C-brgwA3.js} +1 -1
- package/ui/dist/assets/{PersonasPanel-DdPZxz2C.js → PersonasPanel-L1j78p6H.js} +1 -1
- package/ui/dist/assets/{RecipesPanel-D7qffXQN.js → RecipesPanel-34lCfynJ.js} +1 -1
- package/ui/dist/assets/{SecurityPanel-BDRK5el7.js → SecurityPanel-CBTPWLj6.js} +1 -1
- package/ui/dist/assets/{SelfImprovePanel-oYiMwFnA.js → SelfImprovePanel-BrPbFHhG.js} +1 -1
- package/ui/dist/assets/{SelfProposalsPanel-DOpNU_rr.js → SelfProposalsPanel-lNmiDThB.js} +1 -1
- package/ui/dist/assets/{SessionsPanel-eRbM3D9P.js → SessionsPanel-DAEYIn83.js} +1 -1
- package/ui/dist/assets/{SessionsTab-Jq3UKQCI.js → SessionsTab-JQbltWww.js} +1 -1
- package/ui/dist/assets/{SettingsPanel-DBIvKUYY.js → SettingsPanel-CzRROAYQ.js} +1 -1
- package/ui/dist/assets/{SettingsView-yfSY4OLt.js → SettingsView-CN7ii2uw.js} +2 -2
- package/ui/dist/assets/{SkeletonLoader-D1d-Gyyg.js → SkeletonLoader-atQtpcF5.js} +1 -1
- package/ui/dist/assets/{SkillsPanel-bubl9nag.js → SkillsPanel-DlFs2ih7.js} +1 -1
- package/ui/dist/assets/{SomaView-D3aFL8Tw.js → SomaView-Ba642Oqb.js} +1 -1
- package/ui/dist/assets/{StatCard-CEVFsz7t.js → StatCard-DciE_Iqc.js} +1 -1
- package/ui/dist/assets/{StatusBadge-DxeA9LNd.js → StatusBadge-BtfSPoW2.js} +1 -1
- package/ui/dist/assets/{TeamsPanel-D6IJJIR_.js → TeamsPanel-DKQ5z2Qe.js} +1 -1
- package/ui/dist/assets/{TelemetryPanel-SMPebdjQ.js → TelemetryPanel-B6KAc55Q.js} +1 -1
- package/ui/dist/assets/{TitanCanvas-BQU1yxqf.js → TitanCanvas-C-s0A-lv.js} +3 -3
- package/ui/dist/assets/{ToolsView-DgP4uRPr.js → ToolsView-Dei0KMP0.js} +2 -2
- package/ui/dist/assets/{Tooltip-CNPQr7IO.js → Tooltip-70UK0E2I.js} +1 -1
- package/ui/dist/assets/{TraceViewer-BbISy_ET.js → TraceViewer-BniolyBx.js} +1 -1
- package/ui/dist/assets/{TrainingPanel-BdCHcv6t.js → TrainingPanel-Bz4CTPGW.js} +1 -1
- package/ui/dist/assets/{VoiceOverlay-l6yoasVz.js → VoiceOverlay-CmNCrLcd.js} +1 -1
- package/ui/dist/assets/{VramPanel-XLhmen92.js → VramPanel-Xh_OtRDR.js} +1 -1
- package/ui/dist/assets/{WatchView-Bt-lNNWJ.js → WatchView-C-sGFpVy.js} +1 -1
- package/ui/dist/assets/{WorkTab-IG-F6Qll.js → WorkTab-BjLNmgIK.js} +1 -1
- package/ui/dist/assets/{WorkflowsPanel-DsMpnwLK.js → WorkflowsPanel-CvgQU1xI.js} +1 -1
- package/ui/dist/assets/{arrow-left-C_H9Z2Tm.js → arrow-left-DwqHtJiU.js} +1 -1
- package/ui/dist/assets/{chart-column-rR6tb72l.js → chart-column-BtNO6sRy.js} +1 -1
- package/ui/dist/assets/{circle-check-big-B1hMwau0.js → circle-check-big-DZRE_MbN.js} +1 -1
- package/ui/dist/assets/{dollar-sign-DhYwsTnR.js → dollar-sign-aVG3a5eL.js} +1 -1
- package/ui/dist/assets/{download-UDDcAlZC.js → download-BxiWJU4G.js} +1 -1
- package/ui/dist/assets/{eye-off-Cx0M_VQb.js → eye-off-CkgfFYhm.js} +1 -1
- package/ui/dist/assets/{funnel-B7YvM1ei.js → funnel-PkLdxKyC.js} +1 -1
- package/ui/dist/assets/{git-branch-BhTBN3J6.js → git-branch-BM-Gw95X.js} +1 -1
- package/ui/dist/assets/{index-D7Clon2u.js → index-CahJbWSR.js} +2 -2
- package/ui/dist/assets/{layers-B6jDzitD.js → layers-BuGf4FIJ.js} +1 -1
- package/ui/dist/assets/{legacy-av079XKu.js → legacy-CR6o4t-y.js} +1 -1
- package/ui/dist/assets/{lightbulb-DRuQ3Chf.js → lightbulb-n8gc_XAL.js} +1 -1
- package/ui/dist/assets/{pause-DqkRWPB_.js → pause-DCV52koX.js} +1 -1
- package/ui/dist/assets/{play-hUyR3CVS.js → play-CcJ9BnCh.js} +1 -1
- package/ui/dist/assets/{plug-CvpyjJt_.js → plug-CfWBXfCl.js} +1 -1
- package/ui/dist/assets/{proxy-Cc5bR828.js → proxy-CzZDfLmm.js} +1 -1
- package/ui/dist/assets/{square-CdiC0J8Z.js → square-DJpUhlxi.js} +1 -1
- package/ui/dist/assets/{target-DemL8_0v.js → target-DWcmM_9m.js} +1 -1
- package/ui/dist/assets/{toggle-right-Dsk892k5.js → toggle-right-YusFQ69L.js} +1 -1
- package/ui/dist/assets/{trash-2-Byj4OvKB.js → trash-2-CK7yQ55V.js} +1 -1
- package/ui/dist/assets/{trending-up-Dh_CffGX.js → trending-up-DGjFyubC.js} +1 -1
- package/ui/dist/assets/{trophy-DDr2AePx.js → trophy-uQv_NgDB.js} +1 -1
- package/ui/dist/index.html +1 -1
- package/ui/dist/assets/EvalHarnessPanel-Cz9dRg61.js +0 -2
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<a href="https://www.npmjs.com/package/titan-agent"><img src="https://img.shields.io/npm/v/titan-agent?color=blue&label=npm" alt="npm version"/></a>
|
|
24
24
|
<a href="https://github.com/Djtony707/TITAN/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"/></a>
|
|
25
25
|
<a href="#providers"><img src="https://img.shields.io/badge/providers-37-purple" alt="37 Providers"/></a>
|
|
26
|
-
<a href="#built-in-tools"><img src="https://img.shields.io/badge/tools-
|
|
26
|
+
<a href="#built-in-tools"><img src="https://img.shields.io/badge/tools-253-orange" alt="253 Tools"/></a>
|
|
27
27
|
<a href="#widget-gallery"><img src="https://img.shields.io/badge/widgets-110-pink" alt="110 Widgets"/></a>
|
|
28
28
|
</p>
|
|
29
29
|
|
|
@@ -56,7 +56,7 @@ TITAN is like having a super-smart intern who never sleeps, never asks for a rai
|
|
|
56
56
|
**"Talk to me in Andrew's voice"**
|
|
57
57
|
→ Done. It clones voices with 10 seconds of audio. Creepy? A little. Useful? Absolutely.
|
|
58
58
|
|
|
59
|
-
No coding required. TITAN comes with **
|
|
59
|
+
No coding required. TITAN comes with **253 tools** out of the box. If it needs something new, it builds it on the fly.
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
@@ -137,7 +137,7 @@ Open `http://localhost:48420` and you get a beautiful canvas of draggable widget
|
|
|
137
137
|
| **Command Post** | Agents, budgets, approvals, org chart, ancestry validation, atomic checkout. Run a business with TITAN agents as employees. |
|
|
138
138
|
| **SOMA** | Watch TITAN's digital hormones pulse in real time. Weirdly mesmerizing. |
|
|
139
139
|
| **Skills** | 143 skills loaded, 248 tools. Toggle each on/off. |
|
|
140
|
-
| **Voice** | F5-TTS voice cloning + WebRTC streaming. Any voice, any language. |
|
|
140
|
+
| **Voice** | F5-TTS voice cloning via a Python sidecar (mlx-audio on Mac, container on Linux) + WebRTC streaming. Any voice, any language. |
|
|
141
141
|
| **Memory Graph** | A visual web of everything TITAN remembers about you. |
|
|
142
142
|
| **Security** | Audit log, checkpoint history, time travel for your files, bug-report viewer. |
|
|
143
143
|
|
|
@@ -260,9 +260,9 @@ Start in supervised mode. Review what it does. Don't give it access to systems y
|
|
|
260
260
|
|
|
261
261
|
- **Version:** 5.3.0 "Spacewalk: CI Gate + Parity"
|
|
262
262
|
- **Tests:** 500+ deterministic tests (unit + mock trajectory + parity), pass in under 5 s — plus 11 live-eval suites and a CI merge gate at 80 % per suite
|
|
263
|
-
- **Widget templates:**
|
|
263
|
+
- **Widget templates:** 109 production templates + 19 system widgets = 128 runtime entries across 26 categories
|
|
264
264
|
- **Skills:** 143 loaded
|
|
265
|
-
- **Tools:**
|
|
265
|
+
- **Tools:** 253 across all skills (verified at runtime by `tests/unit/readme-claims.test.ts`)
|
|
266
266
|
- **AI Providers:** 37 (Anthropic, OpenAI, Google, Ollama, Groq, Mistral, and 31 more)
|
|
267
267
|
- **Chat Channels:** 16
|
|
268
268
|
- **Node:** ≥ 22, pure ESM
|
package/dist/agent/agent.js
CHANGED
|
@@ -132,7 +132,7 @@ function ensureSpawnAgentRegistered() {
|
|
|
132
132
|
const templateName = args.template || "";
|
|
133
133
|
let configAgent = null;
|
|
134
134
|
try {
|
|
135
|
-
const { resolveAgentConfig } = await import("./agentScope.js");
|
|
135
|
+
const { resolveAgentConfig, agentAllowsSkill } = await import("./agentScope.js");
|
|
136
136
|
configAgent = resolveAgentConfig(templateName);
|
|
137
137
|
} catch {
|
|
138
138
|
}
|
|
@@ -140,6 +140,18 @@ function ensureSpawnAgentRegistered() {
|
|
|
140
140
|
const template = SUB_AGENT_TEMPLATES[baseTemplateName] || {};
|
|
141
141
|
const agentName = args.name || configAgent?.name || template.name || "SubAgent";
|
|
142
142
|
const task = args.task;
|
|
143
|
+
let appliedFields = [];
|
|
144
|
+
if (configAgent) {
|
|
145
|
+
if (configAgent.maxRounds !== 15) appliedFields.push(`maxRounds=${configAgent.maxRounds}`);
|
|
146
|
+
if (configAgent.maxTokens !== 4e3) appliedFields.push(`maxTokens=${configAgent.maxTokens}`);
|
|
147
|
+
if (configAgent.persona && configAgent.persona !== "default") appliedFields.push(`persona=${configAgent.persona}`);
|
|
148
|
+
if (configAgent.skillsFilter) appliedFields.push(`skillsFilter=[${configAgent.skillsFilter.join(",")}]`);
|
|
149
|
+
if (configAgent.modelFallbacks.length > 0) logger.info("Agent", `Agent "${agentName}" has modelFallbacks \u2014 not yet implemented in spawn path`);
|
|
150
|
+
if (configAgent.workspaceDir) appliedFields.push(`workspaceDir=${configAgent.workspaceDir}`);
|
|
151
|
+
if (configAgent.tags.length > 0) appliedFields.push(`tags=[${configAgent.tags.join(",")}]`);
|
|
152
|
+
if (configAgent.systemPromptOverride) appliedFields.push("systemPromptOverride=set");
|
|
153
|
+
if (appliedFields.length > 0) logger.info("Agent", `Applied config agent fields for "${agentName}": ${appliedFields.join(", ")}`);
|
|
154
|
+
}
|
|
143
155
|
try {
|
|
144
156
|
const { isKilled } = await import("../safety/killSwitch.js");
|
|
145
157
|
if (isKilled()) {
|
|
@@ -207,13 +219,30 @@ function ensureSpawnAgentRegistered() {
|
|
|
207
219
|
const { updateAgentStatus } = await import("./commandPost.js");
|
|
208
220
|
updateAgentStatus(specialistId, "active");
|
|
209
221
|
}
|
|
222
|
+
let allowedTools = template.tools;
|
|
223
|
+
if (configAgent?.skillsFilter) {
|
|
224
|
+
try {
|
|
225
|
+
const { agentAllowsSkill } = await import("./agentScope.js");
|
|
226
|
+
allowedTools = template.tools?.filter((t) => agentAllowsSkill(configAgent, t));
|
|
227
|
+
if (allowedTools && allowedTools.length === 0) {
|
|
228
|
+
logger.warn("Agent", `Agent "${agentName}" skillsFilter blocks all template tools \u2014 falling back to template default`);
|
|
229
|
+
allowedTools = template.tools;
|
|
230
|
+
}
|
|
231
|
+
} catch {
|
|
232
|
+
}
|
|
233
|
+
}
|
|
210
234
|
const result = await spawnSubAgent({
|
|
211
235
|
name: agentName,
|
|
212
236
|
task,
|
|
213
|
-
tools:
|
|
214
|
-
systemPrompt: specialistPrompt || template.systemPrompt,
|
|
215
|
-
model: args.model || specialistModel,
|
|
237
|
+
tools: allowedTools,
|
|
238
|
+
systemPrompt: configAgent?.systemPromptOverride || specialistPrompt || template.systemPrompt,
|
|
239
|
+
model: args.model || configAgent?.model || specialistModel,
|
|
216
240
|
tier: template.tier,
|
|
241
|
+
persona: configAgent?.persona,
|
|
242
|
+
maxRounds: configAgent?.maxRounds,
|
|
243
|
+
maxTokens: configAgent?.maxTokens,
|
|
244
|
+
workspaceDir: configAgent?.workspaceDir ?? void 0,
|
|
245
|
+
tags: configAgent?.tags,
|
|
217
246
|
depth: 1
|
|
218
247
|
// v4.7.0: this IS a child (was incorrectly 0)
|
|
219
248
|
});
|