@hiai-gg/hiai-opencode 0.1.9 → 0.2.1

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.
Files changed (142) hide show
  1. package/.env.example +0 -19
  2. package/AGENTS.md +218 -58
  3. package/ARCHITECTURE.md +9 -11
  4. package/LICENSE.md +4 -3
  5. package/README.md +76 -143
  6. package/assets/cli/hiai-opencode.mjs +141 -90
  7. package/config/.logs/subtask2.log +2 -0
  8. package/config/.mcp.json +45 -0
  9. package/config/.opencode/palace/knowledge_graph.sqlite3 +0 -0
  10. package/config/.opencode/palace/knowledge_graph.sqlite3-shm +0 -0
  11. package/config/.opencode/palace/knowledge_graph.sqlite3-wal +0 -0
  12. package/config/hiai-opencode.schema.json +176 -62
  13. package/dist/agents/builtin-agents/{guard-agent.d.ts → manager-agent.d.ts} +1 -1
  14. package/dist/agents/dynamic-agent-policy-sections.d.ts +2 -0
  15. package/dist/agents/{guard → manager}/agent.d.ts +7 -7
  16. package/dist/agents/manager/default-prompt-sections.d.ts +5 -0
  17. package/dist/agents/manager/default.d.ts +2 -0
  18. package/dist/agents/manager/index.d.ts +2 -0
  19. package/dist/agents/{guard → manager}/prompt-section-builder.d.ts +1 -1
  20. package/dist/agents/{guard → manager}/shared-prompt.d.ts +2 -2
  21. package/dist/agents/prompt-library/index.d.ts +0 -1
  22. package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
  23. package/dist/agents/strategist/high-accuracy-mode.d.ts +1 -1
  24. package/dist/agents/strategist/identity-constraints.d.ts +1 -1
  25. package/dist/agents/strategist/index.d.ts +1 -1
  26. package/dist/agents/strategist/interview-mode.d.ts +1 -1
  27. package/dist/agents/strategist/plan-generation.d.ts +1 -1
  28. package/dist/agents/strategist/plan-template.d.ts +1 -1
  29. package/dist/agents/strategist/system-prompt.d.ts +3 -3
  30. package/dist/agents/types.d.ts +2 -2
  31. package/dist/agents/writer.d.ts +7 -0
  32. package/dist/config/index.d.ts +4 -6
  33. package/dist/config/platform-schema.d.ts +64 -56
  34. package/dist/config/schema/agent-names.d.ts +9 -10
  35. package/dist/config/schema/agent-overrides.d.ts +2 -258
  36. package/dist/config/schema/browser-automation.d.ts +0 -4
  37. package/dist/config/schema/{oh-my-opencode-config.d.ts → hiai-opencode-config.d.ts} +2 -261
  38. package/dist/config/schema/hooks.d.ts +1 -1
  39. package/dist/config/schema/index.d.ts +2 -2
  40. package/dist/config/types.d.ts +7 -5
  41. package/dist/create-hooks.d.ts +3 -0
  42. package/dist/features/background-agent/error-classifier.d.ts +1 -0
  43. package/dist/features/boulder-state/constants.d.ts +4 -1
  44. package/dist/features/boulder-state/storage.d.ts +94 -0
  45. package/dist/features/boulder-state/types.d.ts +18 -1
  46. package/dist/features/builtin-commands/templates/doctor.d.ts +1 -1
  47. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  48. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  49. package/dist/features/builtin-skills/skills/{playwright.d.ts → agent-browser.d.ts} +0 -1
  50. package/dist/features/builtin-skills/skills/index.d.ts +1 -2
  51. package/dist/hooks/critic-plans-only/agent-matcher.d.ts +1 -0
  52. package/dist/hooks/critic-plans-only/constants.d.ts +6 -0
  53. package/dist/hooks/critic-plans-only/hook.d.ts +11 -0
  54. package/dist/hooks/critic-plans-only/index.d.ts +3 -0
  55. package/dist/hooks/critic-plans-only/path-policy.d.ts +1 -0
  56. package/dist/hooks/index.d.ts +2 -1
  57. package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
  58. package/dist/hooks/manager/hook-name.d.ts +1 -0
  59. package/dist/hooks/{guard → manager}/resolve-active-boulder-session.d.ts +5 -0
  60. package/dist/hooks/{guard → manager}/system-reminder-templates.d.ts +2 -2
  61. package/dist/hooks/mempalace-auto-save/constants.d.ts +1 -0
  62. package/dist/hooks/mempalace-auto-save/handler.d.ts +13 -0
  63. package/dist/hooks/mempalace-auto-save/index.d.ts +15 -0
  64. package/dist/hooks/mempalace-auto-save/types.d.ts +16 -0
  65. package/dist/hooks/start-work/context-info-builder.d.ts +2 -0
  66. package/dist/hooks/start-work/worktree-block.d.ts +2 -1
  67. package/dist/hooks/start-work/worktree-detector.d.ts +45 -0
  68. package/dist/hooks/strategist-md-only/agent-resolution.d.ts +1 -1
  69. package/dist/hooks/strategist-md-only/constants.d.ts +8 -2
  70. package/dist/index.js +1385 -2003
  71. package/dist/internals/plugins/pty/pty/tools/list.d.ts +2 -5
  72. package/dist/mcp/registry.d.ts +1 -1
  73. package/dist/mcp/types.d.ts +0 -4
  74. package/dist/plugin/hooks/create-continuation-hooks.d.ts +4 -0
  75. package/dist/plugin/tool-registry.d.ts +4 -2
  76. package/dist/plugin-handlers/agent-priority-order.d.ts +2 -2
  77. package/dist/shared/agent-display-names.d.ts +2 -2
  78. package/dist/shared/system-directive.d.ts +2 -2
  79. package/dist/tools/agent-browser/constants.d.ts +16 -0
  80. package/dist/tools/agent-browser/index.d.ts +4 -0
  81. package/dist/tools/agent-browser/integration.d.ts +2 -0
  82. package/dist/tools/agent-browser/tools.d.ts +2 -0
  83. package/dist/tools/agent-browser/types.d.ts +80 -0
  84. package/dist/tools/call-hiai-agent/background-agent-executor.d.ts +5 -0
  85. package/dist/tools/{call-omo-agent → call-hiai-agent}/background-executor.d.ts +2 -2
  86. package/dist/tools/call-hiai-agent/constants.d.ts +3 -0
  87. package/dist/tools/{call-omo-agent → call-hiai-agent}/index.d.ts +1 -1
  88. package/dist/tools/{call-omo-agent → call-hiai-agent}/session-creator.d.ts +2 -2
  89. package/dist/tools/{call-omo-agent → call-hiai-agent}/subagent-session-creator.d.ts +2 -2
  90. package/dist/tools/{call-omo-agent → call-hiai-agent}/sync-executor.d.ts +2 -2
  91. package/dist/tools/{call-omo-agent → call-hiai-agent}/tools.d.ts +1 -1
  92. package/dist/tools/{call-omo-agent → call-hiai-agent}/types.d.ts +2 -2
  93. package/dist/tools/delegate-task/constants.d.ts +1 -1
  94. package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
  95. package/dist/tools/index.d.ts +2 -1
  96. package/dist/tools/task/todo-sync.d.ts +1 -1
  97. package/docs/HOOKS.md +126 -0
  98. package/docs/HOOK_TIMINGS.md +58 -0
  99. package/docs/PERMISSIONS.md +84 -0
  100. package/docs/quickstart.md +60 -0
  101. package/hiai-opencode.json +10 -22
  102. package/package.json +14 -12
  103. package/skills/firecrawl-cli/SKILL.md +314 -0
  104. package/skills/firecrawl-cli/rules/install.md +98 -0
  105. package/assets/mcp/playwright.mjs +0 -83
  106. package/assets/mcp/rag.mjs +0 -236
  107. package/dist/agents/brainstormer.d.ts +0 -7
  108. package/dist/agents/guard/default-prompt-sections.d.ts +0 -6
  109. package/dist/agents/guard/default.d.ts +0 -2
  110. package/dist/agents/guard/index.d.ts +0 -2
  111. package/dist/agents/platform-manager.d.ts +0 -7
  112. package/dist/agents/prompt-library/platform.d.ts +0 -1
  113. package/dist/features/builtin-skills/skills/playwright-cli.d.ts +0 -10
  114. package/dist/hooks/guard/hook-name.d.ts +0 -1
  115. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  116. package/dist/tools/call-omo-agent/constants.d.ts +0 -3
  117. /package/dist/hooks/{guard → manager}/background-launch-session-tracking.d.ts +0 -0
  118. /package/dist/hooks/{guard → manager}/bob-path.d.ts +0 -0
  119. /package/dist/hooks/{guard → manager}/boulder-continuation-injector.d.ts +0 -0
  120. /package/dist/hooks/{guard → manager}/boulder-session-lineage.d.ts +0 -0
  121. /package/dist/hooks/{guard → manager}/event-handler.d.ts +0 -0
  122. /package/dist/hooks/{guard → manager}/final-wave-approval-gate.d.ts +0 -0
  123. /package/dist/hooks/{guard → manager}/final-wave-plan-state.d.ts +0 -0
  124. /package/dist/hooks/{guard → manager}/guard-hook.d.ts +0 -0
  125. /package/dist/hooks/{guard → manager}/idle-event.d.ts +0 -0
  126. /package/dist/hooks/{guard → manager}/index.d.ts +0 -0
  127. /package/dist/hooks/{guard → manager}/is-abort-error.d.ts +0 -0
  128. /package/dist/hooks/{guard → manager}/recent-model-resolver.d.ts +0 -0
  129. /package/dist/hooks/{guard → manager}/session-last-agent.d.ts +0 -0
  130. /package/dist/hooks/{guard → manager}/subagent-session-id.d.ts +0 -0
  131. /package/dist/hooks/{guard → manager}/task-context.d.ts +0 -0
  132. /package/dist/hooks/{guard → manager}/tool-execute-after.d.ts +0 -0
  133. /package/dist/hooks/{guard → manager}/tool-execute-before.d.ts +0 -0
  134. /package/dist/hooks/{guard → manager}/types.d.ts +0 -0
  135. /package/dist/hooks/{guard → manager}/verification-reminders.d.ts +0 -0
  136. /package/dist/hooks/{guard → manager}/write-edit-tool-policy.d.ts +0 -0
  137. /package/dist/tools/{call-omo-agent → call-hiai-agent}/agent-resolver.d.ts +0 -0
  138. /package/dist/tools/{call-omo-agent → call-hiai-agent}/completion-poller.d.ts +0 -0
  139. /package/dist/tools/{call-omo-agent → call-hiai-agent}/message-dir.d.ts +0 -0
  140. /package/dist/tools/{call-omo-agent → call-hiai-agent}/message-processor.d.ts +0 -0
  141. /package/dist/tools/{call-omo-agent → call-hiai-agent}/message-storage-directory.d.ts +0 -0
  142. /package/dist/tools/{call-omo-agent → call-hiai-agent}/tool-context-with-metadata.d.ts +0 -0
