oh-my-opencode 5.1.48 → 5.1.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/atlas/agent.d.ts +5 -5
- package/dist/agents/dynamic-agent-core-sections.d.ts +0 -1
- package/dist/agents/dynamic-agent-prompt-builder.d.ts +1 -1
- package/dist/agents/gpt-apply-patch-guard.d.ts +0 -1
- package/dist/agents/hephaestus/agent.d.ts +3 -7
- package/dist/agents/hephaestus/model-support.d.ts +6 -0
- package/dist/agents/metis.d.ts +0 -15
- package/dist/agents/native-model-prompt.d.ts +9 -0
- package/dist/agents/native-prompt-frame.d.ts +20 -0
- package/dist/agents/native-tool-snippet.d.ts +6 -0
- package/dist/agents/refusal-rule.d.ts +7 -0
- package/dist/agents/sisyphus/default.d.ts +0 -1
- package/dist/agents/sisyphus-agent-factory.d.ts +2 -11
- package/dist/agents/sisyphus-junior/agent.d.ts +2 -20
- package/dist/agents/sisyphus-junior/index.d.ts +1 -11
- package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +6 -0
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +2255 -1044
- package/dist/cli/service-auth/accounts-gate.d.ts +11 -0
- package/dist/cli/service-auth/commands.d.ts +2 -4
- package/dist/cli/service-auth/credential-lock.d.ts +11 -0
- package/dist/cli/service-auth/credential-owner.d.ts +10 -0
- package/dist/cli/service-auth/index.d.ts +3 -1
- package/dist/cli/service-auth/keystore.d.ts +33 -2
- package/dist/cli/service-auth/owned-refresh.d.ts +21 -0
- package/dist/cli/service-auth/protocol-v2.d.ts +27 -0
- package/dist/cli/service-auth/protocol.d.ts +32 -2
- package/dist/cli/service-auth/recovery-clock.d.ts +7 -0
- package/dist/cli/service-auth/refresh-attempt.d.ts +34 -0
- package/dist/cli/service-auth/session.d.ts +15 -2
- package/dist/cli/service-auth/signed-out-marker.d.ts +11 -0
- package/dist/cli-node/index.js +2255 -1044
- package/dist/config/schema/hooks.d.ts +1 -0
- package/dist/create-hooks.d.ts +1 -0
- package/dist/features/boulder-state/storage.d.ts +1 -1
- package/dist/features/boulder-state/types.d.ts +1 -1
- package/dist/hooks/atlas/idle-continuation.d.ts +2 -1
- package/dist/hooks/atlas/types.d.ts +9 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/momus-review-persistence/hook.d.ts +19 -0
- package/dist/hooks/momus-review-persistence/index.d.ts +1 -0
- package/dist/hooks/momus-review-persistence/review-resolution.d.ts +20 -0
- package/dist/hooks/native-edition-nudge/hook.d.ts +3 -4
- package/dist/hooks/prometheus-md-only/constants.d.ts +2 -0
- package/dist/hooks/prometheus-md-only/fixtures/denial-log.d.ts +1 -0
- package/dist/hooks/prometheus-md-only/fixtures/guarded-hashline.d.ts +1 -0
- package/dist/hooks/prometheus-md-only/fixtures/invoke-before.d.ts +7 -0
- package/dist/hooks/prometheus-md-only/fixtures/opencode-patch-parser.d.ts +2 -0
- package/dist/hooks/prometheus-md-only/hook.d.ts +5 -1
- package/dist/hooks/prometheus-md-only/path-policy.d.ts +2 -9
- package/dist/hooks/prometheus-md-only/vendor/opencode-patch-parser.d.ts +22 -0
- package/dist/index.js +17483 -9494
- package/dist/plugin/hooks/create-core-hooks.d.ts +1 -0
- package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -1
- package/dist/plugin/session-tool-permissions.d.ts +10 -0
- package/dist/plugin/system-transform.d.ts +2 -1
- package/dist/plugin/tool-definition.d.ts +1 -0
- package/dist/shared/bun-ffi-shim.d.ts +29 -0
- package/dist/shared/json-file-cache-store.d.ts +11 -0
- package/dist/shared/posthog-activity-state.d.ts +1 -0
- package/dist/shared/posthog.d.ts +1 -2
- package/dist/shared/resolve-file-write-path.d.ts +6 -0
- package/dist/skills/ast-grep/README.md +1 -1
- package/dist/skills/ast-grep/install.ps1 +5 -3
- package/dist/skills/ast-grep/install.sh +4 -5
- package/dist/skills/ast-grep/references/install.md +2 -2
- package/dist/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/dist/skills/browser/runtime/omowright/index.js +24 -33
- package/dist/skills/browser/runtime/omowright/manifest.json +3 -3
- package/dist/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/dist/skills/coding-agent-sessions/SKILL.md +11 -11
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/dist/skills/coding-agent-sessions/references/codex.md +4 -4
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/dist/skills/frontend/ATTRIBUTION.md +105 -2
- package/dist/skills/frontend/SKILL.md +40 -14
- package/dist/skills/frontend/references/design/README.md +2 -2
- package/dist/skills/frontend/references/design/_INDEX.md +2 -1
- package/dist/skills/frontend/references/design/component-catalogs.md +14 -10
- package/dist/skills/frontend/references/design/design-system-architecture.md +22 -9
- package/dist/skills/frontend/references/design/grounding.md +29 -0
- package/dist/skills/frontend/references/perfection/craft-floor.md +59 -0
- package/dist/skills/frontend/references/perfection/detect.md +52 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/dist/skills/frontend/scripts/detect/cli.ts +70 -0
- package/dist/skills/frontend/scripts/detect/config.test.ts +26 -0
- package/dist/skills/frontend/scripts/detect/config.ts +53 -0
- package/dist/skills/frontend/scripts/detect/core/characters.ts +2 -0
- package/dist/skills/frontend/scripts/detect/core/color.test.ts +29 -0
- package/dist/skills/frontend/scripts/detect/core/color.ts +150 -0
- package/dist/skills/frontend/scripts/detect/core/page.ts +84 -0
- package/dist/skills/frontend/scripts/detect/core/shadow.ts +40 -0
- package/dist/skills/frontend/scripts/detect/core/source.ts +33 -0
- package/dist/skills/frontend/scripts/detect/detect.ts +77 -0
- package/dist/skills/frontend/scripts/detect/index.ts +23 -0
- package/dist/skills/frontend/scripts/detect/lint.test.ts +27 -0
- package/dist/skills/frontend/scripts/detect/lint.ts +98 -0
- package/dist/skills/frontend/scripts/detect/render/probe-placement.test.ts +19 -0
- package/dist/skills/frontend/scripts/detect/render/probe-placement.ts +50 -0
- package/dist/skills/frontend/scripts/detect/render/renderer.ts +37 -0
- package/dist/skills/frontend/scripts/detect/render/webview.ts +71 -0
- package/dist/skills/frontend/scripts/detect/report.ts +29 -0
- package/dist/skills/frontend/scripts/detect/rule.ts +42 -0
- package/dist/skills/frontend/scripts/detect/rules/color/ai-color-palette.test.ts +74 -0
- package/dist/skills/frontend/scripts/detect/rules/color/ai-color-palette.ts +83 -0
- package/dist/skills/frontend/scripts/detect/rules/color/cream-palette.test.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/color/cream-palette.ts +35 -0
- package/dist/skills/frontend/scripts/detect/rules/color/dark-glow.test.ts +47 -0
- package/dist/skills/frontend/scripts/detect/rules/color/dark-glow.ts +44 -0
- package/dist/skills/frontend/scripts/detect/rules/color/design-system-color.test.ts +26 -0
- package/dist/skills/frontend/scripts/detect/rules/color/design-system-color.ts +35 -0
- package/dist/skills/frontend/scripts/detect/rules/color/gradient-text.test.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/color/gradient-text.ts +59 -0
- package/dist/skills/frontend/scripts/detect/rules/color/gray-on-color.test.ts +39 -0
- package/dist/skills/frontend/scripts/detect/rules/color/gray-on-color.ts +38 -0
- package/dist/skills/frontend/scripts/detect/rules/color/index.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/color/low-contrast.test.ts +209 -0
- package/dist/skills/frontend/scripts/detect/rules/color/low-contrast.ts +57 -0
- package/dist/skills/frontend/scripts/detect/rules/color/placeholder-contrast.test.ts +62 -0
- package/dist/skills/frontend/scripts/detect/rules/color/radial-halo.test.ts +40 -0
- package/dist/skills/frontend/scripts/detect/rules/color/radial-halo.ts +31 -0
- package/dist/skills/frontend/scripts/detect/rules/color/radial-spotlight-glow.test.ts +27 -0
- package/dist/skills/frontend/scripts/detect/rules/color/radial-spotlight-glow.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/animation-opacity.ts +78 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/color-path.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/contrast-pairs.ts +54 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/contrast-role.ts +76 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/glow-forms.ts +56 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/gradient-samples.ts +134 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/gradients.ts +91 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/mockup-roots.ts +63 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/page-ignore.ts +7 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/painted-text.ts +141 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/palette-roles.ts +58 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/placeholder-contrast.ts +25 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/stock-accent.ts +31 -0
- package/dist/skills/frontend/scripts/detect/rules/color/support/text-colors.ts +80 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/aphoristic-cadence.test.ts +18 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/aphoristic-cadence.ts +20 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/broken-image.test.ts +25 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/broken-image.ts +17 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/em-dash-overuse.test.ts +39 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/em-dash-overuse.ts +46 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/index.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/marketing-buzzword.test.ts +18 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/marketing-buzzword.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/numbered-section-labels.test.ts +58 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/numbered-section-labels.ts +34 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/repeated-container-text.test.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/repeated-container-text.ts +56 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/script-error.test.ts +48 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/script-error.ts +38 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/skipped-heading.test.ts +49 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/skipped-heading.ts +81 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/support/numbered-label.ts +94 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/support/page-text.ts +37 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/theater-slop-phrase.test.ts +17 -0
- package/dist/skills/frontend/scripts/detect/rules/copy/theater-slop-phrase.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/blinking-cursor.test.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/blinking-cursor.ts +48 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/border-accent-on-rounded.test.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/border-accent-on-rounded.ts +14 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/bounce-easing.test.ts +72 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/bounce-easing.ts +83 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/buried-raster.test.ts +95 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/buried-raster.ts +72 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/codex-grid-background.test.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/codex-grid-background.ts +34 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/design-system-radius.test.ts +37 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/design-system-radius.ts +31 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/gpt-thin-border-wide-shadow.test.ts +59 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/gpt-thin-border-wide-shadow.ts +66 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/hard-offset-shadow.test.ts +45 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/hard-offset-shadow.ts +31 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/hero-eyebrow-chip.test.ts +76 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/hero-eyebrow-chip.ts +19 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/icon-tile-stack.test.ts +67 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/icon-tile-stack.ts +92 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/index.ts +38 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/kicker-above-heading.test.ts +126 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/kicker-above-heading.ts +69 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/marquee.test.ts +63 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/marquee.ts +51 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/organic-clip-path.test.ts +67 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/organic-clip-path.ts +41 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/pulsing-dot.test.ts +58 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/pulsing-dot.ts +72 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/repeating-stripes-gradient.test.ts +26 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/repeating-stripes-gradient.ts +25 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/shape-assembled-illustration.test.ts +59 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/shape-assembled-illustration.ts +58 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/side-tab.test.ts +91 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/side-tab.ts +17 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/appearance.ts +110 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/assert-cases.ts +25 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/borders.ts +150 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/clip-geometry.ts +151 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/css-candidates.ts +66 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/curve-samples.ts +55 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/gradient-pattern.ts +40 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/keyframes.ts +134 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/labels.ts +85 -0
- package/dist/skills/frontend/scripts/detect/rules/decoration/support/raster-state.ts +51 -0
- package/dist/skills/frontend/scripts/detect/rules/index.ts +16 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/body-text-viewport-edge.test.ts +64 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/body-text-viewport-edge.ts +62 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/clipped-overflow-container.test.ts +40 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/clipped-overflow-container.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/content-hidden-at-rest.test.ts +62 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/content-hidden-at-rest.ts +63 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/cramped-padding.test.ts +61 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/cramped-padding.ts +97 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/edge-flush-cards.test.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/edge-flush-cards.ts +47 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/first-viewport-column-overflow.test.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/first-viewport-column-overflow.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/heading-rhythm.test.ts +67 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/heading-rhythm.ts +30 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/index.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/monotonous-spacing.test.ts +19 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/monotonous-spacing.ts +32 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/nested-cards.test.ts +60 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/nested-cards.ts +38 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/straggler.test.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/straggler.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/cards.ts +114 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/clipping.ts +71 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/declared-mockups.ts +46 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/geometry.ts +73 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/hidden-interface.ts +35 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/layout-cases.ts +23 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/line-breaks.ts +32 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/motion.ts +77 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/padding.ts +93 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/support/rhythm.ts +161 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/text-occlusion.test.ts +37 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/text-occlusion.ts +84 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/text-overflow.test.ts +83 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/text-overflow.ts +72 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/unbalanced-heading.test.ts +22 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/unbalanced-heading.ts +22 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/viewport-reflow.test.ts +34 -0
- package/dist/skills/frontend/scripts/detect/rules/layout/viewport-reflow.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/source/ai-color-palette.test.ts +13 -0
- package/dist/skills/frontend/scripts/detect/rules/source/ai-color-palette.ts +11 -0
- package/dist/skills/frontend/scripts/detect/rules/source/aphoristic-cadence.test.ts +12 -0
- package/dist/skills/frontend/scripts/detect/rules/source/aphoristic-cadence.ts +14 -0
- package/dist/skills/frontend/scripts/detect/rules/source/border-accent-on-rounded.test.ts +14 -0
- package/dist/skills/frontend/scripts/detect/rules/source/border-accent-on-rounded.ts +20 -0
- package/dist/skills/frontend/scripts/detect/rules/source/bounce-easing.test.ts +19 -0
- package/dist/skills/frontend/scripts/detect/rules/source/bounce-easing.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/source/broken-image.test.ts +27 -0
- package/dist/skills/frontend/scripts/detect/rules/source/broken-image.ts +16 -0
- package/dist/skills/frontend/scripts/detect/rules/source/codex-grid-background.test.ts +11 -0
- package/dist/skills/frontend/scripts/detect/rules/source/codex-grid-background.ts +18 -0
- package/dist/skills/frontend/scripts/detect/rules/source/dark-glow.test.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/source/dark-glow.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/source/em-dash-overuse.test.ts +13 -0
- package/dist/skills/frontend/scripts/detect/rules/source/em-dash-overuse.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/source/gradient-text.test.ts +12 -0
- package/dist/skills/frontend/scripts/detect/rules/source/gradient-text.ts +11 -0
- package/dist/skills/frontend/scripts/detect/rules/source/gray-on-color.test.ts +20 -0
- package/dist/skills/frontend/scripts/detect/rules/source/gray-on-color.ts +13 -0
- package/dist/skills/frontend/scripts/detect/rules/source/index.ts +19 -0
- package/dist/skills/frontend/scripts/detect/rules/source/marketing-buzzword.test.ts +12 -0
- package/dist/skills/frontend/scripts/detect/rules/source/marketing-buzzword.ts +17 -0
- package/dist/skills/frontend/scripts/detect/rules/source/marquee.test.ts +12 -0
- package/dist/skills/frontend/scripts/detect/rules/source/marquee.ts +12 -0
- package/dist/skills/frontend/scripts/detect/rules/source/monotonous-spacing.test.ts +13 -0
- package/dist/skills/frontend/scripts/detect/rules/source/monotonous-spacing.ts +22 -0
- package/dist/skills/frontend/scripts/detect/rules/source/overused-font.test.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/source/overused-font.ts +16 -0
- package/dist/skills/frontend/scripts/detect/rules/source/radial-halo.test.ts +16 -0
- package/dist/skills/frontend/scripts/detect/rules/source/radial-halo.ts +14 -0
- package/dist/skills/frontend/scripts/detect/rules/source/side-tab.test.ts +29 -0
- package/dist/skills/frontend/scripts/detect/rules/source/side-tab.ts +58 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/accent-scans.ts +78 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/check-source.ts +6 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/corners.ts +105 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/css-effects.ts +81 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/css-scopes.ts +131 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/image-tags.ts +113 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/js-punctuation.ts +34 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/markup-scope.ts +44 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/source-color.ts +42 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/source-shadow.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/source/support/source-text.ts +110 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/all-caps-body.test.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/all-caps-body.ts +15 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/design-system-font-size.test.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/design-system-font-size.ts +23 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/design-system-font.test.ts +22 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/design-system-font.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/extreme-negative-tracking.test.ts +23 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/extreme-negative-tracking.ts +18 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/flat-type-hierarchy.test.ts +33 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/flat-type-hierarchy.ts +26 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/index.ts +21 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/italic-serif-display.test.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/italic-serif-display.ts +24 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/justified-text.test.ts +31 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/justified-text.ts +32 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/line-length.test.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/line-length.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/oversized-h1.test.ts +26 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/oversized-h1.ts +20 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/overused-font.test.ts +35 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/overused-font.ts +45 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/drawn-enlargement.ts +48 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/fading-text.ts +48 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/flex-runs.ts +16 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/font-family.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/painted-text.test.ts +63 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/painted-text.ts +81 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/svg-size.ts +57 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/text-context.ts +112 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/text-lines.ts +43 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/support/type-hierarchy.ts +48 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/tight-leading.test.ts +54 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/tight-leading.ts +47 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/tiny-text.test.ts +60 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/tiny-text.ts +23 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/undersized-ui-text.test.ts +98 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/undersized-ui-text.ts +28 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/wide-tracking.test.ts +26 -0
- package/dist/skills/frontend/scripts/detect/rules/typography/wide-tracking.ts +26 -0
- package/dist/skills/frontend/scripts/detect/snapshot/collect.ts +158 -0
- package/dist/skills/frontend/scripts/detect/snapshot/style-props.ts +25 -0
- package/dist/skills/frontend/scripts/detect/testing/build-snapshot.ts +78 -0
- package/dist/skills/frontend/scripts/detect/tsconfig.json +19 -0
- package/dist/skills/frontend/scripts/detect/types.ts +124 -0
- package/dist/skills/programming/SKILL.md +15 -74
- package/dist/skills/programming/references/go/README.md +1 -1
- package/dist/skills/programming/references/go/bootstrap.md +2 -2
- package/dist/skills/programming/references/python/README.md +4 -4
- package/dist/skills/programming/references/python/one-liners.md +5 -5
- package/dist/skills/programming/references/testing/README.md +82 -0
- package/dist/skills/programming/references/testing/junk-classes.md +56 -0
- package/dist/skills/programming/references/typescript/README.md +1 -2
- package/dist/skills/programming/scripts/go/new-project.ts +197 -0
- package/dist/skills/programming/scripts/python/new-project.ts +231 -0
- package/dist/skills/programming/scripts/python/new-script.ts +134 -0
- package/dist/skills/programming/scripts/rust/new-project.ts +215 -0
- package/dist/skills/programming/scripts/scaffolders.test.ts +96 -0
- package/dist/skills/programming/scripts/shared/run-tool.ts +19 -0
- package/dist/skills/ultimate-browsing/SKILL.md +5 -4
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/dist/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/dist/skills/ultimate-browsing/engine/summary.py +1 -1
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/dist/skills/ulw-research/AGENTS.md +8 -4
- package/dist/skills/ulw-research/SKILL.md +7 -316
- package/dist/skills/ulw-research/references/deliverable-phase.md +23 -21
- package/dist/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/dist/skills/ulw-research/references/fact-ledger.md +42 -8
- package/dist/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/dist/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/dist/skills/ulw-research/references/report-gates.md +12 -5
- package/dist/skills/ulw-research/references/research-collection.md +195 -0
- package/dist/skills/ulw-research/references/research-delivery.md +123 -0
- package/dist/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/dist/skills/ulw-research/scripts/claim-kinds.test.ts +37 -2
- package/dist/skills/ulw-research/scripts/claim-prefix.test.ts +76 -0
- package/dist/skills/ulw-research/scripts/contracts-validation.test.ts +83 -0
- package/dist/skills/ulw-research/scripts/contracts.mjs +13 -4
- package/dist/skills/ulw-research/scripts/contracts.test.ts +6 -110
- package/dist/skills/ulw-research/scripts/conversion-altered.test.ts +154 -0
- package/dist/skills/ulw-research/scripts/conversion-originals.test.ts +297 -0
- package/dist/skills/ulw-research/scripts/conversion-probe-classes.test.ts +361 -0
- package/dist/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/dist/skills/ulw-research/scripts/conversion-probe.test.ts +218 -0
- package/dist/skills/ulw-research/scripts/copy-returns-polish.test.ts +4 -3
- package/dist/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/dist/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/dist/skills/ulw-research/scripts/delivery-barrier-meaning.test.ts +186 -0
- package/dist/skills/ulw-research/scripts/delivery-barrier.test.ts +40 -87
- package/dist/skills/ulw-research/scripts/entities.mjs +13 -4
- package/dist/skills/ulw-research/scripts/fact-commands-fill.mjs +11 -1
- package/dist/skills/ulw-research/scripts/fact-commands-meaning.mjs +13 -9
- package/dist/skills/ulw-research/scripts/fact-commands-polish.mjs +40 -18
- package/dist/skills/ulw-research/scripts/fact-commands-verify.mjs +25 -8
- package/dist/skills/ulw-research/scripts/fact-commands.mjs +35 -16
- package/dist/skills/ulw-research/scripts/fact-derive-2.test.ts +149 -0
- package/dist/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/dist/skills/ulw-research/scripts/fact-derive.test.ts +7 -192
- package/dist/skills/ulw-research/scripts/fact-fill.mjs +6 -4
- package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +2 -1
- package/dist/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +2 -1
- package/dist/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/dist/skills/ulw-research/scripts/fact-unit-dimensions-2.test.ts +149 -0
- package/dist/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +4 -168
- package/dist/skills/ulw-research/scripts/fact-unit-rules.test.ts +3 -229
- package/dist/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/dist/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/dist/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/dist/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/dist/skills/ulw-research/scripts/fidelity-policy.mjs +4 -4
- package/dist/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/dist/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/dist/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/dist/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/dist/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/dist/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/dist/skills/ulw-research/scripts/fidelity-values.test.ts +8 -29
- package/dist/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/dist/skills/ulw-research/scripts/gates-static-headings.test.ts +17 -0
- package/dist/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/dist/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/dist/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/dist/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/dist/skills/ulw-research/scripts/html-text-map.test.ts +148 -0
- package/dist/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/dist/skills/ulw-research/scripts/md-lite-boundaries.test.ts +46 -0
- package/dist/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/dist/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/dist/skills/ulw-research/scripts/number-grammar.test.ts +36 -0
- package/dist/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/dist/skills/ulw-research/scripts/numerals.test.ts +3 -0
- package/dist/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/dist/skills/ulw-research/scripts/outcome-start.test.ts +109 -0
- package/dist/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/dist/skills/ulw-research/scripts/page-source-locator.test.ts +187 -0
- package/dist/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/dist/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/dist/skills/ulw-research/scripts/polish-markup.test.ts +15 -1
- package/dist/skills/ulw-research/scripts/polish-partial.test.ts +42 -0
- package/dist/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/dist/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/dist/skills/ulw-research/scripts/raw-snapshot.test.ts +139 -0
- package/dist/skills/ulw-research/scripts/report-tools-2.test.ts +233 -0
- package/dist/skills/ulw-research/scripts/report-tools-3.test.ts +141 -0
- package/dist/skills/ulw-research/scripts/report-tools-4.test.ts +135 -0
- package/dist/skills/ulw-research/scripts/report-tools-5.test.ts +231 -0
- package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/dist/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/dist/skills/ulw-research/scripts/report-tools.test.ts +5 -800
- package/dist/skills/ulw-research/scripts/snapshot-readability.test.ts +116 -0
- package/dist/skills/ulw-research/scripts/source-commands.mjs +79 -26
- package/dist/skills/ulw-research/scripts/source-integrity.test.ts +243 -0
- package/dist/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/dist/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/dist/skills/ulw-research/scripts/source-snapshot.test.ts +7 -4
- package/dist/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/dist/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/dist/skills/ulw-research/scripts/sources-citation.test.ts +236 -0
- package/dist/skills/ulw-research/scripts/tests/contracts-support.ts +147 -0
- package/dist/skills/ulw-research/scripts/tests/delivery-barrier-session.ts +59 -0
- package/dist/skills/ulw-research/scripts/tests/derive-clock.ts +4 -0
- package/dist/skills/ulw-research/scripts/tests/fact-derive-support.ts +65 -0
- package/dist/skills/ulw-research/scripts/tests/fact-unit-dimensions-support.ts +41 -0
- package/dist/skills/ulw-research/scripts/tests/fact-unit-rules-support.ts +241 -0
- package/dist/skills/ulw-research/scripts/tests/fidelity-values-support.ts +30 -0
- package/dist/skills/ulw-research/scripts/tests/fixtures/conversion-probe.html +14 -0
- package/dist/skills/ulw-research/scripts/tests/fixtures/sources-shapes.html +20 -0
- package/dist/skills/ulw-research/scripts/tests/numeral-classes.ts +196 -0
- package/dist/skills/ulw-research/scripts/tests/report-tools-support.ts +182 -0
- package/dist/skills/ulw-research/scripts/tests/value-mode-support.ts +48 -0
- package/dist/skills/ulw-research/scripts/units.mjs +14 -3
- package/dist/skills/ulw-research/scripts/units.test.ts +10 -0
- package/dist/skills/ulw-research/scripts/value-mode-unit-classes.test.ts +255 -0
- package/dist/skills/ulw-research/scripts/value-mode-unit.test.ts +179 -0
- package/dist/skills/ulw-research/scripts/value-rules-cli.test.ts +157 -0
- package/dist/skills/ulw-research/scripts/value-rules-followups.test.ts +72 -0
- package/dist/skills/ulw-research/scripts/value-rules-priority.test.ts +80 -0
- package/dist/skills/visual-qa/SKILL.md +12 -1
- package/dist/tools/delegate-task/executor-types.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-existence.d.ts +4 -0
- package/dist/tools/delegate-task/types.d.ts +1 -0
- package/dist/tools/skill/description-formatter.d.ts +2 -1
- package/dist/tools/skill/types.d.ts +6 -0
- package/dist/tui.js +245 -58
- package/package.json +24 -20
- package/packages/git-bash-mcp/package.json +1 -1
- package/packages/lsp-core/src/lsp/config-loader.ts +18 -2
- package/packages/lsp-core/src/lsp/host-js-runtime.test.ts +150 -0
- package/packages/lsp-core/src/lsp/host-js-runtime.ts +57 -0
- package/packages/lsp-core/src/lsp/server-definitions.ts +10 -0
- package/packages/lsp-core/src/lsp/server-resolution.ts +9 -1
- package/packages/lsp-core/src/lsp/typescript-server-defaults.test.ts +84 -0
- package/packages/lsp-daemon/dist/cli.js +81 -15
- package/packages/lsp-daemon/dist/client.js +74 -8
- package/packages/lsp-daemon/dist/index.js +76 -10
- package/packages/lsp-tools-mcp/dist/cli.js +74 -8
- package/packages/lsp-tools-mcp/dist/mcp.js +74 -8
- package/packages/lsp-tools-mcp/dist/tools.js +74 -8
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/README.md +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +20 -4
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +51 -55
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/SKILL.md +7 -7
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +77 -13
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +2 -2
- package/packages/omo-codex/plugin/components/telemetry/README.md +2 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +85 -16
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +85 -20
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +2 -9
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -13
- package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +0 -2
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook-diagnostics.test.ts +0 -3
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +17 -9
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +3 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +16 -16
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +16 -1
- package/packages/omo-codex/plugin/shared/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/README.md +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/install.ps1 +5 -3
- package/packages/omo-codex/plugin/skills/ast-grep/install.sh +4 -5
- package/packages/omo-codex/plugin/skills/ast-grep/references/install.md +2 -2
- package/packages/omo-codex/plugin/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +24 -33
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +3 -3
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +11 -11
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +105 -2
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +40 -14
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/component-catalogs.md +14 -10
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +22 -9
- package/packages/omo-codex/plugin/skills/frontend/references/design/grounding.md +29 -0
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/craft-floor.md +59 -0
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/detect.md +52 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/cli.ts +70 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/config.ts +53 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/core/characters.ts +2 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/core/color.ts +150 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/core/page.ts +84 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/core/shadow.ts +40 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/core/source.ts +33 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/detect.ts +77 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/index.ts +23 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/lint.ts +98 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/render/probe-placement.ts +50 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/render/renderer.ts +37 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/render/webview.ts +71 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/report.ts +29 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rule.ts +42 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/ai-color-palette.ts +83 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/cream-palette.ts +35 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/dark-glow.ts +44 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/design-system-color.ts +35 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/gradient-text.ts +59 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/gray-on-color.ts +38 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/index.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/low-contrast.ts +57 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/radial-halo.ts +31 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/radial-spotlight-glow.ts +33 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/animation-opacity.ts +78 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/color-path.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/contrast-pairs.ts +54 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/contrast-role.ts +76 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/glow-forms.ts +56 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/gradient-samples.ts +134 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/gradients.ts +91 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/mockup-roots.ts +63 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/page-ignore.ts +7 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/painted-text.ts +141 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/palette-roles.ts +58 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/placeholder-contrast.ts +25 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/stock-accent.ts +31 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/color/support/text-colors.ts +80 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/aphoristic-cadence.ts +20 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/broken-image.ts +17 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/em-dash-overuse.ts +46 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/index.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/marketing-buzzword.ts +33 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/numbered-section-labels.ts +34 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/repeated-container-text.ts +56 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/script-error.ts +38 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/skipped-heading.ts +81 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/support/numbered-label.ts +94 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/support/page-text.ts +37 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/copy/theater-slop-phrase.ts +21 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/blinking-cursor.ts +48 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/border-accent-on-rounded.ts +14 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/bounce-easing.ts +83 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/buried-raster.ts +72 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/codex-grid-background.ts +34 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/design-system-radius.ts +31 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/gpt-thin-border-wide-shadow.ts +66 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/hard-offset-shadow.ts +31 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/hero-eyebrow-chip.ts +19 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/icon-tile-stack.ts +92 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/index.ts +38 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/kicker-above-heading.ts +69 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/marquee.ts +51 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/organic-clip-path.ts +41 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/pulsing-dot.ts +72 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/repeating-stripes-gradient.ts +25 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/shape-assembled-illustration.ts +58 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/side-tab.ts +17 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/appearance.ts +110 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/assert-cases.ts +25 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/borders.ts +150 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/clip-geometry.ts +151 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/css-candidates.ts +66 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/curve-samples.ts +55 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/gradient-pattern.ts +40 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/keyframes.ts +134 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/labels.ts +85 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/decoration/support/raster-state.ts +51 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/index.ts +16 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/body-text-viewport-edge.ts +62 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/clipped-overflow-container.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/content-hidden-at-rest.ts +63 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/cramped-padding.ts +97 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/edge-flush-cards.ts +47 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/first-viewport-column-overflow.ts +43 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/heading-rhythm.ts +30 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/index.ts +21 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/monotonous-spacing.ts +32 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/nested-cards.ts +38 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/straggler.ts +28 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/cards.ts +114 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/clipping.ts +71 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/declared-mockups.ts +46 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/geometry.ts +73 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/hidden-interface.ts +35 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/layout-cases.ts +23 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/line-breaks.ts +32 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/motion.ts +77 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/padding.ts +93 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/support/rhythm.ts +161 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/text-occlusion.ts +84 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/text-overflow.ts +72 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/unbalanced-heading.ts +22 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/layout/viewport-reflow.ts +33 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/ai-color-palette.ts +11 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/aphoristic-cadence.ts +14 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/border-accent-on-rounded.ts +20 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/bounce-easing.ts +21 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/broken-image.ts +16 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/codex-grid-background.ts +18 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/dark-glow.ts +21 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/em-dash-overuse.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/gradient-text.ts +11 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/gray-on-color.ts +13 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/index.ts +19 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/marketing-buzzword.ts +17 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/marquee.ts +12 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/monotonous-spacing.ts +22 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/overused-font.ts +16 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/radial-halo.ts +14 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/side-tab.ts +58 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/accent-scans.ts +78 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/check-source.ts +6 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/corners.ts +105 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/css-effects.ts +81 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/css-scopes.ts +131 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/image-tags.ts +113 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/js-punctuation.ts +34 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/markup-scope.ts +44 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/source-color.ts +42 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/source-shadow.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/source/support/source-text.ts +110 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/all-caps-body.ts +15 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/design-system-font-size.ts +23 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/design-system-font.ts +24 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/extreme-negative-tracking.ts +18 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/flat-type-hierarchy.ts +26 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/index.ts +21 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/italic-serif-display.ts +24 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/justified-text.ts +32 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/line-length.ts +28 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/oversized-h1.ts +20 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/overused-font.ts +45 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/drawn-enlargement.ts +48 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/fading-text.ts +48 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/flex-runs.ts +16 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/font-family.ts +28 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/painted-text.ts +81 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/svg-size.ts +57 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/text-context.ts +112 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/text-lines.ts +43 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/support/type-hierarchy.ts +48 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/tight-leading.ts +47 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/tiny-text.ts +23 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/undersized-ui-text.ts +28 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/rules/typography/wide-tracking.ts +26 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/snapshot/collect.ts +158 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/snapshot/style-props.ts +25 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/testing/build-snapshot.ts +78 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/tsconfig.json +19 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/detect/types.ts +124 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +51 -55
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +7 -7
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +15 -74
- package/packages/omo-codex/plugin/skills/programming/references/go/README.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/go/bootstrap.md +2 -2
- package/packages/omo-codex/plugin/skills/programming/references/python/README.md +4 -4
- package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +5 -5
- package/packages/omo-codex/plugin/skills/programming/references/testing/README.md +82 -0
- package/packages/omo-codex/plugin/skills/programming/references/testing/junk-classes.md +56 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +1 -2
- package/packages/omo-codex/plugin/skills/programming/scripts/go/new-project.ts +197 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-project.ts +231 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-script.ts +134 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.ts +215 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/shared/run-tool.ts +19 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +5 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/summary.py +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +3 -0
- package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +8 -4
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +7 -316
- package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +23 -21
- package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger.md +42 -8
- package/packages/omo-codex/plugin/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +12 -5
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-collection.md +195 -0
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-delivery.md +123 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +13 -4
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/entities.mjs +13 -4
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-fill.mjs +11 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-meaning.mjs +13 -9
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-polish.mjs +40 -18
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-verify.mjs +25 -8
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands.mjs +35 -16
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-fill.mjs +6 -4
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-policy.mjs +4 -4
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +79 -26
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +14 -3
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +12 -1
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +62 -0
- package/packages/omo-codex/plugin/test/payload-equivalence.test.mjs +18 -6
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +413 -245
- package/packages/prompts-core/prompts/ultrawork/codex.md +3 -0
- package/packages/shared-skills/skill-source-filter.mjs +6 -2
- package/packages/shared-skills/skills/ast-grep/README.md +1 -1
- package/packages/shared-skills/skills/ast-grep/install.ps1 +5 -3
- package/packages/shared-skills/skills/ast-grep/install.sh +4 -5
- package/packages/shared-skills/skills/ast-grep/references/install.md +2 -2
- package/packages/shared-skills/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/packages/shared-skills/skills/browser/runtime/omowright/index.js +24 -33
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +3 -3
- package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +11 -11
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +105 -2
- package/packages/shared-skills/skills/frontend/SKILL.md +40 -14
- package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -1
- package/packages/shared-skills/skills/frontend/references/design/component-catalogs.md +14 -10
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +22 -9
- package/packages/shared-skills/skills/frontend/references/design/grounding.md +29 -0
- package/packages/shared-skills/skills/frontend/references/perfection/craft-floor.md +59 -0
- package/packages/shared-skills/skills/frontend/references/perfection/detect.md +52 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/cli.ts +70 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/config.test.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/config.ts +53 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/characters.ts +2 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/color.test.ts +29 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/color.ts +150 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/page.ts +84 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/shadow.ts +40 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/core/source.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/detect.ts +77 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/index.ts +23 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/lint.test.ts +27 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/lint.ts +98 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/render/probe-placement.test.ts +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/render/probe-placement.ts +50 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/render/renderer.ts +37 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/render/webview.ts +71 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/report.ts +29 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rule.ts +42 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/ai-color-palette.test.ts +74 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/ai-color-palette.ts +83 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/cream-palette.test.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/cream-palette.ts +35 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/dark-glow.test.ts +47 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/dark-glow.ts +44 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/design-system-color.test.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/design-system-color.ts +35 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/gradient-text.test.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/gradient-text.ts +59 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/gray-on-color.test.ts +39 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/gray-on-color.ts +38 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/index.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/low-contrast.test.ts +209 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/low-contrast.ts +57 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/placeholder-contrast.test.ts +62 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/radial-halo.test.ts +40 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/radial-halo.ts +31 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/radial-spotlight-glow.test.ts +27 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/radial-spotlight-glow.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/animation-opacity.ts +78 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/color-path.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/contrast-pairs.ts +54 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/contrast-role.ts +76 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/glow-forms.ts +56 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/gradient-samples.ts +134 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/gradients.ts +91 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/mockup-roots.ts +63 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/page-ignore.ts +7 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/painted-text.ts +141 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/palette-roles.ts +58 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/placeholder-contrast.ts +25 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/stock-accent.ts +31 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/color/support/text-colors.ts +80 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/aphoristic-cadence.test.ts +18 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/aphoristic-cadence.ts +20 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/broken-image.test.ts +25 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/broken-image.ts +17 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/em-dash-overuse.test.ts +39 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/em-dash-overuse.ts +46 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/index.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/marketing-buzzword.test.ts +18 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/marketing-buzzword.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/numbered-section-labels.test.ts +58 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/numbered-section-labels.ts +34 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/repeated-container-text.test.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/repeated-container-text.ts +56 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/script-error.test.ts +48 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/script-error.ts +38 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/skipped-heading.test.ts +49 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/skipped-heading.ts +81 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/support/numbered-label.ts +94 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/support/page-text.ts +37 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/theater-slop-phrase.test.ts +17 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/copy/theater-slop-phrase.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/blinking-cursor.test.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/blinking-cursor.ts +48 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/border-accent-on-rounded.test.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/border-accent-on-rounded.ts +14 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/bounce-easing.test.ts +72 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/bounce-easing.ts +83 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/buried-raster.test.ts +95 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/buried-raster.ts +72 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/codex-grid-background.test.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/codex-grid-background.ts +34 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/design-system-radius.test.ts +37 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/design-system-radius.ts +31 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/gpt-thin-border-wide-shadow.test.ts +59 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/gpt-thin-border-wide-shadow.ts +66 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/hard-offset-shadow.test.ts +45 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/hard-offset-shadow.ts +31 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/hero-eyebrow-chip.test.ts +76 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/hero-eyebrow-chip.ts +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/icon-tile-stack.test.ts +67 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/icon-tile-stack.ts +92 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/index.ts +38 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/kicker-above-heading.test.ts +126 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/kicker-above-heading.ts +69 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/marquee.test.ts +63 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/marquee.ts +51 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/organic-clip-path.test.ts +67 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/organic-clip-path.ts +41 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/pulsing-dot.test.ts +58 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/pulsing-dot.ts +72 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/repeating-stripes-gradient.test.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/repeating-stripes-gradient.ts +25 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/shape-assembled-illustration.test.ts +59 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/shape-assembled-illustration.ts +58 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/side-tab.test.ts +91 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/side-tab.ts +17 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/appearance.ts +110 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/assert-cases.ts +25 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/borders.ts +150 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/clip-geometry.ts +151 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/css-candidates.ts +66 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/curve-samples.ts +55 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/gradient-pattern.ts +40 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/keyframes.ts +134 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/labels.ts +85 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/decoration/support/raster-state.ts +51 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/index.ts +16 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/body-text-viewport-edge.test.ts +64 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/body-text-viewport-edge.ts +62 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/clipped-overflow-container.test.ts +40 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/clipped-overflow-container.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/content-hidden-at-rest.test.ts +62 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/content-hidden-at-rest.ts +63 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/cramped-padding.test.ts +61 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/cramped-padding.ts +97 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/edge-flush-cards.test.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/edge-flush-cards.ts +47 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/first-viewport-column-overflow.test.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/first-viewport-column-overflow.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/heading-rhythm.test.ts +67 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/heading-rhythm.ts +30 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/index.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/monotonous-spacing.test.ts +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/monotonous-spacing.ts +32 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/nested-cards.test.ts +60 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/nested-cards.ts +38 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/straggler.test.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/straggler.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/cards.ts +114 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/clipping.ts +71 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/declared-mockups.ts +46 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/geometry.ts +73 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/hidden-interface.ts +35 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/layout-cases.ts +23 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/line-breaks.ts +32 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/motion.ts +77 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/padding.ts +93 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/support/rhythm.ts +161 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/text-occlusion.test.ts +37 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/text-occlusion.ts +84 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/text-overflow.test.ts +83 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/text-overflow.ts +72 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/unbalanced-heading.test.ts +22 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/unbalanced-heading.ts +22 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/viewport-reflow.test.ts +34 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/layout/viewport-reflow.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/ai-color-palette.test.ts +13 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/ai-color-palette.ts +11 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/aphoristic-cadence.test.ts +12 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/aphoristic-cadence.ts +14 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/border-accent-on-rounded.test.ts +14 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/border-accent-on-rounded.ts +20 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/bounce-easing.test.ts +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/bounce-easing.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/broken-image.test.ts +27 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/broken-image.ts +16 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/codex-grid-background.test.ts +11 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/codex-grid-background.ts +18 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/dark-glow.test.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/dark-glow.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/em-dash-overuse.test.ts +13 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/em-dash-overuse.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/gradient-text.test.ts +12 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/gradient-text.ts +11 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/gray-on-color.test.ts +20 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/gray-on-color.ts +13 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/index.ts +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/marketing-buzzword.test.ts +12 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/marketing-buzzword.ts +17 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/marquee.test.ts +12 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/marquee.ts +12 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/monotonous-spacing.test.ts +13 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/monotonous-spacing.ts +22 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/overused-font.test.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/overused-font.ts +16 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/radial-halo.test.ts +16 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/radial-halo.ts +14 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/side-tab.test.ts +29 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/side-tab.ts +58 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/accent-scans.ts +78 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/check-source.ts +6 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/corners.ts +105 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/css-effects.ts +81 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/css-scopes.ts +131 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/image-tags.ts +113 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/js-punctuation.ts +34 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/markup-scope.ts +44 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/source-color.ts +42 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/source-shadow.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/source/support/source-text.ts +110 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/all-caps-body.test.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/all-caps-body.ts +15 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/design-system-font-size.test.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/design-system-font-size.ts +23 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/design-system-font.test.ts +22 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/design-system-font.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/extreme-negative-tracking.test.ts +23 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/extreme-negative-tracking.ts +18 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/flat-type-hierarchy.test.ts +33 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/flat-type-hierarchy.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/index.ts +21 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/italic-serif-display.test.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/italic-serif-display.ts +24 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/justified-text.test.ts +31 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/justified-text.ts +32 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/line-length.test.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/line-length.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/oversized-h1.test.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/oversized-h1.ts +20 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/overused-font.test.ts +35 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/overused-font.ts +45 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/drawn-enlargement.ts +48 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/fading-text.ts +48 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/flex-runs.ts +16 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/font-family.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/painted-text.test.ts +63 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/painted-text.ts +81 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/svg-size.ts +57 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/text-context.ts +112 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/text-lines.ts +43 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/support/type-hierarchy.ts +48 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/tight-leading.test.ts +54 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/tight-leading.ts +47 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/tiny-text.test.ts +60 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/tiny-text.ts +23 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/undersized-ui-text.test.ts +98 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/undersized-ui-text.ts +28 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/wide-tracking.test.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/rules/typography/wide-tracking.ts +26 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/snapshot/collect.ts +158 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/snapshot/style-props.ts +25 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/testing/build-snapshot.ts +78 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/tsconfig.json +19 -0
- package/packages/shared-skills/skills/frontend/scripts/detect/types.ts +124 -0
- package/packages/shared-skills/skills/programming/SKILL.md +15 -74
- package/packages/shared-skills/skills/programming/references/go/README.md +1 -1
- package/packages/shared-skills/skills/programming/references/go/bootstrap.md +2 -2
- package/packages/shared-skills/skills/programming/references/python/README.md +4 -4
- package/packages/shared-skills/skills/programming/references/python/one-liners.md +5 -5
- package/packages/shared-skills/skills/programming/references/testing/README.md +82 -0
- package/packages/shared-skills/skills/programming/references/testing/junk-classes.md +56 -0
- package/packages/shared-skills/skills/programming/references/typescript/README.md +1 -2
- package/packages/shared-skills/skills/programming/scripts/go/new-project.ts +197 -0
- package/packages/shared-skills/skills/programming/scripts/python/new-project.ts +231 -0
- package/packages/shared-skills/skills/programming/scripts/python/new-script.ts +134 -0
- package/packages/shared-skills/skills/programming/scripts/rust/new-project.ts +215 -0
- package/packages/shared-skills/skills/programming/scripts/scaffolders.test.ts +96 -0
- package/packages/shared-skills/skills/programming/scripts/shared/run-tool.ts +19 -0
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +5 -4
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/packages/shared-skills/skills/ultimate-browsing/engine/summary.py +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/packages/shared-skills/skills/ulw-research/AGENTS.md +8 -4
- package/packages/shared-skills/skills/ulw-research/SKILL.md +7 -316
- package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +23 -21
- package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/packages/shared-skills/skills/ulw-research/references/fact-ledger.md +42 -8
- package/packages/shared-skills/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/packages/shared-skills/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/packages/shared-skills/skills/ulw-research/references/report-gates.md +12 -5
- package/packages/shared-skills/skills/ulw-research/references/research-collection.md +195 -0
- package/packages/shared-skills/skills/ulw-research/references/research-delivery.md +123 -0
- package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.test.ts +37 -2
- package/packages/shared-skills/skills/ulw-research/scripts/claim-prefix.test.ts +76 -0
- package/packages/shared-skills/skills/ulw-research/scripts/contracts-validation.test.ts +83 -0
- package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +13 -4
- package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +6 -110
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-altered.test.ts +154 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-originals.test.ts +297 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe-classes.test.ts +361 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe.test.ts +218 -0
- package/packages/shared-skills/skills/ulw-research/scripts/copy-returns-polish.test.ts +4 -3
- package/packages/shared-skills/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/packages/shared-skills/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier-meaning.test.ts +186 -0
- package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier.test.ts +40 -87
- package/packages/shared-skills/skills/ulw-research/scripts/entities.mjs +13 -4
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-fill.mjs +11 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-meaning.mjs +13 -9
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-polish.mjs +40 -18
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-verify.mjs +25 -8
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands.mjs +35 -16
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive-2.test.ts +149 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.test.ts +7 -192
- package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.mjs +6 -4
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +2 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +2 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions-2.test.ts +149 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +4 -168
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-rules.test.ts +3 -229
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-policy.mjs +4 -4
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.test.ts +8 -29
- package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/packages/shared-skills/skills/ulw-research/scripts/gates-static-headings.test.ts +17 -0
- package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/packages/shared-skills/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/packages/shared-skills/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/packages/shared-skills/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/packages/shared-skills/skills/ulw-research/scripts/html-text-map.test.ts +148 -0
- package/packages/shared-skills/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/packages/shared-skills/skills/ulw-research/scripts/md-lite-boundaries.test.ts +46 -0
- package/packages/shared-skills/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/packages/shared-skills/skills/ulw-research/scripts/number-grammar.test.ts +36 -0
- package/packages/shared-skills/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/packages/shared-skills/skills/ulw-research/scripts/numerals.test.ts +3 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome-start.test.ts +109 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/packages/shared-skills/skills/ulw-research/scripts/page-source-locator.test.ts +187 -0
- package/packages/shared-skills/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/packages/shared-skills/skills/ulw-research/scripts/polish-markup.test.ts +15 -1
- package/packages/shared-skills/skills/ulw-research/scripts/polish-partial.test.ts +42 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-snapshot.test.ts +139 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-2.test.ts +233 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-3.test.ts +141 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-4.test.ts +135 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-5.test.ts +231 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +5 -800
- package/packages/shared-skills/skills/ulw-research/scripts/snapshot-readability.test.ts +116 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +79 -26
- package/packages/shared-skills/skills/ulw-research/scripts/source-integrity.test.ts +243 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.test.ts +7 -4
- package/packages/shared-skills/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/packages/shared-skills/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/packages/shared-skills/skills/ulw-research/scripts/sources-citation.test.ts +236 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/contracts-support.ts +147 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/delivery-barrier-session.ts +59 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/derive-clock.ts +4 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-derive-support.ts +65 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-unit-dimensions-support.ts +41 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-unit-rules-support.ts +241 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fidelity-values-support.ts +30 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/conversion-probe.html +14 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/sources-shapes.html +20 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/numeral-classes.ts +196 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/report-tools-support.ts +182 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/value-mode-support.ts +48 -0
- package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +14 -3
- package/packages/shared-skills/skills/ulw-research/scripts/units.test.ts +10 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-mode-unit-classes.test.ts +255 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-mode-unit.test.ts +179 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-cli.test.ts +157 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-followups.test.ts +72 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-priority.test.ts +80 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +12 -1
- package/dist/agents/gpt-prompt-identity.d.ts +0 -3
- package/dist/agents/hephaestus/gpt-5-4.d.ts +0 -24
- package/dist/agents/hephaestus/gpt-5-5.d.ts +0 -2
- package/dist/agents/hephaestus/gpt-5-6.d.ts +0 -2
- package/dist/agents/kimi-tool-loop-guard.d.ts +0 -1
- package/dist/agents/sisyphus/claude-fable-5.d.ts +0 -19
- package/dist/agents/sisyphus/claude-opus-4-7.d.ts +0 -22
- package/dist/agents/sisyphus/claude-opus-4-8.d.ts +0 -19
- package/dist/agents/sisyphus/claude-opus-5.d.ts +0 -33
- package/dist/agents/sisyphus/gemini.d.ts +0 -20
- package/dist/agents/sisyphus/glm-5-2.d.ts +0 -4
- package/dist/agents/sisyphus/gpt-5-4.d.ts +0 -26
- package/dist/agents/sisyphus/gpt-5-5.d.ts +0 -6
- package/dist/agents/sisyphus/gpt-task-system-guide.d.ts +0 -1
- package/dist/agents/sisyphus/grok-4.d.ts +0 -21
- package/dist/agents/sisyphus/index.d.ts +0 -31
- package/dist/agents/sisyphus/kimi-k2-6.d.ts +0 -32
- package/dist/agents/sisyphus/kimi-k2-7.d.ts +0 -17
- package/dist/agents/sisyphus/kimi-k3-1.d.ts +0 -9
- package/dist/agents/sisyphus/kimi-k3.d.ts +0 -19
- package/dist/agents/sisyphus-dynamic-prompt-builder.d.ts +0 -2
- package/dist/agents/sisyphus-dynamic-prompt-execution.d.ts +0 -2
- package/dist/agents/sisyphus-dynamic-prompt-exploration.d.ts +0 -2
- package/dist/agents/sisyphus-dynamic-prompt-role.d.ts +0 -2
- package/dist/agents/sisyphus-dynamic-prompt-sections.d.ts +0 -18
- package/dist/agents/sisyphus-dynamic-prompt-style.d.ts +0 -2
- package/dist/agents/sisyphus-dynamic-prompt.d.ts +0 -3
- package/dist/agents/sisyphus-gemini-fallback-overrides.d.ts +0 -1
- package/dist/agents/sisyphus-junior/gemini.d.ts +0 -10
- package/dist/agents/sisyphus-junior/glm-5-2.d.ts +0 -1
- package/dist/agents/sisyphus-junior/gpt-5-4.d.ts +0 -11
- package/dist/agents/sisyphus-junior/gpt-5-5.d.ts +0 -5
- package/dist/agents/sisyphus-junior/gpt.d.ts +0 -9
- package/dist/agents/sisyphus-junior/kimi-k2-6.d.ts +0 -13
- package/dist/agents/sisyphus-junior/kimi-k2-7.d.ts +0 -11
- package/dist/agents/sisyphus-junior/kimi-k3-1.d.ts +0 -6
- package/dist/agents/sisyphus-junior/kimi-k3.d.ts +0 -12
- package/dist/features/claude-code-agent-loader/opencode-config-agents-reader.d.ts +0 -1
- package/dist/features/claude-code-command-loader/loader-cache.d.ts +0 -1
- package/dist/features/claude-code-command-loader/loader.d.ts +0 -1
- package/dist/features/opencode-skill-loader/config-source-discovery.d.ts +0 -1
- package/dist/features/opencode-skill-loader/merger/config-skill-entry-loader.d.ts +0 -1
- package/dist/features/opencode-skill-loader/opencode-config-skills-reader.d.ts +0 -1
- package/dist/features/team-mode/team-layout-tmux/resolve-caller-tmux-session.d.ts +0 -1
- package/dist/features/team-mode/team-registry/team-spec-input-normalizer.d.ts +0 -1
- package/dist/shared/git-worktree/collect-git-diff-stats.d.ts +0 -1
- package/dist/shared/git-worktree/parse-status-porcelain-line.d.ts +0 -1
- package/dist/shared/migration/agent-names.d.ts +0 -1
- package/dist/shared/migration/migrations-sidecar.d.ts +0 -1
- package/dist/shared/skill-path-resolver.d.ts +0 -1
- package/dist/shared/zip-entry-listing/powershell-zip-entry-listing.d.ts +0 -1
- package/dist/shared/zip-entry-listing/zipinfo-zip-entry-listing.d.ts +0 -1
- package/dist/skills/programming/scripts/go/new-project.py +0 -138
- package/dist/skills/programming/scripts/python/new-project.py +0 -172
- package/dist/skills/programming/scripts/python/new-script.py +0 -116
- package/dist/skills/programming/scripts/rust/new-project.py +0 -178
- package/packages/omo-codex/plugin/skills/programming/scripts/go/new-project.py +0 -138
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-project.py +0 -172
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-script.py +0 -116
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +0 -178
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +0 -7
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +0 -19
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +0 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +0 -1128
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +0 -77
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +0 -86
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +0 -279
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate.py +0 -252
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +0 -78
- package/packages/shared-skills/skills/programming/scripts/go/new-project.py +0 -138
- package/packages/shared-skills/skills/programming/scripts/python/new-project.py +0 -172
- package/packages/shared-skills/skills/programming/scripts/python/new-script.py +0 -116
- package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +0 -178
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// omo-codex-install:
|
|
2
|
+
// omo-codex-install:e78a4d254be2f789dccd78fb8c4c74a2919db32cd569848b6cd44245e83983d2:8c68d5ed287e088dd088a9a5c38fd78cbe258de7a7d3a31e09bd8e1f1ff90250
|
|
3
3
|
var __esm = (fn, res, err) => () => {
|
|
4
4
|
if (fn)
|
|
5
5
|
try {
|
|
@@ -108,9 +108,9 @@ var init_atomic_write = __esm(() => {
|
|
|
108
108
|
|
|
109
109
|
// packages/telemetry-core/src/day-claim.ts
|
|
110
110
|
import { closeSync as closeSync2, mkdirSync as mkdirSync2, openSync as openSync2, readdirSync, rmSync as rmSync2 } from "node:fs";
|
|
111
|
-
import { join as
|
|
111
|
+
import { join as join35 } from "node:path";
|
|
112
112
|
function getTelemetryDayClaimFilePath(stateDir, dayUTC) {
|
|
113
|
-
return
|
|
113
|
+
return join35(stateDir, `${CLAIM_PREFIX}${dayUTC}${CLAIM_SUFFIX}`);
|
|
114
114
|
}
|
|
115
115
|
function claimUtcDay(stateDir, dayUTC) {
|
|
116
116
|
try {
|
|
@@ -136,7 +136,7 @@ function pruneSupersededClaims(stateDir, dayUTC) {
|
|
|
136
136
|
if (!entry.startsWith(CLAIM_PREFIX) || !entry.endsWith(CLAIM_SUFFIX))
|
|
137
137
|
continue;
|
|
138
138
|
try {
|
|
139
|
-
rmSync2(
|
|
139
|
+
rmSync2(join35(stateDir, entry), { force: true });
|
|
140
140
|
} catch {}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -145,20 +145,20 @@ var init_day_claim = () => {};
|
|
|
145
145
|
|
|
146
146
|
// packages/telemetry-core/src/activity-state.ts
|
|
147
147
|
import { existsSync as existsSync5, mkdirSync as mkdirSync3, readFileSync as readFileSync3 } from "node:fs";
|
|
148
|
-
import { basename as basename6, join as
|
|
148
|
+
import { basename as basename6, join as join36 } from "node:path";
|
|
149
149
|
function resolveTelemetryStateDir(product, options = {}) {
|
|
150
150
|
const dataDir = resolveXdgDataDir(product.cacheDirName, {
|
|
151
151
|
env: options.env,
|
|
152
152
|
osProvider: options.osProvider
|
|
153
153
|
});
|
|
154
|
-
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined :
|
|
154
|
+
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join36(options.env.XDG_DATA_HOME, product.cacheDirName);
|
|
155
155
|
if (dataDir === xdgStateDir || xdgStateDir === undefined && basename6(dataDir) === product.cacheDirName) {
|
|
156
156
|
return dataDir;
|
|
157
157
|
}
|
|
158
|
-
return
|
|
158
|
+
return join36(dataDir, product.cacheDirName);
|
|
159
159
|
}
|
|
160
160
|
function getTelemetryActivityStateFilePath(stateDir) {
|
|
161
|
-
return
|
|
161
|
+
return join36(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
|
|
162
162
|
}
|
|
163
163
|
function getDailyActiveCaptureState(input) {
|
|
164
164
|
const dayUTC = getUtcDayString(input.now ?? new Date);
|
|
@@ -242,9 +242,9 @@ var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com", DEFAULT_POSTHOG_API_KEY =
|
|
|
242
242
|
|
|
243
243
|
// packages/telemetry-core/src/diagnostics.ts
|
|
244
244
|
import { appendFileSync, existsSync as existsSync6, mkdirSync as mkdirSync4, readFileSync as readFileSync4 } from "node:fs";
|
|
245
|
-
import { join as
|
|
245
|
+
import { join as join37 } from "node:path";
|
|
246
246
|
function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
|
|
247
|
-
return
|
|
247
|
+
return join37(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
|
|
248
248
|
}
|
|
249
249
|
function writeTelemetryDiagnostic(input, options) {
|
|
250
250
|
const now = options.now ?? new Date;
|
|
@@ -453,16 +453,43 @@ var init_event_id = __esm(() => {
|
|
|
453
453
|
});
|
|
454
454
|
|
|
455
455
|
// packages/telemetry-core/src/machine-id.ts
|
|
456
|
-
import { createHash as createHash5 } from "node:crypto";
|
|
457
456
|
import os2 from "node:os";
|
|
458
457
|
function getDefaultTelemetryOsProvider() {
|
|
459
458
|
return os2;
|
|
460
459
|
}
|
|
461
|
-
function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
|
|
462
|
-
return createHash5("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
|
|
463
|
-
}
|
|
464
460
|
var init_machine_id = () => {};
|
|
465
461
|
|
|
462
|
+
// packages/telemetry-core/src/terminal-program.ts
|
|
463
|
+
function isKnownTerminalProgram(value) {
|
|
464
|
+
return KNOWN_TERMINAL_PROGRAMS.some((known) => known === value);
|
|
465
|
+
}
|
|
466
|
+
function toTelemetryTerminalProgram(termProgram) {
|
|
467
|
+
if (termProgram === undefined || termProgram === "")
|
|
468
|
+
return;
|
|
469
|
+
return isKnownTerminalProgram(termProgram) ? termProgram : "other";
|
|
470
|
+
}
|
|
471
|
+
var KNOWN_TERMINAL_PROGRAMS;
|
|
472
|
+
var init_terminal_program = __esm(() => {
|
|
473
|
+
KNOWN_TERMINAL_PROGRAMS = [
|
|
474
|
+
"Apple_Terminal",
|
|
475
|
+
"iTerm.app",
|
|
476
|
+
"vscode",
|
|
477
|
+
"cursor",
|
|
478
|
+
"windsurf",
|
|
479
|
+
"zed",
|
|
480
|
+
"WezTerm",
|
|
481
|
+
"ghostty",
|
|
482
|
+
"tmux",
|
|
483
|
+
"Hyper",
|
|
484
|
+
"WarpTerminal",
|
|
485
|
+
"kitty",
|
|
486
|
+
"alacritty",
|
|
487
|
+
"Tabby",
|
|
488
|
+
"rio",
|
|
489
|
+
"mintty"
|
|
490
|
+
];
|
|
491
|
+
});
|
|
492
|
+
|
|
466
493
|
// packages/telemetry-core/src/injected-client.ts
|
|
467
494
|
function isTelemetryClientEnabled(input) {
|
|
468
495
|
const env = input.env ?? process.env;
|
|
@@ -565,12 +592,16 @@ function getSharedProperties(input) {
|
|
|
565
592
|
total_memory_gb: Math.round(osProvider.totalmem() / 1024 / 1024 / 1024),
|
|
566
593
|
locale: Intl.DateTimeFormat().resolvedOptions().locale,
|
|
567
594
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
568
|
-
shell: process.env.SHELL,
|
|
595
|
+
shell: getShellName(process.env.SHELL),
|
|
569
596
|
ci: Boolean(process.env.CI),
|
|
570
|
-
terminal: process.env.TERM_PROGRAM,
|
|
597
|
+
terminal: toTelemetryTerminalProgram(process.env.TERM_PROGRAM),
|
|
571
598
|
...input.product.additionalProperties
|
|
572
599
|
};
|
|
573
600
|
}
|
|
601
|
+
function getShellName(shellPath) {
|
|
602
|
+
const name = shellPath?.split(/[\\/]/).pop()?.replace(/\.exe$/i, "");
|
|
603
|
+
return name ? name : undefined;
|
|
604
|
+
}
|
|
574
605
|
function getSafeCpuInfo(osProvider, input) {
|
|
575
606
|
try {
|
|
576
607
|
const cpuInfo = osProvider.cpus();
|
|
@@ -595,6 +626,7 @@ var NO_OP_CLIENT;
|
|
|
595
626
|
var init_injected_client = __esm(() => {
|
|
596
627
|
init_env();
|
|
597
628
|
init_machine_id();
|
|
629
|
+
init_terminal_program();
|
|
598
630
|
NO_OP_CLIENT = {
|
|
599
631
|
enabled: false,
|
|
600
632
|
trackActive: () => {
|
|
@@ -610,7 +642,7 @@ var init_injected_client = __esm(() => {
|
|
|
610
642
|
});
|
|
611
643
|
|
|
612
644
|
// node_modules/.bun/posthog-node@5.52.4/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
|
|
613
|
-
import { dirname as dirname11, posix as posix3, sep as
|
|
645
|
+
import { dirname as dirname11, posix as posix3, sep as sep8 } from "node:path";
|
|
614
646
|
function createModulerModifier() {
|
|
615
647
|
const getModuleFromFileName = createGetModuleFromFilename();
|
|
616
648
|
return async (frames) => {
|
|
@@ -619,7 +651,7 @@ function createModulerModifier() {
|
|
|
619
651
|
return frames;
|
|
620
652
|
};
|
|
621
653
|
}
|
|
622
|
-
function createGetModuleFromFilename(basePath = process.argv[1] ? dirname11(process.argv[1]) : process.cwd(), isWindows =
|
|
654
|
+
function createGetModuleFromFilename(basePath = process.argv[1] ? dirname11(process.argv[1]) : process.cwd(), isWindows = sep8 === "\\") {
|
|
623
655
|
const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;
|
|
624
656
|
return (filename) => {
|
|
625
657
|
if (!filename)
|
|
@@ -6979,16 +7011,16 @@ var init_context_lines_node = __esm(() => {
|
|
|
6979
7011
|
});
|
|
6980
7012
|
|
|
6981
7013
|
// node_modules/.bun/posthog-node@5.52.4/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/relative-path.node.mjs
|
|
6982
|
-
import { isAbsolute as isAbsolute8, relative as
|
|
7014
|
+
import { isAbsolute as isAbsolute8, relative as relative5, sep as sep9 } from "node:path";
|
|
6983
7015
|
function createRelativePathModifier(basePath = process.cwd()) {
|
|
6984
|
-
const isWindows =
|
|
7016
|
+
const isWindows = sep9 === "\\";
|
|
6985
7017
|
const toUnix = (p) => isWindows ? p.replace(/\\/g, "/") : p;
|
|
6986
7018
|
const normalizedBase = toUnix(basePath);
|
|
6987
7019
|
return async (frames) => {
|
|
6988
7020
|
for (const frame of frames)
|
|
6989
7021
|
if (!(!frame.filename || frame.filename.startsWith("node:") || frame.filename.startsWith("data:"))) {
|
|
6990
7022
|
if (isAbsolute8(frame.filename))
|
|
6991
|
-
frame.filename = toUnix(
|
|
7023
|
+
frame.filename = toUnix(relative5(normalizedBase, toUnix(frame.filename)));
|
|
6992
7024
|
}
|
|
6993
7025
|
return frames;
|
|
6994
7026
|
};
|
|
@@ -10086,6 +10118,55 @@ var init_posthog_transport = __esm(() => {
|
|
|
10086
10118
|
// packages/telemetry-core/src/events.ts
|
|
10087
10119
|
var init_events = () => {};
|
|
10088
10120
|
|
|
10121
|
+
// packages/telemetry-core/src/install-id.ts
|
|
10122
|
+
import { createHash as createHash5, randomBytes } from "node:crypto";
|
|
10123
|
+
import { mkdirSync as mkdirSync5, readFileSync as readFileSync5, writeFileSync as writeFileSync2 } from "node:fs";
|
|
10124
|
+
import { dirname as dirname12, join as join38 } from "node:path";
|
|
10125
|
+
function getTelemetryInstallDistinctId(stateDir) {
|
|
10126
|
+
return createHash5("sha256").update(readOrCreateInstallId(join38(stateDir, TELEMETRY_INSTALL_ID_FILE_NAME))).digest("hex");
|
|
10127
|
+
}
|
|
10128
|
+
function readOrCreateInstallId(path) {
|
|
10129
|
+
const persisted = readInstallId(path);
|
|
10130
|
+
if (persisted !== undefined)
|
|
10131
|
+
return persisted;
|
|
10132
|
+
const installId = randomBytes(32).toString("hex");
|
|
10133
|
+
try {
|
|
10134
|
+
mkdirSync5(dirname12(path), { recursive: true });
|
|
10135
|
+
writeFileSync2(path, `${installId}
|
|
10136
|
+
`, { flag: "wx", mode: 384 });
|
|
10137
|
+
fallbackInstallIds.delete(path);
|
|
10138
|
+
return installId;
|
|
10139
|
+
} catch {
|
|
10140
|
+
const concurrentlyCreated = readInstallId(path);
|
|
10141
|
+
if (concurrentlyCreated !== undefined)
|
|
10142
|
+
return concurrentlyCreated;
|
|
10143
|
+
try {
|
|
10144
|
+
writeFileSync2(path, `${installId}
|
|
10145
|
+
`, { flag: "w", mode: 384 });
|
|
10146
|
+
fallbackInstallIds.delete(path);
|
|
10147
|
+
return installId;
|
|
10148
|
+
} catch {}
|
|
10149
|
+
const fallback = fallbackInstallIds.get(path);
|
|
10150
|
+
if (fallback !== undefined)
|
|
10151
|
+
return fallback;
|
|
10152
|
+
fallbackInstallIds.set(path, installId);
|
|
10153
|
+
return installId;
|
|
10154
|
+
}
|
|
10155
|
+
}
|
|
10156
|
+
function readInstallId(path) {
|
|
10157
|
+
try {
|
|
10158
|
+
const value = readFileSync5(path, "utf8").trim();
|
|
10159
|
+
return INSTALL_ID_PATTERN.test(value) ? value : undefined;
|
|
10160
|
+
} catch {
|
|
10161
|
+
return;
|
|
10162
|
+
}
|
|
10163
|
+
}
|
|
10164
|
+
var TELEMETRY_INSTALL_ID_FILE_NAME = "install-id", INSTALL_ID_PATTERN, fallbackInstallIds;
|
|
10165
|
+
var init_install_id = __esm(() => {
|
|
10166
|
+
INSTALL_ID_PATTERN = /^[0-9a-f]{64}$/;
|
|
10167
|
+
fallbackInstallIds = new Map;
|
|
10168
|
+
});
|
|
10169
|
+
|
|
10089
10170
|
// packages/telemetry-core/src/posthog-client.ts
|
|
10090
10171
|
function createTelemetryClient2(input) {
|
|
10091
10172
|
return createTelemetryClient({ ...input, transportFactory: input.transportFactory ?? createDefaultPostHogTransport });
|
|
@@ -10112,6 +10193,7 @@ var init_src = __esm(() => {
|
|
|
10112
10193
|
init_env();
|
|
10113
10194
|
init_event_id();
|
|
10114
10195
|
init_events();
|
|
10196
|
+
init_install_id();
|
|
10115
10197
|
init_machine_id();
|
|
10116
10198
|
init_posthog_client();
|
|
10117
10199
|
init_record_daily_active();
|
|
@@ -10123,7 +10205,7 @@ var package_default;
|
|
|
10123
10205
|
var init_package = __esm(() => {
|
|
10124
10206
|
package_default = {
|
|
10125
10207
|
name: "@oh-my-opencode/omo-codex",
|
|
10126
|
-
version: "5.1.
|
|
10208
|
+
version: "5.1.54",
|
|
10127
10209
|
type: "module",
|
|
10128
10210
|
private: true,
|
|
10129
10211
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -10159,7 +10241,7 @@ var init_package = __esm(() => {
|
|
|
10159
10241
|
"@oh-my-opencode/utils": "workspace:*"
|
|
10160
10242
|
},
|
|
10161
10243
|
devDependencies: {
|
|
10162
|
-
"bun-types": "1.4.
|
|
10244
|
+
"bun-types": "1.4.4"
|
|
10163
10245
|
}
|
|
10164
10246
|
};
|
|
10165
10247
|
});
|
|
@@ -10174,7 +10256,6 @@ function createCodexTelemetryProductConfig(packageVersion = getProductVersion(),
|
|
|
10174
10256
|
defaultApiKey: DEFAULT_POSTHOG_API_KEY,
|
|
10175
10257
|
defaultHost: DEFAULT_POSTHOG_HOST,
|
|
10176
10258
|
eventName: EVENT_NAME,
|
|
10177
|
-
machineIdPrefix: MACHINE_ID_PREFIX,
|
|
10178
10259
|
packageName: PACKAGE_NAME,
|
|
10179
10260
|
packageVersion,
|
|
10180
10261
|
platform: "omo-codex",
|
|
@@ -10189,7 +10270,7 @@ function createCodexTelemetryProductConfig(packageVersion = getProductVersion(),
|
|
|
10189
10270
|
additionalProperties
|
|
10190
10271
|
};
|
|
10191
10272
|
}
|
|
10192
|
-
var PRODUCT_NAME = "omo-codex", PACKAGE_NAME = "@oh-my-opencode/omo-codex", CACHE_DIR_NAME = "omo-codex", EVENT_NAME = "omo_codex_daily_active", PRODUCT_ENV_PREFIX = "OMO_CODEX"
|
|
10273
|
+
var PRODUCT_NAME = "omo-codex", PACKAGE_NAME = "@oh-my-opencode/omo-codex", CACHE_DIR_NAME = "omo-codex", EVENT_NAME = "omo_codex_daily_active", PRODUCT_ENV_PREFIX = "OMO_CODEX";
|
|
10193
10274
|
var init_product_identity = __esm(() => {
|
|
10194
10275
|
init_src();
|
|
10195
10276
|
init_package();
|
|
@@ -10267,7 +10348,7 @@ function createPostHogClient(source, options = {}) {
|
|
|
10267
10348
|
}
|
|
10268
10349
|
const activityStateProvider = resolveActivityStateProvider(options);
|
|
10269
10350
|
return {
|
|
10270
|
-
trackActive: (
|
|
10351
|
+
trackActive: (reason) => {
|
|
10271
10352
|
const activityState = options.stateDir === undefined ? activityStateProvider() : getDailyActiveCaptureState({
|
|
10272
10353
|
diagnostics: writeTelemetryDiagnostic2,
|
|
10273
10354
|
now: options.now,
|
|
@@ -10278,7 +10359,7 @@ function createPostHogClient(source, options = {}) {
|
|
|
10278
10359
|
}
|
|
10279
10360
|
client.trackActive({
|
|
10280
10361
|
dayUTC: activityState.dayUTC,
|
|
10281
|
-
distinctId,
|
|
10362
|
+
distinctId: getTelemetryInstallDistinctId(options.stateDir ?? getActivityStateDir()),
|
|
10282
10363
|
reason
|
|
10283
10364
|
});
|
|
10284
10365
|
},
|
|
@@ -10287,15 +10368,13 @@ function createPostHogClient(source, options = {}) {
|
|
|
10287
10368
|
}
|
|
10288
10369
|
};
|
|
10289
10370
|
}
|
|
10290
|
-
function getPostHogDistinctId() {
|
|
10291
|
-
return getTelemetryDistinctId(MACHINE_ID_PREFIX, resolveOsProvider());
|
|
10292
|
-
}
|
|
10293
10371
|
function createInstallPostHog() {
|
|
10294
10372
|
return createPostHogClient("install");
|
|
10295
10373
|
}
|
|
10296
10374
|
var osProviderOverride2 = null, activityStateProviderOverride = null, transportFactoryOverride = null, NO_OP_POSTHOG;
|
|
10297
10375
|
var init_posthog = __esm(() => {
|
|
10298
10376
|
init_src();
|
|
10377
|
+
init_data_path();
|
|
10299
10378
|
init_diagnostics2();
|
|
10300
10379
|
init_posthog_activity_state();
|
|
10301
10380
|
init_product_identity();
|
|
@@ -10316,9 +10395,18 @@ var init_telemetry = __esm(() => {
|
|
|
10316
10395
|
|
|
10317
10396
|
// packages/omo-codex/src/install/install-local-cli.ts
|
|
10318
10397
|
import { readFile as readFile26 } from "node:fs/promises";
|
|
10319
|
-
import { dirname as
|
|
10398
|
+
import { dirname as dirname14, join as join43, resolve as resolve11 } from "node:path";
|
|
10320
10399
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
10321
10400
|
|
|
10401
|
+
// packages/telemetry-core/src/install-disclosure.ts
|
|
10402
|
+
var TELEMETRY_PRIVACY_POLICY_URL = "https://github.com/code-yeongyu/oh-my-openagent/blob/dev/docs/legal/privacy-policy.md";
|
|
10403
|
+
var TELEMETRY_INSTALL_DISCLOSURE_LINES = [
|
|
10404
|
+
"OmO sends anonymous usage telemetry (no prompts, code, file paths, or account data) to improve the product.",
|
|
10405
|
+
"The data goes to PostHog in the United States.",
|
|
10406
|
+
"Turn it off with DO_NOT_TRACK=1 (or OMO_DISABLE_TELEMETRY=1).",
|
|
10407
|
+
`Details: ${TELEMETRY_PRIVACY_POLICY_URL}`
|
|
10408
|
+
];
|
|
10409
|
+
|
|
10322
10410
|
// packages/utils/src/runtime/spawn.ts
|
|
10323
10411
|
import {
|
|
10324
10412
|
spawn as nodeSpawn,
|
|
@@ -10587,7 +10675,7 @@ var defaultRunCommand = async (command, args, options) => {
|
|
|
10587
10675
|
};
|
|
10588
10676
|
|
|
10589
10677
|
// packages/omo-codex/src/install/install-codex.ts
|
|
10590
|
-
import { join as
|
|
10678
|
+
import { join as join39, resolve as resolve10 } from "node:path";
|
|
10591
10679
|
import { existsSync as existsSync7 } from "node:fs";
|
|
10592
10680
|
import { homedir as homedir2 } from "node:os";
|
|
10593
10681
|
|
|
@@ -11141,8 +11229,8 @@ async function existingNonSymlink(path) {
|
|
|
11141
11229
|
}
|
|
11142
11230
|
}
|
|
11143
11231
|
// packages/omo-codex/src/install/codex-cache-install.ts
|
|
11144
|
-
import { cp as
|
|
11145
|
-
import { basename as basename2, dirname as dirname4, join as
|
|
11232
|
+
import { cp as cp3, mkdir as mkdir3, readFile as readFile8, readdir as readdir5, rename as rename2, rm as rm5 } from "node:fs/promises";
|
|
11233
|
+
import { basename as basename2, dirname as dirname4, join as join11, sep as sep6 } from "node:path";
|
|
11146
11234
|
|
|
11147
11235
|
// packages/omo-codex/src/install/codex-cache-bundled-mcps.ts
|
|
11148
11236
|
import { cp, mkdir as mkdir2, readFile as readFile4, stat as stat3 } from "node:fs/promises";
|
|
@@ -11494,9 +11582,66 @@ async function rewriteCachedManifestRoot(pluginRoot, fromRoot, toRoot) {
|
|
|
11494
11582
|
`);
|
|
11495
11583
|
}
|
|
11496
11584
|
|
|
11585
|
+
// packages/omo-codex/src/install/codex-cache-payload.ts
|
|
11586
|
+
import { cp as cp2, lstat as lstat5, mkdtemp, readdir as readdir4, rename, rm as rm4 } from "node:fs/promises";
|
|
11587
|
+
import { join as join9, relative as relative4, sep as sep4 } from "node:path";
|
|
11588
|
+
var NPM_BIN_PATH_SEGMENT = `${sep4}node_modules${sep4}.bin${sep4}`;
|
|
11589
|
+
async function finalizeCachedPluginPayload(pluginRoot) {
|
|
11590
|
+
await materializeDirectory(pluginRoot);
|
|
11591
|
+
const unsupported = await unsupportedEntries(pluginRoot, pluginRoot);
|
|
11592
|
+
if (unsupported.length > 0) {
|
|
11593
|
+
throw new Error(`Codex plugin contains unsupported entry types: ${unsupported.sort().join(", ")}`);
|
|
11594
|
+
}
|
|
11595
|
+
}
|
|
11596
|
+
async function materializeDirectory(directory) {
|
|
11597
|
+
for (const name of await readdir4(directory)) {
|
|
11598
|
+
const path = join9(directory, name);
|
|
11599
|
+
let entry = await lstat5(path);
|
|
11600
|
+
if (path.includes(NPM_BIN_PATH_SEGMENT) && !entry.isFile() && !entry.isDirectory()) {
|
|
11601
|
+
await rm4(path, { recursive: true, force: true });
|
|
11602
|
+
continue;
|
|
11603
|
+
}
|
|
11604
|
+
if (entry.isSymbolicLink()) {
|
|
11605
|
+
const staging = await mkdtemp(join9(directory, ".omo-materialize-"));
|
|
11606
|
+
try {
|
|
11607
|
+
const copyPath = join9(staging, "entry");
|
|
11608
|
+
await cp2(path, copyPath, {
|
|
11609
|
+
recursive: true,
|
|
11610
|
+
dereference: true,
|
|
11611
|
+
filter: async (source) => {
|
|
11612
|
+
if (!source.includes(NPM_BIN_PATH_SEGMENT))
|
|
11613
|
+
return true;
|
|
11614
|
+
const sourceEntry = await lstat5(source);
|
|
11615
|
+
return sourceEntry.isFile() || sourceEntry.isDirectory();
|
|
11616
|
+
}
|
|
11617
|
+
});
|
|
11618
|
+
await rm4(path, { force: true, recursive: true });
|
|
11619
|
+
await rename(copyPath, path);
|
|
11620
|
+
} finally {
|
|
11621
|
+
await rm4(staging, { recursive: true, force: true });
|
|
11622
|
+
}
|
|
11623
|
+
entry = await lstat5(path);
|
|
11624
|
+
}
|
|
11625
|
+
if (entry.isDirectory())
|
|
11626
|
+
await materializeDirectory(path);
|
|
11627
|
+
}
|
|
11628
|
+
}
|
|
11629
|
+
async function unsupportedEntries(root, directory) {
|
|
11630
|
+
const unsupported = [];
|
|
11631
|
+
for (const name of await readdir4(directory)) {
|
|
11632
|
+
const path = join9(directory, name);
|
|
11633
|
+
const entry = await lstat5(path);
|
|
11634
|
+
if (entry.isDirectory())
|
|
11635
|
+
unsupported.push(...await unsupportedEntries(root, path));
|
|
11636
|
+
else if (!entry.isFile())
|
|
11637
|
+
unsupported.push(relative4(root, path));
|
|
11638
|
+
}
|
|
11639
|
+
return unsupported;
|
|
11640
|
+
}
|
|
11641
|
+
|
|
11497
11642
|
// packages/omo-codex/src/install/codex-hook-targets.ts
|
|
11498
11643
|
import { readFile as readFile7 } from "node:fs/promises";
|
|
11499
|
-
import { join as
|
|
11644
|
+
import { join as join10, sep as sep5 } from "node:path";
|
|
11500
11645
|
var PLUGIN_ROOT_TARGET_PATTERN = /\$\{PLUGIN_ROOT\}[\\/]+([^"']+)/g;
|
|
11501
11646
|
async function findMissingHookCommandTargets(pluginRoot) {
|
|
11502
11647
|
const commands = [];
|
|
@@ -11513,7 +11658,7 @@ async function findMissingHookCommandTargets(pluginRoot) {
|
|
|
11513
11658
|
const targetSuffix = match[1];
|
|
11514
11659
|
if (targetSuffix === undefined)
|
|
11515
11660
|
continue;
|
|
11516
|
-
const target =
|
|
11661
|
+
const target = join10(pluginRoot, ...targetSuffix.split(/[\\/]+/));
|
|
11517
11662
|
if (seen.has(target))
|
|
11518
11663
|
continue;
|
|
11519
11664
|
seen.add(target);
|
|
@@ -11524,17 +11669,17 @@ async function findMissingHookCommandTargets(pluginRoot) {
|
|
|
11524
11669
|
return missing;
|
|
11525
11670
|
}
|
|
11526
11671
|
async function hookManifestPaths(pluginRoot) {
|
|
11527
|
-
const pluginManifestPath =
|
|
11672
|
+
const pluginManifestPath = join10(pluginRoot, ".codex-plugin", "plugin.json");
|
|
11528
11673
|
if (!await fileExistsStrict(pluginManifestPath))
|
|
11529
|
-
return [
|
|
11674
|
+
return [join10(pluginRoot, "hooks", "hooks.json")];
|
|
11530
11675
|
const parsed = JSON.parse(await readFile7(pluginManifestPath, "utf8"));
|
|
11531
11676
|
if (!isPlainRecord(parsed))
|
|
11532
11677
|
return [];
|
|
11533
11678
|
if (typeof parsed.hooks === "string" && parsed.hooks.trim() !== "") {
|
|
11534
|
-
return [
|
|
11679
|
+
return [join10(pluginRoot, stripDotSlash(parsed.hooks))];
|
|
11535
11680
|
}
|
|
11536
11681
|
if (Array.isArray(parsed.hooks)) {
|
|
11537
|
-
return parsed.hooks.filter((hookPath) => typeof hookPath === "string" && hookPath.trim() !== "").map((hookPath) =>
|
|
11682
|
+
return parsed.hooks.filter((hookPath) => typeof hookPath === "string" && hookPath.trim() !== "").map((hookPath) => join10(pluginRoot, stripDotSlash(hookPath)));
|
|
11538
11683
|
}
|
|
11539
11684
|
return [];
|
|
11540
11685
|
}
|
|
@@ -11545,7 +11690,7 @@ async function assertHookCommandTargets(pluginRoot) {
|
|
|
11545
11690
|
const missing = await findMissingHookCommandTargets(pluginRoot);
|
|
11546
11691
|
if (missing.length === 0)
|
|
11547
11692
|
return;
|
|
11548
|
-
const relativeMissing = missing.map((path) => path.split(`${pluginRoot}${
|
|
11693
|
+
const relativeMissing = missing.map((path) => path.split(`${pluginRoot}${sep5}`).join("").split(sep5).join("/"));
|
|
11549
11694
|
throw new Error(`Plugin payload is missing ${missing.length} hook command target(s) referenced by hooks.json: ${relativeMissing.join(", ")}. ` + "The previous plugin cache was left untouched; this payload was not activated.");
|
|
11550
11695
|
}
|
|
11551
11696
|
function collectCommands(value, commands) {
|
|
@@ -11572,9 +11717,9 @@ async function installCachedPlugin(input) {
|
|
|
11572
11717
|
await maybeRunNpmInstall(input.sourcePath, input.runCommand, npmInstallEnv);
|
|
11573
11718
|
await maybeRunNpmBuild(input.sourcePath, input.runCommand, env);
|
|
11574
11719
|
}
|
|
11575
|
-
const targetPath =
|
|
11720
|
+
const targetPath = join11(input.codexHome, "plugins", "cache", input.marketplaceName, input.name, input.version);
|
|
11576
11721
|
const tempPath = createTempSiblingPath(targetPath);
|
|
11577
|
-
await
|
|
11722
|
+
await rm5(tempPath, { recursive: true, force: true });
|
|
11578
11723
|
try {
|
|
11579
11724
|
await copyDirectory(input.sourcePath, tempPath);
|
|
11580
11725
|
const rewroteLocalFileDependencies = await rewriteCachedPackageLocalFileDependencies(tempPath, input.sourcePath);
|
|
@@ -11590,30 +11735,31 @@ async function installCachedPlugin(input) {
|
|
|
11590
11735
|
await rewriteCachedMcpManifest(tempPath, input.sourcePath);
|
|
11591
11736
|
await rewriteCachedManifestRoot(tempPath, tempPath, targetPath);
|
|
11592
11737
|
await assertHookCommandTargets(tempPath);
|
|
11593
|
-
await
|
|
11594
|
-
|
|
11738
|
+
await finalizeCachedPluginPayload(tempPath);
|
|
11739
|
+
await promoteDirectory(tempPath, targetPath, input.renameDirectory ?? rename2);
|
|
11740
|
+
const versions = await readdir5(dirname4(targetPath), { withFileTypes: true });
|
|
11595
11741
|
for (const entry of versions) {
|
|
11596
11742
|
if (!entry.isDirectory() || entry.name === input.version || entry.name.startsWith("."))
|
|
11597
11743
|
continue;
|
|
11598
11744
|
if (!/^[a-zA-Z0-9_+-][a-zA-Z0-9._+-]*$/.test(entry.name))
|
|
11599
11745
|
continue;
|
|
11600
|
-
await
|
|
11746
|
+
await rm5(join11(dirname4(targetPath), entry.name), { recursive: true, force: true });
|
|
11601
11747
|
}
|
|
11602
11748
|
} catch (error) {
|
|
11603
|
-
await
|
|
11749
|
+
await rm5(tempPath, { recursive: true, force: true });
|
|
11604
11750
|
throw error;
|
|
11605
11751
|
}
|
|
11606
11752
|
return { name: input.name, version: input.version, path: targetPath };
|
|
11607
11753
|
}
|
|
11608
11754
|
async function maybeRunNpmInstall(cwd, runCommand, env, args = ["install"]) {
|
|
11609
|
-
if (!await fileExistsStrict(
|
|
11755
|
+
if (!await fileExistsStrict(join11(cwd, "package.json")))
|
|
11610
11756
|
return;
|
|
11611
11757
|
await runCommand("npm", args, { cwd, env });
|
|
11612
11758
|
}
|
|
11613
11759
|
async function maybeRunNpmBuild(cwd, runCommand, env) {
|
|
11614
|
-
if (!await fileExistsStrict(
|
|
11760
|
+
if (!await fileExistsStrict(join11(cwd, "package.json")))
|
|
11615
11761
|
return;
|
|
11616
|
-
const packageJson = JSON.parse(await readFile8(
|
|
11762
|
+
const packageJson = JSON.parse(await readFile8(join11(cwd, "package.json"), "utf8"));
|
|
11617
11763
|
if (!isPlainRecord(packageJson))
|
|
11618
11764
|
return;
|
|
11619
11765
|
const scripts = packageJson.scripts;
|
|
@@ -11622,9 +11768,9 @@ async function maybeRunNpmBuild(cwd, runCommand, env) {
|
|
|
11622
11768
|
await runCommand("npm", ["run", "build"], { cwd, env });
|
|
11623
11769
|
}
|
|
11624
11770
|
async function maybeRunNpmSyncSkills(cwd, runCommand, env) {
|
|
11625
|
-
if (!await fileExistsStrict(
|
|
11771
|
+
if (!await fileExistsStrict(join11(cwd, "package.json")))
|
|
11626
11772
|
return;
|
|
11627
|
-
const packageJson = JSON.parse(await readFile8(
|
|
11773
|
+
const packageJson = JSON.parse(await readFile8(join11(cwd, "package.json"), "utf8"));
|
|
11628
11774
|
if (!isPlainRecord(packageJson))
|
|
11629
11775
|
return;
|
|
11630
11776
|
const scripts = packageJson.scripts;
|
|
@@ -11636,18 +11782,18 @@ function sanitizeNpmInstallEnv(env) {
|
|
|
11636
11782
|
return Object.fromEntries(Object.entries(env).filter(([key]) => key.toLowerCase() !== "npm_config_allow_scripts"));
|
|
11637
11783
|
}
|
|
11638
11784
|
function createTempSiblingPath(targetPath) {
|
|
11639
|
-
return
|
|
11785
|
+
return join11(dirname4(targetPath), `.tmp-${basename2(targetPath)}-${process.pid}-${Date.now()}`);
|
|
11640
11786
|
}
|
|
11641
11787
|
function createBackupSiblingPath(targetPath) {
|
|
11642
|
-
return
|
|
11788
|
+
return join11(dirname4(targetPath), `.backup-${basename2(targetPath)}-${process.pid}-${Date.now()}`);
|
|
11643
11789
|
}
|
|
11644
11790
|
async function copyDirectory(sourcePath, targetPath) {
|
|
11645
11791
|
await mkdir3(dirname4(targetPath), { recursive: true });
|
|
11646
|
-
await
|
|
11792
|
+
await cp3(sourcePath, targetPath, { recursive: true, filter: (source) => shouldCopyPluginPath(source, sourcePath) });
|
|
11647
11793
|
}
|
|
11648
11794
|
async function promoteDirectory(tempPath, targetPath, renameDirectory) {
|
|
11649
11795
|
const backupPath = createBackupSiblingPath(targetPath);
|
|
11650
|
-
await
|
|
11796
|
+
await rm5(backupPath, { recursive: true, force: true });
|
|
11651
11797
|
let backupMoved = false;
|
|
11652
11798
|
try {
|
|
11653
11799
|
if (await fileExistsStrict(targetPath)) {
|
|
@@ -11661,19 +11807,19 @@ async function promoteDirectory(tempPath, targetPath, renameDirectory) {
|
|
|
11661
11807
|
throw error;
|
|
11662
11808
|
}
|
|
11663
11809
|
if (backupMoved)
|
|
11664
|
-
await
|
|
11810
|
+
await rm5(backupPath, { recursive: true, force: true });
|
|
11665
11811
|
}
|
|
11666
11812
|
async function restoreBackupDirectory(backupPath, targetPath, renameDirectory) {
|
|
11667
11813
|
if (!await fileExistsStrict(backupPath))
|
|
11668
11814
|
return;
|
|
11669
|
-
await
|
|
11815
|
+
await rm5(targetPath, { recursive: true, force: true });
|
|
11670
11816
|
await renameDirectory(backupPath, targetPath);
|
|
11671
11817
|
}
|
|
11672
11818
|
function shouldCopyPluginPath(path, root) {
|
|
11673
|
-
const relative = path === root ? "" : path.slice(root.length +
|
|
11819
|
+
const relative = path === root ? "" : path.slice(root.length + sep6.length);
|
|
11674
11820
|
if (relative === "")
|
|
11675
11821
|
return true;
|
|
11676
|
-
const parts = relative.split(
|
|
11822
|
+
const parts = relative.split(sep6);
|
|
11677
11823
|
if (parts.some((part) => part === ".git" || part === "node_modules"))
|
|
11678
11824
|
return false;
|
|
11679
11825
|
return !isNestedComponentMcpManifest(parts);
|
|
@@ -11687,18 +11833,18 @@ var removedSparkshellPromptSurfaceFiles = new Set(["directive.md", "plugin.json"
|
|
|
11687
11833
|
var removedSparkshellTextFilePattern = /\.(?:json|md|toml|ya?ml)$/i;
|
|
11688
11834
|
async function assertNoRemovedSparkshellPromptReferences(pluginRoot) {
|
|
11689
11835
|
for (const filePath of await listRemovedSparkshellPromptSurfaceFiles(pluginRoot, "")) {
|
|
11690
|
-
const content = await readFile8(
|
|
11836
|
+
const content = await readFile8(join11(pluginRoot, filePath), "utf8");
|
|
11691
11837
|
if (!removedSparkshellReferencePattern.test(content))
|
|
11692
11838
|
continue;
|
|
11693
11839
|
throw new Error(`removed sparkshell reference found in Codex plugin prompt surface: ${filePath}`);
|
|
11694
11840
|
}
|
|
11695
11841
|
}
|
|
11696
11842
|
async function listRemovedSparkshellPromptSurfaceFiles(pluginRoot, relativeDirectory) {
|
|
11697
|
-
const directory = relativeDirectory === "" ? pluginRoot :
|
|
11698
|
-
const entries = await
|
|
11843
|
+
const directory = relativeDirectory === "" ? pluginRoot : join11(pluginRoot, relativeDirectory);
|
|
11844
|
+
const entries = await readdir5(directory, { withFileTypes: true });
|
|
11699
11845
|
const files = [];
|
|
11700
11846
|
for (const entry of entries) {
|
|
11701
|
-
const relativePath = relativeDirectory === "" ? entry.name :
|
|
11847
|
+
const relativePath = relativeDirectory === "" ? entry.name : join11(relativeDirectory, entry.name);
|
|
11702
11848
|
if (entry.isDirectory()) {
|
|
11703
11849
|
if (shouldDescendIntoRemovedSparkshellPromptSurface(relativePath)) {
|
|
11704
11850
|
files.push(...await listRemovedSparkshellPromptSurfaceFiles(pluginRoot, relativePath));
|
|
@@ -11711,7 +11857,7 @@ async function listRemovedSparkshellPromptSurfaceFiles(pluginRoot, relativeDirec
|
|
|
11711
11857
|
return files.sort();
|
|
11712
11858
|
}
|
|
11713
11859
|
function shouldDescendIntoRemovedSparkshellPromptSurface(relativePath) {
|
|
11714
|
-
const parts = relativePath.split(
|
|
11860
|
+
const parts = relativePath.split(sep6);
|
|
11715
11861
|
if (parts.some((part) => part === ".git" || part === "dist" || part === "node_modules"))
|
|
11716
11862
|
return false;
|
|
11717
11863
|
if (parts[0] === "components") {
|
|
@@ -11724,7 +11870,7 @@ function shouldDescendIntoRemovedSparkshellPromptSurface(relativePath) {
|
|
|
11724
11870
|
function shouldCheckRemovedSparkshellPromptFile(relativePath) {
|
|
11725
11871
|
if (!removedSparkshellTextFilePattern.test(relativePath))
|
|
11726
11872
|
return false;
|
|
11727
|
-
const parts = relativePath.split(
|
|
11873
|
+
const parts = relativePath.split(sep6);
|
|
11728
11874
|
const fileName = parts.at(-1) ?? "";
|
|
11729
11875
|
if (parts[0] === "components") {
|
|
11730
11876
|
if (parts.length === 3)
|
|
@@ -11738,25 +11884,25 @@ async function copyRootRuntimeDists(input) {
|
|
|
11738
11884
|
if (repoRoot === null)
|
|
11739
11885
|
return;
|
|
11740
11886
|
for (const runtimePath of ["dist/cli", "dist/cli-node"]) {
|
|
11741
|
-
const sourcePath =
|
|
11742
|
-
if (!await fileExistsStrict(
|
|
11887
|
+
const sourcePath = join11(repoRoot, runtimePath);
|
|
11888
|
+
if (!await fileExistsStrict(join11(sourcePath, "index.js")))
|
|
11743
11889
|
continue;
|
|
11744
|
-
await mkdir3(dirname4(
|
|
11745
|
-
await
|
|
11890
|
+
await mkdir3(dirname4(join11(input.pluginRoot, runtimePath)), { recursive: true });
|
|
11891
|
+
await cp3(sourcePath, join11(input.pluginRoot, runtimePath), { recursive: true });
|
|
11746
11892
|
}
|
|
11747
11893
|
}
|
|
11748
|
-
var canonicalPromptRelativePaths = [
|
|
11894
|
+
var canonicalPromptRelativePaths = [join11("packages", "prompts-core", "prompts", "ultrawork", "codex.md")];
|
|
11749
11895
|
async function copyCanonicalPromptSources(input) {
|
|
11750
11896
|
const repoRoot = repoRootForCodexPluginSource(input.sourcePath);
|
|
11751
11897
|
if (repoRoot === null)
|
|
11752
11898
|
return;
|
|
11753
11899
|
for (const relativePath of canonicalPromptRelativePaths) {
|
|
11754
|
-
const sourceFile =
|
|
11900
|
+
const sourceFile = join11(repoRoot, relativePath);
|
|
11755
11901
|
if (!await fileExistsStrict(sourceFile))
|
|
11756
11902
|
continue;
|
|
11757
|
-
const targetFile =
|
|
11903
|
+
const targetFile = join11(input.pluginRoot, relativePath);
|
|
11758
11904
|
await mkdir3(dirname4(targetFile), { recursive: true });
|
|
11759
|
-
await
|
|
11905
|
+
await cp3(sourceFile, targetFile);
|
|
11760
11906
|
}
|
|
11761
11907
|
}
|
|
11762
11908
|
function repoRootForCodexPluginSource(sourcePath) {
|
|
@@ -11771,10 +11917,10 @@ function repoRootForCodexPluginSource(sourcePath) {
|
|
|
11771
11917
|
return dirname4(packagesRoot);
|
|
11772
11918
|
}
|
|
11773
11919
|
// packages/omo-codex/src/install/codex-cache-prune.ts
|
|
11774
|
-
import { lstat as
|
|
11775
|
-
import { join as
|
|
11920
|
+
import { lstat as lstat6, readdir as readdir6, rm as rm6, stat as stat4 } from "node:fs/promises";
|
|
11921
|
+
import { join as join12 } from "node:path";
|
|
11776
11922
|
async function pruneMarketplaceCache(input) {
|
|
11777
|
-
const cacheRoot =
|
|
11923
|
+
const cacheRoot = join12(input.codexHome, "plugins", "cache", input.marketplaceName);
|
|
11778
11924
|
if (!await fileExistsStrict(cacheRoot))
|
|
11779
11925
|
return;
|
|
11780
11926
|
const keep = new Set(input.keepPluginNames);
|
|
@@ -11782,28 +11928,28 @@ async function pruneMarketplaceCache(input) {
|
|
|
11782
11928
|
for (const entry of entries) {
|
|
11783
11929
|
if (!entry.isDirectory() || keep.has(entry.name))
|
|
11784
11930
|
continue;
|
|
11785
|
-
await
|
|
11931
|
+
await rm6(join12(cacheRoot, entry.name), { recursive: true, force: true });
|
|
11786
11932
|
}
|
|
11787
11933
|
}
|
|
11788
11934
|
async function pruneMarketplacePluginCaches(input) {
|
|
11789
|
-
const cacheRoot =
|
|
11935
|
+
const cacheRoot = join12(input.codexHome, "plugins", "cache", input.marketplaceName);
|
|
11790
11936
|
if (!await fileExistsStrict(cacheRoot))
|
|
11791
11937
|
return;
|
|
11792
11938
|
for (const pluginName of input.pluginNames) {
|
|
11793
|
-
await
|
|
11939
|
+
await rm6(join12(cacheRoot, pluginName), { recursive: true, force: true });
|
|
11794
11940
|
}
|
|
11795
11941
|
const remainingEntries = await readCacheEntryNames(cacheRoot);
|
|
11796
11942
|
if (remainingEntries.length === 0) {
|
|
11797
|
-
await
|
|
11943
|
+
await rm6(cacheRoot, { recursive: true, force: true });
|
|
11798
11944
|
}
|
|
11799
11945
|
}
|
|
11800
11946
|
async function readCacheEntries(path) {
|
|
11801
11947
|
const emptyEntries = [];
|
|
11802
|
-
return readCacheRoot(path, () =>
|
|
11948
|
+
return readCacheRoot(path, () => readdir6(path, { withFileTypes: true }), emptyEntries);
|
|
11803
11949
|
}
|
|
11804
11950
|
async function readCacheEntryNames(path) {
|
|
11805
11951
|
const emptyNames = [];
|
|
11806
|
-
return readCacheRoot(path, () =>
|
|
11952
|
+
return readCacheRoot(path, () => readdir6(path), emptyNames);
|
|
11807
11953
|
}
|
|
11808
11954
|
async function readCacheRoot(path, readEntries, fallback) {
|
|
11809
11955
|
try {
|
|
@@ -11818,7 +11964,7 @@ async function readCacheRoot(path, readEntries, fallback) {
|
|
|
11818
11964
|
}
|
|
11819
11965
|
async function isBrokenCacheSymlink(path) {
|
|
11820
11966
|
try {
|
|
11821
|
-
const entry = await
|
|
11967
|
+
const entry = await lstat6(path);
|
|
11822
11968
|
if (!entry.isSymbolicLink())
|
|
11823
11969
|
return false;
|
|
11824
11970
|
} catch (error) {
|
|
@@ -11836,18 +11982,18 @@ async function isBrokenCacheSymlink(path) {
|
|
|
11836
11982
|
}
|
|
11837
11983
|
}
|
|
11838
11984
|
// packages/omo-codex/src/install/codex-cached-marketplace-manifest.ts
|
|
11839
|
-
import { mkdir as mkdir4, rename as
|
|
11840
|
-
import { join as
|
|
11985
|
+
import { mkdir as mkdir4, rename as rename3, rm as rm7, stat as stat5, writeFile as writeFile4 } from "node:fs/promises";
|
|
11986
|
+
import { join as join13 } from "node:path";
|
|
11841
11987
|
async function writeCachedMarketplaceManifest(input) {
|
|
11842
|
-
const marketplaceDir =
|
|
11988
|
+
const marketplaceDir = join13(input.marketplaceRoot, ".agents", "plugins");
|
|
11843
11989
|
await mkdir4(marketplaceDir, { recursive: true });
|
|
11844
11990
|
for (const plugin of input.plugins) {
|
|
11845
|
-
const pluginPath =
|
|
11991
|
+
const pluginPath = join13(input.marketplaceRoot, plugin.name, plugin.version);
|
|
11846
11992
|
if (!await isDirectory2(pluginPath))
|
|
11847
11993
|
throw new Error(`Cannot write cached marketplace manifest: ${pluginPath} does not exist`);
|
|
11848
11994
|
}
|
|
11849
|
-
const manifestPath =
|
|
11850
|
-
const tempPath =
|
|
11995
|
+
const manifestPath = join13(marketplaceDir, "marketplace.json");
|
|
11996
|
+
const tempPath = join13(marketplaceDir, `.marketplace.json.tmp-${process.pid}-${Date.now()}`);
|
|
11851
11997
|
try {
|
|
11852
11998
|
await writeFile4(tempPath, `${JSON.stringify({
|
|
11853
11999
|
name: input.marketplaceName,
|
|
@@ -11857,9 +12003,9 @@ async function writeCachedMarketplaceManifest(input) {
|
|
|
11857
12003
|
}))
|
|
11858
12004
|
}, null, "\t")}
|
|
11859
12005
|
`);
|
|
11860
|
-
await
|
|
12006
|
+
await rename3(tempPath, manifestPath);
|
|
11861
12007
|
} catch (error) {
|
|
11862
|
-
await
|
|
12008
|
+
await rm7(tempPath, { force: true });
|
|
11863
12009
|
throw error;
|
|
11864
12010
|
}
|
|
11865
12011
|
}
|
|
@@ -11876,7 +12022,7 @@ async function isDirectory2(path) {
|
|
|
11876
12022
|
// packages/omo-codex/src/install/codex-package-layout.ts
|
|
11877
12023
|
import { existsSync as existsSync2 } from "node:fs";
|
|
11878
12024
|
import { readFile as readFile9 } from "node:fs/promises";
|
|
11879
|
-
import { join as
|
|
12025
|
+
import { join as join14 } from "node:path";
|
|
11880
12026
|
var PACKAGED_CODEX_INSTALLER_NAMES = new Set([
|
|
11881
12027
|
"@code-yeongyu/lazycodex",
|
|
11882
12028
|
"@code-yeongyu/lazycodex-ai",
|
|
@@ -11886,9 +12032,9 @@ var PACKAGED_CODEX_INSTALLER_NAMES = new Set([
|
|
|
11886
12032
|
"oh-my-openagent"
|
|
11887
12033
|
]);
|
|
11888
12034
|
async function shouldBuildSourcePackages(repoRoot) {
|
|
11889
|
-
if (existsSync2(
|
|
12035
|
+
if (existsSync2(join14(repoRoot, "packages", "omo-opencode", "src", "index.ts")))
|
|
11890
12036
|
return true;
|
|
11891
|
-
const packageJsonPath =
|
|
12037
|
+
const packageJsonPath = join14(repoRoot, "package.json");
|
|
11892
12038
|
if (!existsSync2(packageJsonPath))
|
|
11893
12039
|
return true;
|
|
11894
12040
|
const packageJson = JSON.parse(await readFile9(packageJsonPath, "utf8"));
|
|
@@ -12495,13 +12641,13 @@ function tomlKeySegment(value) {
|
|
|
12495
12641
|
}
|
|
12496
12642
|
|
|
12497
12643
|
// packages/omo-codex/src/install/codex-config-atomic-write.ts
|
|
12498
|
-
import { lstat as
|
|
12499
|
-
import { basename as basename3, dirname as dirname5, isAbsolute as isAbsolute5, join as
|
|
12644
|
+
import { lstat as lstat7, readlink as readlink4, realpath, rename as rename4, unlink, writeFile as writeFile5 } from "node:fs/promises";
|
|
12645
|
+
import { basename as basename3, dirname as dirname5, isAbsolute as isAbsolute5, join as join15, resolve as resolve6 } from "node:path";
|
|
12500
12646
|
var RENAME_RETRY_DELAYS_MS = [10, 25, 50];
|
|
12501
12647
|
var RETRIABLE_RENAME_CODES = new Set(["EPERM", "EBUSY"]);
|
|
12502
12648
|
async function writeFileAtomic(targetPath, data) {
|
|
12503
12649
|
const writeTarget = await resolveSymlinkTarget(targetPath);
|
|
12504
|
-
const temporaryPath =
|
|
12650
|
+
const temporaryPath = join15(dirname5(writeTarget), `.tmp-${basename3(writeTarget)}-${process.pid}-${Date.now()}`);
|
|
12505
12651
|
await writeFile5(temporaryPath, data);
|
|
12506
12652
|
try {
|
|
12507
12653
|
await renameWithRetry(temporaryPath, writeTarget);
|
|
@@ -12516,7 +12662,7 @@ async function writeFileAtomic(targetPath, data) {
|
|
|
12516
12662
|
}
|
|
12517
12663
|
async function resolveSymlinkTarget(targetPath) {
|
|
12518
12664
|
try {
|
|
12519
|
-
const linkStats = await
|
|
12665
|
+
const linkStats = await lstat7(targetPath);
|
|
12520
12666
|
if (!linkStats.isSymbolicLink())
|
|
12521
12667
|
return targetPath;
|
|
12522
12668
|
} catch (error) {
|
|
@@ -12536,7 +12682,7 @@ async function resolveSymlinkTarget(targetPath) {
|
|
|
12536
12682
|
async function renameWithRetry(fromPath, toPath) {
|
|
12537
12683
|
for (let attempt = 0;; attempt += 1) {
|
|
12538
12684
|
try {
|
|
12539
|
-
await
|
|
12685
|
+
await rename4(fromPath, toPath);
|
|
12540
12686
|
return;
|
|
12541
12687
|
} catch (error) {
|
|
12542
12688
|
if (!isRetriableRenameError(error) || attempt >= RENAME_RETRY_DELAYS_MS.length) {
|
|
@@ -13001,7 +13147,7 @@ function isRootSetting(line, key) {
|
|
|
13001
13147
|
|
|
13002
13148
|
// packages/omo-codex/src/install/codex-model-catalog.ts
|
|
13003
13149
|
import { readFile as readFile10 } from "node:fs/promises";
|
|
13004
|
-
import { join as
|
|
13150
|
+
import { join as join16 } from "node:path";
|
|
13005
13151
|
|
|
13006
13152
|
// packages/model-core/src/latest-models.ts
|
|
13007
13153
|
var LATEST_MODEL_BY_FAMILY = {
|
|
@@ -13015,7 +13161,8 @@ var LATEST_MODEL_BY_FAMILY = {
|
|
|
13015
13161
|
gptLunaFast: "gpt-6-luna-fast",
|
|
13016
13162
|
glm: "glm-5.3",
|
|
13017
13163
|
glmFlash: "glm-5.3-flash",
|
|
13018
|
-
kimi: "kimi-k3",
|
|
13164
|
+
kimi: "kimi-k3.1-pro",
|
|
13165
|
+
kimiK3: "kimi-k3",
|
|
13019
13166
|
geminiPro: "gemini-4-argon"
|
|
13020
13167
|
};
|
|
13021
13168
|
|
|
@@ -13050,7 +13197,7 @@ var FALLBACK_CODEX_MODEL_CATALOG = {
|
|
|
13050
13197
|
]
|
|
13051
13198
|
};
|
|
13052
13199
|
async function readCodexModelCatalog(codexPackageRoot) {
|
|
13053
|
-
const catalogPath =
|
|
13200
|
+
const catalogPath = join16(codexPackageRoot, "plugin", "model-catalog.json");
|
|
13054
13201
|
try {
|
|
13055
13202
|
const parsed = JSON.parse(await readFile10(catalogPath, "utf8"));
|
|
13056
13203
|
return parseCodexModelCatalog(parsed) ?? FALLBACK_CODEX_MODEL_CATALOG;
|
|
@@ -13134,7 +13281,7 @@ function isRootSetting2(line, key) {
|
|
|
13134
13281
|
|
|
13135
13282
|
// packages/omo-codex/src/install/codex-multi-agent-v2-config.ts
|
|
13136
13283
|
import { readFileSync } from "node:fs";
|
|
13137
|
-
import { dirname as dirname6, isAbsolute as isAbsolute6, join as
|
|
13284
|
+
import { dirname as dirname6, isAbsolute as isAbsolute6, join as join17 } from "node:path";
|
|
13138
13285
|
var CODEX_AGENTS_HEADER = "agents";
|
|
13139
13286
|
var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
|
|
13140
13287
|
function ensureCodexMultiAgentV2Config(config, options = {}) {
|
|
@@ -13162,8 +13309,8 @@ function resolveCodexMultiAgentVersion(config, configPath) {
|
|
|
13162
13309
|
}
|
|
13163
13310
|
function resolveCatalogPath(configuredPath, configPath) {
|
|
13164
13311
|
if (configuredPath === null)
|
|
13165
|
-
return
|
|
13166
|
-
return isAbsolute6(configuredPath) ? configuredPath :
|
|
13312
|
+
return join17(dirname6(configPath), "models_cache.json");
|
|
13313
|
+
return isAbsolute6(configuredPath) ? configuredPath : join17(dirname6(configPath), configuredPath);
|
|
13167
13314
|
}
|
|
13168
13315
|
function readCatalogMultiAgentVersion(model, cachePath) {
|
|
13169
13316
|
let raw;
|
|
@@ -13326,7 +13473,7 @@ function isMissingFileError(error) {
|
|
|
13326
13473
|
// packages/omo-codex/src/install/codex-hook-trust.ts
|
|
13327
13474
|
import { createHash } from "node:crypto";
|
|
13328
13475
|
import { readFile as readFile12 } from "node:fs/promises";
|
|
13329
|
-
import { join as
|
|
13476
|
+
import { join as join18 } from "node:path";
|
|
13330
13477
|
var EVENT_LABELS = new Map([
|
|
13331
13478
|
["PreToolUse", "pre_tool_use"],
|
|
13332
13479
|
["PermissionRequest", "permission_request"],
|
|
@@ -13340,7 +13487,7 @@ var EVENT_LABELS = new Map([
|
|
|
13340
13487
|
["Stop", "stop"]
|
|
13341
13488
|
]);
|
|
13342
13489
|
async function trustedHookStatesForPlugin(input) {
|
|
13343
|
-
const manifestPath =
|
|
13490
|
+
const manifestPath = join18(input.pluginRoot, ".codex-plugin", "plugin.json");
|
|
13344
13491
|
if (!await exists(manifestPath))
|
|
13345
13492
|
return [];
|
|
13346
13493
|
const manifest = JSON.parse(await readFile12(manifestPath, "utf8"));
|
|
@@ -13348,7 +13495,7 @@ async function trustedHookStatesForPlugin(input) {
|
|
|
13348
13495
|
return [];
|
|
13349
13496
|
const states = [];
|
|
13350
13497
|
for (const hookPath of hookManifestPaths2(manifest.hooks)) {
|
|
13351
|
-
const hooksPath =
|
|
13498
|
+
const hooksPath = join18(input.pluginRoot, hookPath);
|
|
13352
13499
|
if (!await exists(hooksPath))
|
|
13353
13500
|
continue;
|
|
13354
13501
|
const parsed = JSON.parse(await readFile12(hooksPath, "utf8"));
|
|
@@ -19742,8 +19889,8 @@ var OmoMemoryWriteNoticeLayerSchema = object({
|
|
|
19742
19889
|
enabled: boolean2().optional()
|
|
19743
19890
|
}).strict();
|
|
19744
19891
|
var OmoMemoryProjectionSchema = object({
|
|
19745
|
-
max_entries_per_directory: number2().int().min(0).default(
|
|
19746
|
-
max_bytes: number2().int().min(0).default(
|
|
19892
|
+
max_entries_per_directory: number2().int().min(0).default(0),
|
|
19893
|
+
max_bytes: number2().int().min(0).default(40960)
|
|
19747
19894
|
}).strict();
|
|
19748
19895
|
var OmoMemoryProjectionLayerSchema = object({
|
|
19749
19896
|
max_entries_per_directory: number2().int().min(0).optional(),
|
|
@@ -19807,7 +19954,7 @@ var OmoMemorySettingsSchema = object({
|
|
|
19807
19954
|
query_expansion: false
|
|
19808
19955
|
}),
|
|
19809
19956
|
project_scope: OmoMemoryProjectScopeSchema.default({ nudge: true, recall: true }),
|
|
19810
|
-
projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory:
|
|
19957
|
+
projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory: 0, max_bytes: 40960 }),
|
|
19811
19958
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
19812
19959
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
19813
19960
|
}).strict();
|
|
@@ -19848,6 +19995,17 @@ var OmoModelCatalogEntryLayerInputSchema = OmoModelCatalogEntryInputSchema.parti
|
|
|
19848
19995
|
var OmoModelCatalogEntryLayerSchema = preprocess((value) => isRecord5(value) ? normalizeLegacyModelFields(value) : value, OmoModelCatalogEntryLayerInputSchema);
|
|
19849
19996
|
var OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
19850
19997
|
|
|
19998
|
+
// packages/omo-config-core/src/schema/model-pad.ts
|
|
19999
|
+
var OmoModelPadLabelsSchema = object({
|
|
20000
|
+
daily: string2().optional(),
|
|
20001
|
+
geeky: string2().optional(),
|
|
20002
|
+
normal: string2().optional(),
|
|
20003
|
+
heavy: string2().optional()
|
|
20004
|
+
}).strict();
|
|
20005
|
+
var OmoModelPadSchema = object({
|
|
20006
|
+
labels: OmoModelPadLabelsSchema.optional()
|
|
20007
|
+
}).strict();
|
|
20008
|
+
|
|
19851
20009
|
// packages/omo-config-core/src/schema/model-profile.ts
|
|
19852
20010
|
function isRecord6(value) {
|
|
19853
20011
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -20145,6 +20303,7 @@ var OmoTypedHarnessConfigSchema = object({
|
|
|
20145
20303
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
20146
20304
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
20147
20305
|
model_profile: string2().optional(),
|
|
20306
|
+
model_pad: OmoModelPadSchema.optional(),
|
|
20148
20307
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
20149
20308
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
20150
20309
|
side_panel: OmoSidePanelSettingsLayerSchema.optional(),
|
|
@@ -20163,6 +20322,7 @@ var OmoConfigProfileSchema = object({
|
|
|
20163
20322
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
20164
20323
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
20165
20324
|
model_profile: string2().optional(),
|
|
20325
|
+
model_pad: OmoModelPadSchema.optional(),
|
|
20166
20326
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
20167
20327
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
20168
20328
|
side_panel: OmoSidePanelSettingsLayerSchema.optional(),
|
|
@@ -20186,6 +20346,7 @@ var OmoConfigSchema = object({
|
|
|
20186
20346
|
models: OmoModelCatalogSchema.optional(),
|
|
20187
20347
|
model_profiles: OmoModelProfilesSchema.optional(),
|
|
20188
20348
|
model_profile: string2().optional(),
|
|
20349
|
+
model_pad: OmoModelPadSchema.optional(),
|
|
20189
20350
|
memory: OmoMemorySettingsSchema.optional(),
|
|
20190
20351
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
20191
20352
|
side_panel: OmoSidePanelSettingsSchema.optional(),
|
|
@@ -20212,6 +20373,7 @@ var OmoConfigLayerSchema = object({
|
|
|
20212
20373
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
20213
20374
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
20214
20375
|
model_profile: string2().optional(),
|
|
20376
|
+
model_pad: OmoModelPadSchema.optional(),
|
|
20215
20377
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
20216
20378
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
20217
20379
|
side_panel: OmoSidePanelSettingsLayerSchema.optional(),
|
|
@@ -21524,7 +21686,7 @@ function validateConfigLayer(path, data) {
|
|
|
21524
21686
|
|
|
21525
21687
|
// packages/omo-config-core/src/loader/paths.ts
|
|
21526
21688
|
import { userInfo } from "node:os";
|
|
21527
|
-
import { dirname as dirname8, join as
|
|
21689
|
+
import { dirname as dirname8, join as join19, posix, resolve as resolve7 } from "node:path";
|
|
21528
21690
|
|
|
21529
21691
|
// packages/omo-config-core/src/internal/posix-path.ts
|
|
21530
21692
|
function toPosixPath2(path) {
|
|
@@ -21539,14 +21701,14 @@ function resolveHomeDir(env = process.env) {
|
|
|
21539
21701
|
return homeDir.startsWith("/") ? posix.resolve(homeDir) : toPosixPath2(resolve7(homeDir));
|
|
21540
21702
|
}
|
|
21541
21703
|
function resolveUserOmoConfigDirectory(env = process.env) {
|
|
21542
|
-
return
|
|
21704
|
+
return join19(resolveHomeDir(env), ".omo");
|
|
21543
21705
|
}
|
|
21544
21706
|
function detectUserOmoJsonPath(env, fileSystem) {
|
|
21545
21707
|
const configDir = resolveUserOmoConfigDirectory(env);
|
|
21546
|
-
const jsoncPath =
|
|
21708
|
+
const jsoncPath = join19(configDir, "omo.jsonc");
|
|
21547
21709
|
if (fileSystem.existsSync(jsoncPath))
|
|
21548
21710
|
return jsoncPath;
|
|
21549
|
-
const jsonPath =
|
|
21711
|
+
const jsonPath = join19(configDir, "omo.json");
|
|
21550
21712
|
return fileSystem.existsSync(jsonPath) ? jsonPath : jsoncPath;
|
|
21551
21713
|
}
|
|
21552
21714
|
function isSymlinkedProjectPath(path, fileSystem) {
|
|
@@ -21564,13 +21726,13 @@ function isLoadableProjectConfigFile(path, fileSystem) {
|
|
|
21564
21726
|
return fileSystem.existsSync(path) && !isSymlinkedProjectPath(path, fileSystem);
|
|
21565
21727
|
}
|
|
21566
21728
|
function detectOmoJsonPath(dir, fileSystem) {
|
|
21567
|
-
const omoDir =
|
|
21729
|
+
const omoDir = join19(dir, ".omo");
|
|
21568
21730
|
if (isSymlinkedProjectPath(omoDir, fileSystem))
|
|
21569
21731
|
return null;
|
|
21570
|
-
const jsoncPath =
|
|
21732
|
+
const jsoncPath = join19(omoDir, "omo.jsonc");
|
|
21571
21733
|
if (isLoadableProjectConfigFile(jsoncPath, fileSystem))
|
|
21572
21734
|
return jsoncPath;
|
|
21573
|
-
const jsonPath =
|
|
21735
|
+
const jsonPath = join19(omoDir, "omo.json");
|
|
21574
21736
|
return isLoadableProjectConfigFile(jsonPath, fileSystem) ? jsonPath : null;
|
|
21575
21737
|
}
|
|
21576
21738
|
function realpathOrSelf(path, fileSystem) {
|
|
@@ -21890,8 +22052,8 @@ function recordAt(value, key) {
|
|
|
21890
22052
|
}
|
|
21891
22053
|
|
|
21892
22054
|
// packages/omo-codex/src/install/codex-marketplace-snapshot.ts
|
|
21893
|
-
import { cp as
|
|
21894
|
-
import { join as
|
|
22055
|
+
import { cp as cp4, mkdir as mkdir6, rename as rename5, rm as rm8, writeFile as writeFile6 } from "node:fs/promises";
|
|
22056
|
+
import { join as join20, sep as sep7 } from "node:path";
|
|
21895
22057
|
var INSTALLED_MARKETPLACES_DIR = ".tmp/marketplaces";
|
|
21896
22058
|
async function writeInstalledMarketplaceSnapshot(input) {
|
|
21897
22059
|
const marketplaceRoot = installedMarketplaceRoot(input.codexHome, input.marketplace.name);
|
|
@@ -21904,51 +22066,51 @@ async function writeInstalledMarketplaceSnapshot(input) {
|
|
|
21904
22066
|
return snapshotPlugins;
|
|
21905
22067
|
}
|
|
21906
22068
|
function installedMarketplaceRoot(codexHome, marketplaceName) {
|
|
21907
|
-
return
|
|
22069
|
+
return join20(codexHome, INSTALLED_MARKETPLACES_DIR, marketplaceName);
|
|
21908
22070
|
}
|
|
21909
22071
|
async function writeMarketplaceManifest(marketplaceRoot, marketplace) {
|
|
21910
|
-
const manifestDir =
|
|
22072
|
+
const manifestDir = join20(marketplaceRoot, ".agents", "plugins");
|
|
21911
22073
|
await mkdir6(manifestDir, { recursive: true });
|
|
21912
|
-
const tempPath =
|
|
22074
|
+
const tempPath = join20(manifestDir, `.marketplace-${process.pid}-${Date.now()}.json.tmp`);
|
|
21913
22075
|
await writeFile6(tempPath, `${JSON.stringify(marketplace, null, "\t")}
|
|
21914
22076
|
`);
|
|
21915
|
-
await
|
|
22077
|
+
await rename5(tempPath, join20(manifestDir, "marketplace.json"));
|
|
21916
22078
|
}
|
|
21917
22079
|
async function writeSnapshotPlugin(marketplaceRoot, plugin) {
|
|
21918
|
-
const pluginsDir =
|
|
22080
|
+
const pluginsDir = join20(marketplaceRoot, "plugins");
|
|
21919
22081
|
await mkdir6(pluginsDir, { recursive: true });
|
|
21920
|
-
const targetPath =
|
|
21921
|
-
const tempPath =
|
|
21922
|
-
await
|
|
21923
|
-
await
|
|
22082
|
+
const targetPath = join20(pluginsDir, plugin.name);
|
|
22083
|
+
const tempPath = join20(pluginsDir, `.tmp-${plugin.name}-${process.pid}-${Date.now()}`);
|
|
22084
|
+
await rm8(tempPath, { recursive: true, force: true });
|
|
22085
|
+
await cp4(plugin.sourcePath, tempPath, {
|
|
21924
22086
|
recursive: true,
|
|
21925
22087
|
filter: (source) => shouldCopyMarketplaceSourcePath(source, plugin.sourcePath)
|
|
21926
22088
|
});
|
|
21927
22089
|
await copyBundledMcpRuntimeDists({ pluginRoot: tempPath, sourceRoot: plugin.sourcePath });
|
|
21928
|
-
await
|
|
21929
|
-
await
|
|
22090
|
+
await rm8(targetPath, { recursive: true, force: true });
|
|
22091
|
+
await rename5(tempPath, targetPath);
|
|
21930
22092
|
await rewriteCachedMcpManifest(targetPath, plugin.sourcePath);
|
|
21931
22093
|
return { name: plugin.name, path: targetPath };
|
|
21932
22094
|
}
|
|
21933
22095
|
function shouldCopyMarketplaceSourcePath(path, root) {
|
|
21934
|
-
const relative = path === root ? "" : path.slice(root.length +
|
|
22096
|
+
const relative = path === root ? "" : path.slice(root.length + sep7.length);
|
|
21935
22097
|
if (relative === "")
|
|
21936
22098
|
return true;
|
|
21937
|
-
const parts = relative.split(
|
|
22099
|
+
const parts = relative.split(sep7);
|
|
21938
22100
|
return !parts.some((part) => part === ".git" || part === "node_modules");
|
|
21939
22101
|
}
|
|
21940
22102
|
|
|
21941
22103
|
// packages/omo-codex/src/install/link-cached-plugin-agents.ts
|
|
21942
|
-
import { copyFile, lstat as
|
|
21943
|
-
import { basename as basename4, join as
|
|
22104
|
+
import { copyFile, lstat as lstat11, mkdir as mkdir7, readdir as readdir8, readFile as readFile17, rm as rm12, writeFile as writeFile9 } from "node:fs/promises";
|
|
22105
|
+
import { basename as basename4, join as join25 } from "node:path";
|
|
21944
22106
|
|
|
21945
22107
|
// packages/omo-codex/src/install/agent-model-overrides.ts
|
|
21946
|
-
import { readFile as readFile14, rm as
|
|
21947
|
-
import { join as
|
|
22108
|
+
import { readFile as readFile14, rm as rm9, writeFile as writeFile8 } from "node:fs/promises";
|
|
22109
|
+
import { join as join22 } from "node:path";
|
|
21948
22110
|
|
|
21949
22111
|
// packages/omo-codex/src/install/preserved-agent-settings.ts
|
|
21950
|
-
import { lstat as
|
|
21951
|
-
import { join as
|
|
22112
|
+
import { lstat as lstat8, readFile as readFile13, readdir as readdir7, writeFile as writeFile7 } from "node:fs/promises";
|
|
22113
|
+
import { join as join21 } from "node:path";
|
|
21952
22114
|
|
|
21953
22115
|
// packages/omo-codex/src/install/managed-agent-reasoning-defaults.ts
|
|
21954
22116
|
var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
|
|
@@ -22141,15 +22303,15 @@ function resolveManagedAgentReasoning(input) {
|
|
|
22141
22303
|
|
|
22142
22304
|
// packages/omo-codex/src/install/preserved-agent-settings.ts
|
|
22143
22305
|
async function capturePreservedAgentReasoning(input) {
|
|
22144
|
-
const agentsDir =
|
|
22306
|
+
const agentsDir = join21(input.codexHome, "agents");
|
|
22145
22307
|
if (!await exists2(agentsDir))
|
|
22146
22308
|
return new Map;
|
|
22147
22309
|
const preserved = new Map;
|
|
22148
|
-
const agentEntries = await
|
|
22310
|
+
const agentEntries = await readdir7(agentsDir, { withFileTypes: true });
|
|
22149
22311
|
for (const entry of agentEntries) {
|
|
22150
22312
|
if (!entry.name.endsWith(".toml"))
|
|
22151
22313
|
continue;
|
|
22152
|
-
const content = await readTextIfExists(
|
|
22314
|
+
const content = await readTextIfExists(join21(agentsDir, entry.name));
|
|
22153
22315
|
if (content === null)
|
|
22154
22316
|
continue;
|
|
22155
22317
|
const effort = extractReasoningEffort(content);
|
|
@@ -22163,15 +22325,15 @@ async function capturePreservedAgentReasoning(input) {
|
|
|
22163
22325
|
return preserved;
|
|
22164
22326
|
}
|
|
22165
22327
|
async function capturePreservedAgentServiceTier(input) {
|
|
22166
|
-
const agentsDir =
|
|
22328
|
+
const agentsDir = join21(input.codexHome, "agents");
|
|
22167
22329
|
if (!await exists2(agentsDir))
|
|
22168
22330
|
return new Map;
|
|
22169
22331
|
const preserved = new Map;
|
|
22170
|
-
const agentEntries = await
|
|
22332
|
+
const agentEntries = await readdir7(agentsDir, { withFileTypes: true });
|
|
22171
22333
|
for (const entry of agentEntries) {
|
|
22172
22334
|
if (!entry.name.endsWith(".toml"))
|
|
22173
22335
|
continue;
|
|
22174
|
-
const content = await readTextIfExists(
|
|
22336
|
+
const content = await readTextIfExists(join21(agentsDir, entry.name));
|
|
22175
22337
|
if (content === null)
|
|
22176
22338
|
continue;
|
|
22177
22339
|
preserved.set(agentNameFromToml(entry.name), extractServiceTier(content));
|
|
@@ -22300,7 +22462,7 @@ function agentNameFromToml(fileName) {
|
|
|
22300
22462
|
}
|
|
22301
22463
|
async function exists2(path) {
|
|
22302
22464
|
try {
|
|
22303
|
-
await
|
|
22465
|
+
await lstat8(path);
|
|
22304
22466
|
return true;
|
|
22305
22467
|
} catch (error) {
|
|
22306
22468
|
if (nodeErrorCode(error) !== "ENOENT")
|
|
@@ -22339,7 +22501,7 @@ async function readAgentModelReceipts(codexHome) {
|
|
|
22339
22501
|
async function writeAgentModelReceipts(codexHome, receipts) {
|
|
22340
22502
|
const path = receiptPath(codexHome);
|
|
22341
22503
|
if (receipts.size === 0) {
|
|
22342
|
-
await
|
|
22504
|
+
await rm9(path, { force: true });
|
|
22343
22505
|
return;
|
|
22344
22506
|
}
|
|
22345
22507
|
await writeFile8(path, `${JSON.stringify(Object.fromEntries(receipts), null, "\t")}
|
|
@@ -22360,7 +22522,7 @@ async function applyAgentOverride(input) {
|
|
|
22360
22522
|
await writeFile8(input.linkPath, content);
|
|
22361
22523
|
}
|
|
22362
22524
|
function receiptPath(codexHome) {
|
|
22363
|
-
return
|
|
22525
|
+
return join22(codexHome, "agents", RECEIPT_FILE);
|
|
22364
22526
|
}
|
|
22365
22527
|
function parseJson(content) {
|
|
22366
22528
|
try {
|
|
@@ -22392,8 +22554,8 @@ function handEditedAgentModel(installedModel, receipt) {
|
|
|
22392
22554
|
}
|
|
22393
22555
|
|
|
22394
22556
|
// packages/omo-codex/src/install/retired-managed-agent-purge.ts
|
|
22395
|
-
import { lstat as
|
|
22396
|
-
import { join as
|
|
22557
|
+
import { lstat as lstat9, readFile as readFile15, rm as rm10 } from "node:fs/promises";
|
|
22558
|
+
import { join as join23 } from "node:path";
|
|
22397
22559
|
var RETIRED_MANAGED_AGENT_FILES = [
|
|
22398
22560
|
{
|
|
22399
22561
|
fileName: "codex-ultrawork-reviewer.toml",
|
|
@@ -22405,20 +22567,20 @@ var RETIRED_MANAGED_AGENT_FILES = [
|
|
|
22405
22567
|
}
|
|
22406
22568
|
];
|
|
22407
22569
|
async function purgeRetiredManagedAgentFiles(input) {
|
|
22408
|
-
const agentsDir =
|
|
22570
|
+
const agentsDir = join23(input.codexHome, "agents");
|
|
22409
22571
|
if (!await exists3(agentsDir))
|
|
22410
22572
|
return;
|
|
22411
22573
|
for (const retiredAgent of RETIRED_MANAGED_AGENT_FILES) {
|
|
22412
|
-
const agentPath =
|
|
22574
|
+
const agentPath = join23(agentsDir, retiredAgent.fileName);
|
|
22413
22575
|
if (!await exists3(agentPath))
|
|
22414
22576
|
continue;
|
|
22415
|
-
const agentStat = await
|
|
22577
|
+
const agentStat = await lstat9(agentPath);
|
|
22416
22578
|
if (agentStat.isDirectory() && !agentStat.isSymbolicLink())
|
|
22417
22579
|
continue;
|
|
22418
22580
|
const content = await readTextIfExists2(agentPath);
|
|
22419
22581
|
if (content === null || !hasRequiredMarkers(content, retiredAgent.requiredMarkers))
|
|
22420
22582
|
continue;
|
|
22421
|
-
await
|
|
22583
|
+
await rm10(agentPath, { force: true });
|
|
22422
22584
|
}
|
|
22423
22585
|
}
|
|
22424
22586
|
function hasRequiredMarkers(content, markers) {
|
|
@@ -22435,7 +22597,7 @@ async function readTextIfExists2(path) {
|
|
|
22435
22597
|
}
|
|
22436
22598
|
async function exists3(path) {
|
|
22437
22599
|
try {
|
|
22438
|
-
await
|
|
22600
|
+
await lstat9(path);
|
|
22439
22601
|
return true;
|
|
22440
22602
|
} catch (error) {
|
|
22441
22603
|
if (nodeErrorCode2(error) !== "ENOENT")
|
|
@@ -22451,15 +22613,15 @@ function nodeErrorCode2(error) {
|
|
|
22451
22613
|
|
|
22452
22614
|
// packages/omo-codex/src/install/default-agent-role.ts
|
|
22453
22615
|
import { createHash as createHash3 } from "node:crypto";
|
|
22454
|
-
import { lstat as
|
|
22455
|
-
import { join as
|
|
22616
|
+
import { lstat as lstat10, readFile as readFile16, rm as rm11 } from "node:fs/promises";
|
|
22617
|
+
import { join as join24 } from "node:path";
|
|
22456
22618
|
var REGISTRATION = { name: "default", configFile: "./agents/default.toml" };
|
|
22457
22619
|
async function installDefaultAgentRole(input) {
|
|
22458
|
-
const target =
|
|
22459
|
-
const receipt =
|
|
22460
|
-
const configPath =
|
|
22620
|
+
const target = join24(input.codexHome, "agents", "default.toml");
|
|
22621
|
+
const receipt = join24(input.codexHome, "agents", ".lazycodex-default.sha256");
|
|
22622
|
+
const configPath = join24(input.codexHome, "config.toml");
|
|
22461
22623
|
const config = await readIfPresent(configPath);
|
|
22462
|
-
const entry = await
|
|
22624
|
+
const entry = await lstat10(target).catch((error) => {
|
|
22463
22625
|
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
22464
22626
|
return null;
|
|
22465
22627
|
throw error;
|
|
@@ -22480,8 +22642,8 @@ async function installDefaultAgentRole(input) {
|
|
|
22480
22642
|
if (next !== config)
|
|
22481
22643
|
await writeFileAtomic(configPath, next);
|
|
22482
22644
|
}
|
|
22483
|
-
await
|
|
22484
|
-
await
|
|
22645
|
+
await rm11(target);
|
|
22646
|
+
await rm11(receipt);
|
|
22485
22647
|
}
|
|
22486
22648
|
return null;
|
|
22487
22649
|
}
|
|
@@ -22518,7 +22680,7 @@ async function linkCachedPluginAgents(input) {
|
|
|
22518
22680
|
await writeManifest(input.pluginRoot, []);
|
|
22519
22681
|
return [];
|
|
22520
22682
|
}
|
|
22521
|
-
const agentsDir =
|
|
22683
|
+
const agentsDir = join25(input.codexHome, "agents");
|
|
22522
22684
|
await mkdir7(agentsDir, { recursive: true });
|
|
22523
22685
|
const previousReceipts = await readAgentModelReceipts(input.codexHome);
|
|
22524
22686
|
const receipts = new Map;
|
|
@@ -22526,7 +22688,7 @@ async function linkCachedPluginAgents(input) {
|
|
|
22526
22688
|
for (const agentPath of bundledAgents) {
|
|
22527
22689
|
const agentFileName = basename4(agentPath);
|
|
22528
22690
|
const agentName = agentNameFromToml2(agentFileName);
|
|
22529
|
-
const linkPath =
|
|
22691
|
+
const linkPath = join25(agentsDir, agentFileName);
|
|
22530
22692
|
receipts.set(agentName, await syncAgentFile({ ...input, agentName, agentPath, linkPath, previousReceipt: previousReceipts.get(agentName) }));
|
|
22531
22693
|
linked.push({ name: agentFileName, path: linkPath, target: agentPath });
|
|
22532
22694
|
}
|
|
@@ -22566,22 +22728,22 @@ async function syncAgentFile(input) {
|
|
|
22566
22728
|
};
|
|
22567
22729
|
}
|
|
22568
22730
|
async function discoverBundledAgents(pluginRoot) {
|
|
22569
|
-
const componentsRoot =
|
|
22731
|
+
const componentsRoot = join25(pluginRoot, "components");
|
|
22570
22732
|
if (!await exists4(componentsRoot))
|
|
22571
22733
|
return [];
|
|
22572
|
-
const componentEntries = await
|
|
22734
|
+
const componentEntries = await readdir8(componentsRoot, { withFileTypes: true });
|
|
22573
22735
|
const agents = [];
|
|
22574
22736
|
for (const entry of componentEntries) {
|
|
22575
22737
|
if (!entry.isDirectory())
|
|
22576
22738
|
continue;
|
|
22577
|
-
const agentsRoot =
|
|
22739
|
+
const agentsRoot = join25(componentsRoot, entry.name, "agents");
|
|
22578
22740
|
if (!await exists4(agentsRoot))
|
|
22579
22741
|
continue;
|
|
22580
|
-
const agentEntries = await
|
|
22742
|
+
const agentEntries = await readdir8(agentsRoot, { withFileTypes: true });
|
|
22581
22743
|
for (const file of agentEntries) {
|
|
22582
22744
|
if (!file.isFile() || !file.name.endsWith(".toml"))
|
|
22583
22745
|
continue;
|
|
22584
|
-
agents.push(
|
|
22746
|
+
agents.push(join25(agentsRoot, file.name));
|
|
22585
22747
|
}
|
|
22586
22748
|
}
|
|
22587
22749
|
agents.sort();
|
|
@@ -22594,14 +22756,14 @@ async function replaceWithCopy(linkPath, target) {
|
|
|
22594
22756
|
async function prepareReplacement(linkPath) {
|
|
22595
22757
|
if (!await exists4(linkPath))
|
|
22596
22758
|
return;
|
|
22597
|
-
const entryStat = await
|
|
22759
|
+
const entryStat = await lstat11(linkPath);
|
|
22598
22760
|
if (entryStat.isDirectory() && !entryStat.isSymbolicLink()) {
|
|
22599
22761
|
throw new Error(`${linkPath} already exists and is a directory; refusing to replace`);
|
|
22600
22762
|
}
|
|
22601
|
-
await
|
|
22763
|
+
await rm12(linkPath, { force: true });
|
|
22602
22764
|
}
|
|
22603
22765
|
async function writeManifest(pluginRoot, agentPaths) {
|
|
22604
|
-
const manifestPath =
|
|
22766
|
+
const manifestPath = join25(pluginRoot, MANIFEST_FILE);
|
|
22605
22767
|
const payload = { agents: [...agentPaths].sort() };
|
|
22606
22768
|
await writeFile9(manifestPath, `${JSON.stringify(payload, null, "\t")}
|
|
22607
22769
|
`);
|
|
@@ -22611,7 +22773,7 @@ function agentNameFromToml2(fileName) {
|
|
|
22611
22773
|
}
|
|
22612
22774
|
async function exists4(path) {
|
|
22613
22775
|
try {
|
|
22614
|
-
await
|
|
22776
|
+
await lstat11(path);
|
|
22615
22777
|
return true;
|
|
22616
22778
|
} catch (error) {
|
|
22617
22779
|
if (nodeErrorCode3(error) !== "ENOENT")
|
|
@@ -22673,10 +22835,10 @@ function agentNameFromToml3(fileName) {
|
|
|
22673
22835
|
|
|
22674
22836
|
// packages/omo-codex/src/install/codex-marketplace.ts
|
|
22675
22837
|
import { readFile as readFile18 } from "node:fs/promises";
|
|
22676
|
-
import { join as
|
|
22838
|
+
import { join as join26 } from "node:path";
|
|
22677
22839
|
var DEFAULT_MARKETPLACE_PATH = "packages/omo-codex/marketplace.json";
|
|
22678
22840
|
async function readMarketplace(repoRoot, options) {
|
|
22679
|
-
const marketplacePath = options?.marketplacePath ??
|
|
22841
|
+
const marketplacePath = options?.marketplacePath ?? join26(repoRoot, DEFAULT_MARKETPLACE_PATH);
|
|
22680
22842
|
const raw = await readFile18(marketplacePath, "utf8");
|
|
22681
22843
|
const parsed = JSON.parse(raw);
|
|
22682
22844
|
if (!isPlainRecord(parsed))
|
|
@@ -22695,10 +22857,10 @@ async function readMarketplace(repoRoot, options) {
|
|
|
22695
22857
|
function resolvePluginSource(repoRoot, plugin, options) {
|
|
22696
22858
|
const sourcePath = localSourcePath(options?.pathOverride ?? plugin.source);
|
|
22697
22859
|
const relativePath = sourcePath.slice(2);
|
|
22698
|
-
return
|
|
22860
|
+
return join26(repoRoot, ...relativePath.split(/[\\/]/));
|
|
22699
22861
|
}
|
|
22700
22862
|
async function readPluginManifest(pluginRoot) {
|
|
22701
|
-
const raw = await readFile18(
|
|
22863
|
+
const raw = await readFile18(join26(pluginRoot, ".codex-plugin", "plugin.json"), "utf8");
|
|
22702
22864
|
const parsed = JSON.parse(raw);
|
|
22703
22865
|
if (!isPlainRecord(parsed))
|
|
22704
22866
|
throw new Error(`${pluginRoot} plugin.json must be an object`);
|
|
@@ -22779,11 +22941,11 @@ function validateLocalSourcePath(path) {
|
|
|
22779
22941
|
}
|
|
22780
22942
|
|
|
22781
22943
|
// packages/omo-codex/src/install/lazycodex-version-stamp.ts
|
|
22782
|
-
import { readdir as
|
|
22783
|
-
import { join as
|
|
22944
|
+
import { readdir as readdir9, readFile as readFile19, writeFile as writeFile10 } from "node:fs/promises";
|
|
22945
|
+
import { join as join27 } from "node:path";
|
|
22784
22946
|
async function readDistributionManifest(repoRoot) {
|
|
22785
22947
|
try {
|
|
22786
|
-
const parsed = JSON.parse(await readFile19(
|
|
22948
|
+
const parsed = JSON.parse(await readFile19(join27(repoRoot, "package.json"), "utf8"));
|
|
22787
22949
|
if (!isPlainRecord(parsed) || typeof parsed.version !== "string" || parsed.version.trim().length === 0)
|
|
22788
22950
|
return;
|
|
22789
22951
|
return {
|
|
@@ -22807,19 +22969,19 @@ function resolveLazyCodexPluginVersion(input) {
|
|
|
22807
22969
|
return input.manifestVersion ?? "local";
|
|
22808
22970
|
}
|
|
22809
22971
|
async function stampLazyCodexPluginVersion(input) {
|
|
22810
|
-
const manifestPath =
|
|
22972
|
+
const manifestPath = join27(input.pluginRoot, ".codex-plugin", "plugin.json");
|
|
22811
22973
|
const hookPaths = await readPluginHookPaths(manifestPath);
|
|
22812
22974
|
await stampJsonVersion(manifestPath, input.version);
|
|
22813
|
-
await stampJsonVersion(
|
|
22975
|
+
await stampJsonVersion(join27(input.pluginRoot, "package.json"), input.version);
|
|
22814
22976
|
for (const hookPath of hookPaths) {
|
|
22815
|
-
await stampHookStatusMessages(
|
|
22977
|
+
await stampHookStatusMessages(join27(input.pluginRoot, hookPath), input.version);
|
|
22816
22978
|
}
|
|
22817
22979
|
await stampComponentVersions(input);
|
|
22818
22980
|
}
|
|
22819
22981
|
async function writeLazyCodexInstallSnapshot(input) {
|
|
22820
22982
|
if (input.distributionManifest === undefined)
|
|
22821
22983
|
return;
|
|
22822
|
-
await writeFile10(
|
|
22984
|
+
await writeFile10(join27(input.pluginRoot, "lazycodex-install.json"), `${JSON.stringify({
|
|
22823
22985
|
packageName: input.distributionManifest.name,
|
|
22824
22986
|
version: input.distributionManifest.version
|
|
22825
22987
|
}, null, "\t")}
|
|
@@ -22876,16 +23038,16 @@ async function stampHookStatusMessages(path, version) {
|
|
|
22876
23038
|
async function stampComponentVersions(input) {
|
|
22877
23039
|
let entries;
|
|
22878
23040
|
try {
|
|
22879
|
-
entries = await
|
|
23041
|
+
entries = await readdir9(join27(input.pluginRoot, "components"));
|
|
22880
23042
|
} catch (error) {
|
|
22881
23043
|
if (error instanceof Error)
|
|
22882
23044
|
return;
|
|
22883
23045
|
throw error;
|
|
22884
23046
|
}
|
|
22885
23047
|
for (const entry of entries) {
|
|
22886
|
-
const componentRoot =
|
|
22887
|
-
await stampJsonVersion(
|
|
22888
|
-
await stampHookStatusMessages(
|
|
23048
|
+
const componentRoot = join27(input.pluginRoot, "components", entry);
|
|
23049
|
+
await stampJsonVersion(join27(componentRoot, "package.json"), input.version);
|
|
23050
|
+
await stampHookStatusMessages(join27(componentRoot, "hooks", "hooks.json"), input.version);
|
|
22889
23051
|
}
|
|
22890
23052
|
}
|
|
22891
23053
|
function stampHookGroups(hooks, version) {
|
|
@@ -22914,8 +23076,8 @@ function normalizeHookStatusVersion(version) {
|
|
|
22914
23076
|
}
|
|
22915
23077
|
|
|
22916
23078
|
// packages/omo-codex/src/install/codex-project-local-cleanup.ts
|
|
22917
|
-
import { copyFile as copyFile2, lstat as
|
|
22918
|
-
import { dirname as dirname9, join as
|
|
23079
|
+
import { copyFile as copyFile2, lstat as lstat12, readFile as readFile20, writeFile as writeFile11 } from "node:fs/promises";
|
|
23080
|
+
import { dirname as dirname9, join as join28, resolve as resolve8 } from "node:path";
|
|
22919
23081
|
var LEGACY_AGENT_CONFLICT_KEYS = ["max_threads"];
|
|
22920
23082
|
var PROJECT_LOCAL_ARTIFACT_PATHS = [
|
|
22921
23083
|
".codex/hooks.json",
|
|
@@ -23018,17 +23180,17 @@ async function findProjectLocalCodexConfigs(startDirectory, codexHome) {
|
|
|
23018
23180
|
if (startDirectoryStat !== null && !startDirectoryStat.isDirectory()) {
|
|
23019
23181
|
throw new ProjectLocalCleanupStartDirectoryError(startDirectory);
|
|
23020
23182
|
}
|
|
23021
|
-
const codexHomeConfigPath = codexHome === undefined ? null :
|
|
23183
|
+
const codexHomeConfigPath = codexHome === undefined ? null : join28(resolve8(codexHome), "config.toml");
|
|
23022
23184
|
let current = resolve8(startDirectory);
|
|
23023
23185
|
const configPathsFromCwd = [];
|
|
23024
23186
|
while (true) {
|
|
23025
|
-
const configPath =
|
|
23187
|
+
const configPath = join28(current, ".codex", "config.toml");
|
|
23026
23188
|
if (await isRegularProjectLocalConfig(current, configPath)) {
|
|
23027
23189
|
if (codexHomeConfigPath === null || resolve8(configPath) !== codexHomeConfigPath) {
|
|
23028
23190
|
configPathsFromCwd.push(configPath);
|
|
23029
23191
|
}
|
|
23030
23192
|
}
|
|
23031
|
-
if (await exists5(
|
|
23193
|
+
if (await exists5(join28(current, ".git"))) {
|
|
23032
23194
|
return configPathsFromCwd.length === 0 ? null : {
|
|
23033
23195
|
projectRoot: current,
|
|
23034
23196
|
configPaths: [...configPathsFromCwd].reverse(),
|
|
@@ -23048,7 +23210,7 @@ async function findProjectLocalCodexConfigs(startDirectory, codexHome) {
|
|
|
23048
23210
|
}
|
|
23049
23211
|
}
|
|
23050
23212
|
async function isRegularProjectLocalConfig(directory, configPath) {
|
|
23051
|
-
const codexDirStat = await maybeLstat(
|
|
23213
|
+
const codexDirStat = await maybeLstat(join28(directory, ".codex"));
|
|
23052
23214
|
if (codexDirStat === null || !codexDirStat.isDirectory() || codexDirStat.isSymbolicLink())
|
|
23053
23215
|
return false;
|
|
23054
23216
|
const configStat = await maybeLstat(configPath);
|
|
@@ -23068,7 +23230,7 @@ async function collectProjectLocalArtifacts(projectRoots) {
|
|
|
23068
23230
|
const seenPaths = new Set;
|
|
23069
23231
|
for (const projectRoot of projectRoots) {
|
|
23070
23232
|
for (const relativePath of PROJECT_LOCAL_ARTIFACT_PATHS) {
|
|
23071
|
-
const artifactPath =
|
|
23233
|
+
const artifactPath = join28(projectRoot, relativePath);
|
|
23072
23234
|
if (seenPaths.has(artifactPath))
|
|
23073
23235
|
continue;
|
|
23074
23236
|
const entryStat = await maybeLstat(artifactPath);
|
|
@@ -23102,7 +23264,7 @@ function formatBackupTimestamp(date) {
|
|
|
23102
23264
|
}
|
|
23103
23265
|
async function maybeLstat(path) {
|
|
23104
23266
|
try {
|
|
23105
|
-
return await
|
|
23267
|
+
return await lstat12(path);
|
|
23106
23268
|
} catch (error) {
|
|
23107
23269
|
if (nodeErrorCode4(error) === "ENOENT")
|
|
23108
23270
|
return null;
|
|
@@ -23144,13 +23306,13 @@ function formatUnknownError(error) {
|
|
|
23144
23306
|
|
|
23145
23307
|
// packages/omo-codex/src/install/lsp-daemon-reaper.ts
|
|
23146
23308
|
import { createHash as createHash4 } from "node:crypto";
|
|
23147
|
-
import { lstat as
|
|
23309
|
+
import { lstat as lstat13, readFile as readFile22, readdir as readdir11, rm as rm13 } from "node:fs/promises";
|
|
23148
23310
|
import { tmpdir } from "node:os";
|
|
23149
|
-
import { join as
|
|
23311
|
+
import { join as join29, posix as posix2 } from "node:path";
|
|
23150
23312
|
|
|
23151
23313
|
// packages/omo-codex/src/install/lsp-daemon-reaper-attestation.ts
|
|
23152
23314
|
import { execFile } from "node:child_process";
|
|
23153
|
-
import { readFile as readFile21, readdir as
|
|
23315
|
+
import { readFile as readFile21, readdir as readdir10, readlink as readlink5 } from "node:fs/promises";
|
|
23154
23316
|
import { connect } from "node:net";
|
|
23155
23317
|
import { basename as basename5 } from "node:path";
|
|
23156
23318
|
var PROBE_TIMEOUT_MS = 500;
|
|
@@ -23193,7 +23355,7 @@ async function attestLegacyDaemonOwnership(input, deps = {}) {
|
|
|
23193
23355
|
}
|
|
23194
23356
|
async function attestLinuxOwnership(input, deps) {
|
|
23195
23357
|
const readFileImpl = deps.readFile ?? readFile21;
|
|
23196
|
-
const readDirImpl = deps.readDir ??
|
|
23358
|
+
const readDirImpl = deps.readDir ?? readdir10;
|
|
23197
23359
|
const readLinkImpl = deps.readLink ?? readlink5;
|
|
23198
23360
|
const procNetUnix = await readText(readFileImpl, "/proc/net/unix");
|
|
23199
23361
|
if (procNetUnix === null)
|
|
@@ -23319,17 +23481,17 @@ async function readBinary(readFileImpl, path) {
|
|
|
23319
23481
|
var LEGACY_EXIT_WAIT_TIMEOUT_MS = 5000;
|
|
23320
23482
|
var LEGACY_VERSION_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,127}$/;
|
|
23321
23483
|
async function reapLspDaemons(codexHome, deps = {}) {
|
|
23322
|
-
const daemonRoot =
|
|
23484
|
+
const daemonRoot = join29(codexHome, "codex-lsp", "daemon");
|
|
23323
23485
|
const platform = deps.platform ?? process.platform;
|
|
23324
23486
|
const tmpDir = deps.tmpDir ?? tmpdir();
|
|
23325
23487
|
const probe = deps.probeLegacyJsonRpc ?? probeLegacyJsonRpcEndpoint;
|
|
23326
23488
|
const attest = deps.attestLegacyDaemonOwnership ?? ((input) => attestLegacyDaemonOwnership(input));
|
|
23327
23489
|
const killProcess = deps.killProcess ?? sendSigterm;
|
|
23328
23490
|
const waitForProcessExit = deps.waitForProcessExit ?? defaultWaitForProcessExit;
|
|
23329
|
-
const entries = await
|
|
23491
|
+
const entries = await readdir11(daemonRoot, { withFileTypes: true }).catch(() => []);
|
|
23330
23492
|
const results = [];
|
|
23331
23493
|
for (const entry of [...entries].sort((left, right) => left.name.localeCompare(right.name))) {
|
|
23332
|
-
const versionPath =
|
|
23494
|
+
const versionPath = join29(daemonRoot, entry.name);
|
|
23333
23495
|
const parsedVersion = parseVersionEntry(entry.name);
|
|
23334
23496
|
if (parsedVersion === null || !entry.isDirectory()) {
|
|
23335
23497
|
await removeVersionDir(versionPath);
|
|
@@ -23377,7 +23539,7 @@ function parseVersionEntry(entryName) {
|
|
|
23377
23539
|
return LEGACY_VERSION_PATTERN.test(version) ? version : null;
|
|
23378
23540
|
}
|
|
23379
23541
|
async function readLegacyMetadata(input) {
|
|
23380
|
-
const pidText = await readRegularTrimmedFile(
|
|
23542
|
+
const pidText = await readRegularTrimmedFile(join29(input.versionPath, "daemon.pid"));
|
|
23381
23543
|
if (pidText === "non_regular")
|
|
23382
23544
|
return { kind: "remove", reason: "removed non-regular legacy daemon metadata" };
|
|
23383
23545
|
if (pidText === null)
|
|
@@ -23385,7 +23547,7 @@ async function readLegacyMetadata(input) {
|
|
|
23385
23547
|
const pid = Number.parseInt(pidText, 10);
|
|
23386
23548
|
if (!Number.isInteger(pid) || pid <= 0)
|
|
23387
23549
|
return { kind: "remove", reason: "removed malformed legacy daemon metadata" };
|
|
23388
|
-
const endpointText = await readRegularTrimmedFile(
|
|
23550
|
+
const endpointText = await readRegularTrimmedFile(join29(input.versionPath, "daemon.endpoint"));
|
|
23389
23551
|
if (endpointText === "non_regular")
|
|
23390
23552
|
return { kind: "remove", reason: "removed non-regular legacy daemon metadata" };
|
|
23391
23553
|
if (endpointText === null)
|
|
@@ -23412,7 +23574,7 @@ function legacyEndpointCandidates(input) {
|
|
|
23412
23574
|
return [natural, hashed];
|
|
23413
23575
|
}
|
|
23414
23576
|
async function readRegularTrimmedFile(path) {
|
|
23415
|
-
const stats = await
|
|
23577
|
+
const stats = await lstat13(path).catch(() => null);
|
|
23416
23578
|
if (stats === null)
|
|
23417
23579
|
return null;
|
|
23418
23580
|
if (!stats.isFile())
|
|
@@ -23424,7 +23586,7 @@ function shortDigest(value) {
|
|
|
23424
23586
|
return createHash4("sha256").update(value).digest("hex").slice(0, 16);
|
|
23425
23587
|
}
|
|
23426
23588
|
async function removeVersionDir(path) {
|
|
23427
|
-
await
|
|
23589
|
+
await rm13(path, { recursive: true, force: true });
|
|
23428
23590
|
}
|
|
23429
23591
|
function removed(version, reason) {
|
|
23430
23592
|
return { version, status: "removed", reason };
|
|
@@ -23464,7 +23626,7 @@ function processIsRunning(pid) {
|
|
|
23464
23626
|
|
|
23465
23627
|
// packages/omo-codex/src/install/codex-installer-bin-dir.ts
|
|
23466
23628
|
import { homedir } from "node:os";
|
|
23467
|
-
import { join as
|
|
23629
|
+
import { join as join30, resolve as resolve9 } from "node:path";
|
|
23468
23630
|
function resolveCodexInstallerBinDir(input) {
|
|
23469
23631
|
const explicitBinDir = input.binDir ?? input.env?.CODEX_LOCAL_BIN_DIR;
|
|
23470
23632
|
if (explicitBinDir !== undefined && explicitBinDir.trim().length > 0)
|
|
@@ -23473,22 +23635,22 @@ function resolveCodexInstallerBinDir(input) {
|
|
|
23473
23635
|
const defaultCodexHome = resolve9(homeDir, ".codex");
|
|
23474
23636
|
const resolvedCodexHome = resolve9(input.codexHome);
|
|
23475
23637
|
if (resolvedCodexHome !== defaultCodexHome)
|
|
23476
|
-
return
|
|
23638
|
+
return join30(resolvedCodexHome, "bin");
|
|
23477
23639
|
return resolve9(homeDir, ".local", "bin");
|
|
23478
23640
|
}
|
|
23479
23641
|
|
|
23480
23642
|
// packages/omo-codex/src/install/codex-installed-bin-dir.ts
|
|
23481
|
-
import { readFile as readFile23, readdir as
|
|
23482
|
-
import { join as
|
|
23643
|
+
import { readFile as readFile23, readdir as readdir12, writeFile as writeFile12 } from "node:fs/promises";
|
|
23644
|
+
import { join as join31 } from "node:path";
|
|
23483
23645
|
var INSTALLED_BIN_DIR_MANIFEST = ".installed-bin-dir.json";
|
|
23484
23646
|
async function writeInstalledCodexBinDir(input) {
|
|
23485
|
-
await writeFile12(
|
|
23647
|
+
await writeFile12(join31(input.pluginRoot, INSTALLED_BIN_DIR_MANIFEST), `${JSON.stringify({ binDir: input.binDir }, null, 2)}
|
|
23486
23648
|
`);
|
|
23487
23649
|
}
|
|
23488
23650
|
|
|
23489
23651
|
// packages/omo-codex/src/install/codex-git-bash-hooks.ts
|
|
23490
23652
|
import { readFile as readFile24, writeFile as writeFile13 } from "node:fs/promises";
|
|
23491
|
-
import { join as
|
|
23653
|
+
import { join as join32 } from "node:path";
|
|
23492
23654
|
var WINDOWS_ONLY_GIT_BASH_HOOKS = new Set([
|
|
23493
23655
|
"./hooks/pre-tool-use-recommending-git-bash-mcp.json",
|
|
23494
23656
|
"./hooks/post-compact-resetting-git-bash-mcp-reminder.json"
|
|
@@ -23496,7 +23658,7 @@ var WINDOWS_ONLY_GIT_BASH_HOOKS = new Set([
|
|
|
23496
23658
|
async function removeGitBashHooksOffWindows(input) {
|
|
23497
23659
|
if (input.platform === "win32")
|
|
23498
23660
|
return;
|
|
23499
|
-
const manifestPath =
|
|
23661
|
+
const manifestPath = join32(input.pluginRoot, ".codex-plugin", "plugin.json");
|
|
23500
23662
|
const parsed = JSON.parse(await readFile24(manifestPath, "utf8"));
|
|
23501
23663
|
if (!isPlainRecord(parsed) || !Array.isArray(parsed.hooks))
|
|
23502
23664
|
return;
|
|
@@ -23508,12 +23670,12 @@ async function removeGitBashHooksOffWindows(input) {
|
|
|
23508
23670
|
}
|
|
23509
23671
|
|
|
23510
23672
|
// packages/omo-codex/src/install/install-ast-grep-sg.ts
|
|
23511
|
-
import { join as
|
|
23673
|
+
import { join as join34 } from "node:path";
|
|
23512
23674
|
|
|
23513
23675
|
// packages/utils/src/ast-grep/install-script.ts
|
|
23514
23676
|
import { spawn as spawn2 } from "node:child_process";
|
|
23515
23677
|
import { existsSync as existsSync4 } from "node:fs";
|
|
23516
|
-
import { join as
|
|
23678
|
+
import { join as join33 } from "node:path";
|
|
23517
23679
|
|
|
23518
23680
|
// packages/utils/src/ast-grep/sg-manifest.ts
|
|
23519
23681
|
function normalizeRuntimePlatform(platform = process.platform) {
|
|
@@ -23535,7 +23697,7 @@ var AST_GREP_BIN_DIR_ENV_KEY = "OMO_AST_GREP_BIN_DIR";
|
|
|
23535
23697
|
var KILL_GRACE_MS = 1000;
|
|
23536
23698
|
var AST_GREP_INSTALL_TIMEOUT_MS = 30000;
|
|
23537
23699
|
function astGrepRuntimeDir(baseDir, platform = process.platform, arch = process.arch) {
|
|
23538
|
-
return
|
|
23700
|
+
return join33(baseDir, "runtime", "ast-grep", runtimeSlug(platform, arch));
|
|
23539
23701
|
}
|
|
23540
23702
|
function isMissingExecutable(error) {
|
|
23541
23703
|
if (!("code" in error))
|
|
@@ -23573,7 +23735,7 @@ function defaultSpawnProcess(command, args, options) {
|
|
|
23573
23735
|
};
|
|
23574
23736
|
}
|
|
23575
23737
|
function scriptPathForPlatform(skillDir, platform) {
|
|
23576
|
-
return
|
|
23738
|
+
return join33(skillDir, platform === "win32" ? "install.ps1" : "install.sh");
|
|
23577
23739
|
}
|
|
23578
23740
|
function invocationsForPlatform(scriptPath, platform) {
|
|
23579
23741
|
if (platform !== "win32")
|
|
@@ -23659,7 +23821,7 @@ async function installAstGrepForCodex(options) {
|
|
|
23659
23821
|
return;
|
|
23660
23822
|
const platform = options.platform ?? process.platform;
|
|
23661
23823
|
const targetDir = astGrepRuntimeDir(options.codexHome, platform, options.arch ?? process.arch);
|
|
23662
|
-
const skillDir =
|
|
23824
|
+
const skillDir = join34(plugin.path, "skills", "ast-grep");
|
|
23663
23825
|
const installer = options.installer ?? runAstGrepSkillInstall;
|
|
23664
23826
|
try {
|
|
23665
23827
|
const result = await installer({ platform, skillDir, targetDir });
|
|
@@ -23677,7 +23839,7 @@ async function trackCodexInstallTelemetry() {
|
|
|
23677
23839
|
try {
|
|
23678
23840
|
await Promise.resolve().then(() => init_telemetry());
|
|
23679
23841
|
const posthog = createInstallPostHog();
|
|
23680
|
-
posthog.trackActive(
|
|
23842
|
+
posthog.trackActive("install_completed");
|
|
23681
23843
|
await posthog.shutdown();
|
|
23682
23844
|
} catch (error) {
|
|
23683
23845
|
if (error instanceof Error)
|
|
@@ -23692,7 +23854,7 @@ async function runCodexInstaller(options = {}) {
|
|
|
23692
23854
|
const env = options.env ?? process.env;
|
|
23693
23855
|
const platform = options.platform ?? process.platform;
|
|
23694
23856
|
const repoRoot = resolve10(options.repoRoot ?? findRepoRoot({ importerDir: import.meta.dir, env }));
|
|
23695
|
-
const codexHome = resolve10(options.codexHome ?? env.CODEX_HOME ??
|
|
23857
|
+
const codexHome = resolve10(options.codexHome ?? env.CODEX_HOME ?? join39(homedir2(), ".codex"));
|
|
23696
23858
|
const projectDirectory = resolve10(options.projectDirectory ?? env.OMO_CODEX_PROJECT ?? process.cwd());
|
|
23697
23859
|
const binDir = resolveCodexInstallerBinDir({ binDir: options.binDir, codexHome, env });
|
|
23698
23860
|
const runCommand = options.runCommand ?? defaultRunCommand;
|
|
@@ -23709,9 +23871,9 @@ async function runCodexInstaller(options = {}) {
|
|
|
23709
23871
|
if (!gitBashResolution.found) {
|
|
23710
23872
|
throw new Error(gitBashResolution.installHint);
|
|
23711
23873
|
}
|
|
23712
|
-
const codexPackageRoot =
|
|
23874
|
+
const codexPackageRoot = join39(repoRoot, "packages", "omo-codex");
|
|
23713
23875
|
const marketplace = await readMarketplace(repoRoot, {
|
|
23714
|
-
marketplacePath:
|
|
23876
|
+
marketplacePath: join39(codexPackageRoot, "marketplace.json")
|
|
23715
23877
|
});
|
|
23716
23878
|
const distributionManifest = await readDistributionManifest(repoRoot);
|
|
23717
23879
|
const installed = [];
|
|
@@ -23756,7 +23918,7 @@ async function runCodexInstaller(options = {}) {
|
|
|
23756
23918
|
if (runtimeLink !== null)
|
|
23757
23919
|
log(`Linked ${runtimeLink.name} -> ${runtimeLink.target}`);
|
|
23758
23920
|
else
|
|
23759
|
-
log(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${
|
|
23921
|
+
log(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join39(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
|
|
23760
23922
|
}
|
|
23761
23923
|
pluginSources.push({ name: entry.name, sourcePath });
|
|
23762
23924
|
installed.push(plugin);
|
|
@@ -23806,13 +23968,13 @@ async function runCodexInstaller(options = {}) {
|
|
|
23806
23968
|
continue;
|
|
23807
23969
|
log(`Warning: deferred legacy Codex LSP daemon cleanup for v${cleanup.version}: ${cleanup.reason}`);
|
|
23808
23970
|
}
|
|
23809
|
-
const marketplaceRoot =
|
|
23971
|
+
const marketplaceRoot = join39(codexHome, "plugins", "cache", marketplace.name);
|
|
23810
23972
|
await writeCachedMarketplaceManifest({
|
|
23811
23973
|
marketplaceName: marketplace.name,
|
|
23812
23974
|
marketplaceRoot,
|
|
23813
23975
|
plugins: installed
|
|
23814
23976
|
});
|
|
23815
|
-
const configPath =
|
|
23977
|
+
const configPath = join39(codexHome, "config.toml");
|
|
23816
23978
|
await updateCodexConfig({
|
|
23817
23979
|
configPath,
|
|
23818
23980
|
repoRoot: codexPackageRoot,
|
|
@@ -23857,7 +24019,7 @@ function findRepoRootFromImporter(importerDir) {
|
|
|
23857
24019
|
for (let depth = 0;depth <= 7; depth += 1) {
|
|
23858
24020
|
if (isRepoRootWithCodexPlugin(current))
|
|
23859
24021
|
return current;
|
|
23860
|
-
for (const wrapperPackageRoot of [
|
|
24022
|
+
for (const wrapperPackageRoot of [join39(current, "node_modules", "oh-my-openagent"), join39(current, "oh-my-openagent")]) {
|
|
23861
24023
|
if (isRepoRootWithCodexPlugin(wrapperPackageRoot))
|
|
23862
24024
|
return wrapperPackageRoot;
|
|
23863
24025
|
}
|
|
@@ -23875,7 +24037,7 @@ function findRepoRoot(input) {
|
|
|
23875
24037
|
return findRepoRootFromImporter(input.importerDir);
|
|
23876
24038
|
}
|
|
23877
24039
|
function isRepoRootWithCodexPlugin(repoRoot) {
|
|
23878
|
-
return existsSync7(
|
|
24040
|
+
return existsSync7(join39(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
|
|
23879
24041
|
}
|
|
23880
24042
|
function codexMarketplaceSource(marketplaceRoot) {
|
|
23881
24043
|
return { sourceType: "local", source: marketplaceRoot };
|
|
@@ -24187,13 +24349,13 @@ function shellQuote(value) {
|
|
|
24187
24349
|
|
|
24188
24350
|
// packages/omo-codex/src/install/lazycodex-manual-update.ts
|
|
24189
24351
|
import { spawn as spawn3, spawnSync as spawnSync2 } from "node:child_process";
|
|
24190
|
-
import { readFileSync as
|
|
24191
|
-
import { dirname as
|
|
24352
|
+
import { readFileSync as readFileSync6 } from "node:fs";
|
|
24353
|
+
import { dirname as dirname13, join as join41 } from "node:path";
|
|
24192
24354
|
import { createInterface as createInterface2 } from "node:readline/promises";
|
|
24193
24355
|
import { fileURLToPath } from "node:url";
|
|
24194
24356
|
|
|
24195
24357
|
// packages/omo-codex/src/install/lazycodex-bun-global-paths.ts
|
|
24196
|
-
import { join as
|
|
24358
|
+
import { join as join40 } from "node:path";
|
|
24197
24359
|
function isBunGlobalEntrypointPath(invokedPath, env) {
|
|
24198
24360
|
if (typeof invokedPath !== "string" || invokedPath.trim().length === 0)
|
|
24199
24361
|
return false;
|
|
@@ -24204,8 +24366,8 @@ function resolveBunGlobalRoots(env) {
|
|
|
24204
24366
|
const bunInstallRoot = env.BUN_INSTALL?.trim();
|
|
24205
24367
|
const homeRoot = env.HOME?.trim();
|
|
24206
24368
|
return [
|
|
24207
|
-
...bunInstallRoot ? [
|
|
24208
|
-
...homeRoot ? [
|
|
24369
|
+
...bunInstallRoot ? [join40(bunInstallRoot, "bin"), join40(bunInstallRoot, "install", "global", "node_modules")] : [],
|
|
24370
|
+
...homeRoot ? [join40(homeRoot, ".bun", "bin"), join40(homeRoot, ".bun", "install", "global", "node_modules")] : []
|
|
24209
24371
|
].map(normalizePathForPrefix);
|
|
24210
24372
|
}
|
|
24211
24373
|
function normalizePathForPrefix(path) {
|
|
@@ -24297,8 +24459,8 @@ function resolveArgs(env) {
|
|
|
24297
24459
|
function resolveCurrentVersion(env) {
|
|
24298
24460
|
if (env.LAZYCODEX_CURRENT_VERSION?.trim())
|
|
24299
24461
|
return env.LAZYCODEX_CURRENT_VERSION.trim();
|
|
24300
|
-
const pluginRoot =
|
|
24301
|
-
return readVersionManifest(resolveInstalledVersionPath(env, pluginRoot)) ?? readVersionManifest(
|
|
24462
|
+
const pluginRoot = dirname13(dirname13(fileURLToPath(import.meta.url)));
|
|
24463
|
+
return readVersionManifest(resolveInstalledVersionPath(env, pluginRoot)) ?? readVersionManifest(join41(pluginRoot, "..", "..", "..", "package.json")) ?? readVersionManifest(join41(pluginRoot, ".codex-plugin", "plugin.json"));
|
|
24302
24464
|
}
|
|
24303
24465
|
function resolveLatestVersion(env) {
|
|
24304
24466
|
if (env.LAZYCODEX_LATEST_VERSION?.trim())
|
|
@@ -24414,11 +24576,11 @@ function compareVersions(left, right) {
|
|
|
24414
24576
|
function resolveInstalledVersionPath(env, pluginRoot) {
|
|
24415
24577
|
if (env.LAZYCODEX_INSTALLED_VERSION_FILE?.trim())
|
|
24416
24578
|
return env.LAZYCODEX_INSTALLED_VERSION_FILE.trim();
|
|
24417
|
-
return
|
|
24579
|
+
return join41(pluginRoot, INSTALLED_VERSION_FILE);
|
|
24418
24580
|
}
|
|
24419
24581
|
function readVersionManifest(path) {
|
|
24420
24582
|
try {
|
|
24421
|
-
const parsed = JSON.parse(
|
|
24583
|
+
const parsed = JSON.parse(readFileSync6(path, "utf8"));
|
|
24422
24584
|
if (typeof parsed === "object" && parsed !== null && "version" in parsed && typeof parsed.version === "string") {
|
|
24423
24585
|
return parsed.version;
|
|
24424
24586
|
}
|
|
@@ -24431,10 +24593,10 @@ function readVersionManifest(path) {
|
|
|
24431
24593
|
}
|
|
24432
24594
|
// packages/omo-codex/src/install/codex-git-bash-mcp-env.ts
|
|
24433
24595
|
import { readFile as readFile25, writeFile as writeFile14 } from "node:fs/promises";
|
|
24434
|
-
import { join as
|
|
24596
|
+
import { join as join42 } from "node:path";
|
|
24435
24597
|
var GIT_BASH_ENV_KEY2 = "OMO_CODEX_GIT_BASH_PATH";
|
|
24436
24598
|
async function stampGitBashMcpEnv(input) {
|
|
24437
|
-
const manifestPath =
|
|
24599
|
+
const manifestPath = join42(input.pluginRoot, ".mcp.json");
|
|
24438
24600
|
if (!await fileExistsStrict(manifestPath))
|
|
24439
24601
|
return false;
|
|
24440
24602
|
const parsed = JSON.parse(await readFile25(manifestPath, "utf8"));
|
|
@@ -24465,7 +24627,7 @@ async function installMarketplaceLocally(options = {}) {
|
|
|
24465
24627
|
return runCodexInstaller(options);
|
|
24466
24628
|
}
|
|
24467
24629
|
function resolveDefaultRepoRootForEntrypoint(entrypointPath) {
|
|
24468
|
-
return resolve11(
|
|
24630
|
+
return resolve11(dirname14(entrypointPath), "..", "..", "..");
|
|
24469
24631
|
}
|
|
24470
24632
|
function resolveDefaultRepoRoot() {
|
|
24471
24633
|
return resolveDefaultRepoRootForEntrypoint(fileURLToPath2(import.meta.url));
|
|
@@ -24481,7 +24643,7 @@ async function runLazyCodexInstallLocalCli(input) {
|
|
|
24481
24643
|
return 0;
|
|
24482
24644
|
}
|
|
24483
24645
|
if (parsed.kind === "version") {
|
|
24484
|
-
const packageJson = JSON.parse(await readFile26(
|
|
24646
|
+
const packageJson = JSON.parse(await readFile26(join43(input.defaultRepoRoot, "package.json"), "utf8"));
|
|
24485
24647
|
const version = typeof packageJson.version === "string" ? packageJson.version : "unknown";
|
|
24486
24648
|
input.log(`lazycodex-ai ${version}`);
|
|
24487
24649
|
return 0;
|
|
@@ -24502,7 +24664,7 @@ async function runLazyCodexInstallLocalCli(input) {
|
|
|
24502
24664
|
env: input.env,
|
|
24503
24665
|
log: logWarning
|
|
24504
24666
|
});
|
|
24505
|
-
input.log
|
|
24667
|
+
logInstalled(input.log, result);
|
|
24506
24668
|
return 0;
|
|
24507
24669
|
}
|
|
24508
24670
|
return runLazyCodexManualUpdate({ env: input.env, dryRun: parsed.dryRun, log: input.log, invokedPath: input.invokedPath });
|
|
@@ -24514,9 +24676,15 @@ async function runLazyCodexInstallLocalCli(input) {
|
|
|
24514
24676
|
env: input.env,
|
|
24515
24677
|
log: logWarning
|
|
24516
24678
|
});
|
|
24517
|
-
input.log
|
|
24679
|
+
logInstalled(input.log, result);
|
|
24518
24680
|
return 0;
|
|
24519
24681
|
}
|
|
24682
|
+
function logInstalled(log, result) {
|
|
24683
|
+
log(`Installed ${result.installed.length} plugin(s) from ${result.marketplaceName}.`);
|
|
24684
|
+
log("");
|
|
24685
|
+
for (const line of TELEMETRY_INSTALL_DISCLOSURE_LINES)
|
|
24686
|
+
log(line);
|
|
24687
|
+
}
|
|
24520
24688
|
export {
|
|
24521
24689
|
PASSTHROUGH_COMMANDS,
|
|
24522
24690
|
assertHookCommandTargets,
|