lazycodex-ai 5.1.44 → 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 (273) 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/docs/reference/web-terminal-visual-qa.md +8 -0
  5. package/package.json +1 -1
  6. package/packages/lsp-daemon/dist/cli.js +4 -4
  7. package/packages/lsp-daemon/dist/client.js +4 -4
  8. package/packages/lsp-daemon/dist/index.js +4 -4
  9. package/packages/lsp-daemon/package.json +3 -3
  10. package/packages/lsp-tools-mcp/dist/cli.js +4 -4
  11. package/packages/lsp-tools-mcp/dist/mcp.js +4 -4
  12. package/packages/lsp-tools-mcp/dist/tools.js +4 -4
  13. package/packages/lsp-tools-mcp/package.json +3 -3
  14. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  15. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +62 -21
  16. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  17. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/biome.json +1 -21
  20. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  21. package/packages/omo-codex/plugin/components/comment-checker/package.json +4 -4
  22. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  23. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +1 -21
  25. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  26. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +4 -4
  27. package/packages/omo-codex/plugin/components/lsp/biome.json +1 -21
  28. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  29. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +4 -4
  30. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  31. package/packages/omo-codex/plugin/components/lsp/package.json +4 -4
  32. package/packages/omo-codex/plugin/components/lsp/scripts/build-runtime.mjs +0 -1
  33. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-not-installed.test.ts +1 -1
  34. package/packages/omo-codex/plugin/components/rules/biome.json +1 -21
  35. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  36. package/packages/omo-codex/plugin/components/rules/package.json +4 -4
  37. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/telemetry/biome.json +1 -21
  40. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +90 -1
  41. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +91 -1
  42. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/telemetry/package.json +4 -4
  44. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +2 -2
  45. package/packages/omo-codex/plugin/components/ultrawork/biome.json +1 -21
  46. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/ultrawork/package.json +4 -4
  48. package/packages/omo-codex/plugin/components/ulw-execute-continuation/biome.json +1 -21
  49. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  50. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  51. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +4 -4
  52. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -21
  53. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +1 -1
  54. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +7 -7
  55. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +5 -5
  56. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +1 -1
  57. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  58. package/packages/omo-codex/plugin/components/ulw-loop/package.json +4 -4
  59. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +1 -1
  60. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +5 -5
  61. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +1 -1
  62. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +2 -0
  63. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  84. package/packages/omo-codex/plugin/package-lock.json +12 -12
  85. package/packages/omo-codex/plugin/package.json +1 -1
  86. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +7 -7
  87. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +2 -0
  88. package/packages/omo-codex/plugin/skills/browser/SKILL.md +21 -22
  89. package/packages/omo-codex/plugin/skills/browser/references/commands.md +2 -9
  90. package/packages/omo-codex/plugin/skills/browser/references/install.md +1 -2
  91. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  92. package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +2 -2
  93. package/packages/omo-codex/plugin/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  94. package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +1 -1
  95. package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +1 -10
  96. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +79 -118
  97. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +75 -224
  98. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +32 -27
  99. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
  100. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  101. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  102. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  103. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  104. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  105. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  106. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  107. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  108. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  109. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  110. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  111. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  112. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  113. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  114. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  115. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  116. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  117. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  118. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  119. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  120. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  121. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  122. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
  123. package/packages/omo-codex/plugin/skills/programming/SKILL.md +10 -7
  124. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +10 -7
  125. package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +9 -23
  126. package/packages/omo-codex/plugin/skills/programming/references/typescript/oxc-lint.md +130 -0
  127. package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  128. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  129. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +20 -81
  130. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  131. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  132. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  133. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  134. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  135. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  136. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  137. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +14 -14
  138. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -1
  139. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +2 -2
  140. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
  141. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  142. package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +9 -3
  143. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
  144. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +7 -6
  145. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  146. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +51 -3
  147. package/packages/omo-codex/plugin/skills/ulw-research/scripts/claims-index.mjs +125 -0
  148. package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +68 -3
  149. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  150. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  151. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  152. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  153. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  154. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +1 -1
  155. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  156. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-text.mjs +1 -27
  157. package/packages/omo-codex/plugin/skills/ulw-research/scripts/lexicon.mjs +47 -0
  158. package/packages/omo-codex/plugin/skills/ulw-research/scripts/numerals.mjs +226 -0
  159. package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +2 -3
  160. package/packages/omo-codex/plugin/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  161. package/packages/omo-codex/plugin/skills/ulw-research/scripts/rational.mjs +139 -0
  162. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  163. package/packages/omo-codex/plugin/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  164. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  165. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  166. package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +105 -0
  167. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +71 -64
  168. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +4 -1
  169. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +6 -6
  170. package/packages/omo-codex/scripts/install-dist/install-local.mjs +152 -23
  171. package/packages/shared-skills/skills/browser/SKILL.md +21 -22
  172. package/packages/shared-skills/skills/browser/references/commands.md +2 -9
  173. package/packages/shared-skills/skills/browser/references/install.md +1 -2
  174. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  175. package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +2 -2
  176. package/packages/shared-skills/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  177. package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +1 -1
  178. package/packages/shared-skills/skills/browser/scripts/omowright.mjs +1 -10
  179. package/packages/shared-skills/skills/frontend/SKILL.md +79 -118
  180. package/packages/shared-skills/skills/frontend/references/design/README.md +75 -224
  181. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +32 -27
  182. package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
  183. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  184. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.test.ts +101 -0
  185. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  186. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.test.ts +50 -0
  187. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  188. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  189. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  190. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  191. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  192. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  193. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  194. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  195. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  196. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  197. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  198. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  199. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  200. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  201. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  202. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  203. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  204. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  205. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  206. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  207. package/packages/shared-skills/skills/programming/SKILL.md +10 -7
  208. package/packages/shared-skills/skills/programming/references/typescript/README.md +10 -7
  209. package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +9 -23
  210. package/packages/shared-skills/skills/programming/references/typescript/oxc-lint.md +130 -0
  211. package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  212. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  213. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.test.ts +162 -0
  214. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +20 -81
  215. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  216. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  217. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  218. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  219. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  220. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  221. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  222. package/packages/shared-skills/skills/refactor/SKILL.md +13 -13
  223. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  224. package/packages/shared-skills/skills/ulw-research/AGENTS.md +9 -3
  225. package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
  226. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +7 -6
  227. package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  228. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +51 -3
  229. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.mjs +125 -0
  230. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.test.ts +149 -0
  231. package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +68 -3
  232. package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +97 -12
  233. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +190 -0
  234. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  235. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +141 -0
  236. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  237. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.test.ts +43 -0
  238. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  239. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.test.ts +252 -0
  240. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  241. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.test.ts +179 -0
  242. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  243. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.test.ts +46 -0
  244. package/packages/shared-skills/skills/ulw-research/scripts/gates-context.test.ts +64 -0
  245. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +1 -1
  246. package/packages/shared-skills/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  247. package/packages/shared-skills/skills/ulw-research/scripts/gates-text.mjs +1 -27
  248. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.mjs +47 -0
  249. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.test.ts +57 -0
  250. package/packages/shared-skills/skills/ulw-research/scripts/numerals.mjs +226 -0
  251. package/packages/shared-skills/skills/ulw-research/scripts/numerals.test.ts +120 -0
  252. package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +2 -3
  253. package/packages/shared-skills/skills/ulw-research/scripts/outcome.test.ts +29 -0
  254. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  255. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.test.ts +86 -0
  256. package/packages/shared-skills/skills/ulw-research/scripts/rational.mjs +139 -0
  257. package/packages/shared-skills/skills/ulw-research/scripts/rational.test.ts +46 -0
  258. package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  259. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  260. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.test.ts +109 -0
  261. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/claim-graph.md +13 -0
  262. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-locked.md +17 -0
  263. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-pending.md +17 -0
  264. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  265. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.test.ts +73 -0
  266. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  267. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.test.ts +38 -0
  268. package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +105 -0
  269. package/packages/shared-skills/skills/ulw-research/scripts/units.test.ts +83 -0
  270. package/packages/shared-skills/skills/visual-qa/SKILL.md +70 -63
  271. package/packages/shared-skills/skills/visual-qa/scripts/skill-doc-fields.test.ts +34 -0
  272. package/script/qa/web-terminal-visual-qa.mjs +6 -2
  273. package/script/qa/xterm-live-terminal.mjs +26 -3
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // omo-codex-install:86887beec4a71033b5338b0fe4a2a1d1ef7f01a24b155e45a4794e95ec97c925:c92f287be053aec70fa39eb4a642909b8ee5721383fc3987f69b4e0ca55ae568
2
+ // omo-codex-install:a13cf7e9a95d881bd59c4cfee5cc6277e0ded2733a57e61020e6786ef72839f4:5b4bab0a0600c1ff722c498ab18fcef7cf291fd3a13f074cb2d5ca4db8ecbec4
3
3
  var __esm = (fn, res, err) => () => {
4
4
  if (fn)
5
5
  try {
@@ -9982,20 +9982,98 @@ var init_index_node = __esm(() => {
9982
9982
  };
9983
9983
  });
9984
9984
 
9985
+ // packages/telemetry-core/src/telemetry-delivery-error.ts
9986
+ var PERMANENT_STATUSES, TelemetryDeliveryError;
9987
+ var init_telemetry_delivery_error = __esm(() => {
9988
+ PERMANENT_STATUSES = new Set([400, 413]);
9989
+ TelemetryDeliveryError = class TelemetryDeliveryError extends Error {
9990
+ permanent;
9991
+ status;
9992
+ constructor(status, cause) {
9993
+ super(status === undefined ? "telemetry event was not delivered (no response)" : `telemetry event was rejected with HTTP ${status}`, { cause });
9994
+ this.name = "TelemetryDeliveryError";
9995
+ this.status = status;
9996
+ this.permanent = status !== undefined && PERMANENT_STATUSES.has(status);
9997
+ }
9998
+ };
9999
+ });
10000
+
10001
+ // packages/telemetry-core/src/posthog-immediate-send.ts
10002
+ function createImmediateSender(apiKey, options, PostHogClient) {
10003
+ const baseFetch = options.fetch ?? ((url, init) => fetch(url, init));
10004
+ let current;
10005
+ const trackedFetch = async (url, init) => {
10006
+ const attempt = current;
10007
+ try {
10008
+ const response = await baseFetch(url, init);
10009
+ if (attempt !== undefined)
10010
+ attempt.status = response.status;
10011
+ return response;
10012
+ } catch (error) {
10013
+ if (attempt !== undefined)
10014
+ attempt.error = error;
10015
+ throw error;
10016
+ }
10017
+ };
10018
+ const client = new PostHogClient(apiKey, { ...options, fetch: trackedFetch, fetchRetryCount: 0 });
10019
+ let queue = Promise.resolve();
10020
+ const sendOne = async (message) => {
10021
+ const attempt = {};
10022
+ current = attempt;
10023
+ try {
10024
+ await client.captureImmediate(message);
10025
+ } finally {
10026
+ current = undefined;
10027
+ }
10028
+ const { status } = attempt;
10029
+ if (status === undefined || status < 200 || status >= 300)
10030
+ throw new TelemetryDeliveryError(status, attempt.error);
10031
+ };
10032
+ return {
10033
+ send(message) {
10034
+ const result = queue.then(() => sendOne(message));
10035
+ queue = result.catch(() => {
10036
+ return;
10037
+ });
10038
+ return result;
10039
+ },
10040
+ async shutdown() {
10041
+ await client.shutdown();
10042
+ }
10043
+ };
10044
+ }
10045
+ var init_posthog_immediate_send = __esm(() => {
10046
+ init_telemetry_delivery_error();
10047
+ });
10048
+
9985
10049
  // packages/telemetry-core/src/posthog-transport.ts
9986
10050
  class PostHogTelemetryTransport {
9987
10051
  #client;
10052
+ #apiKey;
10053
+ #options;
10054
+ #immediate;
9988
10055
  constructor(apiKey, options) {
9989
10056
  this.#client = new PostHog(apiKey, options);
10057
+ this.#apiKey = apiKey;
10058
+ this.#options = options;
9990
10059
  }
9991
10060
  capture(message) {
9992
10061
  this.#client.capture(message);
9993
10062
  }
10063
+ captureImmediate(message) {
10064
+ this.#immediate ??= Promise.resolve().then(() => (init_posthog_immediate_send(), {})).then(({}) => createImmediateSender(this.#apiKey, this.#options, PostHog)).catch((error) => {
10065
+ this.#immediate = undefined;
10066
+ throw error;
10067
+ });
10068
+ return this.#immediate.then((sender) => sender.send(message));
10069
+ }
9994
10070
  async flush() {
9995
10071
  await this.#client.flush();
9996
10072
  }
