oh-my-opencode 5.1.56 → 5.1.58
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/cli/index.js +23 -19
- package/dist/cli-node/index.js +23 -19
- package/dist/index.js +521 -348
- package/dist/skills/browser/runtime/omowright/index.js +20 -19
- package/dist/skills/browser/runtime/omowright/manifest.json +3 -3
- package/dist/skills/ultimate-browsing/engine/executor.py +56 -5
- package/dist/skills/ultimate-browsing/engine/tests/test_executor_timeout.py +144 -0
- package/dist/tui.js +20 -16
- package/package.json +15 -15
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +5 -1
- 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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +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/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 +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +20 -19
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +3 -3
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/executor.py +56 -5
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +7 -3
- package/packages/shared-skills/skills/browser/runtime/omowright/index.js +20 -19
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +3 -3
- package/packages/shared-skills/skills/ultimate-browsing/engine/executor.py +56 -5
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_executor_timeout.py +144 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "0.0.1",
|
|
3
|
-
"sourceDigest": "
|
|
3
|
+
"sourceDigest": "27243299c68de06d4321588d998bd106e0554086d268dc448aa70571db719c1d",
|
|
4
4
|
"files": {
|
|
5
|
-
"index.js": "
|
|
5
|
+
"index.js": "3a2e4f2575bdfc15448f13768cd8113f8493bf04611c9fefb09b13430d6520de",
|
|
6
6
|
"page-bundle.js": "bfd51e8383cf47200d57387bbbed258bce5a3a3d00c38fc108034d2888e23f0c"
|
|
7
7
|
},
|
|
8
|
-
"stagedAtUtc": "2026-11-
|
|
8
|
+
"stagedAtUtc": "2026-11-02T13:36:54.191Z"
|
|
9
9
|
}
|
|
@@ -21,6 +21,7 @@ from __future__ import annotations
|
|
|
21
21
|
import json
|
|
22
22
|
import os
|
|
23
23
|
import shutil
|
|
24
|
+
import signal
|
|
24
25
|
import subprocess
|
|
25
26
|
import tempfile
|
|
26
27
|
import time
|
|
@@ -32,6 +33,10 @@ from .result_schema import Attempt
|
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
TEMPLATES_DIR = os.path.join(os.path.dirname(__file__), "templates")
|
|
36
|
+
# Chrome removes its per-launch state (the macOS code-sign clone, the temp
|
|
37
|
+
# profile) only on a clean quit, so a timed-out template's process group gets
|
|
38
|
+
# SIGTERM and this long to let `ctx.close()` run before SIGKILL (omo#12067).
|
|
39
|
+
TERM_GRACE_S = 5
|
|
35
40
|
|
|
36
41
|
|
|
37
42
|
def _node_available() -> bool:
|
|
@@ -70,19 +75,65 @@ def _run_node_template(template: str, args: dict, timeout: int = 90) -> tuple[in
|
|
|
70
75
|
if not os.path.isfile(path):
|
|
71
76
|
return 127, "", f"template not found: {path}"
|
|
72
77
|
try:
|
|
73
|
-
proc = subprocess.
|
|
78
|
+
proc = subprocess.Popen(
|
|
74
79
|
["node", path],
|
|
75
|
-
|
|
80
|
+
stdin=subprocess.PIPE,
|
|
81
|
+
stdout=subprocess.PIPE,
|
|
82
|
+
stderr=subprocess.PIPE,
|
|
76
83
|
cwd=TEMPLATES_DIR,
|
|
77
|
-
capture_output=True,
|
|
78
84
|
text=True,
|
|
79
|
-
|
|
85
|
+
start_new_session=True,
|
|
80
86
|
)
|
|
81
|
-
|
|
87
|
+
except Exception as e:
|
|
88
|
+
return 1, "", f"{type(e).__name__}:{e}"
|
|
89
|
+
try:
|
|
90
|
+
stdout, stderr = proc.communicate(input=json.dumps(args), timeout=timeout)
|
|
91
|
+
return proc.returncode, stdout, stderr
|
|
82
92
|
except subprocess.TimeoutExpired:
|
|
93
|
+
_terminate_template_group(proc)
|
|
83
94
|
return 124, "", f"timeout after {timeout}s"
|
|
84
95
|
except Exception as e:
|
|
96
|
+
_terminate_template_group(proc)
|
|
85
97
|
return 1, "", f"{type(e).__name__}:{e}"
|
|
98
|
+
except BaseException:
|
|
99
|
+
# Cancellation (KeyboardInterrupt, SystemExit): start_new_session keeps a
|
|
100
|
+
# terminal Ctrl-C from reaching the template's group, so quit it here.
|
|
101
|
+
_terminate_template_group(proc)
|
|
102
|
+
raise
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _signal_group(pgid: int, sig: int) -> bool:
|
|
106
|
+
try:
|
|
107
|
+
os.killpg(pgid, sig)
|
|
108
|
+
except ProcessLookupError:
|
|
109
|
+
return False
|
|
110
|
+
return True
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _terminate_template_group(proc: subprocess.Popen[str]) -> None:
|
|
114
|
+
"""SIGTERM the template's whole group (node and the Chrome it launched), wait up to TERM_GRACE_S, then SIGKILL."""
|
|
115
|
+
if os.name == "nt":
|
|
116
|
+
proc.terminate()
|
|
117
|
+
try:
|
|
118
|
+
proc.wait(timeout=TERM_GRACE_S)
|
|
119
|
+
except subprocess.TimeoutExpired:
|
|
120
|
+
proc.kill()
|
|
121
|
+
else:
|
|
122
|
+
pgid = proc.pid
|
|
123
|
+
if _signal_group(pgid, signal.SIGTERM):
|
|
124
|
+
deadline = time.monotonic() + TERM_GRACE_S
|
|
125
|
+
while time.monotonic() < deadline:
|
|
126
|
+
proc.poll()
|
|
127
|
+
if not _signal_group(pgid, 0):
|
|
128
|
+
break
|
|
129
|
+
time.sleep(0.05)
|
|
130
|
+
else:
|
|
131
|
+
_signal_group(pgid, signal.SIGKILL)
|
|
132
|
+
try:
|
|
133
|
+
proc.communicate(timeout=TERM_GRACE_S)
|
|
134
|
+
except subprocess.TimeoutExpired:
|
|
135
|
+
proc.kill()
|
|
136
|
+
proc.communicate()
|
|
86
137
|
|
|
87
138
|
|
|
88
139
|
class _FakeResp:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// omo-codex-install:
|
|
2
|
+
// omo-codex-install:a0558b9ad212e0633ea53d61ed065bbb1aa6431d7e83e39b80639438ffa49a43:3b288abbaf163be3da4b5134a525776cd136f444e31407dc89bd1b9f32905eca
|
|
3
3
|
var __esm = (fn, res, err) => () => {
|
|
4
4
|
if (fn)
|
|
5
5
|
try {
|
|
@@ -10205,7 +10205,7 @@ var package_default;
|
|
|
10205
10205
|
var init_package = __esm(() => {
|
|
10206
10206
|
package_default = {
|
|
10207
10207
|
name: "@oh-my-opencode/omo-codex",
|
|
10208
|
-
version: "5.1.
|
|
10208
|
+
version: "5.1.58",
|
|
10209
10209
|
type: "module",
|
|
10210
10210
|
private: true,
|
|
10211
10211
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -19693,7 +19693,11 @@ var OmoCategoryConfigObjectSchema = object({
|
|
|
19693
19693
|
disable: boolean2().optional(),
|
|
19694
19694
|
warn_unavailable: boolean2().optional()
|
|
19695
19695
|
}).strict();
|
|
19696
|
-
|
|
19696
|
+
function withoutRetiredCategoryKeys(entry) {
|
|
19697
|
+
const { provider_lock: _retired, ...rest } = entry;
|
|
19698
|
+
return rest;
|
|
19699
|
+
}
|
|
19700
|
+
var OmoCategoryConfigSchema = preprocess((value) => isRecord4(value) ? withoutRetiredCategoryKeys(normalizeLegacyModelFields(value)) : value, OmoCategoryConfigObjectSchema);
|
|
19697
19701
|
var OmoCategoriesConfigSchema = record(string2(), OmoCategoryConfigSchema);
|
|
19698
19702
|
|
|
19699
19703
|
// packages/omo-config-core/src/schema/computer.ts
|