oh-my-opencode 5.0.0-beta.62 → 5.0.0-beta.64
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/THIRD-PARTY-NOTICES.md +8 -6
- package/dist/cli/doctor/checks/browser-provider.d.ts +2 -0
- package/dist/cli/index.js +70 -41
- package/dist/cli-node/index.js +70 -41
- package/dist/config/schema/agent-names.d.ts +0 -1
- package/dist/config/schema/browser-automation.d.ts +0 -2
- package/dist/config/schema/oh-my-opencode-config.d.ts +0 -1
- package/dist/hooks/comment-checker/__fixtures__/download-probe.fixture.d.ts +1 -0
- package/dist/index.js +89 -588
- package/dist/oh-my-opencode.schema.json +4 -5
- package/dist/skills/ast-grep/SKILL.md +12 -0
- package/dist/skills/debugging/references/tools/playwright-cli.md +79 -161
- package/dist/skills/frontend/SKILL.md +1 -1
- package/dist/skills/frontend/references/design/aside.md +1 -1
- package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
- package/dist/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
- package/dist/skills/review-work/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
- package/dist/skills/ultimate-browsing/SKILL.md +17 -29
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +2 -1
- package/dist/skills/ultimate-browsing/engine/templates/package.json +2 -2
- package/dist/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
- package/dist/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
- package/dist/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
- package/dist/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +9 -3
- package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
- package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
- package/dist/skills/ulw-execute/SKILL.md +1 -1
- package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/dist/skills/ulw-research/SKILL.md +3 -3
- package/dist/skills/visual-qa/AGENTS.md +1 -1
- package/dist/skills/visual-qa/SKILL.md +1 -1
- package/dist/skills/visual-qa/references/browser-setup.md +75 -0
- package/dist/tui.js +18 -11
- package/package.json +16 -23
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +4 -2
- 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/lsp/dist/.omo-runtime-manifest.json +2 -2
- 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 +1 -1
- 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/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +5 -4
- 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/directive.md +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/CHANGELOG.md +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +5 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +7 -5
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +7 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +7 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +931 -442
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +20 -12
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +8 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.js +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.js +37 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +24 -12
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.js +34 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.d.ts +19 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.js +107 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +6 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +54 -25
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.d.ts +10 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.js +38 -31
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +9 -7
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +105 -114
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.d.ts +15 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.js +86 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +15 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +11 -8
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +28 -12
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +335 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +109 -10
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.js +67 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -62
- package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +11 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +120 -88
- package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +18 -10
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.d.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.js +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +9 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +11 -11
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +8 -17
- package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.d.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.js +41 -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/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +15 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +7 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +26 -14
- package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +8 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/driver-objective-ack.ts +20 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/evidence-artifacts.ts +45 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +23 -16
- package/packages/omo-codex/plugin/components/ulw-loop/src/ledger.ts +33 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +7 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-commit.ts +124 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +67 -54
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-goal-factory.ts +63 -31
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +126 -140
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-log.ts +84 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +26 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +11 -7
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +47 -12
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +124 -10
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-budget-io.ts +59 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +8 -59
- package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +129 -111
- package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +19 -10
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-mutations.ts +5 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +13 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +12 -10
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +8 -16
- package/packages/omo-codex/plugin/components/ulw-loop/src/success-criteria-input.ts +56 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +37 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/barrier.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-child.ts +65 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-cli-qa.mjs +76 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-crash.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +58 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-writer.ts +65 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/lease-clock.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-log.test.ts +252 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-recovery.test.ts +190 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +50 -35
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-newest.test.ts +72 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-completed-plan.test.ts +43 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-driver-states.test.ts +33 -4
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-dx.test.ts +219 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +21 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +92 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/status-next-actions-surface.test.ts +133 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +12 -12
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +4 -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 +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.d.mts +4 -0
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +15 -7
- package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +12 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +79 -161
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +17 -29
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +2 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -3
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +5 -4
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +75 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +6 -4
- package/packages/prompts-core/prompts/ultrawork/codex.md +5 -4
- package/packages/shared-skills/skills/ast-grep/SKILL.md +12 -0
- package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +79 -161
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +17 -29
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +2 -1
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -3
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
- package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +3 -3
- package/packages/shared-skills/skills/visual-qa/AGENTS.md +1 -1
- package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
- package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +75 -0
- package/dist/skills/visual-qa/references/agent-browser-setup.md +0 -45
- package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +0 -45
- package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +0 -45
package/dist/index.js
CHANGED
|
@@ -12080,11 +12080,12 @@ function buildOwnerContent(ownerTag) {
|
|
|
12080
12080
|
return `${ownerTag}
|
|
12081
12081
|
${process.pid}
|
|
12082
12082
|
${Date.now()}
|
|
12083
|
+
${lockOwnerInstanceId}
|
|
12083
12084
|
`;
|
|
12084
12085
|
}
|
|
12085
12086
|
function parseOwnerContent(content) {
|
|
12086
12087
|
const lines = content.split(/\r?\n/).filter((line) => line.length > 0);
|
|
12087
|
-
if (lines.length !== 3)
|
|
12088
|
+
if (lines.length !== 3 && lines.length !== 4)
|
|
12088
12089
|
return null;
|
|
12089
12090
|
const ownerPid = Number.parseInt(lines[1] ?? "", 10);
|
|
12090
12091
|
const acquiredAtEpochMs = Number.parseInt(lines[2] ?? "", 10);
|
|
@@ -12092,7 +12093,11 @@ function parseOwnerContent(content) {
|
|
|
12092
12093
|
return null;
|
|
12093
12094
|
if (!Number.isInteger(acquiredAtEpochMs) || acquiredAtEpochMs <= 0)
|
|
12094
12095
|
return null;
|
|
12095
|
-
return {
|
|
12096
|
+
return {
|
|
12097
|
+
ownerPid,
|
|
12098
|
+
acquiredAtEpochMs,
|
|
12099
|
+
instanceId: lines.length === 4 ? lines[3] ?? null : null
|
|
12100
|
+
};
|
|
12096
12101
|
}
|
|
12097
12102
|
function errorCode(error) {
|
|
12098
12103
|
if (!(error instanceof Error) || !("code" in error))
|
|
@@ -12182,8 +12187,13 @@ async function detectStaleLock(lockPath, staleAfterMs) {
|
|
|
12182
12187
|
const parsed = parseOwnerContent(content);
|
|
12183
12188
|
if (parsed === null)
|
|
12184
12189
|
return false;
|
|
12190
|
+
if (parsed.instanceId !== null && parsed.instanceId !== lockOwnerInstanceId && parsed.ownerPid === process.pid) {
|
|
12191
|
+
return true;
|
|
12192
|
+
}
|
|
12185
12193
|
if (isPidAlive(parsed.ownerPid))
|
|
12186
12194
|
return false;
|
|
12195
|
+
if (parsed.instanceId !== null)
|
|
12196
|
+
return true;
|
|
12187
12197
|
return Date.now() - parsed.acquiredAtEpochMs > staleAfterMs;
|
|
12188
12198
|
} catch (error) {
|
|
12189
12199
|
if (!(error instanceof Error)) {
|
|
@@ -12229,9 +12239,10 @@ async function atomicWrite(filePath, content, deps = {}) {
|
|
|
12229
12239
|
throw error;
|
|
12230
12240
|
}
|
|
12231
12241
|
}
|
|
12232
|
-
var LOCK_RETRY_MS = 50, LOCK_WAIT_TIMEOUT_MS = 15000, LOCK_RELEASE_RETRY_ATTEMPTS = 3, LOCK_RELEASE_RETRY_MS = 25;
|
|
12242
|
+
var LOCK_RETRY_MS = 50, LOCK_WAIT_TIMEOUT_MS = 15000, LOCK_RELEASE_RETRY_ATTEMPTS = 3, LOCK_RELEASE_RETRY_MS = 25, lockOwnerInstanceId;
|
|
12233
12243
|
var init_locks = __esm(() => {
|
|
12234
12244
|
init_tolerant_fsync();
|
|
12245
|
+
lockOwnerInstanceId = randomUUID6();
|
|
12235
12246
|
});
|
|
12236
12247
|
|
|
12237
12248
|
// packages/team-core/src/team-state-store/store.ts
|
|
@@ -12411,7 +12422,6 @@ async function listActiveTeams(config) {
|
|
|
12411
12422
|
}
|
|
12412
12423
|
var STATE_FILE_NAME = "state.json", STALE_DELETING_TTL_MS = 60000, ALLOWED_RUNTIME_TRANSITIONS, RuntimeStateError, InvalidTransitionError;
|
|
12413
12424
|
var init_store = __esm(() => {
|
|
12414
|
-
init_src();
|
|
12415
12425
|
init_types2();
|
|
12416
12426
|
init_paths();
|
|
12417
12427
|
init_locks();
|
|
@@ -19632,15 +19642,20 @@ var AGENT_MODEL_REQUIREMENTS = {
|
|
|
19632
19642
|
},
|
|
19633
19643
|
metis: {
|
|
19634
19644
|
fallbackChain: [
|
|
19645
|
+
{
|
|
19646
|
+
providers: ["anthropic", "github-copilot", "opencode"],
|
|
19647
|
+
model: "claude-fable-5-1",
|
|
19648
|
+
variant: "max"
|
|
19649
|
+
},
|
|
19635
19650
|
{
|
|
19636
19651
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
19637
19652
|
model: "claude-opus-5",
|
|
19638
|
-
variant: "
|
|
19653
|
+
variant: "max"
|
|
19639
19654
|
},
|
|
19640
19655
|
{
|
|
19641
19656
|
providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode"],
|
|
19642
19657
|
model: "kimi-k3",
|
|
19643
|
-
variant: "
|
|
19658
|
+
variant: "max"
|
|
19644
19659
|
}
|
|
19645
19660
|
]
|
|
19646
19661
|
},
|
|
@@ -22687,8 +22702,8 @@ var OmoGitMasterSettingsShape = {
|
|
|
22687
22702
|
};
|
|
22688
22703
|
var OmoGitMasterSettingsLayerSchema = z5.object(OmoGitMasterSettingsShape).partial().strict();
|
|
22689
22704
|
var OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
|
|
22690
|
-
commit_footer: z5.union([z5.boolean(), z5.string()]).default(
|
|
22691
|
-
include_co_authored_by: z5.boolean().default(
|
|
22705
|
+
commit_footer: z5.union([z5.boolean(), z5.string()]).default(false),
|
|
22706
|
+
include_co_authored_by: z5.boolean().default(false)
|
|
22692
22707
|
}).strict();
|
|
22693
22708
|
|
|
22694
22709
|
// packages/omo-config-core/src/schema/harness.ts
|
|
@@ -22959,6 +22974,7 @@ var OmoTaskSettingsSchema = z10.object({
|
|
|
22959
22974
|
model_concurrency: z10.record(z10.string(), z10.number().int().nonnegative()).optional(),
|
|
22960
22975
|
max_depth: z10.number().int().nonnegative().default(1),
|
|
22961
22976
|
residency_max_children: ResidencyMaxChildrenInputSchema.default(8),
|
|
22977
|
+
resident_idle_timeout_ms: z10.number().int().positive().max(Number.MAX_SAFE_INTEGER).default(900000),
|
|
22962
22978
|
ttl_ms: z10.number().int().positive().default(86400000),
|
|
22963
22979
|
state_dir: z10.string().optional(),
|
|
22964
22980
|
reattach_on_reconcile: z10.boolean().optional(),
|
|
@@ -23003,6 +23019,7 @@ var OmoTaskSettingsLayerSchema = z10.object({
|
|
|
23003
23019
|
model_concurrency: z10.record(z10.string(), z10.number().int().nonnegative()).optional(),
|
|
23004
23020
|
max_depth: z10.number().int().nonnegative().optional(),
|
|
23005
23021
|
residency_max_children: ResidencyMaxChildrenInputSchema.optional(),
|
|
23022
|
+
resident_idle_timeout_ms: z10.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),
|
|
23006
23023
|
ttl_ms: z10.number().int().positive().optional(),
|
|
23007
23024
|
state_dir: z10.string().optional(),
|
|
23008
23025
|
reattach_on_reconcile: z10.boolean().optional(),
|
|
@@ -24875,7 +24892,6 @@ var BuiltinAgentNameSchema = z15.enum([
|
|
|
24875
24892
|
]);
|
|
24876
24893
|
var BuiltinSkillNameSchema = z15.enum([
|
|
24877
24894
|
"playwright",
|
|
24878
|
-
"agent-browser",
|
|
24879
24895
|
"dev-browser",
|
|
24880
24896
|
"frontend",
|
|
24881
24897
|
"git-master",
|
|
@@ -25036,10 +25052,11 @@ var BackgroundTaskConfigSchema = z20.object({
|
|
|
25036
25052
|
import { z as z21 } from "zod";
|
|
25037
25053
|
var BrowserAutomationProviderSchema = z21.enum([
|
|
25038
25054
|
"playwright",
|
|
25039
|
-
"agent-browser",
|
|
25040
25055
|
"dev-browser",
|
|
25041
25056
|
"playwright-cli"
|
|
25042
|
-
]
|
|
25057
|
+
], {
|
|
25058
|
+
error: (issue) => `Browser provider ${JSON.stringify(issue.input)} is no longer supported; use the built-in browser path: Bun.WebView / playwright-core scripts`
|
|
25059
|
+
});
|
|
25043
25060
|
var BrowserAutomationConfigSchema = z21.object({
|
|
25044
25061
|
provider: BrowserAutomationProviderSchema.default("playwright"),
|
|
25045
25062
|
playwright_mcp_args: z21.array(z21.string()).optional()
|
|
@@ -25192,8 +25209,8 @@ var GitEnvPrefixSchema = z30.string().refine(isValidGitEnvPrefix, { message: GIT
|
|
|
25192
25209
|
// packages/omo-opencode/src/config/schema/git-master.ts
|
|
25193
25210
|
import { z as z31 } from "zod";
|
|
25194
25211
|
var GitMasterConfigSchema = z31.object({
|
|
25195
|
-
commit_footer: z31.union([z31.boolean(), z31.string()]).default(
|
|
25196
|
-
include_co_authored_by: z31.boolean().default(
|
|
25212
|
+
commit_footer: z31.union([z31.boolean(), z31.string()]).default(false),
|
|
25213
|
+
include_co_authored_by: z31.boolean().default(false),
|
|
25197
25214
|
git_env_prefix: GitEnvPrefixSchema
|
|
25198
25215
|
});
|
|
25199
25216
|
// packages/omo-opencode/src/config/schema/hooks.ts
|
|
@@ -25500,8 +25517,8 @@ var OhMyOpenCodeConfigSchema = z50.object({
|
|
|
25500
25517
|
keyword_detector: KeywordDetectorConfigSchema.optional(),
|
|
25501
25518
|
babysitting: BabysittingConfigSchema.optional(),
|
|
25502
25519
|
git_master: GitMasterConfigSchema.default({
|
|
25503
|
-
commit_footer:
|
|
25504
|
-
include_co_authored_by:
|
|
25520
|
+
commit_footer: false,
|
|
25521
|
+
include_co_authored_by: false,
|
|
25505
25522
|
git_env_prefix: "GIT_MASTER=1"
|
|
25506
25523
|
}),
|
|
25507
25524
|
browser_automation_engine: BrowserAutomationConfigSchema.optional(),
|
|
@@ -88991,7 +89008,7 @@ function resolveCommentCheckerBinary(input) {
|
|
|
88991
89008
|
const binaryPath = join42(dirname13(packageJsonPath), "bin", input.binaryName);
|
|
88992
89009
|
return input.existsSync(binaryPath) ? binaryPath : null;
|
|
88993
89010
|
} catch (error) {
|
|
88994
|
-
if (error instanceof Error) {
|
|
89011
|
+
if (error instanceof Error || typeof error === "object" && error !== null && "name" in error && error.name === "ResolveMessage") {
|
|
88995
89012
|
return null;
|
|
88996
89013
|
}
|
|
88997
89014
|
throw error;
|
|
@@ -89058,7 +89075,6 @@ async function runCommentChecker(input, options) {
|
|
|
89058
89075
|
import { existsSync as existsSync34, appendFileSync as appendFileSync2 } from "fs";
|
|
89059
89076
|
import { join as join43 } from "path";
|
|
89060
89077
|
import { homedir as homedir10, tmpdir as tmpdir3 } from "os";
|
|
89061
|
-
import { createRequire as createRequire2 } from "module";
|
|
89062
89078
|
init_logger2();
|
|
89063
89079
|
init_plugin_identity();
|
|
89064
89080
|
var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
|
|
@@ -89071,6 +89087,7 @@ function debugLog(...args) {
|
|
|
89071
89087
|
}
|
|
89072
89088
|
}
|
|
89073
89089
|
var REPO = "code-yeongyu/go-claude-code-comment-checker";
|
|
89090
|
+
var COMMENT_CHECKER_VERSION = "0.8.0";
|
|
89074
89091
|
var PLATFORM_MAP = {
|
|
89075
89092
|
"darwin-arm64": { os: "darwin", arch: "arm64", ext: "tar.gz" },
|
|
89076
89093
|
"darwin-x64": { os: "darwin", arch: "amd64", ext: "tar.gz" },
|
|
@@ -89094,16 +89111,6 @@ function getBinaryName() {
|
|
|
89094
89111
|
function getCachedBinaryPath2() {
|
|
89095
89112
|
return getCachedBinaryPath(getCacheDir2(), getBinaryName());
|
|
89096
89113
|
}
|
|
89097
|
-
function getPackageVersion() {
|
|
89098
|
-
try {
|
|
89099
|
-
const require2 = createRequire2(import.meta.url);
|
|
89100
|
-
const pkg = require2("@code-yeongyu/comment-checker/package.json");
|
|
89101
|
-
return pkg.version;
|
|
89102
|
-
} catch (error) {
|
|
89103
|
-
error instanceof Error;
|
|
89104
|
-
return "0.4.1";
|
|
89105
|
-
}
|
|
89106
|
-
}
|
|
89107
89114
|
async function downloadCommentChecker() {
|
|
89108
89115
|
const platformKey = `${process.platform}-${process.arch}`;
|
|
89109
89116
|
const platformInfo = PLATFORM_MAP[platformKey];
|
|
@@ -89118,7 +89125,7 @@ async function downloadCommentChecker() {
|
|
|
89118
89125
|
debugLog("Binary already cached at:", binaryPath);
|
|
89119
89126
|
return binaryPath;
|
|
89120
89127
|
}
|
|
89121
|
-
const version =
|
|
89128
|
+
const version = COMMENT_CHECKER_VERSION;
|
|
89122
89129
|
const { os, arch, ext } = platformInfo;
|
|
89123
89130
|
const assetName = `comment-checker_v${version}_${os}_${arch}.${ext}`;
|
|
89124
89131
|
const downloadUrl = `https://github.com/${REPO}/releases/download/v${version}/${assetName}`;
|
|
@@ -96503,7 +96510,7 @@ function getCachedVersion(options = {}) {
|
|
|
96503
96510
|
// package.json
|
|
96504
96511
|
var package_default = {
|
|
96505
96512
|
name: "oh-my-opencode",
|
|
96506
|
-
version: "5.0.0-beta.
|
|
96513
|
+
version: "5.0.0-beta.64",
|
|
96507
96514
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
96508
96515
|
main: "./dist/index.js",
|
|
96509
96516
|
types: "dist/index.d.ts",
|
|
@@ -96535,8 +96542,6 @@ var package_default = {
|
|
|
96535
96542
|
"packages/omo-codex",
|
|
96536
96543
|
"packages/omo-senpi",
|
|
96537
96544
|
"packages/senpi-task",
|
|
96538
|
-
"packages/pi-goal",
|
|
96539
|
-
"packages/pi-webfetch",
|
|
96540
96545
|
"packages/omo-opencode",
|
|
96541
96546
|
"packages/omo-native"
|
|
96542
96547
|
],
|
|
@@ -96638,7 +96643,7 @@ var package_default = {
|
|
|
96638
96643
|
prepublishOnly: "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
|
|
96639
96644
|
"test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
|
|
96640
96645
|
typecheck: "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
|
|
96641
|
-
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/
|
|
96646
|
+
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
|
|
96642
96647
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
96643
96648
|
test: "bun test --timeout 20000",
|
|
96644
96649
|
"changelog:section": "bun script/changelog-section.ts",
|
|
@@ -96670,7 +96675,6 @@ var package_default = {
|
|
|
96670
96675
|
homepage: "https://github.com/code-yeongyu/oh-my-openagent#readme",
|
|
96671
96676
|
dependencies: {
|
|
96672
96677
|
"@clack/prompts": "^1.7.0",
|
|
96673
|
-
"@code-yeongyu/comment-checker": "^0.8.0",
|
|
96674
96678
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
96675
96679
|
"@opencode-ai/plugin": "1.18.22",
|
|
96676
96680
|
"@opencode-ai/sdk": "1.18.22",
|
|
@@ -96688,7 +96692,7 @@ var package_default = {
|
|
|
96688
96692
|
zod: "^4.4.3"
|
|
96689
96693
|
},
|
|
96690
96694
|
devDependencies: {
|
|
96691
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
96695
|
+
"@code-yeongyu/senpi": "2026.9.16",
|
|
96692
96696
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
96693
96697
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
96694
96698
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -96707,8 +96711,6 @@ var package_default = {
|
|
|
96707
96711
|
"@oh-my-opencode/omo-opencode": "workspace:*",
|
|
96708
96712
|
"@oh-my-opencode/omo-senpi": "workspace:*",
|
|
96709
96713
|
"@oh-my-opencode/openclaw-core": "workspace:*",
|
|
96710
|
-
"@oh-my-opencode/pi-goal": "workspace:*",
|
|
96711
|
-
"@oh-my-opencode/pi-webfetch": "workspace:*",
|
|
96712
96714
|
"@oh-my-opencode/prompts-core": "workspace:*",
|
|
96713
96715
|
"@oh-my-opencode/rules-engine": "workspace:*",
|
|
96714
96716
|
"@oh-my-opencode/senpi-task": "workspace:*",
|
|
@@ -96729,18 +96731,18 @@ var package_default = {
|
|
|
96729
96731
|
typescript: "^7.0.2"
|
|
96730
96732
|
},
|
|
96731
96733
|
optionalDependencies: {
|
|
96732
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
96733
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
96734
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
96735
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
96736
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
96737
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
96738
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
96739
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
96740
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
96741
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
96742
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
96743
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
96734
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.64",
|
|
96735
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.64",
|
|
96736
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.64",
|
|
96737
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.64",
|
|
96738
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.64",
|
|
96739
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.64",
|
|
96740
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.64",
|
|
96741
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.64",
|
|
96742
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.64",
|
|
96743
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.64",
|
|
96744
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.64",
|
|
96745
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.64"
|
|
96744
96746
|
},
|
|
96745
96747
|
overrides: {
|
|
96746
96748
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -96754,9 +96756,7 @@ var package_default = {
|
|
|
96754
96756
|
"path-to-regexp": "^8.4.2",
|
|
96755
96757
|
"@types/node": "26.2.0"
|
|
96756
96758
|
},
|
|
96757
|
-
trustedDependencies: [
|
|
96758
|
-
"@code-yeongyu/comment-checker"
|
|
96759
|
-
]
|
|
96759
|
+
trustedDependencies: []
|
|
96760
96760
|
};
|
|
96761
96761
|
|
|
96762
96762
|
// packages/omo-opencode/src/hooks/auto-update-checker/checker/bundled-version.ts
|
|
@@ -102544,7 +102544,7 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
102544
102544
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
102545
102545
|
| Changes build output | Run the build. Verify the output files exist and are correct. |
|
|
102546
102546
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
102547
|
-
| Changes UI rendering |
|
|
102547
|
+
| Changes UI rendering | Drive the REAL page from js eval: (1) \`new Bun.WebView()\` on Bun >= 1.4 (macOS default; Linux/Windows need installed Chrome/Chromium/Edge). (2) Otherwise, or for Chrome semantics, stealth, trace, or auth, WRITE a \`playwright-core\` script and run it from the kernel against local Chrome (\`chromium.launch({ channel: "chrome" })\` / \`launchPersistentContext\`). Capture screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile. For login state, CLONE the profile first (\`rsync -a <profile>/ <tmp-clone>/\`) and use only the clone as the persistent user-data-dir; clear data only there. |
|
|
102548
102548
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
102549
102549
|
| Changes a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
102550
102550
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
@@ -102561,7 +102561,7 @@ The real-surface artifact is always required. A test is required only where a co
|
|
|
102561
102561
|
|
|
102562
102562
|
**NAME THE EXACT TOOL + EXACT INVOCATION** for every scenario \u2014 the literal \`curl ...\`, \`tmux send-keys ...\`, \`page.click(...)\` with concrete inputs and the binary observable. "run it" / "open the page" is not a scenario.
|
|
102563
102563
|
|
|
102564
|
-
**CLEANUP IS PART OF QA \u2014 TRACK IT AS TODOS.** The moment a QA scenario spawns any resource, add a teardown todo for it (QA scripts, tmux assets, browser
|
|
102564
|
+
**CLEANUP IS PART OF QA \u2014 TRACK IT AS TODOS.** The moment a QA scenario spawns any resource, add a teardown todo for it (QA scripts, tmux assets, browser contexts, PIDs, ports, containers, temp dirs). Execute every teardown todo and capture the receipt before declaring done. A leftover process / tmux session / browser context / bound port / temp dir = NOT done.
|
|
102565
102565
|
</MANUAL_QA_MANDATE>
|
|
102566
102566
|
|
|
102567
102567
|
### TDD Workflow (MANDATORY on every production code change with a test seam)
|
|
@@ -102916,13 +102916,13 @@ Trigger if user said "\uC5C4\uBC00"/"strictly"/"rigorously"/"properly review", o
|
|
|
102916
102916
|
| Adds/modifies a CLI command | Run the command with Bash. Show the output. |
|
|
102917
102917
|
| Changes build output | Run the build. Verify output files exist and are correct. |
|
|
102918
102918
|
| Modifies API behavior | Call the endpoint. Show the response. |
|
|
102919
|
-
| Renders/changes a page |
|
|
102919
|
+
| Renders/changes a page | Drive the REAL page from js eval: (1) \`new Bun.WebView()\` on Bun >= 1.4 (macOS default; Linux/Windows need installed Chrome/Chromium/Edge). (2) Otherwise, or for Chrome semantics, stealth, trace, or auth, WRITE a \`playwright-core\` script and run it from the kernel against local Chrome (\`chromium.launch({ channel: "chrome" })\` / \`launchPersistentContext\`). Capture screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile. For login state, CLONE it first (\`rsync -a <profile>/ <tmp-clone>/\`) and use only the clone as the persistent user-data-dir; clear data only there. |
|
|
102920
102920
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
102921
102921
|
| Drives a desktop/GUI (non-page) surface | Computer use: OS-level GUI automation against the running app. Capture action log + screenshot. |
|
|
102922
102922
|
| Adds a new tool/hook/feature | Test it end-to-end in a real scenario. |
|
|
102923
102923
|
| Modifies config handling | Load the config. Verify it parses correctly. |
|
|
102924
102924
|
|
|
102925
|
-
**NAME THE EXACT TOOL + EXACT INVOCATION** per scenario \u2014 the literal \`curl\` / \`send-keys\` / \`page.click\` with inputs and the binary observable. **REGISTER EVERY QA-SPAWNED RESOURCE TEARDOWN AS ITS OWN TODO** (scripts, tmux assets, browser
|
|
102925
|
+
**NAME THE EXACT TOOL + EXACT INVOCATION** per scenario \u2014 the literal \`curl\` / \`send-keys\` / \`page.click\` with inputs and the binary observable. **REGISTER EVERY QA-SPAWNED RESOURCE TEARDOWN AS ITS OWN TODO** (scripts, tmux assets, browser contexts, PIDs, ports, temp dirs), execute it, capture the receipt. A leftover process / tmux session / browser context = NOT done.
|
|
102926
102926
|
|
|
102927
102927
|
**UNACCEPTABLE (WILL BE REJECTED):**
|
|
102928
102928
|
- "This should work" - DID YOU RUN IT? NO? THEN RUN IT.
|
|
@@ -103355,13 +103355,13 @@ lsp_diagnostics catches type errors only. Logic bugs, missing behavior, broken f
|
|
|
103355
103355
|
| Adds/modifies a CLI command | Run it with Bash. Show output. |
|
|
103356
103356
|
| Changes build output | Run build. Verify output files. |
|
|
103357
103357
|
| Modifies API behavior | Call the endpoint. Show response. |
|
|
103358
|
-
| Renders/changes a page |
|
|
103358
|
+
| Renders/changes a page | Drive the page from js eval: (1) \`new Bun.WebView()\` on Bun >= 1.4 (macOS default; Linux/Windows need installed Chrome/Chromium/Edge). (2) Otherwise, or for Chrome semantics, stealth, trace, or auth, WRITE a \`playwright-core\` script and run it from the kernel against local Chrome (\`chromium.launch({ channel: "chrome" })\` / \`launchPersistentContext\`). Screenshot + action log. NEVER clear cookies, cache, or site data on the user's live profile. For login state, CLONE it first (\`rsync -a <profile>/ <tmp-clone>/\`) and use only the clone as the persistent user-data-dir; clear data only there. |
|
|
103359
103359
|
| Changes UI rendering or a TUI/terminal layout (incl. CJK/Korean/Japanese/Chinese text) | Load the visual-qa skill: capture reference + actual screenshots (web) or the xterm.js web terminal render (TUI; NEVER \`tmux capture-pane\` - it degrades color and CJK width), run its bundled pixel-diff / column-width script, and get the dual read-only verdict (design-system + functional integrity, and visual fidelity + CJK precision). Record the diff/score artifact. |
|
|
103360
103360
|
| Drives a desktop GUI | Computer use: OS-level GUI automation against the running app. Action log + screenshot. |
|
|
103361
103361
|
| Adds tool/hook/feature | Test end-to-end in a real scenario. |
|
|
103362
103362
|
| Modifies config handling | Load config. Verify parsed shape. |
|
|
103363
103363
|
|
|
103364
|
-
Name the exact tool + exact invocation per scenario (literal \`curl\` / \`send-keys\` / \`page.click\` + inputs + binary observable). Register every QA-spawned resource teardown as its own todo (scripts, tmux, browser
|
|
103364
|
+
Name the exact tool + exact invocation per scenario (literal \`curl\` / \`send-keys\` / \`page.click\` + inputs + binary observable). Register every QA-spawned resource teardown as its own todo (scripts, tmux, browser contexts, PIDs, ports, temp dirs), execute it, capture the receipt. "This should work" / "tests pass" / "lsp clean" / a leftover process are NOT done \u2014 the surface artifact + clean teardown are.
|
|
103365
103365
|
</MANUAL_QA_MANDATE>
|
|
103366
103366
|
|
|
103367
103367
|
## REVIEWER GATE (triggered)
|
|
@@ -106727,476 +106727,6 @@ var SCOPE_PRIORITY2 = {
|
|
|
106727
106727
|
"opencode-project": 6
|
|
106728
106728
|
};
|
|
106729
106729
|
|
|
106730
|
-
// packages/skills-loader-core/src/features/builtin-skills/agent-browser/SKILL.md
|
|
106731
|
-
var SKILL_default = `---
|
|
106732
|
-
name: agent-browser
|
|
106733
|
-
description: Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
|
|
106734
|
-
---
|
|
106735
|
-
|
|
106736
|
-
# Browser Automation with agent-browser
|
|
106737
|
-
|
|
106738
|
-
## Quick start
|
|
106739
|
-
|
|
106740
|
-
\`\`\`bash
|
|
106741
|
-
agent-browser open <url> # Navigate to page
|
|
106742
|
-
agent-browser snapshot -i # Get interactive elements with refs
|
|
106743
|
-
agent-browser click @e1 # Click element by ref
|
|
106744
|
-
agent-browser fill @e2 "text" # Fill input by ref
|
|
106745
|
-
agent-browser close # Close browser
|
|
106746
|
-
\`\`\`
|
|
106747
|
-
|
|
106748
|
-
## Core workflow
|
|
106749
|
-
|
|
106750
|
-
1. Navigate: \`agent-browser open <url>\`
|
|
106751
|
-
2. Snapshot: \`agent-browser snapshot -i\` (returns elements with refs like \`@e1\`, \`@e2\`)
|
|
106752
|
-
3. Interact using refs from the snapshot
|
|
106753
|
-
4. Re-snapshot after navigation or significant DOM changes
|
|
106754
|
-
|
|
106755
|
-
## Commands
|
|
106756
|
-
|
|
106757
|
-
### Navigation
|
|
106758
|
-
\`\`\`bash
|
|
106759
|
-
agent-browser open <url> # Navigate to URL (aliases: goto, navigate)
|
|
106760
|
-
agent-browser back # Go back
|
|
106761
|
-
agent-browser forward # Go forward
|
|
106762
|
-
agent-browser reload # Reload page
|
|
106763
|
-
agent-browser close # Close browser (aliases: quit, exit)
|
|
106764
|
-
\`\`\`
|
|
106765
|
-
|
|
106766
|
-
### Snapshot (page analysis)
|
|
106767
|
-
\`\`\`bash
|
|
106768
|
-
agent-browser snapshot # Full accessibility tree
|
|
106769
|
-
agent-browser snapshot -i # Interactive elements only (recommended)
|
|
106770
|
-
agent-browser snapshot -i -C # Include cursor-interactive elements (divs with onclick, etc.)
|
|
106771
|
-
agent-browser snapshot -c # Compact (remove empty structural elements)
|
|
106772
|
-
agent-browser snapshot -d 3 # Limit depth to 3
|
|
106773
|
-
agent-browser snapshot -s "#main" # Scope to CSS selector
|
|
106774
|
-
agent-browser snapshot -i -c -d 5 # Combine options
|
|
106775
|
-
\`\`\`
|
|
106776
|
-
|
|
106777
|
-
The \`-C\` flag is useful for modern web apps that use custom clickable elements (divs, spans) instead of standard buttons/links.
|
|
106778
|
-
|
|
106779
|
-
### Interactions (use @refs from snapshot)
|
|
106780
|
-
\`\`\`bash
|
|
106781
|
-
agent-browser click @e1 # Click (--new-tab to open in new tab)
|
|
106782
|
-
agent-browser dblclick @e1 # Double-click
|
|
106783
|
-
agent-browser focus @e1 # Focus element
|
|
106784
|
-
agent-browser fill @e2 "text" # Clear and type
|
|
106785
|
-
agent-browser type @e2 "text" # Type without clearing
|
|
106786
|
-
agent-browser keyboard type "text" # Type with real keystrokes (no selector, current focus)
|
|
106787
|
-
agent-browser keyboard inserttext "text" # Insert text without key events (no selector)
|
|
106788
|
-
agent-browser press Enter # Press key
|
|
106789
|
-
agent-browser press Control+a # Key combination
|
|
106790
|
-
agent-browser keydown Shift # Hold key down
|
|
106791
|
-
agent-browser keyup Shift # Release key
|
|
106792
|
-
agent-browser hover @e1 # Hover
|
|
106793
|
-
agent-browser check @e1 # Check checkbox
|
|
106794
|
-
agent-browser uncheck @e1 # Uncheck checkbox
|
|
106795
|
-
agent-browser select @e1 "value" # Select dropdown
|
|
106796
|
-
agent-browser scroll down 500 # Scroll page (--selector <sel> for container)
|
|
106797
|
-
agent-browser scrollintoview @e1 # Scroll element into view (alias: scrollinto)
|
|
106798
|
-
agent-browser drag @e1 @e2 # Drag and drop
|
|
106799
|
-
agent-browser upload @e1 file.pdf # Upload files
|
|
106800
|
-
\`\`\`
|
|
106801
|
-
|
|
106802
|
-
### Get information
|
|
106803
|
-
\`\`\`bash
|
|
106804
|
-
agent-browser get text @e1 # Get element text
|
|
106805
|
-
agent-browser get html @e1 # Get innerHTML
|
|
106806
|
-
agent-browser get value @e1 # Get input value
|
|
106807
|
-
agent-browser get attr @e1 href # Get attribute
|
|
106808
|
-
agent-browser get title # Get page title
|
|
106809
|
-
agent-browser get url # Get current URL
|
|
106810
|
-
agent-browser get count ".item" # Count matching elements
|
|
106811
|
-
agent-browser get box @e1 # Get bounding box
|
|
106812
|
-
agent-browser get styles @e1 # Get computed styles
|
|
106813
|
-
\`\`\`
|
|
106814
|
-
|
|
106815
|
-
### Check state
|
|
106816
|
-
\`\`\`bash
|
|
106817
|
-
agent-browser is visible @e1 # Check if visible
|
|
106818
|
-
agent-browser is enabled @e1 # Check if enabled
|
|
106819
|
-
agent-browser is checked @e1 # Check if checked
|
|
106820
|
-
\`\`\`
|
|
106821
|
-
|
|
106822
|
-
### Screenshots & PDF
|
|
106823
|
-
\`\`\`bash
|
|
106824
|
-
agent-browser screenshot # Screenshot (saves to temp dir if no path)
|
|
106825
|
-
agent-browser screenshot path.png # Save to file
|
|
106826
|
-
agent-browser screenshot --full # Full page
|
|
106827
|
-
agent-browser screenshot --annotate # Annotated screenshot with numbered element labels
|
|
106828
|
-
agent-browser pdf output.pdf # Save as PDF
|
|
106829
|
-
\`\`\`
|
|
106830
|
-
|
|
106831
|
-
Annotated screenshots overlay numbered labels \`[N]\` on interactive elements. Each label corresponds to ref \`@eN\`, so refs work for both visual and text workflows:
|
|
106832
|
-
\`\`\`bash
|
|
106833
|
-
agent-browser screenshot --annotate ./page.png
|
|
106834
|
-
# Output: [1] @e1 button "Submit", [2] @e2 link "Home", [3] @e3 textbox "Email"
|
|
106835
|
-
agent-browser click @e2 # Click the "Home" link labeled [2]
|
|
106836
|
-
\`\`\`
|
|
106837
|
-
|
|
106838
|
-
### Video recording
|
|
106839
|
-
\`\`\`bash
|
|
106840
|
-
agent-browser record start ./demo.webm # Start recording (uses current URL + state)
|
|
106841
|
-
agent-browser click @e1 # Perform actions
|
|
106842
|
-
agent-browser record stop # Stop and save video
|
|
106843
|
-
agent-browser record restart ./take2.webm # Stop current + start new recording
|
|
106844
|
-
\`\`\`
|
|
106845
|
-
Recording creates a fresh context but preserves cookies/storage from your session.
|
|
106846
|
-
|
|
106847
|
-
### Wait
|
|
106848
|
-
\`\`\`bash
|
|
106849
|
-
agent-browser wait @e1 # Wait for element
|
|
106850
|
-
agent-browser wait 2000 # Wait milliseconds
|
|
106851
|
-
agent-browser wait --text "Success" # Wait for text
|
|
106852
|
-
agent-browser wait --url "**/dashboard" # Wait for URL pattern
|
|
106853
|
-
agent-browser wait --load networkidle # Wait for network idle
|
|
106854
|
-
agent-browser wait --fn "window.ready" # Wait for JS condition
|
|
106855
|
-
\`\`\`
|
|
106856
|
-
|
|
106857
|
-
Load states: \`load\`, \`domcontentloaded\`, \`networkidle\`
|
|
106858
|
-
|
|
106859
|
-
### Mouse control
|
|
106860
|
-
\`\`\`bash
|
|
106861
|
-
agent-browser mouse move 100 200 # Move mouse
|
|
106862
|
-
agent-browser mouse down left # Press button (left/right/middle)
|
|
106863
|
-
agent-browser mouse up left # Release button
|
|
106864
|
-
agent-browser mouse wheel 100 # Scroll wheel
|
|
106865
|
-
\`\`\`
|
|
106866
|
-
|
|
106867
|
-
### Semantic locators (alternative to refs)
|
|
106868
|
-
\`\`\`bash
|
|
106869
|
-
agent-browser find role button click --name "Submit"
|
|
106870
|
-
agent-browser find text "Sign In" click
|
|
106871
|
-
agent-browser find label "Email" fill "user@test.com"
|
|
106872
|
-
agent-browser find placeholder "Search..." fill "query"
|
|
106873
|
-
agent-browser find alt "Logo" click
|
|
106874
|
-
agent-browser find title "Close" click
|
|
106875
|
-
agent-browser find testid "submit-btn" click
|
|
106876
|
-
agent-browser find first ".item" click
|
|
106877
|
-
agent-browser find last ".item" click
|
|
106878
|
-
agent-browser find nth 2 "a" text
|
|
106879
|
-
\`\`\`
|
|
106880
|
-
|
|
106881
|
-
Actions: \`click\`, \`fill\`, \`type\`, \`hover\`, \`focus\`, \`check\`, \`uncheck\`, \`text\`
|
|
106882
|
-
Options: \`--name <name>\` (filter role by accessible name), \`--exact\` (require exact text match)
|
|
106883
|
-
|
|
106884
|
-
### Browser settings
|
|
106885
|
-
\`\`\`bash
|
|
106886
|
-
agent-browser set viewport 1920 1080 # Set viewport size
|
|
106887
|
-
agent-browser set device "iPhone 14" # Emulate device
|
|
106888
|
-
agent-browser set geo 37.7749 -122.4194 # Set geolocation
|
|
106889
|
-
agent-browser set offline on # Toggle offline mode
|
|
106890
|
-
agent-browser set headers '{"X-Key":"v"}' # Extra HTTP headers
|
|
106891
|
-
agent-browser set credentials user pass # HTTP basic auth
|
|
106892
|
-
agent-browser set media dark # Emulate color scheme
|
|
106893
|
-
\`\`\`
|
|
106894
|
-
|
|
106895
|
-
### Cookies & Storage
|
|
106896
|
-
\`\`\`bash
|
|
106897
|
-
agent-browser cookies # Get all cookies
|
|
106898
|
-
agent-browser cookies set name value # Set cookie
|
|
106899
|
-
agent-browser cookies clear # Clear cookies
|
|
106900
|
-
|
|
106901
|
-
agent-browser storage local # Get all localStorage
|
|
106902
|
-
agent-browser storage local key # Get specific key
|
|
106903
|
-
agent-browser storage local set k v # Set value
|
|
106904
|
-
agent-browser storage local clear # Clear all
|
|
106905
|
-
|
|
106906
|
-
agent-browser storage session # Same for sessionStorage
|
|
106907
|
-
\`\`\`
|
|
106908
|
-
|
|
106909
|
-
### Network
|
|
106910
|
-
\`\`\`bash
|
|
106911
|
-
agent-browser network route <url> # Intercept requests
|
|
106912
|
-
agent-browser network route <url> --abort # Block requests
|
|
106913
|
-
agent-browser network route <url> --body '{}' # Mock response
|
|
106914
|
-
agent-browser network unroute [url] # Remove routes
|
|
106915
|
-
agent-browser network requests # View tracked requests
|
|
106916
|
-
agent-browser network requests --filter api # Filter requests
|
|
106917
|
-
\`\`\`
|
|
106918
|
-
|
|
106919
|
-
### Tabs & Windows
|
|
106920
|
-
\`\`\`bash
|
|
106921
|
-
agent-browser tab # List tabs
|
|
106922
|
-
agent-browser tab new [url] # New tab
|
|
106923
|
-
agent-browser tab 2 # Switch to tab
|
|
106924
|
-
agent-browser tab close # Close tab
|
|
106925
|
-
agent-browser window new # New window
|
|
106926
|
-
\`\`\`
|
|
106927
|
-
|
|
106928
|
-
### Frames
|
|
106929
|
-
\`\`\`bash
|
|
106930
|
-
agent-browser frame "#iframe" # Switch to iframe
|
|
106931
|
-
agent-browser frame main # Back to main frame
|
|
106932
|
-
\`\`\`
|
|
106933
|
-
|
|
106934
|
-
### Dialogs
|
|
106935
|
-
\`\`\`bash
|
|
106936
|
-
agent-browser dialog accept [text] # Accept dialog (with optional prompt text)
|
|
106937
|
-
agent-browser dialog dismiss # Dismiss dialog
|
|
106938
|
-
\`\`\`
|
|
106939
|
-
|
|
106940
|
-
### Diff (compare snapshots, screenshots, URLs)
|
|
106941
|
-
\`\`\`bash
|
|
106942
|
-
agent-browser diff snapshot # Compare current vs last snapshot
|
|
106943
|
-
agent-browser diff snapshot --baseline before.txt # Compare current vs saved snapshot file
|
|
106944
|
-
agent-browser diff snapshot --selector "#main" --compact # Scoped snapshot diff
|
|
106945
|
-
agent-browser diff screenshot --baseline before.png # Visual pixel diff against baseline
|
|
106946
|
-
agent-browser diff screenshot --baseline b.png -o d.png # Save diff image to custom path
|
|
106947
|
-
agent-browser diff screenshot --baseline b.png -t 0.2 # Adjust color threshold (0-1)
|
|
106948
|
-
agent-browser diff url https://v1.com https://v2.com # Compare two URLs (snapshot diff)
|
|
106949
|
-
agent-browser diff url https://v1.com https://v2.com --screenshot # Also visual diff
|
|
106950
|
-
agent-browser diff url https://v1.com https://v2.com --selector "#main" # Scope to element
|
|
106951
|
-
\`\`\`
|
|
106952
|
-
|
|
106953
|
-
### JavaScript
|
|
106954
|
-
\`\`\`bash
|
|
106955
|
-
agent-browser eval "document.title" # Run JavaScript
|
|
106956
|
-
agent-browser eval -b "base64code" # Run base64-encoded JS
|
|
106957
|
-
agent-browser eval --stdin # Read JS from stdin
|
|
106958
|
-
\`\`\`
|
|
106959
|
-
|
|
106960
|
-
### Debug & Profiling
|
|
106961
|
-
\`\`\`bash
|
|
106962
|
-
agent-browser console # View console messages
|
|
106963
|
-
agent-browser console --clear # Clear console
|
|
106964
|
-
agent-browser errors # View page errors
|
|
106965
|
-
agent-browser errors --clear # Clear errors
|
|
106966
|
-
agent-browser highlight @e1 # Highlight element
|
|
106967
|
-
agent-browser trace start # Start recording trace
|
|
106968
|
-
agent-browser trace stop trace.zip # Stop and save trace
|
|
106969
|
-
agent-browser profiler start # Start Chrome DevTools profiling
|
|
106970
|
-
agent-browser profiler stop profile.json # Stop and save profile
|
|
106971
|
-
\`\`\`
|
|
106972
|
-
|
|
106973
|
-
### State management
|
|
106974
|
-
\`\`\`bash
|
|
106975
|
-
agent-browser state save auth.json # Save auth state
|
|
106976
|
-
agent-browser state load auth.json # Load auth state
|
|
106977
|
-
agent-browser state list # List saved state files
|
|
106978
|
-
agent-browser state show <file> # Show state summary
|
|
106979
|
-
agent-browser state rename <old> <new> # Rename state file
|
|
106980
|
-
agent-browser state clear [name] # Clear states for session
|
|
106981
|
-
agent-browser state clear --all # Clear all saved states
|
|
106982
|
-
agent-browser state clean --older-than <days> # Delete old states
|
|
106983
|
-
\`\`\`
|
|
106984
|
-
|
|
106985
|
-
### Setup
|
|
106986
|
-
\`\`\`bash
|
|
106987
|
-
agent-browser install # Download Chromium browser
|
|
106988
|
-
agent-browser install --with-deps # Also install system deps (Linux)
|
|
106989
|
-
\`\`\`
|
|
106990
|
-
|
|
106991
|
-
## Global Options
|
|
106992
|
-
|
|
106993
|
-
| Option | Description |
|
|
106994
|
-
|--------|-------------|
|
|
106995
|
-
| \`--session <name>\` | Isolated browser session (\`AGENT_BROWSER_SESSION\` env) |
|
|
106996
|
-
| \`--session-name <name>\` | Auto-save/restore session state (\`AGENT_BROWSER_SESSION_NAME\` env) |
|
|
106997
|
-
| \`--profile <path>\` | Persistent browser profile (\`AGENT_BROWSER_PROFILE\` env) |
|
|
106998
|
-
| \`--state <path>\` | Load storage state from JSON file (\`AGENT_BROWSER_STATE\` env) |
|
|
106999
|
-
| \`--headers <json>\` | HTTP headers scoped to URL's origin |
|
|
107000
|
-
| \`--executable-path <path>\` | Custom browser binary (\`AGENT_BROWSER_EXECUTABLE_PATH\` env) |
|
|
107001
|
-
| \`--extension <path>\` | Load browser extension (repeatable; \`AGENT_BROWSER_EXTENSIONS\` env) |
|
|
107002
|
-
| \`--args <args>\` | Browser launch args (\`AGENT_BROWSER_ARGS\` env) |
|
|
107003
|
-
| \`--user-agent <ua>\` | Custom User-Agent (\`AGENT_BROWSER_USER_AGENT\` env) |
|
|
107004
|
-
| \`--proxy <url>\` | Proxy server (\`AGENT_BROWSER_PROXY\` env) |
|
|
107005
|
-
| \`--proxy-bypass <hosts>\` | Hosts to bypass proxy (\`AGENT_BROWSER_PROXY_BYPASS\` env) |
|
|
107006
|
-
| \`--ignore-https-errors\` | Ignore HTTPS certificate errors |
|
|
107007
|
-
| \`--allow-file-access\` | Allow file:// URLs to access local files |
|
|
107008
|
-
| \`-p, --provider <name>\` | Cloud browser provider (\`AGENT_BROWSER_PROVIDER\` env) |
|
|
107009
|
-
| \`--device <name>\` | iOS device name (\`AGENT_BROWSER_IOS_DEVICE\` env) |
|
|
107010
|
-
| \`--json\` | Machine-readable JSON output |
|
|
107011
|
-
| \`--full, -f\` | Full page screenshot |
|
|
107012
|
-
| \`--annotate\` | Annotated screenshot with numbered labels (\`AGENT_BROWSER_ANNOTATE\` env) |
|
|
107013
|
-
| \`--headed\` | Show browser window (\`AGENT_BROWSER_HEADED\` env) |
|
|
107014
|
-
| \`--cdp <port\\|wss://url>\` | Connect via Chrome DevTools Protocol |
|
|
107015
|
-
| \`--auto-connect\` | Auto-discover running Chrome (\`AGENT_BROWSER_AUTO_CONNECT\` env) |
|
|
107016
|
-
| \`--color-scheme <scheme>\` | Color scheme: dark, light, no-preference (\`AGENT_BROWSER_COLOR_SCHEME\` env) |
|
|
107017
|
-
| \`--download-path <path>\` | Default download directory (\`AGENT_BROWSER_DOWNLOAD_PATH\` env) |
|
|
107018
|
-
| \`--native\` | [Experimental] Use native Rust daemon (\`AGENT_BROWSER_NATIVE\` env) |
|
|
107019
|
-
| \`--config <path>\` | Custom config file (\`AGENT_BROWSER_CONFIG\` env) |
|
|
107020
|
-
| \`--debug\` | Debug output |
|
|
107021
|
-
|
|
107022
|
-
### Security options
|
|
107023
|
-
| Option | Description |
|
|
107024
|
-
|--------|-------------|
|
|
107025
|
-
| \`--content-boundaries\` | Wrap page output in boundary markers (\`AGENT_BROWSER_CONTENT_BOUNDARIES\` env) |
|
|
107026
|
-
| \`--max-output <chars>\` | Truncate page output to N characters (\`AGENT_BROWSER_MAX_OUTPUT\` env) |
|
|
107027
|
-
| \`--allowed-domains <list>\` | Comma-separated allowed domain patterns (\`AGENT_BROWSER_ALLOWED_DOMAINS\` env) |
|
|
107028
|
-
| \`--action-policy <path>\` | Path to action policy JSON file (\`AGENT_BROWSER_ACTION_POLICY\` env) |
|
|
107029
|
-
| \`--confirm-actions <list>\` | Action categories requiring confirmation (\`AGENT_BROWSER_CONFIRM_ACTIONS\` env) |
|
|
107030
|
-
|
|
107031
|
-
## Configuration file
|
|
107032
|
-
|
|
107033
|
-
Create \`agent-browser.json\` for persistent defaults (no need to repeat flags):
|
|
107034
|
-
|
|
107035
|
-
**Locations (lowest to highest priority):**
|
|
107036
|
-
1. \`~/.agent-browser/config.json\` \u2014 user-level defaults
|
|
107037
|
-
2. \`./agent-browser.json\` \u2014 project-level overrides
|
|
107038
|
-
3. \`AGENT_BROWSER_*\` environment variables
|
|
107039
|
-
4. CLI flags override everything
|
|
107040
|
-
|
|
107041
|
-
\`\`\`json
|
|
107042
|
-
{
|
|
107043
|
-
"headed": true,
|
|
107044
|
-
"proxy": "http://localhost:8080",
|
|
107045
|
-
"profile": "./browser-data",
|
|
107046
|
-
"native": true
|
|
107047
|
-
}
|
|
107048
|
-
\`\`\`
|
|
107049
|
-
|
|
107050
|
-
## Example: Form submission
|
|
107051
|
-
|
|
107052
|
-
\`\`\`bash
|
|
107053
|
-
agent-browser open https://example.com/form
|
|
107054
|
-
agent-browser snapshot -i
|
|
107055
|
-
# Output shows: textbox "Email" [ref=e1], textbox "Password" [ref=e2], button "Submit" [ref=e3]
|
|
107056
|
-
|
|
107057
|
-
agent-browser fill @e1 "user@example.com"
|
|
107058
|
-
agent-browser fill @e2 "password123"
|
|
107059
|
-
agent-browser click @e3
|
|
107060
|
-
agent-browser wait --load networkidle
|
|
107061
|
-
agent-browser snapshot -i # Check result
|
|
107062
|
-
\`\`\`
|
|
107063
|
-
|
|
107064
|
-
## Example: Authentication with saved state
|
|
107065
|
-
|
|
107066
|
-
\`\`\`bash
|
|
107067
|
-
# Login once
|
|
107068
|
-
agent-browser open https://app.example.com/login
|
|
107069
|
-
agent-browser snapshot -i
|
|
107070
|
-
agent-browser fill @e1 "username"
|
|
107071
|
-
agent-browser fill @e2 "password"
|
|
107072
|
-
agent-browser click @e3
|
|
107073
|
-
agent-browser wait --url "**/dashboard"
|
|
107074
|
-
agent-browser state save auth.json
|
|
107075
|
-
|
|
107076
|
-
# Later sessions: load saved state
|
|
107077
|
-
agent-browser state load auth.json
|
|
107078
|
-
agent-browser open https://app.example.com/dashboard
|
|
107079
|
-
\`\`\`
|
|
107080
|
-
|
|
107081
|
-
### Header-based Auth (Skip login flows)
|
|
107082
|
-
\`\`\`bash
|
|
107083
|
-
# Headers scoped to api.example.com only
|
|
107084
|
-
agent-browser open api.example.com --headers '{"Authorization": "Bearer <token>"}'
|
|
107085
|
-
# Navigate to another domain - headers NOT sent (safe)
|
|
107086
|
-
agent-browser open other-site.com
|
|
107087
|
-
# Global headers (all domains)
|
|
107088
|
-
agent-browser set headers '{"X-Custom-Header": "value"}'
|
|
107089
|
-
\`\`\`
|
|
107090
|
-
|
|
107091
|
-
### Authentication Vault
|
|
107092
|
-
\`\`\`bash
|
|
107093
|
-
# Store credentials locally (encrypted). The LLM never sees passwords.
|
|
107094
|
-
echo "pass" | agent-browser auth save github --url https://github.com/login --username user --password-stdin
|
|
107095
|
-
agent-browser auth login github
|
|
107096
|
-
\`\`\`
|
|
107097
|
-
|
|
107098
|
-
## Sessions & Persistent Profiles
|
|
107099
|
-
|
|
107100
|
-
### Sessions (parallel browsers)
|
|
107101
|
-
\`\`\`bash
|
|
107102
|
-
agent-browser --session test1 open site-a.com
|
|
107103
|
-
agent-browser --session test2 open site-b.com
|
|
107104
|
-
agent-browser session list
|
|
107105
|
-
\`\`\`
|
|
107106
|
-
|
|
107107
|
-
### Session persistence (auto-save/restore)
|
|
107108
|
-
\`\`\`bash
|
|
107109
|
-
agent-browser --session-name twitter open twitter.com
|
|
107110
|
-
# Login once, state persists automatically across restarts
|
|
107111
|
-
# State files stored in ~/.agent-browser/sessions/
|
|
107112
|
-
\`\`\`
|
|
107113
|
-
|
|
107114
|
-
### Persistent Profiles
|
|
107115
|
-
Persists cookies, localStorage, IndexedDB, service workers, cache, login sessions across browser restarts.
|
|
107116
|
-
NEVER point \`--profile\` or \`AGENT_BROWSER_PROFILE\` at the user's real/main browser profile when any cookie, cache, or site-data clear or reset might happen (\`Network.clearBrowserCookies\`, \`Storage.clearCookies\`, \`chrome.browsingData.remove\`, \`cookies clear\`, "clear browsing data") \u2014 that wipes their logged-in state everywhere. If the task needs the main profile's login state, clone the profile directory first (\`rsync -a <profile>/ <tmp-clone>/\`) and pass the clone as \`--profile\`; run any clearing on the clone only.
|
|
107117
|
-
\`\`\`bash
|
|
107118
|
-
agent-browser --profile ~/.myapp-profile open myapp.com
|
|
107119
|
-
# Or via env var
|
|
107120
|
-
AGENT_BROWSER_PROFILE=~/.myapp-profile agent-browser open myapp.com
|
|
107121
|
-
\`\`\`
|
|
107122
|
-
|
|
107123
|
-
## JSON output (for parsing)
|
|
107124
|
-
|
|
107125
|
-
Add \`--json\` for machine-readable output:
|
|
107126
|
-
\`\`\`bash
|
|
107127
|
-
agent-browser snapshot -i --json
|
|
107128
|
-
agent-browser get text @e1 --json
|
|
107129
|
-
\`\`\`
|
|
107130
|
-
|
|
107131
|
-
## Local files
|
|
107132
|
-
|
|
107133
|
-
\`\`\`bash
|
|
107134
|
-
agent-browser --allow-file-access open file:///path/to/document.pdf
|
|
107135
|
-
agent-browser --allow-file-access open file:///path/to/page.html
|
|
107136
|
-
\`\`\`
|
|
107137
|
-
|
|
107138
|
-
## CDP Mode
|
|
107139
|
-
|
|
107140
|
-
\`\`\`bash
|
|
107141
|
-
agent-browser connect 9222 # Local CDP port
|
|
107142
|
-
agent-browser --cdp 9222 snapshot # Direct CDP on each command
|
|
107143
|
-
agent-browser --cdp "wss://browser-service.com/cdp?token=..." snapshot # Remote via WebSocket
|
|
107144
|
-
agent-browser --auto-connect snapshot # Auto-discover running Chrome
|
|
107145
|
-
\`\`\`
|
|
107146
|
-
|
|
107147
|
-
## Cloud providers
|
|
107148
|
-
|
|
107149
|
-
\`\`\`bash
|
|
107150
|
-
# Browserbase
|
|
107151
|
-
BROWSERBASE_API_KEY="key" BROWSERBASE_PROJECT_ID="id" agent-browser -p browserbase open example.com
|
|
107152
|
-
|
|
107153
|
-
# Browser Use
|
|
107154
|
-
BROWSER_USE_API_KEY="key" agent-browser -p browseruse open example.com
|
|
107155
|
-
|
|
107156
|
-
# Kernel
|
|
107157
|
-
KERNEL_API_KEY="key" agent-browser -p kernel open example.com
|
|
107158
|
-
\`\`\`
|
|
107159
|
-
|
|
107160
|
-
## iOS Simulator
|
|
107161
|
-
|
|
107162
|
-
\`\`\`bash
|
|
107163
|
-
agent-browser device list # List available simulators
|
|
107164
|
-
agent-browser -p ios --device "iPhone 16 Pro" open example.com # Launch Safari
|
|
107165
|
-
agent-browser -p ios snapshot -i # Same commands as desktop
|
|
107166
|
-
agent-browser -p ios tap @e1 # Tap
|
|
107167
|
-
agent-browser -p ios swipe up # Mobile-specific
|
|
107168
|
-
agent-browser -p ios close # Close session
|
|
107169
|
-
\`\`\`
|
|
107170
|
-
|
|
107171
|
-
## Native Mode (Experimental)
|
|
107172
|
-
|
|
107173
|
-
Pure Rust daemon using direct CDP \u2014 no Node.js/Playwright required:
|
|
107174
|
-
\`\`\`bash
|
|
107175
|
-
agent-browser --native open example.com
|
|
107176
|
-
# Or: export AGENT_BROWSER_NATIVE=1
|
|
107177
|
-
# Or: {"native": true} in agent-browser.json
|
|
107178
|
-
\`\`\`
|
|
107179
|
-
|
|
107180
|
-
---
|
|
107181
|
-
Install: \`bun add -g agent-browser && agent-browser install\`. Run \`agent-browser --help\` for all commands. Repo: https://github.com/vercel-labs/agent-browser
|
|
107182
|
-
`;
|
|
107183
|
-
|
|
107184
|
-
// packages/skills-loader-core/src/features/builtin-skills/skills/agent-browser-template.ts
|
|
107185
|
-
init_src();
|
|
107186
|
-
var EM_DASH = "\u2014";
|
|
107187
|
-
function createAgentBrowserTemplate(markdown) {
|
|
107188
|
-
const { body } = parseFrontmatter(markdown);
|
|
107189
|
-
return body.trim().replaceAll(` ${EM_DASH} `, " - ");
|
|
107190
|
-
}
|
|
107191
|
-
var agentBrowserTemplate = createAgentBrowserTemplate(SKILL_default);
|
|
107192
|
-
|
|
107193
|
-
// packages/skills-loader-core/src/features/builtin-skills/skills/agent-browser-skill.ts
|
|
107194
|
-
var agentBrowserSkill = {
|
|
107195
|
-
name: "agent-browser",
|
|
107196
|
-
description: "MUST USE for any browser-related tasks. Browser automation via agent-browser CLI - verification, browsing, information gathering, web scraping, testing, screenshots, and all browser interactions.",
|
|
107197
|
-
template: agentBrowserTemplate,
|
|
107198
|
-
allowedTools: ["Bash(agent-browser:*)"]
|
|
107199
|
-
};
|
|
107200
106730
|
// packages/skills-loader-core/src/features/builtin-skills/skills/playwright-mcp-skill.ts
|
|
107201
106731
|
var BASE_MCP_ARGS = ["@playwright/mcp@latest"];
|
|
107202
106732
|
function createPlaywrightSkill(options = {}) {
|
|
@@ -108871,7 +108401,7 @@ var debuggingSkill = {
|
|
|
108871
108401
|
template: loadSharedSkillTemplate("debugging")
|
|
108872
108402
|
};
|
|
108873
108403
|
// packages/skills-loader-core/src/features/builtin-skills/security-research/SKILL.md
|
|
108874
|
-
var
|
|
108404
|
+
var SKILL_default = `# Security Research - Team Mode Vulnerability Audit
|
|
108875
108405
|
|
|
108876
108406
|
Use this skill to run a parallel security audit that separates real exploitability from generic concern. The team has 3 vulnerability hunters and 2 PoC engineers.
|
|
108877
108407
|
|
|
@@ -109075,7 +108605,7 @@ For each finding:
|
|
|
109075
108605
|
var securityResearchSkill = {
|
|
109076
108606
|
name: "security-research",
|
|
109077
108607
|
description: "Team Mode security research skill. Orchestrates 3 vulnerability hunters and 2 PoC engineers to audit a codebase in parallel, prove exploitability, classify root causes, and calibrate severity by actual exploitability. Use for security review, vulnerability research, exploitability audit, pre-release security check, threat model validation, and `/security-research`. Triggers: 'security-research', 'security research', 'security review', 'vulnerability audit', 'exploitability audit', '\uBCF4\uC548 \uB9AC\uBDF0', '\uCDE8\uC57D\uC810 \uAC10\uC0AC'.",
|
|
109078
|
-
template:
|
|
108608
|
+
template: SKILL_default
|
|
109079
108609
|
};
|
|
109080
108610
|
// packages/skills-loader-core/src/features/builtin-skills/skills/security-review.ts
|
|
109081
108611
|
var securityReviewSkill = {
|
|
@@ -109299,18 +108829,13 @@ function createBuiltinSkills(options = {}) {
|
|
|
109299
108829
|
teamModeEnabled = false,
|
|
109300
108830
|
playwrightMcpArgs
|
|
109301
108831
|
} = options;
|
|
109302
|
-
|
|
109303
|
-
|
|
109304
|
-
|
|
109305
|
-
|
|
109306
|
-
|
|
109307
|
-
} else if (browserProvider === "playwright-cli") {
|
|
109308
|
-
browserSkill = playwrightCliSkill;
|
|
109309
|
-
} else {
|
|
109310
|
-
browserSkill = playwrightMcpArgs?.length ? createPlaywrightSkill({ mcp_args: playwrightMcpArgs }) : playwrightSkill;
|
|
109311
|
-
}
|
|
108832
|
+
const browserSkills = {
|
|
108833
|
+
"dev-browser": devBrowserSkill,
|
|
108834
|
+
"playwright-cli": playwrightCliSkill,
|
|
108835
|
+
playwright: playwrightMcpArgs?.length ? createPlaywrightSkill({ mcp_args: playwrightMcpArgs }) : playwrightSkill
|
|
108836
|
+
};
|
|
109312
108837
|
const skills = [
|
|
109313
|
-
|
|
108838
|
+
browserSkills[browserProvider],
|
|
109314
108839
|
frontendSkill,
|
|
109315
108840
|
gitMasterSkill,
|
|
109316
108841
|
reviewWorkSkill,
|
|
@@ -109392,7 +108917,7 @@ async function getAllSkills(options) {
|
|
|
109392
108917
|
allowedTools: skill.allowedTools,
|
|
109393
108918
|
mcpConfig: skill.mcpConfig
|
|
109394
108919
|
}));
|
|
109395
|
-
const providerGatedSkillNames = new Set(["
|
|
108920
|
+
const providerGatedSkillNames = new Set(["playwright"]);
|
|
109396
108921
|
const filteredDiscoveredSkills = discoveredSkills.filter((skill) => {
|
|
109397
108922
|
if (!providerGatedSkillNames.has(skill.name)) {
|
|
109398
108923
|
return true;
|
|
@@ -109617,16 +109142,15 @@ function buildShellAwareGitPrefix(bashPrefix, shellType) {
|
|
|
109617
109142
|
return buildEnvPrefix2(envRecord, resolvedShellType);
|
|
109618
109143
|
}
|
|
109619
109144
|
function injectGitMasterConfig(template, config) {
|
|
109620
|
-
const commitFooter = config?.commit_footer ??
|
|
109621
|
-
const includeCoAuthoredBy = config?.include_co_authored_by ?? true;
|
|
109145
|
+
const commitFooter = config?.commit_footer ?? false;
|
|
109622
109146
|
const gitEnvPrefix = assertValidGitEnvPrefix(config?.git_env_prefix ?? "GIT_MASTER=1");
|
|
109623
109147
|
const shellType = detectShellType2();
|
|
109624
109148
|
const shellPrefix = gitEnvPrefix ? buildShellAwareGitPrefix(gitEnvPrefix, shellType) : "";
|
|
109625
109149
|
const codeBlockLang = shellType === "powershell" ? "pwsh" : shellType === "csh" ? "csh" : "bash";
|
|
109626
109150
|
const skipBashBlockPrefixing = shellType === "powershell" || shellType === "cmd" || shellType === "csh";
|
|
109627
109151
|
let result = gitEnvPrefix ? injectGitEnvPrefix(template, shellPrefix, codeBlockLang) : template;
|
|
109628
|
-
if (commitFooter
|
|
109629
|
-
const injection = buildCommitFooterInjection(commitFooter,
|
|
109152
|
+
if (commitFooter) {
|
|
109153
|
+
const injection = buildCommitFooterInjection(commitFooter, shellPrefix);
|
|
109630
109154
|
const insertionPoint = result.indexOf("```\n</execution>");
|
|
109631
109155
|
result = insertionPoint !== -1 ? result.slice(0, insertionPoint) + "```\n\n" + injection + `
|
|
109632
109156
|
</execution>` + result.slice(insertionPoint + "```\n</execution>".length) : result + `
|
|
@@ -109690,47 +109214,26 @@ function prefixGitCommandsInCodeBlock(codeBlock, prefix) {
|
|
|
109690
109214
|
}).join(`
|
|
109691
109215
|
`);
|
|
109692
109216
|
}
|
|
109693
|
-
function buildCommitFooterInjection(commitFooter,
|
|
109694
|
-
const sections = [];
|
|
109217
|
+
function buildCommitFooterInjection(commitFooter, gitEnvPrefix) {
|
|
109695
109218
|
const cmdPrefix = gitEnvPrefix ? `${gitEnvPrefix} ` : "";
|
|
109696
|
-
|
|
109697
|
-
|
|
109698
|
-
|
|
109699
|
-
|
|
109700
|
-
|
|
109701
|
-
|
|
109702
|
-
|
|
109703
|
-
|
|
109704
|
-
|
|
109705
|
-
|
|
109706
|
-
|
|
109707
|
-
|
|
109708
|
-
|
|
109709
|
-
|
|
109710
|
-
|
|
109711
|
-
|
|
109712
|
-
|
|
109713
|
-
|
|
109714
|
-
}
|
|
109715
|
-
if (commitFooter && includeCoAuthoredBy) {
|
|
109716
|
-
const footerText = typeof commitFooter === "string" ? commitFooter : "Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)";
|
|
109717
|
-
sections.push("**Example (both enabled):**");
|
|
109718
|
-
sections.push("```bash");
|
|
109719
|
-
sections.push(`${cmdPrefix}git commit -m "{Commit Message}" -m "${footerText}" -m "Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>"`);
|
|
109720
|
-
sections.push("```");
|
|
109721
|
-
} else if (commitFooter) {
|
|
109722
|
-
const footerText = typeof commitFooter === "string" ? commitFooter : "Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)";
|
|
109723
|
-
sections.push("**Example:**");
|
|
109724
|
-
sections.push("```bash");
|
|
109725
|
-
sections.push(`${cmdPrefix}git commit -m "{Commit Message}" -m "${footerText}"`);
|
|
109726
|
-
sections.push("```");
|
|
109727
|
-
} else if (includeCoAuthoredBy) {
|
|
109728
|
-
sections.push("**Example:**");
|
|
109729
|
-
sections.push("```bash");
|
|
109730
|
-
sections.push(`${cmdPrefix}git commit -m "{Commit Message}" -m "Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>"`);
|
|
109731
|
-
sections.push("```");
|
|
109732
|
-
}
|
|
109733
|
-
return sections.join(`
|
|
109219
|
+
const footerText = typeof commitFooter === "string" ? commitFooter : "Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)";
|
|
109220
|
+
return [
|
|
109221
|
+
"### 5.5 Commit Footer",
|
|
109222
|
+
"",
|
|
109223
|
+
"Add Sisyphus attribution to EVERY commit:",
|
|
109224
|
+
"",
|
|
109225
|
+
"1. **Footer in commit body:**",
|
|
109226
|
+
"```",
|
|
109227
|
+
footerText,
|
|
109228
|
+
"```",
|
|
109229
|
+
"",
|
|
109230
|
+
"Do NOT add a Co-authored-by trailer.",
|
|
109231
|
+
"",
|
|
109232
|
+
"**Example:**",
|
|
109233
|
+
"```bash",
|
|
109234
|
+
`${cmdPrefix}git commit -m "{Commit Message}" -m "${footerText}"`,
|
|
109235
|
+
"```"
|
|
109236
|
+
].join(`
|
|
109734
109237
|
`);
|
|
109735
109238
|
}
|
|
109736
109239
|
// packages/skills-loader-core/src/features/opencode-skill-loader/skill-template-resolver.ts
|
|
@@ -162620,7 +162123,7 @@ function adaptHostSkillConfig(value) {
|
|
|
162620
162123
|
}
|
|
162621
162124
|
|
|
162622
162125
|
// packages/omo-opencode/src/plugin/skill-context.ts
|
|
162623
|
-
var PROVIDER_GATED_SKILL_NAMES = new Set(["
|
|
162126
|
+
var PROVIDER_GATED_SKILL_NAMES = new Set(["dev-browser", "playwright"]);
|
|
162624
162127
|
function mapScopeToLocation2(scope) {
|
|
162625
162128
|
if (scope === "user" || scope === "opencode")
|
|
162626
162129
|
return "user";
|
|
@@ -172850,9 +172353,7 @@ async function ackMessages(teamRunId, memberName, messageIds, config) {
|
|
|
172850
172353
|
}
|
|
172851
172354
|
// packages/omo-opencode/src/hooks/team-session-events/team-idle-wake-hint.ts
|
|
172852
172355
|
init_store2();
|
|
172853
|
-
|
|
172854
172356
|
// packages/team-core/src/team-mailbox/pending-delivery-recovery.ts
|
|
172855
|
-
init_src();
|
|
172856
172357
|
function getMessagesData2(response) {
|
|
172857
172358
|
if (isRecord(response) && Array.isArray(response.data)) {
|
|
172858
172359
|
return response.data;
|