9997
10073
  async shutdown() {
9998
- await this.#client.shutdown();
10074
+ await Promise.all([this.#client.shutdown(), this.#immediate?.then((sender) => sender.shutdown(), () => {
10075
+ return;
10076
+ })]);
9999
10077
  }
10000
10078
  }
10001
10079
  function createDefaultPostHogTransport(apiKey, options) {
@@ -10020,6 +10098,12 @@ var init_posthog_client = __esm(() => {
10020
10098
  // packages/telemetry-core/src/record-daily-active.ts
10021
10099
  var init_record_daily_active = () => {};
10022
10100
 
10101
+ // packages/telemetry-core/src/turn-trace-bridge.ts
10102
+ var REGISTRY;
10103
+ var init_turn_trace_bridge = __esm(() => {
10104
+ REGISTRY = Symbol.for("omo.telemetry.turn-traceparent.v1");
10105
+ });
10106
+
10023
10107
  // packages/telemetry-core/src/index.ts
10024
10108
  var init_src = __esm(() => {
10025
10109
  init_activity_state();
@@ -10031,6 +10115,7 @@ var init_src = __esm(() => {
10031
10115
  init_machine_id();
10032
10116
  init_posthog_client();
10033
10117
  init_record_daily_active();
10118
+ init_turn_trace_bridge();
10034
10119
  });
10035
10120
 
10036
10121
  // packages/omo-codex/package.json
@@ -10038,7 +10123,7 @@ var package_default;
10038
10123
  var init_package = __esm(() => {
10039
10124
  package_default = {
10040
10125
  name: "@oh-my-opencode/omo-codex",
10041
- version: "5.1.44",
10126
+ version: "5.1.45",
10042
10127
  type: "module",
10043
10128
  private: true,
10044
10129
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -10069,6 +10154,7 @@ var init_package = __esm(() => {
10069
10154
  "sync:skills": "node plugin/scripts/sync-skills.mjs"
10070
10155
  },
10071
10156
  dependencies: {
10157
+ "@oh-my-opencode/model-core": "workspace:*",
10072
10158
  "@oh-my-opencode/shared-skills": "workspace:*",
10073
10159
  "@oh-my-opencode/utils": "workspace:*"
10074
10160
  },
@@ -12917,9 +13003,27 @@ function isRootSetting(line, key) {
12917
13003
  // packages/omo-codex/src/install/codex-model-catalog.ts
12918
13004
  import { readFile as readFile10 } from "node:fs/promises";
12919
13005
  import { join as join15 } from "node:path";
13006
+
13007
+ // packages/model-core/src/latest-models.ts
13008
+ var LATEST_MODEL_BY_FAMILY = {
13009
+ claudeOpus: "claude-opus-5-5",
13010
+ claudeSonnet: "claude-sonnet-5-5",
13011
+ claudeHaiku: "claude-haiku-5-5",
13012
+ claudeFable: "claude-fable-5-1",
13013
+ gptAstra: "gpt-6-astra",
13014
+ gptSol: "gpt-6.1-sol",
13015
+ gptSolFast: "gpt-6.1-sol-fast",
13016
+ gptLunaFast: "gpt-6-luna-fast",
13017
+ glm: "glm-5.3",
13018
+ glmFlash: "glm-5.3-flash",
13019
+ kimi: "kimi-k3",
13020
+ geminiPro: "gemini-4-argon"
13021
+ };
13022
+
13023
+ // packages/omo-codex/src/install/codex-model-catalog.ts
12920
13024
  var FALLBACK_CODEX_MODEL_CATALOG = {
12921
13025
  current: {
12922
- model: "gpt-6-astra",
13026
+ model: LATEST_MODEL_BY_FAMILY.gptAstra,
12923
13027
  modelContextWindow: 600000,
12924
13028
  modelReasoningEffort: "high",
12925
13029
  planModeReasoningEffort: "xhigh"
@@ -19477,7 +19581,7 @@ var OmoGitMasterSettingsShape = {
19477
19581
  var OmoGitMasterSettingsLayerSchema = object(OmoGitMasterSettingsShape).partial().strict();
19478
19582
  var OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
19479
19583
  commit_footer: union([boolean2(), string2()]).default(false),
19480
- include_co_authored_by: boolean2().default(false),
19584
+ include_co_authored_by: boolean2().default(true),
19481
19585
  git_env_prefix: GitEnvPrefixSchema.default("GIT_MASTER=1")
19482
19586
  }).strict();
19483
19587
 
@@ -19537,6 +19641,14 @@ var OmoMemoryRecallSchema = object({
19537
19641
  tool_budget: number2().int().positive().default(8),
19538
19642
  query_expansion: boolean2().default(false)
19539
19643
  }).strict();
19644
+ var OmoMemoryProjectScopeSchema = object({
19645
+ nudge: boolean2().default(true),
19646
+ recall: boolean2().default(true)
19647
+ }).strict();
19648
+ var OmoMemoryProjectScopeLayerSchema = object({
19649
+ nudge: boolean2().optional(),
19650
+ recall: boolean2().optional()
19651
+ }).strict();
19540
19652
  var OmoMemoryNudgeSchema = object({
19541
19653
  enabled: boolean2().default(true),
19542
19654
  every_user_turns: number2().int().min(1).default(10)
@@ -19692,6 +19804,7 @@ var OmoMemorySettingsSchema = object({
19692
19804
  tool_budget: 8,
19693
19805
  query_expansion: false
19694
19806
  }),
19807
+ project_scope: OmoMemoryProjectScopeSchema.default({ nudge: true, recall: true }),
19695
19808
  projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory: 40, max_bytes: 24576 }),
19696
19809
  compile_warn_tokens: number2().int().positive().default(30000),
19697
19810
  agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
@@ -19711,6 +19824,7 @@ var OmoMemorySettingsLayerSchema = object({
19711
19824
  sync: OmoMemorySyncLayerSchema.optional(),
19712
19825
  search: OmoMemorySearchLayerSchema.optional(),
19713
19826
  recall: OmoMemoryRecallLayerSchema.optional(),
19827
+ project_scope: OmoMemoryProjectScopeLayerSchema.optional(),
19714
19828
  projection: OmoMemoryProjectionLayerSchema.optional(),
19715
19829
  compile_warn_tokens: number2().int().positive().optional(),
19716
19830
  agents: record(string2(), OmoMemoryAgentOverridesSchema).optional()
@@ -19982,7 +20096,8 @@ var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
19982
20096
 
19983
20097
  // packages/omo-config-core/src/schema/telemetry.ts
19984
20098
  var OmoTelemetrySettingsShape = {
19985
- enabled: boolean2()
20099
+ enabled: boolean2(),
20100
+ rawTurnSampleRate: number2().min(0).max(1)
19986
20101
  };
19987
20102
  var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
19988
20103
  var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
@@ -20004,16 +20119,26 @@ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
20004
20119
  timeoutMs: number2().int().positive().default(3000)
20005
20120
  }).strict();
20006
20121
 
20007
- // packages/omo-config-core/src/schema/gateway.ts
20008
- var 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.");
20122
+ // packages/omo-config-core/src/schema/dori.ts
20123
+ var 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.");
20124
+
20125
+ // packages/omo-config-core/src/schema/provenance.ts
20126
+ var OmoProvenanceSettingsSchema = object({
20127
+ workspaces: array(object({
20128
+ name: string2().trim().min(1).regex(/\S/),
20129
+ git_owners: array(string2().trim().min(1).regex(/\S/)).optional(),
20130
+ paths: array(string2().trim().min(1).regex(/\S/)).optional()
20131
+ }).strict()).optional()
20132
+ }).strict();
20009
20133
 
20010
20134
  // packages/omo-config-core/src/schema/config.ts
20011
20135
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
20012
20136
  var OmoDisabledSkillsSchema = array(string2());
20013
20137
  var OmoExcludedModelsSchema = array(string2());
20014
20138
  var OmoTypedHarnessConfigSchema = object({
20139
+ provenance: OmoProvenanceSettingsSchema.optional(),
20015
20140
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20016
- gateway: OmoGatewaySectionSchema.optional(),
20141
+ dori: OmoDoriSectionSchema.optional(),
20017
20142
  categories: OmoCategoriesConfigSchema.optional(),
20018
20143
  agents: OmoAgentsConfigSchema.optional(),
20019
20144
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -20030,7 +20155,9 @@ var OmoTypedHarnessConfigSchema = object({
20030
20155
  exclude_models: OmoExcludedModelsSchema.optional()
20031
20156
  }).strict();
20032
20157
  var OmoConfigProfileSchema = object({
20158
+ provenance: OmoProvenanceSettingsSchema.optional(),
20033
20159
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20160
+ dori: OmoDoriSectionSchema.optional(),
20034
20161
  categories: OmoCategoriesConfigSchema.optional(),
20035
20162
  agents: OmoAgentsConfigSchema.optional(),
20036
20163
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -20051,8 +20178,9 @@ var OmoConfigProfileSchema = object({
20051
20178
  "[codex]": OmoTypedHarnessConfigSchema.optional()
20052
20179
  }).strict();
20053
20180
  var OmoConfigSchema = object({
20181
+ provenance: OmoProvenanceSettingsSchema.optional(),
20054
20182
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
20055
- gateway: OmoGatewaySectionSchema.optional(),
20183
+ dori: OmoDoriSectionSchema.optional(),
20056
20184
  $schema: string2().optional(),
20057
20185
  categories: OmoCategoriesConfigSchema.optional(),
20058
20186
  agents: OmoAgentsConfigSchema.optional(),
@@ -20077,8 +20205,9 @@ var OmoConfigSchema = object({
20077
20205
  legacy_migrations: record(string2(), unknown()).optional()
20078
20206
  }).strict();
20079
20207
  var OmoConfigLayerSchema = object({
20208
+ provenance: OmoProvenanceSettingsSchema.optional(),
20080
20209
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20081
- gateway: OmoGatewaySectionSchema.optional(),
20210
+ dori: OmoDoriSectionSchema.optional(),
20082
20211
  $schema: string2().optional(),
20083
20212
  categories: OmoCategoriesConfigSchema.optional(),
20084
20213
  agents: OmoAgentsConfigSchema.optional(),
@@ -21827,7 +21956,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21827
21956
  },
21828
21957
  {
21829
21958
  previous: { model: "gpt-5.6-luna", effort: "low" },
21830
- current: { model: "gpt-6-astra", effort: "low" }
21959
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "low" }
21831
21960
  }
21832
21961
  ]
21833
21962
  ],
@@ -21844,7 +21973,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21844
21973
  },
21845
21974
  {
21846
21975
  previous: { model: "gpt-5.6-luna", effort: "low" },
21847
- current: { model: "gpt-6-astra", effort: "low" }
21976
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "low" }
21848
21977
  }
21849
21978
  ]
21850
21979
  ],
@@ -21853,7 +21982,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21853
21982
  [
21854
21983
  {
21855
21984
  previous: { model: "gpt-5.6-sol", effort: "high" },
21856
- current: { model: "gpt-6-astra", effort: "high" }
21985
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21857
21986
  }
21858
21987
  ]
21859
21988
  ],
@@ -21862,7 +21991,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21862
21991
  [
21863
21992
  {
21864
21993
  previous: { model: "gpt-5.6-luna", effort: "high" },
21865
- current: { model: "gpt-6-astra", effort: "high" }
21994
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21866
21995
  }
21867
21996
  ]
21868
21997
  ],
@@ -21879,7 +22008,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21879
22008
  },
21880
22009
  {
21881
22010
  previous: { model: "gpt-5.6-terra", effort: "high" },
21882
- current: { model: "gpt-6-astra", effort: "high" }
22011
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21883
22012
  }
21884
22013
  ]
21885
22014
  ],
@@ -21896,7 +22025,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21896
22025
  },
21897
22026
  {
21898
22027
  previous: { model: "gpt-5.6-sol", effort: "high" },
21899
- current: { model: "gpt-6-astra", effort: "high" }
22028
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21900
22029
  }
21901
22030
  ]
21902
22031
  ],
@@ -21913,7 +22042,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21913
22042
  },
21914
22043
  {
21915
22044
  previous: { model: "gpt-5.6-terra", effort: "high" },
21916
- current: { model: "gpt-6-astra", effort: "high" }
22045
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21917
22046
  }
21918
22047
  ]
21919
22048
  ],
