oh-my-opencode-serverlocal 0.1.6 → 0.1.8

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.
package/dist/cli/index.js CHANGED
@@ -529,12 +529,6 @@ var CUSTOM_SKILLS = [
529
529
  allowedAgents: ["orchestrator"],
530
530
  sourcePath: "src/skills/clonedeps"
531
531
  },
532
- {
533
- name: "deepwork",
534
- description: "Heavy/complex coding sessions and large modifications workflow",
535
- allowedAgents: ["orchestrator"],
536
- sourcePath: "src/skills/deepwork"
537
- },
538
532
  {
539
533
  name: "verification-planning",
540
534
  description: "Plan credible, proportionate evidence before non-trivial implementation",
@@ -2,7 +2,6 @@ export { createApplyPatchHook } from './apply-patch';
2
2
  export type { AutoUpdateCheckerOptions } from './auto-update-checker';
3
3
  export { createAutoUpdateCheckerHook } from './auto-update-checker';
4
4
  export { createChatHeadersHook } from './chat-headers';
5
- export { createDeepworkCommandHook } from './deepwork';
6
5
  export { createDelegateTaskRetryHook } from './delegate-task-retry/hook';
7
6
  export { createFilterAvailableSkillsHook } from './filter-available-skills';
8
7
  export { ForegroundFallbackManager, isFailoverError, isRetryableError, } from './foreground-fallback';
@@ -14,3 +13,4 @@ export { createPostFileToolNudgeHook } from './post-file-tool-nudge';
14
13
  export { createReflectCommandHook } from './reflect';
15
14
  export { SessionLifecycle } from './session-lifecycle';
16
15
  export { createTaskSessionManagerHook } from './task-session-manager';
16
+ export { createTierCommandsHook } from './tier-commands';
@@ -1,4 +1,4 @@
1
- export declare function createDeepworkCommandHook(): {
1
+ export declare function createTierCommandsHook(): {
2
2
  registerCommand: (config: Record<string, unknown>) => void;
3
3
  handleCommandExecuteBefore: (input: {
4
4
  command: string;
package/dist/index.js CHANGED
@@ -18357,12 +18357,6 @@ var CUSTOM_SKILLS = [
18357
18357
  allowedAgents: ["orchestrator"],
18358
18358
  sourcePath: "src/skills/clonedeps"
18359
18359
  },
18360
- {
18361
- name: "deepwork",
18362
- description: "Heavy/complex coding sessions and large modifications workflow",
18363
- allowedAgents: ["orchestrator"],
18364
- sourcePath: "src/skills/deepwork"
18365
- },
18366
18360
  {
18367
18361
  name: "verification-planning",
18368
18362
  description: "Plan credible, proportionate evidence before non-trivial implementation",
@@ -19028,7 +19022,7 @@ var AGENT_DESCRIPTIONS = {
19028
19022
  - Role: Your strict supervisor and senior reviewer.
19029
19023
  - Permissions: read_files
19030
19024
  - Capabilities: Deep architectural reasoning, system-level trade-offs, logic bugs, edge cases, simplification.
19031
- - **Delegate when:** (Tier 1+) Planning reviews, final implementation reviews, high-risk refactors, logical error spotting. Oracle finds what you miss.`,
19025
+ - **Delegate when:** Planning reviews, final implementation reviews, high-risk refactors, logical error spotting. Oracle finds what you miss.`,
19032
19026
  designer: `@designer
19033
19027
  - Lane: UI/UX perfection, design systems, visual execution.
19034
19028
  - Permissions: read_files, write_files
@@ -19045,7 +19039,7 @@ var AGENT_DESCRIPTIONS = {
19045
19039
  - Lane: Multi-model adversarial debate, ideation, and complex technical planning.
19046
19040
  - Role: Launches a structured round-table debate with 3 independent debaters (skeptic, pragmatist, architect) and a critic.
19047
19041
  - Capabilities: Creative ideation, feature expansion, non-technical vision refinement, high-stakes trade-off analysis.
19048
- - **Delegate when:** (Tier 2/3) User wants to expand their vision, needs creative ideas, feature suggestions, or when tech decisions are highly ambiguous.
19042
+ - **Delegate when:** User wants to expand their vision, needs creative ideas, feature suggestions, or when tech decisions are highly ambiguous.
19049
19043
  - **How to call:** \`roundtable({ query: "...", maxRounds: 5 })\`.`,
19050
19044
  observer: `@observer
19051
19045
  - Lane: Visual/media analysis.
@@ -19059,39 +19053,37 @@ function buildOrchestratorPrompt(disabledAgents) {
19059
19053
  `);
19060
19054
  return `You are the Master Orchestrator. Your job is to plan, implement, schedule, and delegate coding work.
19061
19055
  You are aware of all tools, skills, and agents available to you.
19062
- You implement the main tasks yourself unless parallel offloading is needed or a specialist is required.
19063
19056
 
19064
- ## Available Specialists
19065
- ${enabledAgents}
19057
+ ## Default Workflow (Tier 0)
19058
+ By default, you operate autonomously.
19059
+ - You implement the main tasks yourself.
19060
+ - You use @explorer and @librarian freely for basic context.
19061
+ - You have a high threshold for asking for review (you don't prioritize cooperation/supervision unless explicitly needed).
19062
+ - If parallel simple implementation is needed, offload to @fixer.
19066
19063
 
19067
- ## Workflow Tiers
19068
- You operate in different Tiers based on the user's request (e.g., /deepwork tier 2, or explicit tier mention). Deduce the appropriate tier.
19064
+ ## Explicit Tiers
19065
+ The user may invoke specific tiers via slash commands (e.g., \`/tier1\`, \`/tier2\`, \`/tier3\`). If they do, a specific set of rules will be injected into your prompt. You MUST abandon your default autonomous behavior and strictly follow the injected tier rules (which involve mandatory @oracle reviews, \`roundtable\` usage, etc.).
19069
19066
 
19070
- **Tier 0: Basic Mode**
19071
- - Focus: Fast, direct implementation. Low cooperation overhead.
19072
- - Workflow: You do the work. High threshold for asking for review. Use @explorer and @librarian freely for basic context.
19073
- - Supervision: No mandatory @oracle review.
19067
+ ## Crucial Skills & Commands (USE THESE PROACTIVELY)
19068
+ You have access to powerful workflow commands. You MUST use them when the situation calls for it:
19074
19069
 
19075
- **Tier 1: Guided / Supervised Mode**
19076
- - Focus: Quality and correctness over pure speed.
19077
- - Workflow: You plan the work. **MANDATORY:** You must call @oracle to review the plan (logic, edge cases, overlooked items) BEFORE implementing.
19078
- - Implementation: You implement, or parallelize to @fixer.
19079
- - Verification: **MANDATORY:** You must call @oracle at the end of implementation to review the final code for bugs and logical errors. Treat @oracle as your strict supervisor.
19070
+ 1. **/interview Command:**
19071
+ - If the user asks you to implement a new feature, app, or workflow, and their description is vague, not well thought out, or lacks sophisticated details: DO NOT GUESS.
19072
+ - IMMEDIATELY invoke the \`/interview\` command (or ask the user questions directly) to extract their vision, refine the requirements, and clarify what they actually want before writing any code.
19073
+ - Think before you act: "Do I have enough detail to make this perfect?" If no, interview the user.
19080
19074
 
19081
- **Tier 2: Sophisticated Ideation & Planning**
19082
- - Focus: High value, high performance, high cost. Vision expansion.
19083
- - Workflow: When the user provides a vision or basic idea, you MUST use the \`roundtable\` tool to plan the non-technical implementation, get creative feature suggestions, and refine the user's vision.
19084
- - Supervision: Follow Tier 1 supervisor rules (@oracle reviews the technical translation of the roundtable's output).
19075
+ 2. **/reflect Command:**
19076
+ - Use this to review past work and suggest reusable workflows or improvements.
19085
19077
 
19086
- **Tier 3: Sophisticated Implementation**
19087
- - Focus: Complex, ambiguous implementation.
19088
- - Workflow: You implement everything. You occasionally ask @oracle for spot-checks.
19089
- - Ambiguity Resolution: If during implementation the task has multiple perspectives or it's not clearly decidable what the best course of action is, you MUST invoke the \`roundtable\` tool again to decide the path forward.
19078
+ 3. **/loop Command:**
19079
+ - Use this for loop engineering and monitoring.
19080
+
19081
+ ## Available Specialists
19082
+ ${enabledAgents}
19090
19083
 
19091
19084
  ## Universal Rules
19092
19085
  - Design: If something needs visual design, call @designer. Ensure it follows existing design system files.
19093
19086
  - Vision/Images: Call @observer for screenshots or visual review.
19094
- - Parallel Work: If simple implementation is needed and we know exactly what to change, offload parallel tasks to @fixer via background tasks.
19095
19087
  - Main Implementation: If implementation is the main focus, YOU do it yourself. @fixer is ONLY for offloading parallel or bounded sub-tasks.
19096
19088
  - Background Tasks: Prefer \`task(..., background: true)\` for delegated work that can run independently. Continue orchestration only on non-overlapping work.
19097
19089
  - Session Reuse: Smartly reuse an available specialist session using \`task_id\`.
@@ -19105,7 +19097,7 @@ function createOrchestratorAgent(model, customPrompt, customAppendPrompt, disabl
19105
19097
  const prompt = resolvePrompt(basePrompt, customPrompt, customAppendPrompt);
19106
19098
  const definition = {
19107
19099
  name: "orchestrator",
19108
- description: "Master Orchestrator. Handles Tiers 0-3, implements main tasks, delegates to specialists.",
19100
+ description: "Master Orchestrator. Operates autonomously by default, or follows strict Tier 1-3 rules when invoked. Conducts interviews for vague tasks.",
19109
19101
  config: {
19110
19102
  temperature: 0.1,
19111
19103
  prompt
@@ -24458,70 +24450,6 @@ function createChatHeadersHook(ctx) {
24458
24450
  }
24459
24451
  };
24460
24452
  }
24461
- // src/hooks/command-hook-utils.ts
24462
- function registerCommandHook(opencodeConfig, commandName, template, description) {
24463
- const cmdConfig = opencodeConfig.command;
24464
- if (cmdConfig?.[commandName])
24465
- return false;
24466
- if (!opencodeConfig.command)
24467
- opencodeConfig.command = {};
24468
- opencodeConfig.command[commandName] = { template, description };
24469
- return true;
24470
- }
24471
-
24472
- // src/hooks/deepwork/index.ts
24473
- var COMMAND_NAME = "deepwork";
24474
- function activationPrompt(tier, task2) {
24475
- return [
24476
- `Use the deepwork skill for this task. Treat it as a heavy coding session operating in **${tier}**.`,
24477
- "",
24478
- "Deepwork requirements:",
24479
- "- before planning, delegation, or creating state, inspect existing `.gitignore` and `.ignore`; add only missing entries without duplicates: `.gitignore` must contain `.slim/deepwork/`, and `.ignore` must contain `!.slim/deepwork/` and `!.slim/deepwork/**`; this keeps state git-local yet OpenCode-readable;",
24480
- "- create/update a `.slim/deepwork/` progress file;",
24481
- "- keep OpenCode todos synced with the current phase;",
24482
- "- **Follow the strict rules of your assigned Tier** (e.g., calling @oracle or the roundtable tool as mandated).",
24483
- "- execute phase by phase with background specialists where useful;",
24484
- "- wait for hook-driven background completion, reconcile results, validate, and adhere to your tier's review requirements;",
24485
- "- fix actionable review issues before continuing.",
24486
- "",
24487
- "Task:",
24488
- task2
24489
- ].join(`
24490
- `);
24491
- }
24492
- function createDeepworkCommandHook() {
24493
- return {
24494
- registerCommand: (opencodeConfig) => {
24495
- registerCommandHook(opencodeConfig, COMMAND_NAME, "Start a deepwork session with a specific Tier (e.g., /deepwork tier 2 <task>)", "Use the deepwork workflow with Tier 0, 1, 2, or 3");
24496
- },
24497
- handleCommandExecuteBefore: async (input, output) => {
24498
- if (input.command !== COMMAND_NAME)
24499
- return;
24500
- output.parts.length = 0;
24501
- const rawArgs = input.arguments.trim();
24502
- if (!rawArgs) {
24503
- output.parts.push(createInternalAgentTextPart("What task should deepwork manage? Run `/deepwork tier 1 <task>`. Defaults to Tier 1 if omitted."));
24504
- return;
24505
- }
24506
- let tier = "Tier 1: Guided / Supervised Mode";
24507
- let task2 = rawArgs;
24508
- const tierMatch = rawArgs.match(/^tier\s*([0-3])\s+(.*)/i);
24509
- if (tierMatch) {
24510
- const tierNum = tierMatch[1];
24511
- task2 = tierMatch[2];
24512
- if (tierNum === "0")
24513
- tier = "Tier 0: Basic Mode";
24514
- else if (tierNum === "1")
24515
- tier = "Tier 1: Guided / Supervised Mode";
24516
- else if (tierNum === "2")
24517
- tier = "Tier 2: Sophisticated Ideation & Planning";
24518
- else if (tierNum === "3")
24519
- tier = "Tier 3: Sophisticated Implementation";
24520
- }
24521
- output.parts.push({ type: "text", text: activationPrompt(tier, task2) });
24522
- }
24523
- };
24524
- }
24525
24453
  // src/hooks/delegate-task-retry/patterns.ts
24526
24454
  var DELEGATE_TASK_ERROR_PATTERNS = [
24527
24455
  {
@@ -25402,14 +25330,25 @@ ${JSON_ERROR_REMINDER}`;
25402
25330
  }
25403
25331
  };
25404
25332
  }
25333
+ // src/hooks/command-hook-utils.ts
25334
+ function registerCommandHook(opencodeConfig, commandName, template, description) {
25335
+ const cmdConfig = opencodeConfig.command;
25336
+ if (cmdConfig?.[commandName])
25337
+ return false;
25338
+ if (!opencodeConfig.command)
25339
+ opencodeConfig.command = {};
25340
+ opencodeConfig.command[commandName] = { template, description };
25341
+ return true;
25342
+ }
25343
+
25405
25344
  // src/hooks/loop-command/index.ts
25406
- var COMMAND_NAME2 = "loop";
25345
+ var COMMAND_NAME = "loop";
25407
25346
  function historyDir() {
25408
25347
  const shortID = Math.random().toString(36).slice(2, 8);
25409
25348
  const timestamp = Date.now().toString(36);
25410
25349
  return `.opencode/loop-history/loop-${timestamp}-${shortID}`;
25411
25350
  }
25412
- function activationPrompt2(text) {
25351
+ function activationPrompt(text) {
25413
25352
  const dir = historyDir();
25414
25353
  return [
25415
25354
  "The user ran `/loop`. From the text below, extract: goal, successCriteria, maxAttempts.",
@@ -25446,10 +25385,10 @@ function helpPrompt() {
25446
25385
  function createLoopCommandHook() {
25447
25386
  return {
25448
25387
  registerCommand: (opencodeConfig) => {
25449
- registerCommandHook(opencodeConfig, COMMAND_NAME2, "Run an automated execute-verify loop", "Dispatch fixer, verify, iterate with file-based history on disk.");
25388
+ registerCommandHook(opencodeConfig, COMMAND_NAME, "Run an automated execute-verify loop", "Dispatch fixer, verify, iterate with file-based history on disk.");
25450
25389
  },
25451
25390
  handleCommandExecuteBefore: async (input, output) => {
25452
- if (input.command !== COMMAND_NAME2)
25391
+ if (input.command !== COMMAND_NAME)
25453
25392
  return;
25454
25393
  output.parts.length = 0;
25455
25394
  const args = input.arguments.trim();
@@ -25457,7 +25396,7 @@ function createLoopCommandHook() {
25457
25396
  output.parts.push(createInternalAgentTextPart(helpPrompt()));
25458
25397
  return;
25459
25398
  }
25460
- output.parts.push({ type: "text", text: activationPrompt2(args) });
25399
+ output.parts.push({ type: "text", text: activationPrompt(args) });
25461
25400
  }
25462
25401
  };
25463
25402
  }
@@ -25549,8 +25488,8 @@ function getEligibleMessage(message) {
25549
25488
  return { message, sessionID: message.info.sessionID };
25550
25489
  }
25551
25490
  // src/hooks/reflect/index.ts
25552
- var COMMAND_NAME3 = "reflect";
25553
- function activationPrompt3(focus, isSessionMode = false, lastN = 50) {
25491
+ var COMMAND_NAME2 = "reflect";
25492
+ function activationPrompt2(focus, isSessionMode = false, lastN = 50) {
25554
25493
  const focusBlock = focus ? ["Focus:", focus] : [
25555
25494
  "Focus:",
25556
25495
  isSessionMode ? "Analyze recent sessions to find repeated patterns, friction, and improvement opportunities." : "Review recent work broadly and identify repeated workflow friction worth improving."
@@ -25586,10 +25525,10 @@ function createReflectCommandHook() {
25586
25525
  let shouldHandleCommand = false;
25587
25526
  return {
25588
25527
  registerCommand: (opencodeConfig) => {
25589
- shouldHandleCommand ||= registerCommandHook(opencodeConfig, COMMAND_NAME3, "Review repeated work and suggest workflow improvements", "Use reflect to learn from repeated workflows and suggest reusable improvements");
25528
+ shouldHandleCommand ||= registerCommandHook(opencodeConfig, COMMAND_NAME2, "Review repeated work and suggest workflow improvements", "Use reflect to learn from repeated workflows and suggest reusable improvements");
25590
25529
  },
25591
25530
  handleCommandExecuteBefore: async (input, output) => {
25592
- if (input.command !== COMMAND_NAME3 || !shouldHandleCommand)
25531
+ if (input.command !== COMMAND_NAME2 || !shouldHandleCommand)
25593
25532
  return;
25594
25533
  const args = input.arguments.trim();
25595
25534
  const isSessionMode = args.includes("--sessions");
@@ -25599,7 +25538,7 @@ function createReflectCommandHook() {
25599
25538
  output.parts.length = 0;
25600
25539
  output.parts.push({
25601
25540
  type: "text",
25602
- text: activationPrompt3(focus, isSessionMode, last)
25541
+ text: activationPrompt2(focus, isSessionMode, last)
25603
25542
  });
25604
25543
  }
25605
25544
  };
@@ -26332,6 +26271,72 @@ function formatCancelledTaskStatusOutput(taskID, summary = "cancelled") {
26332
26271
  ].join(`
26333
26272
  `);
26334
26273
  }
26274
+ // src/hooks/tier-commands/index.ts
26275
+ function activationPrompt3(tier, task2) {
26276
+ let tierRules = "";
26277
+ if (tier === 1) {
26278
+ tierRules = `**Tier 1: Basic Collaboration**
26279
+ Focus: Quality assurance through basic supervision.
26280
+ Rules:
26281
+ 1. You must plan the work first.
26282
+ 2. MANDATORY: Call @oracle to review your plan BEFORE implementing.
26283
+ 3. Implement the work yourself, or offload parallel tasks to @fixer.
26284
+ 4. MANDATORY: Call @oracle at the end of the implementation to review the final code.`;
26285
+ } else if (tier === 2) {
26286
+ tierRules = `**Tier 2: Deep Collaboration & Multiple Reviews**
26287
+ Focus: High-quality, heavily supervised implementation.
26288
+ Rules:
26289
+ 1. You are working under the strict supervision of @oracle.
26290
+ 2. You must interact with @oracle multiple times: for initial planning, during major implementation steps, and for final corrections.
26291
+ 3. Utilize all normal sub-agents (@explorer, @librarian, @designer) extensively to gather perfect context before acting.
26292
+ 4. Expect and proactively seek multiple reviews and corrections.`;
26293
+ } else if (tier === 3) {
26294
+ tierRules = `**Tier 3: The "All Out" Tier**
26295
+ Focus: Maximum sophistication, ideation, and complex problem solving.
26296
+ Rules:
26297
+ 1. This is the highest level of execution. You use everything available.
26298
+ 2. **ROUNDTABLE MANDATORY:** Because task requirements at this tier are often vague or have multiple valid approaches, you MUST start by invoking the \`roundtable\` tool. Let the debaters ideate, refine the vision, and figure out the best approach.
26299
+ 3. Once the roundtable produces a council report, translate it into a technical plan and have @oracle review it.
26300
+ 4. During implementation, if any ambiguity arises, invoke the \`roundtable\` tool again.
26301
+ 5. Work with @oracle for continuous, strict supervision (multiple reviews/corrections).`;
26302
+ }
26303
+ return [
26304
+ `You are operating in **Tier ${tier}**. Follow these rules strictly:`,
26305
+ "",
26306
+ tierRules,
26307
+ "",
26308
+ "State Management Requirements:",
26309
+ "- Inspect `.gitignore` and `.ignore`. Add `.slim/tier_state/` to `.gitignore` and `!.slim/tier_state/` to `.ignore`.",
26310
+ "- Maintain a progress file at `.slim/tier_state/progress.md`.",
26311
+ "- Keep OpenCode todos synced.",
26312
+ "",
26313
+ "Task:",
26314
+ task2
26315
+ ].join(`
26316
+ `);
26317
+ }
26318
+ function createTierCommandsHook() {
26319
+ const commands = ["tier1", "tier2", "tier3"];
26320
+ return {
26321
+ registerCommand: (opencodeConfig) => {
26322
+ registerCommandHook(opencodeConfig, "tier1", "Start a Tier 1 session (Basic Oracle Collaboration)", "Tier 1");
26323
+ registerCommandHook(opencodeConfig, "tier2", "Start a Tier 2 session (Deep Collaboration & Multiple Reviews)", "Tier 2");
26324
+ registerCommandHook(opencodeConfig, "tier3", "Start a Tier 3 session (All-Out: Roundtable + Deep Collaboration)", "Tier 3");
26325
+ },
26326
+ handleCommandExecuteBefore: async (input, output) => {
26327
+ if (!commands.includes(input.command))
26328
+ return;
26329
+ output.parts.length = 0;
26330
+ const task2 = input.arguments.trim();
26331
+ if (!task2) {
26332
+ output.parts.push(createInternalAgentTextPart(`What task should this tier manage? Run \`/${input.command} <task>\`.`));
26333
+ return;
26334
+ }
26335
+ const tierNum = parseInt(input.command.replace("tier", ""), 10);
26336
+ output.parts.push({ type: "text", text: activationPrompt3(tierNum, task2) });
26337
+ }
26338
+ };
26339
+ }
26335
26340
  // src/interview/dashboard.ts
26336
26341
  import crypto2 from "node:crypto";
26337
26342
  import * as fsSync2 from "node:fs";
@@ -30172,7 +30177,7 @@ function buildAnswerPrompt(answers, questions, maxQuestions) {
30172
30177
  }
30173
30178
 
30174
30179
  // src/interview/service.ts
30175
- var COMMAND_NAME4 = "interview";
30180
+ var COMMAND_NAME3 = "interview";
30176
30181
  var DEFAULT_MAX_QUESTIONS = 2;
30177
30182
  var MAX_RETAINED_ABANDONED = 50;
30178
30183
  function isTruthyEnvFlag(value) {
@@ -30476,11 +30481,11 @@ function createInterviewService(ctx, config, deps) {
30476
30481
  }
30477
30482
  function registerCommand(opencodeConfig) {
30478
30483
  const configCommand = opencodeConfig.command;
30479
- if (!configCommand?.[COMMAND_NAME4]) {
30484
+ if (!configCommand?.[COMMAND_NAME3]) {
30480
30485
  if (!opencodeConfig.command) {
30481
30486
  opencodeConfig.command = {};
30482
30487
  }
30483
- opencodeConfig.command[COMMAND_NAME4] = {
30488
+ opencodeConfig.command[COMMAND_NAME3] = {
30484
30489
  template: "Start an interview and write a live markdown spec",
30485
30490
  description: "Open a localhost interview UI linked to the current OpenCode session"
30486
30491
  };
@@ -30554,7 +30559,7 @@ function createInterviewService(ctx, config, deps) {
30554
30559
  }
30555
30560
  }
30556
30561
  async function handleCommandExecuteBefore(input, output) {
30557
- if (input.command !== COMMAND_NAME4) {
30562
+ if (input.command !== COMMAND_NAME3) {
30558
30563
  return;
30559
30564
  }
30560
30565
  const idea = input.arguments.trim();
@@ -35360,11 +35365,11 @@ function recordTuiAgentModel(input, projectDir) {
35360
35365
  }
35361
35366
 
35362
35367
  // src/tools/preset-manager.ts
35363
- var COMMAND_NAME5 = "preset";
35368
+ var COMMAND_NAME4 = "preset";
35364
35369
  function createPresetManager(ctx, config) {
35365
35370
  let activePreset = getActiveRuntimePreset() ?? config.preset ?? null;
35366
35371
  async function handleCommandExecuteBefore(input, output) {
35367
- if (input.command !== COMMAND_NAME5) {
35372
+ if (input.command !== COMMAND_NAME4) {
35368
35373
  return;
35369
35374
  }
35370
35375
  output.parts.length = 0;
@@ -35383,11 +35388,11 @@ function createPresetManager(ctx, config) {
35383
35388
  }
35384
35389
  function registerCommand(opencodeConfig) {
35385
35390
  const configCommand = opencodeConfig.command;
35386
- if (!configCommand?.[COMMAND_NAME5]) {
35391
+ if (!configCommand?.[COMMAND_NAME4]) {
35387
35392
  if (!opencodeConfig.command) {
35388
35393
  opencodeConfig.command = {};
35389
35394
  }
35390
- opencodeConfig.command[COMMAND_NAME5] = {
35395
+ opencodeConfig.command[COMMAND_NAME4] = {
35391
35396
  template: "List available presets and switch between them",
35392
35397
  description: "Switch agent presets at runtime (e.g., /preset cheap, /preset powerful)"
35393
35398
  };
@@ -37937,7 +37942,8 @@ var OhMyOpenCodeLite = async (ctx) => {
37937
37942
  let sessionLifecycle;
37938
37943
  let chatHeadersHook;
37939
37944
  let foregroundFallback;
37940
- let deepworkCommandHook;
37945
+ let applyPatchHook;
37946
+ let tierCommandsHook;
37941
37947
  let reflectCommandHook;
37942
37948
  let loopCommandHook;
37943
37949
  let taskSessionManagerHook;
@@ -38024,7 +38030,7 @@ var OhMyOpenCodeLite = async (ctx) => {
38024
38030
  sessionAgentMap = new Map;
38025
38031
  chatHeadersHook = createChatHeadersHook(ctx);
38026
38032
  foregroundFallback = new ForegroundFallbackManager(ctx.client, runtimeChains, config.fallback?.enabled !== false, config.fallback?.maxRetries ?? 3, sessionLifecycle);
38027
- deepworkCommandHook = createDeepworkCommandHook();
38033
+ tierCommandsHook = createTierCommandsHook();
38028
38034
  reflectCommandHook = createReflectCommandHook();
38029
38035
  loopCommandHook = createLoopCommandHook();
38030
38036
  taskSessionManagerHook = createTaskSessionManagerHook(ctx, {
@@ -38351,7 +38357,7 @@ var OhMyOpenCodeLite = async (ctx) => {
38351
38357
  agentConfigEntry.permission = agentPermission;
38352
38358
  }
38353
38359
  interviewManager.registerCommand(opencodeConfig);
38354
- deepworkCommandHook.registerCommand(opencodeConfig);
38360
+ tierCommandsHook.registerCommand(opencodeConfig);
38355
38361
  reflectCommandHook.registerCommand(opencodeConfig);
38356
38362
  loopCommandHook.registerCommand(opencodeConfig);
38357
38363
  presetManager.registerCommand(opencodeConfig);
@@ -38433,7 +38439,7 @@ var OhMyOpenCodeLite = async (ctx) => {
38433
38439
  "command.execute.before": async (input, output) => {
38434
38440
  await interviewManager.handleCommandExecuteBefore(input, output);
38435
38441
  await presetManager.handleCommandExecuteBefore(input, output);
38436
- await deepworkCommandHook.handleCommandExecuteBefore(input, output);
38442
+ await tierCommandsHook.handleCommandExecuteBefore(input, output);
38437
38443
  await reflectCommandHook.handleCommandExecuteBefore(input, output);
38438
38444
  await loopCommandHook.handleCommandExecuteBefore(input, output);
38439
38445
  },
package/dist/tui.js CHANGED
@@ -448,12 +448,6 @@ var CUSTOM_SKILLS = [
448
448
  allowedAgents: ["orchestrator"],
449
449
  sourcePath: "src/skills/clonedeps"
450
450
  },
451
- {
452
- name: "deepwork",
453
- description: "Heavy/complex coding sessions and large modifications workflow",
454
- allowedAgents: ["orchestrator"],
455
- sourcePath: "src/skills/deepwork"
456
- },
457
451
  {
458
452
  name: "verification-planning",
459
453
  description: "Plan credible, proportionate evidence before non-trivial implementation",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-serverlocal",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Custom serverlocal fork of oh-my-opencode-slim — fully owned, custom prompts + commands, dist synced via opencode-dotfiles",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,122 +0,0 @@
1
- ---
2
- name: deepwork
3
- description: High-cost orchestrator workflow for large, high-risk, multi-phase coding efforts with meaningful dependencies and review gates. Do not activate for routine multi-file changes.
4
- ---
5
-
6
- # Deepwork
7
-
8
- Deepwork is an orchestrator workflow for heavy coding sessions. Use it only
9
- when the work is clearly large or high-risk: multiple dependent phases,
10
- cross-cutting architectural change, unsafe-to-partially-ship migration, or
11
- sustained coordination across several specialist lanes.
12
-
13
- Do not infer Deepwork merely because a task touches multiple files. Do not use
14
- it for trivial edits, quick docs changes, simple bug fixes, or routine bounded
15
- features.
16
-
17
- ## Core Contract
18
-
19
- When deepwork is active, the orchestrator must manage the work as a scheduler,
20
- not as the default implementation worker.
21
-
22
- Required behavior:
23
-
24
- - before planning, delegation, or creating a deepwork state file, inspect the
25
- existing `.gitignore` and `.ignore`; add only missing entries, without
26
- duplicates, so `.gitignore` contains `.slim/deepwork/` and `.ignore` contains
27
- `!.slim/deepwork/` and `!.slim/deepwork/**`;
28
- - keep OpenCode todos aligned with the active deepwork phase;
29
- - create and maintain a local markdown progress file under `.slim/deepwork/`;
30
- - write valuable research findings into that file as confirmed research context
31
- when they are received and reconciled;
32
- - draft a plan before implementation;
33
- - ask `@oracle` to review the plan and revise it until acceptable;
34
- - create a phased implementation/delegation plan;
35
- - before oracle reviews, add relevant confirmed research findings and file
36
- references to the deepwork file so oracle can review the plan or phase from
37
- accepted context instead of redoing discovery;
38
- - ask `@oracle` to review that implementation plan before execution;
39
- - after oracle review and before each implementation phase, decide the execution
40
- path: what can run in parallel, what must be sequential, which specialists to
41
- delegate to, and whether to split the same agent into multiple bounded lanes;
42
- - after each phase, validate, update the deepwork file, prepare the plan file
43
- for oracle review and ask `@oracle` to review the phase result, fix
44
- actionable issues, then continue;
45
- - when a phase includes `@designer`, preserve designer intent across later
46
- phases. Use `@fixer` only for mechanical follow-up that does not alter the
47
- UI/UX;
48
- - finish with final validation and a concise summary.
49
-
50
- ## Designer Handoff Guardrail
51
-
52
- When a deepwork phase includes `@designer`, treat the delivered UI/UX as
53
- accepted design intent for later phases. Record any important design decisions in
54
- the deepwork file before continuing.
55
-
56
- After designer work:
57
-
58
- - preserve layout, rhythm, hierarchy, motion, spacing, color, affordances,
59
- responsiveness, and component feel;
60
- - review and improve user-facing copy with grounded, normal wording, but do not
61
- change visual structure or interaction intent;
62
- - route follow-up visual, responsive, motion, hierarchy, polish, or
63
- component-feel changes back to `@designer`;
64
- - use `@fixer` only for bounded mechanical follow-up that preserves the design
65
- exactly, such as wiring, tests, type fixes, or non-visual behavior changes;
66
- - if design intent must change, record why in the deepwork file before changing
67
- it.
68
-
69
- ## Deepwork File
70
-
71
- Create a task-specific file such as:
72
-
73
- ```text
74
- .slim/deepwork/<short-task-slug>.md
75
- ```
76
-
77
- Before creating this file—and before planning or delegation—inspect the existing
78
- `.gitignore` and `.ignore`. Add only missing entries and do not add duplicates:
79
-
80
- ```gitignore
81
- # .gitignore
82
- .slim/deepwork/
83
- ```
84
-
85
- ```gitignore
86
- # .ignore
87
- !.slim/deepwork/
88
- !.slim/deepwork/**
89
- ```
90
-
91
- These rules keep deepwork state git-local while allowing OpenCode to read it.
92
-
93
- Do not follow a rigid template. Choose whatever markdown structure best fits the
94
- work. The file only needs to remain useful as persistent session state and should
95
- capture, as applicable:
96
-
97
- - current goal and understanding;
98
- - researched, factual context from `@librarian` to avoid oracle doing its own
99
- research;
100
- - plan drafts and oracle review notes;
101
- - implementation phases and status;
102
- - validation results;
103
- - unresolved questions, blockers, and follow-ups.
104
-
105
- Update this file after major decisions, valuable specialist research, reviews,
106
- phase completions, validation results, and scope changes.
107
- When `@librarian` docs, code reads, or external references produce useful
108
- information, reconcile the result and record the accepted findings here so later
109
- planning and reviews share the same context instead of rediscovering it.
110
- Don't put actual contents of local files, reference them by path only.
111
-
112
- ## Scheduler Discipline
113
-
114
- Use the scheduler model throughout:
115
-
116
- - follow Orchestrator delegations rules
117
- - record task/session IDs and ownership boundaries;
118
- - wait for hook-driven background completion before consuming background results;
119
- - avoid blocking Orchestrator lane while background jobs run; if no independent
120
- work remains, stop briefly and let the completion event resume the workflow;
121
- - do not advance to the next phase while relevant jobs are running or terminal
122
- results are unreconciled.