@@ -4,4 +4,4 @@
4
4
  * The markdown template structure for work plans generated by Strategist.
5
5
  * Includes TL;DR, context, objectives, verification strategy, TODOs, and success criteria.
6
6
  */
7
- export declare const PROMETHEUS_PLAN_TEMPLATE = "## Plan Structure\n\nGenerate plan to: `.bob/plans/{name}.md`\n\n```markdown\n# {Plan Title}\n\n## TL;DR\n\n> **Quick Summary**: [1-2 sentences capturing the core objective and approach]\n> \n> **Deliverables**: [Bullet list of concrete outputs]\n> - [Output 1]\n> - [Output 2]\n> \n> **Estimated Effort**: [Quick | Short | Medium | Large | XL]\n> **Parallel Execution**: [YES - N waves | NO - sequential]\n> **Critical Path**: [Task X \u2192 Task Y \u2192 Task Z]\n\n---\n\n## Context\n\n### Original Request\n[User's initial description]\n\n### Interview Summary\n**Key Discussions**:\n- [Point 1]: [User's decision/preference]\n- [Point 2]: [Agreed approach]\n\n**Research Findings**:\n- [Finding 1]: [Implication]\n- [Finding 2]: [Recommendation]\n\n### Strategist Review\n**Identified Gaps** (addressed):\n- [Gap 1]: [How resolved]\n- [Gap 2]: [How resolved]\n\n---\n\n## Work Objectives\n\n### Core Objective\n[1-2 sentences: what we're achieving]\n\n### Concrete Deliverables\n- [Exact file/endpoint/feature]\n\n### Definition of Done\n- [ ] [Verifiable condition with command]\n\n### Must Have\n- [Non-negotiable requirement]\n\n### Must NOT Have (Guardrails)\n- [Explicit exclusion from Strategist review]\n- [AI slop pattern to avoid]\n- [Scope boundary]\n\n---\n\n## Verification Strategy\n\n> **ZERO HUMAN INTERVENTION** - ALL verification is agent-executed. No exceptions.\n> Acceptance criteria requiring \"user manually tests/confirms\" are FORBIDDEN.\n\n### Test Decision\n- **Infrastructure exists**: [YES/NO]\n- **Automated tests**: [TDD / Tests-after / None]\n- **Framework**: [bun test / vitest / jest / pytest / none]\n- **If TDD**: Each task follows RED (failing test) \u2192 GREEN (minimal impl) \u2192 REFACTOR\n\n### QA Policy\nEvery task MUST include agent-executed QA scenarios (see TODO template below).\nEvidence saved to `.bob/evidence/task-{N}-{scenario-slug}.{ext}`.\n\n- **Frontend/UI**: Use Playwright (playwright skill) - Navigate, interact, assert DOM, screenshot\n- **TUI/CLI**: Use interactive_bash (tmux) - Run command, send keystrokes, validate output\n- **API/Backend**: Use Bash (curl) - Send requests, assert status + response fields\n- **Library/Module**: Use Bash (bun/node REPL) - Import, call functions, compare output\n\n---\n\n## Execution Strategy\n\n### Parallel Execution Waves\n\n> Maximize throughput by grouping independent tasks into parallel waves.\n> Each wave completes before the next begins.\n> Target: 5-8 tasks per wave. Fewer than 3 per wave (except final) = under-splitting.\n\n```\nWave 1 (Start Immediately - foundation + scaffolding):\n\u251C\u2500\u2500 Task 1: Project scaffolding + config [quick]\n\u251C\u2500\u2500 Task 2: Design system tokens [quick]\n\u251C\u2500\u2500 Task 3: Type definitions [quick]\n\u251C\u2500\u2500 Task 4: Schema definitions [quick]\n\u251C\u2500\u2500 Task 5: Storage interface + in-memory impl [quick]\n\u251C\u2500\u2500 Task 6: Auth middleware [quick]\n\u2514\u2500\u2500 Task 7: Client module [quick]\n\nWave 2 (After Wave 1 - core modules, MAX PARALLEL):\n\u251C\u2500\u2500 Task 8: Core business logic (depends: 3, 5, 7) [deep]\n\u251C\u2500\u2500 Task 9: API endpoints (depends: 4, 5) [unspecified-high]\n\u251C\u2500\u2500 Task 10: Secondary storage impl (depends: 5) [unspecified-high]\n\u251C\u2500\u2500 Task 11: Retry/fallback logic (depends: 8) [deep]\n\u251C\u2500\u2500 Task 12: UI layout + navigation (depends: 2) [visual-engineering]\n\u251C\u2500\u2500 Task 13: API client + hooks (depends: 4) [quick]\n\u2514\u2500\u2500 Task 14: Telemetry middleware (depends: 5, 10) [unspecified-high]\n\nWave 3 (After Wave 2 - integration + UI):\n\u251C\u2500\u2500 Task 15: Main route combining modules (depends: 6, 11, 14) [deep]\n\u251C\u2500\u2500 Task 16: UI data visualization (depends: 12, 13) [visual-engineering]\n\u251C\u2500\u2500 Task 17: Deployment config A (depends: 15) [quick]\n\u251C\u2500\u2500 Task 18: Deployment config B (depends: 15) [quick]\n\u251C\u2500\u2500 Task 19: Deployment config C (depends: 15) [quick]\n\u2514\u2500\u2500 Task 20: UI request log + build (depends: 16) [visual-engineering]\n\nWave FINAL (After ALL tasks \u2014 4 parallel reviews, then user okay):\n\u251C\u2500\u2500 Task F1: Plan compliance audit (critic)\n\u251C\u2500\u2500 Task F2: Code quality review (unspecified-high)\n\u251C\u2500\u2500 Task F3: Real manual QA (unspecified-high)\n\u2514\u2500\u2500 Task F4: Scope fidelity check (deep)\n-> Present results -> Get explicit user okay\n\nCritical Path: Task 1 \u2192 Task 5 \u2192 Task 8 \u2192 Task 11 \u2192 Task 15 \u2192 Task 21 \u2192 F1-F4 \u2192 user okay\nParallel Speedup: ~70% faster than sequential\nMax Concurrent: 7 (Waves 1 & 2)\n```\n\n### Dependency Matrix (abbreviated - show ALL tasks in your generated plan)\n\n- **1-7**: - - 8-14, 1\n- **8**: 3, 5, 7 - 11, 15, 2\n- **11**: 8 - 15, 2\n- **14**: 5, 10 - 15, 2\n- **15**: 6, 11, 14 - 17-19, 21, 3\n- **21**: 15 - 23, 24, 4\n\n> This is abbreviated for reference. YOUR generated plan must include the FULL matrix for ALL tasks.\n\n### Agent Dispatch Summary\n\n- **1**: **7** - T1-T4 \u2192 `quick`, T5 \u2192 `quick`, T6 \u2192 `quick`, T7 \u2192 `quick`\n- **2**: **7** - T8 \u2192 `deep`, T9 \u2192 `unspecified-high`, T10 \u2192 `unspecified-high`, T11 \u2192 `deep`, T12 \u2192 `visual-engineering`, T13 \u2192 `quick`, T14 \u2192 `unspecified-high`\n- **3**: **6** - T15 \u2192 `deep`, T16 \u2192 `visual-engineering`, T17-T19 \u2192 `quick`, T20 \u2192 `visual-engineering`\n- **4**: **4** - T21 \u2192 `deep`, T22 \u2192 `unspecified-high`, T23 \u2192 `deep`, T24 \u2192 `git`\n- **FINAL**: **4** - F1 \u2192 `critic`, F2 \u2192 `unspecified-high`, F3 \u2192 `unspecified-high`, F4 \u2192 `deep`\n\n---\n\n## TODOs\n\n> Implementation + Test = ONE Task. Never separate.\n> EVERY task MUST have: Recommended Agent Profile + Parallelization info + QA Scenarios.\n> **A task WITHOUT QA Scenarios is INCOMPLETE. No exceptions.**\n\n- [ ] 1. [Task Title]\n\n **What to do**:\n - [Clear implementation steps]\n - [Test cases to cover]\n\n **Must NOT do**:\n - [Specific exclusions from guardrails]\n\n **Recommended Agent Profile**:\n > Select category + skills based on task domain. Justify each choice.\n - **Category**: `[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]`\n - Reason: [Why this category fits the task domain]\n - **Skills**: [`skill-1`, `skill-2`]\n - `skill-1`: [Why needed - domain overlap explanation]\n - `skill-2`: [Why needed - domain overlap explanation]\n - **Skills Evaluated but Omitted**:\n - `omitted-skill`: [Why domain doesn't overlap]\n\n **Parallelization**:\n - **Can Run In Parallel**: YES | NO\n - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential\n - **Blocks**: [Tasks that depend on this task completing]\n - **Blocked By**: [Tasks this depends on] | None (can start immediately)\n\n **References** (Be Exhaustive):\n\n > The executor has NO context from your interview. References are their ONLY guide.\n > Each reference must answer: \"What should I look at and WHY?\"\n\n **Pattern References** (existing code to follow):\n - `src/services/auth.ts:45-78` - Authentication flow pattern (JWT creation, refresh token handling)\n\n **API/Type References** (contracts to implement against):\n - `src/types/user.ts:UserDTO` - Response shape for user endpoints\n\n **Test References** (testing patterns to follow):\n - `src/__tests__/auth.test.ts:describe(\"login\")` - Test structure and mocking patterns\n\n **External References** (libraries and frameworks):\n - Official docs: `https://zod.dev/?id=basic-usage` - Zod validation syntax\n\n **WHY Each Reference Matters** (explain the relevance):\n - Don't just list files - explain what pattern/information the executor should extract\n - Bad: `src/utils.ts` (vague, which utils? why?)\n - Good: `src/utils/validation.ts:sanitizeInput()` - Use this sanitization pattern for user input\n\n **Acceptance Criteria**:\n\n > **AGENT-EXECUTABLE VERIFICATION ONLY** - No human action permitted.\n > Every criterion MUST be verifiable by running a command or using a tool.\n\n **If TDD (tests enabled):**\n - [ ] Test file created: src/auth/login.test.ts\n - [ ] bun test src/auth/login.test.ts \u2192 PASS (3 tests, 0 failures)\n\n **QA Scenarios (task is INCOMPLETE without these):**\n\n > **This is NOT optional. A task without QA scenarios WILL BE REJECTED.**\n >\n > Write scenario tests that verify the ACTUAL BEHAVIOR of what you built.\n > Minimum: 1 happy path + 1 failure/edge case per task.\n > Each scenario = exact tool + exact steps + exact assertions + evidence path.\n >\n > **The executing agent MUST run these scenarios after implementation.**\n > **The orchestrator WILL verify evidence files exist before marking task complete.**\n\n \\`\\`\\`\n Scenario: [Happy path - what SHOULD work]\n Tool: [Playwright / interactive_bash / Bash (curl)]\n Preconditions: [Exact setup state]\n Steps:\n 1. [Exact action - specific command/selector/endpoint, no vagueness]\n 2. [Next action - with expected intermediate state]\n 3. [Assertion - exact expected value, not \"verify it works\"]\n Expected Result: [Concrete, observable, binary pass/fail]\n Failure Indicators: [What specifically would mean this failed]\n Evidence: .bob/evidence/task-{N}-{scenario-slug}.{ext}\n\n Scenario: [Failure/edge case - what SHOULD fail gracefully]\n Tool: [same format]\n Preconditions: [Invalid input / missing dependency / error state]\n Steps:\n 1. [Trigger the error condition]\n 2. [Assert error is handled correctly]\n Expected Result: [Graceful failure with correct error message/code]\n Evidence: .bob/evidence/task-{N}-{scenario-slug}-error.{ext}\n \\`\\`\\`\n\n > **Specificity requirements - every scenario MUST use:**\n > - **Selectors**: Specific CSS selectors (`.login-button`, not \"the login button\")\n > - **Data**: Concrete test data (`\"test@example.com\"`, not `\"[email]\"`)\n > - **Assertions**: Exact values (`text contains \"Welcome back\"`, not \"verify it works\")\n > - **Timing**: Wait conditions where relevant (`timeout: 10s`)\n > - **Negative**: At least ONE failure/error scenario per task\n >\n > **Anti-patterns (your scenario is INVALID if it looks like this):**\n > - \u274C \"Verify it works correctly\" - HOW? What does \"correctly\" mean?\n > - \u274C \"Check the API returns data\" - WHAT data? What fields? What values?\n > - \u274C \"Test the component renders\" - WHERE? What selector? What content?\n > - \u274C Any scenario without an evidence path\n\n **Evidence to Capture:**\n - [ ] Each evidence file named: task-{N}-{scenario-slug}.{ext}\n - [ ] Screenshots for UI, terminal output for CLI, response bodies for API\n\n **Commit**: YES | NO (groups with N)\n - Message: `type(scope): desc`\n - Files: `path/to/file`\n - Pre-commit: `test command`\n\n---\n\n## Final Verification Wave (after ALL implementation tasks)\n\n> 4 review agents run in PARALLEL. ALL must APPROVE. Present consolidated results to user and get explicit \"okay\" before completing.\n>\n> **Do NOT auto-proceed after verification. Wait for user's explicit approval before marking work complete.**\n> **Never mark F1-F4 as checked before getting user's okay.** Rejection or user feedback -> fix -> re-run -> present again -> wait for okay.\n\n- [ ] F1. **Plan Compliance Audit** \u2014 `critic`\n Read the plan end-to-end. For each \"Must Have\": verify implementation exists (read file, curl endpoint, run command). For each \"Must NOT Have\": search codebase for forbidden patterns \u2014 reject with file:line if found. Check evidence files exist in .bob/evidence/. Compare deliverables against plan.\n Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT`\n\n- [ ] F2. **Code Quality Review** \u2014 `unspecified-high`\n Run `tsc --noEmit` + linter + `bun test`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names (data/result/item/temp).\n Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT`\n\n- [ ] F3. **Real Manual QA** \u2014 `unspecified-high` (+ `playwright` skill if UI)\n Start from clean state. Execute EVERY QA scenario from EVERY task \u2014 follow exact steps, capture evidence. Test cross-task integration (features working together, not isolation). Test edge cases: empty state, invalid input, rapid actions. Save to `.bob/evidence/final-qa/`.\n Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT`\n\n- [ ] F4. **Scope Fidelity Check** \u2014 `deep`\n For each task: read \"What to do\", read actual diff (git log/diff). Verify 1:1 \u2014 everything in spec was built (no missing), nothing beyond spec was built (no creep). Check \"Must NOT do\" compliance. Detect cross-task contamination: Task N touching Task M's files. Flag unaccounted changes.\n Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT`\n\n---\n\n## Commit Strategy\n\n- **1**: `type(scope): desc` - file.ts, npm test\n\n---\n\n## Success Criteria\n\n### Verification Commands\n```bash\ncommand # Expected: output\n```\n\n### Final Checklist\n- [ ] All \"Must Have\" present\n- [ ] All \"Must NOT Have\" absent\n- [ ] All tests pass\n```\n\n---\n";
7
+ export declare const STRATEGIST_PLAN_TEMPLATE = "## Plan Structure\n\nGenerate plan to: `.bob/plans/{name}.md`\n\n```markdown\n# {Plan Title}\n\n## TL;DR\n\n> **Quick Summary**: [1-2 sentences capturing the core objective and approach]\n> \n> **Deliverables**: [Bullet list of concrete outputs]\n> - [Output 1]\n> - [Output 2]\n> \n> **Estimated Effort**: [Quick | Short | Medium | Large | XL]\n> **Parallel Execution**: [YES - N waves | NO - sequential]\n> **Critical Path**: [Task X \u2192 Task Y \u2192 Task Z]\n\n---\n\n## Context\n\n### Original Request\n[User's initial description]\n\n### Interview Summary\n**Key Discussions**:\n- [Point 1]: [User's decision/preference]\n- [Point 2]: [Agreed approach]\n\n**Research Findings**:\n- [Finding 1]: [Implication]\n- [Finding 2]: [Recommendation]\n\n### Strategist Review\n**Identified Gaps** (addressed):\n- [Gap 1]: [How resolved]\n- [Gap 2]: [How resolved]\n\n---\n\n## Work Objectives\n\n### Core Objective\n[1-2 sentences: what we're achieving]\n\n### Concrete Deliverables\n- [Exact file/endpoint/feature]\n\n### Definition of Done\n- [ ] [Verifiable condition with command]\n\n### Must Have\n- [Non-negotiable requirement]\n\n### Must NOT Have (Guardrails)\n- [Explicit exclusion from Strategist review]\n- [AI slop pattern to avoid]\n- [Scope boundary]\n\n---\n\n## Verification Strategy\n\n> **ZERO HUMAN INTERVENTION** - ALL verification is agent-executed. No exceptions.\n> Acceptance criteria requiring \"user manually tests/confirms\" are FORBIDDEN.\n\n### Test Decision\n- **Infrastructure exists**: [YES/NO]\n- **Automated tests**: [TDD / Tests-after / None]\n- **Framework**: [bun test / vitest / jest / pytest / none]\n- **If TDD**: Each task follows RED (failing test) \u2192 GREEN (minimal impl) \u2192 REFACTOR\n\n### QA Policy\nEvery task MUST include agent-executed QA scenarios (see TODO template below).\nEvidence saved to `.bob/evidence/task-{N}-{scenario-slug}.{ext}`.\n\n- **Frontend/UI**: Use agent-browser skill - Navigate, interact, assert DOM, screenshot\n- **TUI/CLI**: Use interactive_bash (tmux) - Run command, send keystrokes, validate output\n- **API/Backend**: Use Bash (curl) - Send requests, assert status + response fields\n- **Library/Module**: Use Bash (bun/node REPL) - Import, call functions, compare output\n\n---\n\n## Execution Strategy\n\n### Parallel Execution Waves\n\n> Maximize throughput by grouping independent tasks into parallel waves.\n> Each wave completes before the next begins.\n> Target: 5-8 tasks per wave. Fewer than 3 per wave (except final) = under-splitting.\n\n```\nWave 1 (Start Immediately - foundation + scaffolding):\n\u251C\u2500\u2500 Task 1: Project scaffolding + config [quick]\n\u251C\u2500\u2500 Task 2: Design system tokens [quick]\n\u251C\u2500\u2500 Task 3: Type definitions [quick]\n\u251C\u2500\u2500 Task 4: Schema definitions [quick]\n\u251C\u2500\u2500 Task 5: Storage interface + in-memory impl [quick]\n\u251C\u2500\u2500 Task 6: Auth middleware [quick]\n\u2514\u2500\u2500 Task 7: Client module [quick]\n\nWave 2 (After Wave 1 - core modules, MAX PARALLEL):\n\u251C\u2500\u2500 Task 8: Core business logic (depends: 3, 5, 7) [deep]\n\u251C\u2500\u2500 Task 9: API endpoints (depends: 4, 5) [unspecified-high]\n\u251C\u2500\u2500 Task 10: Secondary storage impl (depends: 5) [unspecified-high]\n\u251C\u2500\u2500 Task 11: Retry/fallback logic (depends: 8) [deep]\n\u251C\u2500\u2500 Task 12: UI layout + navigation (depends: 2) [visual-engineering]\n\u251C\u2500\u2500 Task 13: API client + hooks (depends: 4) [quick]\n\u2514\u2500\u2500 Task 14: Telemetry middleware (depends: 5, 10) [unspecified-high]\n\nWave 3 (After Wave 2 - integration + UI):\n\u251C\u2500\u2500 Task 15: Main route combining modules (depends: 6, 11, 14) [deep]\n\u251C\u2500\u2500 Task 16: UI data visualization (depends: 12, 13) [visual-engineering]\n\u251C\u2500\u2500 Task 17: Deployment config A (depends: 15) [quick]\n\u251C\u2500\u2500 Task 18: Deployment config B (depends: 15) [quick]\n\u251C\u2500\u2500 Task 19: Deployment config C (depends: 15) [quick]\n\u2514\u2500\u2500 Task 20: UI request log + build (depends: 16) [visual-engineering]\n\nWave FINAL (After ALL tasks \u2014 4 parallel reviews, then user okay):\n\u251C\u2500\u2500 Task F1: Plan compliance audit (critic)\n\u251C\u2500\u2500 Task F2: Code quality review (unspecified-high)\n\u251C\u2500\u2500 Task F3: Real manual QA (unspecified-high)\n\u2514\u2500\u2500 Task F4: Scope fidelity check (deep)\n-> Present results -> Get explicit user okay\n\nCritical Path: Task 1 \u2192 Task 5 \u2192 Task 8 \u2192 Task 11 \u2192 Task 15 \u2192 Task 21 \u2192 F1-F4 \u2192 user okay\nParallel Speedup: ~70% faster than sequential\nMax Concurrent: 7 (Waves 1 & 2)\n```\n\n### Dependency Matrix (abbreviated - show ALL tasks in your generated plan)\n\n- **1-7**: - - 8-14, 1\n- **8**: 3, 5, 7 - 11, 15, 2\n- **11**: 8 - 15, 2\n- **14**: 5, 10 - 15, 2\n- **15**: 6, 11, 14 - 17-19, 21, 3\n- **21**: 15 - 23, 24, 4\n\n> This is abbreviated for reference. YOUR generated plan must include the FULL matrix for ALL tasks.\n\n### Design Pipeline (for UI tasks)\n\nWhen the plan includes UI/visual tasks (visual-engineering category):\n\n1. **Designer** generates Stitch screens with design system\n2. **Vision** verifies screens in browser \u2192 Designer iterates\n3. **Designer** exports tokens/components via `stitch_export_design_system` + `stitch_generate_design_tokens`\n4. **Coder** implements from exported tokens (Tailwind classes, CSS variables, component specs)\n\nPlan UI tasks in this order: Designer task \u2192 Vision verification task \u2192 Coder implementation task. Never skip the Vision verification gate.\n\n### Agent Dispatch Summary\n\n- **1**: **7** - T1-T4 \u2192 `quick`, T5 \u2192 `quick`, T6 \u2192 `quick`, T7 \u2192 `quick`\n- **2**: **7** - T8 \u2192 `deep`, T9 \u2192 `unspecified-high`, T10 \u2192 `unspecified-high`, T11 \u2192 `deep`, T12 \u2192 `visual-engineering`, T13 \u2192 `quick`, T14 \u2192 `unspecified-high`\n- **3**: **6** - T15 \u2192 `deep`, T16 \u2192 `visual-engineering`, T17-T19 \u2192 `quick`, T20 \u2192 `visual-engineering`\n- **4**: **4** - T21 \u2192 `deep`, T22 \u2192 `unspecified-high`, T23 \u2192 `deep`, T24 \u2192 `git`\n- **FINAL**: **4** - F1 \u2192 `critic`, F2 \u2192 `unspecified-high`, F3 \u2192 `unspecified-high`, F4 \u2192 `deep`\n\n---\n\n## TODOs\n\n> Implementation + Test = ONE Task. Never separate.\n> EVERY task MUST have: Recommended Agent Profile + Parallelization info + QA Scenarios.\n> **A task WITHOUT QA Scenarios is INCOMPLETE. No exceptions.**\n\n- [ ] 1. [Task Title]\n\n **assigned_to**: coder (or: researcher, designer, writer, vision, sub)\n **category**: deep | quick | visual-engineering | unspecified-high | writing\n **skills**: [skill-1, skill-2]\n\n **What to do**:\n - [Clear implementation steps]\n - [Test cases to cover]\n\n **Must NOT do**:\n - [Specific exclusions from guardrails]\n\n **Recommended Agent Profile**:\n > Select category + skills based on task domain. Justify each choice.\n - **Category**: `[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]`\n - Reason: [Why this category fits the task domain]\n - **Skills**: [`skill-1`, `skill-2`]\n - `skill-1`: [Why needed - domain overlap explanation]\n - `skill-2`: [Why needed - domain overlap explanation]\n - **Skills Evaluated but Omitted**:\n - `omitted-skill`: [Why domain doesn't overlap]\n\n **Parallelization**:\n - **Can Run In Parallel**: YES | NO\n - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential\n - **Blocks**: [Tasks that depend on this task completing]\n - **Blocked By**: [Tasks this depends on] | None (can start immediately)\n\n **References** (Be Exhaustive):\n\n > The executor has NO context from your interview. References are their ONLY guide.\n > Each reference must answer: \"What should I look at and WHY?\"\n\n **Pattern References** (existing code to follow):\n - `src/services/auth.ts:45-78` - Authentication flow pattern (JWT creation, refresh token handling)\n\n **API/Type References** (contracts to implement against):\n - `src/types/user.ts:UserDTO` - Response shape for user endpoints\n\n **Test References** (testing patterns to follow):\n - `src/__tests__/auth.test.ts:describe(\"login\")` - Test structure and mocking patterns\n\n **External References** (libraries and frameworks):\n - Official docs: `https://zod.dev/?id=basic-usage` - Zod validation syntax\n\n **WHY Each Reference Matters** (explain the relevance):\n - Don't just list files - explain what pattern/information the executor should extract\n - Bad: `src/utils.ts` (vague, which utils? why?)\n - Good: `src/utils/validation.ts:sanitizeInput()` - Use this sanitization pattern for user input\n\n **Acceptance Criteria**:\n\n > **AGENT-EXECUTABLE VERIFICATION ONLY** - No human action permitted.\n > Every criterion MUST be verifiable by running a command or using a tool.\n\n **If TDD (tests enabled):**\n - [ ] Test file created: src/auth/login.test.ts\n - [ ] bun test src/auth/login.test.ts \u2192 PASS (3 tests, 0 failures)\n\n **QA Scenarios (task is INCOMPLETE without these):**\n\n > **This is NOT optional. A task without QA scenarios WILL BE REJECTED.**\n >\n > Write scenario tests that verify the ACTUAL BEHAVIOR of what you built.\n > Minimum: 1 happy path + 1 failure/edge case per task.\n > Each scenario = exact tool + exact steps + exact assertions + evidence path.\n >\n > **The executing agent MUST run these scenarios after implementation.**\n > **The orchestrator WILL verify evidence files exist before marking task complete.**\n\n \\`\\`\\`\n Scenario: [Happy path - what SHOULD work]\n Tool: [agent-browser / interactive_bash / Bash (curl)]\n Preconditions: [Exact setup state]\n Steps:\n 1. [Exact action - specific command/selector/endpoint, no vagueness]\n 2. [Next action - with expected intermediate state]\n 3. [Assertion - exact expected value, not \"verify it works\"]\n Expected Result: [Concrete, observable, binary pass/fail]\n Failure Indicators: [What specifically would mean this failed]\n Evidence: .bob/evidence/task-{N}-{scenario-slug}.{ext}\n\n Scenario: [Failure/edge case - what SHOULD fail gracefully]\n Tool: [same format]\n Preconditions: [Invalid input / missing dependency / error state]\n Steps:\n 1. [Trigger the error condition]\n 2. [Assert error is handled correctly]\n Expected Result: [Graceful failure with correct error message/code]\n Evidence: .bob/evidence/task-{N}-{scenario-slug}-error.{ext}\n \\`\\`\\`\n\n > **Specificity requirements - every scenario MUST use:**\n > - **Selectors**: Specific CSS selectors (`.login-button`, not \"the login button\")\n > - **Data**: Concrete test data (`\"test@example.com\"`, not `\"[email]\"`)\n > - **Assertions**: Exact values (`text contains \"Welcome back\"`, not \"verify it works\")\n > - **Timing**: Wait conditions where relevant (`timeout: 10s`)\n > - **Negative**: At least ONE failure/error scenario per task\n >\n > **Anti-patterns (your scenario is INVALID if it looks like this):**\n > - \u274C \"Verify it works correctly\" - HOW? What does \"correctly\" mean?\n > - \u274C \"Check the API returns data\" - WHAT data? What fields? What values?\n > - \u274C \"Test the component renders\" - WHERE? What selector? What content?\n > - \u274C Any scenario without an evidence path\n\n **Evidence to Capture:**\n - [ ] Each evidence file named: task-{N}-{scenario-slug}.{ext}\n - [ ] Screenshots for UI, terminal output for CLI, response bodies for API\n\n **Commit**: YES | NO (groups with N)\n - Message: `type(scope): desc`\n - Files: `path/to/file`\n - Pre-commit: `test command`\n\n---\n\n## Final Verification Wave (after ALL implementation tasks)\n\n> 4 review agents run in PARALLEL. ALL must APPROVE. Present consolidated results to user and get explicit \"okay\" before completing.\n>\n> **Do NOT auto-proceed after verification. Wait for user's explicit approval before marking work complete.**\n> **Never mark F1-F4 as checked before getting user's okay.** Rejection or user feedback -> fix -> re-run -> present again -> wait for okay.\n\n- [ ] F1. **Plan Compliance Audit** \u2014 `critic`\n Read the plan end-to-end. For each \"Must Have\": verify implementation exists (read file, curl endpoint, run command). For each \"Must NOT Have\": search codebase for forbidden patterns \u2014 reject with file:line if found. Check evidence files exist in .bob/evidence/. Compare deliverables against plan.\n Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT`\n\n- [ ] F2. **Code Quality Review** \u2014 `unspecified-high`\n Run `tsc --noEmit` + linter + `bun test`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names (data/result/item/temp).\n Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT`\n\n- [ ] F3. **Real Manual QA** \u2014 `unspecified-high` (+ `agent-browser` skill if UI)\n Start from clean state. Execute EVERY QA scenario from EVERY task \u2014 follow exact steps, capture evidence. Test cross-task integration (features working together, not isolation). Test edge cases: empty state, invalid input, rapid actions. Save to `.bob/evidence/final-qa/`.\n Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT`\n\n- [ ] F4. **Scope Fidelity Check** \u2014 `deep`\n For each task: read \"What to do\", read actual diff (git log/diff). Verify 1:1 \u2014 everything in spec was built (no missing), nothing beyond spec was built (no creep). Check \"Must NOT do\" compliance. Detect cross-task contamination: Task N touching Task M's files. Flag unaccounted changes.\n Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT`\n\n---\n\n## Commit Strategy\n\n- **1**: `type(scope): desc` - file.ts, npm test\n\n---\n\n## Success Criteria\n\n### Verification Commands\n```bash\ncommand # Expected: output\n```\n\n### Final Checklist\n- [ ] All \"Must Have\" present\n- [ ] All \"Must NOT Have\" absent\n- [ ] All tests pass\n```\n\n---\n";
@@ -4,10 +4,10 @@ export type { StrategistMode };
4
4
  * Strategist system prompt — unified across all models.
