oh-my-opencode 5.0.0-beta.42 → 5.0.0-beta.44

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 (71) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +4 -4
  3. package/README.md +4 -4
  4. package/README.ru.md +2 -2
  5. package/README.zh-cn.md +2 -2
  6. package/dist/agents/gpt-prompt-identity.d.ts +1 -1
  7. package/dist/agents/types.d.ts +2 -0
  8. package/dist/cli/index.js +389 -310
  9. package/dist/cli-node/index.js +389 -310
  10. package/dist/index.js +244 -134
  11. package/dist/tools/delegate-task/builtin-categories.d.ts +2 -1
  12. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -1
  13. package/dist/tools/delegate-task/constants.d.ts +2 -2
  14. package/dist/tools/delegate-task/openai-categories.d.ts +7 -2
  15. package/dist/tui.js +158 -64
  16. package/package.json +19 -18
  17. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +10 -1
  18. package/packages/lsp-core/src/lsp/workspace-apply-edit-test-support.ts +29 -1
  19. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  20. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  21. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  25. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  29. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  30. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  32. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  40. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  42. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  64. package/packages/omo-codex/plugin/package-lock.json +12 -12
  65. package/packages/omo-codex/plugin/package.json +1 -1
  66. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +47 -2
  67. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -0
  68. package/packages/omo-codex/scripts/install-dist/install-local.mjs +32 -50
  69. package/packages/omo-codex/scripts/install-packaged-local.test.mjs +1 -6
  70. package/packages/prompts-core/prompts/ultrawork/codex.md +483 -0
  71. package/dist/tools/delegate-task/anthropic-categories.d.ts +0 -2
