Commit Graph
51 Commits
Author SHA1 Message Date
Evan 2f4f94b45b fix(codex-cli): refresh model list to match upstream (#2347) (#50)
The prior entries (o4-mini, o3, gpt-4.1) no longer appear in
upstream openai/codex's codex-rs/models-manager/models.json and the
Codex CLI actively migrates users away from the old gpt-5 /
gpt-5-codex slugs via tui/src/model_migration.rs.

Replace with the currently-visible ("visibility": "list") slugs:

- gpt-5.4
- gpt-5.3-codex
- gpt-5.2
- gpt-5.2-codex
- gpt-5.1-codex-max
- gpt-5.1-codex-mini

All six share a 272k context window per upstream models.json.
Marking supports_tools / supports_vision / supports_streaming = true
to match the gpt-5-family capability envelope.

Closes librefang/librefang#2347
2026-04-14 19:40:56 +09:00
Evan 2468e87968 fix(openrouter): use :free variant for qwen3.6-plus default (#46) 2026-04-10 22:12:30 +08:00
Evan 8d3b49192d feat(plugins): add mempalace-indexer — local semantic memory for agents (#43) 2026-04-10 21:48:08 +08:00
Evan 919ac1acdf fix(openrouter): replace delisted models and set qwen3.6-plus as default (#45) 2026-04-10 21:26:06 +08:00
Evan HuandClaude Opus 4.6 6c0faf06ef refactor(skills): make SKILL.md the required entry point
Standardize on Claude Code's SKILL.md format as every skill's source of
truth. skill.toml becomes an optional metadata layer for runtime, input
schema, and versioning — never for the prompt body.

- validate.py: require SKILL.md in every skill dir; when skill.toml also
  exists, cross-check name/description consistency to prevent drift
- Add SKILL.md to the two custom-skill examples
- Move the meeting-agenda prompt body out of skill.toml into SKILL.md
- Rewrite skills/README.md to document the md-first, toml-as-metadata convention

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 20:23:06 +09:00
Evan HuandClaude Opus 4.6 adf2323330 fix(validate): accept SKILL.md as skill definition
Claude Code-style skills use SKILL.md with YAML frontmatter instead of
skill.toml. Validator now accepts either form, unblocking the 60 bundled
skills restored in #42.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 20:18:37 +09:00
Evan Hu fc650e4ed3 fix(hands): resolve routing alias conflict between devteam and coder 2026-04-10 12:50:39 +09:00
Evan 2b8259a0c0 feat(hands): add devteam hand (#41)
* feat(hands): add devteam hand -- autonomous software development team

Multi-agent hand with 7 roles (PM, Architect, Frontend, Backend, DevOps, QA, Designer)
and 3 team size tiers (simple/standard/full) for different project scales.

PM coordinator auto-scans GitHub issues, triages, assigns tasks to specialists,
and tracks progress on an in-memory project board.

* refactor(hands): slim devteam to 3 agents (PM + Engineer + QA)

7 agents with serial agent_send = massive token waste and info loss at every
handoff. Merge architect/frontend/backend/devops into one Engineer with full
context. Keep QA separate for independent verification. Drop designer.

Tiers: lite (PM + Engineer) and standard (PM + Engineer + QA).

* fix(hands/devteam): fix workspace isolation and git workflow gaps

- PM uses GitHub API for code browsing, no repo clone needed
- Engineer explicitly clones repo, branches, commits, pushes, creates PR
- QA explicitly clones repo, checks out branch under review
- PM tracks last_scan timestamp to filter already-triaged issues
- approval_mode now means PR stays open for review, not skip commit

* fix(hands/devteam): use shared repo checkout instead of per-agent clones

All 3 agents share one checkout at ../shared/repo/. Engineer clones it
on the first task; PM and QA read from the same path. Eliminates
duplicate clones and cross-workspace visibility issues.

* fix(hands/devteam): read issue comments before triaging

Comments contain clarifications, reproduction steps, duplicate markers,
and resolution status. Also skip already-assigned and wontfix issues.

* fix(hands/devteam): fix interactive git add, add merge/close APIs, add fix iteration flow

- Replace git add -p (interactive) with git add <specific files>
- PM prompt now has explicit merge PR and close issue API calls
- Engineer has explicit fix-request handling (same branch, push, no new PR)

* feat(hands/devteam): add full GitHub interaction -- PR review, issue comments, labels

PM:
- Labels issues during triage, comments triage status
- Scans open PRs for external review requests
- Comments on issues linking merged PRs

Engineer:
- Replies to review comments on PR after fixing
- Reviews external PRs with APPROVE/REQUEST_CHANGES + line comments

QA:
- Leaves PR review (APPROVE or REQUEST_CHANGES with line comments)
- All findings visible on GitHub, not just via agent_send

SKILL.md:
- Added PR diff, reviews, review comments, reply, merge API references

* fix(hands/devteam): enforce English comments, line-level reviews, comment-before-close

- All GitHub comments/reviews must be in English (added global rule)
- PR reviews must use comments[] with path+line, not body-only
- Comment on issue with resolution details BEFORE closing/merging
- Improved comment templates with structured info

* fix(hands/devteam): 8 logic fixes from end-to-end workflow review

1. Filter PRs from Issues API (pull_request key)
2. PM sends PR number to QA for review
3. Deduplicate PR scanning via devteam_reviewed_prs
4. QA reports test gaps instead of pushing code to shared branch
5. branch_strategy wired into Engineer (gitflow branches from develop)
6. approval_mode: ON = wait for human, OFF = auto-merge after QA
7. scan_interval mapped to schedule_create every_secs
8. git checkout -B instead of -b to handle existing branches

* fix(hands/devteam): second-pass review — 6 more logic fixes

1. Engineer extracts PR number from create-PR API response
2. PM falls back to GitHub Contents API when shared repo not yet cloned
3. QA gets external PR review flow (was only on Engineer)
4. PM checks CI status + mergeable before merging
5. PM handles merge conflict (409) by sending back to Engineer to rebase
6. i18n approval_mode description synced with actual semantics

* fix(hands/devteam): third-pass — runtime scenarios

1. Deduplicate cron schedule on daemon restart (check schedule_list first)
2. Max 3 review rounds before escalating to user (prevent infinite loop)
3. Clean working directory before switching tasks (git checkout -- . && git clean)
4. Add user direct commands (work on #42, status, review PR #50)
5. Pass tech_stack to Engineer in task delegation
6. Fix duplicate step numbering in Review Cycle

* fix(hands/devteam): fourth-pass — state consistency and edge cases

1. QA force-syncs to remote branch (git checkout -B origin/branch) for force-push safety
2. Board sync step: reconcile with GitHub each scan cycle (catch external closes/merges)
3. Prune devteam_reviewed_prs of closed PRs, cap done list at 30
4. PM checks CI before sending to QA (don't waste QA on red builds)
5. Stop/cancel command: remove from board, comment on issue
6. Explicit rebase commands for Engineer (fetch + rebase + force-with-lease)

* fix(hands/devteam): fifth-pass — crash prevention

1. Guard empty repo_url: stop and tell user to configure it
2. Add python3 to requires (all JSON parsing depends on it)
3. Engineer git config user.name/email on first clone (prevents commit rejection)
4. Explicit build/lint/test commands per tech stack (Rust/TS/Python/Go/Java/Swift)
5. event_publish on task completion so user gets notified
6. Global rule: check API HTTP status before parsing JSON

* feat(hands/devteam): add gh CLI / MCP / curl API three-layer fallback

- Add GitHub MCP integration (mcp_servers = ["github"])
- Add gh CLI as optional requirement (preferred over curl)
- All 3 agents: gh > MCP > curl priority for GitHub operations
- Add issue_tracker setting (github/linear/jira)
- Add agent_list to shared tools
- SKILL.md: add full gh CLI reference section
- i18n: add issue_tracker translation

* feat(hands/devteam): full MCP/integration/notification layer

MCP allowlist: github, linear, jira, sentry, slack, discord
- Sentry: Engineer reads crash reports/stack traces when fixing bugs
- Slack/Discord: PM posts status updates (triaged, completed, QA results)
- Linear/Jira: alternative issue trackers

New settings: notify_channel (none/slack/discord), issue_tracker (github/linear/jira)
New optional requires: npx (MCP runtime), SENTRY_AUTH_TOKEN

PM prompt: notification section, channel-aware status posting
Engineer prompt: Sentry context lookup for bug fixes
i18n: added translations for new settings

* feat(hands/devteam): workflows, onboarding, knowledge, standup, rollback

Workflows (8 integrated):
- PM: bug-triage, product-spec, weekly-report, incident-postmortem
- Engineer: code-review, test-generation, refactor-plan, api-design
- QA: code-review, test-generation

New capabilities:
- Repo onboarding: first activation analyzes repo structure/stack/CI
- Knowledge accumulation: store lessons per issue, detect module hotspots
- Daily standup: cron schedule, board summary via notify_channel
- Rollback: gh pr revert + postmortem workflow + re-open issue

Also:
- Added workflow_run to tools, skills = [] (all allowed)
- Rewrote README with full architecture, lifecycle, workflow table
- PM prompt now has 15 sections covering full lifecycle

* feat(hands/devteam): per-agent capabilities, resources, profiles, fallbacks

Each agent now has full AgentManifest config (not just system_prompt):

PM:
- profile: automation
- capabilities: web, memory, schedule, knowledge, event, workflow, agent_send
- shell: gh, curl, cat, python3
- resources: 200k tokens/hr

Engineer:
- profile: coding
- capabilities: file r/w, shell, web, memory, knowledge, workflow
- shell: cargo, npm, python, go, swift, mvn, git, gh, docker, make
- resources: 300k tokens/hr, 10 concurrent tools
- network: * (needs to push to GitHub)

QA:
- profile: coding (read-heavy, no file_write)
- capabilities: file read, shell (test/lint commands only), web, workflow
- shell: cargo test/clippy/audit, npm test, pytest, go test, gh
- resources: 150k tokens/hr

All agents have fallback_models configured.

* feat(hands/devteam): rewrite with proper resource composition

First hand to use the new composition features:

Agents:
- PM: base=planner, capabilities restricted to gh/git shell only
- Engineer: base=coder, full shell access, network=*
- QA: base=code-reviewer, tool_blocklist=[file_write], test/lint shells only

Composition:
- base: inherit from agents/planner, agents/coder, agents/code-reviewer
- mcp_servers: github (agents interact via MCP, not curl in prompts)
- workflows: bug-triage, code-review, test-generation via workflow_run tool
- plugins: todo-tracker, auto-summarizer, episodic-memory
- per-agent skills: SKILL-pm.md, SKILL-engineer.md, SKILL-qa.md
- per-agent capabilities: QA can't write files, PM can't run builds

Prompts are clean and focused (role + methodology + principles),
not stuffed with curl commands. GitHub interaction goes through
MCP tools or gh CLI.

* fix(devteam): complete planner methodology in PM prompt

Added SCOPE/SEQUENCE/RISK/MILESTONE keywords from the planner
base template's methodology into the PM's triage workflow.

* docs: update hands README, fix repo_url reference in prompts

- hands/README.md: document full composition model (base, MCP, workflows,
  plugins, per-agent skills, per-agent capabilities)
- Updated hand count to 15 (added devteam)
- Engineer prompt: clarify repo_url comes from User Configuration, not
  a template variable
- PM prompt: same clarification

* fix(devteam): override name/description from base templates

Without explicit name, agents inherit base names (planner/coder/code-reviewer)
instead of hand-specific names (pm/engineer/qa). This affects display and
the prefixed name used in agent registry (devteam:pm vs devteam:planner).

* style: format HAND.toml with taplo
2026-04-10 10:24:26 +08:00
Evan b567db71ba feat(skills): restore 60 bundled skills (#42)
* feat(skills): restore ansible skill

* feat(skills): restore api-tester skill

* feat(skills): restore aws skill

* feat(skills): restore azure skill

* feat(skills): restore ci-cd skill

* feat(skills): restore code-reviewer skill

* feat(skills): restore compliance skill

* feat(skills): restore confluence skill

* feat(skills): restore crypto-expert skill

* feat(skills): restore css-expert skill

* feat(skills): restore data-analyst skill

* feat(skills): restore data-pipeline skill

* feat(skills): restore docker skill

* feat(skills): restore elasticsearch skill

* feat(skills): restore email-writer skill

* feat(skills): restore figma-expert skill

* feat(skills): restore gcp skill

* feat(skills): restore git-expert skill

* feat(skills): restore github skill

* feat(skills): restore golang-expert skill

* feat(skills): restore graphql-expert skill

* feat(skills): restore helm skill

* feat(skills): restore interview-prep skill

* feat(skills): restore jira skill

* feat(skills): restore kubernetes skill

* feat(skills): restore linear-tools skill

* feat(skills): restore linux-networking skill

* feat(skills): restore llm-finetuning skill

* feat(skills): restore ml-engineer skill

* feat(skills): restore mongodb skill

* feat(skills): restore nextjs-expert skill

* feat(skills): restore nginx skill

* feat(skills): restore notion skill

* feat(skills): restore oauth-expert skill

* feat(skills): restore openapi-expert skill

* feat(skills): restore pdf-reader skill

* feat(skills): restore postgres-expert skill

* feat(skills): restore presentation skill

* feat(skills): restore project-manager skill

* feat(skills): restore prometheus skill

* feat(skills): restore prompt-engineer skill

* feat(skills): restore python-expert skill

* feat(skills): restore react-expert skill

* feat(skills): restore redis-expert skill

* feat(skills): restore regex-expert skill

* feat(skills): restore rust-expert skill

* feat(skills): restore security-audit skill

* feat(skills): restore sentry skill

* feat(skills): restore shell-scripting skill

* feat(skills): restore slack-tools skill

* feat(skills): restore sql-analyst skill

* feat(skills): restore sqlite-expert skill

* feat(skills): restore sysadmin skill

* feat(skills): restore technical-writer skill

* feat(skills): restore terraform skill

* feat(skills): restore typescript-expert skill

* feat(skills): restore vector-db skill

* feat(skills): restore wasm-expert skill

* feat(skills): restore web-search skill

* feat(skills): restore writing-coach skill
2026-04-08 15:18:53 +08:00
Evan 5967c09c1b fix: correct morph API base_url to api.morphllm.com (#40) 2026-04-02 23:59:19 +08:00
Evan c192f493b4 fix: route providers through correct APIs (#39)
Providers with known public APIs use their official endpoints:
- meta-llama → api.llama.com/v1
- microsoft → models.inference.ai.azure.com (GitHub Models)
- ibm-granite → us-south.ml.cloud.ibm.com/ml/v1 (watsonx)
- tencent → api.hunyuan.cloud.tencent.com/v1
- morph → api.morphllm.com/v1

16 remaining providers without known public APIs route through
OpenRouter (base_url = openrouter.ai/api/v1, OPENROUTER_API_KEY).

sync-pricing.py updated with PROVIDER_API mapping.
2026-04-02 23:55:42 +08:00
Evan aa5822992a fix: route OpenRouter-only providers through OpenRouter API (#38)
Providers without their own public API now use OpenRouter as their
base_url with OPENROUTER_API_KEY, making them testable and usable
when the user has an OpenRouter key configured.

- 20 OpenRouter-only providers: set base_url to openrouter.ai/api/v1
- morph: set correct official API (api.morphllm.com/v1)
- sync-pricing.py: default to OpenRouter routing for new providers
2026-04-02 23:41:25 +08:00
Evan 2fa48bfdcb fix: clean up OpenRouter-generated provider configs (#37)
- Merge unique models from duplicate providers into their hand-written
  counterparts and remove the duplicates:
  - alibaba (tongyi-deepresearch) → qwen
  - amazon (nova-2-lite, nova-micro, nova-premier) → bedrock
  - bytedance (ui-tars) → volcengine
  - nvidia (nemotron-3-nano, nemotron-3-super, etc.) → nvidia-nim
  - rekaai (reka-flash-3) → reka
- Set correct official API base_url for providers with public APIs:
  arcee-ai, inception, morph, reka, upstage
- Set key_required=false for 20 providers only accessible through
  hosting platforms (no public API)
- Update sync-pricing.py with SKIP_DUPLICATES, PROVIDER_API mapping,
  and default key_required=false for future auto-generated providers
2026-04-02 23:30:56 +08:00
Evan 05bdf02169 feat(workflows): expand template library from 9 to 22 + multiline string cleanup (#36)
* feat(workflows): add 13 workflow templates across engineering, business, and productivity

Engineering:
- bug-triage: reproduce path → root cause → fix plan
- api-design: resource model → endpoints → OpenAPI spec
- incident-postmortem: timeline → RCA → full postmortem report
- test-generation: code analysis → edge cases → full test suite
- refactor-plan: smell analysis → prioritised opportunities → migration plan

Business:
- competitor-analysis: profiles → SWOT → strategy report
- product-spec: problem definition → user stories → full PRD
- market-research: landscape → segments → research report

Productivity/Thinking:
- meeting-summary: raw notes → structured summary → follow-up email
- decision-matrix: criteria → weighted scoring → recommendation memo
- learning-plan: gap analysis → roadmap → week-1 day-by-day plan
- job-application: job analysis → tailored resume → cover letter → interview prep
- blog-post: research → outline → draft → SEO optimisation

Closes #1912 on librefang/librefang

* fix(workflows): overhaul existing 9 templates

- data-pipeline: redesigned — original 'extract from URL' step was
  broken (LLMs cannot fetch URLs); replaced with paste-data approach
  (profile → clean_transform → analyse) with analysis_goal parameter
- translate-polish: added target_language and register parameters;
  added back-translation step for accuracy verification
- weekly-report: added team/audience parameters, richer extraction
  step, added Metrics and Notes sections
- content-pipeline: added audience/tone parameters, added outline step
  between research and writing
- content-review: fix category 'content' → 'creation'
- customer-support: fix category 'support' → 'business'

* style(workflows): convert all prompt_template strings to TOML multiline syntax

Replace \n escape sequences with real newlines using triple-quote
multiline strings ("""...""") across all 22 workflow templates.
No content changes — formatting only.

* style(hands): replace \n escape in reddit writer format example with multiline code block
2026-04-01 18:21:09 +08:00
Evan ae5d97dc7e feat: convert schema.toml to machine-parseable format (#30)
* feat: convert schema.toml to machine-parseable format

Replace comment-based documentation format with structured TOML that
can be deserialized into the RegistrySchema Rust type. All 6 content
types (provider, agent, hand, integration, skill, plugin) preserved
with every field, description, enum option, and nested section.

* fix: format options arrays in schema.toml for taplo compliance
2026-04-01 00:15:10 +08:00
Evan 26f7ea98f7 fix: download taplo 0.10.0 directly instead of using broken action (#34)
* fix: add shell execution rules to collector hand system prompt

* fix: use latest taplo instead of hardcoded version

* fix: use uncenter/setup-taplo action with latest version

* fix: download taplo 0.10.0 directly instead of using broken action
2026-03-31 23:46:36 +08:00
Evan f23af64eea fix: download taplo 0.10.0 directly instead of using broken action (#35) 2026-03-31 23:41:44 +08:00
Evan 78960471cc fix: use uncenter/setup-taplo action with latest version (#33)
* fix: add shell execution rules to collector hand system prompt

* fix: use latest taplo instead of hardcoded version

* fix: use uncenter/setup-taplo action with latest version
2026-03-31 23:31:37 +08:00
Evan fc37ce253b fix: correct invalid tier "free" and teams-mcp id with version (#29)
- Replace tier "free" with "fast" (valid tiers: frontier/smart/balanced/fast/local)
- Remove version suffix from teams-mcp integration id field
- Update sync-pricing.py to not generate invalid tier values
2026-03-25 23:49:39 +09:00
Evan 553ecc6947 feat: add pricing sync script and update model prices from OpenRouter (#27)
* fix: pin npm package versions in MCP integration templates

Prevent supply chain attacks by pinning exact versions instead of
using unpinned `npx -y @package` which pulls latest on every run.

23 of 25 integrations pinned. sqlite-mcp and aws skipped (packages
not found on npm registry).

* fix: use stable azure/mcp version instead of beta

* feat: add pricing sync script and update model prices from OpenRouter API

- scripts/sync-pricing.py fetches real-time pricing from OpenRouter
- Updated 64 price fields across 13 provider files
- Run periodically or in CI to keep prices current
2026-03-25 23:43:13 +09:00
Evan a00e813bdf feat: add 22 mainstream models to nvidia-nim provider catalog (#26)
Add model entries for the most popular models available on NVIDIA NIM:
- NVIDIA: Nemotron Ultra 253B, Super 49B, 70B, Mini 4B
- Meta: Llama 4 Maverick/Scout, Llama 3.3 70B, 3.1 405B/8B, 3.2 Vision
- Mistral: Large 3 675B, Small 3.1 24B, Mixtral 8x22B
- DeepSeek: V3.2, R1 Distill 32B
- Qwen: 3.5 397B, 2.5 Coder 32B, QWQ 32B
- Google: Gemma 3 27B
- Microsoft: Phi-4 Multimodal, Phi-4 Mini

Refs librefang/librefang#1621
2026-03-25 23:36:00 +09:00
Evan c25a321e88 fix: pin npm package versions in MCP integration templates (#25)
* fix: pin npm package versions in MCP integration templates

Prevent supply chain attacks by pinning exact versions instead of
using unpinned `npx -y @package` which pulls latest on every run.

23 of 25 integrations pinned. sqlite-mcp and aws skipped (packages
not found on npm registry).

* fix: use stable azure/mcp version instead of beta
2026-03-25 22:27:42 +09:00
Evan d012a4a26d feat: add tags = ["popular"] to top hands and channels (#24) 2026-03-25 13:31:13 +09:00
Evan 1e8f75b120 feat: add Chinese (zh) i18n for all hand agents (#23)
Add [i18n.zh.agents.*] sections to all 15 HAND.toml files,
providing Chinese translations for agent names and descriptions.

Total: 51 agent translations across 15 hands.
2026-03-25 12:44:20 +09:00
Evan 9b24879c4f feat: add i18n descriptions to all hands and channels (#22)
Add [i18n.zh], [i18n.zh-TW], [i18n.ja], [i18n.ko], [i18n.de], [i18n.es]
sections with translated descriptions to:
- 15 Hand TOML files (hands/*/HAND.toml)
- 44 Channel TOML files (channels/*.toml)

This enables the website to display localized Hand and Channel descriptions
based on the user's selected language.
2026-03-25 12:25:57 +09:00
Evan 644213eef6 feat: add channels directory with 44 channel adapter definitions (#21)
* feat: add channels directory with 44 channel adapter definitions

Add TOML definitions for all 44 channel adapters supported by LibreFang,
matching the adapters in librefang-channels crate source code.

Each channel file includes: id, name, description, category, icon,
protocol, and metadata (url, docs).

Categories: messaging, social, enterprise, developer, iot, email.

Also adds channels template at templates/channel.toml.

* fix: format templates/channel.toml with taplo
2026-03-25 11:30:10 +09:00
Evan 1440059e99 fix: add shell execution rules to collector hand system prompt (#20) 2026-03-25 02:39:39 +09:00
Evan 492faabd57 feat: update minimax default to M2.7, add zh i18n to workflow templates (#19)
- aliases: minimax default → MiniMax-M2.7, minimax-highspeed → MiniMax-M2.7-highspeed
- workflow templates: add [i18n.zh] section with Chinese name/description
2026-03-24 13:00:20 +09:00
Evan 733c35df5b fix: add missing tools to hello-world and test-engineer templates
- hello-world: add file_write (LLM needs it for writing files)
- test-engineer: add web_fetch, web_search (needed for researching test patterns)
2026-03-23 14:42:25 +00:00
Evan 9bcbe04d08 feat: add media_capabilities to provider definitions (#18) 2026-03-23 14:13:13 +09:00
Evan ecc5215cae feat(hands): add Creator Hand for media generation (#17) 2026-03-23 14:09:51 +09:00
Evan 945bbbd763 chore(hands): bump all HAND.toml versions to 1.1.0 (#16)
* chore(hands): bump all HAND.toml versions to 1.1.0

Triggers version-aware sync in librefang runtime (librefang/librefang#1530).
Previously sync_subdirs() skipped existing hands regardless of version.
With the runtime fix, bumping from 1.0.0 → 1.1.0 ensures users get
updated hand definitions on next registry sync.

* chore: fix taplo formatting for 4 agent.toml files

* fix(hands): fix invalid install fields in analytics and browser

- analytics: `linux` → `linux_apt`/`linux_dnf`/`linux_pacman` (parser
  only recognizes platform-specific variants, not generic `linux`)
- analytics: remove `pip = "python3 --version"` (version check, not
  an install command)
- browser: remove `pip = "python3 --version"` (same issue)

* fix: enrich sub-agent prompts and add missing requires across all hands

- analytics: fix linux → linux_apt/dnf/pacman, remove invalid pip check,
  enrich analyst and modeler sub-agent prompts
- apitester: add [[requires]] for curl
- browser: remove invalid pip check, enrich researcher and extractor prompts
- clip: enrich editor and transcriber sub-agent prompts
- collector: enrich scout, scholar, and localizer sub-agent prompts
- devops: add [[requires]] for curl, git, docker (optional), GITHUB_TOKEN
  (optional), enrich sub-agent prompts
- lead: enrich outreach, recruiter, and messenger sub-agent prompts
- linkedin: enrich content and researcher sub-agent prompts
- predictor: enrich orchestrator, planner, and modeler sub-agent prompts
- reddit: enrich monitor and composer sub-agent prompts
- strategist: enrich architect, counsel, and analyst sub-agent prompts
- trader: enrich accountant and researcher sub-agent prompts
- twitter: enrich curator and composer sub-agent prompts
2026-03-23 11:21:29 +09:00
Evan d778da72a2 fix(validate): check for [agents] instead of [agent] in HAND.toml (#15)
* fix(validate): check for [agents] instead of [agent] in HAND.toml

All 14 hands use [agents.main] (plural) for multi-agent config,
but the validator was checking for [agent] (singular), causing
all hands to fail validation.

* fix(routing): resolve 19 routing alias collisions

Agent is a sub-unit of hand, so hands take priority for routing.
Remove conflicting aliases from agent side when hand already owns them.

- analyst: remove data analysis, analyze data, dashboard (owned by hand/analytics)
- data-scientist: remove statistical analysis, forecast, prediction (owned by hand/analytics, hand/predictor)
- sales-assistant: remove prospecting, sales, pipeline (owned by hand/lead, hand/devops)
- devops-lead: remove incident response, kubernetes, terraform (owned by hand/devops)
- researcher: remove deep research, research, literature review (owned by hand/researcher)
- academic-researcher: remove literature review, systematic review (owned by hand/researcher)
- social-media: remove duplicate content calendar from weak_aliases
- hand/collector: remove competitive analysis (owned by hand/strategist)
2026-03-23 09:41:29 +09:00
Evan 31776736d0 Merge pull request #14 from librefang/feature/muti-agent-hand
feat: muti agent hand
2026-03-23 02:41:38 +09:00
Evan Hu 506a201329 feat: muti agent hand 2026-03-23 02:41:02 +09:00
Evan 8190e06091 Merge pull request #13 from librefang/fix/resolve-merge-conflict-markers
fix(hands): resolve merge conflict markers left by PR #12
2026-03-23 01:25:35 +09:00
Evan 3e57ce4743 Merge pull request #12 from librefang/feat/improve-social-hands
feat(hands): improve linkedin, reddit, and twitter hands
2026-03-23 00:51:41 +09:00
Evan de939b80d0 Merge pull request #11 from librefang/feat/hands-i18n-and-content-enhancement
feat(hands): i18n fixes, SKILL.md enhancements, and README overhaul
2026-03-23 00:51:08 +09:00
Evan 6e48be1e31 feat: add workflow templates (#9)
9 bundled workflow templates:
- data-pipeline: ETL extract/transform/validate
- content-review: multi-agent draft/quality/accuracy/edit
- customer-support: tiered triage/response/escalation
- code-review: parallel correctness+security+style analysis
- research: research/fact-check/summarize
- content-pipeline: research → write → edit article creation
- translate-polish: auto-detect language, translate, review
- brainstorm: ideation → evaluation → action plan
- weekly-report: raw notes → organized → polished report
2026-03-22 12:37:04 +09:00
Evan 31f17ba369 feat: add Qwen International provider with regional endpoints (#8)
* feat: add Qwen International and US provider catalogs

* refactor: merge qwen-us into qwen-intl with regions support

* refactor: merge regional providers into single files with regions

Merge qwen-intl.toml into qwen.toml with [provider.regions] for
intl (Singapore) and us (Virginia) endpoints.

Merge minimax-cn.toml into minimax.toml with [provider.regions.china]
including separate api_key_env for China endpoint.

Uses new RegionConfig table format instead of simple string URLs.
2026-03-21 17:23:14 +09:00
Evan 078218c70f feat: add Gemini CLI, Codex CLI, and Aider provider catalogs (#7)
- gemini-cli: Google Gemini CLI (gemini-2.5-pro, gemini-2.5-flash)
- codex-cli: OpenAI Codex CLI (o4-mini, o3, gpt-4.1)
- aider: Aider AI coding assistant (sonnet, gpt-4o)
2026-03-21 07:14:18 +09:00
Evan d1cab3e33a feat: context engine plugins, scaffolding, and pricing fixes (#6)
* feat: add 4 context engine plugins

- topic-memory: keyword clustering for topic-aware memory recall
- episodic-memory: conversation segmentation and cross-session recall
- user-profile: persistent user profiling from conversation patterns
- context-decay: time-based memory decay with reinforcement dynamics

All plugins use the ingest/after_turn hook protocol with stdin/stdout JSON.

* chore: add plugin scaffolding, update docs and templates

- Add plugin.toml template with {{NAME}} placeholder
- Add new-plugin Makefile target with hooks/ scaffolding
- Update plugins/README.md with all 10 plugins
- Update README.md stats (10 plugins, 220+ models)
- Add Plugin checkbox and checklist to PR template
- Add Plugin to issue template content type dropdown
- Fix CONTRIBUTING.md: last_verified is recommended, not required

* fix: correct model pricing and remove deprecated entries

- openrouter/gemma-2-9b-it: fix pricing from 0.0 to 0.03/0.09 per M tokens
  (free variant correctly stays at 0.0)
- github-copilot: remove deprecated copilot/gpt-4 model entry
  (GPT-4 retired in favor of GPT-4o for Copilot)

* docs: annotate kimi-coding as membership-gated

Kimi Code CLI uses quota-based membership model (not per-token billing).
Free tier has limited weekly requests; underlying model is K2.5.
Pricing kept at 0.0 consistent with other subscription providers
(chatgpt, github-copilot) but with explanatory comments.

* style: fix trailing newline in github-copilot.toml

* fix: correct Moonshot/Kimi model pricing from official sources

All 5 models had incorrect pricing:
- moonshot-v1-8k: 0.10/0.10 → 0.20/2.00
- moonshot-v1-32k: 0.30/0.30 → 1.00/3.00
- moonshot-v1-128k: 0.80/0.80 → 2.00/5.00
- kimi-k2: 2.00/8.00 → 0.60/2.50
- kimi-k2.5: 2.00/8.00 → 0.45/2.20

Sources: platform.moonshot.ai/docs/pricing/chat, costgoat.com, getmaxim.ai

* feat: add MiniMax M2.7 and M2.7-highspeed models

Released 2026-03-18, MiniMax's latest flagship text model.
10B activated params, 200K context, 128K output, tool use, streaming.
Pricing: $0.30/$1.20 per M tokens (input/output).

Added to both international (minimax.io) and China (minimaxi.com) providers.
2026-03-21 03:36:32 +09:00
EvanandClaude Opus 4.6 8f2244eb6f chore: remove router agent (#5)
* chore: remove router agent

builtin:router has been replaced by LLM intent routing in the kernel.
Assistant is now the sole entry point — see librefang/librefang#1336.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: format all TOML files with taplo

Fix CI taplo format check by running `taplo fmt` on all 132 TOML files.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 03:26:11 +09:00
Evan HuandClaude Opus 4.6 ba27d7c095 feat: update Volcengine with Doubao Seed 2.0 and 1.8 models (#4)
- Add Doubao Seed 2.0 Pro (frontier, 256K context, 128K output)
- Add Doubao Seed 2.0 Code
- Add Doubao Seed 1.8 (multimodal agent model with vision)
- Add Doubao Seed 1.6 Vision
- Update existing 2.0 Lite/Mini with correct specs (256K/128K, vision)
- Update global alias "doubao" to point to 2.0 Pro

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 19:20:42 +09:00
Evan HuandClaude Opus 4.6 3aa662bd6d feat: add Z.AI chat models + 5 new providers (#3)
* feat: add Z.AI chat models (GLM-5, GLM-4.7)

Sync with librefang/librefang#409 — add the two Z.AI chat models
to the standalone model catalog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add 5 new providers (Stepfun, SiliconFlow, Baichuan, NVIDIA NIM, Writer)

- Stepfun (阶跃星辰): step-3.5-flash, step-3, step-2-mini, step-1o-turbo-vision
- SiliconFlow (硅基流动): inference platform, models discovered at runtime
- Baichuan (百川): Baichuan-4, Baichuan-3 Turbo 128K
- NVIDIA NIM: inference platform, models discovered at runtime
- Writer: Palmyra X5, X4, Med, Fin
- Add global aliases for stepfun, baichuan, writer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:07:07 +09:00
Evan Hu 360f964a1c Merge pull request #2 from librefang/codex/add-qwen-code-provider
feat: add qwen-code provider
2026-03-16 03:48:18 +09:00
Evan Hu 51307696fa Merge pull request #1 from librefang/feat/add-stepfun-free-model
feat: add StepFun Step 3.5 Flash free model
2026-03-14 14:35:19 +09:00
Evan 21f59f0ab8 ci: upgrade to Node.js 24 compatible action versions 2026-03-14 11:58:15 +09:00
Evan a8b180ac95 ci: add GitHub Actions workflow for catalog validation 2026-03-14 11:57:24 +09:00
Evan 9c336d2ab4 docs: remove Chinese sections, English only 2026-03-14 11:53:45 +09:00
Evan 21c82e335c feat: initial model catalog with 196 models across 39 providers
Community-maintained TOML catalog for LibreFang. New models can be added
via PR without requiring a LibreFang binary release.

Includes validation script, bilingual docs, and GitHub templates.
2026-03-14 11:52:10 +09:00