titan-agent 6.4.3 → 6.5.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/dist/agent/agent.js +61 -46
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/agentLessons.js.map +1 -1
- package/dist/agent/agentLoop.js +5 -1
- package/dist/agent/agentLoop.js.map +1 -1
- package/dist/agent/orchestrator.js +5 -14
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/pipeline.js +11 -6
- package/dist/agent/pipeline.js.map +1 -1
- package/dist/agent/somaInitiative.js.map +1 -1
- package/dist/agent/toolRunner.js +35 -0
- package/dist/agent/toolRunner.js.map +1 -1
- package/dist/channels/discord.js +10 -6
- package/dist/channels/discord.js.map +1 -1
- package/dist/channels/slack.js +7 -2
- package/dist/channels/slack.js.map +1 -1
- package/dist/channels/telegram.js +1 -1
- package/dist/channels/telegram.js.map +1 -1
- package/dist/config/schema.js +6 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/gateway/openai-compat.js +69 -10
- package/dist/gateway/openai-compat.js.map +1 -1
- package/dist/gateway/server.js +79 -0
- package/dist/gateway/server.js.map +1 -1
- package/dist/migrations/runner.js.map +1 -1
- package/dist/migrations/safeRun.js.map +1 -1
- package/dist/providers/anthropic.js +7 -4
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.js +8 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/google.js +7 -4
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/ollama.js +8 -7
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.js +7 -4
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openai_compat.js +7 -4
- package/dist/providers/openai_compat.js.map +1 -1
- package/dist/providers/router.js +7 -3
- package/dist/providers/router.js.map +1 -1
- package/dist/skills/builtin/backup.js.map +1 -1
- package/dist/skills/builtin/browser.js +11 -21
- package/dist/skills/builtin/browser.js.map +1 -1
- package/dist/skills/builtin/calendar.js +6 -2
- package/dist/skills/builtin/calendar.js.map +1 -1
- package/dist/skills/builtin/canvas_spaces.js.map +1 -1
- package/dist/skills/builtin/cron.js +7 -6
- package/dist/skills/builtin/cron.js.map +1 -1
- package/dist/skills/builtin/data_analysis.js +1 -1
- package/dist/skills/builtin/data_analysis.js.map +1 -1
- package/dist/skills/builtin/jira_linear.js +6 -4
- package/dist/skills/builtin/jira_linear.js.map +1 -1
- package/dist/skills/builtin/web_browser.js +6 -0
- package/dist/skills/builtin/web_browser.js.map +1 -1
- package/dist/skills/builtin/web_fetch.js +1 -0
- package/dist/skills/builtin/web_fetch.js.map +1 -1
- package/dist/storage/starterSpaces.js.map +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/package.json +1 -1
- package/ui/dist/sw.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/storage/starterSpaces.ts"],"sourcesContent":["/**\n * TITAN — Starter Space presets (v6.0 step 9)\n *\n * Why this exists\n * ---------------\n * \"Spaces are infinite\" is the v6.0 thesis but new users still need to LAND\n * somewhere with a useful posture. Each preset gives the agent a starting\n * `agentInstructions` that primes its behaviour for the named domain.\n *\n * The presets are intentionally archetypal — they're starting points for the\n * user to evolve, not finished products. The agent should propose them when\n * a user describes a domain of work that matches one (e.g. \"I'm a developer\"\n * → suggest the Coder preset; \"I make music\" → suggest the DJ preset).\n *\n * The 5 presets:\n * - default — Generic home canvas (also seeded by migration 002)\n * - coder — Software development, files/logs/agents\n * - dj — Music production / DJing\n * - founder — Business operator (costs, agents, telemetry)\n * - homelab — Infrastructure operator (vram, fleet, monitoring)\n *\n * Reference:\n * - ~/.claude/projects/-Users-
|
|
1
|
+
{"version":3,"sources":["../../src/storage/starterSpaces.ts"],"sourcesContent":["/**\n * TITAN — Starter Space presets (v6.0 step 9)\n *\n * Why this exists\n * ---------------\n * \"Spaces are infinite\" is the v6.0 thesis but new users still need to LAND\n * somewhere with a useful posture. Each preset gives the agent a starting\n * `agentInstructions` that primes its behaviour for the named domain.\n *\n * The presets are intentionally archetypal — they're starting points for the\n * user to evolve, not finished products. The agent should propose them when\n * a user describes a domain of work that matches one (e.g. \"I'm a developer\"\n * → suggest the Coder preset; \"I make music\" → suggest the DJ preset).\n *\n * The 5 presets:\n * - default — Generic home canvas (also seeded by migration 002)\n * - coder — Software development, files/logs/agents\n * - dj — Music production / DJing\n * - founder — Business operator (costs, agents, telemetry)\n * - homelab — Infrastructure operator (vram, fleet, monitoring)\n *\n * Reference:\n * - ~/.claude/projects/-Users-localuser/memory/titan-v6-living-canvas.md\n * (v6.0 step 9 — Starter Space seeds)\n */\n\nexport interface StarterSpacePreset {\n /** Stable id used by the agent + UI. */\n id: 'default' | 'coder' | 'dj' | 'founder' | 'homelab';\n /** Display name. */\n name: string;\n /** Emoji shown in the sidebar. */\n icon: string;\n /** Accent color (hex) for the sidebar. */\n color: string;\n /** Tagline shown when offering this preset to the user. */\n tagline: string;\n /** `agentInstructions` injected into the system prompt when active. */\n agentInstructions: string;\n}\n\nexport const STARTER_PRESETS: ReadonlyArray<StarterSpacePreset> = Object.freeze([\n {\n id: 'default',\n name: 'Default',\n icon: '🏠',\n color: '#3b82f6',\n tagline: 'Your home canvas. A clean Space TITAN can shape with you.',\n agentInstructions: [\n `You are TITAN. The user is in their Default Space — their home canvas.`,\n ``,\n `When they ask for a tool, widget, dashboard, or visual surface, build it`,\n `on the spot via \\`create_widget\\`. When they describe a new domain of`,\n `work, propose creating a dedicated Space for it via \\`create_space\\`.`,\n ].join('\\n'),\n },\n {\n id: 'coder',\n name: 'Coder',\n icon: '⌨️',\n color: '#10b981',\n tagline: 'Files, logs, agents, cron. Everything a developer needs in one canvas.',\n agentInstructions: [\n `You are TITAN. The user is in their Coder Space — focused on software`,\n `development.`,\n ``,\n `Default posture:`,\n `- Treat the user as an engineer. Skip explanations they don't need.`,\n `- When they ask about code, prefer concrete diffs + file paths over prose.`,\n `- When they ask \"where is X\", use \\`gallery_search\\` then \\`gitnexus_query\\``,\n ` if available, before grepping.`,\n `- When they're debugging, surface \\`logs\\`, \\`files\\`, \\`agents\\` widgets`,\n ` via \\`create_widget\\` proactively.`,\n ``,\n `Tools to reach for first: shell, read_file, edit_file, web_search, agent_delegate`,\n `with role=coder for focused sub-tasks.`,\n ].join('\\n'),\n },\n {\n id: 'dj',\n name: 'DJ / Music',\n icon: '🎧',\n color: '#a855f7',\n tagline: 'BPM, key detection, sample library, set planning. Built for producers.',\n agentInstructions: [\n `You are TITAN. The user is in their DJ / Music Space — focused on music`,\n `production, DJing, and audio work.`,\n ``,\n `Default posture:`,\n `- Treat the user as a working musician (Tony is a DJ + producer).`,\n `- When asked for tools, prefer widgets from the music category of the`,\n ` gallery: BPM analyzer, key detector, sample library indexer, Beatport`,\n ` browser, DJ set planner, music theory helper.`,\n `- When the user mentions a song / artist / set, suggest building a widget`,\n ` rather than just answering in text.`,\n `- Be casual + creative; this is the user's creative space.`,\n ].join('\\n'),\n },\n {\n id: 'founder',\n name: 'Founder',\n icon: '🚀',\n color: '#f59e0b',\n tagline: 'Costs, agents, telemetry, growth. The operator\\'s cockpit.',\n agentInstructions: [\n `You are TITAN. The user is in their Founder Space — focused on running`,\n `their business: costs, growth, team coordination, strategy.`,\n ``,\n `Default posture:`,\n `- Treat the user as a builder + operator. Bias to action over analysis.`,\n `- When asked about state of the business, surface the right widget:`,\n ` costs, telemetry, agents, weekly report.`,\n `- When delegating, prefer \\`agent_team\\` for multi-domain compare`,\n ` (e.g., \"research these 3 options\"), \\`agent_chain\\` for sequential`,\n ` work (e.g., \"research → draft → review\").`,\n `- Track follow-ups proactively. If the user describes something they`,\n ` need to remember, offer to add it to memory.`,\n ].join('\\n'),\n },\n {\n id: 'homelab',\n name: 'Homelab Operator',\n icon: '🛠️',\n color: '#ef4444',\n tagline: 'VRAM, fleet, mesh, NVIDIA. The infrastructure cockpit.',\n agentInstructions: [\n `You are TITAN. The user is in their Homelab Space — focused on running`,\n `their infrastructure: GPU servers, mesh, models, hardware.`,\n ``,\n `Default posture:`,\n `- Treat the user as a senior operator. Use technical terms freely.`,\n `- When asked about system state, surface the right widget: vram, fleet,`,\n ` organism, nvidia, mesh, telemetry.`,\n `- For diagnostic asks, reach for shell + read_file + logs first;`,\n ` prefer concrete commands over guidance.`,\n `- When something looks broken, propose a fix THEN ask if you should`,\n ` apply it (don't run destructive shell commands silently).`,\n ].join('\\n'),\n },\n]);\n\nexport function getStarterPreset(id: StarterSpacePreset['id']): StarterSpacePreset | undefined {\n return STARTER_PRESETS.find(p => p.id === id);\n}\n\nexport function listStarterPresets(): ReadonlyArray<StarterSpacePreset> {\n return STARTER_PRESETS;\n}\n"],"mappings":";AAyCO,MAAM,kBAAqD,OAAO,OAAO;AAAA,EAC5E;AAAA,IACI,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,mBAAmB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,EAAE,KAAK,IAAI;AAAA,EACf;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,mBAAmB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,EAAE,KAAK,IAAI;AAAA,EACf;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,mBAAmB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,EAAE,KAAK,IAAI;AAAA,EACf;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,mBAAmB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,EAAE,KAAK,IAAI;AAAA,EACf;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,mBAAmB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,EAAE,KAAK,IAAI;AAAA,EACf;AACJ,CAAC;AAEM,SAAS,iBAAiB,IAA8D;AAC3F,SAAO,gBAAgB,KAAK,OAAK,EAAE,OAAO,EAAE;AAChD;AAEO,SAAS,qBAAwD;AACpE,SAAO;AACX;","names":[]}
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { homedir } from "os";
|
|
3
3
|
import { join } from "path";
|
|
4
|
-
const TITAN_VERSION = "6.
|
|
4
|
+
const TITAN_VERSION = "6.5.0";
|
|
5
5
|
const TITAN_CODENAME = "Living Canvas";
|
|
6
6
|
const TITAN_NAME = "TITAN";
|
|
7
7
|
const TITAN_FULL_NAME = "The Intelligent Task Automation Network";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/constants.ts"],"sourcesContent":["/**\n * TITAN Constants\n */\nimport { homedir } from 'os';\nimport { join } from 'path';\n\nexport const TITAN_VERSION = '6.
|
|
1
|
+
{"version":3,"sources":["../../src/utils/constants.ts"],"sourcesContent":["/**\n * TITAN Constants\n */\nimport { homedir } from 'os';\nimport { join } from 'path';\n\nexport const TITAN_VERSION = '6.5.0';\nexport const TITAN_CODENAME = 'Living Canvas';\nexport const TITAN_NAME = 'TITAN';\nexport const TITAN_FULL_NAME = 'The Intelligent Task Automation Network';\nexport const TITAN_ASCII_LOGO = `\n╔══════════════════════════════════════════════════════╗\n║ ║\n║ ████████╗██╗████████╗ █████╗ ███╗ ██╗ ║\n║ ██║ ██║ ██║ ██╔══██╗████╗ ██║ ║\n║ ██║ ██║ ██║ ███████║██╔██╗ ██║ ║\n║ ██║ ██║ ██║ ██╔══██║██║╚██╗██║ ║\n║ ██║ ██║ ██║ ██║ ██║██║ ╚████║ ║\n║ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ║\n║ ║\n║ The Intelligent Task Automation Network ║\n║ v${TITAN_VERSION} • by Tony Elliott ║\n╚══════════════════════════════════════════════════════╝`;\n\n// Paths\n// Hunt Finding #03 (2026-04-14): honor TITAN_HOME env var if set.\n// Previously this was hardcoded to `~/.titan`, which meant:\n// - Docker containers couldn't override the config path\n// - Shared machines couldn't isolate per-user state\n// - Test fixtures couldn't run against an isolated home\n// - The systemd unit's `Environment=TITAN_HOME=...` was silently ignored\n// The env var is read once at module load (constants are resolved at import time).\n// If TITAN_HOME starts with `~/`, expand it to the user's home dir.\nfunction resolveTitanHome(): string {\n const envHome = process.env.TITAN_HOME;\n if (envHome && envHome.trim().length > 0) {\n const trimmed = envHome.trim();\n if (trimmed.startsWith('~/')) {\n return join(homedir(), trimmed.slice(2));\n }\n if (trimmed === '~') {\n return homedir();\n }\n return trimmed;\n }\n return join(homedir(), '.titan');\n}\nexport const TITAN_HOME = resolveTitanHome();\nexport const TITAN_CONFIG_PATH = join(TITAN_HOME, 'titan.json');\nexport const TITAN_DB_PATH = join(TITAN_HOME, 'titan.db');\nexport const TITAN_WORKSPACE = join(TITAN_HOME, 'workspace');\nexport const TITAN_SKILLS_DIR = join(TITAN_WORKSPACE, 'skills');\nexport const TITAN_LOGS_DIR = join(TITAN_HOME, 'logs');\nexport const TITAN_MEMORY_DIR = join(TITAN_HOME, 'memory');\n\n// Workspace prompt files (injected into agent context)\nexport const AGENTS_MD = join(TITAN_WORKSPACE, 'AGENTS.md');\nexport const SOUL_MD = join(TITAN_WORKSPACE, 'SOUL.md');\nexport const TOOLS_MD = join(TITAN_WORKSPACE, 'TOOLS.md');\nexport const TITAN_MD_FILENAME = 'TITAN.md';\nexport const AUTOPILOT_MD = join(TITAN_HOME, 'AUTOPILOT.md');\nexport const AUTOPILOT_RUNS_PATH = join(TITAN_HOME, 'autopilot-runs.jsonl');\nexport const TITAN_CREDENTIALS_DIR = join(TITAN_HOME, 'credentials');\n\n// Income & lead tracking\nexport const INCOME_LEDGER_PATH = join(TITAN_HOME, 'income-ledger.jsonl');\nexport const FREELANCE_LEADS_PATH = join(TITAN_HOME, 'freelance-leads.jsonl');\nexport const FREELANCE_PROFILE_PATH = join(TITAN_HOME, 'freelance-profile.json');\nexport const LEADS_PATH = join(TITAN_HOME, 'leads.jsonl');\nexport const TELEMETRY_EVENTS_PATH = join(TITAN_HOME, 'telemetry-events.jsonl');\nexport const SOMADRIVE_STATE_PATH = join(TITAN_HOME, 'soma-drive-state.json');\nexport const ACTIVITY_LOG_PATH = join(TITAN_HOME, 'activity-log.jsonl');\n\n// v6.1.0 — Mission Chat\nexport const MISSIONS_DIR = join(TITAN_HOME, 'missions');\nexport const PLAYS_DIR = join(TITAN_HOME, 'plays');\n\n// Gateway defaults\nexport const DEFAULT_GATEWAY_HOST = '0.0.0.0';\nexport const DEFAULT_GATEWAY_PORT = 48420;\nexport const DEFAULT_WEB_PORT = 48421;\n\n// Agent defaults\n// v6.0.1 — Hardcoded floor only. The actual default at runtime is picked\n// by `getDefaultModelId()` in `src/providers/defaultModel.ts`, which\n// detects the user's available API keys (Anthropic / OpenAI / Google /\n// OpenRouter) and selects accordingly. Falls back to local Ollama when\n// no cloud keys are set. This constant is the last-resort fallback for\n// callsites that don't go through the schema thunk.\nexport const DEFAULT_MODEL = 'anthropic/claude-sonnet-4-20250514';\n/** v5.4.1: User-preference ceiling. Providers clamp per-model via\n * clampMaxTokens() so this can be high without causing 400s on\n * capped endpoints (e.g. Claude Sonnet 4 8K, Cohere 4K). */\nexport const DEFAULT_MAX_TOKENS = 200000;\nexport const DEFAULT_TEMPERATURE = 0.7;\nexport const MAX_CONTEXT_MESSAGES = 50;\nexport const SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes\n\n// Security\nexport const DEFAULT_SANDBOX_MODE = 'host';\n/** Default allowed tools. Empty = allow ALL registered tools.\n * Use security.deniedTools to block specific tools instead. */\nexport const ALLOWED_TOOLS_DEFAULT: string[] = [];\nexport const DENIED_TOOLS_DEFAULT: string[] = [];\n"],"mappings":";AAGA,SAAS,eAAe;AACxB,SAAS,YAAY;AAEd,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,aAAa;AACnB,MAAM,kBAAkB;AACxB,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAW1B,aAAa;AAAA;AAYnB,SAAS,mBAA2B;AAChC,QAAM,UAAU,QAAQ,IAAI;AAC5B,MAAI,WAAW,QAAQ,KAAK,EAAE,SAAS,GAAG;AACtC,UAAM,UAAU,QAAQ,KAAK;AAC7B,QAAI,QAAQ,WAAW,IAAI,GAAG;AAC1B,aAAO,KAAK,QAAQ,GAAG,QAAQ,MAAM,CAAC,CAAC;AAAA,IAC3C;AACA,QAAI,YAAY,KAAK;AACjB,aAAO,QAAQ;AAAA,IACnB;AACA,WAAO;AAAA,EACX;AACA,SAAO,KAAK,QAAQ,GAAG,QAAQ;AACnC;AACO,MAAM,aAAa,iBAAiB;AACpC,MAAM,oBAAoB,KAAK,YAAY,YAAY;AACvD,MAAM,gBAAgB,KAAK,YAAY,UAAU;AACjD,MAAM,kBAAkB,KAAK,YAAY,WAAW;AACpD,MAAM,mBAAmB,KAAK,iBAAiB,QAAQ;AACvD,MAAM,iBAAiB,KAAK,YAAY,MAAM;AAC9C,MAAM,mBAAmB,KAAK,YAAY,QAAQ;AAGlD,MAAM,YAAY,KAAK,iBAAiB,WAAW;AACnD,MAAM,UAAU,KAAK,iBAAiB,SAAS;AAC/C,MAAM,WAAW,KAAK,iBAAiB,UAAU;AACjD,MAAM,oBAAoB;AAC1B,MAAM,eAAe,KAAK,YAAY,cAAc;AACpD,MAAM,sBAAsB,KAAK,YAAY,sBAAsB;AACnE,MAAM,wBAAwB,KAAK,YAAY,aAAa;AAG5D,MAAM,qBAAqB,KAAK,YAAY,qBAAqB;AACjE,MAAM,uBAAuB,KAAK,YAAY,uBAAuB;AACrE,MAAM,yBAAyB,KAAK,YAAY,wBAAwB;AACxE,MAAM,aAAa,KAAK,YAAY,aAAa;AACjD,MAAM,wBAAwB,KAAK,YAAY,wBAAwB;AACvE,MAAM,uBAAuB,KAAK,YAAY,uBAAuB;AACrE,MAAM,oBAAoB,KAAK,YAAY,oBAAoB;AAG/D,MAAM,eAAe,KAAK,YAAY,UAAU;AAChD,MAAM,YAAY,KAAK,YAAY,OAAO;AAG1C,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B,MAAM,mBAAmB;AASzB,MAAM,gBAAgB;AAItB,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAC7B,MAAM,qBAAqB,KAAK,KAAK;AAGrC,MAAM,uBAAuB;AAG7B,MAAM,wBAAkC,CAAC;AACzC,MAAM,uBAAiC,CAAC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "titan-agent",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.5.0",
|
|
4
4
|
"description": "TITAN — TypeScript AI agent framework with multi-agent orchestration, provider routing, approval gates, receipts, evals, gateway APIs, and a React Mission Control dashboard. Open-source, MIT licensed.",
|
|
5
5
|
"author": "Tony Elliott (https://github.com/Djtony707)",
|
|
6
6
|
"repository": {
|
package/ui/dist/sw.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* but a default falls back to the source-controlled value here.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
const CACHE_NAME = 'titan-' + ('
|
|
23
|
+
const CACHE_NAME = 'titan-' + ('1780947064421');
|
|
24
24
|
const ASSETS_PREFIX = '/assets/';
|
|
25
25
|
|
|
26
26
|
self.addEventListener('install', (event) => {
|