package/dist/index.js CHANGED
@@ -19951,7 +19951,7 @@ var AGENT_MODEL_REQUIREMENTS = {
19951
19951
  fallbackChain: [
19952
19952
  {
19953
19953
  providers: ["anthropic", "github-copilot", "opencode"],
19954
- model: "claude-fable-5",
19954
+ model: "claude-fable-5-1",
19955
19955
  variant: "xhigh"
19956
19956
  },
19957
19957
  {
@@ -19977,10 +19977,9 @@ var AGENT_MODEL_REQUIREMENTS = {
19977
19977
  },
19978
19978
  momus: {
19979
19979
  fallbackChain: [
19980
- { providers: ["openai", "openai-codex"], model: "gpt-5.6-terra", variant: "high" },
19981
- { providers: ["github-copilot"], model: "gpt-5.6-terra", variant: "high" },
19982
- { providers: ["openai", "openai-codex", "opencode"], model: "gpt-5.6-sol", variant: "xhigh" },
19983
- { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "high" },
19980
+ { providers: ["openai", "openai-codex"], model: "gpt-6-astra", variant: "xhigh" },
19981
+ { providers: ["github-copilot"], model: "gpt-6-astra", variant: "high" },
19982
+ { providers: ["openai", "openai-codex", "opencode"], model: "gpt-6-astra", variant: "high" },
19984
19983
  {
19985
19984
  providers: ["anthropic", "github-copilot", "opencode"],
19986
19985
  model: "claude-opus-5",
@@ -20028,6 +20027,11 @@ var AGENT_MODEL_REQUIREMENTS = {
20028
20027
  var CATEGORY_MODEL_REQUIREMENTS = {
20029
20028
  "visual-engineering": {
20030
20029
  fallbackChain: [
20030
+ {
20031
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
20032
+ model: "claude-fable-5-1",
20033
+ variant: "max"
20034
+ },
20031
20035
  {
20032
20036
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
20033
20037
  model: "claude-opus-5",
@@ -20037,17 +20041,14 @@ var CATEGORY_MODEL_REQUIREMENTS = {
20037
20041
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
20038
20042
  model: "kimi-k3",
20039
20043
  variant: "max"
20040
- },
20041
- { providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.2", variant: "max" },
20042
- {
20043
- providers: ["openai", "openai-codex", "github-copilot", "opencode"],
20044
- model: "gpt-5.6-sol",
20045
- variant: "medium"
20046
20044
  }
20047
20045
  ]
20048
20046
  },
20049
20047
  ultrabrain: {
20050
20048
  fallbackChain: [
20049
+ { providers: ["openai", "openai-codex"], model: "gpt-6-astra", variant: "max" },
20050
+ { providers: ["github-copilot"], model: "gpt-6-astra", variant: "max" },
20051
+ { providers: ["openai", "openai-codex", "opencode"], model: "gpt-6-astra", variant: "max" },
20051
20052
  { providers: ["openai", "openai-codex"], model: "gpt-5.6-sol", variant: "max" },
20052
20053
  { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "max" },
20053
20054
  { providers: ["openai", "openai-codex", "opencode"], model: "gpt-5.6-sol", variant: "max" }
@@ -20055,6 +20056,11 @@ var CATEGORY_MODEL_REQUIREMENTS = {
20055
20056
  },
20056
20057
  deep: {
20057
20058
  fallbackChain: [
20059
+ {
20060
+ providers: ["openai", "openai-codex", "github-copilot", "opencode"],
20061
+ model: "gpt-6-astra",
20062
+ variant: "high"
20063
+ },
20058
20064
  {
20059
20065
  providers: ["openai", "openai-codex", "github-copilot", "opencode"],
20060
20066
  model: "gpt-5.6-sol",
@@ -20066,8 +20072,8 @@ var CATEGORY_MODEL_REQUIREMENTS = {
20066
20072
  fallbackChain: [
20067
20073
  {
20068
20074
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
20069
- model: "claude-fable-5",
20070
- variant: "xhigh"
20075
+ model: "claude-fable-5-1",
20076
+ variant: "max"
20071
20077
  },
20072
20078
  {
20073
20079
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
@@ -20125,6 +20131,11 @@ var CATEGORY_MODEL_REQUIREMENTS = {
20125
20131
  },
20126
20132
  "unspecified-high": {
20127
20133
  fallbackChain: [
20134
+ {
20135
+ providers: ["openai", "openai-codex", "github-copilot", "opencode"],
20136
+ model: "gpt-6-astra",
20137
+ variant: "high"
20138
+ },
20128
20139
  {
20129
20140
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
20130
20141
  model: "claude-opus-5",
@@ -20140,17 +20151,16 @@ var CATEGORY_MODEL_REQUIREMENTS = {
20140
20151
  },
20141
20152
  writing: {
20142
20153
  fallbackChain: [
20143
- {
20144
- providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
20145
- model: "kimi-k3",
20146
- variant: "low"
20147
- },
20148
20154
  {
20149
20155
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
20150
- model: "claude-opus-5",
20151
- variant: "low"
20156
+ model: "claude-fable-5-1",
20157
+ variant: "medium"
20152
20158
  },
20153
- { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.6-flash" }
20159
+ {
20160
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
20161
+ model: "kimi-k3",
20162
+ variant: "max"
20163
+ }
20154
20164
  ]
20155
20165
  }
20156
20166
  };
@@ -20266,11 +20276,11 @@ var EXACT_ALIAS_RULES = [
20266
20276
  var EXACT_ALIAS_RULES_BY_MODEL = new Map(EXACT_ALIAS_RULES.map((rule) => [rule.aliasModelID, rule]));
20267
20277
  var PATTERN_ALIAS_RULES = [
20268
20278
  {
20269
- ruleID: "openai-gpt-5.6-fast-service-tier-alias",
20270
- description: "Normalizes OpenCode's OpenAI GPT-5.6 fast service-tier IDs to canonical snapshot IDs.",
20279
+ ruleID: "openai-gpt-fast-service-tier-alias",
20280
+ description: "Normalizes OpenCode's OpenAI GPT fast service-tier IDs to canonical snapshot IDs.",
20271
20281
  providerIDs: ["openai"],
20272
20282
  allowedSubproviderHosts: ["vercel"],
20273
- match: (normalizedModelID) => /^gpt-5\.6-(?:sol|terra|luna)-fast$/.test(normalizedModelID),
20283
+ match: (normalizedModelID) => /^(?:gpt-5\.6-(?:sol|terra|luna)|gpt-6-astra)-fast$/.test(normalizedModelID),
20274
20284
  canonicalize: (normalizedModelID) => normalizedModelID.slice(0, -"-fast".length)
20275
20285
  },
20276
20286
  {
@@ -20476,6 +20486,14 @@ var HEURISTIC_MODEL_FAMILY_REGISTRY = [
20476
20486
  reasoningEfforts: ["none", "minimal", "low", "medium", "high"],
20477
20487
  supportsTemperature: false
20478
20488
  },
20489
+ {
20490
+ family: "gpt-6",
20491
+ includes: ["gpt-6"],
20492
+ variants: ["low", "medium", "high", "xhigh", "max"],
20493
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
20494
+ reasoningEffortAliases: { none: "low", minimal: "low" },
20495
+ supportsTemperature: false
20496
+ },
20479
20497
  {
20480
20498
  family: "gpt-5",
20481
20499
  includes: ["gpt-5"],
@@ -21653,6 +21671,37 @@ var SUPPLEMENTAL_MODEL_CAPABILITIES = {
21653
21671
  output: 262144
21654
21672
  }
21655
21673
  },
21674
+ "claude-fable-5-1": {
21675
+ id: "claude-fable-5-1",
21676
+ family: "claude-fable",
21677
+ reasoning: true,
21678
+ temperature: false,
21679
+ toolCall: true,
21680
+ modalities: {
21681
+ input: ["text", "image", "pdf"],
21682
+ output: ["text"]
21683
+ },
21684
+ limit: {
21685
+ context: 1e6,
21686
+ output: 128000
21687
+ }
21688
+ },
21689
+ "gpt-6-astra": {
21690
+ id: "gpt-6-astra",
21691
+ family: "gpt",
21692
+ reasoning: true,
21693
+ temperature: false,
21694
+ toolCall: true,
21695
+ modalities: {
21696
+ input: ["text", "image"],
21697
+ output: ["text"]
21698
+ },
21699
+ limit: {
21700
+ context: 1050000,
21701
+ input: 922000,
21702
+ output: 128000
21703
+ }
21704
+ },
21656
21705
  "gpt-5.6-sol": {
21657
21706
  id: "gpt-5.6-sol",
21658
21707
  family: "gpt",
@@ -21728,8 +21777,8 @@ var SUPPLEMENTAL_MODEL_CAPABILITIES = {
21728
21777
  output: ["text"]
21729
21778
  },
21730
21779
  limit: {
21731
- context: 400000,
21732
- input: 272000,
21780
+ context: 1050000,
21781
+ input: 922000,
21733
21782
  output: 128000
21734
21783
  }
21735
21784
  },
@@ -21980,8 +22029,8 @@ function readRuntimeModelLimitOutput(runtimeModel) {
21980
22029
 
21981
22030
  // packages/model-core/src/model-capabilities/get-model-capabilities.ts
21982
22031
  var MODEL_ID_OVERRIDES = {};
21983
- var GITHUB_COPILOT_GPT5_MODEL = /(?:^|\/)gpt-5(?:[.-]|$)/;
21984
- var GITHUB_COPILOT_GPT5_OVERRIDE = {
22032
+ var GITHUB_COPILOT_GPT_MODEL = /(?:^|\/)gpt-[56](?:[.-]|$)/;
22033
+ var GITHUB_COPILOT_GPT_OVERRIDE = {
21985
22034
  variants: ["low", "medium", "high"],
21986
22035
  reasoningEfforts: ["none", "minimal", "low", "medium", "high"]
21987
22036
  };
@@ -21994,7 +22043,7 @@ function getOverride(modelID) {
21994
22043
  function getProviderOverride(providerID, modelID) {
21995
22044
  if (providerID.trim().toLowerCase() !== "github-copilot")
21996
22045
  return;
21997
- return GITHUB_COPILOT_GPT5_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT5_OVERRIDE : undefined;
22046
+ return GITHUB_COPILOT_GPT_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT_OVERRIDE : undefined;
21998
22047
  }
21999
22048
  function stripSameProviderPrefix(providerID, modelID) {
22000
22049
  const prefix = `${providerID.trim()}/`;
@@ -23086,7 +23135,6 @@ var OmoMemoryAgentOverridesSchema = z7.object({
23086
23135
  var OmoMemorySettingsSchema = z7.object({
23087
23136
  enabled: z7.boolean().default(true),
23088
23137
  agent: z7.string().min(1).default("auto"),
23089
- tool_exposure: z7.enum(["direct", "search"]).default("direct"),
23090
23138
  reflection: OmoMemoryReflectionSchema.default({
23091
23139
  enabled: true,
23092
23140
  trigger: { step_count: 25, on_compaction: true },
@@ -23117,7 +23165,6 @@ var OmoMemorySettingsSchema = z7.object({
23117
23165
  var OmoMemorySettingsLayerSchema = z7.object({
23118
23166
  enabled: z7.boolean().optional(),
23119
23167
  agent: z7.string().min(1).optional(),
23120
- tool_exposure: z7.enum(["direct", "search"]).optional(),
23121
23168
  reflection: OmoMemoryReflectionLayerSchema.optional(),
23122
23169
  nudge: OmoMemoryNudgeLayerSchema.optional(),
23123
23170
  facts: OmoMemoryFactsLayerSchema.optional(),
@@ -26340,21 +26387,6 @@ function truncateDescription(description, maxLength = 120) {
26340
26387
  return description.slice(0, maxLength - 3) + "...";
26341
26388
  }
26342
26389
 
26343
- // packages/omo-opencode/src/tools/delegate-task/anthropic-categories.ts
26344
- var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
26345
- You are working on tasks that don't fit specific categories but require substantial effort.
26346
- </Category_Context>`;
26347
- var UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`;
26348
- var ANTHROPIC_CATEGORIES = [
26349
- {
26350
- name: "unspecified-high",
26351
- config: { model: "anthropic/claude-opus-5", variant: "xhigh" },
26352
- description: "Tasks that don't fit other categories, high effort required",
26353
- callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
26354
- promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
26355
- }
26356
- ];
26357
-
26358
26390
  // packages/omo-opencode/src/tools/delegate-task/google-categories.ts
26359
26391
  var VISUAL_CATEGORY_PROMPT_APPEND = `<Category_Context>
26360
26392
  You are working on VISUAL/UI tasks.
@@ -26463,13 +26495,13 @@ Approach:
26463
26495
  var GOOGLE_CATEGORIES = [
26464
26496
  {
26465
26497
  name: "visual-engineering",
26466
- config: { model: "anthropic/claude-opus-5", variant: "max" },
26467
- description: "Frontend, UI/UX, design, styling, animation",
26498
+ config: { model: "anthropic/claude-fable-5-1", variant: "max" },
26499
+ description: "Visual design, UI/UX, frontend, styling, animation, and design systems",
26468
26500
  promptAppend: VISUAL_CATEGORY_PROMPT_APPEND
26469
26501
  },
26470
26502
  {
26471
26503
  name: "artistry",
26472
- config: { model: "anthropic/claude-fable-5", variant: "xhigh" },
26504
+ config: { model: "anthropic/claude-fable-5-1", variant: "max" },
26473
26505
  description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
26474
26506
  promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
26475
26507
  }
@@ -26504,7 +26536,7 @@ ANTI-AI-SLOP RULES (NON-NEGOTIABLE):
26504
26536
  var KIMI_CATEGORIES = [
26505
26537
  {
26506
26538
  name: "writing",
26507
- config: { model: "kimi-for-coding/k3", variant: "low" },
26539
+ config: { model: "anthropic/claude-fable-5-1", variant: "medium" },
26508
26540
  description: "Documentation, prose, technical writing",
26509
26541
  promptAppend: WRITING_CATEGORY_PROMPT_APPEND
26510
26542
  }
@@ -26534,8 +26566,38 @@ function isGpt5_6Model(model) {
26534
26566
  const modelName = extractModelName2(model).toLowerCase();
26535
26567
  return modelName.includes("gpt-5.6") || modelName.includes("gpt-5-6");
26536
26568
  }
26569
+ function isGpt6Model(model) {
26570
+ const modelName = extractModelName2(model).toLowerCase();
26571
+ return modelName.includes("gpt-6");
26572
+ }
26537
26573
 
26538
26574
  // packages/omo-opencode/src/tools/delegate-task/openai-categories.ts
26575
+ var ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="ultrabrain">
26576
+ The orchestrator routed this task here because it is the one genuinely hard, logic-heavy problem in its plan, and it sent a goal rather than steps: choose the approach yourself, and let correctness outrank speed, brevity, and token cost.
26577
+
26578
+ Success means:
26579
+ - every load-bearing claim cites evidence from this turn: a file and line read, a command run, a test executed;
26580
+ - every executable claim was executed: a proposed fix runs, an algorithm passes the boundary cases you enumerated, a verdict on a diff names the failing line;
26581
+ - the conclusion survived your own attempt to break it, and the answer names the strongest counter-case you looked for;
26582
+ - rejected alternatives carry the reason that decided against them, and open assumptions are stated so the orchestrator can overturn them;
26583
+ - one decision-complete recommendation, actionable without a follow-up question.
26584
+
26585
+ Whatever that check leaves unsettled goes in the answer as an open question with what would settle it. When the goal bundles independent problems, solve the one the others depend on and return the rest as separately delegable items.
26586
+ </Category_Context>`;
26587
+ var DEEP_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="deep">
26588
+ The orchestrator routed this task here for depth: one goal, one deliverable, and the time to earn it. The exploration budget is generous: read every file involved, trace callers and dependencies in both directions, and fan out explore and librarian subagents in parallel for the questions a single read wave cannot answer, until you can explain the full mechanism you are about to change; an edit made before that point is the failure this category exists to prevent.
26589
+
26590
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
26591
+
26592
+ The goal is the authorization. Choose how to reach it yourself, and when it lists numbered steps or phases, deliver all of them in this turn as one task; a proposal, a plan awaiting approval, a simplified version, or a proof of concept is unfinished work. When the steps turn out to be independent problems sharing no reasoning, do the one the goal centers on and return the others as separately delegable items with what you learned. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.
26593
+
26594
+ Fix the cause: trace at least two levels above the symptom before settling, and prefer the change that makes the failure impossible over the guard that hides it. Depth means understanding the mechanism, so the diff stays as small as the fix allows; on greenfield work choose strong defaults and finish something you would hand to a senior engineer. Close with the delivered change, the evidence that it works, and the assumptions you made.
26595
+ </Category_Context>`;
26596
+ var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="unspecified-high">
26597
+ The orchestrator routed this task here because it spans systems or modules and fits no specialist category, so breadth of consideration is what this category buys. Before committing to an approach, survey the whole surface the change touches: every caller and consumer of what you will modify, sibling modules that implement the same pattern, the tests, docs, schemas, config, scripts, and CI that encode the current behavior, and the history of the area (git log and blame) for the reasons it is shaped this way. Fan out explore and librarian subagents in parallel when that surface is wider than one read wave covers.
26598
+
26599
+ Weigh at least two ways to do it against what you found, choose one, and say in the final message why it won. Then deliver it across every surface you identified, so behavior stays consistent everywhere the change is observable and no caller, test, doc, schema, or config still describes the old state. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and finish.
26600
+ </Category_Context>`;
26539
26601
  var ULTRABRAIN_CATEGORY_PROMPT_APPEND = `<Category_Context>
26540
26602
  You are working on DEEP LOGICAL REASONING / COMPLEX ARCHITECTURE tasks.
26541
26603
 
@@ -26562,6 +26624,8 @@ You are working on GOAL-ORIENTED AUTONOMOUS tasks.
26562
26624
 
26563
26625
  You are NOT an interactive assistant. You are an autonomous problem-solver.
26564
26626
 
26627
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
26628
+
26565
26629
  BEFORE making ANY changes:
26566
26630
  1. Silently explore the codebase extensively (5-15 minutes of reading is normal)
26567
26631
  2. Read related files, trace dependencies, understand the full context
@@ -26580,6 +26644,8 @@ Minimal status updates. Focus on results, not play-by-play. Report completion wi
26580
26644
  var DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5 = `<Category_Context name="deep">
26581
26645
  You are operating in DEEP mode. This is the category reserved for goal-oriented autonomous work on hairy problems that reward thorough exploration and comprehensive solutions.
26582
26646
 
26647
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
26648
+
26583
26649
  The orchestrator chose this category because the task benefits from depth over speed. You should feel empowered to spend the time needed: five to fifteen minutes of silent exploration before the first edit is normal and correct. Rushing to implementation on a deep task is a failure mode, not a feature.
26584
26650
 
26585
26651
  # How deep mode adjusts the base behavior
@@ -26598,12 +26664,27 @@ The orchestrator chose this category because the task benefits from depth over s
26598
26664
 
26599
26665
  **Status cadence: sparse.** The user is not on the other side of this conversation; the orchestrator is, and they will synthesize your progress. Send commentary only at meaningful phase transitions (starting exploration, starting implementation, starting verification, hitting a genuine blocker). Do not narrate every tool call; silence during focused work is expected.
26600
26666
  </Category_Context>`;
26667
+ function resolveUltrabrainCategoryPromptAppend(model) {
26668
+ if (model && isGpt6Model(model)) {
26669
+ return ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
26670
+ }
26671
+ return ULTRABRAIN_CATEGORY_PROMPT_APPEND;
26672
+ }
26601
26673
  function resolveDeepCategoryPromptAppend(model) {
26674
+ if (model && isGpt6Model(model)) {
26675
+ return DEEP_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
26676
+ }
26602
26677
  if (model && (isGpt5_5Model(model) || isGpt5_6Model(model))) {
26603
26678
  return DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5;
26604
26679
  }
26605
26680
  return DEEP_CATEGORY_PROMPT_APPEND;
26606
26681
  }
26682
+ function resolveUnspecifiedHighCategoryPromptAppend(model) {
26683
+ if (model && isGpt6Model(model)) {
26684
+ return UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
26685
+ }
26686
+ return UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND;
26687
+ }
26607
26688
  var QUICK_CATEGORY_PROMPT_APPEND = `<Category_Context>
26608
26689
  You are working on SMALL / QUICK tasks.
26609
26690
 
@@ -26624,20 +26705,26 @@ You are working on tasks that don't fit specific categories but require moderate
26624
26705
  </Category_Context>`;
26625
26706
  var UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
26626
26707
  <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`;
26708
+ var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
26709
+ You are working on tasks that don't fit specific categories but require substantial effort.
26710
+ </Category_Context>`;
26711
+ var UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`;
26712
+ var GPT_FLAGSHIP_GATE_MODELS = ["gpt-6-astra", "gpt-5.6-sol"];
26627
26713
  var OPENAI_CATEGORIES = [
26628
26714
  {
26629
26715
  name: "ultrabrain",
26630
- config: { model: "openai/gpt-5.6-sol", variant: "xhigh" },
26716
+ config: { model: "openai/gpt-6-astra", variant: "max" },
26631
26717
  description: "Use ONLY for genuinely hard, logic-heavy tasks. Give clear goals only, not step-by-step instructions.",
26632
- promptAppend: ULTRABRAIN_CATEGORY_PROMPT_APPEND
26718
+ promptAppend: ULTRABRAIN_CATEGORY_PROMPT_APPEND,
26719
+ resolvePromptAppend: resolveUltrabrainCategoryPromptAppend
26633
26720
  },
26634
26721
  {
26635
26722
  name: "deep",
26636
- config: { model: "openai/gpt-5.6-sol", variant: "medium" },
26637
- description: "Goal-oriented autonomous problem-solving on hairy problems requiring deep research. ONE goal + ONE deliverable per call \u2014 multiple goals must fan out as parallel `deep` calls, never bundled into one.",
26723
+ config: { model: "openai/gpt-6-astra", variant: "high" },
26724
+ description: "**MANDATORY: USE deep FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.** Deep autonomous problem-solving for complex research. ONE goal + ONE deliverable per call \u2014 multiple goals must fan out as parallel `deep` calls, never bundled into one.",
26638
26725
  promptAppend: DEEP_CATEGORY_PROMPT_APPEND,
26639
26726
  resolvePromptAppend: resolveDeepCategoryPromptAppend,
26640
- requiresModel: "gpt-5.6-sol"
26727
+ requiresModel: GPT_FLAGSHIP_GATE_MODELS
26641
26728
  },
26642
26729
  {
26643
26730
  name: "quick",
@@ -26652,6 +26739,14 @@ var OPENAI_CATEGORIES = [
26652
26739
  description: "Tasks that don't fit other categories, low effort required",
26653
26740
  callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
26654
26741
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
26742
+ },
26743
+ {
26744
+ name: "unspecified-high",
26745
+ config: { model: "openai/gpt-6-astra", variant: "high" },
26746
+ description: "Tasks that don't fit other categories, high effort required",
26747
+ callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
26748
+ promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
26749
+ resolvePromptAppend: resolveUnspecifiedHighCategoryPromptAppend
26655
26750
  }
26656
26751
  ];
26657
26752
 
@@ -26659,7 +26754,6 @@ var OPENAI_CATEGORIES = [
26659
26754
  var BUILTIN_CATEGORIES = [
26660
26755
  ...GOOGLE_CATEGORIES,
26661
26756
  ...OPENAI_CATEGORIES,
26662
- ...ANTHROPIC_CATEGORIES,
26663
26757
  ...KIMI_CATEGORIES
26664
26758
  ];
26665
26759
  function buildCategoryRecord(selector) {
@@ -26670,7 +26764,15 @@ var CATEGORY_PROMPT_APPENDS = buildCategoryRecord((definition2) => definition2.p
26670
26764
  var CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition2) => definition2.description);
26671
26765
  var CATEGORY_CALLER_GUIDANCE = buildCategoryRecord((definition2) => definition2.callerGuidance);
26672
26766
  var CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.resolvePromptAppend !== undefined).map((definition2) => [definition2.name, definition2.resolvePromptAppend]));
26673
- var BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.requiresModel !== undefined).map((definition2) => [definition2.name, definition2.requiresModel]));
26767
+ var BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.requiresModel !== undefined).map((definition2) => [
26768
+ definition2.name,
26769
+ typeof definition2.requiresModel === "string" ? [definition2.requiresModel] : definition2.requiresModel
26770
+ ]));
26771
+ function builtinCategoryGateModels(categoryName, requirementGateModel) {
26772
+ if (requirementGateModel !== undefined)
26773
+ return [requirementGateModel];
26774
+ return BUILTIN_CATEGORY_REQUIRES_MODEL[categoryName] ?? [];
26775
+ }
26674
26776
 
26675
26777
  // packages/omo-opencode/src/tools/delegate-task/constants.ts
26676
26778
  var PLAN_AGENT_SYSTEM_PREPEND_STATIC_BEFORE_SKILLS = `<system>
@@ -26896,13 +26998,13 @@ YOU MUST END YOUR RESPONSE WITH THIS SECTION.
26896
26998
 
26897
26999
  1. **Wave 1**: Fire these tasks IN PARALLEL (no dependencies)
26898
27000
  \`\`\`
26899
- task(category="...", load_skills=[...], run_in_background=false, prompt="Task 1: ...")
26900
- task(category="...", load_skills=[...], run_in_background=false, prompt="Task N: ...")
27001
+ task(category="...", load_skills=[...], run_in_background=true, prompt="Task 1: ...")
27002
+ task(category="...", load_skills=[...], run_in_background=true, prompt="Task N: ...")
26901
27003
  \`\`\`
26902
27004
 
26903
27005
  2. **Wave 2**: After Wave 1 completes, fire next wave IN PARALLEL
26904
27006
  \`\`\`
26905
- task(category="...", load_skills=[...], run_in_background=false, prompt="Task 2: ...")
27007
+ task(category="...", load_skills=[...], run_in_background=true, prompt="Task 2: ...")
26906
27008
  \`\`\`
26907
27009
 
26908
27010
  3. Continue until all waves complete
@@ -30589,8 +30691,8 @@ var model_capabilities_generated_default = {
30589
30691
  ]
30590
30692
  },
30591
30693
  limit: {
30592
- context: 400000,
30593
- input: 272000,
30694
+ context: 1050000,
30695
+ input: 922000,
30594
30696
  output: 128000
30595
30697
  }
30596
30698
  },
@@ -96612,7 +96714,7 @@ function getCachedVersion(options = {}) {
96612
96714
  // package.json
96613
96715
  var package_default = {
96614
96716
  name: "oh-my-opencode",
96615
- version: "5.0.0-beta.42",
96717
+ version: "5.0.0-beta.44",
96616
96718
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
96617
96719
  main: "./dist/index.js",
96618
96720
  types: "dist/index.d.ts",
@@ -96702,6 +96804,7 @@ var package_default = {
96702
96804
  "packages/omo-codex/plugin/components/telemetry/dist/cli.js",
96703
96805
  "packages/omo-codex/plugin/components/ultrawork/dist/cli.js",
96704
96806
  "packages/omo-codex/plugin/components/ulw-loop/dist/cli.js",
96807
+ "packages/prompts-core/prompts/ultrawork/codex.md",
96705
96808
  "packages/omo-codex/plugin/.codex-plugin",
96706
96809
  "!packages/omo-codex/plugin/node_modules",
96707
96810
  "!packages/omo-codex/plugin/**/node_modules",
@@ -96744,14 +96847,14 @@ var package_default = {
96744
96847
  prepare: "bun run build",
96745
96848
  postinstall: "node postinstall.mjs",
96746
96849
  prepublishOnly: "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
96747
- "test:model-capabilities": "bun test packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
96850
+ "test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
96748
96851
  typecheck: "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
96749
96852
  "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/pi-goal/tsconfig.json && tsgo --noEmit -p packages/pi-webfetch/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
96750
96853
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
96751
- test: "bun test",
96752
- "test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
96854
+ test: "bun test --timeout 20000",
96855
+ "test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test --timeout 20000 packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
96753
96856
  "test:fast": "bun run script/test-fast.ts",
96754
- "test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
96857
+ "test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test --timeout 20000 packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
96755
96858
  "test:windows-codex": "bun run test:codex",
96756
96859
  "build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
96757
96860
  "build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build"
@@ -96795,7 +96898,7 @@ var package_default = {
96795
96898
  zod: "^4.4.3"
96796
96899
  },
96797
96900
  devDependencies: {
96798
- "@code-yeongyu/senpi": "2026.9.4-3",
96901
+ "@code-yeongyu/senpi": "2026.9.5-3",
96799
96902
  "@oh-my-opencode/agents-md-core": "workspace:*",
96800
96903
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
96801
96904
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -96836,18 +96939,18 @@ var package_default = {
96836
96939
  typescript: "^7.0.2"
96837
96940
  },
96838
96941
  optionalDependencies: {
96839
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.42",
96840
- "oh-my-opencode-darwin-x64": "5.0.0-beta.42",
96841
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.42",
96842
- "oh-my-opencode-linux-arm64": "5.0.0-beta.42",
96843
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.42",
96844
- "oh-my-opencode-linux-x64": "5.0.0-beta.42",
96845
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.42",
96846
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.42",
96847
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.42",
96848
- "oh-my-opencode-windows-arm64": "5.0.0-beta.42",
96849
- "oh-my-opencode-windows-x64": "5.0.0-beta.42",
96850
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.42"
96942
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.44",
96943
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.44",
96944
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.44",
96945
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.44",
96946
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.44",
96947
+ "oh-my-opencode-linux-x64": "5.0.0-beta.44",
96948
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.44",
96949
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.44",
96950
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.44",
96951
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.44",
96952
+ "oh-my-opencode-windows-x64": "5.0.0-beta.44",
96953
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.44"
96851
96954
  },
96852
96955
  overrides: {
96853
96956
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -100317,7 +100420,7 @@ Use \`task()\` with EITHER category OR agent (mutually exclusive):
100317
100420
  task(
100318
100421
  category="[category-name]",
100319
100422
  load_skills=["skill-1", "skill-2"],
100320
- run_in_background=false,
100423
+ run_in_background=true,
100321
100424
  prompt="..."
100322
100425
  )
100323
100426
 
@@ -100325,7 +100428,7 @@ task(
100325
100428
  task(
100326
100429
  subagent_type="[agent-name]",
100327
100430
  load_skills=[],
100328
- run_in_background=false,
100431
+ run_in_background=true,
100329
100432
  prompt="..."
100330
100433
  )
100331
100434
  \`\`\`
@@ -100422,10 +100525,10 @@ Anything else \u2192 fire ALL of them in the SAME response, IN PARALLEL. One mes
100422
100525
 
100423
100526
  \`\`\`typescript
100424
100527
  // CORRECT: 4 independent tasks \u2192 4 task() calls in ONE response
100425
- task(category="quick", load_skills=[], run_in_background=false, prompt="...task A...")
100426
- task(category="quick", load_skills=[], run_in_background=false, prompt="...task B...")
100427
- task(category="quick", load_skills=[], run_in_background=false, prompt="...task C...")
100428
- task(category="quick", load_skills=[], run_in_background=false, prompt="...task D...")
100528
+ task(category="quick", load_skills=[], run_in_background=true, prompt="...task A...")
100529
+ task(category="quick", load_skills=[], run_in_background=true, prompt="...task B...")
100530
+ task(category="quick", load_skills=[], run_in_background=true, prompt="...task C...")
100531
+ task(category="quick", load_skills=[], run_in_background=true, prompt="...task D...")
100429
100532
 
100430
100533
  // WRONG: same 4 tasks dispatched one per turn
100431
100534
  // You are wasting wall-clock time and parallel capacity.
@@ -100439,7 +100542,7 @@ task(category="quick", load_skills=[], run_in_background=false, prompt="...task
100439
100542
 
100440
100543
  **Background vs foreground:**
100441
100544
  - **Exploration** (\`explore\`, \`librarian\`): \`run_in_background=true\` \u2014 non-blocking research
100442
- - **Task execution** (\`category="..."\`): \`run_in_background=false\` \u2014 blocks for verification
100545
+ - **Task execution** (\`category="..."\`): \`run_in_background=true\` \u2014 the completion notification wakes you to verify; \`false\` only for a short child whose result gates your very next call
100443
100546
 
100444
100547
  **Background management:**
100445
100548
  - Collect with background task IDs (\`bg_...\`): \`background_output(task_id="bg_...")\`
@@ -100500,9 +100603,9 @@ Extract wisdom \u2192 include in EVERY dispatched prompt under "Inherited Wisdom
100500
100603
  ### 3.3 Invoke task() \u2014 Fan Out in One Response
100501
100604
 
100502
100605
  \`\`\`typescript
100503
- task(category="...", load_skills=[...], run_in_background=false, prompt="[6-SECTION PROMPT]")
100504
- task(category="...", load_skills=[...], run_in_background=false, prompt="[6-SECTION PROMPT]")
100505
- task(category="...", load_skills=[...], run_in_background=false, prompt="[6-SECTION PROMPT]")
100606
+ task(category="...", load_skills=[...], run_in_background=true, prompt="[6-SECTION PROMPT]")
100607
+ task(category="...", load_skills=[...], run_in_background=true, prompt="[6-SECTION PROMPT]")
100608
+ task(category="...", load_skills=[...], run_in_background=true, prompt="[6-SECTION PROMPT]")
100506
100609
  \`\`\`
100507
100610
 
100508
100611
  3 independent tasks \u2192 3 calls in this response.
@@ -103352,8 +103455,8 @@ Before acting, survey the skills available in this system: scan their descriptio
103352
103455
  |----------|-------------|------------|
103353
103456
  | explore agent | Need codebase patterns you don't have | \`task(subagent_type="explore", load_skills=[], run_in_background=true, ...)\` |
103354
103457
  | librarian agent | External library docs, OSS examples | \`task(subagent_type="librarian", load_skills=[], run_in_background=true, ...)\` |
103355
- | oracle agent | Stuck on architecture/debugging after 2+ attempts | \`task(subagent_type="oracle", load_skills=[], run_in_background=false, ...)\` |
103356
- | plan agent | Discovery leaves unresolved design uncertainty: unclear boundaries, competing decompositions, or uncertain dependency order | \`task(subagent_type="plan", load_skills=[], run_in_background=false, ...)\` |
103458
+ | oracle agent | Stuck on architecture/debugging after 2+ attempts | \`task(subagent_type="oracle", load_skills=[], run_in_background=true, ...)\` |
103459
+ | plan agent | Discovery leaves unresolved design uncertainty: unclear boundaries, competing decompositions, or uncertain dependency order | \`task(subagent_type="plan", load_skills=[], run_in_background=true, ...)\` |
103357
103460
  | task category | Specialized work matching a category | \`task(category="...", load_skills=[...], run_in_background=true)\` |
103358
103461
 
103359
103462
  <tool_usage_rules>
@@ -105669,6 +105772,8 @@ function showToast(ctx, sessionID) {
105669
105772
  function getNativeSisyphusGptVariant(model) {
105670
105773
  if (isGpt5_5Model(model.modelID))
105671
105774
  return "medium";
105775
+ if (isGpt6Model(model.modelID))
105776
+ return "high";
105672
105777
  const chain = AGENT_MODEL_REQUIREMENTS["sisyphus"]?.fallbackChain ?? [];
105673
105778
  const exactMatch = chain.find((entry) => entry.providers.includes(model.providerID) && entry.model === model.modelID);
105674
105779
  if (exactMatch?.variant !== undefined) {
@@ -105682,13 +105787,13 @@ function createNoSisyphusGptHook(ctx) {
105682
105787
  const rawAgent = input.agent ?? getSessionAgent(input.sessionID) ?? "";
105683
105788
  const agentKey = getAgentConfigKey(rawAgent);
105684
105789
  const modelID = input.model?.modelID;
105685
- if (agentKey === "sisyphus" && input.model && modelID && isGptNativeSisyphusModel(modelID) && output?.message && output.message.variant === undefined) {
105790
+ if (agentKey === "sisyphus" && input.model && modelID && (isGptNativeSisyphusModel(modelID) || isGpt6Model(modelID)) && output?.message && output.message.variant === undefined) {
105686
105791
  const variant = getNativeSisyphusGptVariant(input.model);
105687
105792
  if (variant !== undefined) {
105688
105793
  output.message.variant = variant;
105689
105794
  }
105690
105795
  }
105691
- if (agentKey === "sisyphus" && modelID && isGptModel(modelID) && !isGptNativeSisyphusModel(modelID)) {
105796
+ if (agentKey === "sisyphus" && modelID && isGptModel(modelID) && !isGptNativeSisyphusModel(modelID) && !isGpt6Model(modelID)) {
105692
105797
  showToast(ctx, input.sessionID);
105693
105798
  input.agent = resolveRegisteredAgentName("hephaestus") ?? "hephaestus";
105694
105799
  if (output?.message) {
@@ -112277,7 +112382,7 @@ to continue:`))
112277
112382
  return;
112278
112383
  output.output = outputText.trimEnd() + `
112279
112384
 
112280
- to continue: task(task_id="${taskId}", load_skills=[], run_in_background=false, prompt="...")`;
112385
+ to continue: task(task_id="${taskId}", load_skills=[], run_in_background=true, prompt="...")`;
112281
112386
  };
112282
112387
  return {
112283
112388
  "tool.execute.after": toolExecuteAfter
@@ -113330,7 +113435,7 @@ Correct action \u2014 delegate via \`task()\`. Fan out in PARALLEL when multiple
113330
113435
  task(
113331
113436
  category="quick",
113332
113437
  load_skills=[],
113333
- run_in_background=false,
113438
+ run_in_background=true,
113334
113439
  prompt="[6 sections: TASK / EXPECTED OUTCOME / REQUIRED TOOLS / MUST DO / MUST NOT DO / CONTEXT]"
113335
113440
  )
113336
113441
  \`\`\`
@@ -115818,7 +115923,7 @@ var DELEGATE_TASK_ERROR_PATTERNS = [
115818
115923
  {
115819
115924
  pattern: "run_in_background",
115820
115925
  errorType: "missing_run_in_background",
115821
- fixHint: "Add run_in_background=false (for delegation) or run_in_background=true (for parallel exploration)"
115926
+ fixHint: "Add run_in_background=true (the standard spawn) or run_in_background=false for a short child whose result gates your very next call"
115822
115927
  },
115823
115928
  {
115824
115929
  pattern: "load_skills",
@@ -115906,7 +116011,7 @@ function buildRetryGuidance(errorInfo) {
115906
116011
  description="Task description",
115907
116012
  prompt="Detailed prompt...",
115908
116013
  category="unspecified-low", // OR subagent_type="explore"
115909
- run_in_background=false,
116014
+ run_in_background=true,
115910
116015
  load_skills=[]
115911
116016
  )
115912
116017
  \`\`\`
@@ -117328,11 +117433,13 @@ async function runPreemptiveCompactionIfNeeded(args) {
117328
117433
  lastCompactionTime.set(sessionID, Date.now());
117329
117434
  try {
117330
117435
  const { providerID: targetProviderID, modelID: targetModelID } = resolveCompactionModel(pluginConfig, sessionID, cached2.providerID, cached2.modelID);
117331
- await withTimeout3(ctx.client.session.summarize({
117436
+ const summarizePromise = ctx.client.session.summarize({
117332
117437
  path: { id: sessionID },
117333
117438
  body: { providerID: targetProviderID, modelID: targetModelID, auto: true },
117334
117439
  query: { directory: ctx.directory }
117335
- }), PREEMPTIVE_COMPACTION_TIMEOUT_MS2, `Compaction summarize timed out after ${PREEMPTIVE_COMPACTION_TIMEOUT_MS2}ms`);
117440
+ });
117441
+ summarizePromise.then(() => compactionInProgress.delete(sessionID), () => compactionInProgress.delete(sessionID));
117442
+ await withTimeout3(summarizePromise, PREEMPTIVE_COMPACTION_TIMEOUT_MS2, `Compaction summarize timed out after ${PREEMPTIVE_COMPACTION_TIMEOUT_MS2}ms`);
117336
117443
  compactedSessions.add(sessionID);
117337
117444
  } catch (error) {
117338
117445
  const errorMessage = String(error);
@@ -117358,8 +117465,6 @@ async function runPreemptiveCompactionIfNeeded(args) {
117358
117465
  if (toastError instanceof Error)
117359
117466
  return;
117360
117467
  });
117361
- } finally {
117362
- compactionInProgress.delete(sessionID);
117363
117468
  }
117364
117469
  }
117365
117470
 
@@ -131060,10 +131165,10 @@ function resolveCategoryConfig(categoryName, options) {
131060
131165
  userConfig = { ...configuredUserConfig, models };
131061
131166
  }
131062
131167
  const categoryReq = CATEGORY_MODEL_REQUIREMENTS[categoryName];
131063
- const requiredModel = categoryReq?.requiresModel ?? BUILTIN_CATEGORY_REQUIRES_MODEL[categoryName];
131064
- if (requiredModel && availableModels && !hasExplicitUserConfig) {
131065
- if (!isModelAvailable2(requiredModel, availableModels)) {
131066
- log2(`[resolveCategoryConfig] Category ${categoryName} requires ${requiredModel} but not available`);
131168
+ const requiredModels = builtinCategoryGateModels(categoryName, categoryReq?.requiresModel);
131169
+ if (requiredModels.length > 0 && availableModels && !hasExplicitUserConfig) {
131170
+ if (!requiredModels.some((requiredModel) => isModelAvailable2(requiredModel, availableModels))) {
131171
+ log2(`[resolveCategoryConfig] Category ${categoryName} requires ${requiredModels.join(" or ")} but not available`);
131067
131172
  return null;
131068
131173
  }
131069
131174
  }
@@ -131241,7 +131346,8 @@ async function resolveCategoryExecution(args, executorCtx, inheritedModel, syste
131241
131346
  });
131242
131347
  if (!resolved) {
131243
131348
  const requirement2 = CATEGORY_MODEL_REQUIREMENTS[categoryName];
131244
- const requiredModel = requirement2?.requiresModel ?? BUILTIN_CATEGORY_REQUIRES_MODEL[categoryName];
131349
+ const requiredModels = builtinCategoryGateModels(categoryName, requirement2?.requiresModel);
131350
+ const requiredModel = requiredModels.length > 0 ? requiredModels.join('" or "') : undefined;
131245
131351
  const allCategoryNames = Object.keys(enabledCategories).join(", ");
131246
131352
  const configuredModels = userCategories?.[categoryName]?.models;
131247
131353
  if (configuredModels && availableModels.size > 0) {
@@ -131745,8 +131851,7 @@ function createDelegateTaskPresentation(options) {
131745
131851
  Available categories:
131746
131852
  ${categoryList}
131747
131853
  - subagent_type: Use specific agent directly (explore, librarian, oracle, metis, momus)
131748
- - run_in_background: Optional. Defaults to false (sync, waits). Set true=async (returns a background task ID like \`bg_...\` for \`background_output\`) ONLY for parallel exploration with 5+ independent queries.
131749
- Sync waits use a 30-minute inactivity window: OpenCode busy/retry/running status resets the window, so this is not a total wall-clock limit.
131854
+ - run_in_background: true is the standard spawn: returns a background task ID like \`bg_...\` at once and the completion notification delivers the result. false blocks this response until the child finishes (a 30-minute inactivity window, reset by OpenCode busy/retry/running status, not a total wall-clock limit); use it only for a short child whose result gates your very next call. Omitted counts as false.
131750
131855
  - task_id: Continuation session id (\`ses_...\`) from task metadata. Continues the same subagent session with FULL CONTEXT PRESERVED; not the background task id (\`bg_...\`).
131751
131856
  - command: The command that triggered this task (optional, for slash command tracking).
131752
131857
 
@@ -131798,7 +131903,7 @@ var delegateTaskArgsSchema = {
131798
131903
  load_skills: tool.schema.array(tool.schema.string()).optional().describe('Skill names to inject. Optional; defaults to [] when omitted. Pass an explicit array (e.g. ["git-master"]) for skill-specific tasks.'),
131799
131904
  description: tool.schema.string().optional().describe("Short task description (3-5 words). Auto-generated from prompt if omitted."),
131800
131905
  prompt: tool.schema.string().describe("Full detailed prompt for the agent"),
131801
- run_in_background: tool.schema.boolean().optional().describe("Optional; defaults to false (sync). true=async (returns background task ID `bg_...` for background_output), false=sync (waits). Use true ONLY for parallel exploration; otherwise omit or pass false for task delegation."),
131906
+ run_in_background: tool.schema.boolean().optional().describe("true is the standard spawn: returns a background task ID `bg_...` at once; the completion notification delivers the result, which background_output reads. false blocks this response until the child finishes; use it only for a short child whose result gates your very next call. Omitted counts as false."),
131802
131907
  category: tool.schema.string().optional().describe("REQUIRED if subagent_type not provided. Do NOT provide both category and subagent_type."),
131803
131908
  subagent_type: tool.schema.string().optional().describe("REQUIRED if category not provided. Do NOT provide both category and subagent_type."),
131804
131909
  task_id: tool.schema.string().optional().describe("Continuation session id (`ses_...`) from task metadata; not a background task id (`bg_...`)."),
@@ -152809,14 +152914,14 @@ Check the \`skill\` tool for available skills and their descriptions. For EVERY
152809
152914
  task(
152810
152915
  category="[selected-category]",
152811
152916
  load_skills=["skill-1", "skill-2"], // Include ALL relevant skills - ESPECIALLY user-installed ones
152812
- run_in_background=false,
152917
+ run_in_background=true,
152813
152918
  prompt="..."
152814
152919
  )
152815
152920
  \`\`\`
152816
152921
 
152817
152922
  **ANTI-PATTERN (will produce poor results):**
152818
152923
  \`\`\`typescript
152819
- task(category="...", load_skills=[], run_in_background=false, prompt="...") // Empty load_skills without justification
152924
+ task(category="...", load_skills=[], run_in_background=true, prompt="...") // Empty load_skills without justification
152820
152925
  \`\`\`
152821
152926
 
152822
152927
  ---
@@ -152825,23 +152930,23 @@ task(category="...", load_skills=[], run_in_background=false, prompt="...") //
152825
152930
 
152826
152931
  Every delegation MUST use the category that matches the task's domain. Mismatched categories produce measurably worse output because each category runs on a model optimized for that specific domain.
152827
152932
 
152828
- **VISUAL WORK = ALWAYS \`visual-engineering\`. NO EXCEPTIONS.**
152933
+ **ANY VISUAL DESIGN RELATION = ALWAYS \`visual-engineering\`. NO EXCEPTIONS.**
152829
152934
 
152830
- Any task involving UI, UX, CSS, styling, layout, animation, design, or frontend components MUST go to \`visual-engineering\`. Never delegate visual work to \`quick\`, \`unspecified-*\`, or any other category.
152935
+ Any task with even a minor visual-design relationship \u2014 including UI, UX, CSS, styling, layout, animation, design systems, frontend components, screenshots, diagrams, visual polish, or presentation \u2014 MUST go to \`visual-engineering\`. Never delegate it to \`quick\`, \`unspecified-*\`, or any other category.
152831
152936
 
152832
152937
  \`\`\`typescript
152833
152938
  // CORRECT: Visual work \u2192 visual-engineering category
152834
- task(category="visual-engineering", load_skills=["frontend"], run_in_background=false, prompt="Redesign the sidebar layout with new spacing...")
152939
+ task(category="visual-engineering", load_skills=["frontend"], run_in_background=true, prompt="Redesign the sidebar layout with new spacing...")
152835
152940
 
152836
152941
  // WRONG: Visual work in wrong category - WILL PRODUCE INFERIOR RESULTS
152837
- task(category="quick", load_skills=[], run_in_background=false, prompt="Redesign the sidebar layout with new spacing...")
152942
+ task(category="quick", load_skills=[], run_in_background=true, prompt="Redesign the sidebar layout with new spacing...")
152838
152943
  \`\`\`
152839
152944
 
152840
152945
  | Task Domain | MUST Use Category |
152841
152946
  |---|---|
152842
- | UI, styling, animations, layout, design | \`visual-engineering\` |
152843
- | Hard logic, architecture decisions, algorithms | \`ultrabrain\` |
152844
- | Autonomous research + end-to-end implementation | \`deep\` |
152947
+ | Visual design, UI, styling, animations, layout, design systems | \`visual-engineering\` |
152948
+ | Hard logic and architecture decisions | \`ultrabrain\` |
152949
+ | 3D graphics, computer use, browser use, backend, logic, algorithms, CAPTCHA solving, multimodal, autonomous research + end-to-end implementation | \`deep\` |
152845
152950
  | Single-file typo, trivial config change | \`quick\` |
152846
152951
 
152847
152952
  **When in doubt about category, it is almost never \`quick\` or \`unspecified-*\`. Match the domain.**`;
@@ -152927,7 +153032,7 @@ task(subagent_type="explore", run_in_background=true, ...)
152927
153032
  // packages/omo-opencode/src/agents/frontier-tool-schema-guard.ts
152928
153033
  var FRONTIER_TOOL_SCHEMA_NAMES = ["grep", "glob"];
152929
153034
  function getFrontierToolSchemaPermission(model) {
152930
- return isClaudeOpus47OrLaterModel(model) || isGpt5_5Model(model) || isGpt5_6Model(model) ? { grep: "deny", glob: "deny" } : {};
153035
+ return isClaudeOpus47OrLaterModel(model) || isGpt5_5Model(model) || isGpt5_6Model(model) || isGpt6Model(model) ? { grep: "deny", glob: "deny" } : {};
152931
153036
  }
152932
153037
  function applyFrontierToolSchemaPermission(permission, model, explicitPermission, explicitTools) {
152933
153038
  if (!permission)
@@ -153050,10 +153155,10 @@ Every \`task()\` output exposes a continuation session ID (\`ses_...\`). Pass it
153050
153155
 
153051
153156
  \`\`\`typescript
153052
153157
  // WRONG: Starting fresh loses all context
153053
- task(category="quick", load_skills=[], run_in_background=false, description="Fix type error", prompt="Fix the type error in auth.ts...")
153158
+ task(category="quick", load_skills=[], run_in_background=true, description="Fix type error", prompt="Fix the type error in auth.ts...")
153054
153159
 
153055
153160
  // CORRECT: Resume preserves everything
153056
- task(task_id="ses_abc123", load_skills=[], run_in_background=false, description="Fix type error", prompt="Fix: Type error on line 42")
153161
+ task(task_id="ses_abc123", load_skills=[], run_in_background=true, description="Fix type error", prompt="Fix: Type error on line 42")
153057
153162
  \`\`\`
153058
153163
 
153059
153164
  **After EVERY delegation, STORE the \`ses_...\` continuation ID for potential continuation.**
@@ -153669,7 +153774,7 @@ function buildGeminiToolCallExamples() {
153669
153774
  **User**: "Add a new /health endpoint to the API"
153670
153775
  **CORRECT**:
153671
153776
  \`\`\`
153672
- \u2192 Call Task(category="quick", load_skills=["typescript-programmer"], run_in_background=false, prompt="...")
153777
+ \u2192 Call Task(category="quick", load_skills=["typescript-programmer"], run_in_background=true, prompt="...")
153673
153778
  \u2192 (After agent completes) Read changed files to verify
153674
153779
  \u2192 Call LspDiagnostics on changed files
153675
153780
  \u2192 Report
@@ -155921,10 +156026,14 @@ ${styleBlock}`;
155921
156026
  var GPT_PROMPT_IDENTITIES = {
155922
156027
  "gpt-5.5": "GPT-5.5",
155923
156028
  "gpt-5.6-sol": "GPT-5.6 Sol",
156029
+ "gpt-6-astra": "GPT-6 Astra",
155924
156030
  "gpt-family": "a GPT-family model"
155925
156031
  };
155926
156032
  function getGptPromptIdentityKey(model) {
155927
156033
  const modelID = model?.split("/").at(-1)?.toLowerCase();
156034
+ if (modelID?.includes("gpt-6-astra")) {
156035
+ return "gpt-6-astra";
156036
+ }
155928
156037
  if (modelID?.includes("gpt-5.6-sol") || modelID?.includes("gpt-5-6-sol")) {
155929
156038
  return "gpt-5.6-sol";
155930
156039
  }
@@ -156315,7 +156424,7 @@ Don't narrate every tool call, but don't go silent for long stretches on complex
156315
156424
 
156316
156425
  Parameters to always think about:
156317
156426
 
156318
- - \`run_in_background\`: \`true\` for parallel research (\`explore\`, \`librarian\`), \`false\` for synchronous work where the next step depends on the result.
156427
+ - \`run_in_background\`: \`true\` is the standard spawn; the completion notification delivers the result while you keep working or end the response. \`false\` blocks this response until the child finishes; use it only for a short child whose result gates your very next call.
156319
156428
  - \`load_skills\`: evaluate every available skill before each delegation. Err toward loading when the skill's domain even loosely connects to the task.
156320
156429
  - \`task_id\`: reuse for follow-ups. Do not start fresh sessions on continuations.
156321
156430
  - \`description\`: a 3-5 word label. Optional but improves observability.
@@ -156326,7 +156435,7 @@ Both are background pattern search with narrative synthesis. Always fire them wi
156326
156435
 
156327
156436
  ## oracle
156328
156437
 
156329
- Read-only consultant. Synchronous (\`run_in_background=false\`) when its answer blocks your next step. Background (\`run_in_background=true\`) only for long-running architectural reviews you are happy to return to later. Never proceed with work Oracle was asked to decide before its result arrives.
156438
+ Read-only consultant. Run it in the background and continue with work that does not depend on its answer; never proceed with work Oracle was asked to decide before its result arrives.
156330
156439
 
156331
156440
  ## skill loading
156332
156441
 
@@ -157358,7 +157467,7 @@ function resolveSisyphusPromptFamily(model) {
157358
157467
  return "kimi-k2-7";
157359
157468
  if (isKimiK2Model(model))
157360
157469
  return "kimi-k2-6";
157361
- if (isGpt5_5Model(model) || isGpt5_6Model(model))
157470
+ if (isGpt5_5Model(model) || isGpt5_6Model(model) || isGpt6Model(model))
157362
157471
  return "gpt-5-5";
157363
157472
  if (isGptNativeSisyphusModel(model))
157364
157473
  return "gpt-5-4";
@@ -157812,7 +157921,7 @@ function createOracleAgent(model) {
157812
157921
  ...restrictions,
157813
157922
  prompt: ORACLE_DEFAULT_PROMPT
157814
157923
  };
157815
- if (isGpt5_6Model(model)) {
157924
+ if (isGpt5_6Model(model) || isGpt6Model(model)) {
157816
157925
  return {
157817
157926
  ...base,
157818
157927
  prompt: ORACLE_GPT_5_5_PROMPT,
@@ -158763,7 +158872,7 @@ ${categoryRows.join(`
158763
158872
  `)}
158764
158873
 
158765
158874
  \`\`\`typescript
158766
- task(category="[category-name]", load_skills=[...], run_in_background=false, prompt="...")
158875
+ task(category="[category-name]", load_skills=[...], run_in_background=true, prompt="...")
158767
158876
  \`\`\``;
158768
158877
  }
158769
158878
  function buildSkillsSection2(skills2) {
@@ -158787,7 +158896,7 @@ Read each skill's description in the section below and ask: "Does this skill's d
158787
158896
 
158788
158897
  **Usage:**
158789
158898
  \`\`\`typescript
158790
- task(category="[category]", load_skills=["skill-1", "skill-2"], run_in_background=false, prompt="...")
158899
+ task(category="[category]", load_skills=["skill-1", "skill-2"], run_in_background=true, prompt="...")
158791
158900
  \`\`\`
158792
158901
 
158793
158902
  **IMPORTANT:**
@@ -159232,7 +159341,7 @@ function createMomusAgent(model) {
159232
159341
  ...restrictions,
159233
159342
  prompt: MOMUS_DEFAULT_PROMPT
159234
159343
  };
159235
- if (isGpt5_6Model(model)) {
159344
+ if (isGpt5_6Model(model) || isGpt6Model(model)) {
159236
159345
  return {
159237
159346
  ...base,
159238
159347
  prompt: MOMUS_GPT_5_6_PROMPT,
@@ -160284,6 +160393,7 @@ var GPT_5_3_CODEX_RE = /^gpt-5[.-]3-codex(?:$|[.-])/i;
160284
160393
  var GPT_5_4_RE = /^gpt-5[.-]4(?:$|[.-])/i;
160285
160394
  var GPT_5_5_RE = /^gpt-5[.-]5(?:$|[.-])/i;
160286
160395
  var GPT_5_6_RE = /^gpt-5[.-]6(?:$|[.-])/i;
160396
+ var GPT_6_RE = /^gpt-6(?:$|[.-])/i;
160287
160397
  var HOSTED_VENDOR_PREFIX_RE = /^(?:[^./]+\.)+(gpt-5[.-].*)$/i;
160288
160398
 
160289
160399
  class UnsupportedHephaestusModelError extends Error {
@@ -160302,7 +160412,7 @@ function isHephaestusSupportedModel(model) {
160302
160412
  if (!model)
160303
160413
  return false;
160304
160414
  const modelName = extractModelName3(model);
160305
- return GPT_5_3_CODEX_RE.test(modelName) || GPT_5_4_RE.test(modelName) || GPT_5_5_RE.test(modelName) || GPT_5_6_RE.test(modelName);
160415
+ return GPT_5_3_CODEX_RE.test(modelName) || GPT_5_4_RE.test(modelName) || GPT_5_5_RE.test(modelName) || GPT_5_6_RE.test(modelName) || GPT_6_RE.test(modelName);
160306
160416
  }
160307
160417
  function assertHephaestusSupportedModel(model) {
160308
160418
  if (!isHephaestusSupportedModel(model)) {
@@ -160311,7 +160421,7 @@ function assertHephaestusSupportedModel(model) {
160311
160421
  }
160312
160422
  function getHephaestusPromptSource(model) {
160313
160423
  assertHephaestusSupportedModel(model);
160314
- if (model && isGpt5_6Model(model)) {
160424
+ if (model && (isGpt5_6Model(model) || isGpt6Model(model))) {
160315
160425
  return "gpt-5-6";
160316
160426
  }
160317
160427
  if (model && isGpt5_5Model(model)) {
@@ -161390,7 +161500,7 @@ You may invoke \`task()\` with \`subagent_type\` set to \`explore\`, \`librarian
161390
161500
 
161391
161501
  - \`explore\`: internal codebase pattern search with synthesis. Parallel batches of 2-5 with \`run_in_background=true\`.
161392
161502
  - \`librarian\`: external docs, open-source code, web references. Same pattern.
161393
- - \`oracle\`: high-reasoning consultant. \`run_in_background=false\` when their answer blocks your next step; \`true\` when you can continue productively while they think.
161503
+ - \`oracle\`: high-reasoning consultant. Run it in the background; continue with work that does not depend on the answer and never ship what it was asked to decide before the result arrives.
161394
161504
 
161395
161505
  Every \`task()\` call needs \`load_skills\` (empty array \`[]\` is valid). Reuse \`task_id\` for follow-ups to preserve sub-agent context.
161396
161506
 
@@ -161726,7 +161836,7 @@ function getSisyphusJuniorPromptSource(model) {
161726
161836
  if (model && isKimiK2Model(model))
161727
161837
  return "kimi-k2";
161728
161838
  if (model && isGptModel(model)) {
161729
- if (isGpt5_5Model(model) || isGpt5_6Model(model))
161839
+ if (isGpt5_5Model(model) || isGpt5_6Model(model) || isGpt6Model(model))
161730
161840
  return "gpt-5-5";
161731
161841
  const lower = model.toLowerCase();
161732
161842
  if (lower.includes("gpt-5.4") || lower.includes("gpt-5-4"))