@robbiesrobotics/alice-agents 1.5.10 β 1.5.13
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 +15 -24
- package/bin/alice-install.mjs +5 -22
- package/lib/agent-registry.mjs +50 -9
- package/lib/alice-runtime-adapter.mjs +50 -0
- package/lib/doctor.mjs +1 -32
- package/lib/hermes-installer.mjs +33 -51
- package/lib/installer.mjs +171 -249
- package/lib/manifest.mjs +14 -9
- package/lib/prompter.mjs +2 -34
- package/lib/runtime-installer.mjs +314 -0
- package/lib/workspace-scaffolder.mjs +193 -17
- package/package.json +14 -9
- package/templates/agents-pro.json +147 -36
- package/templates/agents-starter.json +207 -7
- package/templates/workspaces/_shared/AGENTS-orchestrator.md +19 -9
- package/templates/workspaces/_shared/AGENTS.md +9 -0
- package/templates/workspaces/_shared/HEARTBEAT.md +18 -0
- package/templates/workspaces/_shared/PLAYBOOK.md +6 -6
- package/templates/workspaces/_shared/SOUL-coding.md +20 -0
- package/templates/workspaces/_shared/SOUL-hermes.md +20 -0
- package/templates/workspaces/_shared/SOUL-orchestrator.md +20 -0
- package/templates/workspaces/_shared/SOUL.md +20 -0
- package/templates/workspaces/athena/AGENTS.md +172 -0
- package/templates/workspaces/athena/SOUL.md +59 -0
- package/templates/workspaces/athena/TOOLS.md +63 -0
- package/templates/workspaces/devon/AGENTS.md +50 -34
- package/templates/workspaces/devon/TOOLS.md +20 -37
- package/templates/workspaces/dylan/AGENTS.md +44 -34
- package/templates/workspaces/dylan/TOOLS.md +11 -35
- package/templates/workspaces/felix/AGENTS.md +50 -34
- package/templates/workspaces/felix/TOOLS.md +20 -45
- package/templates/workspaces/morgan/AGENTS.md +48 -39
- package/templates/workspaces/morgan/TOOLS.md +26 -9
- package/templates/workspaces/priya/AGENTS.md +68 -0
- package/templates/workspaces/priya/TOOLS.md +32 -0
- package/templates/workspaces/quinn/AGENTS.md +50 -34
- package/templates/workspaces/quinn/TOOLS.md +30 -48
- package/templates/workspaces/sasha/AGENTS.md +68 -0
- package/templates/workspaces/sasha/TOOLS.md +32 -0
- package/bin/alice-cloud.cjs +0 -385
- package/lib/mission-control.mjs +0 -242
- package/snapshots/.gitkeep +0 -0
- package/templates/mission-control-bridge/index.ts +0 -695
- package/templates/mission-control-bridge/openclaw.plugin.json +0 -8
- package/templates/mission-control-bridge/package.json +0 -11
- package/templates/skills/.gitkeep +0 -0
- package/templates/skills/acculynx/SKILL.md +0 -183
- package/templates/skills/acculynx/references/analysis_template.py +0 -116
- package/templates/skills/acculynx/references/dashboard_page.tsx +0 -641
- package/templates/skills/claude-code/.gitkeep +0 -0
- package/templates/skills/claude-code/SKILL.md +0 -111
- package/templates/skills/coding-agent/SKILL.md +0 -68
- package/templates/skills/crawl4ai/SKILL.md +0 -119
- package/templates/skills/crawl4ai/scripts/crwl +0 -3
- package/templates/workspaces/.gitkeep +0 -0
- package/templates/workspaces/_shared/.gitkeep +0 -0
- package/templates/workspaces/accuscope/AGENTS.md +0 -38
- package/templates/workspaces/accuscope/FEEDBACK.md +0 -27
- package/templates/workspaces/accuscope/HEARTBEAT.md +0 -26
- package/templates/workspaces/accuscope/IDENTITY.md +0 -48
- package/templates/workspaces/accuscope/LEARNINGS.md +0 -46
- package/templates/workspaces/accuscope/MEMORY.md +0 -47
- package/templates/workspaces/accuscope/PLAYBOOK.md +0 -65
- package/templates/workspaces/accuscope/SOUL.md +0 -40
- package/templates/workspaces/accuscope/TOOLS.md +0 -63
- package/templates/workspaces/accuscope/USER.md +0 -39
- package/templates/workspaces/aiden/AGENTS.md +0 -52
- package/templates/workspaces/aiden/FEEDBACK.md +0 -12
- package/templates/workspaces/aiden/HEARTBEAT.md +0 -9
- package/templates/workspaces/aiden/IDENTITY.md +0 -6
- package/templates/workspaces/aiden/LEARNINGS.md +0 -6
- package/templates/workspaces/aiden/MEMORY.md +0 -22
- package/templates/workspaces/aiden/PLAYBOOK.md +0 -16
- package/templates/workspaces/aiden/SOUL.md +0 -39
- package/templates/workspaces/aiden/TOOLS.md +0 -57
- package/templates/workspaces/aiden/USER.md +0 -17
- package/templates/workspaces/alex/AGENTS.md +0 -52
- package/templates/workspaces/alex/FEEDBACK.md +0 -11
- package/templates/workspaces/alex/HEARTBEAT.md +0 -9
- package/templates/workspaces/alex/IDENTITY.md +0 -6
- package/templates/workspaces/alex/LEARNINGS.md +0 -5
- package/templates/workspaces/alex/MEMORY.md +0 -22
- package/templates/workspaces/alex/PLAYBOOK.md +0 -16
- package/templates/workspaces/alex/SOUL.md +0 -40
- package/templates/workspaces/alex/TOOLS.md +0 -56
- package/templates/workspaces/alex/USER.md +0 -13
- package/templates/workspaces/aria/AGENTS.md +0 -18
- package/templates/workspaces/aria/FEEDBACK.md +0 -12
- package/templates/workspaces/aria/HEARTBEAT.md +0 -32
- package/templates/workspaces/aria/IDENTITY.md +0 -12
- package/templates/workspaces/aria/LEARNINGS.md +0 -31
- package/templates/workspaces/aria/MEMORY.md +0 -29
- package/templates/workspaces/aria/PLAYBOOK.md +0 -71
- package/templates/workspaces/aria/SOUL.md +0 -57
- package/templates/workspaces/aria/TOOLS.md +0 -47
- package/templates/workspaces/aria/USER.md +0 -18
- package/templates/workspaces/audrey/AGENTS.md +0 -59
- package/templates/workspaces/audrey/FEEDBACK.md +0 -11
- package/templates/workspaces/audrey/HEARTBEAT.md +0 -9
- package/templates/workspaces/audrey/IDENTITY.md +0 -6
- package/templates/workspaces/audrey/LEARNINGS.md +0 -5
- package/templates/workspaces/audrey/MEMORY.md +0 -22
- package/templates/workspaces/audrey/PLAYBOOK.md +0 -16
- package/templates/workspaces/audrey/SOUL.md +0 -39
- package/templates/workspaces/audrey/TOOLS.md +0 -15
- package/templates/workspaces/audrey/USER.md +0 -13
- package/templates/workspaces/avery/AGENTS.md +0 -52
- package/templates/workspaces/avery/FEEDBACK.md +0 -12
- package/templates/workspaces/avery/HEARTBEAT.md +0 -5
- package/templates/workspaces/avery/IDENTITY.md +0 -6
- package/templates/workspaces/avery/LEARNINGS.md +0 -6
- package/templates/workspaces/avery/MEMORY.md +0 -22
- package/templates/workspaces/avery/PLAYBOOK.md +0 -16
- package/templates/workspaces/avery/SOUL.md +0 -40
- package/templates/workspaces/avery/TOOLS.md +0 -47
- package/templates/workspaces/avery/USER.md +0 -17
- package/templates/workspaces/avery/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/avery/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/caleb/AGENTS.md +0 -52
- package/templates/workspaces/caleb/FEEDBACK.md +0 -11
- package/templates/workspaces/caleb/HEARTBEAT.md +0 -9
- package/templates/workspaces/caleb/IDENTITY.md +0 -6
- package/templates/workspaces/caleb/LEARNINGS.md +0 -5
- package/templates/workspaces/caleb/MEMORY.md +0 -22
- package/templates/workspaces/caleb/PLAYBOOK.md +0 -16
- package/templates/workspaces/caleb/SOUL.md +0 -39
- package/templates/workspaces/caleb/TOOLS.md +0 -30
- package/templates/workspaces/caleb/USER.md +0 -13
- package/templates/workspaces/clara/AGENTS.md +0 -59
- package/templates/workspaces/clara/FEEDBACK.md +0 -12
- package/templates/workspaces/clara/HEARTBEAT.md +0 -5
- package/templates/workspaces/clara/IDENTITY.md +0 -6
- package/templates/workspaces/clara/LEARNINGS.md +0 -6
- package/templates/workspaces/clara/MEMORY.md +0 -22
- package/templates/workspaces/clara/PLAYBOOK.md +0 -16
- package/templates/workspaces/clara/SOUL.md +0 -39
- package/templates/workspaces/clara/TOOLS.md +0 -15
- package/templates/workspaces/clara/USER.md +0 -17
- package/templates/workspaces/daphne/AGENTS.md +0 -59
- package/templates/workspaces/daphne/FEEDBACK.md +0 -18
- package/templates/workspaces/daphne/HEARTBEAT.md +0 -5
- package/templates/workspaces/daphne/IDENTITY.md +0 -6
- package/templates/workspaces/daphne/LEARNINGS.md +0 -6
- package/templates/workspaces/daphne/MEMORY.md +0 -22
- package/templates/workspaces/daphne/PLAYBOOK.md +0 -48
- package/templates/workspaces/daphne/SOUL.md +0 -39
- package/templates/workspaces/daphne/TOOLS.md +0 -15
- package/templates/workspaces/daphne/USER.md +0 -17
- package/templates/workspaces/darius/AGENTS.md +0 -52
- package/templates/workspaces/darius/FEEDBACK.md +0 -12
- package/templates/workspaces/darius/HEARTBEAT.md +0 -5
- package/templates/workspaces/darius/IDENTITY.md +0 -6
- package/templates/workspaces/darius/LEARNINGS.md +0 -6
- package/templates/workspaces/darius/MEMORY.md +0 -22
- package/templates/workspaces/darius/PLAYBOOK.md +0 -16
- package/templates/workspaces/darius/SOUL.md +0 -40
- package/templates/workspaces/darius/TOOLS.md +0 -57
- package/templates/workspaces/darius/USER.md +0 -17
- package/templates/workspaces/darius/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/darius/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/devon/FEEDBACK.md +0 -11
- package/templates/workspaces/devon/HEARTBEAT.md +0 -5
- package/templates/workspaces/devon/IDENTITY.md +0 -6
- package/templates/workspaces/devon/LEARNINGS.md +0 -11
- package/templates/workspaces/devon/MEMORY.md +0 -22
- package/templates/workspaces/devon/PLAYBOOK.md +0 -16
- package/templates/workspaces/devon/SOUL.md +0 -40
- package/templates/workspaces/devon/USER.md +0 -13
- package/templates/workspaces/devon/check_github.py +0 -12
- package/templates/workspaces/devon/check_mc_env.py +0 -30
- package/templates/workspaces/devon/check_sb.py +0 -34
- package/templates/workspaces/devon/check_vercel.py +0 -12
- package/templates/workspaces/devon/get_mc_files.py +0 -17
- package/templates/workspaces/devon/write_heartbeat.py +0 -67
- package/templates/workspaces/dylan/.env.example +0 -33
- package/templates/workspaces/dylan/00007_verify_licenses_table.sql +0 -100
- package/templates/workspaces/dylan/FEEDBACK.md +0 -28
- package/templates/workspaces/dylan/HEARTBEAT.md +0 -5
- package/templates/workspaces/dylan/IDENTITY.md +0 -6
- package/templates/workspaces/dylan/LEARNINGS.md +0 -70
- package/templates/workspaces/dylan/MEMORY.md +0 -22
- package/templates/workspaces/dylan/PLAYBOOK.md +0 -16
- package/templates/workspaces/dylan/SOUL.md +0 -42
- package/templates/workspaces/dylan/STRIPE_PIPELINE.md +0 -185
- package/templates/workspaces/dylan/USER.md +0 -17
- package/templates/workspaces/dylan/n8n-stripe-welcome-workflow.json +0 -123
- package/templates/workspaces/dylan/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/dylan/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/dylan/stripe-webhook-handler.py +0 -433
- package/templates/workspaces/dylan/test_mock_webhook.py +0 -103
- package/templates/workspaces/elena/AGENTS.md +0 -59
- package/templates/workspaces/elena/FEEDBACK.md +0 -11
- package/templates/workspaces/elena/HEARTBEAT.md +0 -9
- package/templates/workspaces/elena/IDENTITY.md +0 -6
- package/templates/workspaces/elena/LEARNINGS.md +0 -5
- package/templates/workspaces/elena/MEMORY.md +0 -22
- package/templates/workspaces/elena/PLAYBOOK.md +0 -16
- package/templates/workspaces/elena/SOUL.md +0 -39
- package/templates/workspaces/elena/TOOLS.md +0 -15
- package/templates/workspaces/elena/USER.md +0 -13
- package/templates/workspaces/eva/AGENTS.md +0 -59
- package/templates/workspaces/eva/FEEDBACK.md +0 -11
- package/templates/workspaces/eva/HEARTBEAT.md +0 -9
- package/templates/workspaces/eva/IDENTITY.md +0 -6
- package/templates/workspaces/eva/LEARNINGS.md +0 -5
- package/templates/workspaces/eva/MEMORY.md +0 -22
- package/templates/workspaces/eva/PLAYBOOK.md +0 -16
- package/templates/workspaces/eva/SOUL.md +0 -39
- package/templates/workspaces/eva/TOOLS.md +0 -15
- package/templates/workspaces/eva/USER.md +0 -13
- package/templates/workspaces/felix/FEEDBACK.md +0 -11
- package/templates/workspaces/felix/HEARTBEAT.md +0 -5
- package/templates/workspaces/felix/IDENTITY.md +0 -6
- package/templates/workspaces/felix/LEARNINGS.md +0 -17
- package/templates/workspaces/felix/MEMORY.md +0 -22
- package/templates/workspaces/felix/PLAYBOOK.md +0 -16
- package/templates/workspaces/felix/SOUL.md +0 -40
- package/templates/workspaces/felix/USER.md +0 -13
- package/templates/workspaces/felix/fidelia-psychology.html +0 -1594
- package/templates/workspaces/felix/task.txt +0 -164
- package/templates/workspaces/hannah/AGENTS.md +0 -59
- package/templates/workspaces/hannah/FEEDBACK.md +0 -12
- package/templates/workspaces/hannah/HEARTBEAT.md +0 -5
- package/templates/workspaces/hannah/IDENTITY.md +0 -6
- package/templates/workspaces/hannah/LEARNINGS.md +0 -6
- package/templates/workspaces/hannah/MEMORY.md +0 -22
- package/templates/workspaces/hannah/PLAYBOOK.md +0 -16
- package/templates/workspaces/hannah/SOUL.md +0 -39
- package/templates/workspaces/hannah/TOOLS.md +0 -15
- package/templates/workspaces/hannah/USER.md +0 -17
- package/templates/workspaces/isaac/AGENTS.md +0 -52
- package/templates/workspaces/isaac/FEEDBACK.md +0 -12
- package/templates/workspaces/isaac/HEARTBEAT.md +0 -9
- package/templates/workspaces/isaac/IDENTITY.md +0 -6
- package/templates/workspaces/isaac/LEARNINGS.md +0 -6
- package/templates/workspaces/isaac/MEMORY.md +0 -22
- package/templates/workspaces/isaac/PLAYBOOK.md +0 -16
- package/templates/workspaces/isaac/SOUL.md +0 -40
- package/templates/workspaces/isaac/TOOLS.md +0 -52
- package/templates/workspaces/isaac/USER.md +0 -17
- package/templates/workspaces/isaac/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/isaac/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/logan/AGENTS.md +0 -59
- package/templates/workspaces/logan/FEEDBACK.md +0 -11
- package/templates/workspaces/logan/HEARTBEAT.md +0 -9
- package/templates/workspaces/logan/IDENTITY.md +0 -6
- package/templates/workspaces/logan/LEARNINGS.md +0 -5
- package/templates/workspaces/logan/MEMORY.md +0 -22
- package/templates/workspaces/logan/PLAYBOOK.md +0 -16
- package/templates/workspaces/logan/SOUL.md +0 -39
- package/templates/workspaces/logan/TOOLS.md +0 -15
- package/templates/workspaces/logan/USER.md +0 -13
- package/templates/workspaces/maxxipro/AGENTS.md +0 -29
- package/templates/workspaces/maxxipro/FEEDBACK.md +0 -19
- package/templates/workspaces/maxxipro/HEARTBEAT.md +0 -22
- package/templates/workspaces/maxxipro/IDENTITY.md +0 -35
- package/templates/workspaces/maxxipro/KNOWLEDGE.md +0 -335
- package/templates/workspaces/maxxipro/LEARNINGS.md +0 -47
- package/templates/workspaces/maxxipro/MEMORY.md +0 -60
- package/templates/workspaces/maxxipro/OUTREACH_TEMPLATES.md +0 -143
- package/templates/workspaces/maxxipro/PLAYBOOK.md +0 -81
- package/templates/workspaces/maxxipro/SOUL.md +0 -146
- package/templates/workspaces/maxxipro/TOOLS.md +0 -81
- package/templates/workspaces/maxxipro/USER.md +0 -40
- package/templates/workspaces/morgan/FEEDBACK.md +0 -19
- package/templates/workspaces/morgan/HEARTBEAT.md +0 -5
- package/templates/workspaces/morgan/IDENTITY.md +0 -6
- package/templates/workspaces/morgan/LEARNINGS.md +0 -18
- package/templates/workspaces/morgan/MEMORY.md +0 -22
- package/templates/workspaces/morgan/PLAYBOOK.md +0 -16
- package/templates/workspaces/morgan/SOUL.md +0 -39
- package/templates/workspaces/morgan/USER.md +0 -13
- package/templates/workspaces/nadia/AGENTS.md +0 -59
- package/templates/workspaces/nadia/FEEDBACK.md +0 -12
- package/templates/workspaces/nadia/HEARTBEAT.md +0 -5
- package/templates/workspaces/nadia/IDENTITY.md +0 -6
- package/templates/workspaces/nadia/LEARNINGS.md +0 -6
- package/templates/workspaces/nadia/MEMORY.md +0 -22
- package/templates/workspaces/nadia/PLAYBOOK.md +0 -16
- package/templates/workspaces/nadia/SOUL.md +0 -39
- package/templates/workspaces/nadia/TOOLS.md +0 -15
- package/templates/workspaces/nadia/USER.md +0 -13
- package/templates/workspaces/nate/AGENTS.md +0 -24
- package/templates/workspaces/nate/FEEDBACK.md +0 -12
- package/templates/workspaces/nate/HEARTBEAT.md +0 -33
- package/templates/workspaces/nate/IDENTITY.md +0 -15
- package/templates/workspaces/nate/LEARNINGS.md +0 -33
- package/templates/workspaces/nate/MEMORY.md +0 -39
- package/templates/workspaces/nate/PLAYBOOK.md +0 -160
- package/templates/workspaces/nate/SOUL.md +0 -50
- package/templates/workspaces/nate/TOOLS.md +0 -111
- package/templates/workspaces/nate/USER.md +0 -32
- package/templates/workspaces/olivia/.last-openclaw-version +0 -1
- package/templates/workspaces/olivia/.npmrc.tmp +0 -0
- package/templates/workspaces/olivia/AGENTS.md +0 -77
- package/templates/workspaces/olivia/ALPHA_CODING_BENCHMARK.txt +0 -148
- package/templates/workspaces/olivia/ALPHA_MODEL_GUIDE.md +0 -393
- package/templates/workspaces/olivia/FEEDBACK.md +0 -13
- package/templates/workspaces/olivia/HEADTOHEAD_BENCHMARK.txt +0 -1289
- package/templates/workspaces/olivia/HEARTBEAT.md +0 -267
- package/templates/workspaces/olivia/IDENTITY.md +0 -6
- package/templates/workspaces/olivia/LEARNINGS.md +0 -708
- package/templates/workspaces/olivia/MEMORY.md +0 -202
- package/templates/workspaces/olivia/MISSION_CONTROL_DESIGN_SPEC_v1.md +0 -1143
- package/templates/workspaces/olivia/MVP-COMPLETION-SUMMARY.md +0 -175
- package/templates/workspaces/olivia/NETWORK_IMPLEMENTATION_PLAN.md +0 -1556
- package/templates/workspaces/olivia/NEW_NODES_BENCHMARK.txt +0 -947
- package/templates/workspaces/olivia/PLAYBOOK.md +0 -42
- package/templates/workspaces/olivia/SELF-HEALING-COMPLETE.md +0 -150
- package/templates/workspaces/olivia/SOUL.md +0 -42
- package/templates/workspaces/olivia/TOOLS.md +0 -15
- package/templates/workspaces/olivia/USER.md +0 -17
- package/templates/workspaces/olivia/alicefleet-supabase-credentials.md +0 -50
- package/templates/workspaces/olivia/dzombo-copy-rewrite.md +0 -115
- package/templates/workspaces/olivia/dzombo-implementation-plan.md +0 -1248
- package/templates/workspaces/olivia/fidelia-psychology.html +0 -1594
- package/templates/workspaces/olivia/lead_debug.png +0 -0
- package/templates/workspaces/olivia/minimatch-10.2.4.tgz +0 -0
- package/templates/workspaces/olivia/operation-bllm-research.md +0 -157
- package/templates/workspaces/olivia/qa-audit-mission-control-v2.md +0 -538
- package/templates/workspaces/olivia/roofmaxx_logo.svg +0 -1
- package/templates/workspaces/olivia/roofmaxx_social.jpg +0 -0
- package/templates/workspaces/olivia/skills/1password/SKILL.md +0 -53
- package/templates/workspaces/olivia/skills/1password/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/README.md +0 -57
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/SKILL.md +0 -534
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/agent-security/SKILL.md +0 -69
- package/templates/workspaces/olivia/skills/agent-security/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/agentic-security-audit/SKILL.md +0 -855
- package/templates/workspaces/olivia/skills/agentic-security-audit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-automation-consulting/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/ai-automation-consulting/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-automation-consulting/skill.json +0 -12
- package/templates/workspaces/olivia/skills/ai-presentation-maker/SKILL.md +0 -1104
- package/templates/workspaces/olivia/skills/ai-presentation-maker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-productivity-audit/SKILL.md +0 -181
- package/templates/workspaces/olivia/skills/ai-productivity-audit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-researcher/README.md +0 -31
- package/templates/workspaces/olivia/skills/ai-researcher/SKILL.md +0 -59
- package/templates/workspaces/olivia/skills/ai-researcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-seo-writer/README.md +0 -19
- package/templates/workspaces/olivia/skills/ai-seo-writer/SKILL.md +0 -100
- package/templates/workspaces/olivia/skills/ai-seo-writer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/analytics-tracking-2/SKILL.md +0 -309
- package/templates/workspaces/olivia/skills/analytics-tracking-2/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-doc-writer/SKILL.md +0 -232
- package/templates/workspaces/olivia/skills/api-doc-writer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-generator/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/api-generator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-generator/tips.md +0 -10
- package/templates/workspaces/olivia/skills/apple-notes/SKILL.md +0 -50
- package/templates/workspaces/olivia/skills/apple-notes/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/apple-reminders/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/apple-reminders/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/automation-workflows/SKILL.md +0 -267
- package/templates/workspaces/olivia/skills/automation-workflows/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/autoresearch/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/autoresearch/aria_write.py +0 -148
- package/templates/workspaces/olivia/skills/autoresearch/autoresearch.py +0 -75
- package/templates/workspaces/olivia/skills/azure-devops/SKILL.md +0 -115
- package/templates/workspaces/olivia/skills/azure-devops/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/blogwatcher/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/blogwatcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/blucli/SKILL.md +0 -27
- package/templates/workspaces/olivia/skills/blucli/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/check-analytics/SKILL.md +0 -92
- package/templates/workspaces/olivia/skills/check-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-architect/SKILL.md +0 -89
- package/templates/workspaces/olivia/skills/cloud-architect/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-infra-automation/SKILL.md +0 -50
- package/templates/workspaces/olivia/skills/cloud-infra-automation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-storage/SKILL.md +0 -61
- package/templates/workspaces/olivia/skills/cloud-storage/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-storage/auth.md +0 -97
- package/templates/workspaces/olivia/skills/cloud-storage/costs.md +0 -88
- package/templates/workspaces/olivia/skills/cloud-storage/providers.md +0 -55
- package/templates/workspaces/olivia/skills/copywriting-pro/SKILL.md +0 -107
- package/templates/workspaces/olivia/skills/copywriting-pro/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/data-analyst-pro/SKILL.md +0 -21
- package/templates/workspaces/olivia/skills/data-analyst-pro/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/database-designer/README.md +0 -388
- package/templates/workspaces/olivia/skills/database-designer/SKILL.md +0 -66
- package/templates/workspaces/olivia/skills/database-designer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/database-designer/index_optimizer.py +0 -926
- package/templates/workspaces/olivia/skills/database-designer/migration_generator.py +0 -1199
- package/templates/workspaces/olivia/skills/database-designer/schema_analyzer.py +0 -982
- package/templates/workspaces/olivia/skills/deploy-agent/SKILL.md +0 -255
- package/templates/workspaces/olivia/skills/deploy-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/devops-automation-pack/SKILL.md +0 -72
- package/templates/workspaces/olivia/skills/devops-automation-pack/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/devops-automation-pack/deploy.sh +0 -0
- package/templates/workspaces/olivia/skills/financial-analysis-agent/SKILL.md +0 -489
- package/templates/workspaces/olivia/skills/financial-analysis-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/README.md +0 -72
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/SKILL.md +0 -226
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gifgrep/SKILL.md +0 -47
- package/templates/workspaces/olivia/skills/gifgrep/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/github/SKILL.md +0 -47
- package/templates/workspaces/olivia/skills/github/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gog/SKILL.md +0 -36
- package/templates/workspaces/olivia/skills/gog/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/growth-strategy-hub/SKILL.md +0 -135
- package/templates/workspaces/olivia/skills/growth-strategy-hub/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/growth-strategy-hub/metadata.json +0 -4
- package/templates/workspaces/olivia/skills/hetzner-cloud/SKILL.md +0 -130
- package/templates/workspaces/olivia/skills/hetzner-cloud/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/himalaya/SKILL.md +0 -217
- package/templates/workspaces/olivia/skills/himalaya/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/hotel-recommendation/SKILL.md +0 -117
- package/templates/workspaces/olivia/skills/hotel-recommendation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/hr-policy-generator/SKILL.md +0 -54
- package/templates/workspaces/olivia/skills/hr-policy-generator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/human-writing/SKILL.md +0 -41
- package/templates/workspaces/olivia/skills/human-writing/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/imsg/SKILL.md +0 -25
- package/templates/workspaces/olivia/skills/imsg/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/in-depth-research/SKILL.md +0 -124
- package/templates/workspaces/olivia/skills/in-depth-research/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/in-depth-research/methodology.md +0 -75
- package/templates/workspaces/olivia/skills/in-depth-research/output-formats.md +0 -168
- package/templates/workspaces/olivia/skills/in-depth-research/sources.md +0 -80
- package/templates/workspaces/olivia/skills/javascript-skills/README.md +0 -71
- package/templates/workspaces/olivia/skills/javascript-skills/SKILL.md +0 -746
- package/templates/workspaces/olivia/skills/javascript-skills/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/SKILL.md +0 -147
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/market-research-agent/README.md +0 -29
- package/templates/workspaces/olivia/skills/market-research-agent/SKILL.md +0 -52
- package/templates/workspaces/olivia/skills/market-research-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-analytics/SKILL.md +0 -74
- package/templates/workspaces/olivia/skills/marketing-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-master-io/SKILL.md +0 -125
- package/templates/workspaces/olivia/skills/marketing-master-io/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/SKILL.md +0 -398
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/meta-ads-analytics/SKILL.md +0 -53
- package/templates/workspaces/olivia/skills/meta-ads-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/obsidian/SKILL.md +0 -55
- package/templates/workspaces/olivia/skills/obsidian/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-accounting/SKILL.md +0 -125
- package/templates/workspaces/olivia/skills/openclaw-accounting/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANGELOG.md +0 -35
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANNELLOG.md +0 -73
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/README.md +0 -161
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/SKILL.md +0 -130
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/config.json +0 -36
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/metadata.json +0 -19
- package/templates/workspaces/olivia/skills/openhue/SKILL.md +0 -30
- package/templates/workspaces/olivia/skills/openhue/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/orgx-operations-agent/SKILL.md +0 -41
- package/templates/workspaces/olivia/skills/orgx-operations-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/outreach/SKILL.md +0 -84
- package/templates/workspaces/olivia/skills/outreach/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/outreach/by-type.md +0 -166
- package/templates/workspaces/olivia/skills/outreach/templates.md +0 -154
- package/templates/workspaces/olivia/skills/outreach/tracking.md +0 -145
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/SKILL.md +0 -38
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/personal-productivity/SKILL.md +0 -161
- package/templates/workspaces/olivia/skills/personal-productivity/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/personal-productivity/index.js +0 -363
- package/templates/workspaces/olivia/skills/personal-productivity/package.json +0 -15
- package/templates/workspaces/olivia/skills/personal-travel/README.md +0 -34
- package/templates/workspaces/olivia/skills/personal-travel/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/personal-travel/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/SKILL.md +0 -185
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/product-manager/SKILL.md +0 -77
- package/templates/workspaces/olivia/skills/product-manager/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/quant-strategy/SKILL.md +0 -28
- package/templates/workspaces/olivia/skills/quant-strategy/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/README.md +0 -29
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/SKILL.md +0 -45
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-auditor/SKILL.md +0 -399
- package/templates/workspaces/olivia/skills/security-auditor/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-hardening/SKILL.md +0 -296
- package/templates/workspaces/olivia/skills/security-hardening/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-scanner/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/security-scanner/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/seo-optimization/SKILL.md +0 -31
- package/templates/workspaces/olivia/skills/seo-optimization/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/service-booking/SKILL.md +0 -193
- package/templates/workspaces/olivia/skills/service-booking/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sme-hr-automation/SKILL.md +0 -131
- package/templates/workspaces/olivia/skills/sme-hr-automation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/social-media-scheduler/README.md +0 -29
- package/templates/workspaces/olivia/skills/social-media-scheduler/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/social-media-scheduler/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sonoscli/SKILL.md +0 -26
- package/templates/workspaces/olivia/skills/sonoscli/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/strategy-advisor/SKILL.md +0 -33
- package/templates/workspaces/olivia/skills/strategy-advisor/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/summarize/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/summarize/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/things-mac/SKILL.md +0 -61
- package/templates/workspaces/olivia/skills/things-mac/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/SKILL.md +0 -121
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-manager/SKILL.md +0 -36
- package/templates/workspaces/olivia/skills/travel-manager/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-planning/SKILL.md +0 -238
- package/templates/workspaces/olivia/skills/travel-planning/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-planning/booking-guide.md +0 -91
- package/templates/workspaces/olivia/skills/travel-planning/memory-template.md +0 -111
- package/templates/workspaces/olivia/skills/travel-planning/multi-city.md +0 -131
- package/templates/workspaces/olivia/skills/travel-planning/packing-templates.md +0 -155
- package/templates/workspaces/olivia/skills/travel-planning/setup.md +0 -66
- package/templates/workspaces/olivia/skills/update-it-all/SKILL.md +0 -143
- package/templates/workspaces/olivia/skills/update-it-all/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/voice/SKILL.md +0 -62
- package/templates/workspaces/olivia/skills/weather/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/weather/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/web-researcher/SKILL.md +0 -21
- package/templates/workspaces/olivia/skills/web-researcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/website-seo/SKILL.md +0 -284
- package/templates/workspaces/olivia/skills/website-seo/_meta.json +0 -6
- package/templates/workspaces/olivia/stripe-welcome-n8n.json +0 -103
- package/templates/workspaces/olivia/test2.wav.wav +0 -0
- package/templates/workspaces/olivia/test_speech.json +0 -1
- package/templates/workspaces/olivia/test_speech.srt +0 -0
- package/templates/workspaces/olivia/test_speech.tsv +0 -1
- package/templates/workspaces/olivia/test_speech.txt +0 -0
- package/templates/workspaces/olivia/test_speech.vtt +0 -2
- package/templates/workspaces/owen/AGENTS.md +0 -59
- package/templates/workspaces/owen/FEEDBACK.md +0 -12
- package/templates/workspaces/owen/HEARTBEAT.md +0 -5
- package/templates/workspaces/owen/IDENTITY.md +0 -6
- package/templates/workspaces/owen/LEARNINGS.md +0 -46
- package/templates/workspaces/owen/MEMORY.md +0 -22
- package/templates/workspaces/owen/PLAYBOOK.md +0 -16
- package/templates/workspaces/owen/SOUL.md +0 -39
- package/templates/workspaces/owen/TOOLS.md +0 -15
- package/templates/workspaces/owen/USER.md +0 -17
- package/templates/workspaces/parker/AGENTS.md +0 -59
- package/templates/workspaces/parker/FEEDBACK.md +0 -11
- package/templates/workspaces/parker/HEARTBEAT.md +0 -5
- package/templates/workspaces/parker/IDENTITY.md +0 -6
- package/templates/workspaces/parker/LEARNINGS.md +0 -17
- package/templates/workspaces/parker/MEMORY.md +0 -22
- package/templates/workspaces/parker/PLAYBOOK.md +0 -16
- package/templates/workspaces/parker/SOUL.md +0 -39
- package/templates/workspaces/parker/TOOLS.md +0 -15
- package/templates/workspaces/parker/USER.md +0 -13
- package/templates/workspaces/quinn/FEEDBACK.md +0 -11
- package/templates/workspaces/quinn/HEARTBEAT.md +0 -5
- package/templates/workspaces/quinn/IDENTITY.md +0 -6
- package/templates/workspaces/quinn/LEARNINGS.md +0 -35
- package/templates/workspaces/quinn/MEMORY.md +0 -22
- package/templates/workspaces/quinn/PLAYBOOK.md +0 -16
- package/templates/workspaces/quinn/SOUL.md +0 -40
- package/templates/workspaces/quinn/USER.md +0 -17
- package/templates/workspaces/quinn/alice-login-page.png +0 -0
- package/templates/workspaces/rowan/AGENTS.md +0 -59
- package/templates/workspaces/rowan/FEEDBACK.md +0 -12
- package/templates/workspaces/rowan/HEARTBEAT.md +0 -5
- package/templates/workspaces/rowan/IDENTITY.md +0 -6
- package/templates/workspaces/rowan/LEARNINGS.md +0 -12
- package/templates/workspaces/rowan/MEMORY.md +0 -22
- package/templates/workspaces/rowan/PLAYBOOK.md +0 -16
- package/templates/workspaces/rowan/SOUL.md +0 -40
- package/templates/workspaces/rowan/TOOLS.md +0 -59
- package/templates/workspaces/rowan/USER.md +0 -17
- package/templates/workspaces/selena/AGENTS.md +0 -59
- package/templates/workspaces/selena/FEEDBACK.md +0 -12
- package/templates/workspaces/selena/HEARTBEAT.md +0 -5
- package/templates/workspaces/selena/IDENTITY.md +0 -6
- package/templates/workspaces/selena/LEARNINGS.md +0 -24
- package/templates/workspaces/selena/MEMORY.md +0 -22
- package/templates/workspaces/selena/PLAYBOOK.md +0 -16
- package/templates/workspaces/selena/SOUL.md +0 -40
- package/templates/workspaces/selena/TOOLS.md +0 -47
- package/templates/workspaces/selena/USER.md +0 -17
- package/templates/workspaces/selena/kids-ai-security-compliance-plan.md +0 -791
- package/templates/workspaces/selena/kidspark-coppa-compliance-audit.md +0 -866
- package/templates/workspaces/sloane/AGENTS.md +0 -59
- package/templates/workspaces/sloane/FEEDBACK.md +0 -12
- package/templates/workspaces/sloane/HEARTBEAT.md +0 -9
- package/templates/workspaces/sloane/IDENTITY.md +0 -6
- package/templates/workspaces/sloane/LEARNINGS.md +0 -6
- package/templates/workspaces/sloane/MEMORY.md +0 -22
- package/templates/workspaces/sloane/PLAYBOOK.md +0 -16
- package/templates/workspaces/sloane/SOUL.md +0 -39
- package/templates/workspaces/sloane/TOOLS.md +0 -15
- package/templates/workspaces/sloane/USER.md +0 -13
- package/templates/workspaces/smoketestagent/AGENTS.md +0 -52
- package/templates/workspaces/smoketestagent/FEEDBACK.md +0 -3
- package/templates/workspaces/smoketestagent/HEARTBEAT.md +0 -14
- package/templates/workspaces/smoketestagent/IDENTITY.md +0 -6
- package/templates/workspaces/smoketestagent/LEARNINGS.md +0 -3
- package/templates/workspaces/smoketestagent/MEMORY.md +0 -24
- package/templates/workspaces/smoketestagent/PLAYBOOK.md +0 -7
- package/templates/workspaces/smoketestagent/SOUL.md +0 -32
- package/templates/workspaces/smoketestagent/TOOLS.md +0 -13
- package/templates/workspaces/smoketestagent/USER.md +0 -5
- package/templates/workspaces/sophie/AGENTS.md +0 -59
- package/templates/workspaces/sophie/FEEDBACK.md +0 -12
- package/templates/workspaces/sophie/HEARTBEAT.md +0 -9
- package/templates/workspaces/sophie/IDENTITY.md +0 -6
- package/templates/workspaces/sophie/LEARNINGS.md +0 -6
- package/templates/workspaces/sophie/MEMORY.md +0 -22
- package/templates/workspaces/sophie/PLAYBOOK.md +0 -16
- package/templates/workspaces/sophie/SOUL.md +0 -39
- package/templates/workspaces/sophie/TOOLS.md +0 -15
- package/templates/workspaces/sophie/USER.md +0 -17
- package/templates/workspaces/tommy/AGENTS.md +0 -59
- package/templates/workspaces/tommy/FEEDBACK.md +0 -12
- package/templates/workspaces/tommy/HEARTBEAT.md +0 -9
- package/templates/workspaces/tommy/IDENTITY.md +0 -6
- package/templates/workspaces/tommy/LEARNINGS.md +0 -6
- package/templates/workspaces/tommy/MEMORY.md +0 -22
- package/templates/workspaces/tommy/PLAYBOOK.md +0 -16
- package/templates/workspaces/tommy/SOUL.md +0 -39
- package/templates/workspaces/tommy/TOOLS.md +0 -15
- package/templates/workspaces/tommy/USER.md +0 -17
- package/templates/workspaces/uma/AGENTS.md +0 -59
- package/templates/workspaces/uma/FEEDBACK.md +0 -11
- package/templates/workspaces/uma/HEARTBEAT.md +0 -5
- package/templates/workspaces/uma/IDENTITY.md +0 -6
- package/templates/workspaces/uma/LEARNINGS.md +0 -11
- package/templates/workspaces/uma/MEMORY.md +0 -22
- package/templates/workspaces/uma/PLAYBOOK.md +0 -16
- package/templates/workspaces/uma/SOUL.md +0 -39
- package/templates/workspaces/uma/TOOLS.md +0 -15
- package/templates/workspaces/uma/USER.md +0 -13
- package/tools/.gitkeep +0 -0
|
@@ -1,50 +1,32 @@
|
|
|
1
1
|
# TOOLS.md - Quinn's Local Notes
|
|
2
2
|
|
|
3
|
-
## Domain: QA
|
|
4
|
-
|
|
5
|
-
## Primary
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Find skipped / pending tests (hidden tech debt):**
|
|
36
|
-
```bash
|
|
37
|
-
grep -r "\.skip\|xit\|xdescribe\|@pytest.mark.skip\|t.Skip" --include="*.{js,ts,py,go}"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Quality Gate Checklist
|
|
41
|
-
|
|
42
|
-
Before signing off on a fix:
|
|
43
|
-
- [ ] Does a test exist that would have caught this bug?
|
|
44
|
-
- [ ] Does the regression test cover the edge case, not just the happy path?
|
|
45
|
-
- [ ] Does CI pass with the new test included?
|
|
46
|
-
- [ ] Are there any skipped tests that should be unskipped?
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
Add environment-specific notes here as you learn them.
|
|
3
|
+
## Domain: QA, Testing, and Review
|
|
4
|
+
|
|
5
|
+
## Primary A.L.I.C.E. | Code Tools
|
|
6
|
+
|
|
7
|
+
- `claw.test` - test execution, regression coverage, and QA verification.
|
|
8
|
+
- `claw.review` - structured review passes and release confidence checks.
|
|
9
|
+
- `claw.inspect` - failure triage and coverage-gap investigation.
|
|
10
|
+
- `claw.fix` - small QA-owned harness or test-data fixes only.
|
|
11
|
+
- `claw.session.create` / `claw.session.resume` - longer bounded QA sessions.
|
|
12
|
+
|
|
13
|
+
## A.L.I.C.E. | Computer
|
|
14
|
+
|
|
15
|
+
Use Computer for browser QA evidence:
|
|
16
|
+
|
|
17
|
+
- `agent-browser open <url>` - open the preview, deployed page, or repro URL.
|
|
18
|
+
- `agent-browser snapshot` - capture an accessibility tree with refs.
|
|
19
|
+
- `agent-browser screenshot [path]` - capture visual evidence.
|
|
20
|
+
- `agent-browser console` / `agent-browser errors` - gather browser failure signals.
|
|
21
|
+
- `agent-browser batch ...` - run reproducible multi-step checks.
|
|
22
|
+
- `agent-browser stream status` - verify live inspection support when available.
|
|
23
|
+
|
|
24
|
+
Use Playwright as the fallback for repeatable E2E assertions, viewport matrices, or when agent-browser is unavailable.
|
|
25
|
+
|
|
26
|
+
## Fallback
|
|
27
|
+
|
|
28
|
+
If A.L.I.C.E. | Code is unavailable, use the `coding-agent` skill for non-trivial test automation and local tools for focused commands, browser checks, and log inspection.
|
|
29
|
+
|
|
30
|
+
## Reporting Expectations
|
|
31
|
+
|
|
32
|
+
Return the exact checks run, whether each passed, failed, or was not run, and the remaining risk. Athena relies on your status for review handoff decisions.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# AGENTS.md - Sasha's Operating Instructions
|
|
2
|
+
|
|
3
|
+
## Session Startup
|
|
4
|
+
|
|
5
|
+
1. Read `SOUL.md` to re-anchor your frontend role.
|
|
6
|
+
2. Read `PLAYBOOK.md`, recent `LEARNINGS.md`, and relevant files under `memory/`.
|
|
7
|
+
3. Inspect existing UI conventions, design system usage, responsive patterns, and repo workflow instructions.
|
|
8
|
+
4. Confirm the target viewport behavior and preview path before editing when visual work is involved.
|
|
9
|
+
|
|
10
|
+
## Your Role
|
|
11
|
+
|
|
12
|
+
You are **Sasha**, the frontend implementation specialist for the A.L.I.C.E. team. Athena may assign you UI, app shell, component, styling, interaction, accessibility, responsive implementation, and Canvas preview-readiness slices.
|
|
13
|
+
|
|
14
|
+
## A.L.I.C.E. | Code Execution
|
|
15
|
+
|
|
16
|
+
When A.L.I.C.E. | Code is available, use it as your coding execution layer. The current implementation may expose this through internal `claw.*` tools:
|
|
17
|
+
|
|
18
|
+
- `claw.fix` for bounded frontend implementation and UI bug fixes.
|
|
19
|
+
- `claw.inspect` for repo/design-system investigation.
|
|
20
|
+
- `claw.review` for frontend diff review.
|
|
21
|
+
- `claw.test` for browser, unit, or accessibility verification tasks.
|
|
22
|
+
- `claw.session.create` / `claw.session.resume` for longer UI implementation sessions.
|
|
23
|
+
|
|
24
|
+
If Code/Claw tools are not listed, use the installed `coding-agent` skill for non-trivial implementation and local tools for quick reads, checks, screenshots, and small patches.
|
|
25
|
+
|
|
26
|
+
## A.L.I.C.E. | Computer
|
|
27
|
+
|
|
28
|
+
Use A.L.I.C.E. | Computer for browser-side evidence on UI work: inspect the preview, capture screenshots, read accessibility snapshots, check console/errors, verify responsive behavior, and reproduce interaction bugs. Prefer `agent-browser` for sessioned browser work (`open`, `snapshot`, `screenshot`, `console`, `errors`, `batch`, `stream status`) and use Playwright as the fallback for scripted assertions or when agent-browser is unavailable.
|
|
29
|
+
|
|
30
|
+
Computer does not edit code, own Canvas, or track durable task state. Return Computer findings as evidence for Athena, Morgan, Control comments, or Canvas updates.
|
|
31
|
+
|
|
32
|
+
## Ownership
|
|
33
|
+
|
|
34
|
+
Own frontend components, CSS, responsive behavior, stateful UI, accessibility, and preview readiness. Coordinate with Nadia for design direction, Dylan for API/data contracts, Morgan for QA, Priya for preview/build issues, Clara or Sloane for copy and launch language, and Daphne for component docs.
|
|
35
|
+
|
|
36
|
+
## Acceptance Criteria
|
|
37
|
+
|
|
38
|
+
Every frontend result should return:
|
|
39
|
+
|
|
40
|
+
1. Summary of the visual or behavioral change.
|
|
41
|
+
2. Changed files.
|
|
42
|
+
3. Tests, builds, browser checks, or screenshots run.
|
|
43
|
+
4. Preview metadata when available, especially URL previews for Canvas.
|
|
44
|
+
5. Remaining responsive, accessibility, or copy follow-ups.
|
|
45
|
+
|
|
46
|
+
For A.L.I.C.E. | Code handoff, classify the result as:
|
|
47
|
+
|
|
48
|
+
- `completed` only when the UI works in the target desktop and mobile shape and the preview is usable.
|
|
49
|
+
- `needs_review` when visual judgement, accessibility, copy, or product approval is still required.
|
|
50
|
+
- `blocked` when a missing asset, API contract, credential, or build/preview issue prevents verification.
|
|
51
|
+
- `failed` when the assigned UI change cannot be made coherent or safe in the current scope.
|
|
52
|
+
|
|
53
|
+
Frontend done means the Canvas preview metadata is returned when available, the changed surface fits its container, and any unverified viewport or accessibility risk is explicit.
|
|
54
|
+
|
|
55
|
+
## Red Lines
|
|
56
|
+
|
|
57
|
+
- Do not invent a new visual system when the repo has existing conventions.
|
|
58
|
+
- Do not ship layout changes without mobile and desktop consideration.
|
|
59
|
+
- Do not mark visual work complete if the preview is broken or unverified.
|
|
60
|
+
|
|
61
|
+
## Working in a Project (Symphony fan-out)
|
|
62
|
+
|
|
63
|
+
When Athena (or another orchestrator) delegates work to you with a `projectId` in dispatch metadata, you'll see two extra tools:
|
|
64
|
+
|
|
65
|
+
- **`project_workspace`** β read/write the shared project dir at `~/.alice/projects/<projectId>/`. Operations: `list_slices`, `read_slice`, `read_slice_file`, `write_file`, `create_slice`, `set_status`. Use this to drop your output files (code, docs, tests) into your slice's `files/` dir, and to update slice status (`active β review β done`, or `blocked`).
|
|
66
|
+
- **`clone_self`** (only if your `subagents.cloneSelf.max > 0`) β spawn a parallel copy of yourself on an independent sub-task. Use this when your slice splits into independent pieces (e.g. "test 5 routes" β 5 parallel clones). Clones are isolated; their output is NOT auto-merged. The parent must read each clone's reply explicitly.
|
|
67
|
+
|
|
68
|
+
When you finish a slice, write outputs into `files/`, set status to `review` or `done`, and report briefly. Athena reads the workspace to synthesize.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# TOOLS.md - Sasha's Local Notes
|
|
2
|
+
|
|
3
|
+
## Domain: Frontend Engineering
|
|
4
|
+
|
|
5
|
+
## Primary A.L.I.C.E. | Code Tools
|
|
6
|
+
|
|
7
|
+
- `claw.fix` - frontend implementation and UI bug fixes.
|
|
8
|
+
- `claw.inspect` - component, style, and routing investigation.
|
|
9
|
+
- `claw.review` - visual implementation review.
|
|
10
|
+
- `claw.test` - browser, accessibility, unit, and regression checks.
|
|
11
|
+
- `claw.session.create` / `claw.session.resume` - longer bounded UI sessions.
|
|
12
|
+
|
|
13
|
+
## A.L.I.C.E. | Computer
|
|
14
|
+
|
|
15
|
+
Use Computer for preview inspection and UI evidence:
|
|
16
|
+
|
|
17
|
+
- `agent-browser open <url>` - open a preview or deployed page.
|
|
18
|
+
- `agent-browser snapshot` - capture accessibility-tree refs for reliable interaction.
|
|
19
|
+
- `agent-browser screenshot [path]` - capture visual evidence for Athena, Morgan, or Canvas.
|
|
20
|
+
- `agent-browser console` / `agent-browser errors` - check runtime browser failures.
|
|
21
|
+
- `agent-browser batch ...` - run multi-step preview checks with less process overhead.
|
|
22
|
+
- `agent-browser stream status` - confirm whether live browser streaming is available.
|
|
23
|
+
|
|
24
|
+
Use Playwright as the fallback when agent-browser is unavailable or when a scripted assertion is the better fit.
|
|
25
|
+
|
|
26
|
+
## Fallback
|
|
27
|
+
|
|
28
|
+
If A.L.I.C.E. | Code is unavailable, use the `coding-agent` skill for non-trivial frontend changes. Use local tools for reading files, running dev/build/test commands, and focused patch edits.
|
|
29
|
+
|
|
30
|
+
## Preview Expectations
|
|
31
|
+
|
|
32
|
+
When a result includes a local dev server, deployed URL, static HTML, or screenshot, return preview metadata so Athena can update Canvas. Always mention what viewport or browser checks were actually run.
|
package/bin/alice-cloud.cjs
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* alice-cloud - Zero-touch client onboarding CLI for A.L.I.C.E. | Control
|
|
4
|
-
* Usage: alice-cloud <command>
|
|
5
|
-
* --non-interactive Skip interactive prompts (use env vars)
|
|
6
|
-
* ALICE_SUPABASE_TOKEN Supabase access token (non-interactive mode)
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const os = require('os');
|
|
11
|
-
const fs = require('fs');
|
|
12
|
-
const { spawn } = require('child_process');
|
|
13
|
-
|
|
14
|
-
const CONFIG_DIR = path.join(os.homedir(), '.openclaw');
|
|
15
|
-
const CONFIG_FILE = path.join(CONFIG_DIR, 'alice-cloud.json');
|
|
16
|
-
const API_BASE = 'https://alice.av3.ai/api/cloud';
|
|
17
|
-
|
|
18
|
-
const NON_INTERACTIVE = process.argv.includes('--non-interactive') || process.env.ALICE_NON_INTERACTIVE === '1';
|
|
19
|
-
const SUPABASE_TOKEN = process.env.ALICE_SUPABASE_TOKEN;
|
|
20
|
-
|
|
21
|
-
function loadConfig() {
|
|
22
|
-
try {
|
|
23
|
-
if (fs.existsSync(CONFIG_FILE)) {
|
|
24
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
25
|
-
}
|
|
26
|
-
} catch (_) {}
|
|
27
|
-
return {};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function saveConfig(config) {
|
|
31
|
-
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
32
|
-
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async function sleep(ms) {
|
|
36
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function runCommand(cmd, args) {
|
|
40
|
-
return new Promise((resolve, reject) => {
|
|
41
|
-
const child = spawn(cmd, args, { shell: true });
|
|
42
|
-
let stdout = '', stderr = '';
|
|
43
|
-
child.stdout.on('data', (d) => { stdout += d; });
|
|
44
|
-
child.stderr.on('data', (d) => { stderr += d; });
|
|
45
|
-
child.on('close', (code) => {
|
|
46
|
-
if (code === 0) resolve(stdout);
|
|
47
|
-
else reject(new Error(stderr || `exit ${code}`));
|
|
48
|
-
});
|
|
49
|
-
child.on('error', reject);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** Fetch JSON helper β replaces `got` with native fetch (Node 18+) */
|
|
54
|
-
async function fetchJson(url, options = {}) {
|
|
55
|
-
const { method = 'GET', json, headers = {}, timeoutMs = 15000 } = options;
|
|
56
|
-
const controller = new AbortController();
|
|
57
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
58
|
-
try {
|
|
59
|
-
const fetchOpts = {
|
|
60
|
-
method,
|
|
61
|
-
headers: { ...headers },
|
|
62
|
-
signal: controller.signal,
|
|
63
|
-
};
|
|
64
|
-
if (json !== undefined) {
|
|
65
|
-
fetchOpts.headers['Content-Type'] = 'application/json';
|
|
66
|
-
fetchOpts.body = JSON.stringify(json);
|
|
67
|
-
}
|
|
68
|
-
const res = await fetch(url, fetchOpts);
|
|
69
|
-
const text = await res.text();
|
|
70
|
-
let data;
|
|
71
|
-
try { data = JSON.parse(text); } catch (_) { data = text; }
|
|
72
|
-
return { ok: res.ok, status: res.status, data };
|
|
73
|
-
} finally {
|
|
74
|
-
clearTimeout(timer);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// ββ Login ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
79
|
-
async function login(args) {
|
|
80
|
-
const open = (await import('open')).default;
|
|
81
|
-
|
|
82
|
-
// Non-interactive mode: use token from env
|
|
83
|
-
if (NON_INTERACTIVE) {
|
|
84
|
-
const token = SUPABASE_TOKEN;
|
|
85
|
-
if (!token) {
|
|
86
|
-
console.error('β ALICE_SUPABASE_TOKEN env var required for non-interactive login.');
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
try {
|
|
90
|
-
const supabaseUrl = process.env.ALICE_SUPABASE_URL || 'https://xxxgvtwnlbtdgmlgccee.supabase.co';
|
|
91
|
-
const { ok, data } = await fetchJson(`${supabaseUrl}/auth/v1/user`, {
|
|
92
|
-
headers: { Authorization: `Bearer ${token}`, apikey: token },
|
|
93
|
-
});
|
|
94
|
-
const config = loadConfig();
|
|
95
|
-
config.supabaseToken = token;
|
|
96
|
-
config.user = data;
|
|
97
|
-
saveConfig(config);
|
|
98
|
-
console.log('β
Logged in as', data.email || data.user_metadata?.user_name || 'unknown');
|
|
99
|
-
return;
|
|
100
|
-
} catch (err) {
|
|
101
|
-
console.error('β Token validation failed:', err.message);
|
|
102
|
-
process.exit(1);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
console.log('π A.L.I.C.E. Cloud login');
|
|
107
|
-
console.log(' Opening browser for loginβ¦');
|
|
108
|
-
|
|
109
|
-
const loginUrl = `${API_BASE.replace('/api/cloud', '')}/login?cli=1`;
|
|
110
|
-
try { await open(loginUrl); } catch (_) {
|
|
111
|
-
console.log(` Could not open browser. Visit: ${loginUrl}`);
|
|
112
|
-
}
|
|
113
|
-
console.log(' After login, copy the access token and paste it here:');
|
|
114
|
-
process.stdout.write(' > ');
|
|
115
|
-
|
|
116
|
-
return new Promise((resolve, reject) => {
|
|
117
|
-
let token = '';
|
|
118
|
-
process.stdin.setEncoding('utf8');
|
|
119
|
-
process.stdin.on('data', (d) => { token += d; });
|
|
120
|
-
process.stdin.on('end', async () => {
|
|
121
|
-
token = token.trim();
|
|
122
|
-
if (!token) { reject(new Error('No token provided')); return; }
|
|
123
|
-
try {
|
|
124
|
-
const supabaseUrl = process.env.ALICE_SUPABASE_URL || 'https://xxxgvtwnlbtdgmlgccee.supabase.co';
|
|
125
|
-
const { ok, data } = await fetchJson(`${supabaseUrl}/auth/v1/user`, {
|
|
126
|
-
headers: { Authorization: `Bearer ${token}`, apikey: token },
|
|
127
|
-
});
|
|
128
|
-
const config = loadConfig();
|
|
129
|
-
config.supabaseToken = token;
|
|
130
|
-
config.user = data;
|
|
131
|
-
saveConfig(config);
|
|
132
|
-
console.log(' β
Logged in as', data.email || data.user_metadata?.user_name || 'unknown');
|
|
133
|
-
resolve();
|
|
134
|
-
} catch (err) {
|
|
135
|
-
reject(new Error('Token validation failed: ' + err.message));
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// ββ Register βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
142
|
-
async function detectGatewayUrl() {
|
|
143
|
-
const candidates = ['https://localhost:18789', 'http://localhost:18789'];
|
|
144
|
-
for (const url of candidates) {
|
|
145
|
-
try {
|
|
146
|
-
const { ok } = await fetchJson(url, { timeoutMs: 2000 });
|
|
147
|
-
return url;
|
|
148
|
-
} catch (_) {}
|
|
149
|
-
}
|
|
150
|
-
return 'https://localhost:18789';
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
async function readGatewayToken() {
|
|
154
|
-
const cfg = path.join(os.homedir(), '.openclaw', 'openclaw.json');
|
|
155
|
-
try {
|
|
156
|
-
const data = JSON.parse(fs.readFileSync(cfg, 'utf8'));
|
|
157
|
-
return data.gateway?.auth?.token || '';
|
|
158
|
-
} catch (_) {}
|
|
159
|
-
return '';
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async function getOpenClawVersion() {
|
|
163
|
-
try { return (await runCommand('openclaw', ['--version'])).trim(); } catch (_) {}
|
|
164
|
-
return 'unknown';
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
async function register(args) {
|
|
168
|
-
const config = loadConfig();
|
|
169
|
-
|
|
170
|
-
if (!config.supabaseToken) {
|
|
171
|
-
console.error('β Not logged in. Run `alice-cloud login` first.');
|
|
172
|
-
process.exit(1);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const gatewayUrl = await detectGatewayUrl();
|
|
176
|
-
const gatewayToken = await readGatewayToken();
|
|
177
|
-
const hostname = os.hostname();
|
|
178
|
-
const version = await getOpenClawVersion();
|
|
179
|
-
|
|
180
|
-
console.log('π Registering gateway with A.L.I.C.E. Cloudβ¦');
|
|
181
|
-
console.log(` Gateway URL : ${gatewayUrl}`);
|
|
182
|
-
console.log(` Hostname : ${hostname}`);
|
|
183
|
-
console.log(` Version : ${version}`);
|
|
184
|
-
|
|
185
|
-
let lastError;
|
|
186
|
-
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
187
|
-
try {
|
|
188
|
-
const { ok, status, data } = await fetchJson(`${API_BASE}/register`, {
|
|
189
|
-
method: 'POST',
|
|
190
|
-
json: { gatewayUrl, gatewayToken, hostname, version },
|
|
191
|
-
headers: { Authorization: `Bearer ${config.supabaseToken}` },
|
|
192
|
-
});
|
|
193
|
-
if (!ok) throw new Error(`HTTP ${status}: ${typeof data === 'string' ? data : JSON.stringify(data)}`);
|
|
194
|
-
config.registration = { gatewayUrl, hostname, version, registeredAt: new Date().toISOString() };
|
|
195
|
-
saveConfig(config);
|
|
196
|
-
console.log(' β
Gateway registered!');
|
|
197
|
-
return;
|
|
198
|
-
} catch (err) {
|
|
199
|
-
lastError = err;
|
|
200
|
-
const delay = attempt * 2000;
|
|
201
|
-
console.log(` β οΈ Attempt ${attempt} failed: ${err.message}. Retrying in ${delay}msβ¦`);
|
|
202
|
-
await sleep(delay);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
console.error('β Registration failed after 3 attempts:', lastError.message);
|
|
206
|
-
process.exit(1);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// ββ Status βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
210
|
-
async function status(args) {
|
|
211
|
-
const config = loadConfig();
|
|
212
|
-
|
|
213
|
-
if (!config.supabaseToken) {
|
|
214
|
-
console.error('β Not logged in. Run `alice-cloud login` first.');
|
|
215
|
-
process.exit(1);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
try {
|
|
219
|
-
const { ok, status: httpStatus, data } = await fetchJson(`${API_BASE}/status`, {
|
|
220
|
-
headers: { Authorization: `Bearer ${config.supabaseToken}` },
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
if (httpStatus === 401) {
|
|
224
|
-
console.error('β Session expired. Run `alice-cloud login` again.');
|
|
225
|
-
process.exit(1);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if (!ok || !data.registered) {
|
|
229
|
-
console.log('βͺ No gateway registered.');
|
|
230
|
-
console.log(' Run `alice-cloud register` to connect your gateway.');
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
console.log('π’ A.L.I.C.E. Cloud Status');
|
|
235
|
-
console.log(` Gateway URL : ${data.gatewayUrl}`);
|
|
236
|
-
console.log(` Hostname : ${data.hostname}`);
|
|
237
|
-
console.log(` Status : ${data.connected ? 'π’ Connected' : 'π΄ Disconnected'}`);
|
|
238
|
-
console.log(` Last heartbeat: ${data.lastHeartbeat ? new Date(data.lastHeartbeat).toLocaleString() : 'Never'}`);
|
|
239
|
-
console.log(` Version : ${data.version}`);
|
|
240
|
-
} catch (err) {
|
|
241
|
-
console.error('β Status check failed:', err.message);
|
|
242
|
-
process.exit(1);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// ββ Unregister βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
247
|
-
async function unregister(args) {
|
|
248
|
-
const config = loadConfig();
|
|
249
|
-
|
|
250
|
-
if (!config.supabaseToken) {
|
|
251
|
-
console.error('β Not logged in. Run `alice-cloud login` first.');
|
|
252
|
-
process.exit(1);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
console.log('ποΈ Unregistering gatewayβ¦');
|
|
256
|
-
try {
|
|
257
|
-
const { ok, status } = await fetchJson(`${API_BASE}/status`, {
|
|
258
|
-
method: 'DELETE',
|
|
259
|
-
headers: { Authorization: `Bearer ${config.supabaseToken}` },
|
|
260
|
-
});
|
|
261
|
-
if (status === 404) {
|
|
262
|
-
console.log(' βΉοΈ No gateway was registered.');
|
|
263
|
-
} else {
|
|
264
|
-
delete config.registration;
|
|
265
|
-
saveConfig(config);
|
|
266
|
-
console.log(' β
Gateway unregistered.');
|
|
267
|
-
}
|
|
268
|
-
} catch (err) {
|
|
269
|
-
console.error('β Unregister failed:', err.message);
|
|
270
|
-
process.exit(1);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// ββ Watch (daemon) βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
275
|
-
async function checkGatewayUp(gatewayUrl) {
|
|
276
|
-
try {
|
|
277
|
-
const { ok } = await fetchJson(gatewayUrl, { timeoutMs: 3000 });
|
|
278
|
-
return true;
|
|
279
|
-
} catch (_) {}
|
|
280
|
-
return false;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
async function startHeartbeatLoop(config) {
|
|
284
|
-
const gatewayUrl = config.registration?.gatewayUrl || 'https://localhost:18789';
|
|
285
|
-
|
|
286
|
-
async function heartbeat() {
|
|
287
|
-
try {
|
|
288
|
-
const isUp = await checkGatewayUp(gatewayUrl);
|
|
289
|
-
if (!isUp) {
|
|
290
|
-
console.log('[watch] Gateway down, attempting restartβ¦');
|
|
291
|
-
try { await runCommand('openclaw', ['gateway', 'start']); await sleep(3000); } catch (_) {}
|
|
292
|
-
}
|
|
293
|
-
await fetchJson(`${API_BASE}/heartbeat`, {
|
|
294
|
-
method: 'POST',
|
|
295
|
-
json: { hostname: os.hostname(), connected: await checkGatewayUp(gatewayUrl), timestamp: new Date().toISOString() },
|
|
296
|
-
headers: { Authorization: `Bearer ${config.supabaseToken}` },
|
|
297
|
-
timeoutMs: 10000,
|
|
298
|
-
});
|
|
299
|
-
console.log(`[${new Date().toLocaleTimeString()}] heartbeat sent (gateway: ${isUp ? 'up' : 'down'})`);
|
|
300
|
-
} catch (err) {
|
|
301
|
-
console.error('[watch] heartbeat error:', err.message);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
await heartbeat();
|
|
306
|
-
const interval = setInterval(heartbeat, 30_000);
|
|
307
|
-
process.on('SIGINT', () => { clearInterval(interval); process.exit(0); });
|
|
308
|
-
process.on('SIGTERM', () => { clearInterval(interval); process.exit(0); });
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
async function watch(args) {
|
|
312
|
-
const config = loadConfig();
|
|
313
|
-
if (!config.supabaseToken) {
|
|
314
|
-
console.error('β Not logged in. Run `alice-cloud login` first.');
|
|
315
|
-
process.exit(1);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
if (args.daemon || process.argv.includes('--daemon')) {
|
|
319
|
-
const child = spawn(process.execPath, [__filename, 'watch', '--running'], {
|
|
320
|
-
detached: true, stdio: 'ignore', env: { ...process.env, ALICE_NON_INTERACTIVE: '1' },
|
|
321
|
-
});
|
|
322
|
-
child.unref();
|
|
323
|
-
console.log('π alice-cloud watch started in background (PID:', child.pid, ')');
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
console.log('ποΈ A.L.I.C.E. Cloud watch daemon started');
|
|
328
|
-
console.log(' Press Ctrl+C to stop.');
|
|
329
|
-
await startHeartbeatLoop(config);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// ββ Programmatic API exports βββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
333
|
-
module.exports = {
|
|
334
|
-
login,
|
|
335
|
-
register,
|
|
336
|
-
status,
|
|
337
|
-
unregister,
|
|
338
|
-
watch,
|
|
339
|
-
loadConfig,
|
|
340
|
-
saveConfig,
|
|
341
|
-
detectGatewayUrl,
|
|
342
|
-
readGatewayToken,
|
|
343
|
-
API_BASE,
|
|
344
|
-
CONFIG_FILE,
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
// ββ CLI dispatcher βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
348
|
-
if (require.main === module) {
|
|
349
|
-
const commands = { login, register, status, unregister, watch };
|
|
350
|
-
const cmd = process.argv[2];
|
|
351
|
-
|
|
352
|
-
if (!cmd) {
|
|
353
|
-
console.log(`alice-cloud v1.1.0 β A.L.I.C.E. | Control Cloud CLI
|
|
354
|
-
|
|
355
|
-
Usage: alice-cloud <command> [options]
|
|
356
|
-
|
|
357
|
-
Commands:
|
|
358
|
-
login Authenticate with Supabase
|
|
359
|
-
register Register this gateway with A.L.I.C.E. Cloud
|
|
360
|
-
status Show gateway connection status
|
|
361
|
-
unregister Remove gateway registration
|
|
362
|
-
watch Start background heartbeat daemon
|
|
363
|
-
|
|
364
|
-
Options:
|
|
365
|
-
--non-interactive Use env vars (ALICE_SUPABASE_TOKEN) instead of prompts
|
|
366
|
-
|
|
367
|
-
Environment:
|
|
368
|
-
ALICE_SUPABASE_TOKEN Supabase access token (for non-interactive mode)
|
|
369
|
-
ALICE_SUPABASE_URL Supabase project URL (default: xxx project)
|
|
370
|
-
|
|
371
|
-
Run 'alice-cloud <command> --help' for more options.`);
|
|
372
|
-
process.exit(0);
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const handler = commands[cmd];
|
|
376
|
-
if (!handler) {
|
|
377
|
-
console.error(`Unknown command: ${cmd}`);
|
|
378
|
-
process.exit(1);
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
handler(process.argv.slice(3)).catch((err) => {
|
|
382
|
-
console.error('Error:', err.message);
|
|
383
|
-
process.exit(1);
|
|
384
|
-
});
|
|
385
|
-
}
|