@@ -21926,7 +22055,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21926
22055
  },
21927
22056
  {
21928
22057
  previous: { model: "gpt-5.6-sol", effort: "medium" },
21929
- current: { model: "gpt-6-astra", effort: "medium" }
22058
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "medium" }
21930
22059
  }
21931
22060
  ]
21932
22061
  ],
@@ -21939,7 +22068,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21939
22068
  },
21940
22069
  {
21941
22070
  previous: { model: "gpt-5.6-terra", effort: "medium" },
21942
- current: { model: "gpt-6-astra", effort: "medium" }
22071
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "medium" }
21943
22072
  }
21944
22073
  ]
21945
22074
  ],
@@ -21952,7 +22081,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21952
22081
  },
21953
22082
  {
21954
22083
  previous: { model: "gpt-5.6-terra", effort: "high" },
21955
- current: { model: "gpt-6-astra", effort: "high" }
22084
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21956
22085
  }
21957
22086
  ]
21958
22087
  ],
@@ -21965,7 +22094,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21965
22094
  },
21966
22095
  {
21967
22096
  previous: { model: "gpt-5.6-luna", effort: "high" },
21968
- current: { model: "gpt-6-astra", effort: "high" }
22097
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "high" }
21969
22098
  }
21970
22099
  ]
21971
22100
  ],