5
5
  * "interview" mode is the full spec session; "planning" is the lean default.
6
6
  */
7
- export declare const PROMETHEUS_SYSTEM_PROMPT: string;
8
- export declare const PROMETHEUS_PERMISSION: {
7
+ export declare const STRATEGIST_SYSTEM_PROMPT: string;
8
+ export declare const STRATEGIST_PERMISSION: {
9
9
  edit: "allow";
10
- bash: "allow";
10
+ bash: "deny";
11
11
  webfetch: "allow";
12
12
  question: "allow";
13
13
  };
@@ -1,7 +1,7 @@
1
1
  import type { AgentConfig } from "@opencode-ai/sdk";
2
2
  /**
3
3
  * Agent mode determines UI model selection behavior:
4
- * - "primary": Respects user's UI-selected model (bob, guard)
4
+ * - "primary": Respects user's UI-selected model (bob)
5
5
  * - "subagent": Uses own fallback chain, ignores UI selection (researcher, quality-guardian, etc.)
6
6
  * - "all": Available in both contexts (OpenCode compatibility)
7
7
  */
@@ -60,7 +60,7 @@ export declare function isGptCodexModel(model: string): boolean;
60
60
  export declare function isMiniMaxModel(model: string): boolean;
61
61
  export declare function isGlmModel(model: string): boolean;
62
62
  export declare function isGeminiModel(model: string): boolean;
63
- export type BuiltinAgentName = "bob" | "coder" | "strategist" | "critic" | "designer" | "multimodal" | "brainstormer" | "agent-skills" | "guard" | "platform-manager" | "quality-guardian" | "researcher" | "sub";
63
+ export type BuiltinAgentName = "bob" | "coder" | "strategist" | "critic" | "designer" | "multimodal" | "writer" | "agent-skills" | "manager" | "quality-guardian" | "researcher" | "sub";
64
64
  export type OverridableAgentName = "build" | BuiltinAgentName;
65
65
  export type AgentName = BuiltinAgentName;
66
66
  export type AgentOverrideConfig = Partial<AgentConfig> & {
@@ -0,0 +1,7 @@
1
+ import type { AgentConfig } from "@opencode-ai/sdk";
2
+ import type { AgentPromptMetadata } from "./types";
3
+ export declare function createWriterAgent(model: string): AgentConfig;
4
+ export declare namespace createWriterAgent {
5
+ var mode: "subagent";
6
+ }
7
+ export declare const writerPromptMetadata: AgentPromptMetadata;
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * hiai-opencode config barrel
3
3
  *
4
- * Re-exports both the original platform config types and the oh-my-openagent
5
- * config schema types. The canonical config type is HiaiOpenCodeConfig (uppercase C)
6
- * from the oh-my-openagent schema. HiaiOpencodeConfig (lowercase c) is kept as
7
- * a backward-compatible alias for the original platform config shape.
4
+ * Re-exports config types and the hiai-opencode config schema.
5
+ * The canonical config type is HiaiOpenCodeConfig.
8
6
  */
9
7
  export { loadConfig, resolveEnvVars, resolveMcpEnv } from "./loader.js";
10
8
  export { HiaiOpencodeConfigSchema } from "./platform-schema.js";
11
9
  export { defaultConfig } from "./defaults.js";
12
10
  export type { HiaiOpencodeConfig, AgentConfig, CategoryConfig, McpServerConfig, LspServerConfig, Subtask2Config, SkillsConfig as PlatformSkillsConfig, PermissionsConfig as PlatformPermissionsConfig, } from "./types.js";
13
- export { HiaiOpenCodeConfigSchema } from "./schema/oh-my-opencode-config.js";
14
- export type { HiaiOpenCodeConfig } from "./schema/oh-my-opencode-config.js";
11
+ export { HiaiOpenCodeConfigSchema } from "./schema/hiai-opencode-config.js";
12
+ export type { HiaiOpenCodeConfig } from "./schema/hiai-opencode-config.js";
15
13
  export type { AgentName } from "./schema/agent-names.js";
16
14
  export type { AgentOverrideConfig, AgentOverrides } from "./schema/agent-overrides.js";
17
15
  export type { BuiltinSkillName } from "./schema/agent-names.js";
@@ -64,7 +64,7 @@ export declare const ModelSlotsConfigSchema: z.ZodObject<{
64
64
  design: "design";
65
65
  }>>;
66
66
  }, z.core.$strip>]>>;
