oh-my-opencode 5.1.43 → 5.1.45

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 (399) hide show
  1. package/dist/cli/index.js +948 -416
  2. package/dist/cli/service-auth/keystore.d.ts +4 -2
  3. package/dist/cli-node/index.js +948 -416
  4. package/dist/config-migration/dori-section-rename.d.ts +3 -0
  5. package/dist/config-migration/index.d.ts +2 -2
  6. package/dist/config-migration/migration-plans.d.ts +10 -0
  7. package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
  8. package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -1
  9. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
  10. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  11. package/dist/index.js +6369 -3370
  12. package/dist/oh-my-opencode.schema.json +2 -2
  13. package/dist/plugin/command-execute-before.d.ts +3 -0
  14. package/dist/plugin/skill-context.d.ts +2 -0
  15. package/dist/plugin/skill-security-notice.d.ts +3 -0
  16. package/dist/plugin-config/omo-config-chain.d.ts +1 -0
  17. package/dist/skills/browser/SKILL.md +21 -22
  18. package/dist/skills/browser/references/commands.md +2 -9
  19. package/dist/skills/browser/references/install.md +1 -2
  20. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  21. package/dist/skills/browser/scripts/browser-doctor.mjs +2 -2
  22. package/dist/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  23. package/dist/skills/browser/scripts/browser-install.mjs +1 -1
  24. package/dist/skills/browser/scripts/omowright.mjs +1 -10
  25. package/dist/skills/frontend/SKILL.md +79 -118
  26. package/dist/skills/frontend/references/design/README.md +75 -224
  27. package/dist/skills/frontend/references/design/stylegallery.md +32 -27
  28. package/dist/skills/frontend/references/perfection/README.md +2 -2
  29. package/dist/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  30. package/dist/skills/frontend/scripts/perfection/check-draft-guard.test.ts +101 -0
  31. package/dist/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  32. package/dist/skills/frontend/scripts/perfection/collect-files.test.ts +50 -0
  33. package/dist/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  34. package/dist/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  35. package/dist/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  36. package/dist/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  37. package/dist/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  38. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  39. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  40. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  41. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  42. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  43. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  44. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  45. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  46. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  47. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  48. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  49. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  50. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  51. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  52. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  53. package/dist/skills/programming/SKILL.md +10 -7
  54. package/dist/skills/programming/references/typescript/README.md +10 -7
  55. package/dist/skills/programming/references/typescript/bootstrap.md +9 -23
  56. package/dist/skills/programming/references/typescript/oxc-lint.md +130 -0
  57. package/dist/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  58. package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  59. package/dist/skills/programming/scripts/typescript/new-project.test.ts +162 -0
  60. package/dist/skills/programming/scripts/typescript/new-project.ts +20 -81
  61. package/dist/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  62. package/dist/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  63. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  64. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  65. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  66. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  67. package/dist/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  68. package/dist/skills/refactor/SKILL.md +13 -13
  69. package/dist/skills/ulw-execute/SKILL.md +1 -1
  70. package/dist/skills/ulw-research/AGENTS.md +9 -3
  71. package/dist/skills/ulw-research/SKILL.md +2 -2
  72. package/dist/skills/ulw-research/references/deliverable-phase.md +7 -6
  73. package/dist/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  74. package/dist/skills/ulw-research/references/report-gates.md +51 -3
  75. package/dist/skills/ulw-research/scripts/claims-index.mjs +125 -0
  76. package/dist/skills/ulw-research/scripts/claims-index.test.ts +149 -0
  77. package/dist/skills/ulw-research/scripts/contracts.mjs +68 -3
  78. package/dist/skills/ulw-research/scripts/contracts.test.ts +97 -12
  79. package/dist/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +190 -0
  80. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  81. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +141 -0
  82. package/dist/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  83. package/dist/skills/ulw-research/scripts/fact-ledger-schema.test.ts +43 -0
  84. package/dist/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  85. package/dist/skills/ulw-research/scripts/fact-ledger.test.ts +252 -0
  86. package/dist/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  87. package/dist/skills/ulw-research/scripts/fidelity-brief.test.ts +179 -0
  88. package/dist/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  89. package/dist/skills/ulw-research/scripts/fidelity-state.test.ts +46 -0
  90. package/dist/skills/ulw-research/scripts/gates-context.test.ts +64 -0
  91. package/dist/skills/ulw-research/scripts/gates-static.mjs +1 -1
  92. package/dist/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  93. package/dist/skills/ulw-research/scripts/gates-text.mjs +1 -27
  94. package/dist/skills/ulw-research/scripts/lexicon.mjs +47 -0
  95. package/dist/skills/ulw-research/scripts/lexicon.test.ts +57 -0
  96. package/dist/skills/ulw-research/scripts/numerals.mjs +226 -0
  97. package/dist/skills/ulw-research/scripts/numerals.test.ts +120 -0
  98. package/dist/skills/ulw-research/scripts/outcome.mjs +2 -3
  99. package/dist/skills/ulw-research/scripts/outcome.test.ts +29 -0
  100. package/dist/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  101. package/dist/skills/ulw-research/scripts/particles-ko.test.ts +86 -0
  102. package/dist/skills/ulw-research/scripts/rational.mjs +139 -0
  103. package/dist/skills/ulw-research/scripts/rational.test.ts +46 -0
  104. package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  105. package/dist/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  106. package/dist/skills/ulw-research/scripts/sentence-split.test.ts +109 -0
  107. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/claim-graph.md +13 -0
  108. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-locked.md +17 -0
  109. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-pending.md +17 -0
  110. package/dist/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  111. package/dist/skills/ulw-research/scripts/text-normalize.test.ts +73 -0
  112. package/dist/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  113. package/dist/skills/ulw-research/scripts/text-similarity.test.ts +38 -0
  114. package/dist/skills/ulw-research/scripts/units.mjs +105 -0
  115. package/dist/skills/ulw-research/scripts/units.test.ts +83 -0
  116. package/dist/skills/visual-qa/SKILL.md +70 -63
  117. package/dist/skills/visual-qa/scripts/skill-doc-fields.test.ts +34 -0
  118. package/dist/tools/delegate-task/constants.d.ts +1 -1
  119. package/dist/tools/session-manager/constants.d.ts +1 -1
  120. package/dist/tools/session-manager/file-storage.d.ts +9 -2
  121. package/dist/tools/session-manager/sdk-storage.d.ts +19 -1
  122. package/dist/tools/session-manager/session-formatter.d.ts +3 -3
  123. package/dist/tools/session-manager/storage.d.ts +8 -2
  124. package/dist/tools/skill/mcp-capability-formatter.d.ts +1 -1
  125. package/dist/tools/skill/native-skills.d.ts +2 -2
  126. package/dist/tools/skill/skill-mcp-authority.d.ts +3 -0
  127. package/dist/tui.js +535 -100
  128. package/docs/reference/web-terminal-visual-qa.md +8 -0
  129. package/package.json +24 -16
  130. package/packages/lsp-core/src/lsp/client-wrapper.ts +4 -4
  131. package/packages/lsp-core/src/post-edit/not-installed.test.ts +2 -2
  132. package/packages/lsp-daemon/dist/cli.js +4 -4
  133. package/packages/lsp-daemon/dist/client.js +4 -4
  134. package/packages/lsp-daemon/dist/index.js +4 -4
  135. package/packages/lsp-daemon/package.json +3 -3
  136. package/packages/lsp-tools-mcp/dist/cli.js +4 -4
  137. package/packages/lsp-tools-mcp/dist/mcp.js +4 -4
  138. package/packages/lsp-tools-mcp/dist/tools.js +4 -4
  139. package/packages/lsp-tools-mcp/package.json +3 -3
  140. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  141. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +62 -21
  142. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  143. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -1
  145. package/packages/omo-codex/plugin/components/comment-checker/biome.json +1 -21
  146. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  147. package/packages/omo-codex/plugin/components/comment-checker/package.json +4 -4
  148. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  149. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  150. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +1 -21
  151. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +4 -4
  153. package/packages/omo-codex/plugin/components/lsp/biome.json +1 -21
  154. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  155. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +4 -4
  156. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  157. package/packages/omo-codex/plugin/components/lsp/package.json +4 -4
  158. package/packages/omo-codex/plugin/components/lsp/scripts/build-runtime.mjs +0 -1
  159. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-not-installed.test.ts +1 -1
  160. package/packages/omo-codex/plugin/components/rules/biome.json +1 -21
  161. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  162. package/packages/omo-codex/plugin/components/rules/package.json +4 -4
  163. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  164. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  165. package/packages/omo-codex/plugin/components/telemetry/biome.json +1 -21
  166. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +90 -1
  167. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +91 -1
  168. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  169. package/packages/omo-codex/plugin/components/telemetry/package.json +4 -4
  170. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +2 -2
  171. package/packages/omo-codex/plugin/components/ultrawork/biome.json +1 -21
  172. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  173. package/packages/omo-codex/plugin/components/ultrawork/package.json +4 -4
  174. package/packages/omo-codex/plugin/components/ulw-execute-continuation/biome.json +1 -21
  175. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  176. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  177. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +4 -4
  178. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -21
  179. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +1 -1
  180. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +7 -7
  181. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +5 -5
  182. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +1 -1
  183. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  184. package/packages/omo-codex/plugin/components/ulw-loop/package.json +4 -4
  185. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +1 -1
  186. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +5 -5
  187. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +1 -1
  188. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +2 -0
  189. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  190. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  191. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  192. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  193. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  194. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  195. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  196. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  197. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  198. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  199. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  200. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  201. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  202. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  203. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  204. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  205. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  206. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  207. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  208. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  209. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  210. package/packages/omo-codex/plugin/package-lock.json +12 -12
  211. package/packages/omo-codex/plugin/package.json +1 -1
  212. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +7 -7
  213. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +2 -0
  214. package/packages/omo-codex/plugin/skills/browser/SKILL.md +21 -22
  215. package/packages/omo-codex/plugin/skills/browser/references/commands.md +2 -9
  216. package/packages/omo-codex/plugin/skills/browser/references/install.md +1 -2
  217. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  218. package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +2 -2
  219. package/packages/omo-codex/plugin/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  220. package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +1 -1
  221. package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +1 -10
  222. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +79 -118
  223. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +75 -224
  224. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +32 -27
  225. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
  226. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  227. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  228. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  229. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  230. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  231. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  232. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  233. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  234. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  235. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  236. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  237. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  238. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  239. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  240. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  241. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  242. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  243. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  244. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  245. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  246. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  247. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  248. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
  249. package/packages/omo-codex/plugin/skills/programming/SKILL.md +10 -7
  250. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +10 -7
  251. package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +9 -23
  252. package/packages/omo-codex/plugin/skills/programming/references/typescript/oxc-lint.md +130 -0
  253. package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  254. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  255. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +20 -81
  256. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  257. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  258. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  259. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  260. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  261. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  262. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  263. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +14 -14
  264. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -1
  265. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +2 -2
  266. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
  267. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  268. package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +9 -3
  269. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
  270. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +7 -6
  271. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  272. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +51 -3
  273. package/packages/omo-codex/plugin/skills/ulw-research/scripts/claims-index.mjs +125 -0
  274. package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +68 -3
  275. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  276. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  277. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  278. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  279. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  280. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +1 -1
  281. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  282. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-text.mjs +1 -27
  283. package/packages/omo-codex/plugin/skills/ulw-research/scripts/lexicon.mjs +47 -0
  284. package/packages/omo-codex/plugin/skills/ulw-research/scripts/numerals.mjs +226 -0
  285. package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +2 -3
  286. package/packages/omo-codex/plugin/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  287. package/packages/omo-codex/plugin/skills/ulw-research/scripts/rational.mjs +139 -0
  288. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  289. package/packages/omo-codex/plugin/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  290. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  291. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  292. package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +105 -0
  293. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +71 -64
  294. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +4 -1
  295. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +6 -6
  296. package/packages/omo-codex/scripts/install-dist/install-local.mjs +152 -23
  297. package/packages/shared-skills/skills/browser/SKILL.md +21 -22
  298. package/packages/shared-skills/skills/browser/references/commands.md +2 -9
  299. package/packages/shared-skills/skills/browser/references/install.md +1 -2
  300. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  301. package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +2 -2
  302. package/packages/shared-skills/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  303. package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +1 -1
  304. package/packages/shared-skills/skills/browser/scripts/omowright.mjs +1 -10
  305. package/packages/shared-skills/skills/frontend/SKILL.md +79 -118
  306. package/packages/shared-skills/skills/frontend/references/design/README.md +75 -224
  307. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +32 -27
  308. package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
  309. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  310. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.test.ts +101 -0
  311. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  312. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.test.ts +50 -0
  313. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  314. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  315. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  316. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  317. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  318. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  319. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  320. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  321. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  322. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  323. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  324. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  325. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  326. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  327. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  328. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  329. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  330. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  331. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  332. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  333. package/packages/shared-skills/skills/programming/SKILL.md +10 -7
  334. package/packages/shared-skills/skills/programming/references/typescript/README.md +10 -7
  335. package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +9 -23
  336. package/packages/shared-skills/skills/programming/references/typescript/oxc-lint.md +130 -0
  337. package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  338. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  339. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.test.ts +162 -0
  340. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +20 -81
  341. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  342. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  343. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  344. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  345. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  346. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  347. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  348. package/packages/shared-skills/skills/refactor/SKILL.md +13 -13
  349. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  350. package/packages/shared-skills/skills/ulw-research/AGENTS.md +9 -3
  351. package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
  352. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +7 -6
  353. package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  354. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +51 -3
  355. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.mjs +125 -0
  356. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.test.ts +149 -0
  357. package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +68 -3
  358. package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +97 -12
  359. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +190 -0
  360. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  361. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +141 -0
  362. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  363. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.test.ts +43 -0
  364. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  365. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.test.ts +252 -0
  366. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  367. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.test.ts +179 -0
  368. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  369. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.test.ts +46 -0
  370. package/packages/shared-skills/skills/ulw-research/scripts/gates-context.test.ts +64 -0
  371. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +1 -1
  372. package/packages/shared-skills/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  373. package/packages/shared-skills/skills/ulw-research/scripts/gates-text.mjs +1 -27
  374. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.mjs +47 -0
  375. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.test.ts +57 -0
  376. package/packages/shared-skills/skills/ulw-research/scripts/numerals.mjs +226 -0
  377. package/packages/shared-skills/skills/ulw-research/scripts/numerals.test.ts +120 -0
  378. package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +2 -3
  379. package/packages/shared-skills/skills/ulw-research/scripts/outcome.test.ts +29 -0
  380. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  381. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.test.ts +86 -0
  382. package/packages/shared-skills/skills/ulw-research/scripts/rational.mjs +139 -0
  383. package/packages/shared-skills/skills/ulw-research/scripts/rational.test.ts +46 -0
  384. package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  385. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  386. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.test.ts +109 -0
  387. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/claim-graph.md +13 -0
  388. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-locked.md +17 -0
  389. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-pending.md +17 -0
  390. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  391. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.test.ts +73 -0
  392. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  393. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.test.ts +38 -0
  394. package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +105 -0
  395. package/packages/shared-skills/skills/ulw-research/scripts/units.test.ts +83 -0
  396. package/packages/shared-skills/skills/visual-qa/SKILL.md +70 -63
  397. package/packages/shared-skills/skills/visual-qa/scripts/skill-doc-fields.test.ts +34 -0
  398. package/script/qa/web-terminal-visual-qa.mjs +6 -2
  399. package/script/qa/xterm-live-terminal.mjs +26 -3