@@ -21982,7 +22111,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
21982
22111
  },
21983
22112
  {
21984
22113
  previous: { model: "gpt-5.6-sol", effort: "low" },
21985
- current: { model: "gpt-6-astra", effort: "low" }
22114
+ current: { model: LATEST_MODEL_BY_FAMILY.gptAstra, effort: "low" }
21986
22115
  }
21987
22116
  ]
21988
22117
  ]
@@ -18,29 +18,28 @@ one where a human is a single call away. Never substitute one engine for the oth
18
18
  the attached engine is not set up, run the onboarding script and tell the user its one remaining
19
19
  step.
20
20
 
21
- ## Step 0 — which engine this session is allowed to use
21
+ ## Step 0 — inside OmO Desktop: everything above, plus the app's built-in browser
22
22
 
23
- When `OMO_BROWSER_ENGINE` is set (the OmO desktop app sets it for every session), it wins over the table above:
23
+ When `OMO_BROWSER_ENGINE` is set (the OmO desktop app sets it for every session), everything above works exactly
24
+ as in the terminal: `connectBrowserSkill()` for the user's own browser, `connectPipe()` / `connectCloakProfile()` /
25
+ `connect()` for a browser of your own, with the same table to choose between them. The app adds one more option:
24
26
 
25
- | Value | What you do |
26
- |---|---|
27
- | `connected` | Use `connectBrowserSkill()` only. If the user's browser is not connected you get a "Connect your browser" error: relay it and stop. Never open another browser |
28
- | `builtin` | Do not call `connectBrowserSkill()`; use the app's in-app browser tools |
29
- | `none` | Do not do browser work. Say that agent browser access is off for this project |
30
- | unset | The table above, as before (terminal use) |
31
-
32
- While any engine is set, `loadOmowright()` returns a guarded library. The owned engine (`connectPipe`,
33
- `connectCloakProfile`, `connect`) and every other export that acts on a browser is refused, so the table above
34
- does not apply: do not look for a way around it, and tell the user what the session allows. Under `connected`
35
- the app sees what the browser is doing, and before a click, Enter or script that sends, posts, pays, orders,
36
- subscribes, deletes or closes an account, and before Enter in a message box, it asks the user first. A "No" fails the action with
37
- `BrowserActionDeclinedError`: report that, never retry it or go around it (`session.tool()` lets only reads
38
- through; `evaluate` is guarded too). If the user presses Stop, the next call throws `BrowserUserStoppedError`: tell
39
- the user browser use was stopped and start no new session this turn.
40
-
41
- The guard prevents mistakes by a cooperating agent. It is not a security boundary: code that imports the raw
42
- entry (`resolveOmowrightEntry()`) is not guarded, and a host without the `omo_browser_bridge` tool cannot show state or
43
- honor Stop, though questions are still asked.
27
+ | Option | What it is | Use it when |
28
+ |---|---|---|
29
+ | `connectBuiltinBrowser()` | OmO's built-in browser for this thread: the tab the user sees beside the chat, which they can watch, take over and share | the user should see the page while you work, the task is QA of something in the app, or a sign-in the user should do themselves in a visible tab |
30
+
31
+ ```js
32
+ const browser = await omowright.connectBuiltinBrowser()
33
+ const [tab] = await browser.listTargets()
34
+ const page = await browser.attachPage(tab.id)
35
+ await page.goto(url)
36
+ ```
37
+
38
+ It is an OmOWright connection like `connect()`. Work in few calls: take `page.snapshot()` once, act on its refs,
39
+ and chain several actions in one eval cell (`page.locator(ref).fill()`, `.click()`, `.selectOption(value)`,
40
+ `.setInputFiles(path)`), snapshotting again only after the page changed. It has one tab: navigate it rather than
41
+ opening new ones. `BuiltinBrowserUnavailableError` permits another engine only for `unavailable`, `timeout`, or
42
+ `invalid_grant`. For `user_stopped` or any other app refusal, stop browser work and report it; do not open another browser.
44
43
 