67
- guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
67
+ manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
68
68
  model: z.ZodString;
69
69
  recommended: z.ZodOptional<z.ZodEnum<{
70
70
  high: "high";
@@ -112,7 +112,7 @@ export declare const ModelSlotsConfigSchema: z.ZodObject<{
112
112
  design: "design";
113
113
  }>>;
114
114
  }, z.core.$strip>]>>;
115
- manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
115
+ writer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
116
116
  model: z.ZodString;
117
117
  recommended: z.ZodOptional<z.ZodEnum<{
118
118
  high: "high";
@@ -124,7 +124,7 @@ export declare const ModelSlotsConfigSchema: z.ZodObject<{
124
124
  design: "design";
125
125
  }>>;
126
126
  }, z.core.$strip>]>>;
127
- brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
127
+ vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
128
128
  model: z.ZodString;
129
129
  recommended: z.ZodOptional<z.ZodEnum<{
130
130
  high: "high";
@@ -136,7 +136,7 @@ export declare const ModelSlotsConfigSchema: z.ZodObject<{
136
136
  design: "design";
137
137
  }>>;
138
138
  }, z.core.$strip>]>>;
139
- vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
139
+ sub: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
140
140
  model: z.ZodString;
141
141
  recommended: z.ZodOptional<z.ZodEnum<{
142
142
  high: "high";
@@ -148,7 +148,19 @@ export declare const ModelSlotsConfigSchema: z.ZodObject<{
148
148
  design: "design";
149
149
  }>>;
150
150
  }, z.core.$strip>]>>;
