Commit Graph

5621 Commits

Author SHA1 Message Date
YeonGyu-Kim cc1780868a chore(schema): regenerate JSON schema for hyperplan-ultrawork keyword 2026-05-06 14:20:50 +09:00
YeonGyu-Kim 5c67482038 feat(keyword-detector): add hyperplan-ultrawork combo + tuple refactor
Adjacent "hpp ulw" or "ulw hpp" (8 form combinations: short/long, both
orders) triggers a fused mode that suppresses the standalone ultrawork
and hyperplan banners and toasts in favor of one combo banner. The
combo banner explicitly preserves hyperplan's mandatory adversarial
workflow contract (do NOT improvise, do NOT skip rounds) instead of
silently downgrading it.

Suppression runs as a named pipeline step (suppressComboStandalones)
immediately after detection and before all consumers (planner filter,
session filters, toasts, message injection), so standalone toast checks
naturally see the already-suppressed list. Combo is allowed in non-main
sessions like ultrawork, filtered for planner agents like both
standalones, and blocked in subagent sessions via the existing gate.

disabled_keywords uses the intersection rule: disabling either
"ultrawork" or "hyperplan" also disables the combo, so no flavored
content leaks via the combo embedding when either base keyword is
disabled.

Includes a same-PR refactor of KEYWORD_DETECTORS from {pattern, message}
to {type, pattern, message} tuple shape, dropping the parallel hardcoded
types array in detector.ts that previously coupled type assignment to
registry index. Future detector additions can no longer silently corrupt
DetectedKeyword.type via reorder or insertion.

10 behavioral contract tests in hyperplan-ultrawork.test.ts cover both
trigger orders, non-adjacent rejection, suppression of injection and
toast, intersection-rule disable behavior, session/agent policy, and
ultrawork variant routing through the combo. The pre-existing combined
"ultrawork hyperplan" assertion in hyperplan.test.ts is removed in
favor of the new file.

Plan distilled from a hyperplan adversarial review (5 members,
3 rounds: skeptic, validator, researcher, architect, creative).
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 09fe4ca3dd fix(hyperplan): align keyword detector and command template with mandatory plan handoff
Update both injection paths to reflect the 7-phase workflow with the
mandatory plan agent handoff in step 7. The keyword detector now lists
all 8 enumerated steps including the explicit "do not write the plan
yourself" guidance, and the /hyperplan command template references the
7-phase workflow count.

Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode).
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 0b4390b175 feat(skills/hyperplan): mandate plan agent handoff after adversarial distillation
Split the original Phase 5 (lead-written plan) into Phase 5 (insight
distillation) and Phase 6 (mandatory plan agent handoff via
task(subagent_type="plan")). The lead now produces a structured insight
bundle and dispatches it to the dedicated planner — the planner owns
sequencing, parallelization, and verification gates.

This mirrors the ultrawork plan-agent contract: adversarial distillation
extracts only defensible insights, the planner formalizes them into an
executable plan. Skipping the handoff turns hyperplan back into vanilla
orchestration.

- Update workflow phase count 6 → 7
- Anti-patterns: forbid lead-written plans, forbid skipping the dispatch,
  forbid pre-writing tasks before dispatch, forbid using team_send_message
  to ship the bundle to the plan agent
- Notes: synchronous dispatch (run_in_background: false), planner has no
  team mailbox access (everything must be in the bundle)

Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode).
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 9a0aec0029 feat(skills): add hyperplan skill
Adversarial multi-agent planning skill that orchestrates 5 hostile
category members via team-mode for cross-critique debate, then
synthesizes only defensible insights into an executable work plan.

Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode).
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 8344997040 assets: regenerate oh-my-opencode schema with hyperplan
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 3befe5fa7e feat(keyword-detector): add hyperplan toast and planner filtering to hook
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 5af41606be feat(builtin-commands): register hyperplan builtin command
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 65e2643757 feat(keyword-detector): add hyperplan to detector types list
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim b32f2744a0 feat(keyword-detector): register hyperplan in keyword detectors array
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim f025a4ca30 feat(keyword-detector): add hyperplan keyword pattern, message and test
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim a75a24df77 feat(builtin-commands): add hyperplan command template
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 592308de1e feat(builtin-commands): add hyperplan to command name type
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 4af7d62f78 feat(config): add hyperplan to keyword detector type schema
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 585ad6d8d5 feat(config): add hyperplan to builtin command schema
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 91b7fcab3a fix(plugin): replace any type with explicit summarize overloads in event handler
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim 924dd853db fix(hephaestus): restore autonomy prompt section
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:20:50 +09:00
YeonGyu-Kim b54922deab fix(team-mode): forbid delegate-task in member guidance
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:19:40 +09:00
YeonGyu-Kim 4d448778f3 fix(team-mode): reject empty team_create lead session override
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 14:19:40 +09:00
YeonGyu-Kim 91c0d75588 feat(keyword-detector): add per-keyword disable config
Adds keyword_detector.disabled_keywords config so users can opt out of
specific keyword detectors individually without disabling the entire
keyword-detector hook. Allowed values: 'ultrawork', 'search', 'analyze',
'team'. Default empty/missing -> all four detectors active (no behavior
change for existing configs).

