Commit Graph

5496 Commits

Author SHA1 Message Date
YeonGyu-Kim
598262e390 chore(schema): regenerate JSON schema for hyperplan-ultrawork keyword 2026-04-29 17:36:25 +09:00
YeonGyu-Kim
5069e5e345 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-04-29 17:36:18 +09:00
YeonGyu-Kim
8473e1cc32 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-04-29 10:36:00 +09:00
YeonGyu-Kim
d66f1d9fa7 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-04-29 10:36:00 +09:00
YeonGyu-Kim
f837838784 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-04-29 10:36:00 +09:00
YeonGyu-Kim
22a7398ebd 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-04-29 10:36:00 +09:00
YeonGyu-Kim
daca5e690c 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-04-29 10:36:00 +09:00
YeonGyu-Kim
78d6afe41b 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-04-29 10:36:00 +09:00
YeonGyu-Kim
a813e5798b 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-04-29 10:36:00 +09:00
YeonGyu-Kim
bf628be9ec 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-04-29 10:36:00 +09:00
YeonGyu-Kim
a3fb7d1d5c 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-04-29 10:36:00 +09:00
YeonGyu-Kim
b7dc4f9038 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-04-29 10:36:00 +09:00
YeonGyu-Kim
f8774f81e0 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-04-29 10:36:00 +09:00
YeonGyu-Kim
a330e8454b 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-04-29 10:36:00 +09:00
YeonGyu-Kim
67099096b9 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-04-29 10:36:00 +09:00
YeonGyu-Kim
e36f9cada1 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-04-29 10:36:00 +09:00
YeonGyu-Kim
54bd3a603d 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-04-29 10:33:32 +09:00
YeonGyu-Kim
5597bf7936 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-04-29 10:33:32 +09:00
YeonGyu-Kim
93b59f6b26 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-04-29 10:33:32 +09:00
YeonGyu-Kim
5ac847dbf5 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-04-29 10:33:32 +09:00
YeonGyu-Kim
cf89dab963 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-04-29 10:33:32 +09:00
YeonGyu-Kim
7474c0b7f0 feat(shared): adapt shell-env for team-mode session isolation 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
24831a3dd6 feat(shared): add supplemental model capability entries for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
1b54b69df4 test(shared): expand migrate-legacy-config-file tests for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
390a05b9ef feat(shared): update agent display names for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
5ed5499c5b feat(plugin): wire team-mode into tool-guard and transform hook creation 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
1d07e7d52b chore: update gitignore for team-mode artifacts 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
d32825bfa2 assets: update omo.png 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
a5f0388cf7 ci: adapt workflows and test runner for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
10c520edaf docs(readme): update zh-cn README for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
1acc0c3a90 docs(readme): update ru README for team-mode 2026-04-29 10:33:32 +09:00
YeonGyu-Kim
ff1c6e6dac docs(readme): update ja README for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
e18d481c21 docs(readme): update ko README for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
2f031bf085 docs(readme): update en README for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
e3b6654b3f docs: add AGENTS.md for team-mode and tmux-subagent features 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
c7f8dc252b docs: update overview, features reference and AGENTS.md for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
27df952118 docs(guide): update agent-model-matching with team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
4da8f523bc docs(guide): add team-mode guide 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
db61b363f6 assets: regenerate oh-my-opencode schema json with team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
7e1c8ca131 test(perf): add plugin init team-mode resume-defer benchmark 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
fac5f95417 feat(cli): add doctor check for team-mode dependencies 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
9cf14792b2 feat(opencode-skill-loader): adapt skill resolution and discovery for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
f9b722dff5 feat(claude-code-loader): adapt plugin discovery for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
4a23a20eba feat(background-agent): adapt task poller for team-mode work distribution 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
e2d379032a feat(background-agent): adapt idle event handler for team-mode sessions 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
ce461b8d8f feat(background-agent): integrate team-mode into background manager 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
fe8ecd94ab feat(background-agent): extend types for team-mode background tasks 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
5e42efc900 feat(builtin-commands): adapt commands and templates for team-mode 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
4af6eb6ebd feat(tools): wire team-mode into skill and subagent resolvers 2026-04-29 10:33:31 +09:00
YeonGyu-Kim
cd6a318aa2 feat(tools): extend delegate-task types for team-mode subagents 2026-04-29 10:33:31 +09:00