151
- sub: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
151
+ guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
152
+ model: z.ZodString;
153
+ recommended: z.ZodOptional<z.ZodEnum<{
154
+ high: "high";
155
+ xhigh: "xhigh";
156
+ middle: "middle";
157
+ fast: "fast";
158
+ vision: "vision";
159
+ writing: "writing";
160
+ design: "design";
161
+ }>>;
162
+ }, z.core.$strip>]>>;
163
+ brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
152
164
  model: z.ZodString;
153
165
  recommended: z.ZodOptional<z.ZodEnum<{
154
166
  high: "high";
@@ -226,10 +238,6 @@ export declare const McpServerConfigSchema: z.ZodObject<{
226
238
  remote: "remote";
227
239
  local: "local";
228
240
  }>>;
229
- provider: z.ZodOptional<z.ZodEnum<{
230
- exa: "exa";
231
- tavily: "tavily";
232
- }>>;
233
241
  url: z.ZodOptional<z.ZodString>;
234
242
  headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
235
243
  command: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -313,10 +321,6 @@ export declare const PermissionsConfigSchema: z.ZodObject<{
313
321
  allow: "allow";
314
322
  deny: "deny";
315
323
  }>>;
316
- websearch: z.ZodOptional<z.ZodEnum<{
317
- allow: "allow";
318
- deny: "deny";
319
- }>>;
320
324
  codesearch: z.ZodOptional<z.ZodEnum<{
321
325
  allow: "allow";
322
326
  deny: "deny";
@@ -389,7 +393,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
389
393
  design: "design";
390
394
  }>>;
391
395
  }, z.core.$strip>]>>;
