feat(hands): add version fields, approval_mode, and stronger routing aliases
- Add version = "1.0.0" to all 14 hands - Add approval_mode toggle to clip and devops hands (queue actions for user review before executing) - Strengthen routing aliases for analytics, apitester, browser, collector, devops, lead, predictor, researcher, strategist
This commit is contained in:
1 parent
6e48be1e31
commit
5d947e8da0
14 files changed
+100
-14
No files matched your search
@@ -1,4 +1,5 @@
|
||||
id = "analytics"
|
||||
version = "1.0.0"
|
||||
name = "Analytics Hand"
|
||||
description = "Autonomous data analytics agent — data collection, analysis, visualization, dashboards, and automated reporting"
|
||||
category = "data"
|
||||
@@ -28,6 +29,10 @@ aliases = [
|
||||
"dashboard",
|
||||
"automated report",
|
||||
"statistical analysis",
|
||||
"analyze data",
|
||||
"run analytics",
|
||||
"data insights",
|
||||
"generate report",
|
||||
]
|
||||
weak_aliases = [
|
||||
"visualization",
|
||||
@@ -37,6 +42,8 @@ weak_aliases = [
|
||||
"excel analysis",
|
||||
"data pipeline",
|
||||
"etl",
|
||||
"metrics",
|
||||
"trends",
|
||||
]
|
||||
|
||||
[[requires]]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "apitester"
|
||||
version = "1.0.0"
|
||||
name = "API Tester Hand"
|
||||
description = "Autonomous API testing agent — endpoint discovery, request validation, load testing, and regression detection"
|
||||
category = "development"
|
||||
@@ -29,6 +30,10 @@ aliases = [
|
||||
"load test",
|
||||
"regression test",
|
||||
"api discovery",
|
||||
"test api",
|
||||
"api testing",
|
||||
"api validation",
|
||||
"test endpoint",
|
||||
]
|
||||
weak_aliases = [
|
||||
"api debug",
|
||||
@@ -36,6 +41,8 @@ weak_aliases = [
|
||||
"swagger",
|
||||
"openapi",
|
||||
"postman",
|
||||
"stress test",
|
||||
"http test",
|
||||
]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "browser"
|
||||
version = "1.0.0"
|
||||
name = "Browser Hand"
|
||||
description = "Autonomous web browser — navigates sites, fills forms, clicks buttons, and completes multi-step web tasks with user approval for purchases"
|
||||
category = "productivity"
|
||||
@@ -33,8 +34,10 @@ aliases = [
|
||||
"click button",
|
||||
"web login",
|
||||
"browser automation",
|
||||
"browse web",
|
||||
"scrape page",
|
||||
]
|
||||
weak_aliases = ["web page", "submit form", "web task"]
|
||||
weak_aliases = ["web page", "submit form", "web task", "browser task", "open browser", "web automation"]
|
||||
|
||||
[[requires]]
|
||||
key = "python3"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "clip"
|
||||
version = "1.0.0"
|
||||
name = "Clip Hand"
|
||||
description = "Turns long-form video into viral short clips with captions and thumbnails"
|
||||
category = "content"
|
||||
@@ -199,6 +200,13 @@ description = "Phone number in international format, no + or spaces (e.g. 141555
|
||||
setting_type = "text"
|
||||
default = ""
|
||||
|
||||
[[settings]]
|
||||
key = "approval_mode"
|
||||
label = "Approval Mode"
|
||||
description = "Queue clips for your review before publishing to channels"
|
||||
setting_type = "toggle"
|
||||
default = "true"
|
||||
|
||||
# ─── Agent configuration ─────────────────────────────────────────────────────
|
||||
|
||||
[agent]
|
||||
@@ -469,6 +477,19 @@ Use `del clip_N.mp4 clip_N_vert.mp4` on Windows, `rm clip_N.mp4 clip_N_vert.mp4`
|
||||
|
||||
After all clips are processed and before the final report, check if publishing is configured.
|
||||
|
||||
### Step 0: Check approval_mode
|
||||
If `approval_mode` is ENABLED (default):
|
||||
1. Write each clip's publish action to `clip_publish_queue.json`:
|
||||
```json
|
||||
[{"id": "pub_001", "clip_file": "clip_1_final.mp4", "title": "clip title", "targets": ["telegram", "whatsapp"], "created": "timestamp", "status": "pending"}]
|
||||
```
|
||||
2. Write a human-readable `clip_publish_queue_preview.md` listing each clip, its title, and target platforms
|
||||
3. event_publish "clip_publish_queue_updated" with queue size
|
||||
4. Do NOT publish — wait for user to approve via the queue file
|
||||
5. Skip the remaining publish steps below and proceed to Phase 7
|
||||
|
||||
If `approval_mode` is DISABLED, continue with the publish steps below.
|
||||
|
||||
### Step 1: Check settings
|
||||
Look at the `Publish Clips To` setting from User Configuration:
|
||||
- If `local_only`, absent, or empty → skip this phase entirely
|
||||
@@ -587,6 +608,7 @@ Update stats via memory_store:
|
||||
- Never expose API tokens (Telegram, WhatsApp) in reports or summaries — always mask as `***`
|
||||
- Publishing errors are non-fatal — if a platform fails, log the error and continue with remaining clips/platforms
|
||||
- Respect rate limits: add 1-second delay between sends when publishing more than 3 clips
|
||||
- In `approval_mode` (default), ALWAYS write to queue — NEVER publish without user review
|
||||
"""
|
||||
|
||||
[dashboard]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "collector"
|
||||
version = "1.0.0"
|
||||
name = "Collector Hand"
|
||||
description = "Autonomous intelligence collector — monitors any target continuously with change detection and knowledge graphs"
|
||||
category = "data"
|
||||
@@ -29,8 +30,11 @@ aliases = [
|
||||
"collect intelligence",
|
||||
"osint",
|
||||
"change detection",
|
||||
"gather info",
|
||||
"market intelligence",
|
||||
"competitive analysis",
|
||||
]
|
||||
weak_aliases = ["watch", "signals", "continuous monitoring"]
|
||||
weak_aliases = ["watch", "signals", "continuous monitoring", "surveillance", "intel", "news monitoring"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
|
||||
+26
-6
@@ -1,4 +1,5 @@
|
||||
id = "devops"
|
||||
version = "1.0.0"
|
||||
name = "DevOps Hand"
|
||||
description = "Autonomous DevOps engineer — CI/CD management, infrastructure monitoring, deployment automation, and incident response"
|
||||
category = "development"
|
||||
@@ -186,6 +187,13 @@ label = "Auto-rollback to previous version"
|
||||
value = "blue_green"
|
||||
label = "Blue-green switch back"
|
||||
|
||||
[[settings]]
|
||||
key = "approval_mode"
|
||||
label = "Approval Mode"
|
||||
description = "Queue deployment and infrastructure actions for your review instead of executing directly"
|
||||
setting_type = "toggle"
|
||||
default = "true"
|
||||
|
||||
# ─── Agent configuration ─────────────────────────────────────────────────────
|
||||
|
||||
[agent]
|
||||
@@ -217,8 +225,9 @@ curl --version | head -1
|
||||
|
||||
Load context:
|
||||
1. memory_recall `devops_hand_state` — load previous monitoring data and incident history
|
||||
2. Read **User Configuration** for infrastructure, ci_platform, service_urls, etc.
|
||||
3. knowledge_query for known infrastructure topology and previous incidents
|
||||
2. Read **User Configuration** for infrastructure, ci_platform, service_urls, approval_mode, etc.
|
||||
3. file_read `devops_queue.json` if it exists — pending deployment/remediation actions
|
||||
4. knowledge_query for known infrastructure topology and previous incidents
|
||||
|
||||
---
|
||||
|
||||
@@ -285,6 +294,17 @@ Identify optimization opportunities:
|
||||
|
||||
When asked to deploy or manage deployments:
|
||||
|
||||
If `approval_mode` is ENABLED (default):
|
||||
1. Build a deployment proposal with target, environment, artifacts, and rollback plan
|
||||
2. Write the proposal to `devops_queue.json`:
|
||||
```json
|
||||
[{"id": "deploy_001", "action": "deploy", "target": "production", "artifact": "app:v1.2.3", "rollback_plan": "revert to v1.2.2", "created": "timestamp", "status": "pending"}]
|
||||
```
|
||||
3. Write a human-readable `devops_queue_preview.md` with deployment details and risk assessment
|
||||
4. event_publish "devops_queue_updated" with queue size
|
||||
5. Do NOT execute — wait for user to approve via the queue file
|
||||
|
||||
If `approval_mode` is DISABLED:
|
||||
1. Verify the deployment target and environment
|
||||
2. Check prerequisites (build artifacts, configs, secrets)
|
||||
3. Execute deployment with rollback plan
|
||||
@@ -326,10 +346,9 @@ For each alert, provide:
|
||||
When an incident is detected or reported:
|
||||
|
||||
1. **Assess**: Determine scope and severity
|
||||
2. **Mitigate**: Take immediate action to reduce impact
|
||||
3. **Investigate**: Find root cause using logs and metrics
|
||||
4. **Resolve**: Fix the underlying issue
|
||||
5. **Document**: Create incident report with timeline
|
||||
2. **Investigate**: Find root cause using logs and metrics (non-destructive — always allowed)
|
||||
3. **Mitigate/Resolve**: If `approval_mode` is ENABLED, write the proposed remediation action to `devops_queue.json` and event_publish "devops_queue_updated" — do NOT execute destructive actions (restarts, rollbacks, scaling changes) without user approval. If `approval_mode` is DISABLED, take immediate action to reduce impact and fix the underlying issue.
|
||||
4. **Document**: Create incident report with timeline
|
||||
|
||||
Incident severity levels:
|
||||
- **SEV1**: Full service outage, all users affected
|
||||
@@ -438,6 +457,7 @@ Stop the current monitoring/incident session when ANY of these conditions is met
|
||||
- When in doubt, escalate to the user rather than taking risky action
|
||||
- Respect rate limits on CI/CD and cloud provider APIs
|
||||
- Keep incident reports factual and blame-free
|
||||
- In `approval_mode` (default), ALWAYS write to queue — NEVER execute deployments or destructive actions without user review
|
||||
"""
|
||||
|
||||
[dashboard]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "lead"
|
||||
version = "1.0.0"
|
||||
name = "Lead Hand"
|
||||
description = "Autonomous lead generation — discovers, enriches, and delivers qualified leads on a schedule"
|
||||
category = "data"
|
||||
@@ -27,8 +28,12 @@ aliases = [
|
||||
"prospect list",
|
||||
"find customers",
|
||||
"contact enrichment",
|
||||
"find leads",
|
||||
"prospect research",
|
||||
"find companies",
|
||||
"b2b leads",
|
||||
]
|
||||
weak_aliases = ["sales", "outreach", "company list"]
|
||||
weak_aliases = ["sales", "outreach", "company list", "sales leads", "lead list", "prospecting"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "linkedin"
|
||||
version = "1.0.0"
|
||||
name = "LinkedIn Hand"
|
||||
description = "Autonomous LinkedIn manager — profile optimization, content creation, networking, and professional engagement"
|
||||
category = "communication"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "predictor"
|
||||
version = "1.0.0"
|
||||
name = "Predictor Hand"
|
||||
description = "Autonomous future predictor — collects signals, builds reasoning chains, makes calibrated predictions, and tracks accuracy"
|
||||
category = "data"
|
||||
@@ -28,8 +29,11 @@ aliases = [
|
||||
"probability",
|
||||
"likelihood",
|
||||
"scenario analysis",
|
||||
"predict market",
|
||||
"market prediction",
|
||||
"price forecast",
|
||||
]
|
||||
weak_aliases = ["trend analysis", "calibration"]
|
||||
weak_aliases = ["trend analysis", "calibration", "future outlook", "what will happen", "prediction"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "reddit"
|
||||
version = "1.0.0"
|
||||
name = "Reddit Hand"
|
||||
description = "Autonomous Reddit manager — monitors subreddits, posts content, replies to threads, and tracks karma and engagement"
|
||||
category = "communication"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "researcher"
|
||||
version = "1.0.0"
|
||||
name = "Researcher Hand"
|
||||
description = "Autonomous deep researcher — exhaustive investigation, cross-referencing, fact-checking, and structured reports"
|
||||
category = "productivity"
|
||||
@@ -28,8 +29,12 @@ aliases = [
|
||||
"systematic review",
|
||||
"landscape analysis",
|
||||
"exhaustive investigation",
|
||||
"investigate",
|
||||
"research topic",
|
||||
"find sources",
|
||||
"fact check",
|
||||
]
|
||||
weak_aliases = ["research", "fact check", "cross reference"]
|
||||
weak_aliases = ["research", "cross reference", "literature review", "look into", "dig into"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "strategist"
|
||||
version = "1.0.0"
|
||||
name = "Strategist Hand"
|
||||
description = "Autonomous strategy analyst — market research, competitive analysis, business planning, and strategic recommendations"
|
||||
category = "productivity"
|
||||
@@ -28,8 +29,12 @@ aliases = [
|
||||
"competitive analysis",
|
||||
"business plan",
|
||||
"market research",
|
||||
"business strategy",
|
||||
"swot analysis",
|
||||
"market strategy",
|
||||
"competitive strategy",
|
||||
]
|
||||
weak_aliases = ["swot", "industry report", "competitive landscape"]
|
||||
weak_aliases = ["swot", "industry report", "competitive landscape", "porter analysis", "go to market", "strategy memo"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "trader"
|
||||
version = "1.0.0"
|
||||
name = "Trading Hand"
|
||||
description = "Autonomous market intelligence and trading engine — multi-signal analysis, adversarial bull/bear reasoning, calibrated confidence scoring, strict risk management, and portfolio-level analytics"
|
||||
category = "data"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
id = "twitter"
|
||||
version = "1.0.0"
|
||||
name = "Twitter Hand"
|
||||
description = "Autonomous Twitter/X manager — content creation, scheduled posting, engagement, and performance tracking"
|
||||
category = "communication"
|
||||
@@ -22,8 +23,8 @@ tools = [
|
||||
]
|
||||
|
||||
[routing]
|
||||
aliases = ["twitter", "tweet", "x.com", "scheduled tweet"]
|
||||
weak_aliases = ["social media post", "engagement tracking"]
|
||||
aliases = ["twitter", "tweet", "x.com", "scheduled tweet", "post tweet", "twitter thread"]
|
||||
weak_aliases = ["social media post", "engagement tracking", "twitter management", "tweet scheduler"]
|
||||
|
||||
[[requires]]
|
||||
key = "TWITTER_BEARER_TOKEN"
|
||||
|
||||
Reference in new issue
Block a user