45
44
  ## Step 1 — load omowright and prove the stack
46
45
 
@@ -118,7 +117,7 @@ changing the extension's automation settings.
118
117
  out everywhere. No flow here needs it.
119
118
  - **`focused: false` by default.** The browser belongs to someone who is probably using it.
120
119
  - **One short, named session per task,** always stopped.
121
- - **Bot-scored or WAF targets go to the owned engine** (not while `OMO_BROWSER_ENGINE` is set: then say the site needs a browser the session does not allow). The attached engine's daemon enables console
120
+ - **Bot-scored or WAF targets go to the owned engine**, in the terminal and inside OmO Desktop alike. The attached engine's daemon enables console
122
121
  capture on every tab it drives, which is a known automation signal; CloakBrowser through
123
122
  `connectCloakProfile()` is the stealth path.
124
123
 
@@ -98,17 +98,10 @@ Every refusal is a `BskRpcError` with the daemon's own `code`:
98
98
  | `invalid_params` | wrong option shape | fix the call, do not retry as-is |
99
99
  | `permission_denied` | `evaluate` on a tab outside the Agent Window, or a denied borrow | stop; the user said no |
100
100
  | `timeout` | the tool did not finish in its budget | read the page state before retrying once |
101
- | `user_aborted` | the user pressed Stop in the browser | stop the task and report; under `OMO_BROWSER_ENGINE` this surfaces as `BrowserUserStoppedError` and no session starts again this turn |
101
+ | `user_aborted` | the user pressed Stop in the browser | stop the task and report |
102
102
  | `cdp_failed` | the page cannot be attached (restricted URL, DevTools open) | say which page and why |
