daemora 1.0.3 → 1.0.5
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/LICENSE +663 -0
- package/README.md +69 -19
- package/SOUL.md +25 -24
- package/daemora-ui/README.md +11 -0
- package/package.json +12 -2
- package/skills/api-development.md +35 -0
- package/skills/artifacts-builder/SKILL.md +74 -0
- package/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/brand-guidelines.md +73 -0
- package/skills/browser.md +77 -0
- package/skills/changelog-generator.md +104 -0
- package/skills/coding.md +26 -10
- package/skills/content-research-writer.md +538 -0
- package/skills/data-analysis.md +27 -0
- package/skills/debugging.md +33 -0
- package/skills/devops.md +37 -0
- package/skills/document-docx.md +197 -0
- package/skills/document-pdf.md +294 -0
- package/skills/document-pptx.md +484 -0
- package/skills/document-xlsx.md +289 -0
- package/skills/domain-name-brainstormer.md +212 -0
- package/skills/file-organizer.md +433 -0
- package/skills/frontend-design.md +42 -0
- package/skills/image-enhancer.md +99 -0
- package/skills/invoice-organizer.md +446 -0
- package/skills/lead-research-assistant.md +199 -0
- package/skills/mcp-builder/SKILL.md +328 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/meeting-insights-analyzer.md +327 -0
- package/skills/orchestration.md +93 -0
- package/skills/raffle-winner-picker.md +159 -0
- package/skills/slack-gif-creator/SKILL.md +646 -0
- package/skills/slack-gif-creator/core/color_palettes.py +302 -0
- package/skills/slack-gif-creator/core/easing.py +230 -0
- package/skills/slack-gif-creator/core/frame_composer.py +469 -0
- package/skills/slack-gif-creator/core/gif_builder.py +246 -0
- package/skills/slack-gif-creator/core/typography.py +357 -0
- package/skills/slack-gif-creator/core/validators.py +264 -0
- package/skills/slack-gif-creator/core/visual_effects.py +494 -0
- package/skills/slack-gif-creator/requirements.txt +4 -0
- package/skills/slack-gif-creator/templates/bounce.py +106 -0
- package/skills/slack-gif-creator/templates/explode.py +331 -0
- package/skills/slack-gif-creator/templates/fade.py +329 -0
- package/skills/slack-gif-creator/templates/flip.py +291 -0
- package/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/skills/slack-gif-creator/templates/morph.py +329 -0
- package/skills/slack-gif-creator/templates/move.py +293 -0
- package/skills/slack-gif-creator/templates/pulse.py +268 -0
- package/skills/slack-gif-creator/templates/shake.py +127 -0
- package/skills/slack-gif-creator/templates/slide.py +291 -0
- package/skills/slack-gif-creator/templates/spin.py +269 -0
- package/skills/slack-gif-creator/templates/wiggle.py +300 -0
- package/skills/slack-gif-creator/templates/zoom.py +312 -0
- package/skills/system-admin.md +44 -0
- package/skills/tailored-resume-generator.md +345 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/video-downloader.md +99 -0
- package/skills/web-development.md +32 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/src/agents/SubAgentManager.js +57 -12
- package/src/api/openai-compat.js +212 -0
- package/src/channels/TelegramChannel.js +5 -2
- package/src/channels/index.js +7 -10
- package/src/cli.js +129 -50
- package/src/config/agentProfiles.js +1 -0
- package/src/config/default.js +10 -0
- package/src/config/models.js +317 -71
- package/src/config/permissions.js +12 -0
- package/src/core/AgentLoop.js +70 -50
- package/src/core/Compaction.js +84 -2
- package/src/core/MessageQueue.js +90 -0
- package/src/core/Task.js +13 -0
- package/src/core/TaskQueue.js +1 -1
- package/src/core/TaskRunner.js +80 -5
- package/src/index.js +328 -48
- package/src/mcp/MCPAgentRunner.js +48 -11
- package/src/mcp/MCPManager.js +40 -2
- package/src/models/ModelRouter.js +67 -1
- package/src/safety/DockerSandbox.js +212 -0
- package/src/safety/ExecApproval.js +118 -0
- package/src/scheduler/Heartbeat.js +56 -21
- package/src/services/cleanup.js +106 -0
- package/src/services/sessions.js +39 -1
- package/src/setup/wizard.js +75 -4
- package/src/skills/SkillLoader.js +104 -17
- package/src/storage/TaskStore.js +19 -1
- package/src/systemPrompt.js +171 -328
- package/src/tools/browserAutomation.js +615 -104
- package/src/tools/executeCommand.js +19 -1
- package/src/tools/index.js +6 -0
- package/src/tools/manageAgents.js +55 -4
- package/src/tools/replyWithFile.js +62 -0
- package/src/tools/screenCapture.js +12 -1
- package/src/tools/taskManager.js +164 -0
- package/src/tools/useMCP.js +3 -1
- package/src/utils/Embeddings.js +157 -10
- package/src/webhooks/WebhookHandler.js +107 -0
package/src/cli.js
CHANGED
|
@@ -118,6 +118,10 @@ async function main() {
|
|
|
118
118
|
await handleDoctor();
|
|
119
119
|
break;
|
|
120
120
|
|
|
121
|
+
case "cleanup":
|
|
122
|
+
await handleCleanup(subcommand, rest);
|
|
123
|
+
break;
|
|
124
|
+
|
|
121
125
|
case "channels":
|
|
122
126
|
await handleChannels(subcommand);
|
|
123
127
|
break;
|
|
@@ -1281,6 +1285,71 @@ async function handleDoctor() {
|
|
|
1281
1285
|
}
|
|
1282
1286
|
}
|
|
1283
1287
|
|
|
1288
|
+
// ─── Cleanup ──────────────────────────────────────────────────────────────────
|
|
1289
|
+
|
|
1290
|
+
async function handleCleanup(subcommand, rest) {
|
|
1291
|
+
const { runCleanup, getStorageStats } = await import("./services/cleanup.js");
|
|
1292
|
+
const { readFileSync: rfs, writeFileSync: wfs, existsSync: exs } = await import("fs");
|
|
1293
|
+
const { join: pjoin } = await import("path");
|
|
1294
|
+
|
|
1295
|
+
if (subcommand === "stats") {
|
|
1296
|
+
const stats = getStorageStats();
|
|
1297
|
+
console.log(`\n ${t.h("Storage Stats")}\n`);
|
|
1298
|
+
console.log(` Tasks: ${t.bold(stats.tasks.files)} files (${stats.tasks.sizeKB} KB)`);
|
|
1299
|
+
console.log(` Audit: ${t.bold(stats.audit.files)} files (${stats.audit.sizeKB} KB)`);
|
|
1300
|
+
console.log(` Costs: ${t.bold(stats.costs.files)} files (${stats.costs.sizeKB} KB)`);
|
|
1301
|
+
console.log(` Sessions: ${t.bold(stats.sessions.files)} files (${stats.sessions.sizeKB} KB)`);
|
|
1302
|
+
console.log(`\n Retention: ${stats.retentionDays === "never" ? t.dim("never delete") : t.bold(stats.retentionDays + " days")}`);
|
|
1303
|
+
console.log(` ${t.dim("Set with: daemora cleanup set <days> (0 = never)")}\n`);
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
if (subcommand === "set") {
|
|
1308
|
+
const days = parseInt(rest[0], 10);
|
|
1309
|
+
if (isNaN(days) || days < 0) {
|
|
1310
|
+
console.log(`\n ${S.cross} Usage: daemora cleanup set <days> (0 = never delete)\n`);
|
|
1311
|
+
return;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
// Update .env file
|
|
1315
|
+
const envPath = pjoin(config.rootDir, ".env");
|
|
1316
|
+
if (exs(envPath)) {
|
|
1317
|
+
let env = rfs(envPath, "utf-8");
|
|
1318
|
+
if (env.includes("CLEANUP_AFTER_DAYS=")) {
|
|
1319
|
+
env = env.replace(/CLEANUP_AFTER_DAYS=\d*/, `CLEANUP_AFTER_DAYS=${days}`);
|
|
1320
|
+
} else {
|
|
1321
|
+
env = env.trimEnd() + `\n\n# === Cleanup ===\nCLEANUP_AFTER_DAYS=${days}\n`;
|
|
1322
|
+
}
|
|
1323
|
+
wfs(envPath, env);
|
|
1324
|
+
} else {
|
|
1325
|
+
wfs(envPath, `CLEANUP_AFTER_DAYS=${days}\n`);
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
if (days === 0) {
|
|
1329
|
+
console.log(`\n ${t.success("✔")} Auto-cleanup ${t.bold("disabled")}. Data will be kept forever.\n`);
|
|
1330
|
+
} else {
|
|
1331
|
+
console.log(`\n ${t.success("✔")} Auto-cleanup set to ${t.bold(days + " days")}. Old data deleted on each startup.\n`);
|
|
1332
|
+
}
|
|
1333
|
+
return;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
// Default: run cleanup now
|
|
1337
|
+
const days = config.cleanupAfterDays || 30;
|
|
1338
|
+
console.log(`\n ${t.h("Cleanup")} ${t.muted(`Deleting data older than ${days} days`)}\n`);
|
|
1339
|
+
|
|
1340
|
+
const result = runCleanup(days);
|
|
1341
|
+
|
|
1342
|
+
if (result.total === 0) {
|
|
1343
|
+
console.log(` ${t.success("✔")} Nothing to clean up.\n`);
|
|
1344
|
+
} else {
|
|
1345
|
+
if (result.tasks > 0) console.log(` ${t.success("✔")} Tasks: ${result.tasks} deleted`);
|
|
1346
|
+
if (result.audit > 0) console.log(` ${t.success("✔")} Audit: ${result.audit} deleted`);
|
|
1347
|
+
if (result.costs > 0) console.log(` ${t.success("✔")} Costs: ${result.costs} deleted`);
|
|
1348
|
+
if (result.sessions > 0) console.log(` ${t.success("✔")} Sessions: ${result.sessions} deleted`);
|
|
1349
|
+
console.log(`\n Total: ${t.bold(result.total)} file(s) deleted.\n`);
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1284
1353
|
// ─── Channels ─────────────────────────────────────────────────────────────────
|
|
1285
1354
|
|
|
1286
1355
|
const CHANNEL_DEFS = [
|
|
@@ -1675,60 +1744,66 @@ async function handleModels() {
|
|
|
1675
1744
|
{
|
|
1676
1745
|
name: "OpenAI", prefix: "openai", envKey: "OPENAI_API_KEY",
|
|
1677
1746
|
models: [
|
|
1678
|
-
// GPT-5
|
|
1679
|
-
{ id: "gpt-5.
|
|
1680
|
-
{ id: "gpt-5.
|
|
1681
|
-
|
|
1682
|
-
{ id: "gpt-5.
|
|
1683
|
-
{ id: "gpt-5.
|
|
1684
|
-
|
|
1685
|
-
{ id: "gpt-5",
|
|
1686
|
-
{ id: "gpt-5
|
|
1687
|
-
{ id: "gpt-5-
|
|
1747
|
+
// GPT-5.4
|
|
1748
|
+
{ id: "gpt-5.4", desc: "GPT-5.4 flagship", price: "$2.50/$15", isNew: true },
|
|
1749
|
+
{ id: "gpt-5.4-pro", desc: "GPT-5.4 Pro — highest capability", price: "$30/$180", isNew: true },
|
|
1750
|
+
// GPT-5.2
|
|
1751
|
+
{ id: "gpt-5.2", desc: "GPT-5.2 flagship (Dec 2025)", price: "$1.75/$14", isNew: true },
|
|
1752
|
+
{ id: "gpt-5.2-pro", desc: "GPT-5.2 Pro — extended reasoning", price: "$21/$168", isNew: true },
|
|
1753
|
+
// GPT-5.1 / 5
|
|
1754
|
+
{ id: "gpt-5.1", desc: "GPT-5.1 (Nov 2025)", price: "$1.25/$10", isNew: true },
|
|
1755
|
+
{ id: "gpt-5", desc: "GPT-5 flagship (Aug 2025)", price: "$1.25/$10" },
|
|
1756
|
+
{ id: "gpt-5-pro", desc: "GPT-5 Pro — most powerful", price: "$15/$120" },
|
|
1757
|
+
{ id: "gpt-5-mini", desc: "GPT-5 Mini — fast & cheap", price: "$0.25/$2" },
|
|
1758
|
+
{ id: "gpt-5-nano", desc: "GPT-5 Nano — cheapest GPT-5", price: "$0.05/$0.40" },
|
|
1759
|
+
// Codex
|
|
1760
|
+
{ id: "gpt-5.3-codex", desc: "Latest coding model (2025)", price: "$1.75/$14", isNew: true },
|
|
1761
|
+
{ id: "gpt-5.1-codex", desc: "GPT-5.1 Codex — coding", price: "$1.25/$10", isNew: true },
|
|
1762
|
+
{ id: "gpt-5-codex", desc: "GPT-5 Codex — coding", price: "$1.25/$10" },
|
|
1688
1763
|
// o-series reasoning
|
|
1689
|
-
{ id: "o3-pro", desc: "Best reasoning — most thorough" },
|
|
1690
|
-
{ id: "o3
|
|
1691
|
-
{ id: "o4-mini
|
|
1692
|
-
{ id: "
|
|
1693
|
-
{ id: "
|
|
1694
|
-
{ id: "
|
|
1695
|
-
{ id: "o1", desc: "o1 reasoning model" },
|
|
1696
|
-
{ id: "o3-mini", desc: "Lightweight reasoning" },
|
|
1764
|
+
{ id: "o3-pro", desc: "Best reasoning — most thorough", price: "$20/$80" },
|
|
1765
|
+
{ id: "o3", desc: "Advanced reasoning (Apr 2025)", price: "$2/$8" },
|
|
1766
|
+
{ id: "o4-mini", desc: "Fast reasoning (Apr 2025)", price: "$1.10/$4.40" },
|
|
1767
|
+
{ id: "o1-pro", desc: "o1 Pro — powerful reasoning", price: "$150/$600" },
|
|
1768
|
+
{ id: "o1", desc: "o1 reasoning model", price: "$15/$60" },
|
|
1769
|
+
{ id: "o3-mini", desc: "Lightweight reasoning", price: "$1.10/$4.40" },
|
|
1697
1770
|
// GPT-4.1 (1M context)
|
|
1698
|
-
{ id: "gpt-4.1", desc: "1M context, best instruction following" },
|
|
1699
|
-
{ id: "gpt-4.1-mini", desc: "1M context, fast & affordable (default)" },
|
|
1700
|
-
{ id: "gpt-4.1-nano", desc: "1M context, fastest & cheapest" },
|
|
1771
|
+
{ id: "gpt-4.1", desc: "1M context, best instruction following", price: "$2/$8" },
|
|
1772
|
+
{ id: "gpt-4.1-mini", desc: "1M context, fast & affordable (default)", price: "$0.40/$1.60" },
|
|
1773
|
+
{ id: "gpt-4.1-nano", desc: "1M context, fastest & cheapest", price: "$0.10/$0.40" },
|
|
1701
1774
|
// GPT-4o & specialized
|
|
1702
|
-
{ id: "gpt-4o", desc: "Vision + text (128K ctx)" },
|
|
1703
|
-
{ id: "gpt-4o-mini", desc: "GPT-4o Mini (128K ctx)" },
|
|
1704
|
-
{ id: "computer-use-preview", desc: "Computer use / GUI automation" },
|
|
1705
|
-
{ id: "gpt-4o-search-preview", desc: "Built-in live web search" },
|
|
1706
|
-
{ id: "gpt-image-1", desc: "Image generation (native API)" },
|
|
1775
|
+
{ id: "gpt-4o", desc: "Vision + text (128K ctx)", price: "$2.50/$10" },
|
|
1776
|
+
{ id: "gpt-4o-mini", desc: "GPT-4o Mini (128K ctx)", price: "$0.15/$0.60" },
|
|
1777
|
+
{ id: "computer-use-preview", desc: "Computer use / GUI automation", price: "$3/$12" },
|
|
1707
1778
|
],
|
|
1708
1779
|
},
|
|
1709
1780
|
{
|
|
1710
1781
|
name: "Anthropic", prefix: "anthropic", envKey: "ANTHROPIC_API_KEY",
|
|
1711
1782
|
models: [
|
|
1712
|
-
{ id: "claude-opus-4-6", desc: "Most intelligent — complex reasoning
|
|
1713
|
-
{ id: "claude-
|
|
1714
|
-
{ id: "claude-
|
|
1715
|
-
{ id: "claude-opus-4
|
|
1716
|
-
{ id: "claude-sonnet-4-
|
|
1717
|
-
{ id: "claude-
|
|
1718
|
-
{ id: "claude-
|
|
1719
|
-
{ id: "claude-
|
|
1783
|
+
{ id: "claude-opus-4-6", desc: "Most intelligent — complex reasoning", price: "$5/$25", isNew: true },
|
|
1784
|
+
{ id: "claude-opus-4-5", desc: "Opus 4.5 — complex multi-step tasks", price: "$5/$25", isNew: true },
|
|
1785
|
+
{ id: "claude-opus-4-1", desc: "Opus 4.1 — long-duration complex tasks", price: "$15/$75" },
|
|
1786
|
+
{ id: "claude-opus-4", desc: "Opus 4 — extended thinking", price: "$15/$75" },
|
|
1787
|
+
{ id: "claude-sonnet-4-6", desc: "Best speed/intelligence — coding & agents", price: "$3/$15", isNew: true },
|
|
1788
|
+
{ id: "claude-sonnet-4-5", desc: "Sonnet 4.5 — coding & agentic tasks", price: "$3/$15" },
|
|
1789
|
+
{ id: "claude-sonnet-4", desc: "Sonnet 4 — balanced performance", price: "$3/$15" },
|
|
1790
|
+
{ id: "claude-haiku-4-5", desc: "Fastest — high-volume, cost-sensitive", price: "$1/$5" },
|
|
1791
|
+
{ id: "claude-haiku-3-5", desc: "3.5 Haiku — fast previous gen", price: "$0.80/$4" },
|
|
1792
|
+
{ id: "claude-haiku-3", desc: "Haiku 3 — cheapest Claude", price: "$0.25/$1.25" },
|
|
1720
1793
|
],
|
|
1721
1794
|
},
|
|
1722
1795
|
{
|
|
1723
1796
|
name: "Google", prefix: "google", envKey: "GOOGLE_AI_API_KEY",
|
|
1724
1797
|
models: [
|
|
1725
|
-
{ id: "gemini-3.1-pro-preview",
|
|
1726
|
-
{ id: "gemini-3.1-flash-lite-preview",
|
|
1727
|
-
{ id: "gemini-
|
|
1728
|
-
{ id: "gemini-
|
|
1729
|
-
{ id: "gemini-2.5-
|
|
1730
|
-
{ id: "gemini-
|
|
1731
|
-
{ id: "gemini-2.
|
|
1798
|
+
{ id: "gemini-3.1-pro-preview", desc: "Latest — complex tasks, reasoning", price: "$2/$12", isNew: true },
|
|
1799
|
+
{ id: "gemini-3.1-flash-lite-preview", desc: "Latest — cost-efficient & fast", price: "$0.25/$1.50", isNew: true },
|
|
1800
|
+
{ id: "gemini-3-pro-preview", desc: "Gemini 3 Pro — advanced reasoning", price: "$2/$12", isNew: true },
|
|
1801
|
+
{ id: "gemini-3-flash-preview", desc: "Gemini 3 Flash — fast & cheap", price: "$0.50/$3", isNew: true },
|
|
1802
|
+
{ id: "gemini-2.5-pro", desc: "GA — complex reasoning & coding (1M)", price: "$1.25/$10" },
|
|
1803
|
+
{ id: "gemini-2.5-flash", desc: "Fast & cost-effective for high-volume", price: "$0.30/$2.50" },
|
|
1804
|
+
{ id: "gemini-2.5-flash-lite", desc: "Speed-optimised for high-throughput", price: "$0.10/$0.40" },
|
|
1805
|
+
{ id: "gemini-2.0-flash", desc: "Previous gen flash", price: "$0.15/$0.60" },
|
|
1806
|
+
{ id: "gemini-2.0-flash-lite", desc: "Cheapest Gemini", price: "$0.075/$0.30" },
|
|
1732
1807
|
],
|
|
1733
1808
|
},
|
|
1734
1809
|
{
|
|
@@ -1758,14 +1833,14 @@ async function handleModels() {
|
|
|
1758
1833
|
{
|
|
1759
1834
|
name: "Ollama (local)", prefix: "ollama", configured: true,
|
|
1760
1835
|
models: [
|
|
1761
|
-
{ id: "llama4-maverick", desc: "Llama 4 Maverick — 17B MoE, 1M ctx, multimodal", isNew: true },
|
|
1762
|
-
{ id: "llama4-scout", desc: "Llama 4 Scout — 17B MoE, 10M ctx", isNew: true },
|
|
1763
|
-
{ id: "llama3.3", desc: "Llama 3.3 70B — best open model (Dec 2024)" },
|
|
1764
|
-
{ id: "qwen2.5", desc: "Qwen 2.5 72B — strong coder" },
|
|
1765
|
-
{ id: "deepseek-r1", desc: "DeepSeek-R1 local — reasoning" },
|
|
1766
|
-
{ id: "mistral", desc: "Mistral 7B — fast small model" },
|
|
1767
|
-
{ id: "phi4", desc: "Phi-4 14B — Microsoft small model" },
|
|
1768
|
-
{ id: "codellama", desc: "CodeLlama — code specialised" },
|
|
1836
|
+
{ id: "llama4-maverick", desc: "Llama 4 Maverick — 17B MoE, 1M ctx, multimodal", price: "free", isNew: true },
|
|
1837
|
+
{ id: "llama4-scout", desc: "Llama 4 Scout — 17B MoE, 10M ctx", price: "free", isNew: true },
|
|
1838
|
+
{ id: "llama3.3", desc: "Llama 3.3 70B — best open model (Dec 2024)", price: "free" },
|
|
1839
|
+
{ id: "qwen2.5", desc: "Qwen 2.5 72B — strong coder", price: "free" },
|
|
1840
|
+
{ id: "deepseek-r1", desc: "DeepSeek-R1 local — reasoning", price: "free" },
|
|
1841
|
+
{ id: "mistral", desc: "Mistral 7B — fast small model", price: "free" },
|
|
1842
|
+
{ id: "phi4", desc: "Phi-4 14B — Microsoft small model", price: "free" },
|
|
1843
|
+
{ id: "codellama", desc: "CodeLlama — code specialised", price: "free" },
|
|
1769
1844
|
],
|
|
1770
1845
|
},
|
|
1771
1846
|
];
|
|
@@ -1792,7 +1867,8 @@ async function handleModels() {
|
|
|
1792
1867
|
for (const m of prov.models) {
|
|
1793
1868
|
const fullId = `${prov.prefix}:${m.id}`;
|
|
1794
1869
|
const newBadge = m.isNew ? chalk.hex(P.amber)(" [NEW]") : "";
|
|
1795
|
-
|
|
1870
|
+
const priceTag = m.price ? chalk.hex(P.muted)(` ${m.price} /MTok`) : "";
|
|
1871
|
+
console.log(` ${S.dot} ${chalk.hex(P.teal)(fullId.padEnd(44))}${priceTag}${newBadge}`);
|
|
1796
1872
|
console.log(` ${chalk.hex(P.dim)(m.desc)}`);
|
|
1797
1873
|
}
|
|
1798
1874
|
}
|
|
@@ -2036,6 +2112,9 @@ ${line}
|
|
|
2036
2112
|
${t.cmd("tools")} ${t.dim("[filter]")} List all 50 built-in tools (filter by name/category)
|
|
2037
2113
|
|
|
2038
2114
|
${t.cmd("doctor")} Security audit - check for misconfigurations
|
|
2115
|
+
${t.cmd("cleanup")} Delete old tasks, logs, and sessions
|
|
2116
|
+
${t.cmd("cleanup set")} ${t.dim("<days>")} Set auto-cleanup retention (0 = never)
|
|
2117
|
+
${t.cmd("cleanup stats")} Show storage usage per directory
|
|
2039
2118
|
|
|
2040
2119
|
${t.cmd("help")} Show this help
|
|
2041
2120
|
|
package/src/config/default.js
CHANGED
|
@@ -34,6 +34,13 @@ export const config = {
|
|
|
34
34
|
maxLoops: 40,
|
|
35
35
|
maxSubAgentDepth: 3,
|
|
36
36
|
|
|
37
|
+
// Thinking level: "auto" | "off" | "minimal" | "low" | "medium" | "high" | "xhigh"
|
|
38
|
+
thinkingLevel: process.env.THINKING_LEVEL || "auto",
|
|
39
|
+
|
|
40
|
+
// Message queue mode: "steer" (inject into live loop) | "collect" (batch into follow-up) | "followup" (queue as separate)
|
|
41
|
+
queueMode: process.env.QUEUE_MODE || "steer",
|
|
42
|
+
debounceMs: parseInt(process.env.DEBOUNCE_MS || "1500", 10),
|
|
43
|
+
|
|
37
44
|
// Safety
|
|
38
45
|
permissionTier: process.env.PERMISSION_TIER || "standard",
|
|
39
46
|
|
|
@@ -41,6 +48,9 @@ export const config = {
|
|
|
41
48
|
maxCostPerTask: parseFloat(process.env.MAX_COST_PER_TASK || "0.50"),
|
|
42
49
|
maxDailyCost: parseFloat(process.env.MAX_DAILY_COST || "10.00"),
|
|
43
50
|
|
|
51
|
+
// Cleanup
|
|
52
|
+
cleanupAfterDays: parseInt(process.env.CLEANUP_AFTER_DAYS || "30", 10), // 0 = never
|
|
53
|
+
|
|
44
54
|
// Daemon
|
|
45
55
|
daemonMode: process.env.DAEMON_MODE === "true",
|
|
46
56
|
heartbeatIntervalMinutes: parseInt(process.env.HEARTBEAT_INTERVAL_MINUTES || "30", 10),
|