392
- guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
396
+ manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
393
397
  model: z.ZodString;
394
398
  recommended: z.ZodOptional<z.ZodEnum<{
395
399
  high: "high";
@@ -437,7 +441,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
437
441
  design: "design";
438
442
  }>>;
439
443
  }, z.core.$strip>]>>;
440
- manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
444
+ writer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
441
445
  model: z.ZodString;
442
446
  recommended: z.ZodOptional<z.ZodEnum<{
443
447
  high: "high";
@@ -449,7 +453,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
449
453
  design: "design";
450
454
  }>>;
451
455
  }, z.core.$strip>]>>;
452
- brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
456
+ vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
453
457
  model: z.ZodString;
454
458
  recommended: z.ZodOptional<z.ZodEnum<{
455
459
  high: "high";
@@ -461,7 +465,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
461
465
  design: "design";
462
466
  }>>;
463
467
  }, z.core.$strip>]>>;
464
- vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
468
+ sub: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
465
469
  model: z.ZodString;
466
470
  recommended: z.ZodOptional<z.ZodEnum<{
467
471
  high: "high";
@@ -473,7 +477,19 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
473
477
  design: "design";
474
478
  }>>;
475
479
  }, z.core.$strip>]>>;
476
- sub: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
480
+ guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
481
+ model: z.ZodString;
482
+ recommended: z.ZodOptional<z.ZodEnum<{
483
+ high: "high";
484
+ xhigh: "xhigh";
485
+ middle: "middle";
486
+ fast: "fast";
487
+ vision: "vision";
488
+ writing: "writing";
489
+ design: "design";
490
+ }>>;
491
+ }, z.core.$strip>]>>;
492
+ brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
477
493
  model: z.ZodString;