103
103
 
104
- Typed errors under `OMO_BROWSER_ENGINE` (see SKILL.md Step 0):
105
-
106
- | Error | `code` | Meaning |
107
- |---|---|---|
108
- | `BrowserNotConnectedError` | `browser_not_connected` | the user's browser is not connected; ask them to connect it |
109
- | `BrowserEngineRefusal` | `browser_engine_none` / `browser_engine_builtin` / `browser_engine_unsupported` / `browser_tool_blocked` | this engine setting does not allow that call |
110
- | `BrowserActionDeclinedError` | `user_declined` | the user said no, or no question could be asked; do not retry |
111
- | `BrowserUserStoppedError` | `user_stopped` | the user stopped browser use |
104
+ Inside OmO Desktop (`OMO_BROWSER_ENGINE` set), `connectBuiltinBrowser()` throws `BuiltinBrowserUnavailableError` (`code` `browser_builtin_unavailable`). Reasons `unavailable`, `timeout`, and `invalid_grant` mean the built-in browser is unavailable; `invalid_grant` includes a missing or unreadable token file. For `user_stopped` or any other app refusal, stop browser work and report it without opening another browser. Refresh uses the new grant's endpoint and token together; every other call behaves as in the terminal.
112
105
 
113
106
  Long calls can be cancelled: `const h = session.client.callWithHandle("tool.navigate", {...})`