package/dist/tui.js CHANGED
@@ -2362,6 +2362,20 @@ var init_logger = __esm(() => {
2362
2362
  DEFAULT_MAX_LOG_FILE_SIZE_BYTES = 50 * 1024 * 1024;
2363
2363
  });
2364
2364
 
2365
+ // packages/utils/src/logging/product-identity.ts
2366
+ function createProductIdentity(input) {
2367
+ return {
2368
+ pluginName: input.pluginName,
2369
+ legacyPluginName: input.legacyPluginName,
2370
+ publishedPackageName: input.publishedPackageName,
2371
+ acceptedPackageNames: input.acceptedPackageNames ?? [input.publishedPackageName, input.pluginName],
2372
+ configBasename: input.configBasename,
2373
+ legacyConfigBasename: input.legacyConfigBasename,
2374
+ logFileName: input.logFileName,
2375
+ cacheDirName: input.cacheDirName
2376
+ };
2377
+ }
2378
+
2365
2379
  // packages/utils/src/logging/index.ts
2366
2380
  var init_logging = __esm(() => {
2367
2381
  init_logger();
@@ -2416,8 +2430,17 @@ var init_ast_grep = __esm(() => {
2416
2430
  // packages/utils/src/classify-path-environment.ts
2417
2431
  var init_classify_path_environment = () => {};
2418
2432
 
2433
+ // packages/utils/src/command-executor/home-directory.ts
2434
+ import { homedir } from "os";
2435
+ function getHomeDirectory() {
2436
+ return process.env.HOME || process.env.USERPROFILE || homedir();
2437
+ }
2438
+ var init_home_directory = () => {};
2439
+
2419
2440
  // packages/utils/src/command-executor.ts
2420
- var init_command_executor = () => {};
2441
+ var init_command_executor = __esm(() => {
2442
+ init_home_directory();
2443
+ });
2421
2444
 
2422
2445
  // packages/utils/src/git-worktree/index.ts
2423
2446
  var init_git_worktree = () => {};
@@ -2510,6 +2533,25 @@ var init_agent_names = __esm(() => {
2510
2533
  ]);
2511
2534
  });
2512
2535
 
2536
+ // packages/model-core/src/latest-models.ts
2537
+ var LATEST_MODEL_BY_FAMILY;
2538
+ var init_latest_models = __esm(() => {
2539
+ LATEST_MODEL_BY_FAMILY = {
2540
+ claudeOpus: "claude-opus-5-5",
2541
+ claudeSonnet: "claude-sonnet-5-5",
2542
+ claudeHaiku: "claude-haiku-5-5",
2543
+ claudeFable: "claude-fable-5-1",
2544
+ gptAstra: "gpt-6-astra",
2545
+ gptSol: "gpt-6.1-sol",
2546
+ gptSolFast: "gpt-6.1-sol-fast",
2547
+ gptLunaFast: "gpt-6-luna-fast",
2548
+ glm: "glm-5.3",
2549
+ glmFlash: "glm-5.3-flash",
2550
+ kimi: "kimi-k3",
2551
+ geminiPro: "gemini-4-argon"
2552
+ };
2553
+ });
2554
+
2513
2555
  // packages/utils/src/migration/agent-category.ts
2514
2556
  function configureMigrationCategoryDefaults(defaults) {
2515
2557
  categoryDefaults = defaults ?? {};
@@ -3346,17 +3388,18 @@ var init_file_reference_resolver = __esm(() => {
3346
3388
  // packages/model-core/src/agent-model-requirements.ts
3347
3389
  var AGENT_MODEL_REQUIREMENTS;
3348
3390
  var init_agent_model_requirements = __esm(() => {
3391
+ init_latest_models();
3349
3392
  AGENT_MODEL_REQUIREMENTS = {
3350
3393
  sisyphus: {
3351
3394
  fallbackChain: [
3352
3395
  {
3353
3396
  providers: ["anthropic", "github-copilot", "opencode"],
3354
- model: "claude-opus-5-5",
3397
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3355
3398
  variant: "max"
3356
3399
  },
3357
3400
  {
3358
3401
  providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode", "bailian-coding-plan", "moonshotai-cn", "firmware", "ollama-cloud", "aihubmix"],
3359
- model: "kimi-k3"
3402
+ model: LATEST_MODEL_BY_FAMILY.kimi
3360
3403
  },
3361
3404
  {
3362
3405
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
@@ -3390,7 +3433,7 @@ var init_agent_model_requirements = __esm(() => {
3390
3433
  { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "high" },
3391
3434
  {
3392
3435
  providers: ["google", "google-vertex", "opencode"],
3393
- model: "gemini-4-argon",
3436
+ model: LATEST_MODEL_BY_FAMILY.geminiPro,
3394
3437
  variant: "high"
3395
3438
  },
3396
3439
  {
@@ -3400,7 +3443,7 @@ var init_agent_model_requirements = __esm(() => {
3400
3443
  },
3401
3444
  {
3402
3445
  providers: ["anthropic", "github-copilot", "opencode"],
3403
- model: "claude-opus-5-5",
3446
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3404
3447
  variant: "max"
3405
3448
  },
3406
3449
  { providers: ["opencode-go"], model: "glm-5.2" }
@@ -3409,8 +3452,8 @@ var init_agent_model_requirements = __esm(() => {
3409
3452
  librarian: {
3410
3453
  fallbackChain: [
3411
3454
  { providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
3412
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
3413
- { providers: ["anthropic", "github-copilot"], model: "claude-haiku-5-5", variant: "medium" },
3455
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptLunaFast, variant: "low" },
3456
+ { providers: ["anthropic", "github-copilot"], model: LATEST_MODEL_BY_FAMILY.claudeHaiku, variant: "medium" },
3414
3457
  { providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
3415
3458
  { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
3416
3459
  { providers: ["opencode-go"], model: "minimax-m2.7" }
@@ -3419,8 +3462,8 @@ var init_agent_model_requirements = __esm(() => {
3419
3462
  explore: {
3420
3463
  fallbackChain: [
3421
3464
  { providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
3422
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
3423
- { providers: ["anthropic", "github-copilot"], model: "claude-haiku-5-5", variant: "medium" },
3465
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptLunaFast, variant: "low" },
3466
+ { providers: ["anthropic", "github-copilot"], model: LATEST_MODEL_BY_FAMILY.claudeHaiku, variant: "medium" },
3424
3467
  { providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
3425
3468
  { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
3426
3469
  { providers: ["opencode-go"], model: "minimax-m2.7" }
@@ -3429,7 +3472,7 @@ var init_agent_model_requirements = __esm(() => {
3429
3472
  "multimodal-looker": {
3430
3473
  fallbackChain: [
3431
3474
  { providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "low" },
3432
- { providers: ["opencode-go"], model: "kimi-k3" },
3475
+ { providers: ["opencode-go"], model: LATEST_MODEL_BY_FAMILY.kimi },
3433
3476
  { providers: ["zai-coding-plan"], model: "glm-4.6v" },
3434
3477
  { providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"], model: "gpt-5-nano" }
3435
3478
  ]
@@ -3438,17 +3481,17 @@ var init_agent_model_requirements = __esm(() => {
3438
3481
  fallbackChain: [
3439
3482
  {
3440
3483
  providers: ["anthropic", "github-copilot", "opencode"],
3441
- model: "claude-fable-5-1",
3484
+ model: LATEST_MODEL_BY_FAMILY.claudeFable,
3442
3485
  variant: "xhigh"
3443
3486
  },
3444
3487
  {
3445
3488
  providers: ["anthropic", "github-copilot", "opencode"],
3446
- model: "claude-opus-5-5",
3489
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3447
3490
  variant: "max"
3448
3491
  },
3449
3492
  {
3450
3493
  providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode"],
3451
- model: "kimi-k3",
3494
+ model: LATEST_MODEL_BY_FAMILY.kimi,
3452
3495
  variant: "max"
3453
3496
  }
3454
3497
  ]
@@ -3457,34 +3500,34 @@ var init_agent_model_requirements = __esm(() => {
3457
3500
  fallbackChain: [
3458
3501
  {
3459
3502
  providers: ["anthropic", "github-copilot", "opencode"],
3460
- model: "claude-fable-5-1",
3503
+ model: LATEST_MODEL_BY_FAMILY.claudeFable,
3461
3504
  variant: "max"
3462
3505
  },
3463
3506
  {
3464
3507
  providers: ["anthropic", "github-copilot", "opencode"],
3465
- model: "claude-opus-5-5",
3508
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3466
3509
  variant: "max"
3467
3510
  },
3468
3511
  {
3469
3512
  providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode"],
3470
- model: "kimi-k3",
3513
+ model: LATEST_MODEL_BY_FAMILY.kimi,
3471
3514
  variant: "max"
3472
3515
  }
3473
3516
  ]
3474
3517
  },
3475
3518
  momus: {
3476
3519
  fallbackChain: [
3477
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "xhigh" },
3478
- { providers: ["github-copilot"], model: "gpt-6-astra", variant: "high" },
3479
- { providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "high" },
3520
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "xhigh" },
3521
+ { providers: ["github-copilot"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "high" },
3522
+ { providers: ["openai", "chatgpt-subscription", "opencode"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "high" },
3480
3523
  {
3481
3524
  providers: ["anthropic", "github-copilot", "opencode"],
3482
- model: "claude-opus-5-5",
3525
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3483
3526
  variant: "max"
3484
3527
  },
3485
3528
  {
3486
3529
  providers: ["google", "google-vertex", "opencode"],
3487
- model: "gemini-4-argon",
3530
+ model: LATEST_MODEL_BY_FAMILY.geminiPro,
3488
3531
  variant: "high"
3489
3532
  },
3490
3533
  {
@@ -3498,7 +3541,7 @@ var init_agent_model_requirements = __esm(() => {
3498
3541
  atlas: {
3499
3542
  fallbackChain: [
3500
3543
  { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
3501
- { providers: ["opencode-go"], model: "kimi-k3" },
3544
+ { providers: ["opencode-go"], model: LATEST_MODEL_BY_FAMILY.kimi },
3502
3545
  {
3503
3546
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3504
3547
  model: "gpt-5.6-sol",
@@ -3512,7 +3555,7 @@ var init_agent_model_requirements = __esm(() => {
3512
3555
  "sisyphus-junior": {
3513
3556
  fallbackChain: [
3514
3557
  { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
3515
- { providers: ["opencode-go"], model: "kimi-k3" },
3558
+ { providers: ["opencode-go"], model: LATEST_MODEL_BY_FAMILY.kimi },
3516
3559
  {
3517
3560
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3518
3561
  model: "gpt-5.6-sol",
@@ -3530,32 +3573,33 @@ var init_agent_model_requirements = __esm(() => {
3530
3573
  // packages/model-core/src/category-model-requirements.ts
3531
3574
  var CATEGORY_MODEL_REQUIREMENTS;
3532
3575
  var init_category_model_requirements = __esm(() => {
3576
+ init_latest_models();
3533
3577
  CATEGORY_MODEL_REQUIREMENTS = {
3534
3578
  "visual-engineering": {
3535
3579
  fallbackChain: [
3536
- { providers: ["google", "google-vertex", "opencode"], model: "gemini-4-argon", variant: "low" },
3580
+ { providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
3537
3581
  {
3538
3582
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3539
- model: "claude-fable-5-1",
3583
+ model: LATEST_MODEL_BY_FAMILY.claudeFable,
3540
3584
  variant: "max"
3541
3585
  },
3542
3586
  {
3543
3587
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3544
- model: "claude-opus-5-5",
3588
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3545
3589
  variant: "max"
3546
3590
  },
3547
3591
  {
3548
3592
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
3549
- model: "kimi-k3",
3593
+ model: LATEST_MODEL_BY_FAMILY.kimi,
3550
3594
  variant: "max"
3551
3595
  }
3552
3596
  ]
3553
3597
  },
3554
3598
  ultrabrain: {
3555
3599
  fallbackChain: [
3556
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "max" },
3557
- { providers: ["github-copilot"], model: "gpt-6-astra", variant: "max" },
3558
- { providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "max" },
3600
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "max" },
3601
+ { providers: ["github-copilot"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "max" },
3602
+ { providers: ["openai", "chatgpt-subscription", "opencode"], model: LATEST_MODEL_BY_FAMILY.gptAstra, variant: "max" },
3559
3603
  { providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-sol", variant: "max" },
3560
3604
  { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "max" },
3561
3605
  { providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "max" }
@@ -3563,8 +3607,8 @@ var init_category_model_requirements = __esm(() => {
3563
3607
  },
3564
3608
  "deep-low": {
3565
3609
  fallbackChain: [
3566
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6.1-sol", variant: "medium" },
3567
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6.1-sol-fast", variant: "medium" },
3610
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptSol, variant: "medium" },
3611
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptSolFast, variant: "medium" },
3568
3612
  {
3569
3613
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3570
3614
  model: "gpt-5.6-sol",
@@ -3577,7 +3621,7 @@ var init_category_model_requirements = __esm(() => {
3577
3621
  fallbackChain: [
3578
3622
  {
3579
3623
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3580
- model: "gpt-6-astra",
3624
+ model: LATEST_MODEL_BY_FAMILY.gptAstra,
3581
3625
  variant: "high"
3582
3626
  }
3583
3627
  ]
@@ -3586,27 +3630,27 @@ var init_category_model_requirements = __esm(() => {
3586
3630
  fallbackChain: [
3587
3631
  {
3588
3632
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3589
- model: "claude-fable-5-1",
3633
+ model: LATEST_MODEL_BY_FAMILY.claudeFable,
3590
3634
  variant: "max"
3591
3635
  },
3592
3636
  {
3593
3637
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3594
- model: "claude-opus-5-5",
3638
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3595
3639
  variant: "max"
3596
3640
  },
3597
3641
  {
3598
3642
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
3599
- model: "kimi-k3",
3643
+ model: LATEST_MODEL_BY_FAMILY.kimi,
3600
3644
  variant: "max"
3601
3645
  }
3602
3646
  ]
3603
3647
  },
3604
3648
  quick: {
3605
3649
  fallbackChain: [
3606
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
3650
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptLunaFast, variant: "low" },
3607
3651
  {
3608
3652
  providers: ["anthropic", "anthropic-api", "github-copilot"],
3609
- model: "claude-haiku-5-5",
3653
+ model: LATEST_MODEL_BY_FAMILY.claudeHaiku,
3610
3654
  variant: "medium"
3611
3655
  },
3612
3656
  { providers: ["deepseek"], model: "deepseek-flash", variant: "off" },
@@ -3618,7 +3662,7 @@ var init_category_model_requirements = __esm(() => {
3618
3662
  { providers: ["opencode-go"], model: "minimax-m3", variant: "max" },
3619
3663
  { providers: ["opencode-go"], model: "minimax-m2.7", variant: "max" },
3620
3664
  { providers: ["xai"], model: "grok-4.20-0309-non-reasoning" },
3621
- { providers: ["zai-coding-plan"], model: "glm-5.3-flash", variant: "low" },
3665
+ { providers: ["zai-coding-plan"], model: LATEST_MODEL_BY_FAMILY.glmFlash, variant: "low" },
3622
3666
  { providers: ["xiaomi"], model: "mimo-v2.6-flash", variant: "low" }
3623
3667
  ]
3624
3668
  },
@@ -3626,13 +3670,13 @@ var init_category_model_requirements = __esm(() => {
3626
3670
  fallbackChain: [
3627
3671
  {
3628
3672
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3629
- model: "claude-sonnet-5-5",
3673
+ model: LATEST_MODEL_BY_FAMILY.claudeSonnet,
3630
3674
  variant: "medium"
3631
3675
  },
3632
3676
  { providers: ["xiaomi", "opencode-go"], model: "mimo-v2.6-pro", variant: "max" },
3633
3677
  { providers: ["xai", "github-copilot", "opencode-go"], model: "grok-4.7", variant: "xhigh" },
3634
- { providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "high" },
3635
- { providers: ["openai", "chatgpt-subscription"], model: "gpt-6.1-sol", variant: "medium" },
3678
+ { providers: ["zai-coding-plan", "opencode-go"], model: LATEST_MODEL_BY_FAMILY.glm, variant: "high" },
3679
+ { providers: ["openai", "chatgpt-subscription"], model: LATEST_MODEL_BY_FAMILY.gptSol, variant: "medium" },
3636
3680
  {
3637
3681
  providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
3638
3682
  model: "gpt-5.6-sol",
@@ -3656,13 +3700,13 @@ var init_category_model_requirements = __esm(() => {
3656
3700
  fallbackChain: [
3657
3701
  {
3658
3702
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3659
- model: "claude-opus-5-5",
3703
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3660
3704
  variant: "medium"
3661
3705
  },
3662
- { providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
3706
+ { providers: ["zai-coding-plan", "opencode-go"], model: LATEST_MODEL_BY_FAMILY.glm, variant: "max" },
3663
3707
  {
3664
3708
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
3665
- model: "kimi-k3",
3709
+ model: LATEST_MODEL_BY_FAMILY.kimi,
3666
3710
  variant: "max"
3667
3711
  }
3668
3712
  ]
@@ -3670,10 +3714,10 @@ var init_category_model_requirements = __esm(() => {
3670
3714
  writing: {
3671
3715
  requiresAnyModel: true,
3672
3716
  fallbackChain: [
3673
- { providers: ["google", "google-vertex", "opencode"], model: "gemini-4-argon", variant: "low" },
3717
+ { providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
3674
3718
  {
3675
3719
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
3676
- model: "claude-opus-5-5",
3720
+ model: LATEST_MODEL_BY_FAMILY.claudeOpus,
3677
3721
  variant: "low"
3678
3722
  },
3679
3723
  {
@@ -4942,6 +4986,7 @@ var MODELS_DEV_SOURCE_URL = "https://models.dev/api.json";
4942
4986
  var init_src2 = __esm(() => {
4943
4987
  init_model_resolver();
4944
4988
  init_model_requirements();
4989
+ init_latest_models();
4945
4990
  init_model_family_detectors();
4946
4991
  init_model_capability_aliases();
4947
4992
  init_model_capability_heuristics();
@@ -5179,16 +5224,17 @@ Approach:
5179
5224
  - This is for tasks requiring exceptional creativity
5180
5225
  </Category_Context>`, GOOGLE_CATEGORIES;
5181
5226
  var init_google_categories = __esm(() => {
5227
+ init_latest_models();
5182
5228
  GOOGLE_CATEGORIES = [
5183
5229
  {
5184
5230
  name: "visual-engineering",
5185
- config: { model: "google/gemini-4-argon", variant: "low" },
5231
+ config: { model: `google/${LATEST_MODEL_BY_FAMILY.geminiPro}`, variant: "low" },
5186
5232
  description: "Visual design, UI/UX, frontend, styling, animation, and design systems",
5187
5233
  promptAppend: VISUAL_CATEGORY_PROMPT_APPEND
5188
5234
  },
5189
5235
  {
5190
5236
  name: "artistry",
5191
- config: { model: "anthropic/claude-fable-5-1", variant: "max" },
5237
+ config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeFable}`, variant: "max" },
5192
5238
  description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
5193
5239
  promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
5194
5240
  }
@@ -5222,10 +5268,11 @@ ANTI-AI-SLOP RULES (NON-NEGOTIABLE):
5222
5268
  - Write like a human, not a corporate template.
5223
5269
  </Category_Context>`, KIMI_CATEGORIES;
5224
5270
  var init_kimi_categories = __esm(() => {
5271
+ init_latest_models();
5225
5272
  KIMI_CATEGORIES = [
5226
5273
  {
5227
5274
  name: "writing",
5228
- config: { model: "google/gemini-4-argon", variant: "low" },
5275
+ config: { model: `google/${LATEST_MODEL_BY_FAMILY.geminiPro}`, variant: "low" },
5229
5276
  description: "Documentation, prose, technical writing",
5230
5277
  promptAppend: WRITING_CATEGORY_PROMPT_APPEND
5231
5278
  }
@@ -5360,21 +5407,23 @@ You are working on tasks that don't fit specific categories but require moderate
5360
5407
  </Category_Context>`, 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>
5361
5408
  <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
5362
5409
  You are working on tasks that don't fit specific categories but require substantial effort.
5363
- </Category_Context>`, 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>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
5410
+ </Category_Context>`, 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>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL, OPENAI_CATEGORIES;
5364
5411
  var init_openai_categories = __esm(() => {
5365
5412
  init_types();
5366
- DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
5413
+ init_latest_models();
5414
+ DEEP_LOW_GATE_MODELS = [LATEST_MODEL_BY_FAMILY.gptSol, LATEST_MODEL_BY_FAMILY.gptSolFast, "gpt-5.6-sol-fast", "gpt-5.6-sol"];
5415
+ DEEP_HIGH_GATE_MODEL = LATEST_MODEL_BY_FAMILY.gptAstra;
5367
5416
  OPENAI_CATEGORIES = [
5368
5417
  {
5369
5418
  name: "ultrabrain",
5370
- config: { model: "openai/gpt-6-astra", variant: "max" },
5419
+ config: { model: `openai/${LATEST_MODEL_BY_FAMILY.gptAstra}`, variant: "max" },
5371
5420
  description: "Use ONLY for genuinely hard, logic-heavy tasks. Give clear goals only, not step-by-step instructions.",
5372
5421
  promptAppend: ULTRABRAIN_CATEGORY_PROMPT_APPEND,
5373
5422
  resolvePromptAppend: resolveUltrabrainCategoryPromptAppend
5374
5423
  },
5375
5424
  {
5376
5425
  name: "deep-low",
5377
- config: { model: "openai/gpt-6.1-sol", variant: "medium" },
5426
+ config: { model: `openai/${LATEST_MODEL_BY_FAMILY.gptSol}`, variant: "medium" },
5378
5427
  description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
5379
5428
  callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
5380
5429
  promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
@@ -5383,7 +5432,7 @@ var init_openai_categories = __esm(() => {
5383
5432
  },
5384
5433
  {
5385
5434
  name: "deep-high",
5386
- config: { model: "openai/gpt-6-astra", variant: "high" },
5435
+ config: { model: `openai/${LATEST_MODEL_BY_FAMILY.gptAstra}`, variant: "high" },
5387
5436
  description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
5388
5437
  callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
5389
5438
  promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
@@ -5392,21 +5441,21 @@ var init_openai_categories = __esm(() => {
5392
5441
  },
5393
5442
  {
5394
5443
  name: "quick",
5395
- config: { model: "openai/gpt-6-luna-fast", variant: "low" },
5444
+ config: { model: `openai/${LATEST_MODEL_BY_FAMILY.gptLunaFast}`, variant: "low" },
5396
5445
  description: "Trivial tasks - single file changes, typo fixes, simple modifications",
5397
5446
  callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
5398
5447
  promptAppend: QUICK_CATEGORY_PROMPT_APPEND
5399
5448
  },
5400
5449
  {
5401
5450
  name: "unspecified-low",
5402
- config: { model: "anthropic/claude-sonnet-5-5", variant: "medium" },
5451
+ config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeSonnet}`, variant: "medium" },
5403
5452
  description: "Tasks that don't fit other categories, low effort required",
5404
5453
  callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
5405
5454
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
5406
5455
  },
5407
5456
  {
5408
5457
  name: "unspecified-high",
5409
- config: { model: "anthropic/claude-opus-5-5", variant: "medium" },
5458
+ config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeOpus}`, variant: "medium" },
5410
5459
  description: "Tasks that don't fit other categories, high effort required",
5411
5460
  callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
5412
5461
  promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
@@ -5456,7 +5505,7 @@ var init_migration2 = __esm(() => {
5456
5505
 
5457
5506
  // packages/omo-opencode/src/shared/opencode-config-dir.ts
5458
5507
  import { existsSync as existsSync2, realpathSync } from "fs";
5459
- import { homedir as homedir2 } from "os";
5508
+ import { homedir as homedir3 } from "os";
5460
5509
  import { join as join3, posix, resolve, win32 } from "path";
5461
5510
  function isDevBuild(version) {
5462
5511
  if (!version)
@@ -5467,14 +5516,14 @@ function getTauriConfigDir(identifier) {
5467
5516
  const platform = process.platform;
5468
5517
  switch (platform) {
5469
5518
  case "darwin":
5470
- return join3(homedir2(), "Library", "Application Support", identifier);
5519
+ return join3(homedir3(), "Library", "Application Support", identifier);
5471
5520
  case "win32": {
5472
- const appData = process.env.APPDATA || join3(homedir2(), "AppData", "Roaming");
5521
+ const appData = process.env.APPDATA || join3(homedir3(), "AppData", "Roaming");
5473
5522
  return win32.join(appData, identifier);
5474
5523
  }
5475
5524
  case "linux":
5476
5525
  default: {
5477
- const xdgConfig = process.env.XDG_CONFIG_HOME || join3(homedir2(), ".config");
5526
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join3(homedir3(), ".config");
5478
5527
  return join3(xdgConfig, identifier);
5479
5528
  }
5480
5529
  }
@@ -5518,7 +5567,7 @@ function getWslLinuxHomeDir(windowsConfigRoot) {
5518
5567
  function getCliDefaultConfigDir() {
5519
5568
  const envXdgConfig = process.env.XDG_CONFIG_HOME?.trim();
5520
5569
  const shouldIgnoreWindowsXdg = envXdgConfig !== undefined && envXdgConfig.length > 0 && isWslEnvironment() && isWindowsUserConfigRoot(envXdgConfig);
5521
- const xdgConfig = shouldIgnoreWindowsXdg ? posix.join(getWslLinuxHomeDir(envXdgConfig) ?? "/home", ".config") : envXdgConfig || join3(homedir2(), ".config");
5570
+ const xdgConfig = shouldIgnoreWindowsXdg ? posix.join(getWslLinuxHomeDir(envXdgConfig) ?? "/home", ".config") : envXdgConfig || join3(homedir3(), ".config");
5522
5571
  const configDir = isWslEnvironment() ? posix.join(xdgConfig, "opencode") : join3(xdgConfig, "opencode");
5523
5572
  return resolveConfigPath(configDir);
5524
5573
  }
@@ -63697,10 +63746,11 @@ var ANTHROPIC_PREFIX = "anthropic/", CLAUDE_CODE_ALIAS_MAP;
63697
63746
  var init_claude_model_mapper = __esm(() => {
63698
63747
  init_model_format_normalizer();
63699
63748
  init_model_normalization2();
63749
+ init_latest_models();
63700
63750
  CLAUDE_CODE_ALIAS_MAP = new Map([
63701
- ["sonnet", `${ANTHROPIC_PREFIX}claude-sonnet-4-6`],
63702
- ["opus", `${ANTHROPIC_PREFIX}claude-opus-5-5`],
63703
- ["haiku", `${ANTHROPIC_PREFIX}claude-haiku-5-5`]
63751
+ ["sonnet", `${ANTHROPIC_PREFIX}${LATEST_MODEL_BY_FAMILY.claudeSonnet}`],
63752
+ ["opus", `${ANTHROPIC_PREFIX}${LATEST_MODEL_BY_FAMILY.claudeOpus}`],
63753
+ ["haiku", `${ANTHROPIC_PREFIX}${LATEST_MODEL_BY_FAMILY.claudeHaiku}`]
63704
63754
  ]);
63705
63755
  });
63706
63756
 
@@ -70090,7 +70140,7 @@ var init_git_master = __esm(() => {
70090
70140
  OmoGitMasterSettingsLayerSchema = object(OmoGitMasterSettingsShape).partial().strict();
70091
70141
  OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
70092
70142
  commit_footer: union([boolean2(), string2()]).default(false),
70093
- include_co_authored_by: boolean2().default(false),
70143
+ include_co_authored_by: boolean2().default(true),
70094
70144
  git_env_prefix: GitEnvPrefixSchema.default("GIT_MASTER=1")
70095
70145
  }).strict();
70096
70146
  });
@@ -70124,7 +70174,7 @@ var init_memory_agreements = __esm(() => {
70124
70174
  });
70125
70175
 
70126
70176
  // packages/omo-config-core/src/schema/memory.ts
70127
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemoryAutoIdentitySchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
70177
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryProjectScopeSchema, OmoMemoryProjectScopeLayerSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemoryAutoIdentitySchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
70128
70178
  var init_memory = __esm(() => {
70129
70179
  init_zod();
70130
70180
  init_memory_agreements();
@@ -70164,6 +70214,14 @@ var init_memory = __esm(() => {
70164
70214
  tool_budget: number2().int().positive().default(8),
70165
70215
  query_expansion: boolean2().default(false)
70166
70216
  }).strict();
70217
+ OmoMemoryProjectScopeSchema = object({
70218
+ nudge: boolean2().default(true),
70219
+ recall: boolean2().default(true)
70220
+ }).strict();
70221
+ OmoMemoryProjectScopeLayerSchema = object({
70222
+ nudge: boolean2().optional(),
70223
+ recall: boolean2().optional()
70224
+ }).strict();
70167
70225
  OmoMemoryNudgeSchema = object({
70168
70226
  enabled: boolean2().default(true),
70169
70227
  every_user_turns: number2().int().min(1).default(10)
@@ -70319,6 +70377,7 @@ var init_memory = __esm(() => {
70319
70377
  tool_budget: 8,
70320
70378
  query_expansion: false
70321
70379
  }),
70380
+ project_scope: OmoMemoryProjectScopeSchema.default({ nudge: true, recall: true }),
70322
70381
  projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory: 40, max_bytes: 24576 }),
70323
70382
  compile_warn_tokens: number2().int().positive().default(30000),
70324
70383
  agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
@@ -70338,6 +70397,7 @@ var init_memory = __esm(() => {
70338
70397
  sync: OmoMemorySyncLayerSchema.optional(),
70339
70398
  search: OmoMemorySearchLayerSchema.optional(),
70340
70399
  recall: OmoMemoryRecallLayerSchema.optional(),
70400
+ project_scope: OmoMemoryProjectScopeLayerSchema.optional(),
70341
70401
  projection: OmoMemoryProjectionLayerSchema.optional(),
70342
70402
  compile_warn_tokens: number2().int().positive().optional(),
70343
70403
  agents: record(string2(), OmoMemoryAgentOverridesSchema).optional()
@@ -70635,7 +70695,8 @@ var OmoTelemetrySettingsShape, OmoTelemetrySettingsLayerSchema, OmoTelemetrySett
70635
70695
  var init_telemetry = __esm(() => {
70636
70696
  init_zod();
70637
70697
  OmoTelemetrySettingsShape = {
70638
- enabled: boolean2()
70698
+ enabled: boolean2(),
70699
+ rawTurnSampleRate: number2().min(0).max(1)
70639
70700
  };
70640
70701
  OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
70641
70702
  OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
@@ -70662,11 +70723,24 @@ var init_format_on_mutation = __esm(() => {
70662
70723
  }).strict();
70663
70724
  });
70664
70725
 
70665
- // packages/omo-config-core/src/schema/gateway.ts
70666
- var OmoGatewaySectionSchema;
70667
- var init_gateway = __esm(() => {
70726
+ // packages/omo-config-core/src/schema/dori.ts
70727
+ var OmoDoriSectionSchema;
70728
+ var init_dori = __esm(() => {
70668
70729
  init_zod();
70669
- OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surface gateway settings, owned and validated by a separately installed gateway package. omo accepts the key and never reads it.");
70730
+ OmoDoriSectionSchema = record(string2(), unknown()).describe("Chat-surface dori settings, owned and validated by a separately installed dori package. omo accepts the key and never reads it.");
70731
+ });
70732
+
70733
+ // packages/omo-config-core/src/schema/provenance.ts
70734
+ var OmoProvenanceSettingsSchema;
70735
+ var init_provenance = __esm(() => {
70736
+ init_zod();
70737
+ OmoProvenanceSettingsSchema = object({
70738
+ workspaces: array(object({
70739
+ name: string2().trim().min(1).regex(/\S/),
70740
+ git_owners: array(string2().trim().min(1).regex(/\S/)).optional(),
70741
+ paths: array(string2().trim().min(1).regex(/\S/)).optional()
70742
+ }).strict()).optional()
70743
+ }).strict();
70670
70744
  });
70671
70745
 
70672
70746
  // packages/omo-config-core/src/schema/config.ts
@@ -70685,13 +70759,15 @@ var init_config = __esm(() => {
70685
70759
  init_team();
70686
70760
  init_telemetry();
70687
70761
  init_format_on_mutation();
70688
- init_gateway();
70762
+ init_dori();
70763
+ init_provenance();
70689
70764
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
70690
70765
  OmoDisabledSkillsSchema = array(string2());
70691
70766
  OmoExcludedModelsSchema = array(string2());
70692
70767
  OmoTypedHarnessConfigSchema = object({
70768
+ provenance: OmoProvenanceSettingsSchema.optional(),
70693
70769
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70694
- gateway: OmoGatewaySectionSchema.optional(),
70770
+ dori: OmoDoriSectionSchema.optional(),
70695
70771
  categories: OmoCategoriesConfigSchema.optional(),
70696
70772
  agents: OmoAgentsConfigSchema.optional(),
70697
70773
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -70708,7 +70784,9 @@ var init_config = __esm(() => {
70708
70784
  exclude_models: OmoExcludedModelsSchema.optional()
70709
70785
  }).strict();
70710
70786
  OmoConfigProfileSchema = object({
70787
+ provenance: OmoProvenanceSettingsSchema.optional(),
70711
70788
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70789
+ dori: OmoDoriSectionSchema.optional(),
70712
70790
  categories: OmoCategoriesConfigSchema.optional(),
70713
70791
  agents: OmoAgentsConfigSchema.optional(),
70714
70792
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -70729,8 +70807,9 @@ var init_config = __esm(() => {
70729
70807
  "[codex]": OmoTypedHarnessConfigSchema.optional()
70730
70808
  }).strict();
70731
70809
  OmoConfigSchema = object({
70810
+ provenance: OmoProvenanceSettingsSchema.optional(),
70732
70811
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
70733
- gateway: OmoGatewaySectionSchema.optional(),
70812
+ dori: OmoDoriSectionSchema.optional(),
70734
70813
  $schema: string2().optional(),
70735
70814
  categories: OmoCategoriesConfigSchema.optional(),
70736
70815
  agents: OmoAgentsConfigSchema.optional(),
@@ -70755,8 +70834,9 @@ var init_config = __esm(() => {
70755
70834
  legacy_migrations: record(string2(), unknown()).optional()
70756
70835
  }).strict();
70757
70836
  OmoConfigLayerSchema = object({
70837
+ provenance: OmoProvenanceSettingsSchema.optional(),
70758
70838
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70759
- gateway: OmoGatewaySectionSchema.optional(),
70839
+ dori: OmoDoriSectionSchema.optional(),
70760
70840
  $schema: string2().optional(),
70761
70841
  categories: OmoCategoriesConfigSchema.optional(),
70762
70842
  agents: OmoAgentsConfigSchema.optional(),
@@ -70892,6 +70972,9 @@ var init_legacy_harness_names = __esm(() => {
70892
70972
  init_harness();
70893
70973
  });
70894
70974
 
70975
+ // packages/omo-config-core/src/schema/legacy-dori-section.ts
70976
+ var init_legacy_dori_section = () => {};
70977
+
70895
70978
  // packages/omo-config-core/src/schema/index.ts
70896
70979
  var init_schema = __esm(() => {
70897
70980
  init_agent();
@@ -70899,15 +70982,17 @@ var init_schema = __esm(() => {
70899
70982
  init_config();
70900
70983
  init_fallback_models();
70901
70984
  init_format_on_mutation();
70902
- init_gateway();
70985
+ init_dori();
70903
70986
  init_git_master();
70904
70987
  init_harness();
70905
70988
  init_legacy_category_names();
70906
70989
  init_legacy_harness_names();
70990
+ init_legacy_dori_section();
70907
70991
  init_memory();
70908
70992
  init_model_catalog();
70909
70993
  init_model_profile();
70910
70994
  init_model_ref();
70995
+ init_provenance();
70911
70996
  init_side_panel();
70912
70997
  init_task();
70913
70998
  init_team();
@@ -72016,6 +72101,323 @@ var init_shared = __esm(() => {
72016
72101
  init_legacy_workspace_migration();
72017
72102
  init_replace_tool_args();
72018
72103
  });
72104
+ // packages/skills-loader-core/src/shared/skill-path-resolver.ts
72105
+ var init_skill_path_resolver3 = __esm(() => {
72106
+ init_skill_path_resolver();
72107
+ });
72108
+ // packages/shared-skills/index.mjs
72109
+ import { existsSync as existsSync8 } from "fs";
72110
+ import { fileURLToPath as fileURLToPath2 } from "url";
72111
+ function sharedSkillsRootPath() {
72112
+ const candidates = SKILLS_PROBE_SPECIFIERS.map((specifier) => fileURLToPath2(new URL(specifier, import.meta.url)));
72113
+ return candidates.find((candidate) => existsSync8(candidate)) ?? candidates[0];
72114
+ }
72115
+ var SKILLS_PROBE_SPECIFIERS;
72116
+ var init_shared_skills = __esm(() => {
72117
+ SKILLS_PROBE_SPECIFIERS = ["./skills/", "../skills/", "../../skills/"];
72118
+ });
72119
+
72120
+ // packages/skills-loader-core/src/shared/claude-config-dir.ts
72121
+ import { join as join13 } from "path";
72122
+ function getClaudeConfigDir() {
72123
+ const envConfigDir = process.env.CLAUDE_CONFIG_DIR;
72124
+ if (envConfigDir) {
72125
+ return envConfigDir;
72126
+ }
72127
+ return join13(getHomeDirectory(), ".claude");
72128
+ }
72129
+ var init_claude_config_dir2 = __esm(() => {
72130
+ init_src();
72131
+ });
72132
+
72133
+ // packages/skills-loader-core/src/shared/plugin-identity.ts
72134
+ var PRODUCT_IDENTITY, PLUGIN_NAME2, LEGACY_PLUGIN_NAME2, PUBLISHED_PACKAGE_NAME2, CONFIG_BASENAME, LEGACY_CONFIG_BASENAME, LOG_FILENAME3, CACHE_DIR_NAME2;
72135
+ var init_plugin_identity2 = __esm(() => {
72136
+ init_src();
72137
+ PRODUCT_IDENTITY = createProductIdentity({
72138
+ pluginName: "oh-my-openagent",
72139
+ legacyPluginName: "oh-my-opencode",
72140
+ publishedPackageName: "oh-my-opencode",
72141
+ configBasename: "oh-my-openagent",
72142
+ legacyConfigBasename: "oh-my-opencode",
72143
+ logFileName: "oh-my-opencode.log",
72144
+ cacheDirName: "oh-my-opencode"
72145
+ });
72146
+ PLUGIN_NAME2 = PRODUCT_IDENTITY.pluginName;
72147
+ LEGACY_PLUGIN_NAME2 = PRODUCT_IDENTITY.legacyPluginName;
72148
+ PUBLISHED_PACKAGE_NAME2 = PRODUCT_IDENTITY.publishedPackageName;
72149
+ CONFIG_BASENAME = PRODUCT_IDENTITY.configBasename;
72150
+ LEGACY_CONFIG_BASENAME = PRODUCT_IDENTITY.legacyConfigBasename;
72151
+ LOG_FILENAME3 = PRODUCT_IDENTITY.logFileName;
72152
+ CACHE_DIR_NAME2 = PRODUCT_IDENTITY.cacheDirName;
72153
+ });
72154
+
72155
+ // packages/skills-loader-core/src/shared/opencode-config-dir.ts
72156
+ import { existsSync as existsSync9, realpathSync as realpathSync5 } from "fs";
72157
+ import { homedir as homedir5 } from "os";
72158
+ import { join as join14, posix as posix3, resolve as resolve5, win32 as win322 } from "path";
72159
+ function isDevBuild2(version) {
72160
+ if (!version)
72161
+ return false;
72162
+ return version.includes("-dev") || version.includes(".dev");
72163
+ }
72164
+ function getTauriConfigDir2(identifier) {
72165
+ const platform = process.platform;
72166
+ switch (platform) {
72167
+ case "darwin":
72168
+ return join14(homedir5(), "Library", "Application Support", identifier);
72169
+ case "win32": {
72170
+ const appData = process.env.APPDATA || join14(homedir5(), "AppData", "Roaming");
72171
+ return win322.join(appData, identifier);
72172
+ }
72173
+ case "linux":
72174
+ default: {
72175
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join14(homedir5(), ".config");
72176
+ return join14(xdgConfig, identifier);
72177
+ }
72178
+ }
72179
+ }
72180
+ function resolveConfigPath2(pathValue) {
72181
+ if (isWslEnvironment2() && pathValue.startsWith("/")) {
72182
+ return posix3.normalize(pathValue);
72183
+ }
72184
+ const resolvedPath = resolve5(pathValue);
72185
+ if (!existsSync9(resolvedPath))
72186
+ return resolvedPath;
72187
+ try {
72188
+ return realpathSync5(resolvedPath);
72189
+ } catch (error) {
72190
+ if (error instanceof Error) {
72191
+ return resolvedPath;
72192
+ }
72193
+ return resolvedPath;
72194
+ }
72195
+ }
72196
+ function isWslEnvironment2() {
72197
+ return process.platform === "linux" && (Boolean(process.env.WSL_DISTRO_NAME?.trim()) || Boolean(process.env.WSL_INTEROP?.trim()));
72198
+ }
72199
+ function isWindowsUserConfigRoot2(pathValue) {
72200
+ const normalizedPath = pathValue.replaceAll("\\", "/").toLowerCase();
72201
+ return /^[a-z]:\/users\//.test(normalizedPath) || /^\/mnt\/[a-z]\/users\//.test(normalizedPath);
72202
+ }
72203
+ function getWindowsUserFromConfigRoot2(pathValue) {
72204
+ const normalizedPath = pathValue.replaceAll("\\", "/");
72205
+ const match = /^(?:[a-z]:|\/mnt\/[a-z])\/Users\/([^/]+)/i.exec(normalizedPath);
72206
+ return match?.[1] ?? null;
72207
+ }
72208
+ function getWslLinuxHomeDir2(windowsConfigRoot) {
72209
+ const envHome = process.env.HOME?.trim();
72210
+ if (envHome && envHome.startsWith("/") && !isWindowsUserConfigRoot2(envHome)) {
72211
+ return envHome;
72212
+ }
72213
+ const user = process.env.USER?.trim() || process.env.LOGNAME?.trim() || process.env.SUDO_USER?.trim() || (windowsConfigRoot ? getWindowsUserFromConfigRoot2(windowsConfigRoot) : undefined);
72214
+ return user ? posix3.join("/home", user) : null;
72215
+ }
72216
+ function getCliDefaultConfigDir2() {
72217
+ const envXdgConfig = process.env.XDG_CONFIG_HOME?.trim();
72218
+ const shouldIgnoreWindowsXdg = envXdgConfig !== undefined && envXdgConfig.length > 0 && isWslEnvironment2() && isWindowsUserConfigRoot2(envXdgConfig);
72219
+ const xdgConfig = shouldIgnoreWindowsXdg ? posix3.join(getWslLinuxHomeDir2(envXdgConfig) ?? "/home", ".config") : envXdgConfig || join14(homedir5(), ".config");
72220
+ const configDir = isWslEnvironment2() ? posix3.join(xdgConfig, "opencode") : join14(xdgConfig, "opencode");
72221
+ return resolveConfigPath2(configDir);
72222
+ }
72223
+ function getCliCustomConfigDir2() {
72224
+ const envConfigDir = process.env.OPENCODE_CONFIG_DIR?.trim();
72225
+ if (!envConfigDir) {
72226
+ return null;
72227
+ }
72228
+ return resolveConfigPath2(envConfigDir);
72229
+ }
72230
+ function getCliConfigDir2() {
72231
+ return getCliCustomConfigDir2() ?? getCliDefaultConfigDir2();
72232
+ }
72233
+ function getOpenCodeConfigDirs2(options) {
72234
+ if (options.binary !== "opencode") {
72235
+ return [getOpenCodeConfigDir2(options)];
72236
+ }
72237
+ const customConfigDir = getCliCustomConfigDir2();
72238
+ return Array.from(new Set([
72239
+ ...customConfigDir ? [customConfigDir] : [],
72240
+ getCliDefaultConfigDir2()
72241
+ ]));
72242
+ }
72243
+ function getOpenCodeConfigDir2(options) {
72244
+ const { binary, version, checkExisting = true } = options;
72245
+ if (binary === "opencode") {
72246
+ return getCliConfigDir2();
72247
+ }
72248
+ const identifier = isDevBuild2(version) ? TAURI_APP_IDENTIFIER_DEV2 : TAURI_APP_IDENTIFIER2;
72249
+ const tauriDirBase = getTauriConfigDir2(identifier);
72250
+ const tauriDir = process.platform === "win32" ? win322.isAbsolute(tauriDirBase) ? win322.normalize(tauriDirBase) : win322.resolve(tauriDirBase) : resolveConfigPath2(tauriDirBase);
72251
+ if (checkExisting) {
72252
+ const legacyDir = getCliConfigDir2();
72253
+ const legacyConfig = join14(legacyDir, "opencode.json");
72254
+ const legacyConfigC = join14(legacyDir, "opencode.jsonc");
72255
+ if (existsSync9(legacyConfig) || existsSync9(legacyConfigC)) {
72256
+ return legacyDir;
72257
+ }
72258
+ }
72259
+ return tauriDir;
72260
+ }
72261
+ var TAURI_APP_IDENTIFIER2 = "ai.opencode.desktop", TAURI_APP_IDENTIFIER_DEV2 = "ai.opencode.desktop.dev";
72262
+ var init_opencode_config_dir2 = __esm(() => {
72263
+ init_plugin_identity2();
72264
+ });
72265
+
72266
+ // packages/skills-loader-core/src/shared/opencode-command-dirs.ts
72267
+ var init_opencode_command_dirs2 = __esm(() => {
72268
+ init_opencode_config_dir2();
72269
+ });
72270
+ // packages/skills-loader-core/src/shared/jsonc-parser.ts
72271
+ var init_jsonc_parser3 = () => {};
72272
+
72273
+ // packages/skills-loader-core/src/shared/project-discovery-dirs.ts
72274
+ import { execFileSync } from "child_process";
72275
+ import { existsSync as existsSync10, realpathSync as realpathSync6 } from "fs";
72276
+ import { dirname as dirname5, join as join15, resolve as resolve6, win32 as win323 } from "path";
72277
+ function normalizePath(path) {
72278
+ const resolvedPath = process.platform !== "win32" && win323.isAbsolute(path) ? path : resolve6(path);
72279
+ if (!existsSync10(resolvedPath)) {
72280
+ return resolvedPath;
72281
+ }
72282
+ try {
72283
+ return realpathSync6.native(resolvedPath);
72284
+ } catch (error) {
72285
+ if (!(error instanceof Error)) {
72286
+ throw error;
72287
+ }
72288
+ try {
72289
+ return realpathSync6(resolvedPath);
72290
+ } catch (fallbackError) {
72291
+ if (!(fallbackError instanceof Error)) {
72292
+ throw fallbackError;
72293
+ }
72294
+ return resolvedPath;
72295
+ }
72296
+ }
72297
+ }
72298
+ function pathKey(path) {
72299
+ const normalized = path.replace(/\\/g, "/");
72300
+ return process.platform === "win32" ? normalized.toLowerCase() : normalized;
72301
+ }
72302
+ function detectWorktreePath(directory) {
72303
+ const resolvedDirectory = resolve6(directory);
72304
+ const cacheKey = pathKey(normalizePath(resolvedDirectory));
72305
+ if (worktreePathCache2.has(cacheKey)) {
72306
+ return worktreePathCache2.get(cacheKey);
72307
+ }
72308
+ let ancestor = normalizePath(resolvedDirectory);
72309
+ while (true) {
72310
+ if (existsSync10(join15(ancestor, ".git"))) {
72311
+ worktreePathCache2.set(cacheKey, ancestor);
72312
+ return ancestor;
72313
+ }
72314
+ const parent = dirname5(ancestor);
72315
+ if (parent === ancestor)
72316
+ break;
72317
+ ancestor = parent;
72318
+ }
72319
+ try {
72320
+ const worktreePath = execFileSync("git", ["rev-parse", "--show-toplevel"], {
72321
+ cwd: resolvedDirectory,
72322
+ encoding: "utf-8",
72323
+ timeout: 5000,
72324
+ stdio: ["pipe", "pipe", "pipe"]
72325
+ }).trim();
72326
+ const normalizedWorktreePath = normalizePath(worktreePath);
72327
+ worktreePathCache2.set(cacheKey, normalizedWorktreePath);
72328
+ return normalizedWorktreePath;
72329
+ } catch (error) {
72330
+ if (!(error instanceof Error)) {
72331
+ throw error;
72332
+ }
72333
+ worktreePathCache2.set(cacheKey, undefined);
72334
+ return;
72335
+ }
72336
+ }
72337
+ var worktreePathCache2;
72338
+ var init_project_discovery_dirs2 = __esm(() => {
72339
+ init_jsonc_parser3();
72340
+ init_plugin_identity2();
72341
+ worktreePathCache2 = new Map;
72342
+ });
72343
+
72344
+ // packages/skills-loader-core/src/shared/internal-initiator-marker.ts
72345
+ var init_internal_initiator_marker3 = __esm(() => {
72346
+ init_internal_initiator_marker();
72347
+ });
72348
+
72349
+ // packages/skills-loader-core/src/shared/index.ts
72350
+ var init_shared2 = __esm(() => {
72351
+ init_claude_config_dir2();
72352
+ init_opencode_command_dirs2();
72353
+ init_opencode_config_dir2();
72354
+ init_project_discovery_dirs2();
72355
+ init_skill_path_resolver3();
72356
+ init_internal_initiator_marker3();
72357
+ });
72358
+
72359
+ // packages/skills-loader-core/src/features/opencode-skill-loader/skill-provenance.ts
72360
+ import { basename as basename3, dirname as dirname6, join as join16, resolve as resolve7, sep } from "path";
72361
+ import { homedir as homedir6 } from "os";
72362
+ function knownUserSkillRoots() {
72363
+ const home = homedir6();
72364
+ return [
72365
+ join16(getClaudeConfigDir(), "skills"),
72366
+ join16(home, ".agents", "skills"),
72367
+ join16(home, ".omo", "agent", "skills"),
72368
+ join16(home, ".senpi", "agent", "skills"),
72369
+ sharedSkillsRootPath(),
72370
+ ...getOpenCodeConfigDirs2({ binary: "opencode" }).flatMap((dir) => [
72371
+ join16(dir, "skills"),
72372
+ join16(dir, "skill")
72373
+ ])
72374
+ ];
72375
+ }
72376
+ var observers;
72377
+ var init_skill_provenance = __esm(() => {
72378
+ init_shared_skills();
72379
+ init_shared2();
72380
+ observers = new Set;
72381
+ });
72382
+
72383
+ // packages/skills-loader-core/src/features/opencode-skill-loader/checked-skill-read.ts
72384
+ var init_checked_skill_read = __esm(() => {
72385
+ init_skill_provenance();
72386
+ });
72387
+
72388
+ // packages/skills-loader-core/src/features/opencode-skill-loader/skill-mcp-config.ts
72389
+ var init_skill_mcp_config = __esm(() => {
72390
+ init_js_yaml();
72391
+ init_checked_skill_read();
72392
+ init_skill_provenance();
72393
+ });
72394
+
72395
+ // packages/skills-loader-core/src/features/opencode-skill-loader/loaded-skill-from-path.ts
72396
+ var init_loaded_skill_from_path = __esm(() => {
72397
+ init_skill_path_resolver3();
72398
+ init_skill_mcp_config();
72399
+ init_checked_skill_read();
72400
+ init_skill_provenance();
72401
+ });
72402
+
72403
+ // packages/skills-loader-core/src/features/opencode-skill-loader/skill-directory-loader.ts
72404
+ var init_skill_directory_loader = __esm(() => {
72405
+ init_loaded_skill_from_path();
72406
+ init_skill_provenance();
72407
+ });
72408
+
72409
+ // packages/skills-loader-core/src/features/opencode-skill-loader/config-source-discovery.ts
72410
+ function setSkillSourceProvenance(config, provenance) {
72411
+ sourceOrigins.set(config, provenance);
72412
+ }
72413
+ var sourceOrigins;
72414
+ var init_config_source_discovery = __esm(() => {
72415
+ init_skill_directory_loader();
72416
+ init_loaded_skill_from_path();
72417
+ init_project_discovery_dirs2();
72418
+ init_skill_provenance();
72419
+ sourceOrigins = new WeakMap;
72420
+ });
72019
72421
 
72020
72422
  // packages/omo-opencode/src/shared/disabled-providers.ts
72021
72423
  function getModelProvider(model) {
@@ -72135,7 +72537,7 @@ function appendViews(views, layers, select, keyPrefix) {
72135
72537
  for (const layer of layers) {
72136
72538
  const config = select(layer.config);
72137
72539
  if (Object.keys(config).length > 0)
72138
- views.push({ config, keyPrefix, path: layer.source.path });
72540
+ views.push({ config, keyPrefix, path: layer.source.path, scope: layer.source.scope });
72139
72541
  }
72140
72542
  }
72141
72543
  function recordFields(value, fields) {
@@ -72741,7 +73143,7 @@ var init_git_master2 = __esm(() => {
72741
73143
  init_git_env_prefix2();
72742
73144
  GitMasterConfigSchema = object({
72743
73145
  commit_footer: union([boolean2(), string2()]).default(false),
72744
- include_co_authored_by: boolean2().default(false),
73146
+ include_co_authored_by: boolean2().default(true),
72745
73147
  git_env_prefix: GitEnvPrefixSchema2
72746
73148
  });
72747
73149
  });
@@ -73146,7 +73548,7 @@ var init_oh_my_opencode_config = __esm(() => {
73146
73548
  babysitting: BabysittingConfigSchema.optional(),
73147
73549
  git_master: GitMasterConfigSchema.default({
73148
73550
  commit_footer: false,
73149
- include_co_authored_by: false,
73551
+ include_co_authored_by: true,
73150
73552
  git_env_prefix: "GIT_MASTER=1"
73151
73553
  }),
73152
73554
  browser_automation_engine: BrowserAutomationConfigSchema.optional(),
@@ -73221,7 +73623,7 @@ var init_prune_plugin_view = __esm(() => {
73221
73623
  });
73222
73624
 
73223
73625
  // packages/omo-opencode/src/config/validate.ts
73224
- import { relative } from "path";
73626
+ import { dirname as dirname7, isAbsolute, join as join17, relative } from "path";
73225
73627
  function shortPath(configPath) {
73226
73628
  const candidate = relative(process.cwd(), configPath);
73227
73629
  return candidate.length > 0 ? candidate : configPath;
@@ -73357,6 +73759,28 @@ function validatePluginConfig(directory, environment = process.env) {
73357
73759
  const userConfig = parseConfig(prunePluginView({ config: chain.protectedUserView, homeDir, keyPrefix: "", path: "" }).config);
73358
73760
  const config = applyDisabledProviders(materializeAgentModelChains(protectUserFields(mergeViews(views), userConfig)));
73359
73761
  warnLegacyUlwExecuteKey(chain.views);
73762
+ if (config.skills) {
73763
+ const owner = chain.views.findLast((view) => Object.hasOwn(view.config, "skills"));
73764
+ const userRoots = [...knownUserSkillRoots()];
73765
+ for (const view of chain.views.filter((candidate) => candidate.scope === "user")) {
73766
+ const settings = OhMyOpenCodeConfigSchema.safeParse({ skills: view.config.skills });
73767
+ const skills = settings.success ? settings.data.skills : undefined;
73768
+ if (!skills || Array.isArray(skills))
73769
+ continue;
73770
+ for (const source of skills.sources ?? []) {
73771
+ const path = typeof source === "string" ? source : source.path;
73772
+ if (/^https?:\/\//.test(path))
73773
+ continue;
73774
+ userRoots.push(path.startsWith("~/") ? join17(homeDir ?? "", path.slice(2)) : isAbsolute(path) ? path : join17(dirname7(view.path), path));
73775
+ }
73776
+ }
73777
+ setSkillSourceProvenance(config.skills, {
73778
+ kind: owner?.scope === "user" ? "user" : "project-auto",
73779
+ selectedRoot: owner ? dirname7(owner.path) : directory,
73780
+ projectRoot: detectWorktreePath(directory) ?? directory,
73781
+ userRoots
73782
+ });
73783
+ }
73360
73784
  return {
73361
73785
  valid: messages.length === 0,
73362
73786
  messages,
@@ -73367,6 +73791,9 @@ function validatePluginConfig(directory, environment = process.env) {
73367
73791
  }
73368
73792
  var START_WORK_DEPRECATION_MESSAGE = 'config key "start_work" is deprecated, rename to "ulw_execute" - will be removed next release', deprecationWarningSink;
73369
73793
  var init_validate = __esm(() => {
73794
+ init_config_source_discovery();
73795
+ init_skill_provenance();
73796
+ init_project_discovery_dirs2();
73370
73797
  init_src4();
73371
73798
  init_disabled_providers();
73372
73799
  init_logger2();
@@ -75096,7 +75523,7 @@ init_shared();
75096
75523
  // package.json
75097
75524
  var package_default = {
75098
75525
  name: "oh-my-opencode",
75099
- version: "5.1.43",
75526
+ version: "5.1.45",
75100
75527
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
75101
75528
  main: "./dist/index.js",
75102
75529
  types: "dist/index.d.ts",
@@ -75216,6 +75643,8 @@ var package_default = {
75216
75643
  "build:senpi-plugin": "bun run build:lsp-daemon && bun run build:ast-grep-mcp && bun run build:senpi-plugin:stage",
75217
75644
  "build:senpi-plugin:native": "node packages/omo-senpi/plugin/scripts/stage-lsp-daemon-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-ast-grep-mcp-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-x-search-skill.mjs && node packages/omo-senpi/plugin/scripts/build-extension.mjs && node packages/omo-senpi/plugin/scripts/build-daemon-launch-spec.mjs && node packages/omo-senpi/plugin/scripts/sync-skills.mjs && node packages/omo-senpi/plugin/scripts/embed-directive.mjs --check && node packages/omo-senpi/plugin/scripts/build-install.mjs",
75218
75645
  "build:senpi-plugin:stage": "bun run build:materialize-frontend && node packages/omo-senpi/plugin/scripts/stage-lsp-daemon-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-ast-grep-mcp-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-x-search-skill.mjs && node packages/omo-senpi/plugin/scripts/build-extension.mjs && node packages/omo-senpi/plugin/scripts/build-daemon-launch-spec.mjs && node packages/omo-senpi/plugin/scripts/sync-skills.mjs && node packages/omo-senpi/plugin/scripts/embed-directive.mjs --check && node packages/omo-senpi/plugin/scripts/build-install.mjs",
75646
+ "bundle-inputs": "node packages/omo-senpi/plugin/scripts/bundle-inputs.mjs",
75647
+ "bundle-inputs:check": "node packages/omo-senpi/plugin/scripts/bundle-inputs.mjs --check",
75219
75648
  "build:materialize-frontend": "node packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs --strict",
75220
75649
  "build:shared-skills-assets": "bun run build:materialize-frontend && rm -rf dist/skills && cp -R packages/shared-skills/skills dist/skills",
75221
75650
  "build:lsp-tools-mcp": "npm --prefix packages/lsp-tools-mcp ci && npm --prefix packages/lsp-tools-mcp run build",
@@ -75234,7 +75663,8 @@ var package_default = {
75234
75663
  postinstall: "node postinstall.mjs",
75235
75664
  prepublishOnly: "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
75236
75665
  "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",
75237
- typecheck: "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
75666
+ "check:copy": "bun script/check-copy.ts",
75667
+ typecheck: "bun run check:copy && tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
75238
75668
  "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/isolation-core/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/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-protocol/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-engine/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-prelude/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-service/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-tool/tsconfig.json",
75239
75669
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
75240
75670
  test: "bun test --timeout 20000",
@@ -75245,7 +75675,10 @@ var package_default = {
75245
75675
  "test:windows-codex": "bun run test:codex",
75246
75676
  "build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
75247
75677
  "build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build",
75248
- "test:desktop": "bun script/check-cargo-pinned-deps.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test"
75678
+ "test:desktop": "bun script/check-cargo-pinned-deps.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test",
75679
+ "lint:ratchet": "bun script/lint-ratchet.ts",
75680
+ "lint:ratchet:update": "bun script/lint-ratchet.ts --update",
75681
+ lint: "bun run check:copy && oxlint packages/lsp-tools-mcp packages/lsp-daemon packages/web packages/omo-codex/plugin/components/comment-checker packages/omo-codex/plugin/components/lazycodex-executor-verify packages/omo-codex/plugin/components/lsp packages/omo-codex/plugin/components/rules packages/omo-codex/plugin/components/telemetry packages/omo-codex/plugin/components/ultrawork packages/omo-codex/plugin/components/ulw-execute-continuation packages/omo-codex/plugin/components/ulw-loop"
75249
75682
  },
75250
75683
  keywords: [
75251
75684
  "opencode",
@@ -75273,7 +75706,7 @@ var package_default = {
75273
75706
  },
75274
75707
  devDependencies: {
75275
75708
  "@clack/prompts": "^1.8.1",
75276
- "@code-yeongyu/senpi": "2026.10.21-2",
75709
+ "@code-yeongyu/senpi": "2026.10.23-1",
75277
75710
  "@modelcontextprotocol/sdk": "^1.30.0",
75278
75711
  "@oh-my-opencode/agents-md-core": "workspace:*",
75279
75712
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -75327,6 +75760,8 @@ var package_default = {
75327
75760
  "jsonc-parser": "^3.3.1",
75328
75761
  "node-pty": "^1.1.0",
75329
75762
  omowright: "github:code-yeongyu/omowright#f87ef4d63fe7b56fe117dbab246c8ad88dd8a780",
75763
+ "oxc-parser": "0.148.0",
75764
+ oxlint: "1.89.0",
75330
75765
  picocolors: "^1.1.1",
75331
75766
  picomatch: "^4.0.7",
75332
75767
  "posthog-node": "^5.52.4",
@@ -75334,18 +75769,18 @@ var package_default = {
75334
75769
  typescript: "^7.0.2"
75335
75770
  },
75336
75771
  optionalDependencies: {
75337
- "oh-my-opencode-darwin-arm64": "5.1.43",
75338
- "oh-my-opencode-darwin-x64": "5.1.43",
75339
- "oh-my-opencode-darwin-x64-baseline": "5.1.43",
75340
- "oh-my-opencode-linux-arm64": "5.1.43",
75341
- "oh-my-opencode-linux-arm64-musl": "5.1.43",
75342
- "oh-my-opencode-linux-x64": "5.1.43",
75343
- "oh-my-opencode-linux-x64-baseline": "5.1.43",
75344
- "oh-my-opencode-linux-x64-musl": "5.1.43",
75345
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.43",
75346
- "oh-my-opencode-windows-arm64": "5.1.43",
75347
- "oh-my-opencode-windows-x64": "5.1.43",
75348
- "oh-my-opencode-windows-x64-baseline": "5.1.43"
75772
+ "oh-my-opencode-darwin-arm64": "5.1.45",
75773
+ "oh-my-opencode-darwin-x64": "5.1.45",
75774
+ "oh-my-opencode-darwin-x64-baseline": "5.1.45",
75775
+ "oh-my-opencode-linux-arm64": "5.1.45",
75776
+ "oh-my-opencode-linux-arm64-musl": "5.1.45",
75777
+ "oh-my-opencode-linux-x64": "5.1.45",
75778
+ "oh-my-opencode-linux-x64-baseline": "5.1.45",
75779
+ "oh-my-opencode-linux-x64-musl": "5.1.45",
75780
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.45",
75781
+ "oh-my-opencode-windows-arm64": "5.1.45",
75782
+ "oh-my-opencode-windows-x64": "5.1.45",
75783
+ "oh-my-opencode-windows-x64-baseline": "5.1.45"
75349
75784
  },
75350
75785
  overrides: {
75351
75786
  hono: "^4.13.8",
@@ -75754,10 +76189,10 @@ init_write_file_atomically();
75754
76189
  // packages/omo-opencode/src/features/tui-sidebar/mirror-path.ts
75755
76190
  import { createHash } from "crypto";
75756
76191
  import { realpathSync as realpathSync4 } from "fs";
75757
- import { homedir as homedir3 } from "os";
76192
+ import { homedir as homedir4 } from "os";
75758
76193
  import { join as join11, resolve as resolve4 } from "path";
75759
76194
  function mirrorStorageDir() {
75760
- return join11(process.env.XDG_DATA_HOME ?? join11(homedir3(), ".local", "share"), "opencode", "storage", "oh-my-openagent", MIRROR_DIR_NAME);
76195
+ return join11(process.env.XDG_DATA_HOME ?? join11(homedir4(), ".local", "share"), "opencode", "storage", "oh-my-openagent", MIRROR_DIR_NAME);
75761
76196
  }
75762
76197
  function canonicalProjectDir(projectDir) {
75763
76198
  try {