478
494
  recommended: z.ZodOptional<z.ZodEnum<{
479
495
  high: "high";
@@ -491,7 +507,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
491
507
  model: z.ZodString;
492
508
  description: z.ZodOptional<z.ZodString>;
493
509
  }, z.core.$strip>>;
494
- guard: z.ZodOptional<z.ZodObject<{
510
+ manager: z.ZodOptional<z.ZodObject<{
495
511
  model: z.ZodString;
496
512
  description: z.ZodOptional<z.ZodString>;
497
513
  }, z.core.$strip>>;
@@ -527,11 +543,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
527
543
  model: z.ZodString;
528
544
  description: z.ZodOptional<z.ZodString>;
529
545
  }, z.core.$strip>>;
530
- "platform-manager": z.ZodOptional<z.ZodObject<{
531
- model: z.ZodString;
532
- description: z.ZodOptional<z.ZodString>;
533
- }, z.core.$strip>>;
534
- brainstormer: z.ZodOptional<z.ZodObject<{
546
+ writer: z.ZodOptional<z.ZodObject<{
535
547
  model: z.ZodString;
536
548
  description: z.ZodOptional<z.ZodString>;
537
549
  }, z.core.$strip>>;
@@ -555,10 +567,6 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
555
567
  model: z.ZodString;
556
568
  description: z.ZodOptional<z.ZodString>;
557
569
  }, z.core.$strip>>;
558
- manager: z.ZodOptional<z.ZodObject<{
559
- model: z.ZodString;
560
- description: z.ZodOptional<z.ZodString>;
561
- }, z.core.$strip>>;
562
570
  vision: z.ZodOptional<z.ZodObject<{
563
571
  model: z.ZodString;
564
572
  description: z.ZodOptional<z.ZodString>;
@@ -603,6 +611,14 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
603
611
  model: z.ZodString;
604
612
  description: z.ZodOptional<z.ZodString>;
605
613
  }, z.core.$strip>>;
614
+ guard: z.ZodOptional<z.ZodObject<{
615
+ model: z.ZodString;
616
+ description: z.ZodOptional<z.ZodString>;
617
+ }, z.core.$strip>>;
618
+ brainstormer: z.ZodOptional<z.ZodObject<{
619
+ model: z.ZodString;
620
+ description: z.ZodOptional<z.ZodString>;
621
+ }, z.core.$strip>>;
606
622
  }, z.core.$catchall<z.ZodObject<{
607
623
  model: z.ZodString;
608
624
  description: z.ZodOptional<z.ZodString>;
@@ -630,7 +646,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
630
646
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
631
647
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
632
648
  }, z.core.$strip>>;