114
107
  then `await session.client.cancel(h.rpcId)`.
@@ -11,8 +11,7 @@ Three pieces. The onboarding script prepares all three; a human finishes exactly
11
11
  ## Inside the OmO desktop app
12
12
 
13
13
  The app installs the `bsk` CLI and starts its daemon itself, and keeps the daemon running when the app closes.
14
- Do not run `browser-install.mjs` there unless the doctor says the app's engine is missing; a session set to
15
- `OMO_BROWSER_ENGINE=builtin` or `none` never uses this skill's attached engine at all. `BSK_HOME` and `BSK_BIN`
14
+ Do not run `browser-install.mjs` there unless the doctor says the app's engine is missing. `BSK_HOME` and `BSK_BIN`
16
15
  still decide where the CLI and daemon are found, here and everywhere else.
17
16
 
18
17
  ## Supported
@@ -5,5 +5,5 @@
5
5
  "index.js": "d67d3a847fe0bbc43e824feded48b280890d31879538309e671cd5f671133995",
6
6
  "page-bundle.js": "bfd51e8383cf47200d57387bbbed258bce5a3a3d00c38fc108034d2888e23f0c"
7
7
  },
8
- "stagedAtUtc": "2026-10-23T05:07:41.453Z"
8
+ "stagedAtUtc": "2026-10-24T12:04:38.003Z"
9
9
  }
