myaiforone 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -0
- package/agents/_template/CLAUDE.md +18 -0
- package/agents/_template/agent.json +7 -0
- package/agents/platform/agentcreator/CLAUDE.md +300 -0
- package/agents/platform/appcreator/CLAUDE.md +158 -0
- package/agents/platform/gym/CLAUDE.md +486 -0
- package/agents/platform/gym/agent.json +40 -0
- package/agents/platform/gym/programs/agent-building/program.json +160 -0
- package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
- package/agents/platform/gym/programs/getting-started/program.json +124 -0
- package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
- package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
- package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
- package/agents/platform/gym/souls/alex.md +12 -0
- package/agents/platform/gym/souls/jordan.md +12 -0
- package/agents/platform/gym/souls/morgan.md +12 -0
- package/agents/platform/gym/souls/riley.md +12 -0
- package/agents/platform/gym/souls/sam.md +12 -0
- package/agents/platform/hub/CLAUDE.md +372 -0
- package/agents/platform/promptcreator/CLAUDE.md +130 -0
- package/agents/platform/skillcreator/CLAUDE.md +163 -0
- package/bin/cli.js +566 -0
- package/config.example.json +310 -0
- package/dist/agent-registry.d.ts +32 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +144 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/channels/discord.d.ts +17 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +114 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/imessage.d.ts +23 -0
- package/dist/channels/imessage.d.ts.map +1 -0
- package/dist/channels/imessage.js +214 -0
- package/dist/channels/imessage.js.map +1 -0
- package/dist/channels/slack.d.ts +19 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +167 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +19 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +274 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +44 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +18 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +23 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +189 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/config.d.ts +134 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/cron.d.ts +8 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +35 -0
- package/dist/cron.js.map +1 -0
- package/dist/decrypt-keys.d.ts +7 -0
- package/dist/decrypt-keys.d.ts.map +1 -0
- package/dist/decrypt-keys.js +53 -0
- package/dist/decrypt-keys.js.map +1 -0
- package/dist/encrypt-keys.d.ts +8 -0
- package/dist/encrypt-keys.d.ts.map +1 -0
- package/dist/encrypt-keys.js +62 -0
- package/dist/encrypt-keys.js.map +1 -0
- package/dist/executor.d.ts +31 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +2009 -0
- package/dist/executor.js.map +1 -0
- package/dist/gemini-executor.d.ts +27 -0
- package/dist/gemini-executor.d.ts.map +1 -0
- package/dist/gemini-executor.js +160 -0
- package/dist/gemini-executor.js.map +1 -0
- package/dist/goals.d.ts +24 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +189 -0
- package/dist/goals.js.map +1 -0
- package/dist/gym/activity-digest.d.ts +30 -0
- package/dist/gym/activity-digest.d.ts.map +1 -0
- package/dist/gym/activity-digest.js +506 -0
- package/dist/gym/activity-digest.js.map +1 -0
- package/dist/gym/dimension-scorer.d.ts +76 -0
- package/dist/gym/dimension-scorer.d.ts.map +1 -0
- package/dist/gym/dimension-scorer.js +236 -0
- package/dist/gym/dimension-scorer.js.map +1 -0
- package/dist/gym/gym-router.d.ts +7 -0
- package/dist/gym/gym-router.d.ts.map +1 -0
- package/dist/gym/gym-router.js +718 -0
- package/dist/gym/gym-router.js.map +1 -0
- package/dist/gym/index.d.ts +11 -0
- package/dist/gym/index.d.ts.map +1 -0
- package/dist/gym/index.js +11 -0
- package/dist/gym/index.js.map +1 -0
- package/dist/heartbeat.d.ts +21 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +163 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/keystore.d.ts +22 -0
- package/dist/keystore.d.ts.map +1 -0
- package/dist/keystore.js +178 -0
- package/dist/keystore.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/daily.d.ts +22 -0
- package/dist/memory/daily.d.ts.map +1 -0
- package/dist/memory/daily.js +82 -0
- package/dist/memory/daily.js.map +1 -0
- package/dist/memory/embeddings.d.ts +15 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +154 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +159 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/search.d.ts +21 -0
- package/dist/memory/search.d.ts.map +1 -0
- package/dist/memory/search.js +77 -0
- package/dist/memory/search.js.map +1 -0
- package/dist/memory/store.d.ts +23 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +144 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/ollama-executor.d.ts +17 -0
- package/dist/ollama-executor.d.ts.map +1 -0
- package/dist/ollama-executor.js +112 -0
- package/dist/ollama-executor.js.map +1 -0
- package/dist/openai-executor.d.ts +38 -0
- package/dist/openai-executor.d.ts.map +1 -0
- package/dist/openai-executor.js +197 -0
- package/dist/openai-executor.js.map +1 -0
- package/dist/router.d.ts +11 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +185 -0
- package/dist/router.js.map +1 -0
- package/dist/test-message.d.ts +2 -0
- package/dist/test-message.d.ts.map +1 -0
- package/dist/test-message.js +60 -0
- package/dist/test-message.js.map +1 -0
- package/dist/utils/imsg-db-reader.d.ts +24 -0
- package/dist/utils/imsg-db-reader.d.ts.map +1 -0
- package/dist/utils/imsg-db-reader.js +92 -0
- package/dist/utils/imsg-db-reader.js.map +1 -0
- package/dist/utils/imsg-rpc.d.ts +25 -0
- package/dist/utils/imsg-rpc.d.ts.map +1 -0
- package/dist/utils/imsg-rpc.js +149 -0
- package/dist/utils/imsg-rpc.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +3 -0
- package/dist/utils/message-formatter.d.ts.map +1 -0
- package/dist/utils/message-formatter.js +69 -0
- package/dist/utils/message-formatter.js.map +1 -0
- package/dist/web-ui.d.ts +12 -0
- package/dist/web-ui.d.ts.map +1 -0
- package/dist/web-ui.js +5784 -0
- package/dist/web-ui.js.map +1 -0
- package/dist/whatsapp-chats.d.ts +2 -0
- package/dist/whatsapp-chats.d.ts.map +1 -0
- package/dist/whatsapp-chats.js +76 -0
- package/dist/whatsapp-chats.js.map +1 -0
- package/dist/whatsapp-login.d.ts +2 -0
- package/dist/whatsapp-login.d.ts.map +1 -0
- package/dist/whatsapp-login.js +90 -0
- package/dist/whatsapp-login.js.map +1 -0
- package/dist/wiki-sync.d.ts +21 -0
- package/dist/wiki-sync.d.ts.map +1 -0
- package/dist/wiki-sync.js +147 -0
- package/dist/wiki-sync.js.map +1 -0
- package/docs/AddNewAgentGuide.md +100 -0
- package/docs/AddNewMcpGuide.md +72 -0
- package/docs/Architecture.md +795 -0
- package/docs/CLAUDE-AI-SETUP.md +166 -0
- package/docs/Setup.md +297 -0
- package/docs/ai-gym-architecture.md +1040 -0
- package/docs/ai-gym-build-plan.md +343 -0
- package/docs/ai-gym-onboarding.md +122 -0
- package/docs/appcreator_plan.md +348 -0
- package/docs/platform-mcp-audit.md +320 -0
- package/docs/server-deployment-plan.md +503 -0
- package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
- package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
- package/docs/user-guide.md +2016 -0
- package/mcp-catalog.json +628 -0
- package/package.json +63 -0
- package/public/MyAIforOne-logomark-512.svg +16 -0
- package/public/MyAIforOne-logomark-transparent.svg +15 -0
- package/public/activity.html +314 -0
- package/public/admin.html +1674 -0
- package/public/agent-dashboard.html +670 -0
- package/public/api-docs.html +1106 -0
- package/public/automations.html +722 -0
- package/public/canvas.css +223 -0
- package/public/canvas.js +588 -0
- package/public/changelog.html +231 -0
- package/public/gym.html +2766 -0
- package/public/home.html +1930 -0
- package/public/index.html +2809 -0
- package/public/lab.html +1643 -0
- package/public/library.html +1442 -0
- package/public/marketplace.html +1101 -0
- package/public/mcp-docs.html +441 -0
- package/public/mini.html +390 -0
- package/public/monitor.html +584 -0
- package/public/org.html +4304 -0
- package/public/projects.html +734 -0
- package/public/settings.html +645 -0
- package/public/tasks.html +932 -0
- package/public/trainers/alex.svg +12 -0
- package/public/trainers/jordan.svg +12 -0
- package/public/trainers/morgan.svg +12 -0
- package/public/trainers/riley.svg +12 -0
- package/public/trainers/sam.svg +12 -0
- package/public/user-guide.html +218 -0
- package/registry/agents.json +3 -0
- package/registry/apps.json +20 -0
- package/registry/installed-drafts.json +3 -0
- package/registry/mcps.json +1084 -0
- package/registry/prompts/personal/mcp-test-prompt.md +6 -0
- package/registry/prompts/personal/memory-recall.md +6 -0
- package/registry/prompts/platform/brainstorm.md +15 -0
- package/registry/prompts/platform/code-review.md +16 -0
- package/registry/prompts/platform/explain.md +16 -0
- package/registry/prompts.json +58 -0
- package/registry/skills/external/brainstorming.md +5 -0
- package/registry/skills/external/code-review.md +40 -0
- package/registry/skills/external/frontend-patterns.md +642 -0
- package/registry/skills/external/frontend-slides.md +184 -0
- package/registry/skills/external/systematic-debugging.md +5 -0
- package/registry/skills/external/tdd.md +328 -0
- package/registry/skills/external/verification-before-completion.md +5 -0
- package/registry/skills/external/writing-plans.md +5 -0
- package/registry/skills/platform/ai41_app_build.md +930 -0
- package/registry/skills/platform/ai41_app_deploy.md +168 -0
- package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
- package/registry/skills/platform/ai41_app_patterns.md +359 -0
- package/registry/skills/platform/ai41_app_register.md +85 -0
- package/registry/skills/platform/ai41_app_scaffold.md +421 -0
- package/registry/skills/platform/ai41_app_verify.md +107 -0
- package/registry/skills/platform/opProjectCreate.md +239 -0
- package/registry/skills/platform/op_devbrowser.md +136 -0
- package/registry/skills/platform/sop_brandguidelines.md +103 -0
- package/registry/skills/platform/sop_docx.md +117 -0
- package/registry/skills/platform/sop_frontenddesign.md +44 -0
- package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
- package/registry/skills/platform/sop_mcpbuilder.md +133 -0
- package/registry/skills/platform/sop_pdf.md +172 -0
- package/registry/skills/platform/sop_pptx.md +133 -0
- package/registry/skills/platform/sop_skillcreator.md +104 -0
- package/registry/skills/platform/sop_themefactory.md +128 -0
- package/registry/skills/platform/sop_webapptesting.md +75 -0
- package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
- package/registry/skills/platform/sop_xlsx.md +134 -0
- package/registry/skills.json +1055 -0
- package/scripts/discover-chats.sh +11 -0
- package/scripts/install-service-windows.ps1 +87 -0
- package/scripts/install-service.sh +52 -0
- package/scripts/seed-registry.ts +195 -0
- package/scripts/test-send.sh +5 -0
- package/scripts/tray-indicator.ps1 +35 -0
- package/scripts/uninstall-service-windows.ps1 +23 -0
- package/scripts/uninstall-service.sh +15 -0
- package/scripts/xbar-myagent.5s.sh +32 -0
- package/server/mcp-server/dist/index.d.ts +11 -0
- package/server/mcp-server/dist/index.js +1332 -0
- package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
- package/server/mcp-server/dist/lib/api-client.js +241 -0
- package/server/mcp-server/index.ts +1545 -0
- package/server/mcp-server/lib/api-client.ts +366 -0
- package/server/mcp-server/tsconfig.json +14 -0
- package/src/agent-registry.ts +180 -0
- package/src/channels/discord.ts +129 -0
- package/src/channels/imessage.ts +261 -0
- package/src/channels/slack.ts +208 -0
- package/src/channels/telegram.ts +307 -0
- package/src/channels/types.ts +62 -0
- package/src/channels/whatsapp.ts +227 -0
- package/src/config.ts +281 -0
- package/src/cron.ts +43 -0
- package/src/decrypt-keys.ts +60 -0
- package/src/encrypt-keys.ts +70 -0
- package/src/executor.ts +2190 -0
- package/src/gemini-executor.ts +212 -0
- package/src/goals.ts +240 -0
- package/src/gym/activity-digest.ts +546 -0
- package/src/gym/dimension-scorer.ts +297 -0
- package/src/gym/gym-router.ts +801 -0
- package/src/gym/index.ts +19 -0
- package/src/heartbeat.ts +220 -0
- package/src/index.ts +275 -0
- package/src/keystore.ts +190 -0
- package/src/logger.ts +51 -0
- package/src/memory/daily.ts +101 -0
- package/src/memory/embeddings.ts +185 -0
- package/src/memory/index.ts +218 -0
- package/src/memory/search.ts +124 -0
- package/src/memory/store.ts +189 -0
- package/src/ollama-executor.ts +126 -0
- package/src/openai-executor.ts +259 -0
- package/src/router.ts +230 -0
- package/src/test-message.ts +72 -0
- package/src/utils/imsg-db-reader.ts +109 -0
- package/src/utils/imsg-rpc.ts +178 -0
- package/src/utils/message-formatter.ts +90 -0
- package/src/web-ui.ts +5778 -0
- package/src/whatsapp-chats.ts +91 -0
- package/src/whatsapp-login.ts +110 -0
- package/src/wiki-sync.ts +199 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,2016 @@
|
|
|
1
|
+
# MyAIforOne — User Guide
|
|
2
|
+
|
|
3
|
+
> Master reference for every page, button, action, API endpoint, and MCP tool in the MyAIforOne platform.
|
|
4
|
+
> Organized by UI page. Each action includes its API and MCP mapping.
|
|
5
|
+
> Intended audience: hub agent, platform agents, and advanced users.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
1. [Home](#1-home)
|
|
12
|
+
2. [Agents (Org)](#2-agents-org)
|
|
13
|
+
- [Agent List](#21-agent-list)
|
|
14
|
+
- [Agent Creation / Edit Modal](#22-agent-creation--edit-modal)
|
|
15
|
+
- [Agent Dashboard](#23-agent-dashboard)
|
|
16
|
+
3. [Chat](#3-chat)
|
|
17
|
+
4. [Library](#4-library)
|
|
18
|
+
5. [Lab](#5-lab)
|
|
19
|
+
6. [Marketplace](#6-marketplace)
|
|
20
|
+
7. [Admin](#7-admin)
|
|
21
|
+
- [Channels](#71-channels)
|
|
22
|
+
- [Activity](#72-activity)
|
|
23
|
+
- [Settings](#73-settings)
|
|
24
|
+
- [Docs](#74-docs)
|
|
25
|
+
8. [Monitor](#8-monitor)
|
|
26
|
+
- [Setup Checklist](#81-setup-checklist)
|
|
27
|
+
- [Dashboard](#82-dashboard)
|
|
28
|
+
9. [Projects](#9-projects)
|
|
29
|
+
10. [AI Gym](#10-ai-gym)
|
|
30
|
+
- [Onboarding](#101-onboarding-first-visit)
|
|
31
|
+
- [Main Gym View](#102-main-gym-view)
|
|
32
|
+
- [Dimensions](#103-ai-strength-dimensions)
|
|
33
|
+
- [Programs](#104-programs)
|
|
34
|
+
- [Activity Digest](#105-activity-digest)
|
|
35
|
+
- [Trainer Souls](#106-trainer-souls)
|
|
36
|
+
- [API & MCP Reference](#107-api--mcp-reference)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
# 1. Home
|
|
41
|
+
|
|
42
|
+
**URL:** `/` or `/home`
|
|
43
|
+
**Purpose:** The primary interface — a conversational AI hub. Users talk to their personal AI, which routes to the right agent or handles platform operations directly.
|
|
44
|
+
|
|
45
|
+
## 1.1 Landing View
|
|
46
|
+
|
|
47
|
+
The initial state before any message is sent.
|
|
48
|
+
|
|
49
|
+
### Chat Input (Landing)
|
|
50
|
+
- **Large textarea** — type a message to any agent
|
|
51
|
+
- **Send button (→)** — sends the first message and transitions to chat view
|
|
52
|
+
- If message contains `@alias`, routes to that agent
|
|
53
|
+
- If no mention, routes to the default/hub agent
|
|
54
|
+
|
|
55
|
+
### Agent Tiles
|
|
56
|
+
- **Org filter dropdown** — filter visible tiles by organization
|
|
57
|
+
- Options: "Recent" (default), plus all organization names
|
|
58
|
+
- **Agent tile grid** — clickable tiles showing each agent
|
|
59
|
+
- Each tile shows: avatar (2-letter initials), name, last message time (in Recent view)
|
|
60
|
+
- **Click a tile** → inserts `@alias` into the chat input
|
|
61
|
+
|
|
62
|
+
| Action | API | MCP |
|
|
63
|
+
|--------|-----|-----|
|
|
64
|
+
| List agents for tiles | `GET /api/agents` | `list_agents` |
|
|
65
|
+
| | **Params:** `?org=orgName` (optional) | **Params:** `org` (optional string) |
|
|
66
|
+
|
|
67
|
+
## 1.2 Chat View
|
|
68
|
+
|
|
69
|
+
Active after the first message is sent.
|
|
70
|
+
|
|
71
|
+
### Agent Sidebar (Left Panel)
|
|
72
|
+
- **Org filter dropdown** — filter sidebar agents by organization (top of sidebar)
|
|
73
|
+
- **Recent section** — agents sorted by most recent interaction first
|
|
74
|
+
- Each entry: avatar, agent name, alias, time since last activity
|
|
75
|
+
- **Click an agent** → inserts `@alias` into chat input
|
|
76
|
+
- **All Agents section** — collapsible section (click header to expand/collapse)
|
|
77
|
+
- Shows all agents not in the Recent section, with count badge
|
|
78
|
+
- Arrow indicator (▶/▼) shows collapsed/expanded state
|
|
79
|
+
- **◀ Collapse button** — collapses the entire sidebar to zero width, giving chat full width
|
|
80
|
+
- Click again (or the Agents toggle) to re-expand
|
|
81
|
+
|
|
82
|
+
### Chat Header (Per-Agent)
|
|
83
|
+
When chatting with an agent, the header shows:
|
|
84
|
+
- **Agent avatar and name**
|
|
85
|
+
- **Account override dropdown** — select which Claude account to use for this agent
|
|
86
|
+
- Options: "default" (agent's configured account), plus all other configured accounts
|
|
87
|
+
- In-memory only — resets on page reload
|
|
88
|
+
- The selected account is passed as `accountOverride` on every send/stream call
|
|
89
|
+
- **▨ Canvas button** — toggles the canvas/preview panel (right side)
|
|
90
|
+
- When active, shows files created or modified by the agent
|
|
91
|
+
- Canvas has: download button (downloads file), close button, file content display
|
|
92
|
+
- **↺ Reset Session button** — (only for persistent-session agents) compacts and resets the conversation
|
|
93
|
+
- Shows confirmation dialog: "Reset session? This clears conversation history. Use /opcompact first to save important context."
|
|
94
|
+
- On confirm, calls reset session API
|
|
95
|
+
|
|
96
|
+
| Action | API | MCP |
|
|
97
|
+
|--------|-----|-----|
|
|
98
|
+
| Reset session | `POST /api/agents/:agentId/sessions/reset` | `reset_session` |
|
|
99
|
+
| | **Body:** `{ senderId? }` | **Params:** `agentId`, `senderId?` |
|
|
100
|
+
| Account override | Passed as `accountOverride` param on `POST /api/chat/:agentId` and `/stream` | `send_message` / `start_stream` — `accountOverride` param |
|
|
101
|
+
| List accounts (populates dropdown) | `GET /api/config/accounts` | `list_accounts` |
|
|
102
|
+
| | | *(no params)* |
|
|
103
|
+
| Download canvas file | `GET /api/agents/:agentId/download?path=filePath` | `download_agent_file` |
|
|
104
|
+
| | **Query:** `path` (absolute file path) | **Params:** `agentId`, `path` |
|
|
105
|
+
|
|
106
|
+
### Chat Messages Area
|
|
107
|
+
- **User messages** — right-aligned, light blue background
|
|
108
|
+
- **Agent messages** — left-aligned, purple background, markdown-rendered
|
|
109
|
+
- Shows `[via:agentId]` tag indicating which agent responded
|
|
110
|
+
- File references render with **Download** and **▨ Preview** buttons
|
|
111
|
+
- **Thinking indicator** — animated dots while agent is processing
|
|
112
|
+
- **Tool usage cards** — show which tools the agent is actively using
|
|
113
|
+
|
|
114
|
+
### Chat Input
|
|
115
|
+
- **Textarea** — multi-line input, auto-resizes
|
|
116
|
+
- Placeholder: "Type @ to mention an agent..."
|
|
117
|
+
- `Enter` sends, `Shift+Enter` for newline
|
|
118
|
+
- **@mention autocomplete** — appears while typing `@`
|
|
119
|
+
- Shows matching agents with avatar, alias, name
|
|
120
|
+
- Arrow keys to navigate, Tab/Enter to select, Escape to dismiss
|
|
121
|
+
- **Send button (→)** — sends message to the mentioned (or default) agent
|
|
122
|
+
- **File attachment button (📎)** — opens file picker to upload files to the agent
|
|
123
|
+
- **Voice record button (🎤)** — start/stop voice recording for transcription
|
|
124
|
+
- **Voice mode button (🔇/🔊)** — toggles reading agent responses aloud via text-to-speech
|
|
125
|
+
|
|
126
|
+
### Streaming Controls (During Active Response)
|
|
127
|
+
While an agent is streaming a response:
|
|
128
|
+
- **Stop button (■)** — red square button, appears next to Send. Interrupts the agent's response immediately.
|
|
129
|
+
- Keyboard shortcut: `Escape`
|
|
130
|
+
- **Send button becomes "Queue"** — the send button changes to amber "Queue" mode
|
|
131
|
+
- Type a follow-up message and click Queue (or press Enter) to queue it
|
|
132
|
+
- Queued messages auto-send when the current response completes
|
|
133
|
+
- **Message Queue** — appears below the input when messages are queued
|
|
134
|
+
- Each queued message shows: position number, message text preview
|
|
135
|
+
- **Edit button (✎)** — edit the queued message text
|
|
136
|
+
- **Cancel button (✕)** — remove the queued message
|
|
137
|
+
|
|
138
|
+
| Action | API | MCP |
|
|
139
|
+
|--------|-----|-----|
|
|
140
|
+
| Stop / interrupt streaming | `POST /api/chat/jobs/:jobId/stop` | `stop_chat_job` |
|
|
141
|
+
| | | **Params:** `jobId` |
|
|
142
|
+
| Queue sends via normal chat | `POST /api/chat/:agentId` or `/stream` | `send_message` / `start_stream` |
|
|
143
|
+
| | Queue is client-side; each queued message sends normally when prior response completes | |
|
|
144
|
+
|
|
145
|
+
| Action | API | MCP |
|
|
146
|
+
|--------|-----|-----|
|
|
147
|
+
| Send message (sync) | `POST /api/chat/:agentId` | `send_message` |
|
|
148
|
+
| | **Body:** `{ text, accountOverride? }` | **Params:** `agentId`, `text`, `accountOverride?` |
|
|
149
|
+
| Start streaming chat | `POST /api/chat/:agentId/stream` | `start_stream` |
|
|
150
|
+
| | **Body:** `{ text, accountOverride? }` | **Params:** `agentId`, `text`, `accountOverride?` |
|
|
151
|
+
| Poll stream output | `GET /api/chat/jobs/:jobId/raw?after=N` | `get_chat_job_raw` |
|
|
152
|
+
| | **Query:** `after` (line offset) | **Params:** `jobId`, `after?` |
|
|
153
|
+
| Stop streaming job | `POST /api/chat/jobs/:jobId/stop` | `stop_chat_job` |
|
|
154
|
+
| | | **Params:** `jobId` |
|
|
155
|
+
| Delegate to agent | `POST /api/delegate` | `delegate_message` |
|
|
156
|
+
| | **Body:** `{ agentId, text }` | **Params:** `agentId`, `text` |
|
|
157
|
+
| Upload file | `POST /api/upload/:agentId/json` | `upload_file` |
|
|
158
|
+
| | **Body:** `{ fileName, base64Content, mode? }` | **Params:** `agentId`, `fileName`, `base64Content`, `mode?` |
|
|
159
|
+
|
|
160
|
+
### Raw Logs Panel (Bottom Drawer)
|
|
161
|
+
- **Toggle button (⌘)** — shows/hides raw Claude output
|
|
162
|
+
- **Clear button** — clears all log entries
|
|
163
|
+
- **Close button** — hides the panel
|
|
164
|
+
- **Log content area** — live streaming output from the agent's Claude process
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
# 2. Agents (Org)
|
|
169
|
+
|
|
170
|
+
**URL:** `/org`
|
|
171
|
+
**Purpose:** Manage all agents — create, configure, organize, and monitor.
|
|
172
|
+
|
|
173
|
+
## 2.1 Agent List
|
|
174
|
+
|
|
175
|
+
### Sub-Navigation Tabs
|
|
176
|
+
- **Teams** (`/org`) — agents view (default)
|
|
177
|
+
- **Tasks** (`/tasks`) — cross-agent task panel
|
|
178
|
+
- **Automations** (`/automations`) — goals and cron jobs across all agents
|
|
179
|
+
|
|
180
|
+
### View Controls
|
|
181
|
+
|
|
182
|
+
| Control | Description |
|
|
183
|
+
|---------|-------------|
|
|
184
|
+
| **Grid view (◊)** | 300px agent cards in a wrapping grid |
|
|
185
|
+
| **Compact view (▬▬)** | Condensed cards with 3-dot menu |
|
|
186
|
+
| **List view (≡)** | Sortable table with columns: Name, Alias, Org, Dept, Title, Class, Status, Last Active, Msgs |
|
|
187
|
+
| **Search input** | Filter agents by name, alias, or description |
|
|
188
|
+
| **Org select dropdown** | Filter by organization |
|
|
189
|
+
| **Class filter dropdown** | Checkboxes: Standard, Builder, Platform |
|
|
190
|
+
| **Hide names button (👁 Hide)** | Blurs all agent names globally for presentations |
|
|
191
|
+
| **Per-org hide button (👁)** | Each organization section has its own hide/show toggle to blur names within that org only |
|
|
192
|
+
| **Select mode button (☑ Select)** | Enables multi-select checkboxes on each agent |
|
|
193
|
+
| **+ New Agent button** | Opens agent creation modal |
|
|
194
|
+
|
|
195
|
+
### Agent Cards (All Views)
|
|
196
|
+
Each agent shows:
|
|
197
|
+
- **Avatar** — 2-letter initials in colored circle
|
|
198
|
+
- **Heartbeat indicator (❤)** — pulsing animation if heartbeat is active
|
|
199
|
+
- **Automation indicator (⟳)** — spinning icon if goals/crons are active
|
|
200
|
+
- **Name** — agent display name
|
|
201
|
+
- **Subtitle** — org, department, title
|
|
202
|
+
- **Status dot** — green for active
|
|
203
|
+
- **Hover actions:**
|
|
204
|
+
- **Chat button** → opens `/ui#agentId`
|
|
205
|
+
- **Dashboard button** → opens `/agent-dashboard?id=agentId`
|
|
206
|
+
- **Config button** → opens edit modal
|
|
207
|
+
|
|
208
|
+
### List View (Table)
|
|
209
|
+
- **Sortable columns** — click any header to sort ascending/descending
|
|
210
|
+
- **Row click** → opens config modal for that agent
|
|
211
|
+
|
|
212
|
+
### Multi-Select Mode
|
|
213
|
+
When activated via Select button:
|
|
214
|
+
- **Checkboxes** appear on each agent
|
|
215
|
+
- **Select All / Deselect All** buttons
|
|
216
|
+
- **Delete Selected** — bulk delete with confirmation
|
|
217
|
+
- **Cancel** — exits multi-select mode
|
|
218
|
+
|
|
219
|
+
| Action | API | MCP |
|
|
220
|
+
|--------|-----|-----|
|
|
221
|
+
| List all agents | `GET /api/agents` | `list_agents` |
|
|
222
|
+
| | **Query:** `?org=orgName` | **Params:** `org?` (string) |
|
|
223
|
+
| Get agent details | `GET /api/agents/:id` | `get_agent` |
|
|
224
|
+
| | | **Params:** `agentId` |
|
|
225
|
+
| Delete agent | `DELETE /api/agents/:id` | `delete_agent` |
|
|
226
|
+
| | **Query:** `?confirmAlias=alias` | **Params:** `agentId`, `confirmAlias` |
|
|
227
|
+
| Get agent registry | `GET /api/agent-registry` | `get_agent_registry` |
|
|
228
|
+
| | *(no params)* | *(no params)* |
|
|
229
|
+
|
|
230
|
+
## 2.2 Agent Creation / Edit Modal
|
|
231
|
+
|
|
232
|
+
Opened by **+ New Agent** button or clicking an agent's Config button. Has 6 standard tabs, plus 4 additional tabs when editing a Gym-class agent (10 total).
|
|
233
|
+
|
|
234
|
+
### Tab 1: Overview
|
|
235
|
+
|
|
236
|
+
| Field | Description |
|
|
237
|
+
|-------|-------------|
|
|
238
|
+
| **Agent ID** | Lowercase, hyphens only (e.g., `my-agent`). Auto-generates alias on input. |
|
|
239
|
+
| **Mention Alias** | @-prefixed (e.g., `@myagent`). Auto-generated from ID but editable. |
|
|
240
|
+
| **Name** | Display name shown in UI and chat. |
|
|
241
|
+
| **Description** | Short description of the agent's purpose. |
|
|
242
|
+
| **Instructions (CLAUDE.md)** | System prompt written to the agent's CLAUDE.md file. Multi-line textarea. |
|
|
243
|
+
| **Agent Class** | Dropdown: Standard, Builder, Platform, Gym. |
|
|
244
|
+
| **Executor** | Dropdown: Platform Default, Claude, Ollama models, or cloud providers — OpenAI, Grok (xAI), Gemini, Groq, Together, Mistral (when multi-model is enabled). Format: `provider:model` (e.g., `openai:gpt-4o`, `gemini:gemini-2.5-flash`, `grok:grok-3`). Overrides the service-level default executor for this agent. |
|
|
245
|
+
|
|
246
|
+
#### Organization Entries
|
|
247
|
+
Each agent can belong to multiple organizations. Per entry:
|
|
248
|
+
- **Organization** — org name
|
|
249
|
+
- **Function/Department** — department within the org
|
|
250
|
+
- **Title** — agent's role title
|
|
251
|
+
- **Reports To** — optional, who this agent reports to
|
|
252
|
+
- **Remove button (×)** — removes this org entry
|
|
253
|
+
- **+ Add Org Entry** — adds another org association
|
|
254
|
+
|
|
255
|
+
#### Heartbeat Section (Collapsible)
|
|
256
|
+
- **Enabled toggle** — pill switch to enable/disable heartbeat
|
|
257
|
+
- **Instructions** — what the agent should check during heartbeat
|
|
258
|
+
- **Frequency dropdown** — Manual, Daily, Weekdays, Weekly, Every N mins
|
|
259
|
+
- **Day select** — for weekly (Mon-Sun)
|
|
260
|
+
- **Time inputs** — hour (0-23), minute (0-59), AM/PM
|
|
261
|
+
- **Cron preview** — read-only display of the generated cron expression
|
|
262
|
+
|
|
263
|
+
#### Wiki Learning Section (Collapsible)
|
|
264
|
+
- **Wiki Learning toggle** — enable/disable Wiki Learning (`wiki` field)
|
|
265
|
+
- When enabled, the agent captures facts and corrections from conversations into `learned.md`
|
|
266
|
+
- **Wiki Sync toggle** — enable/disable scheduled Wiki Sync (`wikiSync.enabled`)
|
|
267
|
+
- Automatically merges `learned.md` into `context.md` on a schedule
|
|
268
|
+
- **Schedule** — cron expression for sync frequency (`wikiSync.schedule`, default: `0 0 * * *`)
|
|
269
|
+
|
|
270
|
+
| Action | API | MCP |
|
|
271
|
+
|--------|-----|-----|
|
|
272
|
+
| Create agent | `POST /api/agents` | `create_agent` |
|
|
273
|
+
| | **Body:** `{ agentId, alias, name, description, instructions, agentClass, executor, orgs[], heartbeat{}, wiki, wikiSync{}, ... }` | **Params:** `agentId`, `alias`, `name`, `description`, `instructions`, `agentClass`, `executor`, `orgs`, `heartbeat`, `workspace`, `allowedTools`, `mcps`, `routes`, `persistent`, `streaming`, `advancedMemory`, `autonomousCapable`, `autoCommit`, `timeout`, `claudeAccount`, `wiki`, `wikiSync` |
|
|
274
|
+
| Update agent | `PUT /api/agents/:id` | `update_agent` |
|
|
275
|
+
| | **Body:** same fields as create | **Params:** `agentId`, plus any fields to update |
|
|
276
|
+
| Get agent instructions | `GET /api/agents/:id/instructions` | `get_agent_instructions` |
|
|
277
|
+
| | | **Params:** `agentId` |
|
|
278
|
+
|
|
279
|
+
### Tab 2: Skills
|
|
280
|
+
|
|
281
|
+
Controls which tools the agent can use.
|
|
282
|
+
|
|
283
|
+
- **Default tool pills** (toggle on/off):
|
|
284
|
+
- Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch
|
|
285
|
+
- Each is a clickable pill — checked (✓) = enabled
|
|
286
|
+
- **Custom skills** — additional skills from library shown as toggle pills
|
|
287
|
+
- **+ Add New Skill button** — opens skill creation flow
|
|
288
|
+
|
|
289
|
+
| Action | API | MCP |
|
|
290
|
+
|--------|-----|-----|
|
|
291
|
+
| Get agent skills | `GET /api/agents/:agentId/skills` | `get_agent_skills` |
|
|
292
|
+
| | | **Params:** `agentId` |
|
|
293
|
+
| Get org skills | `GET /api/skills/org/:orgName` | `get_org_skills` |
|
|
294
|
+
| | | **Params:** `orgName` |
|
|
295
|
+
| Create skill | `POST /api/skills/create` | `create_skill` |
|
|
296
|
+
| | **Body:** `{ id, name, description, content, scope, orgName?, agentId? }` | **Params:** `id`, `name`, `description`, `content`, `scope`, `orgName?`, `agentId?` |
|
|
297
|
+
| Assign skill to agent | `POST /api/marketplace/assign` | `assign_to_agent` |
|
|
298
|
+
| | **Body:** `{ agentId, itemId, type: "skill" }` | **Params:** `agentId`, `itemId`, `type` |
|
|
299
|
+
|
|
300
|
+
### Tab 3: MCPs
|
|
301
|
+
|
|
302
|
+
Manage MCP server connections for the agent.
|
|
303
|
+
|
|
304
|
+
- **MCP toggle pills** — enable/disable each MCP from the registry
|
|
305
|
+
- **MCP accordion sections** (per MCP, expandable):
|
|
306
|
+
- **API Key cards** — key name, status badge (OK/Missing), secret input, save/disconnect buttons
|
|
307
|
+
- **OAuth connections** — account name, status, remove button
|
|
308
|
+
- **+ Add Account button** — opens MCP auth modal
|
|
309
|
+
- **Unconfigured MCPs section** — MCPs not yet connected
|
|
310
|
+
|
|
311
|
+
#### MCP Auth Modal
|
|
312
|
+
- **Auth form** — dynamic fields based on MCP requirements (API key input, OAuth link, etc.)
|
|
313
|
+
- **Cancel / Save buttons**
|
|
314
|
+
|
|
315
|
+
#### Connecting Google OAuth MCPs (Sheets, Gmail, Calendar, Drive, Docs)
|
|
316
|
+
|
|
317
|
+
Several MCPs use Google OAuth instead of an API key. These include:
|
|
318
|
+
|
|
319
|
+
| MCP | What it enables |
|
|
320
|
+
|-----|----------------|
|
|
321
|
+
| `googlesheets` | Read, write, and manage Google Sheets spreadsheets |
|
|
322
|
+
| `gmail` | Read, search, send Gmail messages |
|
|
323
|
+
| `googlecalendar` | List, create, and manage calendar events |
|
|
324
|
+
| `googledrive` | Browse, read, and manage Drive files |
|
|
325
|
+
| `googledocs` | Read and edit Google Docs documents |
|
|
326
|
+
|
|
327
|
+
**To connect a Google OAuth MCP to an agent:**
|
|
328
|
+
1. Go to **Org page** → click the agent → **MCPs tab**
|
|
329
|
+
2. Find the MCP (e.g. Google Sheets) in the accordion and click **+ Add Account**
|
|
330
|
+
3. In the auth modal, click **Authorize** — this opens a Google sign-in flow
|
|
331
|
+
4. Sign in with the Google account you want to connect
|
|
332
|
+
5. The refresh token is stored automatically under a connection name like `googlesheets-agenticledger`
|
|
333
|
+
|
|
334
|
+
**Multiple accounts:** You can add multiple Google accounts to the same MCP (e.g. `agenticledger`, `bst`, `financeiscooked`) by repeating the flow with a different account. Each becomes a separate named connection.
|
|
335
|
+
|
|
336
|
+
**Via MCP tool:** Use `create_mcp_connection` with `baseMcp`, `label`, `envVar` (e.g. `GOOGLESHEETS_AGENTICLEDGER`), and `value` (refresh token). The token must be issued by the agenticledger.ai OAuth client — tokens from other Google Cloud projects will fail with `invalid_grant`.
|
|
337
|
+
|
|
338
|
+
| Action | API | MCP |
|
|
339
|
+
|--------|-----|-----|
|
|
340
|
+
| List registered MCPs | `GET /api/mcps` | `list_mcps` |
|
|
341
|
+
| | | *(no params)* |
|
|
342
|
+
| Get MCP catalog | `GET /api/mcp-catalog` | `get_mcp_catalog` |
|
|
343
|
+
| | | *(no params)* |
|
|
344
|
+
| List MCP keys for agent | `GET /api/agents/:id/mcp-keys` | `list_mcp_keys` |
|
|
345
|
+
| | | **Params:** `agentId` |
|
|
346
|
+
| Save MCP key | `POST /api/agents/:id/mcp-keys` | `save_mcp_key` |
|
|
347
|
+
| | **Body:** `{ mcpName, envVar, value }` | **Params:** `agentId`, `mcpName`, `envVar`, `value` |
|
|
348
|
+
| Delete MCP key | `DELETE /api/agents/:id/mcp-keys/:mcpName` | `delete_mcp_key` |
|
|
349
|
+
| | | **Params:** `agentId`, `mcpName` |
|
|
350
|
+
| List MCP connections | `GET /api/agents/:id/mcp-connections` | `list_mcp_connections` |
|
|
351
|
+
| | | **Params:** `agentId` |
|
|
352
|
+
| Create MCP connection | `POST /api/agents/:id/mcp-connections` | `create_mcp_connection` |
|
|
353
|
+
| | **Body:** `{ mcpName, instanceName, config }` | **Params:** `agentId`, `body` (object with mcpName, instanceName, config) |
|
|
354
|
+
| Delete MCP connection | `DELETE /api/agents/:id/mcp-connections/:instanceName` | `delete_mcp_connection` |
|
|
355
|
+
| | | **Params:** `agentId`, `instanceName` |
|
|
356
|
+
|
|
357
|
+
### Tab 4: Schedules (Cron Jobs)
|
|
358
|
+
|
|
359
|
+
Trigger automated messages on a schedule.
|
|
360
|
+
|
|
361
|
+
- **+ Add Schedule button** — adds a new schedule entry
|
|
362
|
+
- **Per schedule entry:**
|
|
363
|
+
- **Frequency dropdown** — Manual, Daily, Weekly, Every N minutes
|
|
364
|
+
- **Day checkboxes** (if weekly) — Mon through Sun
|
|
365
|
+
- **Time inputs** — hours, minutes
|
|
366
|
+
- **Message textarea** — the message to send when triggered
|
|
367
|
+
- **Channel select** — which channel to send to
|
|
368
|
+
- **Chat ID input** — target chat/conversation
|
|
369
|
+
- **Cron preview** — human-readable expression
|
|
370
|
+
- **Trigger Now button** — manually fires the schedule immediately
|
|
371
|
+
- **Pause/Resume button** — toggles cron on/off
|
|
372
|
+
- **Remove button (×)** — deletes the schedule
|
|
373
|
+
|
|
374
|
+
| Action | API | MCP |
|
|
375
|
+
|--------|-----|-----|
|
|
376
|
+
| Create cron | `POST /api/agents/:id/cron` | `create_cron` |
|
|
377
|
+
| | **Body:** `{ schedule, message, channel?, chatId?, enabled? }` | **Params:** `agentId`, `body` (object with schedule, message, channel, chatId, enabled) |
|
|
378
|
+
| Toggle cron on/off | `POST /api/agents/:id/cron/:index/toggle` | `toggle_cron` |
|
|
379
|
+
| | | **Params:** `agentId`, `index` (number) |
|
|
380
|
+
| Trigger cron manually | `POST /api/agents/:id/cron/:index/trigger` | `trigger_cron` |
|
|
381
|
+
| | | **Params:** `agentId`, `index` (number) |
|
|
382
|
+
| Get cron run history | `GET /api/agents/:id/cron/:index/history` | `get_cron_history` |
|
|
383
|
+
| | | **Params:** `agentId`, `index` (number) |
|
|
384
|
+
| Delete cron | `DELETE /api/agents/:id/cron/:index` | `delete_cron` |
|
|
385
|
+
| | | **Params:** `agentId`, `index` (number) |
|
|
386
|
+
|
|
387
|
+
### Tab 5: Goals
|
|
388
|
+
|
|
389
|
+
Autonomous task tracking with reporting.
|
|
390
|
+
|
|
391
|
+
- **+ Add Goal button** — adds a new goal entry
|
|
392
|
+
- **Per goal entry:**
|
|
393
|
+
- **Goal ID** — unique identifier (auto-generated from title if blank)
|
|
394
|
+
- **Goal Name/Title** — what is this goal
|
|
395
|
+
- **Description textarea** — detailed description
|
|
396
|
+
- **Success Metric textarea** — how to measure completion
|
|
397
|
+
- **Reporting channels** — where to send reports
|
|
398
|
+
- Per channel: channel dropdown, chat ID input, remove (×)
|
|
399
|
+
- **+ Add Channel** — adds another report destination
|
|
400
|
+
- **Enabled toggle** — pill switch
|
|
401
|
+
- **Trigger mode dropdown** — Heartbeat (default) or On-demand
|
|
402
|
+
- **Heartbeat settings** (if Heartbeat mode) — frequency, days, time
|
|
403
|
+
- **Budget input** — max daily USD spend
|
|
404
|
+
- **Trigger Now button** — manually executes goal
|
|
405
|
+
- **Pause/Resume button** — toggles goal on/off
|
|
406
|
+
- **Remove button (×)** — deletes the goal
|
|
407
|
+
|
|
408
|
+
| Action | API | MCP |
|
|
409
|
+
|--------|-----|-----|
|
|
410
|
+
| Create goal | `POST /api/agents/:id/goals` | `create_goal` |
|
|
411
|
+
| | **Body:** `{ goalId, name, description, successMetric, reportTargets[], triggerMode, schedule?, budget?, enabled? }` | **Params:** `agentId`, `body` (object) |
|
|
412
|
+
| Toggle goal on/off | `POST /api/agents/:id/goals/:goalId/toggle` | `toggle_goal` |
|
|
413
|
+
| | | **Params:** `agentId`, `goalId` |
|
|
414
|
+
| Trigger goal manually | `POST /api/agents/:id/goals/:goalId/trigger` | `trigger_goal` |
|
|
415
|
+
| | | **Params:** `agentId`, `goalId` |
|
|
416
|
+
| Get goal run history | `GET /api/agents/:id/goals/:goalId/history` | `get_goal_history` |
|
|
417
|
+
| | | **Params:** `agentId`, `goalId` |
|
|
418
|
+
| Delete goal | `DELETE /api/agents/:id/goals/:goalId` | `delete_goal` |
|
|
419
|
+
| | | **Params:** `agentId`, `goalId` |
|
|
420
|
+
| List all automations | `GET /api/automations` | `list_automations` |
|
|
421
|
+
| | *(no params)* | *(no params)* |
|
|
422
|
+
|
|
423
|
+
### Tab 6: Config
|
|
424
|
+
|
|
425
|
+
Advanced agent configuration.
|
|
426
|
+
|
|
427
|
+
#### Behavior Toggles (Pill Switches)
|
|
428
|
+
| Toggle | Description |
|
|
429
|
+
|--------|-------------|
|
|
430
|
+
| **Persistent Session** | Keep conversation context between messages (default: on) |
|
|
431
|
+
| **Streaming** | Stream responses in real-time (default: off) |
|
|
432
|
+
| **Advanced Memory** | Enable long-term semantic recall with daily journals + vector search (default: on) |
|
|
433
|
+
| **Autonomous Capable** | Allow agent to act on goals autonomously (default: on) |
|
|
434
|
+
| **Auto Commit** | Auto-commit code changes (default: off) |
|
|
435
|
+
|
|
436
|
+
#### Other Fields
|
|
437
|
+
- **Workspace** — working directory for the agent (default: `~`)
|
|
438
|
+
- **Agent Home** — computed path (read-only)
|
|
439
|
+
- **Timeout** — max execution time in seconds (default: 14400)
|
|
440
|
+
- **Claude Account** — which Claude account to use (dropdown of configured accounts)
|
|
441
|
+
|
|
442
|
+
#### Routes
|
|
443
|
+
Which channels can invoke this agent.
|
|
444
|
+
- Per route: channel dropdown, chat/channel ID, require mention checkbox, remove (×)
|
|
445
|
+
- **+ Add Route** — adds a new channel route
|
|
446
|
+
|
|
447
|
+
### Gym-Specific Tabs (Agent Class = Gym Only)
|
|
448
|
+
|
|
449
|
+
When editing an agent with **Agent Class: Gym**, four additional tabs appear after Config. These tabs are hidden for all other agent classes.
|
|
450
|
+
|
|
451
|
+
#### Trainer Tab
|
|
452
|
+
|
|
453
|
+
Switch the active coaching personality. Changes how the coach communicates during training sessions without affecting progress or profile data.
|
|
454
|
+
|
|
455
|
+
| Element | Description |
|
|
456
|
+
|---------|-------------|
|
|
457
|
+
| **Trainer grid** | 5 cards in a responsive grid, each showing avatar (initials), name, coaching style |
|
|
458
|
+
| **Active indicator** | Selected trainer has a colored border, tinted background, and "Active" badge |
|
|
459
|
+
| **Click to switch** | Clicking a card immediately updates the learner profile via `PUT /api/gym/learner-profile` with `{ selectedTrainer }` |
|
|
460
|
+
|
|
461
|
+
Trainers: Alex (Collaborative, cyan), Jordan (Direct, orange), Morgan (Thoughtful, purple), Riley (Challenging, red), Sam (Patient, green).
|
|
462
|
+
|
|
463
|
+
#### Learner Tab
|
|
464
|
+
|
|
465
|
+
View and edit the learner profile built during onboarding. The coach updates this profile as you train.
|
|
466
|
+
|
|
467
|
+
| Field | Description |
|
|
468
|
+
|-------|-------------|
|
|
469
|
+
| **Identity** | JSON or text — professional background, role, experience level |
|
|
470
|
+
| **Goals** | Newline-separated list of learning goals |
|
|
471
|
+
| **Current Streak** | Read-only counter of consecutive active days |
|
|
472
|
+
| **Longest Streak** | Read-only all-time streak record |
|
|
473
|
+
| **Strengths** | Pill badges of identified strengths (read-only, set by coach) |
|
|
474
|
+
| **Struggles** | Pill badges of identified struggles (read-only, set by coach) |
|
|
475
|
+
| **Save Profile** | Pushes identity + goals changes via `PUT /api/gym/learner-profile` |
|
|
476
|
+
|
|
477
|
+
#### Dimensions Tab
|
|
478
|
+
|
|
479
|
+
Current scores across the 5 AI skill dimensions with trend and history.
|
|
480
|
+
|
|
481
|
+
| Element | Description |
|
|
482
|
+
|---------|-------------|
|
|
483
|
+
| **Dimension bars** | 5 color-coded progress bars (0–10 scale) with score and trend arrow |
|
|
484
|
+
| **Trend indicators** | Up arrow (improving, green), down arrow (declining, red), dot (stable, gray) |
|
|
485
|
+
| **History table** | Last 5 dimension snapshots showing date and scores per dimension |
|
|
486
|
+
|
|
487
|
+
Data sources: `GET /api/gym/learner-profile` (current scores), `GET /api/gym/dimensions/history` (snapshots).
|
|
488
|
+
|
|
489
|
+
#### Programs Tab
|
|
490
|
+
|
|
491
|
+
All training programs with enrollment status and completion progress.
|
|
492
|
+
|
|
493
|
+
| Element | Description |
|
|
494
|
+
|---------|-------------|
|
|
495
|
+
| **Program cards** | Title, difficulty badge (color-coded), estimated time, target dimensions |
|
|
496
|
+
| **Progress bar** | Shown for started programs — percentage complete with step count |
|
|
497
|
+
| **Current module** | Shows which module the learner is working on |
|
|
498
|
+
| **Description** | Truncated program description (120 chars) |
|
|
499
|
+
|
|
500
|
+
Data sources: `GET /api/gym/programs` (program list), `GET /api/gym/progress` (completion state).
|
|
501
|
+
|
|
502
|
+
### Delete Agent
|
|
503
|
+
|
|
504
|
+
- **Delete Agent button** (red, bottom-left of modal) — only visible when editing
|
|
505
|
+
- **Confirmation overlay:**
|
|
506
|
+
- Warning: "This action cannot be undone"
|
|
507
|
+
- Shows agent alias
|
|
508
|
+
- **Confirmation input** — must type the agent's alias exactly
|
|
509
|
+
- **Cancel button** — closes without deleting
|
|
510
|
+
- **Delete Forever button** — disabled until alias matches, then executes delete
|
|
511
|
+
|
|
512
|
+
| Action | API | MCP |
|
|
513
|
+
|--------|-----|-----|
|
|
514
|
+
| Delete agent | `DELETE /api/agents/:id?confirmAlias=alias` | `delete_agent` |
|
|
515
|
+
| | **Query:** `confirmAlias` (agent alias) | **Params:** `agentId`, `confirmAlias` |
|
|
516
|
+
|
|
517
|
+
### Save Agent
|
|
518
|
+
|
|
519
|
+
- **Save button** — "Create Agent" (new) or "Update Agent" (editing)
|
|
520
|
+
- Collects all fields from all tabs (6 standard + 4 gym-specific if applicable)
|
|
521
|
+
- Validates required fields (agentId, alias, name)
|
|
522
|
+
- Creates agent directory, writes CLAUDE.md, updates config.json
|
|
523
|
+
|
|
524
|
+
## 2.3 Agent Dashboard
|
|
525
|
+
|
|
526
|
+
**URL:** `/agent-dashboard?id=agentId`
|
|
527
|
+
**Purpose:** At-a-glance view of a single agent — tasks, activity, cost, heartbeat.
|
|
528
|
+
|
|
529
|
+
### Agent Header
|
|
530
|
+
- **Avatar** — 2-letter initials
|
|
531
|
+
- **Agent name** — large display
|
|
532
|
+
- **Status dot** — green for active
|
|
533
|
+
- **Alias** — @mention format
|
|
534
|
+
- **Description**
|
|
535
|
+
- **Action buttons:**
|
|
536
|
+
- **← Org** — back to `/org`
|
|
537
|
+
- **Chat** — opens `/ui#agentId`
|
|
538
|
+
- **♥ Heartbeat** — trigger manual heartbeat
|
|
539
|
+
- Shows "Running..." while executing, "Triggered!" on success
|
|
540
|
+
|
|
541
|
+
| Action | API | MCP |
|
|
542
|
+
|--------|-----|-----|
|
|
543
|
+
| Trigger heartbeat | `POST /api/agents/:id/heartbeat` | `trigger_heartbeat` |
|
|
544
|
+
| | **Body:** `{ triggeredBy? }` | **Params:** `agentId`, `triggeredBy?` |
|
|
545
|
+
|
|
546
|
+
### Tasks Section
|
|
547
|
+
- **Section title** with count badge
|
|
548
|
+
- **Per task card:**
|
|
549
|
+
- Status dot (color-coded by status)
|
|
550
|
+
- Task title
|
|
551
|
+
- Priority badge (High/Medium/Low with color)
|
|
552
|
+
- Status label, time ago, assigned by, source agent
|
|
553
|
+
- **Start button** — moves task to in_progress (if proposed/approved)
|
|
554
|
+
- **Done button** — marks task complete
|
|
555
|
+
- **Cross-agent tasks** — tasks from other agents shown separately
|
|
556
|
+
- **Empty state:** "No tasks assigned"
|
|
557
|
+
|
|
558
|
+
| Action | API | MCP |
|
|
559
|
+
|--------|-----|-----|
|
|
560
|
+
| List agent tasks | `GET /api/agents/:id/tasks` | `list_tasks` |
|
|
561
|
+
| | | **Params:** `agentId` |
|
|
562
|
+
| Create task | `POST /api/agents/:id/tasks` | `create_task` |
|
|
563
|
+
| | **Body:** `{ title, description?, priority?, status?, assignedBy?, project? }` | **Params:** `agentId`, `body` (object) |
|
|
564
|
+
| Update task (status change) | `PUT /api/agents/:id/tasks/:taskId` | `update_task` |
|
|
565
|
+
| | **Body:** `{ status?, title?, description?, priority? }` | **Params:** `agentId`, `taskId`, `body` (object) |
|
|
566
|
+
| Delete task | `DELETE /api/agents/:id/tasks/:taskId` | `delete_task` |
|
|
567
|
+
| | | **Params:** `agentId`, `taskId` |
|
|
568
|
+
| Get all tasks (cross-agent) | `GET /api/tasks/all` | `get_all_tasks` |
|
|
569
|
+
| | | *(no params)* |
|
|
570
|
+
| Get task stats | `GET /api/agents/:id/tasks/stats` | `get_task_stats` |
|
|
571
|
+
| | | **Params:** `agentId` |
|
|
572
|
+
| Create project | `POST /api/agents/:id/projects` | `create_project` |
|
|
573
|
+
| | **Body:** `{ name }` | **Params:** `agentId`, `name` |
|
|
574
|
+
|
|
575
|
+
### Recent Activity Section
|
|
576
|
+
- **Open Chat link** — links to `/ui#agentId`
|
|
577
|
+
- **Activity items** — recent messages with time, direction (IN/OUT), message preview (120 chars)
|
|
578
|
+
- **Empty state:** "No recent activity"
|
|
579
|
+
|
|
580
|
+
| Action | API | MCP |
|
|
581
|
+
|--------|-----|-----|
|
|
582
|
+
| Get activity feed | `GET /api/activity` | `get_activity` |
|
|
583
|
+
| | **Query:** `?limit=N` | **Params:** `limit?` (number) |
|
|
584
|
+
| Get agent logs | `GET /api/agents/:agentId/logs` | `get_agent_logs` |
|
|
585
|
+
| | **Query:** `?limit=N&offset=N&search=text` | **Params:** `agentId`, `limit?`, `offset?`, `search?` |
|
|
586
|
+
|
|
587
|
+
### Cost Section
|
|
588
|
+
- **3-column stat grid:**
|
|
589
|
+
- Total Cost ($X.XXXX)
|
|
590
|
+
- Messages (count)
|
|
591
|
+
- Average Cost per message ($X.XXXX)
|
|
592
|
+
- **Empty state:** "No cost data"
|
|
593
|
+
|
|
594
|
+
| Action | API | MCP |
|
|
595
|
+
|--------|-----|-----|
|
|
596
|
+
| Get agent cost | `GET /api/agents/:agentId/cost` | `get_agent_cost` |
|
|
597
|
+
| | | **Params:** `agentId` |
|
|
598
|
+
| Get all costs | `GET /api/cost/all` | `get_all_costs` |
|
|
599
|
+
| | | *(no params)* |
|
|
600
|
+
|
|
601
|
+
### Heartbeat History Section
|
|
602
|
+
- **Count badge** — number of heartbeats
|
|
603
|
+
- **Per heartbeat item** (up to 10 most recent):
|
|
604
|
+
- Status dot — green (success), red (error), amber (timeout)
|
|
605
|
+
- Time ago
|
|
606
|
+
- Duration (ms or s)
|
|
607
|
+
- Summary (first 100 chars)
|
|
608
|
+
- Trigger badge — "manual", "schedule", etc.
|
|
609
|
+
- **Empty state:** "No heartbeats yet. Trigger one above."
|
|
610
|
+
|
|
611
|
+
| Action | API | MCP |
|
|
612
|
+
|--------|-----|-----|
|
|
613
|
+
| Get heartbeat history | `GET /api/agents/:id/heartbeat-history` | `get_heartbeat_history` |
|
|
614
|
+
| | **Query:** `?limit=N` | **Params:** `agentId`, `limit?` |
|
|
615
|
+
|
|
616
|
+
### Wiki Learning
|
|
617
|
+
|
|
618
|
+
Wiki Learning lets agents automatically capture facts and corrections from conversations into a `learned.md` file. This knowledge accumulates over time and can be merged into the agent's main knowledge base (`context.md`).
|
|
619
|
+
|
|
620
|
+
**How it works:**
|
|
621
|
+
1. Enable "Wiki Learning" on any agent's config page
|
|
622
|
+
2. The agent will evaluate each conversation and save new facts to `learned.md` in its memory directory
|
|
623
|
+
3. You can manually ask the agent to "update context from learned" to merge verified facts into `context.md`
|
|
624
|
+
|
|
625
|
+
**Wiki Sync (scheduled):**
|
|
626
|
+
- Optionally enable Wiki Sync to automatically merge learned facts on a schedule
|
|
627
|
+
- Configure via the Schedule tab on the agent config page (same UI as Heartbeat)
|
|
628
|
+
- Default schedule: daily at midnight (`0 0 * * *`)
|
|
629
|
+
- The sync reviews `learned.md`, cross-checks against `context.md`, merges verified facts, and flags contradictions
|
|
630
|
+
|
|
631
|
+
| Action | API | MCP |
|
|
632
|
+
|--------|-----|-----|
|
|
633
|
+
| Trigger wiki sync | `POST /api/agents/:id/wiki-sync` | `trigger_wiki_sync` |
|
|
634
|
+
| | | **Params:** `agentId` |
|
|
635
|
+
| Get wiki sync history | `GET /api/agents/:id/wiki-sync-history` | `get_wiki_sync_history` |
|
|
636
|
+
| | **Query:** `?limit=N` | **Params:** `agentId`, `limit?` |
|
|
637
|
+
|
|
638
|
+
---
|
|
639
|
+
|
|
640
|
+
# 3. Chat
|
|
641
|
+
|
|
642
|
+
**URL:** `/ui` or `/ui#agentId`
|
|
643
|
+
**Purpose:** Full-screen chat interface with any agent.
|
|
644
|
+
|
|
645
|
+
The chat interface on `/ui` is functionally identical to the Home chat view (see [Section 1.2](#12-chat-view)) with these differences:
|
|
646
|
+
|
|
647
|
+
- **URL hash routing** — `/ui#agentId` opens directly to a specific agent
|
|
648
|
+
- **No landing view** — goes straight to chat
|
|
649
|
+
- **Agent drawer** — same sidebar with agent list
|
|
650
|
+
|
|
651
|
+
All chat actions, APIs, and MCP tools are identical to Home (see [Section 1.2](#12-chat-view)).
|
|
652
|
+
|
|
653
|
+
### Session Management
|
|
654
|
+
|
|
655
|
+
| Action | API | MCP |
|
|
656
|
+
|--------|-----|-----|
|
|
657
|
+
| List sessions (low-level) | `GET /api/agents/:agentId/sessions` | `list_sessions` |
|
|
658
|
+
| | | **Params:** `agentId` |
|
|
659
|
+
| Reset session | `POST /api/agents/:agentId/sessions/reset` | `reset_session` |
|
|
660
|
+
| | **Body:** `{ senderId? }` | **Params:** `agentId`, `senderId?` |
|
|
661
|
+
| Delete session | `DELETE /api/agents/:agentId/sessions/:senderId` | `delete_session` |
|
|
662
|
+
| | | **Params:** `agentId`, `senderId` |
|
|
663
|
+
|
|
664
|
+
### Named Session Tabs (server-side threads)
|
|
665
|
+
|
|
666
|
+
Each agent supports named, persistent session threads visible in the Web UI tab bar. Sessions survive browser resets and are stored in `agents/<agentId>/memory/session-tabs.json`. Conversation history is replayed from `conversation_log.jsonl` by `tabId`.
|
|
667
|
+
|
|
668
|
+
| Action | API | MCP |
|
|
669
|
+
|--------|-----|-----|
|
|
670
|
+
| Create/upsert tab | `POST /api/agents/:agentId/session-tabs` | `create_session_tab` |
|
|
671
|
+
| | **Body:** `{ tabId, label, targetAgentId? }` | **Params:** `agentId`, `tabId`, `label`; `targetAgentId` (optional) |
|
|
672
|
+
| List all session tabs | `GET /api/agents/:agentId/session-tabs` | `list_session_tabs` |
|
|
673
|
+
| | Returns tabs sorted newest-first with `lastMessageAt` + `lastPreview` | **Params:** `agentId` |
|
|
674
|
+
| Get conversation history | `GET /api/agents/:agentId/session-tabs/:tabId/history` | `get_session_tab_history` |
|
|
675
|
+
| | Returns `{ messages: [{role, text, time}] }` filtered by tabId | **Params:** `agentId`, `tabId` |
|
|
676
|
+
| Rename tab | `PUT /api/agents/:agentId/session-tabs/:tabId` | `rename_session_tab` |
|
|
677
|
+
| | **Body:** `{ label }` | **Params:** `agentId`, `tabId`, `label` |
|
|
678
|
+
| Delete tab (permanent) | `DELETE /api/agents/:agentId/session-tabs/:tabId` | `delete_session_tab` |
|
|
679
|
+
| | Also clears Claude session file | **Params:** `agentId`, `tabId` |
|
|
680
|
+
|
|
681
|
+
**Note:** `senderId` in messages sent from the Web UI is the `tabId`. This is what links JSONL log entries to a specific named thread. For agents to maintain separate memory per tab, set `persistent: true` and `perSenderSessions: true` in the agent config.
|
|
682
|
+
|
|
683
|
+
**`targetAgentId` — cross-agent tab routing:** When a tab is created with `targetAgentId`, all messages sent in that tab are routed to the target agent instead of the host agent. This lets hub (or any agent) create a tab that talks directly to a specialist agent (e.g. `agentcreator`, `skillcreator`) so the sub-agent accumulates its own conversation history and memory. The tab still appears on the host agent's chat page — users don't leave the page, they just switch tabs.
|
|
684
|
+
|
|
685
|
+
### Model Override (not visible in UI, API/MCP only)
|
|
686
|
+
|
|
687
|
+
| Action | API | MCP |
|
|
688
|
+
|--------|-----|-----|
|
|
689
|
+
| Get current model | `GET /api/agents/:agentId/model` | `get_model` |
|
|
690
|
+
| | | **Params:** `agentId` |
|
|
691
|
+
| Set model override | `PUT /api/agents/:agentId/model` | `set_model` |
|
|
692
|
+
| | **Body:** `{ model }` (opus, sonnet, haiku, or full model ID) | **Params:** `agentId`, `model` |
|
|
693
|
+
| Clear model override | `DELETE /api/agents/:agentId/model` | `clear_model` |
|
|
694
|
+
| | | **Params:** `agentId` |
|
|
695
|
+
|
|
696
|
+
### Memory (not visible in chat UI, API/MCP only)
|
|
697
|
+
|
|
698
|
+
| Action | API | MCP |
|
|
699
|
+
|--------|-----|-----|
|
|
700
|
+
| Get agent memory | `GET /api/agents/:agentId/memory` | `get_agent_memory` |
|
|
701
|
+
| | **Query:** `?limit=N` | **Params:** `agentId`, `limit?` |
|
|
702
|
+
| Search memory | `POST /api/agents/:agentId/memory/search` | `search_memory` |
|
|
703
|
+
| | **Body:** `{ query }` | **Params:** `agentId`, `query` |
|
|
704
|
+
| Clear memory context | `DELETE /api/agents/:agentId/memory/context` | `clear_memory_context` |
|
|
705
|
+
| | | **Params:** `agentId` |
|
|
706
|
+
|
|
707
|
+
### Files (not visible in chat UI, API/MCP only)
|
|
708
|
+
|
|
709
|
+
| Action | API | MCP |
|
|
710
|
+
|--------|-----|-----|
|
|
711
|
+
| List agent files | `GET /api/agents/:agentId/files` | `list_agent_files` |
|
|
712
|
+
| | | **Params:** `agentId` |
|
|
713
|
+
| Download file | `GET /api/agents/:agentId/download?path=filePath` | `download_agent_file` |
|
|
714
|
+
| | **Query:** `path` (absolute file path) | **Params:** `agentId`, `path` |
|
|
715
|
+
| Upload file | `POST /api/upload/:agentId/json` | `upload_file` |
|
|
716
|
+
| | **Body:** `{ fileName, base64Content, mode? }` | **Params:** `agentId`, `fileName`, `base64Content`, `mode?` ("temp" or "permanent") |
|
|
717
|
+
|
|
718
|
+
### Recover Agent (not visible in UI, API/MCP only)
|
|
719
|
+
|
|
720
|
+
| Action | API | MCP |
|
|
721
|
+
|--------|-----|-----|
|
|
722
|
+
| Recover from corruption | `POST /api/agents/:agentId/recover` | `recover_agent` |
|
|
723
|
+
| | **Body:** `{ userText?, response? }` | **Params:** `agentId`, `userText?`, `response?` |
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
# 4. Library
|
|
728
|
+
|
|
729
|
+
**URL:** `/library`
|
|
730
|
+
**Purpose:** Manage your personal library of skills, prompts, apps, MCPs, and agents. Install, assign, create, and publish.
|
|
731
|
+
|
|
732
|
+
## 4.1 Type Tabs
|
|
733
|
+
|
|
734
|
+
Five tabs along the top, each showing a different resource type:
|
|
735
|
+
- **Skills** — reusable instruction sets agents can invoke
|
|
736
|
+
- **Prompts** — reusable prompt templates triggered with a character (e.g., `!`)
|
|
737
|
+
- **Apps** — registered web applications
|
|
738
|
+
- **MCPs** — Model Context Protocol servers
|
|
739
|
+
- **Agents** — agent configurations
|
|
740
|
+
|
|
741
|
+
## 4.2 Search & Filters
|
|
742
|
+
|
|
743
|
+
- **Search input** — real-time filtering by name, description, or tags
|
|
744
|
+
- **Search clear button (×)** — appears when search has content
|
|
745
|
+
- **Category pills** — dynamic filter buttons:
|
|
746
|
+
- **"all"** — show everything
|
|
747
|
+
- **Per-category pills** — auto-generated from item categories
|
|
748
|
+
- **"★ Platform Defaults" pill** — (skills/prompts/MCPs only) toggle to show only platform defaults
|
|
749
|
+
|
|
750
|
+
Each tab loads its data from the registry on mount:
|
|
751
|
+
|
|
752
|
+
| Action | API | MCP |
|
|
753
|
+
|--------|-----|-----|
|
|
754
|
+
| Load Skills/Prompts/Agents/MCPs tab | `GET /api/marketplace/:type` | `browse_registry` |
|
|
755
|
+
| | **URL param:** `type` (skills, prompts, agents, mcps) | **Params:** `type` |
|
|
756
|
+
| Load Apps tab | `GET /api/apps` | `list_apps` |
|
|
757
|
+
| | | *(no params)* |
|
|
758
|
+
| Load MCPs tab (registered servers) | `GET /api/mcps` | `list_mcps` |
|
|
759
|
+
| | | *(no params)* |
|
|
760
|
+
| Load agents (for assign modal) | `GET /api/agents` | `list_agents` |
|
|
761
|
+
| | | *(no params)* |
|
|
762
|
+
|
|
763
|
+
## 4.3 Personal Items Section ("Built by Me")
|
|
764
|
+
|
|
765
|
+
### Section Header
|
|
766
|
+
- **Item count** in parentheses
|
|
767
|
+
- **⊕ Add [Type] split button** with dropdown menu:
|
|
768
|
+
|
|
769
|
+
| Type | Dropdown Options |
|
|
770
|
+
|------|-----------------|
|
|
771
|
+
| Skills | "Scan" (scan folder), "AI Build" (→ Lab), "Marketplace" (→ Marketplace) |
|
|
772
|
+
| Prompts | "Paste" (inline form), "AI Build" (→ Lab), "Marketplace" (→ Marketplace) |
|
|
773
|
+
| Apps | "Register" (inline form), "AI Build" (→ Lab), "Marketplace" (→ Marketplace) |
|
|
774
|
+
| MCPs | "Add" (inline form), "Marketplace" (→ Marketplace) |
|
|
775
|
+
|
|
776
|
+
### Inline Creation Panels
|
|
777
|
+
|
|
778
|
+
#### Scan Skills Panel (Skills only)
|
|
779
|
+
- **Directory input** — folder path to scan (default: `~/.claude/commands`)
|
|
780
|
+
- **Scan button** — scans for `.md` skill files
|
|
781
|
+
- **Results** — checkboxes for each found skill with name and description
|
|
782
|
+
- **Import button** — imports selected skills
|
|
783
|
+
|
|
784
|
+
| Action | API | MCP |
|
|
785
|
+
|--------|-----|-----|
|
|
786
|
+
| Scan for skills | `GET /api/marketplace/scan-skills` | `scan_skills` |
|
|
787
|
+
| | **Query:** `?dir=path` | **Params:** `dir?` (string) |
|
|
788
|
+
| Import scanned skills | `POST /api/marketplace/import-skills` | `import_skills` |
|
|
789
|
+
| | **Body:** `{ agentId, skills[] }` | **Params:** `agentId`, `skills` (string array) |
|
|
790
|
+
| Create skill (programmatic) | `POST /api/skills/create` | `create_skill` |
|
|
791
|
+
| | **Body:** `{ id, name, description, content, scope, orgName?, agentId? }` | **Params:** `id`, `name`, `description`, `content`, `scope` ("global"\|"org"\|"agent"), `orgName?`, `agentId?` |
|
|
792
|
+
|
|
793
|
+
> Note: The "AI Build" button redirects to Lab (`/lab?build=skill`) where a creator agent builds the skill conversationally. The `create_skill` API/MCP can also create skills directly without the Lab.
|
|
794
|
+
|
|
795
|
+
#### Create Prompt Panel (Prompts only)
|
|
796
|
+
- **Name input** — prompt display name
|
|
797
|
+
- **ID input** — auto-generated from name
|
|
798
|
+
- **Description input**
|
|
799
|
+
- **Content textarea** — the prompt template text
|
|
800
|
+
- **Save prompt button**
|
|
801
|
+
- **Cancel button**
|
|
802
|
+
|
|
803
|
+
| Action | API | MCP |
|
|
804
|
+
|--------|-----|-----|
|
|
805
|
+
| Create prompt | `POST /api/marketplace/create-prompt` | `create_prompt` |
|
|
806
|
+
| | **Body:** `{ id, name, content }` | **Params:** `id`, `name`, `content` |
|
|
807
|
+
|
|
808
|
+
#### Add MCP Panel (MCPs only)
|
|
809
|
+
- **Name input**
|
|
810
|
+
- **ID input** — auto-generated from name
|
|
811
|
+
- **Description input**
|
|
812
|
+
- **Type toggle** — HTTP or stdio buttons
|
|
813
|
+
- **HTTP fields:** URL input
|
|
814
|
+
- **stdio fields:** Command input, Args input (space-separated)
|
|
815
|
+
- **Add MCP button**
|
|
816
|
+
- **Cancel button**
|
|
817
|
+
|
|
818
|
+
| Action | API | MCP |
|
|
819
|
+
|--------|-----|-----|
|
|
820
|
+
| Add MCP to registry | `POST /api/marketplace/add-mcp` | `add_mcp_to_registry` |
|
|
821
|
+
| | **Body:** `{ name, id, description, type, url?, command?, args? }` | **Params:** `body` (object) |
|
|
822
|
+
|
|
823
|
+
#### Register App Panel (Apps only)
|
|
824
|
+
- **Name input** (required)
|
|
825
|
+
- **URL input** (required)
|
|
826
|
+
- **Description input**
|
|
827
|
+
- **Category dropdown** — Productivity, Development, Finance, Analytics, Communication, AI/Agents, Other
|
|
828
|
+
- **Status dropdown** — Draft, Live, Maintenance
|
|
829
|
+
- **GitHub Repo input** (optional)
|
|
830
|
+
- **Deploy platform dropdown** — Railway, Vercel, Netlify, Render, Local, Other
|
|
831
|
+
- **Register App button**
|
|
832
|
+
- **Cancel button**
|
|
833
|
+
|
|
834
|
+
| Action | API | MCP |
|
|
835
|
+
|--------|-----|-----|
|
|
836
|
+
| Create app | `POST /api/apps` | `create_app` |
|
|
837
|
+
| | **Body:** `{ name, url, description?, category?, status?, repo?, deploy? }` | **Params:** `body` (object) |
|
|
838
|
+
|
|
839
|
+
## 4.4 Item Cards
|
|
840
|
+
|
|
841
|
+
Each resource is displayed as a card with consistent elements:
|
|
842
|
+
|
|
843
|
+
### Card Elements
|
|
844
|
+
- **Name and provider**
|
|
845
|
+
- **Badges:**
|
|
846
|
+
- "✓ verified" — if provider is AgenticLedger/platform
|
|
847
|
+
- "built by me" — if provider is 'me'
|
|
848
|
+
- "community" — if external provider
|
|
849
|
+
- "✓ installed" — if already installed
|
|
850
|
+
- "★ default" — if set as platform default
|
|
851
|
+
- **Description**
|
|
852
|
+
- **Meta tags** — categories and assigned agents (e.g., "→ agent1, agent2, +1")
|
|
853
|
+
|
|
854
|
+
### Card Actions
|
|
855
|
+
|
|
856
|
+
| Button | Description | When Visible |
|
|
857
|
+
|--------|-------------|-------------|
|
|
858
|
+
| **Install** | Install the item | Not yet installed |
|
|
859
|
+
| **Manage** | Open assign modal | Already installed |
|
|
860
|
+
| **☆ Set Default / ★ Default** | Toggle platform default | Skills, Prompts, MCPs |
|
|
861
|
+
| **↑ Publish ▾** | Publish to SaaS (dropdown) | SaaS connected, Skills/Prompts only |
|
|
862
|
+
|
|
863
|
+
#### Install
|
|
864
|
+
|
|
865
|
+
| Action | API | MCP |
|
|
866
|
+
|--------|-----|-----|
|
|
867
|
+
| Install item | `POST /api/marketplace/install` | `install_registry_item` |
|
|
868
|
+
| | **Body:** `{ id, type }` | **Params:** `id`, `type` |
|
|
869
|
+
|
|
870
|
+
After install, the **Assign Modal** opens (see below).
|
|
871
|
+
|
|
872
|
+
#### Manage / Assign Modal
|
|
873
|
+
- **Title:** "✓ [Item Name] installed" or "Manage — [Item Name]"
|
|
874
|
+
- **Agent checklist** — checkboxes for each configured agent
|
|
875
|
+
- **Missing keys alert** — warns if API keys are needed
|
|
876
|
+
- **Assign selected button** — assigns item to checked agents
|
|
877
|
+
|
|
878
|
+
| Action | API | MCP |
|
|
879
|
+
|--------|-----|-----|
|
|
880
|
+
| Assign to agent | `POST /api/marketplace/assign` | `assign_to_agent` |
|
|
881
|
+
| | **Body:** `{ agentId, itemId, type }` | **Params:** `agentId`, `itemId`, `type` ("skill", "mcp", "agent") |
|
|
882
|
+
|
|
883
|
+
#### Set Platform Default
|
|
884
|
+
|
|
885
|
+
| Action | API | MCP |
|
|
886
|
+
|--------|-----|-----|
|
|
887
|
+
| Set platform default | `POST /api/marketplace/platform-default` | `set_platform_default` |
|
|
888
|
+
| | **Body:** `{ type, id }` | **Params:** `type`, `id` |
|
|
889
|
+
|
|
890
|
+
#### Publish to SaaS (Dropdown)
|
|
891
|
+
- **"Company Library" button** — publish to SaaS library
|
|
892
|
+
- **"Marketplace" button** — publish to SaaS marketplace
|
|
893
|
+
|
|
894
|
+
| Action | API | MCP |
|
|
895
|
+
|--------|-----|-----|
|
|
896
|
+
| Publish to SaaS | `POST /api/saas/publish` | `publish_to_saas` |
|
|
897
|
+
| | **Body:** `{ type, id, destination }` | **Params:** `type` ("skill"\|"prompt"\|"agent"\|"app"), `id`, `destination?` ("library"\|"marketplace") |
|
|
898
|
+
|
|
899
|
+
### App Cards (Special Layout)
|
|
900
|
+
Apps have a richer card:
|
|
901
|
+
- **Initials icon** — colored 2-letter box
|
|
902
|
+
- **App name and URL**
|
|
903
|
+
- **Status badge** — Draft/Live/Maintenance (colored)
|
|
904
|
+
- **Deploy badge** — Railway/Vercel/Netlify/Render/Local/Other
|
|
905
|
+
- **Description**
|
|
906
|
+
- **Category tag and tags**
|
|
907
|
+
- **Agent developer badge** — shows assigned agent
|
|
908
|
+
|
|
909
|
+
#### App-Specific Actions
|
|
910
|
+
|
|
911
|
+
| Button | Description |
|
|
912
|
+
|--------|-------------|
|
|
913
|
+
| **↗ Launch** | Opens app URL in new tab |
|
|
914
|
+
| **↑ Publish ▾** | Publish to SaaS (dropdown) |
|
|
915
|
+
| **⌂ GitHub** | Opens GitHub repo (if configured) |
|
|
916
|
+
| **✕ Delete** | Deletes app from registry |
|
|
917
|
+
| **Health chip** | Shows health status; click to check |
|
|
918
|
+
|
|
919
|
+
| Action | API | MCP |
|
|
920
|
+
|--------|-----|-----|
|
|
921
|
+
| Launch app | Opens `app.url` in new browser tab | N/A — client-side navigation |
|
|
922
|
+
| GitHub link | Opens `app.repo` in new browser tab | N/A — client-side navigation |
|
|
923
|
+
| Delete app | `DELETE /api/apps/:id` | `delete_app` |
|
|
924
|
+
| | | **Params:** `id` |
|
|
925
|
+
| Update app | `PUT /api/apps/:id` | `update_app` |
|
|
926
|
+
| | **Body:** fields to update | **Params:** `id`, `body` (object) |
|
|
927
|
+
| Check app health | `POST /api/apps/:id/check-health` | `check_app_health` |
|
|
928
|
+
| | | **Params:** `id` |
|
|
929
|
+
| Publish app to SaaS | `POST /api/saas/publish` | `publish_to_saas` |
|
|
930
|
+
| | **Body:** `{ type: "app", id, destination }` | **Params:** `type`, `id`, `destination?` |
|
|
931
|
+
|
|
932
|
+
## 4.5 Prompt Trigger Config (Prompts Tab Only)
|
|
933
|
+
- **Trigger display** — shows current character (e.g., `!`)
|
|
934
|
+
- **✎ Edit button** — prompts for a new 1-character trigger
|
|
935
|
+
|
|
936
|
+
| Action | API | MCP |
|
|
937
|
+
|--------|-----|-----|
|
|
938
|
+
| Get prompt trigger | `GET /api/marketplace/prompt-trigger` | `get_prompt_trigger` |
|
|
939
|
+
| | | *(no params)* |
|
|
940
|
+
| Set prompt trigger | `POST /api/marketplace/prompt-trigger` | `set_prompt_trigger` |
|
|
941
|
+
| | **Body:** `{ trigger }` (single character) | **Params:** `trigger` |
|
|
942
|
+
|
|
943
|
+
## 4.6 Import from Folder Modal
|
|
944
|
+
- **Step 1:** folder path input + Browse button (opens directory picker) + Scan Folder button
|
|
945
|
+
- **Directory picker:** breadcrumb path, folder listing, up (..) button, Select/Cancel
|
|
946
|
+
- **Step 2:** preview list of found items with type, name, description + Import All button
|
|
947
|
+
|
|
948
|
+
| Action | API | MCP |
|
|
949
|
+
|--------|-----|-----|
|
|
950
|
+
| Browse directories | `GET /api/browse-dirs` | `browse_dirs` |
|
|
951
|
+
| | **Query:** `?path=dirPath` | **Params:** `path?` |
|
|
952
|
+
|
|
953
|
+
---
|
|
954
|
+
|
|
955
|
+
# 5. Lab
|
|
956
|
+
|
|
957
|
+
**URL:** `/lab`
|
|
958
|
+
**Purpose:** AI-assisted creation of agents, skills, apps, and prompts. Conversational build experience.
|
|
959
|
+
|
|
960
|
+
## 5.1 Landing View
|
|
961
|
+
|
|
962
|
+
### Hero Section
|
|
963
|
+
- **Title:** "Lab"
|
|
964
|
+
- **Subtitle:** "What do you want to build?"
|
|
965
|
+
|
|
966
|
+
### Build Tiles (4 clickable tiles)
|
|
967
|
+
| Tile | Icon | Description |
|
|
968
|
+
|------|------|-------------|
|
|
969
|
+
| **Agent** | Diamond (cyan) | "A purpose-built AI with memory, tools, and channels" |
|
|
970
|
+
| **Skill** | Lightning (green) | "A reusable instruction set any agent can invoke" |
|
|
971
|
+
| **App** | Grid (amber) | "A deployed web application in your platform" |
|
|
972
|
+
| **Prompt** | Star (purple) | "A reusable prompt template triggered with !" |
|
|
973
|
+
|
|
974
|
+
Clicking a tile opens the **Intake Form** for that type.
|
|
975
|
+
|
|
976
|
+
### Your Work Section (Artifacts)
|
|
977
|
+
- **Search input** — filter existing artifacts by name
|
|
978
|
+
- **Accordion groups** (click header to expand/collapse, arrow rotates):
|
|
979
|
+
- **Apps** — each row shows: name, category tag, status badge (Draft/Live/Maintenance)
|
|
980
|
+
- **Launch button** — opens the app URL in a new tab
|
|
981
|
+
- **Modify button** — opens the Lab creation view to continue building with the App Creator agent
|
|
982
|
+
- **Deploy button** — triggers deployment flow
|
|
983
|
+
- **Agents** — each row shows: name, agent ID, status badge
|
|
984
|
+
- **Skills** — each row shows: name, category tag, status badge
|
|
985
|
+
- **Prompts** — each row shows: name, category tag, status badge
|
|
986
|
+
- Each accordion shows a **count badge** with the number of items
|
|
987
|
+
|
|
988
|
+
## 5.2 Intake Form
|
|
989
|
+
|
|
990
|
+
Opened by clicking a build tile.
|
|
991
|
+
|
|
992
|
+
| Field | Description |
|
|
993
|
+
|-------|-------------|
|
|
994
|
+
| **Name** | What you're building (placeholder varies by type) |
|
|
995
|
+
| **Description** | Detailed description of what you want |
|
|
996
|
+
| **Project directory** (Apps only) | Folder path + Browse button with directory picker |
|
|
997
|
+
| **📎 Attach files** | File attachment button + hidden file input |
|
|
998
|
+
| **Create button** | Submits to the appropriate creator agent |
|
|
999
|
+
| **Cancel button** | Returns to landing |
|
|
1000
|
+
|
|
1001
|
+
## 5.3 Creator Agents
|
|
1002
|
+
|
|
1003
|
+
Each build type is handled by a **hardcoded platform agent** — a real agent with its own ID, system prompt, and tools:
|
|
1004
|
+
|
|
1005
|
+
| Type | Agent ID | Name | Alias |
|
|
1006
|
+
|------|----------|------|-------|
|
|
1007
|
+
| Agent | `agentcreator` | Agent Creator | `@agentcreator` |
|
|
1008
|
+
| Skill | `skillcreator` | Skill Creator | `@skillcreator` |
|
|
1009
|
+
| App | `appcreator` | App Creator | `@appcreator` |
|
|
1010
|
+
| Prompt | `promptcreator` | Prompt Creator | `@promptcreator` |
|
|
1011
|
+
|
|
1012
|
+
These are real agents — you can also message them directly from any channel via `@agentcreator`, `@skillcreator`, etc. They are registered as **Platform** class agents.
|
|
1013
|
+
|
|
1014
|
+
| Action | API | MCP |
|
|
1015
|
+
|--------|-----|-----|
|
|
1016
|
+
| List creator agents | `GET /api/platform-agents` | `get_platform_agents` |
|
|
1017
|
+
| | Returns list of platform agents with IDs, names, aliases | *(no params)* |
|
|
1018
|
+
|
|
1019
|
+
## 5.4 Creation View
|
|
1020
|
+
|
|
1021
|
+
The AI-assisted build interface — a split-pane chat + canvas.
|
|
1022
|
+
|
|
1023
|
+
### Chat Panel (Left)
|
|
1024
|
+
- **Header:** creator agent avatar, name (e.g., "Agent Creator"), alias (e.g., "@agentcreator")
|
|
1025
|
+
- **Messages area:** user messages (cyan) and agent messages (purple, markdown-rendered)
|
|
1026
|
+
- **Thinking indicator** — animated dots while processing
|
|
1027
|
+
- **Tool cards** — show active tool usage
|
|
1028
|
+
|
|
1029
|
+
#### Chat Input Controls
|
|
1030
|
+
| Control | Description |
|
|
1031
|
+
|---------|-------------|
|
|
1032
|
+
| **📎 Clip button** | Toggle file drop zone for drag-and-drop |
|
|
1033
|
+
| **🎤 Mic button** | Voice input (stub) |
|
|
1034
|
+
| **⌘ Raw Logs button** | Toggle raw logs drawer |
|
|
1035
|
+
| **Chat textarea** | Enter sends, Shift+Enter newline, auto-resizes |
|
|
1036
|
+
| **Send button** | Sends message; becomes "Queue" during streaming |
|
|
1037
|
+
| **Stop button** | Appears during streaming; stops active job |
|
|
1038
|
+
|
|
1039
|
+
#### Raw Logs Drawer
|
|
1040
|
+
- **Mode button** — toggles between "Clean" and "● Raw" modes
|
|
1041
|
+
- **Log content area** — live streaming output from the creator agent
|
|
1042
|
+
|
|
1043
|
+
### Canvas Panel (Right)
|
|
1044
|
+
- **Toggle button (▢ Canvas)** — show/hide canvas
|
|
1045
|
+
- **Clear button** — empties canvas
|
|
1046
|
+
- **Copy button** — copies all blocks to clipboard
|
|
1047
|
+
- **Close button** — hides canvas
|
|
1048
|
+
- **Canvas blocks** — code/content artifacts generated by the creator agent
|
|
1049
|
+
- Each block: type label (json, yaml, markdown, typescript, etc.), copy button, content
|
|
1050
|
+
- **Empty state:** "Canvas is empty — Artifacts will appear here as they're built"
|
|
1051
|
+
- **Resize handle** — draggable divider between chat and canvas
|
|
1052
|
+
|
|
1053
|
+
### Deploy Button
|
|
1054
|
+
- **Deploy** — disabled until artifacts exist; triggers deployment flow
|
|
1055
|
+
|
|
1056
|
+
| Action | API | MCP |
|
|
1057
|
+
|--------|-----|-----|
|
|
1058
|
+
| Get platform agents (creators) | `GET /api/platform-agents` | `get_platform_agents` |
|
|
1059
|
+
| | | *(no params)* |
|
|
1060
|
+
| Send message to creator | `POST /api/chat/:agentId` | `send_message` |
|
|
1061
|
+
| | **Body:** `{ text }` | **Params:** `agentId` (e.g., `agentcreator`), `text` |
|
|
1062
|
+
| Start streaming with creator | `POST /api/chat/:agentId/stream` | `start_stream` |
|
|
1063
|
+
| | **Body:** `{ text }` | **Params:** `agentId`, `text` |
|
|
1064
|
+
| Stop streaming | `POST /api/chat/jobs/:jobId/stop` | `stop_chat_job` |
|
|
1065
|
+
| | | **Params:** `jobId` |
|
|
1066
|
+
| Poll stream output | `GET /api/chat/jobs/:jobId/raw?after=N` | `get_chat_job_raw` |
|
|
1067
|
+
| | **Query:** `after` (line offset) | **Params:** `jobId`, `after?` |
|
|
1068
|
+
| Upload file attachment to creator | `POST /api/upload/:agentId` (multipart) | `upload_file` |
|
|
1069
|
+
| | Multipart form: `file` + `mode` | **Params:** `agentId`, `fileName`, `base64Content`, `mode?` |
|
|
1070
|
+
| Browse dirs (App project picker) | `GET /api/browse-dirs?path=dirPath` | `browse_dirs` |
|
|
1071
|
+
| | **Query:** `path` | **Params:** `path?` |
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
# 6. Marketplace
|
|
1076
|
+
|
|
1077
|
+
**URL:** `/marketplace`
|
|
1078
|
+
**Purpose:** Browse, install, and assign skills, prompts, agents, MCPs, and apps from the registry.
|
|
1079
|
+
|
|
1080
|
+
## 6.1 Type Tabs
|
|
1081
|
+
|
|
1082
|
+
Same five tabs as Library: **Apps** (default), **Skills**, **Agents**, **MCPs**, **Prompts**
|
|
1083
|
+
|
|
1084
|
+
## 6.2 Search & Filters
|
|
1085
|
+
|
|
1086
|
+
Identical to Library (see [Section 4.2](#42-search--filters)):
|
|
1087
|
+
- Search input with real-time filtering
|
|
1088
|
+
- Category pills with "all" and per-category options
|
|
1089
|
+
- "★ Platform Defaults" pill (skills/prompts/MCPs only)
|
|
1090
|
+
|
|
1091
|
+
## 6.3 Sections
|
|
1092
|
+
|
|
1093
|
+
Items are split into two sections:
|
|
1094
|
+
- **"Built by Me"** — your personal items (same as Library, with add/create panels)
|
|
1095
|
+
- **"Built by Others"** — community and platform items
|
|
1096
|
+
|
|
1097
|
+
## 6.4 Item Cards
|
|
1098
|
+
|
|
1099
|
+
Same card layout as Library (see [Section 4.4](#44-item-cards) for full card anatomy) with these marketplace-specific behaviors:
|
|
1100
|
+
|
|
1101
|
+
### Skills / Prompts / MCPs / Agents Cards
|
|
1102
|
+
- **Name, provider, description, badges** — same as Library
|
|
1103
|
+
- **Install button** — primary action; downloads item to your local registry
|
|
1104
|
+
- After install, the **Assign Modal** opens automatically to assign to agents
|
|
1105
|
+
- **"✓ Installed" badge** — replaces Install button once installed
|
|
1106
|
+
- **☆ Set Default / ★ Default** — toggle platform default (skills/prompts/MCPs)
|
|
1107
|
+
- **↑ Publish ▾ dropdown** — publish to SaaS (Company Library or Marketplace)
|
|
1108
|
+
- **Manage button** — opens assign modal (if already installed)
|
|
1109
|
+
|
|
1110
|
+
### App Cards
|
|
1111
|
+
- **↗ Launch** — opens app URL in new tab
|
|
1112
|
+
- **↑ Publish ▾** — publish to SaaS (Company Library / Marketplace)
|
|
1113
|
+
- **⌂ GitHub** — opens repo (if configured)
|
|
1114
|
+
- **✕ Delete** — removes app
|
|
1115
|
+
- **Health chip** — shows status; click to re-check
|
|
1116
|
+
|
|
1117
|
+
All actions, APIs, and MCP tools are identical to Library (see [Section 4.4](#44-item-cards) for full API/MCP tables):
|
|
1118
|
+
|
|
1119
|
+
| Action | API | MCP |
|
|
1120
|
+
|--------|-----|-----|
|
|
1121
|
+
| Browse registry by type | `GET /api/marketplace/:type` | `browse_registry` |
|
|
1122
|
+
| | **URL param:** `type` (skills, prompts, agents, mcps, apps) | **Params:** `type` |
|
|
1123
|
+
| Install item | `POST /api/marketplace/install` | `install_registry_item` |
|
|
1124
|
+
| | **Body:** `{ id, type }` | **Params:** `id`, `type` |
|
|
1125
|
+
| Assign to agent | `POST /api/marketplace/assign` | `assign_to_agent` |
|
|
1126
|
+
| | **Body:** `{ agentId, itemId, type }` | **Params:** `agentId`, `itemId`, `type` |
|
|
1127
|
+
| Set platform default | `POST /api/marketplace/platform-default` | `set_platform_default` |
|
|
1128
|
+
| | **Body:** `{ type, id }` | **Params:** `type`, `id` |
|
|
1129
|
+
|
|
1130
|
+
---
|
|
1131
|
+
|
|
1132
|
+
# 7. Admin
|
|
1133
|
+
|
|
1134
|
+
**URL:** `/admin`
|
|
1135
|
+
**Purpose:** System-level configuration — channels, activity logs, accounts, service settings, SaaS, and deployment.
|
|
1136
|
+
|
|
1137
|
+
## 7.1 Channels
|
|
1138
|
+
|
|
1139
|
+
**Tab:** Channels
|
|
1140
|
+
|
|
1141
|
+
### Per Channel Card
|
|
1142
|
+
One card per messaging channel (Telegram, Slack, iMessage, WhatsApp, Discord). Each shows:
|
|
1143
|
+
|
|
1144
|
+
| Element | Description |
|
|
1145
|
+
|---------|-------------|
|
|
1146
|
+
| **Channel icon** | Emoji for channel type |
|
|
1147
|
+
| **Channel name** | e.g., "Telegram" |
|
|
1148
|
+
| **Status pill** | "Connected" or "Disabled" |
|
|
1149
|
+
| **Sticky mode select** | None, Sticky, Prefix — controls routing behavior |
|
|
1150
|
+
| **Prefix input** | Only visible if Prefix mode; the prefix string |
|
|
1151
|
+
| **Timeout input** | Minutes before sticky routing expires |
|
|
1152
|
+
| **Save Settings button** | Saves channel configuration |
|
|
1153
|
+
|
|
1154
|
+
### Monitored Chat IDs (iMessage only)
|
|
1155
|
+
- **List of monitored chat IDs** with remove buttons per entry
|
|
1156
|
+
- **Add input** — chat ID to add
|
|
1157
|
+
- **Add button** — adds the chat ID
|
|
1158
|
+
|
|
1159
|
+
| Action | API | MCP |
|
|
1160
|
+
|--------|-----|-----|
|
|
1161
|
+
| Add monitored chat | `POST /api/channels/:channelName/monitored` | `add_monitored_chat` |
|
|
1162
|
+
| | **Body:** `{ chatId }` | **Params:** `channelName`, `chatId` |
|
|
1163
|
+
| Remove monitored chat | `DELETE /api/channels/:channelName/monitored` | `remove_monitored_chat` |
|
|
1164
|
+
| | **Body:** `{ chatId }` | **Params:** `channelName`, `chatId` |
|
|
1165
|
+
|
|
1166
|
+
### Chat Groups (Agent Routing)
|
|
1167
|
+
- **Filter dropdown** — filter by chat ID
|
|
1168
|
+
- **Agent list** — grouped by chat ID, showing agent name, alias, remove button
|
|
1169
|
+
- **Add Agent section:**
|
|
1170
|
+
- Agent select dropdown
|
|
1171
|
+
- Chat/Channel ID input
|
|
1172
|
+
- **Add Agent button**
|
|
1173
|
+
|
|
1174
|
+
| Action | API | MCP |
|
|
1175
|
+
|--------|-----|-----|
|
|
1176
|
+
| List channels | `GET /api/channels` | `list_channels` |
|
|
1177
|
+
| | | *(no params)* |
|
|
1178
|
+
| Update channel settings | `PUT /api/channels/:channelName` | `update_channel` |
|
|
1179
|
+
| | **Body:** `{ stickyMode?, prefix?, timeout?, enabled? }` | **Params:** `channelName`, `body` (object) |
|
|
1180
|
+
| Add agent route | `POST /api/channels/:channelName/agents` | `add_agent_route` |
|
|
1181
|
+
| | **Body:** `{ agentId, chatId?, requireMention? }` | **Params:** `channelName`, `body` (object) |
|
|
1182
|
+
| Remove agent route | `DELETE /api/channels/:channelName/agents/:agentId` | `remove_agent_route` |
|
|
1183
|
+
| | | **Params:** `channelName`, `agentId` |
|
|
1184
|
+
| Get sticky routing | `GET /api/sticky-routing` | `get_sticky_routing` |
|
|
1185
|
+
| | | *(no params)* |
|
|
1186
|
+
|
|
1187
|
+
## 7.2 Activity
|
|
1188
|
+
|
|
1189
|
+
**Tab:** Activity
|
|
1190
|
+
|
|
1191
|
+
### Filters
|
|
1192
|
+
- **Agent filter dropdown** — dynamically populated with all agents
|
|
1193
|
+
- **Channel filter dropdown** — All Channels, Telegram, Slack, iMessage, Discord, WhatsApp
|
|
1194
|
+
- **Search input** — searches message content (debounced)
|
|
1195
|
+
- **Result count** — "X entries"
|
|
1196
|
+
|
|
1197
|
+
### Activity Entries
|
|
1198
|
+
Each entry shows:
|
|
1199
|
+
- Agent avatar and name (clickable link to chat)
|
|
1200
|
+
- Channel tag
|
|
1201
|
+
- Session indicator
|
|
1202
|
+
- Timestamp
|
|
1203
|
+
- "Chat →" button to view in chat
|
|
1204
|
+
- Query text (first 200 chars)
|
|
1205
|
+
- Response preview (first 800 chars, expandable on click)
|
|
1206
|
+
|
|
1207
|
+
| Action | API | MCP |
|
|
1208
|
+
|--------|-----|-----|
|
|
1209
|
+
| Get activity feed | `GET /api/activity` | `get_activity` |
|
|
1210
|
+
| | **Query:** `?limit=N` | **Params:** `limit?` |
|
|
1211
|
+
| Get agent logs | `GET /api/agents/:agentId/logs` | `get_agent_logs` |
|
|
1212
|
+
| | **Query:** `?limit=N&offset=N&search=text` | **Params:** `agentId`, `limit?`, `offset?`, `search?` |
|
|
1213
|
+
|
|
1214
|
+
## 7.3 Settings
|
|
1215
|
+
|
|
1216
|
+
**Tab:** Settings (default)
|
|
1217
|
+
|
|
1218
|
+
### Profile Section
|
|
1219
|
+
- **Section label:** "Profile" (cyan highlight)
|
|
1220
|
+
- **Description:** "Your identity — agents can use this to personalize responses"
|
|
1221
|
+
- **Fields:**
|
|
1222
|
+
|
|
1223
|
+
| Field | Description |
|
|
1224
|
+
|-------|-------------|
|
|
1225
|
+
| **Name** | Your name |
|
|
1226
|
+
| **Role / Title** | Your job role (e.g., product manager, developer, student) |
|
|
1227
|
+
| **Industry** | Your industry or domain (e.g., fintech, healthcare, education) |
|
|
1228
|
+
| **AI Experience** | Dropdown: Beginner, Intermediate, Advanced |
|
|
1229
|
+
| **Interests** | Comma-separated list of focus areas (e.g., automation, coding, writing) |
|
|
1230
|
+
|
|
1231
|
+
- **Save button** — persists profile to `profile.json`
|
|
1232
|
+
|
|
1233
|
+
| Action | API | MCP |
|
|
1234
|
+
|--------|-----|-----|
|
|
1235
|
+
| Get profile | `GET /api/profile` | `get_profile` |
|
|
1236
|
+
| | | *(no params)* |
|
|
1237
|
+
| Update profile | `PUT /api/profile` | `update_profile` |
|
|
1238
|
+
| | **Body:** `{ name?, role?, industry?, aiExperience?, interests? }` | **Params:** `name?`, `role?`, `industry?`, `aiExperience?`, `interests?` |
|
|
1239
|
+
|
|
1240
|
+
### Claude Accounts Section
|
|
1241
|
+
|
|
1242
|
+
#### Account List
|
|
1243
|
+
Each account row shows:
|
|
1244
|
+
- **Status dot** — green (authenticated), red (error), grey (unknown)
|
|
1245
|
+
- **Account name**
|
|
1246
|
+
- **Email address** (fetched from account status)
|
|
1247
|
+
- **Account path** (e.g., `~/.claude-main`)
|
|
1248
|
+
- **↻ Re-login button** — restart OAuth for this account
|
|
1249
|
+
- **✕ Delete button** — remove account
|
|
1250
|
+
|
|
1251
|
+
#### Add Account
|
|
1252
|
+
- **Account name input**
|
|
1253
|
+
- **Login & Add button (→)** — starts OAuth flow
|
|
1254
|
+
- **Login panel** (appears after starting):
|
|
1255
|
+
- Step 1: Login URL display (copyable, clickable)
|
|
1256
|
+
- Step 2: Code input field + **Submit Code button**
|
|
1257
|
+
- **Verify & Save button**
|
|
1258
|
+
|
|
1259
|
+
| Action | API | MCP |
|
|
1260
|
+
|--------|-----|-----|
|
|
1261
|
+
| List accounts | `GET /api/config/accounts` | `list_accounts` |
|
|
1262
|
+
| | | *(no params)* |
|
|
1263
|
+
| Add account | `POST /api/config/accounts` | `add_account` |
|
|
1264
|
+
| | **Body:** `{ name, path }` | **Params:** `name`, `path` |
|
|
1265
|
+
| Delete account | `DELETE /api/config/accounts/:name` | `delete_account` |
|
|
1266
|
+
| | | **Params:** `name` |
|
|
1267
|
+
| Check account status | `GET /api/config/accounts/:name/status` | `check_account_status` |
|
|
1268
|
+
| | | **Params:** `name` |
|
|
1269
|
+
| Start login | `POST /api/config/accounts/login` | `start_account_login` |
|
|
1270
|
+
| | **Body:** `{ name, path }` | **Params:** `name`, `path` |
|
|
1271
|
+
| Submit login code | `POST /api/config/accounts/login/code` | `submit_login_code` |
|
|
1272
|
+
| | **Body:** `{ accountName, code }` | **Params:** `accountName`, `code` |
|
|
1273
|
+
| Check auth status | `GET /api/whoami/:agentId` | `whoami` |
|
|
1274
|
+
| | | **Params:** `agentId` |
|
|
1275
|
+
|
|
1276
|
+
### Service Section
|
|
1277
|
+
- **Note:** "Restart required for most changes"
|
|
1278
|
+
- **Settings grid:**
|
|
1279
|
+
|
|
1280
|
+
| Field | Description |
|
|
1281
|
+
|-------|-------------|
|
|
1282
|
+
| **Personal Agents Directory** | Where agent folders are stored |
|
|
1283
|
+
| **Personal Registry Directory** | Where skills/prompts registry lives |
|
|
1284
|
+
| **Web UI Port** | Port for the web interface (default: 4888) |
|
|
1285
|
+
| **Log Level** | Logging verbosity |
|
|
1286
|
+
|
|
1287
|
+
- **Save button** — saves service configuration
|
|
1288
|
+
|
|
1289
|
+
| Action | API | MCP |
|
|
1290
|
+
|--------|-----|-----|
|
|
1291
|
+
| Get service config | `GET /api/config/service` | `get_service_config` |
|
|
1292
|
+
| | | *(no params)* |
|
|
1293
|
+
| Update service config | `PUT /api/config/service` | `update_service_config` |
|
|
1294
|
+
| | **Body:** `{ personalAgentsDir?, personalRegistryDir?, port?, logLevel?, multiModelEnabled?, platformDefaultExecutor?, ollamaBaseUrl? }` | **Params:** `body` (object) |
|
|
1295
|
+
|
|
1296
|
+
### AI Models Section
|
|
1297
|
+
- **Section label:** "AI Models" (amber highlight)
|
|
1298
|
+
- **Toggle:** Enable Multi-Model — enables/disables alternative model routing (Ollama + cloud providers)
|
|
1299
|
+
- **Setup guide** (shown when enabled): Platform-specific install instructions for Ollama (macOS, Windows, Linux), model pull commands, and a "Test Connection" button that checks Ollama availability and lists downloaded models
|
|
1300
|
+
- **Settings grid:**
|
|
1301
|
+
|
|
1302
|
+
| Field | Description |
|
|
1303
|
+
|-------|-------------|
|
|
1304
|
+
| **Platform Default Executor** | Default executor for all agents: `claude` (default), `ollama:<model>`, or any supported provider:model combo |
|
|
1305
|
+
| **Ollama Base URL** | Ollama API endpoint (default: `http://localhost:11434`) |
|
|
1306
|
+
|
|
1307
|
+
- **Save button** — saves AI model settings
|
|
1308
|
+
|
|
1309
|
+
#### Supported Providers
|
|
1310
|
+
|
|
1311
|
+
| Provider | Executor format | API key field | Example |
|
|
1312
|
+
|----------|----------------|---------------|---------|
|
|
1313
|
+
| **Claude** | `claude` (default) | — (uses local CLI auth) | `claude` |
|
|
1314
|
+
| **Ollama** | `ollama:<model>` | — (local, no key) | `ollama:gemma2`, `ollama:llama3.1` |
|
|
1315
|
+
| **OpenAI** | `openai:<model>` | `openai` | `openai:gpt-4o`, `openai:gpt-4o-mini` |
|
|
1316
|
+
| **Grok (xAI)** | `grok:<model>` | `xai` | `grok:grok-3`, `grok:grok-3-mini` |
|
|
1317
|
+
| **Gemini** | `gemini:<model>` | `google` | `gemini:gemini-2.5-flash`, `gemini:gemini-2.5-pro` |
|
|
1318
|
+
| **Groq** | `groq:<model>` | `groq` | `groq:llama-3.3-70b-versatile` |
|
|
1319
|
+
| **Together** | `together:<model>` | `together` | `together:meta-llama/Llama-3.3-70B-Instruct` |
|
|
1320
|
+
| **Mistral** | `mistral:<model>` | `mistral` | `mistral:mistral-large-latest` |
|
|
1321
|
+
|
|
1322
|
+
API keys are stored in `config.json` under `service.providerKeys` (e.g., `{ "openai": "sk-...", "xai": "xai-...", "google": "AIza..." }`). Set them in Admin → Settings → Provider Keys.
|
|
1323
|
+
|
|
1324
|
+
- **Limitations:** Non-Claude agents (Ollama + cloud providers) get text-in/text-out only — no tool use (Read, Write, Bash), no MCP tools, no persistent sessions. Good for Q&A, content generation, and advisory roles.
|
|
1325
|
+
|
|
1326
|
+
| Action | API | MCP |
|
|
1327
|
+
|--------|-----|-----|
|
|
1328
|
+
| Enable multi-model | `PUT /api/config/service` | `update_service_config` |
|
|
1329
|
+
| | **Body:** `{ multiModelEnabled: true }` | **Params:** `{ multiModelEnabled: true }` |
|
|
1330
|
+
| Set platform default | `PUT /api/config/service` | `update_service_config` |
|
|
1331
|
+
| | **Body:** `{ platformDefaultExecutor: "openai:gpt-4o" }` | **Params:** `{ platformDefaultExecutor: "openai:gpt-4o" }` |
|
|
1332
|
+
| Set Ollama URL | `PUT /api/config/service` | `update_service_config` |
|
|
1333
|
+
| | **Body:** `{ ollamaBaseUrl: "http://host:11434" }` | **Params:** `{ ollamaBaseUrl: "http://host:11434" }` |
|
|
1334
|
+
| Set provider API keys | `PUT /api/config/service` | `update_service_config` |
|
|
1335
|
+
| | **Body:** `{ providerKeys: { openai: "sk-...", xai: "xai-..." } }` | **Params:** `{ providerKeys: { ... } }` |
|
|
1336
|
+
| Test provider API key | `POST /api/config/provider-test` | `test_provider` |
|
|
1337
|
+
| | **Body:** `{ provider: "openai" }` — tests the configured key for that provider | **Params:** `provider` (string: openai, grok, gemini, groq, together, mistral) |
|
|
1338
|
+
| Proxy Ollama tag list | `GET /api/ollama-proxy?url=<ollamaUrl>/api/tags` | — (internal) |
|
|
1339
|
+
| | **Query:** `url` — only `/api/tags` proxy is allowed | N/A — used by the Settings UI to list local Ollama models |
|
|
1340
|
+
|
|
1341
|
+
### Deployment Section
|
|
1342
|
+
- **Section label:** "Deployment" (green highlight)
|
|
1343
|
+
- **Note:** "Restart required for most changes"
|
|
1344
|
+
- **Settings grid:**
|
|
1345
|
+
|
|
1346
|
+
| Field | Description |
|
|
1347
|
+
|-------|-------------|
|
|
1348
|
+
| **Provider** | Deployment platform (e.g., "railway") |
|
|
1349
|
+
| **Deploy Token** | Platform deploy token (password field with reveal toggle) |
|
|
1350
|
+
| **GitHub Org/User** | GitHub organization or username for deployments |
|
|
1351
|
+
| **GitHub Token** | GitHub personal access token (password field with reveal toggle) |
|
|
1352
|
+
|
|
1353
|
+
- **Save button** — saves deployment configuration
|
|
1354
|
+
- **Reveal toggle buttons (👁)** — show/hide password fields for Deploy Token and GitHub Token
|
|
1355
|
+
|
|
1356
|
+
> Note: Deployment settings are stored in `config.json` and do not currently have dedicated API/MCP endpoints. They are managed through the `update_service_config` API.
|
|
1357
|
+
|
|
1358
|
+
| Action | API | MCP |
|
|
1359
|
+
|--------|-----|-----|
|
|
1360
|
+
| Get deployment config | `GET /api/config/service` | `get_service_config` |
|
|
1361
|
+
| | Returns service config including deployment settings | *(no params)* |
|
|
1362
|
+
| Update deployment config | `PUT /api/config/service` | `update_service_config` |
|
|
1363
|
+
| | **Body:** `{ deployment: { provider?, deployToken?, githubOrg?, githubToken? } }` | **Params:** `body` (object) |
|
|
1364
|
+
|
|
1365
|
+
### SaaS Publishing Section
|
|
1366
|
+
- **Description:** "Publish skills, prompts, agents, and apps from your Library to a shared SaaS workspace"
|
|
1367
|
+
- **Status dot** — green when connected, hidden otherwise
|
|
1368
|
+
- **Settings grid:**
|
|
1369
|
+
|
|
1370
|
+
| Field | Description |
|
|
1371
|
+
|-------|-------------|
|
|
1372
|
+
| **SaaS Base URL** | The SaaS platform URL |
|
|
1373
|
+
| **API Key** | SaaS API key (password field with reveal toggle) |
|
|
1374
|
+
|
|
1375
|
+
- **Save button** — saves SaaS config
|
|
1376
|
+
- **Test Connection button** — tests credentials
|
|
1377
|
+
|
|
1378
|
+
| Action | API | MCP |
|
|
1379
|
+
|--------|-----|-----|
|
|
1380
|
+
| Get SaaS config | `GET /api/saas/config` | `get_saas_config` |
|
|
1381
|
+
| | | *(no params)* |
|
|
1382
|
+
| Update SaaS config | `PUT /api/saas/config` | `update_saas_config` |
|
|
1383
|
+
| | **Body:** `{ baseUrl?, apiKey? }` | **Params:** `baseUrl?`, `apiKey?` |
|
|
1384
|
+
| Test SaaS connection | `POST /api/saas/test` | `test_saas_connection` |
|
|
1385
|
+
| | **Body:** `{ baseUrl?, apiKey? }` | **Params:** `baseUrl?`, `apiKey?` |
|
|
1386
|
+
|
|
1387
|
+
### Status Indicator Section
|
|
1388
|
+
- **Description:** "Show a live status dot in your menu bar (Mac) or system tray (Windows)"
|
|
1389
|
+
- **Install xbar Plugin button** (macOS only) — installs the status bar indicator
|
|
1390
|
+
|
|
1391
|
+
| Action | API | MCP |
|
|
1392
|
+
|--------|-----|-----|
|
|
1393
|
+
| Install xbar plugin | `POST /api/install-xbar` | `install_xbar` |
|
|
1394
|
+
| | | *(no params)* |
|
|
1395
|
+
|
|
1396
|
+
### Authorized Senders (Pairing)
|
|
1397
|
+
|
|
1398
|
+
| Action | API | MCP |
|
|
1399
|
+
|--------|-----|-----|
|
|
1400
|
+
| List paired senders | `GET /api/pairing` | `list_paired_senders` |
|
|
1401
|
+
| | | *(no params)* |
|
|
1402
|
+
| Pair sender | `POST /api/pairing` | `pair_sender` |
|
|
1403
|
+
| | **Body:** `{ senderKey }` | **Params:** `senderKey` |
|
|
1404
|
+
| Unpair sender | `DELETE /api/pairing/:senderKey` | `unpair_sender` |
|
|
1405
|
+
| | | **Params:** `senderKey` |
|
|
1406
|
+
|
|
1407
|
+
## 7.4 Docs
|
|
1408
|
+
|
|
1409
|
+
**Tab:** Docs
|
|
1410
|
+
|
|
1411
|
+
Documentation cards:
|
|
1412
|
+
|
|
1413
|
+
| Card | Description | Action |
|
|
1414
|
+
|------|-------------|--------|
|
|
1415
|
+
| **API Docs** | Full REST API reference — endpoints, schemas, auth | External link (↗) |
|
|
1416
|
+
| **MCP Tools** | MCP tool definitions — available actions via MCP | External link (↗) |
|
|
1417
|
+
| **Changelog** | Release history — features, fixes, breaking changes | In-app link (→) |
|
|
1418
|
+
| **User Guide** | This document — comprehensive platform walkthrough | In-app link (→) — **to be added** |
|
|
1419
|
+
|
|
1420
|
+
| Action | API | MCP |
|
|
1421
|
+
|--------|-----|-----|
|
|
1422
|
+
| Get changelog | `GET /api/changelog` | `get_changelog` |
|
|
1423
|
+
| | | *(no params)* |
|
|
1424
|
+
|
|
1425
|
+
---
|
|
1426
|
+
|
|
1427
|
+
# 8. Monitor
|
|
1428
|
+
|
|
1429
|
+
**URL:** `/monitor`
|
|
1430
|
+
**Purpose:** At-a-glance platform health and first-time setup checklist. This is the first page new users see after running `/setup`.
|
|
1431
|
+
|
|
1432
|
+
## 8.1 Setup Checklist
|
|
1433
|
+
|
|
1434
|
+
The **Getting Started** card appears at the top of the page. It tracks three onboarding milestones and auto-updates as you complete them.
|
|
1435
|
+
|
|
1436
|
+
| Element | Description |
|
|
1437
|
+
|---------|-------------|
|
|
1438
|
+
| **Connect a messaging channel** | Turns green when at least one channel (Telegram, Slack, WhatsApp, iMessage) is connected |
|
|
1439
|
+
| **Create your first agent** | Turns green when at least one personal (non-platform) agent exists |
|
|
1440
|
+
| **Send a test message** | Turns green when any personal agent has received at least one message |
|
|
1441
|
+
| **Start Setup button** | Navigates to `/?setup=true`, which opens the hub chat and auto-triggers the `/onboarding` skill to walk through channel + agent setup |
|
|
1442
|
+
| **"Setup complete!" badge** | Appears and the checklist collapses once all three items are done |
|
|
1443
|
+
|
|
1444
|
+
| Action | API | MCP |
|
|
1445
|
+
|--------|-----|-----|
|
|
1446
|
+
| Get dashboard data (drives checklist) | `GET /api/dashboard` | `get_dashboard` |
|
|
1447
|
+
|
|
1448
|
+
## 8.2 Dashboard
|
|
1449
|
+
|
|
1450
|
+
Below the setup checklist, a 2-column dashboard grid shows live platform metrics. Data auto-refreshes every 30 seconds.
|
|
1451
|
+
|
|
1452
|
+
### Platform Status Card
|
|
1453
|
+
|
|
1454
|
+
| Stat | Description |
|
|
1455
|
+
|------|-------------|
|
|
1456
|
+
| **Uptime** | How long the service has been running (hours + minutes) |
|
|
1457
|
+
| **Total Agents** | Count of all registered agents (platform + personal) |
|
|
1458
|
+
| **Personal Agents** | Count of non-platform agents (excludes hub, creators) |
|
|
1459
|
+
| **Organizations** | Distinct organizations across all agents |
|
|
1460
|
+
| **Channels** | Pills showing each connected channel name |
|
|
1461
|
+
| **MCPs** | Number of MCP servers in the registry |
|
|
1462
|
+
| **Active Automations** | Sum of active goals + active cron jobs across personal agents |
|
|
1463
|
+
| **Open Tasks** | Sum of approved + in-progress + review tasks across personal agents |
|
|
1464
|
+
|
|
1465
|
+
### Agent Activity Card
|
|
1466
|
+
|
|
1467
|
+
Shows personal agents sorted by most recent activity.
|
|
1468
|
+
|
|
1469
|
+
| Element | Description |
|
|
1470
|
+
|---------|-------------|
|
|
1471
|
+
| **Search input** | Filter agents by name or alias |
|
|
1472
|
+
| **Filter pills** | Toggle filters: MCPs, Skills, Automations, Open Tasks. Filters combine with AND logic. |
|
|
1473
|
+
| **Agent rows** | Each row shows: avatar (initials), name, @alias, badge counts (MCPs, skills, automations, tasks), message count, and time since last message |
|
|
1474
|
+
| **Click an agent row** | Navigates to `/ui?agent={agentId}` to chat with that agent |
|
|
1475
|
+
|
|
1476
|
+
### Recent Activity Card (full width)
|
|
1477
|
+
|
|
1478
|
+
A chronological feed of the last 15 messages across all agents.
|
|
1479
|
+
|
|
1480
|
+
| Element | Description |
|
|
1481
|
+
|---------|-------------|
|
|
1482
|
+
| **Time column** | Timestamp (HH:MM) |
|
|
1483
|
+
| **Agent column** | Agent that handled the message |
|
|
1484
|
+
| **Message column** | First 80 characters of the message. User messages shown in accent blue, agent responses in purple. |
|
|
1485
|
+
|
|
1486
|
+
### Costs Card (full width, conditional)
|
|
1487
|
+
|
|
1488
|
+
Only appears when cost data is available from `GET /api/costs`.
|
|
1489
|
+
|
|
1490
|
+
| Element | Description |
|
|
1491
|
+
|---------|-------------|
|
|
1492
|
+
| **Period rows** | Shows cost per time period (today, this week, this month) with dollar amounts |
|
|
1493
|
+
|
|
1494
|
+
| Action | API | MCP |
|
|
1495
|
+
|--------|-----|-----|
|
|
1496
|
+
| Get dashboard data | `GET /api/dashboard` | `get_dashboard` |
|
|
1497
|
+
| Get recent activity | `GET /api/activity?limit=15` | `get_activity` |
|
|
1498
|
+
| Get cost data | `GET /api/costs` | `get_all_costs` |
|
|
1499
|
+
|
|
1500
|
+
---
|
|
1501
|
+
|
|
1502
|
+
# 9. Projects
|
|
1503
|
+
|
|
1504
|
+
Cross-agent initiatives that bundle tasks, agents, orgs, apps, and artifacts under a single trackable entity. Unlike tasks (finite, single-agent), projects are long-running containers that group related work across your entire platform.
|
|
1505
|
+
|
|
1506
|
+
**Route:** `/projects`
|
|
1507
|
+
|
|
1508
|
+
## 9.1 Projects List
|
|
1509
|
+
|
|
1510
|
+
A responsive card grid showing all projects. Header displays active/paused/completed counts with a **+ New Project** button.
|
|
1511
|
+
|
|
1512
|
+
### Filter Bar
|
|
1513
|
+
|
|
1514
|
+
| Element | Description |
|
|
1515
|
+
|---------|-------------|
|
|
1516
|
+
| **Search** | Text search filtering by project name or description |
|
|
1517
|
+
| **Status pills** | Filter by All, Active, Paused, Completed, Archived |
|
|
1518
|
+
|
|
1519
|
+
### Project Cards
|
|
1520
|
+
|
|
1521
|
+
| Element | Description |
|
|
1522
|
+
|---------|-------------|
|
|
1523
|
+
| **Name** | Project name (display font) |
|
|
1524
|
+
| **Status badge** | Color-coded: active (green), paused (amber), completed (accent), archived (muted) |
|
|
1525
|
+
| **Owner badge** | Agent ID that owns the project |
|
|
1526
|
+
| **Team count** | Number of team member agents |
|
|
1527
|
+
| **Description** | Truncated to 2 lines |
|
|
1528
|
+
| **Progress bar** | Based on linked task completion percentage |
|
|
1529
|
+
| **Task stats** | "X/Y tasks done" |
|
|
1530
|
+
| **Linked counts** | Agents, apps, artifacts counts |
|
|
1531
|
+
| **Created date** | When the project was created |
|
|
1532
|
+
| **Click** | Opens the project detail panel |
|
|
1533
|
+
|
|
1534
|
+
## 9.2 Project Detail Panel
|
|
1535
|
+
|
|
1536
|
+
Slide-in panel showing full project details with editable fields.
|
|
1537
|
+
|
|
1538
|
+
| Element | Description |
|
|
1539
|
+
|---------|-------------|
|
|
1540
|
+
| **Name** | Editable project name |
|
|
1541
|
+
| **Description** | Editable description |
|
|
1542
|
+
| **Status** | Dropdown: active, paused, completed, archived |
|
|
1543
|
+
| **Owner** | Dropdown of all agents |
|
|
1544
|
+
| **Team Members** | Multi-select checkboxes of agents |
|
|
1545
|
+
| **Plan** | Editable markdown textarea |
|
|
1546
|
+
| **Notes** | Editable freeform textarea |
|
|
1547
|
+
| **Linked Tasks** | List with status dots, link/unlink controls |
|
|
1548
|
+
| **Linked Agents** | List with unlink controls |
|
|
1549
|
+
| **Linked Orgs** | List with unlink controls |
|
|
1550
|
+
| **Linked Apps** | List with unlink controls |
|
|
1551
|
+
| **Linked Artifacts** | List with name + type, unlink controls |
|
|
1552
|
+
| **Save button** | Saves all changes |
|
|
1553
|
+
| **Delete button** | Deletes the project |
|
|
1554
|
+
| **Link entity** | Type selector + value input to add new links |
|
|
1555
|
+
|
|
1556
|
+
## 9.3 Create Project Modal
|
|
1557
|
+
|
|
1558
|
+
Form for creating a new project.
|
|
1559
|
+
|
|
1560
|
+
| Field | Description |
|
|
1561
|
+
|-------|-------------|
|
|
1562
|
+
| **Name** | Required — project name |
|
|
1563
|
+
| **Description** | What this project is about |
|
|
1564
|
+
| **Owner** | Agent dropdown (defaults to hub) |
|
|
1565
|
+
| **Team Members** | Checkboxes for team agent selection |
|
|
1566
|
+
| **Plan** | Markdown textarea for the project plan |
|
|
1567
|
+
| **Notes** | Additional notes |
|
|
1568
|
+
|
|
1569
|
+
## 9.4 API & MCP Reference
|
|
1570
|
+
|
|
1571
|
+
| Action | API | MCP |
|
|
1572
|
+
|--------|-----|-----|
|
|
1573
|
+
| List all projects | `GET /api/projects` | `list_projects` |
|
|
1574
|
+
| Get project detail | `GET /api/projects/:id` | `get_project` |
|
|
1575
|
+
| Create project | `POST /api/projects` | `create_initiative` |
|
|
1576
|
+
| Update project | `PUT /api/projects/:id` | `update_project` |
|
|
1577
|
+
| Delete project | `DELETE /api/projects/:id` | `delete_project` |
|
|
1578
|
+
| Link entity to project | `POST /api/projects/:id/link` | `link_to_project` |
|
|
1579
|
+
| Unlink entity from project | `POST /api/projects/:id/unlink` | `unlink_from_project` |
|
|
1580
|
+
| Get project status report | `GET /api/projects/:id/status` | `get_project_status` |
|
|
1581
|
+
| Start autonomous execution | `POST /api/projects/:id/execute` | `execute_project` |
|
|
1582
|
+
| Pause autonomous execution | `POST /api/projects/:id/pause` | `pause_project` |
|
|
1583
|
+
|
|
1584
|
+
### Autonomous Execution
|
|
1585
|
+
|
|
1586
|
+
Projects can execute autonomously in the background. When you call `execute_project`, it creates a scheduled goal on the owner agent that:
|
|
1587
|
+
1. Reads the project status and finds the next undone task
|
|
1588
|
+
2. Marks it in-progress, executes it, marks it done
|
|
1589
|
+
3. Continues to the next task
|
|
1590
|
+
4. Reports to the owner agent's Slack channel when complete or blocked
|
|
1591
|
+
|
|
1592
|
+
Options: `schedule` (cron, default every 15 min), `reportTo` (channel:chatId), `budget` (maxDailyUsd, default $5).
|
|
1593
|
+
|
|
1594
|
+
Use `pause_project` to stop execution. The goal is disabled but preserved.
|
|
1595
|
+
|
|
1596
|
+
---
|
|
1597
|
+
|
|
1598
|
+
# 10. AI Gym
|
|
1599
|
+
|
|
1600
|
+
Personal AI training area with a coach agent, structured programs, dimension tracking, and personalized learning plans. Gated behind `gymEnabled: true` in settings.
|
|
1601
|
+
|
|
1602
|
+
**Route:** `/gym`
|
|
1603
|
+
|
|
1604
|
+
## 10.1 Onboarding (First Visit)
|
|
1605
|
+
|
|
1606
|
+
Full-screen 3-step flow shown when `onboardingComplete: false`. Must be completed before accessing the main gym.
|
|
1607
|
+
|
|
1608
|
+
### Step 1 — Choose Your Trainer
|
|
1609
|
+
|
|
1610
|
+
| Element | Description |
|
|
1611
|
+
|---------|-------------|
|
|
1612
|
+
| **Trainer cards** | Grid of 5 trainer profiles, each with avatar, name, style, and intro quote |
|
|
1613
|
+
| **Alex** | Collaborative · Steady — works alongside you |
|
|
1614
|
+
| **Jordan** | Direct · Steady — holds you accountable |
|
|
1615
|
+
| **Morgan** | Thoughtful · Steady — explains the "why" |
|
|
1616
|
+
| **Riley** | Challenging · Immersive — pushes you hard |
|
|
1617
|
+
| **Sam** | Patient · Steady — meets you where you are |
|
|
1618
|
+
| **Next button** | Enabled after selecting a trainer |
|
|
1619
|
+
|
|
1620
|
+
### Step 2 — Get to Know You
|
|
1621
|
+
|
|
1622
|
+
| Element | Description |
|
|
1623
|
+
|---------|-------------|
|
|
1624
|
+
| **Coach header** | Selected trainer's avatar and name |
|
|
1625
|
+
| **Coach message** | One-question prompt asking about professional background, AI experience, and goals |
|
|
1626
|
+
| **Text input** | Free-form textarea for response |
|
|
1627
|
+
| **Send button** | Sends response to gym agent via `POST /api/chat/gym/stream` |
|
|
1628
|
+
|
|
1629
|
+
### Step 3 — Get Your Plan
|
|
1630
|
+
|
|
1631
|
+
| Element | Description |
|
|
1632
|
+
|---------|-------------|
|
|
1633
|
+
| **Loading spinner** | Shown while coach generates the plan |
|
|
1634
|
+
| **Plan summary** | Two-bucket display: On-the-Job Training + Platform-Driven Learning |
|
|
1635
|
+
| **Enter the Gym** | Marks onboarding complete and enters main gym |
|
|
1636
|
+
|
|
1637
|
+
## 10.2 Mode Picker (Landing)
|
|
1638
|
+
|
|
1639
|
+
After onboarding, returning users see a **mode picker** instead of jumping straight into chat. Three tiles answer "what brings you to the gym?"
|
|
1640
|
+
|
|
1641
|
+
| Tile | Title | Description |
|
|
1642
|
+
|------|-------|-------------|
|
|
1643
|
+
| **1** | **I have work to do** | Bring a real task. Coach helps you execute while teaching along the way. Chat opens with "Describe what you need to get done..." placeholder. |
|
|
1644
|
+
| **2 (Recommended)** | **You tell me** | Coach picks what to work on based on activity, dimension gaps, and unused features. Visually emphasized with accent border. Auto-sends a coaching request — coach arrives with one specific recommendation. |
|
|
1645
|
+
| **3** | **I want to get smart** | Self-directed learning. Pick a topic or program. If in-progress program exists, coach offers to continue it. Otherwise prompts for topic. |
|
|
1646
|
+
|
|
1647
|
+
Additional elements:
|
|
1648
|
+
- **Time-aware greeting** — "Good morning/afternoon/evening. What brings you to the gym?"
|
|
1649
|
+
- **Streak counter** — shown below tiles if streak > 0
|
|
1650
|
+
|
|
1651
|
+
Clicking a tile sets the **session mode** (task/coach/learn), transitions to the main gym view, and primes the coach chat with mode-appropriate context.
|
|
1652
|
+
|
|
1653
|
+
## 10.3 Main Gym View
|
|
1654
|
+
|
|
1655
|
+
Three-panel layout: left sidebar, center panel (tabbed), bottom feed strip.
|
|
1656
|
+
|
|
1657
|
+
### Top Bar
|
|
1658
|
+
|
|
1659
|
+
| Element | Description |
|
|
1660
|
+
|---------|-------------|
|
|
1661
|
+
| **Configure button** | Opens the agent editor modal (same as Org page) in an iframe overlay, pre-loaded with the gym agent. Shows all 6 standard tabs plus 4 gym-specific tabs (Trainer, Learner, Dimensions, Programs). See section 2.2 for tab details. |
|
|
1662
|
+
| **Gym nav link** | Returns to gym home |
|
|
1663
|
+
| **Theme toggle** | Light/dark mode switch |
|
|
1664
|
+
|
|
1665
|
+
### Left Sidebar
|
|
1666
|
+
|
|
1667
|
+
| Element | Description |
|
|
1668
|
+
|---------|-------------|
|
|
1669
|
+
| **Streak counter** | Fire icon with current day streak count |
|
|
1670
|
+
| **Programs list** | All programs with status indicators: ✓ (done), N/M (in progress), ○ (not started) |
|
|
1671
|
+
| **Gym cards** | 2–3 cards with title, description, CTA button, and dismiss (×) control |
|
|
1672
|
+
| **"New" badge** | Shown on cards generated by the latest digest |
|
|
1673
|
+
|
|
1674
|
+
### Center Panel — Coach Tab
|
|
1675
|
+
|
|
1676
|
+
| Element | Description |
|
|
1677
|
+
|---------|-------------|
|
|
1678
|
+
| **Coach header** | Trainer name + avatar + style subtitle |
|
|
1679
|
+
| **Chat messages** | Scrollable conversation area (user right-aligned, coach left-aligned) |
|
|
1680
|
+
| **Chat input** | Textarea with Enter-to-send + send button. Routes to `POST /api/chat/gym/stream` |
|
|
1681
|
+
| **Typing indicator** | Three bouncing dots shown while coach is responding |
|
|
1682
|
+
| **SSE streaming** | Responses stream in real-time via `GET /api/chat/jobs/:jobId/stream` |
|
|
1683
|
+
|
|
1684
|
+
### Center Panel — Progress Tab
|
|
1685
|
+
|
|
1686
|
+
| Element | Description |
|
|
1687
|
+
|---------|-------------|
|
|
1688
|
+
| **Radar chart** | SVG spider chart showing 5 dimensions at current scores (0–5) |
|
|
1689
|
+
| **Dimension breakdown** | Row per dimension: label, progress bar, score/5, trend arrow (↑ ↓ →) |
|
|
1690
|
+
| **Next focus** | Callout highlighting the weakest dimension with guidance text |
|
|
1691
|
+
| **Milestones** | Chronological list of achievements (program completions, level-ups) |
|
|
1692
|
+
|
|
1693
|
+
### Bottom Feed Strip
|
|
1694
|
+
|
|
1695
|
+
Placeholder for P1. Displays "Feed coming in P1".
|
|
1696
|
+
|
|
1697
|
+
## 10.4 AI Strength Dimensions
|
|
1698
|
+
|
|
1699
|
+
Learners are scored across 5 dimensions on a **1–5 scale** (0 = not yet assessed):
|
|
1700
|
+
|
|
1701
|
+
| Dimension | What It Measures |
|
|
1702
|
+
|-----------|-----------------|
|
|
1703
|
+
| **Application** | How deeply AI is integrated into actual work — usage frequency, breadth, habit |
|
|
1704
|
+
| **Communication** | Prompt effectiveness — context, specificity, iteration efficiency |
|
|
1705
|
+
| **Knowledge** | Conceptual understanding of AI, agents, tools, MCPs, memory |
|
|
1706
|
+
| **Orchestration** | Multi-agent workflows — goals, cron, delegation, automation |
|
|
1707
|
+
| **Craft** | Building AI systems — agent creation, system prompts, tool/MCP config |
|
|
1708
|
+
|
|
1709
|
+
Score labels: 1 = Beginner, 2 = Developing, 3 = Proficient, 4 = Advanced, 5 = Expert.
|
|
1710
|
+
|
|
1711
|
+
## 10.5 Programs
|
|
1712
|
+
|
|
1713
|
+
Structured training curricula. Each program has modules, and each module has steps with verification.
|
|
1714
|
+
|
|
1715
|
+
### Getting Started (Bundled)
|
|
1716
|
+
|
|
1717
|
+
Pre-installed beginner program with 3 modules and 7 steps:
|
|
1718
|
+
- **Meet Your AI** — What is an agent? + Have your first conversation
|
|
1719
|
+
- **Give It Context** — Prompt quality + Try a detailed prompt + Upload a file
|
|
1720
|
+
- **Make It Yours** — Create a specialized agent + Write a system prompt
|
|
1721
|
+
|
|
1722
|
+
### Step Verification Types
|
|
1723
|
+
|
|
1724
|
+
| Type | How It Works |
|
|
1725
|
+
|------|-------------|
|
|
1726
|
+
| **knowledge** | Coach asks comprehension questions, evaluates understanding |
|
|
1727
|
+
| **platform-check** | Coach calls MCP tools to verify platform state changed (e.g., new agent created) |
|
|
1728
|
+
| **self-report** | User describes what they did and learned |
|
|
1729
|
+
|
|
1730
|
+
## 10.6 Activity Digest
|
|
1731
|
+
|
|
1732
|
+
Scheduled daily at 6am (when `gymEnabled: true`). Also triggerable manually via `POST /api/gym/digest/run`.
|
|
1733
|
+
|
|
1734
|
+
What it does:
|
|
1735
|
+
1. Scans all agent activity summaries
|
|
1736
|
+
2. Scores 5 dimensions using observed patterns
|
|
1737
|
+
3. Snapshots dimension history weekly
|
|
1738
|
+
4. Updates learner profile (activity, features, streak, dimensions)
|
|
1739
|
+
5. Writes daily journal to `agents/platform/gym/memory/daily/<date>.md`
|
|
1740
|
+
6. Generates 2–3 gym cards (weakest dimension tips, dormant agent nudges, unused feature discovery)
|
|
1741
|
+
|
|
1742
|
+
## 10.7 Trainer Souls
|
|
1743
|
+
|
|
1744
|
+
Each trainer is a `soul.md` file prepended to the gym agent's system prompt at spawn time. Switching trainers changes the coaching voice without affecting progress, plan, or profile. Switch anytime via the **Trainer tab** in the gym agent's Configure modal (top bar → Configure → Trainer tab).
|
|
1745
|
+
|
|
1746
|
+
Avatar SVGs at `public/trainers/{alex,jordan,morgan,riley,sam}.svg`.
|
|
1747
|
+
|
|
1748
|
+
## 10.8 Coach-Created Guides
|
|
1749
|
+
|
|
1750
|
+
After any substantive coaching session, the gym agent auto-generates a reusable guide and asks the user to review it.
|
|
1751
|
+
|
|
1752
|
+
| Element | Description |
|
|
1753
|
+
|---------|-------------|
|
|
1754
|
+
| **Guide generation** | Coach distills session into clean step-by-step instructions via `create_gym_guide` MCP tool |
|
|
1755
|
+
| **Review prompt** | Coach asks "I wrote up a guide from what we just did — want to review it?" |
|
|
1756
|
+
| **Approval** | User can edit, approve, or discard before saving |
|
|
1757
|
+
| **Where guides appear** | Gym sidebar → Guides tab → "Coach Created" filter |
|
|
1758
|
+
| **Skill publishing** | Guides can also be published as agent-executable skills via `create_skill` |
|
|
1759
|
+
|
|
1760
|
+
Guides have two forms: human-readable (browsable in gym) and agent-executable (assignable as skills).
|
|
1761
|
+
|
|
1762
|
+
| Action | API | MCP |
|
|
1763
|
+
|--------|-----|-----|
|
|
1764
|
+
| List coach guides | `GET /api/gym/guides` | `list_gym_guides` |
|
|
1765
|
+
| Create coach guide | `POST /api/gym/guides` | `create_gym_guide` |
|
|
1766
|
+
| | **Body:** `{ title, description?, difficulty?, dimensions?, estimatedTime?, modules?, content? }` | **Params:** `title`, `description?`, `difficulty?`, `dimensions?`, `estimatedTime?`, `modules?`, `content?` |
|
|
1767
|
+
|
|
1768
|
+
## 10.9 API & MCP Reference
|
|
1769
|
+
|
|
1770
|
+
| Action | API | MCP |
|
|
1771
|
+
|--------|-----|-----|
|
|
1772
|
+
| Get learner profile | `GET /api/gym/learner-profile` | `get_learner_profile` |
|
|
1773
|
+
| Update learner profile | `PUT /api/gym/learner-profile` | `update_learner_profile` |
|
|
1774
|
+
| | **Body:** any profile fields (merged) | **Params:** `data` (object) |
|
|
1775
|
+
| Get training plan | `GET /api/gym/plan` | `get_plan` |
|
|
1776
|
+
| Update training plan | `PUT /api/gym/plan` | `update_plan` |
|
|
1777
|
+
| | **Body:** full plan object | **Params:** `data` (object) |
|
|
1778
|
+
| Get program progress | `GET /api/gym/progress` | `get_gym_progress` |
|
|
1779
|
+
| Update program progress | `PUT /api/gym/progress` | `update_gym_progress` |
|
|
1780
|
+
| | **Body:** progress data | **Params:** `data` (object) |
|
|
1781
|
+
| List gym cards | `GET /api/gym/cards` | `list_gym_cards` |
|
|
1782
|
+
| Create gym card | `POST /api/gym/cards` | `create_gym_card` |
|
|
1783
|
+
| | **Body:** `{ title, description, type, cta?, ctaAction? }` | **Params:** `title`, `description`, `type` |
|
|
1784
|
+
| Dismiss gym card | `DELETE /api/gym/cards/:id` | `dismiss_gym_card` |
|
|
1785
|
+
| | | **Params:** `id` |
|
|
1786
|
+
| Snapshot dimensions | `POST /api/gym/dimensions/snapshot` | `snapshot_dimensions` |
|
|
1787
|
+
| | **Body:** `{ date?, dimensions }` | **Params:** `date?`, `dimensions` |
|
|
1788
|
+
| Get dimension history | `GET /api/gym/dimensions/history` | `get_dimension_history` |
|
|
1789
|
+
| List programs | `GET /api/gym/programs` | `list_gym_programs` |
|
|
1790
|
+
| Get program detail | `GET /api/gym/programs/:slug` | `get_gym_program` |
|
|
1791
|
+
| | | **Params:** `slug` |
|
|
1792
|
+
| Create program | `POST /api/gym/programs` | -- |
|
|
1793
|
+
| | **Body:** `{ title, slug?, description, difficulty, modules[] }` | |
|
|
1794
|
+
| Update program | `PATCH /api/gym/programs/:slug` | `update_gym_program` |
|
|
1795
|
+
| | **Body:** fields to update | **Params:** `slug`, `body` |
|
|
1796
|
+
| Delete program | `DELETE /api/gym/programs/:slug` | `delete_gym_program` |
|
|
1797
|
+
| | | **Params:** `slug` |
|
|
1798
|
+
| Import program from markdown | `POST /api/gym/programs/import-markdown` | `import_program` |
|
|
1799
|
+
| | **Body:** `{ markdown }` (H1=program, H2=module, H3=step) | **Params:** `markdown` |
|
|
1800
|
+
| Get agent activity summary | `GET /api/agents/:id/activity-summary` | `get_agent_activity_summary` |
|
|
1801
|
+
| | | **Params:** `agentId` |
|
|
1802
|
+
| Get agent logs (paginated) | `GET /api/agents/:id/logs?limit=50&offset=0` | `get_agent_logs` |
|
|
1803
|
+
| | | **Params:** `agentId`, `limit?`, `offset?` |
|
|
1804
|
+
| Search agent logs | `GET /api/agents/logs/search?q=keyword&agentIds=a,b` | `search_agent_logs` |
|
|
1805
|
+
| | | **Params:** `q`, `agentIds?` |
|
|
1806
|
+
| Run activity digest | `POST /api/gym/digest/run` | `run_gym_digest` |
|
|
1807
|
+
| Get gym feed | `GET /api/gym/feed` | `get_gym_feed` |
|
|
1808
|
+
| | Returns tips, platformUpdates, briefing | *(no params)* |
|
|
1809
|
+
| Get gym config flags | `GET /api/gym/config` | `get_gym_config` |
|
|
1810
|
+
| | Returns gymEnabled, gymOnlyMode, aibriefingEnabled | *(no params)* |
|
|
1811
|
+
| List coach-created guides | `GET /api/gym/guides` | `list_gym_guides` |
|
|
1812
|
+
| | Returns array of programs with source=coach | *(no params)* |
|
|
1813
|
+
| Create coach guide | `POST /api/gym/guides` | `create_gym_guide` |
|
|
1814
|
+
| | **Body:** `{ title, description?, difficulty?, dimensions?, estimatedTime?, modules?, content? }` | **Params:** `title`, `description?`, `difficulty?`, `dimensions?`, `estimatedTime?`, `modules?`, `content?` |
|
|
1815
|
+
|
|
1816
|
+
---
|
|
1817
|
+
|
|
1818
|
+
# Appendix A: Global Navigation
|
|
1819
|
+
|
|
1820
|
+
Present on every page:
|
|
1821
|
+
|
|
1822
|
+
| Element | Description |
|
|
1823
|
+
|---------|-------------|
|
|
1824
|
+
| **MyAIforOne logo** | Home link |
|
|
1825
|
+
| **Agents tab** | → `/org` |
|
|
1826
|
+
| **Chat tab** | → `/ui` |
|
|
1827
|
+
| **Library tab** | → `/library` |
|
|
1828
|
+
| **Projects tab** | → `/projects` |
|
|
1829
|
+
| **Lab tab** | → `/lab` |
|
|
1830
|
+
| **Gym tab** | → `/gym` (only visible when `gymEnabled: true`) |
|
|
1831
|
+
| **Marketplace link** | → `/marketplace` |
|
|
1832
|
+
| **Admin button (⚙)** | → `/admin` |
|
|
1833
|
+
| **User Guide button** | → `/user-guide` — this document |
|
|
1834
|
+
| **Monitor button** | → `/monitor` — setup checklist + live dashboard |
|
|
1835
|
+
| **Mini Bar button** | Opens a compact floating popup window (440×460) at `/mini`. A lightweight chat interface you can keep open while working — has agent selection, @mention, send, and basic chat. Useful as a quick-access sidebar. |
|
|
1836
|
+
| **Theme toggle** | Switches between light and dark mode. Persists across sessions via localStorage. |
|
|
1837
|
+
|
|
1838
|
+
---
|
|
1839
|
+
|
|
1840
|
+
# Appendix B: Dashboard & Health
|
|
1841
|
+
|
|
1842
|
+
| Action | API | MCP |
|
|
1843
|
+
|--------|-----|-----|
|
|
1844
|
+
| Full dashboard | `GET /api/dashboard` | `get_dashboard` |
|
|
1845
|
+
| | Returns all agents, channels, accounts, uptime | *(no params)* |
|
|
1846
|
+
| Health check | `GET /health` | `health_check` |
|
|
1847
|
+
| | Returns `{ status: "ok" }` | *(no params)* |
|
|
1848
|
+
|
|
1849
|
+
---
|
|
1850
|
+
|
|
1851
|
+
# Appendix C: Webhook
|
|
1852
|
+
|
|
1853
|
+
External systems can trigger agent messages via webhook:
|
|
1854
|
+
|
|
1855
|
+
| Action | API | MCP |
|
|
1856
|
+
|--------|-----|-----|
|
|
1857
|
+
| Send webhook | `POST /webhook/:agentId` | `send_webhook` |
|
|
1858
|
+
| | **Headers:** `x-webhook-secret: secret` (optional) | **Params:** `agentId`, `text`, `secret?`, `channel?`, `chatId?` |
|
|
1859
|
+
| | **Body:** `{ text, channel?, chatId? }` | |
|
|
1860
|
+
|
|
1861
|
+
---
|
|
1862
|
+
|
|
1863
|
+
# Appendix D: Complete MCP Tool Index
|
|
1864
|
+
|
|
1865
|
+
Quick reference — all MCP tools alphabetically:
|
|
1866
|
+
|
|
1867
|
+
| # | Tool | Category |
|
|
1868
|
+
|---|------|----------|
|
|
1869
|
+
| 1 | `add_account` | Accounts |
|
|
1870
|
+
| 2 | `add_agent_route` | Channels |
|
|
1871
|
+
| 3 | `add_monitored_chat` | Channels |
|
|
1872
|
+
| 4 | `add_mcp_to_registry` | Marketplace |
|
|
1873
|
+
| 5 | `assign_to_agent` | Marketplace |
|
|
1874
|
+
| 6 | `browse_dirs` | Utilities |
|
|
1875
|
+
| 7 | `browse_registry` | Marketplace |
|
|
1876
|
+
| 8 | `check_account_status` | Accounts |
|
|
1877
|
+
| 9 | `check_app_health` | Apps |
|
|
1878
|
+
| 10 | `clear_memory_context` | Memory |
|
|
1879
|
+
| 11 | `clear_model` | Model |
|
|
1880
|
+
| 12 | `create_agent` | Agents |
|
|
1881
|
+
| -- | `create_gym_card` | AI Gym |
|
|
1882
|
+
| -- | `create_gym_guide` | AI Gym |
|
|
1883
|
+
| 13 | `create_app` | Apps |
|
|
1884
|
+
| 14 | `create_cron` | Cron |
|
|
1885
|
+
| 15 | `create_goal` | Goals |
|
|
1886
|
+
| 16 | `create_mcp_connection` | MCPs |
|
|
1887
|
+
| 17 | `create_initiative` | Projects |
|
|
1888
|
+
| 18 | `create_project` | Tasks |
|
|
1889
|
+
| 19 | `create_prompt` | Marketplace |
|
|
1890
|
+
| 19 | `create_skill` | Skills |
|
|
1891
|
+
| 20 | `create_task` | Tasks |
|
|
1892
|
+
| 21 | `delegate_message` | Chat |
|
|
1893
|
+
| 22 | `delete_account` | Accounts |
|
|
1894
|
+
| 23 | `delete_agent` | Agents |
|
|
1895
|
+
| -- | `delete_gym_program` | AI Gym |
|
|
1896
|
+
| 24 | `delete_app` | Apps |
|
|
1897
|
+
| 25 | `delete_cron` | Cron |
|
|
1898
|
+
| 26 | `delete_goal` | Goals |
|
|
1899
|
+
| 27 | `delete_mcp_connection` | MCPs |
|
|
1900
|
+
| -- | `delete_project` | Projects |
|
|
1901
|
+
| 28 | `delete_mcp_key` | MCPs |
|
|
1902
|
+
| 29 | `delete_session` | Sessions |
|
|
1903
|
+
| -- | `create_session_tab` | Session Tabs |
|
|
1904
|
+
| -- | `delete_session_tab` | Session Tabs |
|
|
1905
|
+
| 30 | `delete_task` | Tasks |
|
|
1906
|
+
| -- | `execute_project` | Projects |
|
|
1907
|
+
| -- | `dismiss_gym_card` | AI Gym |
|
|
1908
|
+
| 31 | `download_agent_file` | Files |
|
|
1909
|
+
| 32 | `get_activity` | Activity |
|
|
1910
|
+
| 33 | `get_agent` | Agents |
|
|
1911
|
+
| -- | `get_agent_activity_summary` | AI Gym |
|
|
1912
|
+
| 34 | `get_agent_cost` | Cost |
|
|
1913
|
+
| 35 | `get_agent_instructions` | Agents |
|
|
1914
|
+
| 36 | `get_agent_logs` | Activity |
|
|
1915
|
+
| 37 | `get_agent_memory` | Memory |
|
|
1916
|
+
| -- | `get_session_tab_history` | Session Tabs |
|
|
1917
|
+
| 38 | `get_agent_registry` | Agents |
|
|
1918
|
+
| 39 | `get_agent_skills` | Skills |
|
|
1919
|
+
| 40 | `get_all_costs` | Cost |
|
|
1920
|
+
| 41 | `get_all_tasks` | Tasks |
|
|
1921
|
+
| 42 | `get_changelog` | Utilities |
|
|
1922
|
+
| 43 | `get_chat_job_raw` | Chat |
|
|
1923
|
+
| 44 | `get_cron_history` | Cron |
|
|
1924
|
+
| 45 | `get_dashboard` | Dashboard |
|
|
1925
|
+
| -- | `get_dimension_history` | AI Gym |
|
|
1926
|
+
| 46 | `get_goal_history` | Goals |
|
|
1927
|
+
| -- | `get_heartbeat_history` | Heartbeat |
|
|
1928
|
+
| -- | `get_gym_config` | AI Gym |
|
|
1929
|
+
| -- | `get_gym_feed` | AI Gym |
|
|
1930
|
+
| -- | `get_gym_program` | AI Gym |
|
|
1931
|
+
| -- | `get_gym_progress` | AI Gym |
|
|
1932
|
+
| -- | `get_learner_profile` | AI Gym |
|
|
1933
|
+
| -- | `get_mcp_catalog` | MCPs |
|
|
1934
|
+
| 49 | `get_model` | Model |
|
|
1935
|
+
| -- | `get_org_skills` | Skills |
|
|
1936
|
+
| -- | `get_plan` | AI Gym |
|
|
1937
|
+
| -- | `get_platform_agents` | Lab |
|
|
1938
|
+
| -- | `get_project` | Projects |
|
|
1939
|
+
| -- | `get_project_status` | Projects |
|
|
1940
|
+
| -- | `get_profile` | Profile |
|
|
1941
|
+
| -- | `get_prompt_trigger` | Marketplace |
|
|
1942
|
+
| 53 | `get_saas_config` | SaaS |
|
|
1943
|
+
| 54 | `get_service_config` | Config |
|
|
1944
|
+
| 55 | `get_sticky_routing` | Channels |
|
|
1945
|
+
| 56 | `get_task_stats` | Tasks |
|
|
1946
|
+
| 57 | `get_wiki_sync_history` | Wiki |
|
|
1947
|
+
| 58 | `health_check` | Dashboard |
|
|
1948
|
+
| -- | `import_program` | AI Gym |
|
|
1949
|
+
| 59 | `import_skills` | Marketplace |
|
|
1950
|
+
| 60 | `install_registry_item` | Marketplace |
|
|
1951
|
+
| 61 | `install_xbar` | Utilities |
|
|
1952
|
+
| -- | `link_to_project` | Projects |
|
|
1953
|
+
| 62 | `list_agents` | Agents |
|
|
1954
|
+
| -- | `list_gym_cards` | AI Gym |
|
|
1955
|
+
| -- | `list_gym_guides` | AI Gym |
|
|
1956
|
+
| -- | `list_gym_programs` | AI Gym |
|
|
1957
|
+
| 63 | `list_agent_files` | Files |
|
|
1958
|
+
| 64 | `list_apps` | Apps |
|
|
1959
|
+
| 65 | `list_automations` | Automations |
|
|
1960
|
+
| 66 | `list_channels` | Channels |
|
|
1961
|
+
| 67 | `list_mcp_connections` | MCPs |
|
|
1962
|
+
| 68 | `list_mcp_keys` | MCPs |
|
|
1963
|
+
| 69 | `list_mcps` | MCPs |
|
|
1964
|
+
| 70 | `list_paired_senders` | Pairing |
|
|
1965
|
+
| -- | `list_projects` | Projects |
|
|
1966
|
+
| 71 | `list_sessions` | Sessions |
|
|
1967
|
+
| -- | `list_session_tabs` | Session Tabs |
|
|
1968
|
+
| 72 | `list_tasks` | Tasks |
|
|
1969
|
+
| 73 | `list_accounts` | Accounts |
|
|
1970
|
+
| 74 | `pair_sender` | Pairing |
|
|
1971
|
+
| -- | `pause_project` | Projects |
|
|
1972
|
+
| 75 | `publish_to_saas` | SaaS |
|
|
1973
|
+
| 76 | `recover_agent` | Agents |
|
|
1974
|
+
| -- | `run_gym_digest` | AI Gym |
|
|
1975
|
+
| -- | `rename_session_tab` | Session Tabs |
|
|
1976
|
+
| 77 | `remove_agent_route` | Channels |
|
|
1977
|
+
| 78 | `remove_monitored_chat` | Channels |
|
|
1978
|
+
| 79 | `reset_session` | Sessions |
|
|
1979
|
+
| 80 | `save_mcp_key` | MCPs |
|
|
1980
|
+
| 81 | `scan_skills` | Marketplace |
|
|
1981
|
+
| -- | `search_agent_logs` | AI Gym |
|
|
1982
|
+
| 82 | `search_memory` | Memory |
|
|
1983
|
+
| 83 | `send_message` | Chat |
|
|
1984
|
+
| -- | `snapshot_dimensions` | AI Gym |
|
|
1985
|
+
| 84 | `send_webhook` | Webhook |
|
|
1986
|
+
| 85 | `set_model` | Model |
|
|
1987
|
+
| 86 | `set_platform_default` | Marketplace |
|
|
1988
|
+
| 87 | `set_prompt_trigger` | Marketplace |
|
|
1989
|
+
| 88 | `start_account_login` | Accounts |
|
|
1990
|
+
| 89 | `start_stream` | Chat |
|
|
1991
|
+
| 90 | `stop_chat_job` | Chat |
|
|
1992
|
+
| 91 | `submit_login_code` | Accounts |
|
|
1993
|
+
| 92 | `test_provider` | Service Config / Multi-Provider |
|
|
1994
|
+
| 93 | `test_saas_connection` | SaaS |
|
|
1995
|
+
| 94 | `toggle_cron` | Cron |
|
|
1996
|
+
| 94 | `toggle_goal` | Goals |
|
|
1997
|
+
| 95 | `trigger_cron` | Cron |
|
|
1998
|
+
| 96 | `trigger_goal` | Goals |
|
|
1999
|
+
| 97 | `trigger_heartbeat` | Heartbeat |
|
|
2000
|
+
| 98 | `trigger_wiki_sync` | Wiki |
|
|
2001
|
+
| 99 | `unpair_sender` | Pairing |
|
|
2002
|
+
| -- | `unlink_from_project` | Projects |
|
|
2003
|
+
| 100 | `update_agent` | Agents |
|
|
2004
|
+
| -- | `update_gym_program` | AI Gym |
|
|
2005
|
+
| -- | `update_gym_progress` | AI Gym |
|
|
2006
|
+
| -- | `update_learner_profile` | AI Gym |
|
|
2007
|
+
| 101 | `update_app` | Apps |
|
|
2008
|
+
| 102 | `update_channel` | Channels |
|
|
2009
|
+
| -- | `update_plan` | AI Gym |
|
|
2010
|
+
| -- | `update_profile` | Profile |
|
|
2011
|
+
| -- | `update_project` | Projects |
|
|
2012
|
+
| 103 | `update_saas_config` | SaaS |
|
|
2013
|
+
| 104 | `update_service_config` | Config |
|
|
2014
|
+
| 105 | `update_task` | Tasks |
|
|
2015
|
+
| 106 | `upload_file` | Files |
|
|
2016
|
+
| 107 | `whoami` | Accounts |
|