633
- guard: z.ZodOptional<z.ZodObject<{
649
+ manager: z.ZodOptional<z.ZodObject<{
634
650
  fallbackChain: z.ZodArray<z.ZodObject<{
635
651
  providers: z.ZodArray<z.ZodString>;
636
652
  model: z.ZodString;
@@ -828,7 +844,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
828
844
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
829
845
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
830
846
  }, z.core.$strip>>;
831
- "platform-manager": z.ZodOptional<z.ZodObject<{
847
+ writer: z.ZodOptional<z.ZodObject<{
832
848
  fallbackChain: z.ZodArray<z.ZodObject<{
833
849
  providers: z.ZodArray<z.ZodString>;
834
850
  model: z.ZodString;
@@ -850,7 +866,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
850
866
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
851
867
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
852
868
  }, z.core.$strip>>;
853
- brainstormer: z.ZodOptional<z.ZodObject<{
869
+ "agent-skills": z.ZodOptional<z.ZodObject<{
854
870
  fallbackChain: z.ZodArray<z.ZodObject<{
855
871
  providers: z.ZodArray<z.ZodString>;
856
872
  model: z.ZodString;
@@ -872,7 +888,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
872
888
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
873
889
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
874
890
  }, z.core.$strip>>;
875
- "agent-skills": z.ZodOptional<z.ZodObject<{
891
+ general: z.ZodOptional<z.ZodObject<{
876
892
  fallbackChain: z.ZodArray<z.ZodObject<{
877
893
  providers: z.ZodArray<z.ZodString>;
878
894
  model: z.ZodString;
@@ -894,7 +910,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
894
910
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
895
911
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
896
912
  }, z.core.$strip>>;
897
- general: z.ZodOptional<z.ZodObject<{
913
+ zoe: z.ZodOptional<z.ZodObject<{
898
914
  fallbackChain: z.ZodArray<z.ZodObject<{
899
915
  providers: z.ZodArray<z.ZodString>;
900
916
  model: z.ZodString;
@@ -916,7 +932,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
916
932
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
917
933
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
918
934
  }, z.core.$strip>>;
919
- zoe: z.ZodOptional<z.ZodObject<{
935
+ build: z.ZodOptional<z.ZodObject<{
920
936
  fallbackChain: z.ZodArray<z.ZodObject<{
921
937
  providers: z.ZodArray<z.ZodString>;
922
938
  model: z.ZodString;
@@ -938,7 +954,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
938
954
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
939
955
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
940
956
  }, z.core.$strip>>;
941
- build: z.ZodOptional<z.ZodObject<{
957
+ "pre-plan": z.ZodOptional<z.ZodObject<{
942
958
  fallbackChain: z.ZodArray<z.ZodObject<{
943
959
  providers: z.ZodArray<z.ZodString>;
944
960
  model: z.ZodString;
@@ -960,7 +976,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
960
976
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
961
977
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
962
978
  }, z.core.$strip>>;
963
- "pre-plan": z.ZodOptional<z.ZodObject<{
979
+ vision: z.ZodOptional<z.ZodObject<{
964
980
  fallbackChain: z.ZodArray<z.ZodObject<{
965
981
  providers: z.ZodArray<z.ZodString>;
966
982
  model: z.ZodString;
@@ -982,7 +998,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
982
998
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
983
999
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
984
1000
  }, z.core.$strip>>;
985
- manager: z.ZodOptional<z.ZodObject<{
1001
+ logician: z.ZodOptional<z.ZodObject<{
986
1002
  fallbackChain: z.ZodArray<z.ZodObject<{
987
1003
  providers: z.ZodArray<z.ZodString>;
988
1004
  model: z.ZodString;
@@ -1004,7 +1020,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1004
1020
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1005
1021
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1006
1022
  }, z.core.$strip>>;
1007
- vision: z.ZodOptional<z.ZodObject<{
1023
+ librarian: z.ZodOptional<z.ZodObject<{
1008
1024
  fallbackChain: z.ZodArray<z.ZodObject<{
1009
1025
  providers: z.ZodArray<z.ZodString>;
1010
1026
  model: z.ZodString;
@@ -1026,7 +1042,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1026
1042
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1027
1043
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1028
1044
  }, z.core.$strip>>;
1029
- logician: z.ZodOptional<z.ZodObject<{
1045
+ explore: z.ZodOptional<z.ZodObject<{
1030
1046
  fallbackChain: z.ZodArray<z.ZodObject<{
1031
1047
  providers: z.ZodArray<z.ZodString>;
1032
1048
  model: z.ZodString;
@@ -1048,7 +1064,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1048
1064
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1049
1065
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1050
1066
  }, z.core.$strip>>;
1051
- librarian: z.ZodOptional<z.ZodObject<{
1067
+ ui: z.ZodOptional<z.ZodObject<{
1052
1068
  fallbackChain: z.ZodArray<z.ZodObject<{
1053
1069
  providers: z.ZodArray<z.ZodString>;
1054
1070
  model: z.ZodString;
@@ -1070,7 +1086,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1070
1086
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1071
1087
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1072
1088
  }, z.core.$strip>>;
1073
- explore: z.ZodOptional<z.ZodObject<{
1089
+ "code-reviewer": z.ZodOptional<z.ZodObject<{
1074
1090
  fallbackChain: z.ZodArray<z.ZodObject<{
1075
1091
  providers: z.ZodArray<z.ZodString>;
1076
1092
  model: z.ZodString;
@@ -1092,7 +1108,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1092
1108
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1093
1109
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1094
1110
  }, z.core.$strip>>;
1095
- ui: z.ZodOptional<z.ZodObject<{
1111
+ "systematic-debugger": z.ZodOptional<z.ZodObject<{
1096
1112
  fallbackChain: z.ZodArray<z.ZodObject<{
1097
1113
  providers: z.ZodArray<z.ZodString>;
1098
1114
  model: z.ZodString;
@@ -1114,7 +1130,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1114
1130
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1115
1131
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1116
1132
  }, z.core.$strip>>;
1117
- "code-reviewer": z.ZodOptional<z.ZodObject<{
1133
+ mindmodel: z.ZodOptional<z.ZodObject<{
1118
1134
  fallbackChain: z.ZodArray<z.ZodObject<{
1119
1135
  providers: z.ZodArray<z.ZodString>;
1120
1136
  model: z.ZodString;
@@ -1136,7 +1152,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1136
1152
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1137
1153
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1138
1154
  }, z.core.$strip>>;
1139
- "systematic-debugger": z.ZodOptional<z.ZodObject<{
1155
+ "ledger-creator": z.ZodOptional<z.ZodObject<{
1140
1156
  fallbackChain: z.ZodArray<z.ZodObject<{
1141
1157
  providers: z.ZodArray<z.ZodString>;
1142
1158
  model: z.ZodString;
@@ -1158,7 +1174,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1158
1174
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1159
1175
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1160
1176
  }, z.core.$strip>>;
1161
- mindmodel: z.ZodOptional<z.ZodObject<{
1177
+ bootstrapper: z.ZodOptional<z.ZodObject<{
1162
1178
  fallbackChain: z.ZodArray<z.ZodObject<{
1163
1179
  providers: z.ZodArray<z.ZodString>;
1164
1180
  model: z.ZodString;
@@ -1180,7 +1196,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1180
1196
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1181
1197
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1182
1198
  }, z.core.$strip>>;
1183
- "ledger-creator": z.ZodOptional<z.ZodObject<{
1199
+ "project-initializer": z.ZodOptional<z.ZodObject<{
1184
1200
  fallbackChain: z.ZodArray<z.ZodObject<{
1185
1201
  providers: z.ZodArray<z.ZodString>;
1186
1202
  model: z.ZodString;
@@ -1202,7 +1218,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1202
1218
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1203
1219
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1204
1220
  }, z.core.$strip>>;
1205
- bootstrapper: z.ZodOptional<z.ZodObject<{
1221
+ guard: z.ZodOptional<z.ZodObject<{
1206
1222
  fallbackChain: z.ZodArray<z.ZodObject<{
1207
1223
  providers: z.ZodArray<z.ZodString>;
1208
1224
  model: z.ZodString;
@@ -1224,7 +1240,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1224
1240
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1225
1241
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1226
1242
  }, z.core.$strip>>;
1227
- "project-initializer": z.ZodOptional<z.ZodObject<{
1243
+ brainstormer: z.ZodOptional<z.ZodObject<{
1228
1244
  fallbackChain: z.ZodArray<z.ZodObject<{
1229
1245
  providers: z.ZodArray<z.ZodString>;
1230
1246
  model: z.ZodString;
@@ -1325,10 +1341,6 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1325
1341
  remote: "remote";
1326
1342
  local: "local";
1327
1343
  }>>;
1328
- provider: z.ZodOptional<z.ZodEnum<{
1329
- exa: "exa";
1330
- tavily: "tavily";
1331
- }>>;
1332
1344
  url: z.ZodOptional<z.ZodString>;
1333
1345
  headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1334
1346
  command: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1412,10 +1424,6 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1412
1424
  allow: "allow";
1413
1425
  deny: "deny";
1414
1426
  }>>;
1415
- websearch: z.ZodOptional<z.ZodEnum<{
1416
- allow: "allow";
1417
- deny: "deny";
1418
- }>>;
1419
1427
  codesearch: z.ZodOptional<z.ZodEnum<{
1420
1428
  allow: "allow";
1421
1429
  deny: "deny";
@@ -6,16 +6,15 @@ export declare const BuiltinAgentNameSchema: z.ZodEnum<{
6
6
  critic: "critic";
7
7
  designer: "designer";
8
8
  multimodal: "multimodal";
9
- brainstormer: "brainstormer";
9
+ writer: "writer";
10
10
  "agent-skills": "agent-skills";
11
- guard: "guard";
12
- "platform-manager": "platform-manager";
11
+ manager: "manager";
13
12
  "quality-guardian": "quality-guardian";
14
13
  researcher: "researcher";
15
14
  sub: "sub";
15
+ vision: "vision";
16
16
  }>;
17
17
  export declare const BuiltinSkillNameSchema: z.ZodEnum<{
18
- playwright: "playwright";
19
18
  "agent-browser": "agent-browser";
20
19
  "dev-browser": "dev-browser";
21
20
  "frontend-ui-ux": "frontend-ui-ux";
@@ -30,14 +29,14 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
30
29
  critic: "critic";
31
30
  designer: "designer";
32
31
  multimodal: "multimodal";
33
- brainstormer: "brainstormer";
32
+ writer: "writer";
34
33
  "agent-skills": "agent-skills";
35
- guard: "guard";
36
- "platform-manager": "platform-manager";
34
+ manager: "manager";
37
35
  "quality-guardian": "quality-guardian";
38
36
  researcher: "researcher";
39
37
  sub: "sub";
40
38
  build: "build";
39
+ vision: "vision";
41
40
  general: "general";
42
41
  zoe: "zoe";
43
42
  "pre-plan": "pre-plan";
@@ -61,13 +60,13 @@ export declare const AgentNameSchema: z.ZodEnum<{
61
60
  critic: "critic";
62
61
  designer: "designer";
63
62
  multimodal: "multimodal";
64
- brainstormer: "brainstormer";
63
+ writer: "writer";
65
64
  "agent-skills": "agent-skills";
66
- guard: "guard";
67
- "platform-manager": "platform-manager";
65
+ manager: "manager";
68
66
  "quality-guardian": "quality-guardian";
69
67
  researcher: "researcher";
70
68
  sub: "sub";
69
+ vision: "vision";
71
70
  }>;
72
71
  export type AgentName = z.infer<typeof AgentNameSchema>;
73
72
  export type BuiltinSkillName = z.infer<typeof BuiltinSkillNameSchema>;