Motivation: an audit revealed search and analyze patterns trigger on
~30-60% of normal conversational user messages (e.g. 'how to', 'why is',
'show me', '왜', '어떻게'). The disable list is the immediate kill switch
while the patterns themselves are tightened in a separate PR.

Schema follows the existing per-feature config block convention shared
by team_mode, ralph_loop, runtime_fallback, and comment_checker. The
KeywordType enum (z.enum) lives next to the config schema and is
re-imported by the detector to keep the union type in lockstep with the
schema.

Threading:
  pluginConfig.keyword_detector
    -> create-transform-hooks.ts (factory wiring)
    -> createKeywordDetectorHook(config)
    -> detectKeywordsWithType(text, agent, model, disabledKeywords)
    -> Set-based filter at the source-of-truth detector

Adds 8 regression tests covering per-keyword disable, multi-keyword
disable, partial disable (one keyword off, another still firing),
ultrawork toast suppression, undefined config, and empty array.
2026-05-06 14:19:40 +09:00
YeonGyu-Kim 25d9437513 feat(keyword-detector): add team mode keyword detection
Detects user invocations of team-mode work across English and Korean
('team mode', '팀 모드', '팀으로') and injects a concise English directive
instructing the LLM to orchestrate via team_* tools (team_create ->
team_task_create + team_send_message), forbidding delegate_task
substitution and fallbacks.

The Korean variants use a Hangul-syllable negative lookbehind (가-힣) so
that '스팀으로 게임 켜줘' does not falsely match '팀으로' and '스팀모드' does
not falsely match '팀모드'.

Follows the existing folder pattern (mode/default.ts + mode/index.ts)
shared by ultrawork/, search/, and analyze/. The hook orchestration in
hook.ts handles the new keyword type generically through the shared
KEYWORD_DETECTORS array, so existing guards (non-OMO agent skip,
non-main session filter, system-reminder strip, code-block strip) all
apply automatically.

Adds 7 regression tests covering English/Korean trigger forms, the
Hangul-prefix false-positive guard, the bare-'team' negative case, and
non-main-session filtering.
2026-05-06 14:19:40 +09:00
YeonGyu-Kim 2ffe5afe2e feat(shared): add supplemental model capability entries for team-mode 2026-05-06 14:19:40 +09:00
YeonGyu-Kim c79addb626 test(shared): expand migrate-legacy-config-file tests for team-mode 2026-05-06 14:19:40 +09:00
YeonGyu-Kim 34b659a3b1 feat(shared): update agent display names for team-mode 2026-05-06 14:19:40 +09:00
YeonGyu-Kim 20a66f7061 feat(plugin): wire team-mode into tool-guard and transform hook creation 2026-05-06 14:19:40 +09:00
YeonGyu-Kim cba3e21074 chore: update gitignore for team-mode artifacts 2026-05-06 14:19:40 +09:00
YeonGyu-Kim f3b9a8a01f assets: update omo.png 2026-05-06 14:19:40 +09:00
YeonGyu-Kim 690d107334 ci: adapt workflows and test runner for team-mode 2026-05-06 14:19:40 +09:00
YeonGyu-Kim 22056bd9c7 docs(readme): update zh-cn README for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim c142f6de52 docs(readme): update ru README for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 073328b890 docs(readme): update ja README for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 5c04f3a789 docs(readme): update ko README for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim dcd5beb1cd docs(readme): update en README for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim d7d956468c docs: add AGENTS.md for team-mode and tmux-subagent features 2026-05-06 14:19:39 +09:00
YeonGyu-Kim dc0276761a docs: update overview, features reference and AGENTS.md for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim c3884cc5ca docs(guide): update agent-model-matching with team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 6e1df2cb3b docs(guide): add team-mode guide 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 83eff39cf3 assets: regenerate oh-my-opencode schema json with team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 1168e3a51f test(perf): add plugin init team-mode resume-defer benchmark 2026-05-06 14:19:39 +09:00
YeonGyu-Kim a475e456b3 feat(cli): add doctor check for team-mode dependencies 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 855c848b99 feat(opencode-skill-loader): adapt skill resolution and discovery for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 7fbefa4cfe feat(claude-code-loader): adapt plugin discovery for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 15a0e10450 feat(background-agent): adapt task poller for team-mode work distribution 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 00a6647021 feat(background-agent): adapt idle event handler for team-mode sessions 2026-05-06 14:19:39 +09:00
YeonGyu-Kim a0d122b1e6 feat(background-agent): integrate team-mode into background manager 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 417a368af8 feat(background-agent): extend types for team-mode background tasks 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 2e6bb3413e feat(builtin-commands): adapt commands and templates for team-mode 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 39f27b91b1 feat(tools): wire team-mode into skill and subagent resolvers 2026-05-06 14:19:39 +09:00
YeonGyu-Kim 2078f9cad1 feat(tools): extend delegate-task types for team-mode subagents 2026-05-06 14:19:39 +09:00
YeonGyu-Kim fc31524dfc feat(tools): register team-mode skill tooling and update exports 2026-05-06 14:19:39 +09:00