@@ -19,7 +19,7 @@ const state = report.ready
19
19
 
20
20
  const REMEDIES = {
21
21
  ready: "Attached engine is live: const { connectBrowserSkill } = await import(omowrightEntry); const session = await connectBrowserSkill({ name: \"<task>\", focused: false })",
22
- "no-cli": "Run node \"<skill-root>/scripts/browser-install.mjs\" — it installs the CLI, starts the daemon and registers the extension; then tell the user the single step it prints.",
22
+ "no-cli": "Run node \"<skill-root>/scripts/browser-install.mjs\". It installs the CLI, starts the daemon and registers the extension; then tell the user the single step it prints.",
23
23
  "no-daemon": "Run node \"<skill-root>/scripts/browser-install.mjs\" (it starts the daemon through `bsk status`), then re-run this doctor.",
24
24
  "no-extension": report.nextStep ?? "Register the extension with browser-install.mjs, then relay its human step to the user and re-run this doctor.",
25
25
  "choose-browser": `Do not install anything yet. First check your memory for the browser this user works in; if it names one of the candidates, re-run with --browser=<id>. Otherwise ask the user which browser they actually use (${report.identification.reason}), record the answer in memory, then run node "<skill-root>/scripts/browser-install.mjs" --browser=<id>.`,
@@ -47,7 +47,7 @@ if (process.argv.includes("--json")) {
47
47
  console.log(`state: ${state}`)
48
48
  console.log(`omowright: ${entry}`)
49
49
  console.log(`cli: ${report.cli.installed ? `${report.cli.bskBin} (${report.cli.version})` : "not installed"}`)
50
- console.log(`daemon: ${report.daemon.running ? `running (${report.daemon.version}, protocol ${report.daemon.protocolVersion})` : `not running${report.daemon.error ? ` — ${report.daemon.error}` : ""}`}`)
50
+ console.log(`daemon: ${report.daemon.running ? `running (${report.daemon.version}, protocol ${report.daemon.protocolVersion})` : `not running${report.daemon.error ? ` - ${report.daemon.error}` : ""}`}`)
51
51
  console.log(`browser the user uses: ${summary.browser ? `${summary.browser.label} [${summary.browser.id}] (${summary.browser.reason})` : `not identified (${report.identification.reason})`}`)
52
52
  console.log(`candidates: ${summary.candidates.map((c) => `${c.id}${c.signals.length ? ` (${c.signals.join(", ")})` : ""}`).join(", ") || "none"}`)
53
53
  if (summary.registeredElsewhere.length > 0) console.log(`extension entries left in other browsers: ${summary.registeredElsewhere.join(", ")} (not removed automatically)`)