oh-my-opencode 5.1.29 → 5.1.32
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/README.ja.md +2 -0
- package/README.ko.md +2 -0
- package/README.md +2 -0
- package/README.ru.md +2 -0
- package/README.zh-cn.md +2 -0
- package/dist/cli/cli-program.d.ts +1 -20
- package/dist/cli/index.js +950 -51
- package/dist/cli/install-command-options.d.ts +20 -0
- package/dist/cli/service-auth/browser.d.ts +3 -0
- package/dist/cli/service-auth/cli-keystore.fixture.d.ts +7 -0
- package/dist/cli/service-auth/commands.d.ts +19 -0
- package/dist/cli/service-auth/device-flow.d.ts +15 -0
- package/dist/cli/service-auth/device-keys.d.ts +10 -0
- package/dist/cli/service-auth/device-name.d.ts +3 -0
- package/dist/cli/service-auth/keystore.d.ts +20 -0
- package/dist/cli/service-auth/loopback.d.ts +11 -0
- package/dist/cli/service-auth/protocol.d.ts +86 -0
- package/dist/cli/service-auth/refresh-child.fixture.d.ts +1 -0
- package/dist/cli/service-auth/session.d.ts +17 -0
- package/dist/cli/service-auth/terminal-text.d.ts +1 -0
- package/dist/cli/service-auth/test-support.d.ts +43 -0
- package/dist/cli/service-auth/tls-test-certificate.d.ts +4 -0
- package/dist/cli-node/index.js +950 -51
- package/dist/features/background-agent/task-poller.d.ts +3 -0
- package/dist/features/opencode-skill-loader/opencode-shell-skill-content.d.ts +8 -0
- package/dist/features/opencode-skill-loader/skill-content.d.ts +1 -0
- package/dist/features/team-mode/tools/lifecycle-inline-spec.d.ts +1 -0
- package/dist/hooks/keyword-detector/constants.d.ts +1 -0
- package/dist/hooks/non-interactive-env/non-interactive-env-hook.d.ts +5 -1
- package/dist/index.js +40791 -40412
- package/dist/shared/disabled-agents.d.ts +1 -0
- package/dist/shared/opencode-shell.d.ts +27 -0
- package/dist/skills/browser/SKILL.md +1 -1
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/ultimate-browsing/SKILL.md +14 -16
- package/dist/skills/ulw-execute/SKILL.md +2 -2
- package/dist/skills/ulw-research/SKILL.md +17 -18
- package/dist/skills/ulw-research/scripts/cli-support.test.ts +5 -3
- package/dist/skills/ulw-research/scripts/outcome.test.ts +10 -4
- package/dist/skills/ulw-research/scripts/report-tools.test.ts +3 -2
- package/dist/skills/visual-qa/scripts/cli.test.ts +5 -3
- package/dist/tools/delegate-task/executor-types.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-creator.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +2 -0
- package/dist/tools/session-manager/sdk-storage.d.ts +15 -2
- package/dist/tools/session-manager/session-error.d.ts +7 -0
- package/dist/tools/session-manager/storage.d.ts +4 -2
- package/dist/tui.js +89 -21
- package/package.json +15 -14
- package/packages/git-bash-mcp/dist/cli.js +1 -1
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +90 -0
- package/packages/lsp-core/src/lsp/client.ts +3 -1
- package/packages/lsp-core/src/lsp/workspace-apply-edit-test-support.ts +5 -2
- package/packages/lsp-daemon/dist/cli.js +1 -1
- package/packages/lsp-daemon/dist/client.js +1 -1
- package/packages/lsp-daemon/dist/index.js +1 -1
- package/packages/lsp-tools-mcp/dist/cli.js +1 -1
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +1 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
- package/packages/lsp-tools-mcp/dist/tools.js +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +7 -4
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +1 -1
- 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/teammode/skills/teammode/SKILL.md +3 -3
- 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/dist/cli.js +18 -15
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +18 -15
- 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/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
- 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/auto-update-plan.mjs +2 -0
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +2 -0
- package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +2 -0
- package/packages/omo-codex/plugin/scripts/build-components.mjs +1 -0
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +42 -10
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
- package/packages/omo-codex/plugin/skills/teammode/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +14 -16
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +18 -15
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +17 -18
- package/packages/omo-codex/plugin/test/materialize-shared-upstreams.test.mjs +179 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
- package/packages/omo-codex/plugin/test/windows-console-hide.test.mjs +150 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +11 -6
- package/packages/prompts-core/prompts/ultrawork/codex.md +18 -15
- package/packages/shared-skills/skills/browser/SKILL.md +1 -1
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +14 -16
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +2 -2
- package/packages/shared-skills/skills/ulw-research/SKILL.md +17 -18
- package/packages/shared-skills/skills/ulw-research/scripts/cli-support.test.ts +5 -3
- package/packages/shared-skills/skills/ulw-research/scripts/outcome.test.ts +10 -4
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +3 -2
- package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +5 -3
package/dist/tui.js
CHANGED
|
@@ -2460,6 +2460,56 @@ var init_internal_initiator_marker = __esm(() => {
|
|
|
2460
2460
|
INTERNAL_NOREPLY_MARKER_DETECT_PATTERN = /<!--\s*OMO_INTERNAL_NOREPLY\s*-->/;
|
|
2461
2461
|
});
|
|
2462
2462
|
|
|
2463
|
+
// packages/utils/src/migration/agent-names.ts
|
|
2464
|
+
var AGENT_NAME_MAP, BUILTIN_AGENT_NAMES;
|
|
2465
|
+
var init_agent_names = __esm(() => {
|
|
2466
|
+
AGENT_NAME_MAP = {
|
|
2467
|
+
omo: "sisyphus",
|
|
2468
|
+
OmO: "sisyphus",
|
|
2469
|
+
Sisyphus: "sisyphus",
|
|
2470
|
+
"Sisyphus (Ultraworker)": "sisyphus",
|
|
2471
|
+
sisyphus: "sisyphus",
|
|
2472
|
+
"Hephaestus (Deep Agent)": "hephaestus",
|
|
2473
|
+
"OmO-Plan": "prometheus",
|
|
2474
|
+
"omo-plan": "prometheus",
|
|
2475
|
+
"Planner-Sisyphus": "prometheus",
|
|
2476
|
+
"planner-sisyphus": "prometheus",
|
|
2477
|
+
"Prometheus - Plan Builder": "prometheus",
|
|
2478
|
+
"Prometheus (Plan Builder)": "prometheus",
|
|
2479
|
+
prometheus: "prometheus",
|
|
2480
|
+
"orchestrator-sisyphus": "atlas",
|
|
2481
|
+
Atlas: "atlas",
|
|
2482
|
+
"Atlas (Plan Executor)": "atlas",
|
|
2483
|
+
atlas: "atlas",
|
|
2484
|
+
"plan-consultant": "metis",
|
|
2485
|
+
"Metis - Plan Consultant": "metis",
|
|
2486
|
+
"Metis (Plan Consultant)": "metis",
|
|
2487
|
+
metis: "metis",
|
|
2488
|
+
"Momus - Plan Critic": "momus",
|
|
2489
|
+
"Momus (Plan Critic)": "momus",
|
|
2490
|
+
momus: "momus",
|
|
2491
|
+
"Sisyphus-Junior": "sisyphus-junior",
|
|
2492
|
+
"sisyphus-junior": "sisyphus-junior",
|
|
2493
|
+
build: "build",
|
|
2494
|
+
oracle: "oracle",
|
|
2495
|
+
librarian: "librarian",
|
|
2496
|
+
explore: "explore",
|
|
2497
|
+
"multimodal-looker": "multimodal-looker"
|
|
2498
|
+
};
|
|
2499
|
+
BUILTIN_AGENT_NAMES = new Set([
|
|
2500
|
+
"sisyphus",
|
|
2501
|
+
"oracle",
|
|
2502
|
+
"librarian",
|
|
2503
|
+
"explore",
|
|
2504
|
+
"multimodal-looker",
|
|
2505
|
+
"metis",
|
|
2506
|
+
"momus",
|
|
2507
|
+
"prometheus",
|
|
2508
|
+
"atlas",
|
|
2509
|
+
"build"
|
|
2510
|
+
]);
|
|
2511
|
+
});
|
|
2512
|
+
|
|
2463
2513
|
// packages/utils/src/migration/agent-category.ts
|
|
2464
2514
|
function configureMigrationCategoryDefaults(defaults) {
|
|
2465
2515
|
categoryDefaults = defaults ?? {};
|
|
@@ -3570,10 +3620,11 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3570
3620
|
},
|
|
3571
3621
|
{ providers: ["xiaomi", "opencode-go"], model: "mimo-v2.6-pro", variant: "max" },
|
|
3572
3622
|
{ providers: ["xai", "github-copilot", "opencode-go"], model: "grok-4.7", variant: "xhigh" },
|
|
3623
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6.1-sol", variant: "medium" },
|
|
3573
3624
|
{
|
|
3574
3625
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
3575
|
-
model: "gpt-5.6-
|
|
3576
|
-
variant: "
|
|
3626
|
+
model: "gpt-5.6-sol",
|
|
3627
|
+
variant: "medium"
|
|
3577
3628
|
},
|
|
3578
3629
|
{
|
|
3579
3630
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
@@ -5386,6 +5437,7 @@ var init_constants = __esm(() => {
|
|
|
5386
5437
|
var init_migration2 = __esm(() => {
|
|
5387
5438
|
init_agent_category();
|
|
5388
5439
|
init_constants();
|
|
5440
|
+
init_agent_names();
|
|
5389
5441
|
configureMigrationCategoryDefaults(DEFAULT_CATEGORIES);
|
|
5390
5442
|
});
|
|
5391
5443
|
|
|
@@ -70061,7 +70113,8 @@ var init_memory = __esm(() => {
|
|
|
70061
70113
|
}).strict();
|
|
70062
70114
|
OmoMemoryFactsSchema = object({
|
|
70063
70115
|
enabled: boolean2().default(true),
|
|
70064
|
-
debounce_settles: number2().int().min(1).default(4)
|
|
70116
|
+
debounce_settles: number2().int().min(1).default(4),
|
|
70117
|
+
model: string2().min(1).optional()
|
|
70065
70118
|
}).strict();
|
|
70066
70119
|
OmoMemoryDreamSchema = object({
|
|
70067
70120
|
enabled: boolean2().default(true),
|
|
@@ -70123,7 +70176,8 @@ var init_memory = __esm(() => {
|
|
|
70123
70176
|
}).strict();
|
|
70124
70177
|
OmoMemoryFactsLayerSchema = object({
|
|
70125
70178
|
enabled: boolean2().optional(),
|
|
70126
|
-
debounce_settles: number2().int().min(1).optional()
|
|
70179
|
+
debounce_settles: number2().int().min(1).optional(),
|
|
70180
|
+
model: string2().min(1).optional()
|
|
70127
70181
|
}).strict();
|
|
70128
70182
|
OmoMemoryDreamLayerSchema = object({
|
|
70129
70183
|
enabled: boolean2().optional(),
|
|
@@ -72166,7 +72220,7 @@ function findUnknownKeyPaths(schema, value) {
|
|
|
72166
72220
|
|
|
72167
72221
|
// packages/omo-opencode/src/config/schema/agent-names.ts
|
|
72168
72222
|
var BuiltinAgentNameSchema, BuiltinSkillNameSchema, OverridableAgentNameSchema;
|
|
72169
|
-
var
|
|
72223
|
+
var init_agent_names2 = __esm(() => {
|
|
72170
72224
|
init_zod();
|
|
72171
72225
|
BuiltinAgentNameSchema = _enum([
|
|
72172
72226
|
"sisyphus",
|
|
@@ -72990,7 +73044,7 @@ var init_oh_my_opencode_config = __esm(() => {
|
|
|
72990
73044
|
// packages/omo-opencode/src/config/schema.ts
|
|
72991
73045
|
var init_schema2 = __esm(() => {
|
|
72992
73046
|
init_types6();
|
|
72993
|
-
|
|
73047
|
+
init_agent_names2();
|
|
72994
73048
|
init_agent_overrides();
|
|
72995
73049
|
init_babysitting();
|
|
72996
73050
|
init_background_task();
|
|
@@ -73418,6 +73472,14 @@ var init_model_resolution = __esm(() => {
|
|
|
73418
73472
|
init_model_resolution_details();
|
|
73419
73473
|
});
|
|
73420
73474
|
|
|
73475
|
+
// packages/omo-opencode/src/shared/disabled-agents.ts
|
|
73476
|
+
function migrateDisabledAgents(disabledAgents) {
|
|
73477
|
+
return (disabledAgents ?? []).map((agent) => AGENT_NAME_MAP[agent.toLowerCase()] ?? AGENT_NAME_MAP[agent] ?? agent);
|
|
73478
|
+
}
|
|
73479
|
+
var init_disabled_agents = __esm(() => {
|
|
73480
|
+
init_migration2();
|
|
73481
|
+
});
|
|
73482
|
+
|
|
73421
73483
|
// packages/omo-opencode/src/features/tui-sidebar/roster-resolver.ts
|
|
73422
73484
|
function formatModelLabel(model) {
|
|
73423
73485
|
const slashIndex = model.lastIndexOf("/");
|
|
@@ -73466,8 +73528,12 @@ function toModelResolutionConfig(config) {
|
|
|
73466
73528
|
function resolveRoster(directory) {
|
|
73467
73529
|
try {
|
|
73468
73530
|
const config = validatePluginConfig(directory).config;
|
|
73531
|
+
const disabledAgents = new Set(migrateDisabledAgents(config.disabled_agents).map((agent) => agent.toLowerCase()));
|
|
73469
73532
|
const resolution = getModelResolutionInfoWithOverrides(toModelResolutionConfig(config));
|
|
73470
|
-
return [
|
|
73533
|
+
return [
|
|
73534
|
+
...resolution.agents.filter((entry) => !disabledAgents.has(entry.name.toLowerCase())),
|
|
73535
|
+
...resolution.categories
|
|
73536
|
+
].map(toRosterRow).sort((left, right) => left.label.localeCompare(right.label));
|
|
73471
73537
|
} catch (error) {
|
|
73472
73538
|
if (error instanceof Error) {
|
|
73473
73539
|
return [];
|
|
@@ -73478,6 +73544,7 @@ function resolveRoster(directory) {
|
|
|
73478
73544
|
var init_roster_resolver = __esm(() => {
|
|
73479
73545
|
init_model_resolution();
|
|
73480
73546
|
init_validate();
|
|
73547
|
+
init_disabled_agents();
|
|
73481
73548
|
});
|
|
73482
73549
|
|
|
73483
73550
|
// packages/omo-opencode/src/features/btw-side/context-injector.ts
|
|
@@ -74909,7 +74976,7 @@ init_shared();
|
|
|
74909
74976
|
// package.json
|
|
74910
74977
|
var package_default = {
|
|
74911
74978
|
name: "oh-my-opencode",
|
|
74912
|
-
version: "5.1.
|
|
74979
|
+
version: "5.1.32",
|
|
74913
74980
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
74914
74981
|
main: "./dist/index.js",
|
|
74915
74982
|
types: "dist/index.d.ts",
|
|
@@ -75086,7 +75153,7 @@ var package_default = {
|
|
|
75086
75153
|
},
|
|
75087
75154
|
devDependencies: {
|
|
75088
75155
|
"@clack/prompts": "^1.8.1",
|
|
75089
|
-
"@code-yeongyu/senpi": "2026.10.
|
|
75156
|
+
"@code-yeongyu/senpi": "2026.10.12",
|
|
75090
75157
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
75091
75158
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
75092
75159
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -75128,6 +75195,7 @@ var package_default = {
|
|
|
75128
75195
|
"@types/js-yaml": "^4.0.9",
|
|
75129
75196
|
"@types/picomatch": "^4.0.3",
|
|
75130
75197
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
75198
|
+
"@typescript/typescript6": "6.0.2",
|
|
75131
75199
|
"@xterm/addon-unicode11": "^0.9.0",
|
|
75132
75200
|
"@xterm/xterm": "^6.0.0",
|
|
75133
75201
|
"bun-types": "1.4.2",
|
|
@@ -75144,18 +75212,18 @@ var package_default = {
|
|
|
75144
75212
|
typescript: "^7.0.2"
|
|
75145
75213
|
},
|
|
75146
75214
|
optionalDependencies: {
|
|
75147
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
75148
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
75149
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
75150
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
75151
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
75152
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
75153
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
75154
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
75155
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
75156
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
75157
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
75158
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
75215
|
+
"oh-my-opencode-darwin-arm64": "5.1.32",
|
|
75216
|
+
"oh-my-opencode-darwin-x64": "5.1.32",
|
|
75217
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.32",
|
|
75218
|
+
"oh-my-opencode-linux-arm64": "5.1.32",
|
|
75219
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.32",
|
|
75220
|
+
"oh-my-opencode-linux-x64": "5.1.32",
|
|
75221
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.32",
|
|
75222
|
+
"oh-my-opencode-linux-x64-musl": "5.1.32",
|
|
75223
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.32",
|
|
75224
|
+
"oh-my-opencode-windows-arm64": "5.1.32",
|
|
75225
|
+
"oh-my-opencode-windows-x64": "5.1.32",
|
|
75226
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.32"
|
|
75159
75227
|
},
|
|
75160
75228
|
overrides: {
|
|
75161
75229
|
hono: "^4.13.8",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.32",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
},
|
|
178
178
|
"devDependencies": {
|
|
179
179
|
"@clack/prompts": "^1.8.1",
|
|
180
|
-
"@code-yeongyu/senpi": "2026.10.
|
|
180
|
+
"@code-yeongyu/senpi": "2026.10.12",
|
|
181
181
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
182
182
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
183
183
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -219,6 +219,7 @@
|
|
|
219
219
|
"@types/js-yaml": "^4.0.9",
|
|
220
220
|
"@types/picomatch": "^4.0.3",
|
|
221
221
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
222
|
+
"@typescript/typescript6": "6.0.2",
|
|
222
223
|
"@xterm/addon-unicode11": "^0.9.0",
|
|
223
224
|
"@xterm/xterm": "^6.0.0",
|
|
224
225
|
"bun-types": "1.4.2",
|
|
@@ -235,18 +236,18 @@
|
|
|
235
236
|
"typescript": "^7.0.2"
|
|
236
237
|
},
|
|
237
238
|
"optionalDependencies": {
|
|
238
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
239
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
240
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
241
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
242
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
243
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
244
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
245
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
246
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
247
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
248
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
249
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
239
|
+
"oh-my-opencode-darwin-arm64": "5.1.32",
|
|
240
|
+
"oh-my-opencode-darwin-x64": "5.1.32",
|
|
241
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.32",
|
|
242
|
+
"oh-my-opencode-linux-arm64": "5.1.32",
|
|
243
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.32",
|
|
244
|
+
"oh-my-opencode-linux-x64": "5.1.32",
|
|
245
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.32",
|
|
246
|
+
"oh-my-opencode-linux-x64-musl": "5.1.32",
|
|
247
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.32",
|
|
248
|
+
"oh-my-opencode-windows-arm64": "5.1.32",
|
|
249
|
+
"oh-my-opencode-windows-x64": "5.1.32",
|
|
250
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.32"
|
|
250
251
|
},
|
|
251
252
|
"overrides": {
|
|
252
253
|
"hono": "^4.13.8",
|
|
@@ -390,7 +390,7 @@ function isKnownNonGitBashLauncher(path) {
|
|
|
390
390
|
}
|
|
391
391
|
function whereCommand(command) {
|
|
392
392
|
try {
|
|
393
|
-
return execFileSync("where", [command], { encoding: "utf8" }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
393
|
+
return execFileSync("where", [command], { encoding: "utf8", windowsHide: true }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
394
394
|
} catch (error) {
|
|
395
395
|
if (error instanceof Error)
|
|
396
396
|
return [];
|
|
@@ -378,4 +378,94 @@ describe("LspClient diagnostics freshness", () => {
|
|
|
378
378
|
expect(second.items).toEqual([diagnostic("cached-full")]);
|
|
379
379
|
});
|
|
380
380
|
|
|
381
|
+
// #9476: the server delays whichever message must come second, so the arrival order at the client
|
|
382
|
+
// is fixed by the fake server instead of scheduler luck. The controlled clock keeps the freshness
|
|
383
|
+
// window from firing: only the matching push publish may resolve the call.
|
|
384
|
+
it("#given the unsupported-pull error response arrives before the matching push publish #when diagnostics run #then the client resolves to that publish", async () => {
|
|
385
|
+
const clock = new ControlledClock();
|
|
386
|
+
const context = await harness.makeClient(
|
|
387
|
+
{
|
|
388
|
+
capabilities: { diagnosticProvider: { interFileDependencies: false, workspaceDiagnostics: false } },
|
|
389
|
+
publishDiagnostics: [
|
|
390
|
+
{
|
|
391
|
+
trigger: "diagnosticRequest",
|
|
392
|
+
version: 1,
|
|
393
|
+
delayMs: 150,
|
|
394
|
+
diagnostics: [diagnostic("error-first")],
|
|
395
|
+
awaitClientDelivery: true,
|
|
396
|
+
},
|
|
397
|
+
],
|
|
398
|
+
diagnosticResponses: [{ error: { code: -32601, message: "Method not found" } }],
|
|
399
|
+
},
|
|
400
|
+
{ diagnosticsFreshnessTimeoutMs: 500, versionlessPublishQuiescenceMs: 5, timerProvider: clock },
|
|
401
|
+
);
|
|
402
|
+
|
|
403
|
+
const result = await context.client.diagnostics(context.source);
|
|
404
|
+
|
|
405
|
+
expect(result.items).toEqual([diagnostic("error-first")]);
|
|
406
|
+
expect(result.transientError).toBeUndefined();
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
it("#given the matching push publish arrives before the unsupported-pull error response #when diagnostics run #then the client resolves to that publish", async () => {
|
|
410
|
+
const clock = new ControlledClock();
|
|
411
|
+
const context = await harness.makeClient(
|
|
412
|
+
{
|
|
413
|
+
capabilities: { diagnosticProvider: { interFileDependencies: false, workspaceDiagnostics: false } },
|
|
414
|
+
publishDiagnostics: [
|
|
415
|
+
{
|
|
416
|
+
trigger: "diagnosticRequest",
|
|
417
|
+
version: 1,
|
|
418
|
+
diagnostics: [diagnostic("publish-first")],
|
|
419
|
+
awaitClientDelivery: true,
|
|
420
|
+
},
|
|
421
|
+
],
|
|
422
|
+
diagnosticResponses: [{ delayMs: 150, error: { code: -32601, message: "Method not found" } }],
|
|
423
|
+
},
|
|
424
|
+
{ diagnosticsFreshnessTimeoutMs: 500, versionlessPublishQuiescenceMs: 5, timerProvider: clock },
|
|
425
|
+
);
|
|
426
|
+
|
|
427
|
+
const result = await context.client.diagnostics(context.source);
|
|
428
|
+
|
|
429
|
+
expect(result.items).toEqual([diagnostic("publish-first")]);
|
|
430
|
+
expect(result.transientError).toBeUndefined();
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
it("#given the matching push publish arrived while the pull was in flight and the freshness window elapsed before the unsupported-pull error response #when diagnostics run #then the client resolves to that publish instead of clean", async () => {
|
|
434
|
+
const clock = new ControlledClock();
|
|
435
|
+
let skewMs = 0;
|
|
436
|
+
const skewedClock = {
|
|
437
|
+
now: () => clock.now() + skewMs,
|
|
438
|
+
setTimeout: clock.setTimeout,
|
|
439
|
+
clearTimeout: clock.clearTimeout,
|
|
440
|
+
};
|
|
441
|
+
const context = await harness.makeClient(
|
|
442
|
+
{
|
|
443
|
+
capabilities: { diagnosticProvider: { interFileDependencies: false, workspaceDiagnostics: false } },
|
|
444
|
+
publishDiagnostics: [
|
|
445
|
+
{
|
|
446
|
+
trigger: "diagnosticRequest",
|
|
447
|
+
version: 1,
|
|
448
|
+
diagnostics: [diagnostic("publish-before-deadline")],
|
|
449
|
+
awaitClientDelivery: true,
|
|
450
|
+
},
|
|
451
|
+
],
|
|
452
|
+
diagnosticResponses: [{ delayMs: 150, error: { code: -32601, message: "Method not found" } }],
|
|
453
|
+
},
|
|
454
|
+
{ diagnosticsFreshnessTimeoutMs: 500, versionlessPublishQuiescenceMs: 5, timerProvider: skewedClock },
|
|
455
|
+
);
|
|
456
|
+
|
|
457
|
+
const pending = context.client.diagnostics(context.source);
|
|
458
|
+
await waitForEventCountBySubscription(
|
|
459
|
+
context.events,
|
|
460
|
+
(event) => event.type === "clientResponse" && event.method === "workspace/configuration",
|
|
461
|
+
1,
|
|
462
|
+
);
|
|
463
|
+
// The publish is recorded; the freshness window now elapses before the error response lands.
|
|
464
|
+
skewMs = 500;
|
|
465
|
+
const result = await pending;
|
|
466
|
+
|
|
467
|
+
expect(result.items).toEqual([diagnostic("publish-before-deadline")]);
|
|
468
|
+
expect(result.transientError).toBeUndefined();
|
|
469
|
+
});
|
|
470
|
+
|
|
381
471
|
});
|
|
@@ -253,7 +253,9 @@ export class LspClient extends LspClientConnection {
|
|
|
253
253
|
} catch (error) {
|
|
254
254
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
255
255
|
this.setDiagnosticPullSupported(false);
|
|
256
|
-
|
|
256
|
+
// A publish may have landed while the pull was in flight. Re-capture the
|
|
257
|
+
// snapshot and re-resolve push state instead of deciding on the stale ones.
|
|
258
|
+
continue;
|
|
257
259
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
258
260
|
pushFallbackOnly = true;
|
|
259
261
|
} else {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdtempSync, readFileSync, rmSync, watch, writeFileSync } from "node:fs";
|
|
1
|
+
import { mkdtempSync, readFileSync, realpathSync, rmSync, watch, writeFileSync } from "node:fs";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -71,7 +71,10 @@ export function createWorkspaceEditTestHarness() {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
function createFixture(scenario: Record<string, unknown>, tempDirectories: string[]) {
|
|
74
|
-
|
|
74
|
+
// The fixture server echoes URIs built from the canonical temp path, so the client root must be
|
|
75
|
+
// canonical too. On macOS tmpdir() is a /var -> /private/var symlink; without realpath the
|
|
76
|
+
// publishes target a document the client never opened (#9476).
|
|
77
|
+
const workspace = mkdtempSync(join(realpathSync(tmpdir()), "lsp-apply-edit-"));
|
|
75
78
|
tempDirectories.push(workspace);
|
|
76
79
|
const source = join(workspace, "source.ts");
|
|
77
80
|
const destination = join(workspace, "destination.ts");
|
|
@@ -3579,7 +3579,7 @@ class LspClient extends LspClientConnection {
|
|
|
3579
3579
|
} catch (error) {
|
|
3580
3580
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
3581
3581
|
this.setDiagnosticPullSupported(false);
|
|
3582
|
-
|
|
3582
|
+
continue;
|
|
3583
3583
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
3584
3584
|
pushFallbackOnly = true;
|
|
3585
3585
|
} else {
|
|
@@ -3815,7 +3815,7 @@ class LspClient extends LspClientConnection {
|
|
|
3815
3815
|
} catch (error) {
|
|
3816
3816
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
3817
3817
|
this.setDiagnosticPullSupported(false);
|
|
3818
|
-
|
|
3818
|
+
continue;
|
|
3819
3819
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
3820
3820
|
pushFallbackOnly = true;
|
|
3821
3821
|
} else {
|
|
@@ -2650,7 +2650,7 @@ class LspClient extends LspClientConnection {
|
|
|
2650
2650
|
} catch (error) {
|
|
2651
2651
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
2652
2652
|
this.setDiagnosticPullSupported(false);
|
|
2653
|
-
|
|
2653
|
+
continue;
|
|
2654
2654
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
2655
2655
|
pushFallbackOnly = true;
|
|
2656
2656
|
} else {
|
|
@@ -2655,7 +2655,7 @@ class LspClient extends LspClientConnection {
|
|
|
2655
2655
|
} catch (error) {
|
|
2656
2656
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
2657
2657
|
this.setDiagnosticPullSupported(false);
|
|
2658
|
-
|
|
2658
|
+
continue;
|
|
2659
2659
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
2660
2660
|
pushFallbackOnly = true;
|
|
2661
2661
|
} else {
|
|
@@ -2650,7 +2650,7 @@ class LspClient extends LspClientConnection {
|
|
|
2650
2650
|
} catch (error) {
|
|
2651
2651
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
2652
2652
|
this.setDiagnosticPullSupported(false);
|
|
2653
|
-
|
|
2653
|
+
continue;
|
|
2654
2654
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
2655
2655
|
pushFallbackOnly = true;
|
|
2656
2656
|
} else {
|
|
@@ -3144,7 +3144,7 @@ class LspClient extends LspClientConnection {
|
|
|
3144
3144
|
} catch (error) {
|
|
3145
3145
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
3146
3146
|
this.setDiagnosticPullSupported(false);
|
|
3147
|
-
|
|
3147
|
+
continue;
|
|
3148
3148
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
3149
3149
|
pushFallbackOnly = true;
|
|
3150
3150
|
} else {
|
|
@@ -2832,7 +2832,7 @@ class LspClient extends LspClientConnection {
|
|
|
2832
2832
|
} catch (error) {
|
|
2833
2833
|
if (this.isUnsupportedDiagnosticPullError(error)) {
|
|
2834
2834
|
this.setDiagnosticPullSupported(false);
|
|
2835
|
-
|
|
2835
|
+
continue;
|
|
2836
2836
|
} else if (error instanceof LspRequestTimeoutError) {
|
|
2837
2837
|
pushFallbackOnly = true;
|
|
2838
2838
|
} else {
|
|
@@ -846,7 +846,8 @@ function defaultVersionProbe(binaryPath) {
|
|
|
846
846
|
return String(execFileSync(binaryPath, ["--version"], {
|
|
847
847
|
encoding: "utf8",
|
|
848
848
|
stdio: ["ignore", "pipe", "ignore"],
|
|
849
|
-
timeout: SG_VERSION_PROBE_TIMEOUT_MS
|
|
849
|
+
timeout: SG_VERSION_PROBE_TIMEOUT_MS,
|
|
850
|
+
windowsHide: true
|
|
850
851
|
}));
|
|
851
852
|
}
|
|
852
853
|
function probePasses(binaryPath, deps) {
|
|
@@ -7157,7 +7158,8 @@ var OmoMemoryNudgeSchema = object({
|
|
|
7157
7158
|
}).strict();
|
|
7158
7159
|
var OmoMemoryFactsSchema = object({
|
|
7159
7160
|
enabled: boolean2().default(true),
|
|
7160
|
-
debounce_settles: number2().int().min(1).default(4)
|
|
7161
|
+
debounce_settles: number2().int().min(1).default(4),
|
|
7162
|
+
model: string2().min(1).optional()
|
|
7161
7163
|
}).strict();
|
|
7162
7164
|
var OmoMemoryDreamSchema = object({
|
|
7163
7165
|
enabled: boolean2().default(true),
|
|
@@ -7219,7 +7221,8 @@ var OmoMemoryNudgeLayerSchema = object({
|
|
|
7219
7221
|
}).strict();
|
|
7220
7222
|
var OmoMemoryFactsLayerSchema = object({
|
|
7221
7223
|
enabled: boolean2().optional(),
|
|
7222
|
-
debounce_settles: number2().int().min(1).optional()
|
|
7224
|
+
debounce_settles: number2().int().min(1).optional(),
|
|
7225
|
+
model: string2().min(1).optional()
|
|
7223
7226
|
}).strict();
|
|
7224
7227
|
var OmoMemoryDreamLayerSchema = object({
|
|
7225
7228
|
enabled: boolean2().optional(),
|
|
@@ -12164,7 +12167,7 @@ function isKnownNonGitBashLauncher(path) {
|
|
|
12164
12167
|
}
|
|
12165
12168
|
function whereCommand(command) {
|
|
12166
12169
|
try {
|
|
12167
|
-
return execFileSync2("where", [command], { encoding: "utf8" }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
12170
|
+
return execFileSync2("where", [command], { encoding: "utf8", windowsHide: true }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
12168
12171
|
} catch (error) {
|
|
12169
12172
|
if (error instanceof Error)
|
|
12170
12173
|
return [];
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.32) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.32) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.1.
|
|
23
|
+
"statusMessage": "(OmO 5.1.32) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.32) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -37,11 +37,12 @@ For `code-yeongyu/lazycodex`, create an issue (never a PR) that includes:
|
|
|
37
37
|
|
|
38
38
|
## Required Workflow
|
|
39
39
|
|
|
40
|
-
1. Read the user's bug report and identify the affected surface.
|
|
40
|
+
1. Read the user's bug report and identify the affected surface. Before commands, apply the bundled ultrawork directive’s Task resources and todo rules; read those sections if absent from context.
|
|
41
41
|
2. Invoke `$omo:debugging` for the investigation. If only unqualified skill names are exposed, invoke `$debugging` and state that it is the OMO debugging skill.
|
|
42
42
|
3. Materialize the latest sources under `LAZYCODEX_SOURCE_ROOT="${LAZYCODEX_SOURCE_ROOT:-${TMPDIR:-/tmp}/lazycodex-sources}"`, then decide the target repository. Sync both checkouts on every run and compare them before choosing. Validate cached checkouts before reuse so an incomplete `.git` directory cannot route the fix to the wrong repo:
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
+
# The default checkout cache is per-task under TMPDIR=$RUN_TMP.
|
|
45
46
|
LAZYCODEX_SOURCE_ROOT="${LAZYCODEX_SOURCE_ROOT:-${TMPDIR:-/tmp}/lazycodex-sources}"
|
|
46
47
|
mkdir -p "$LAZYCODEX_SOURCE_ROOT"
|
|
47
48
|
|
|
@@ -86,11 +87,11 @@ sync_latest_source() {
|
|
|
86
87
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
87
88
|
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
88
89
|
```
|
|
89
|
-
4. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits.
|
|
90
|
+
4. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits. Apply those resource rules at clone/worktree creation.
|
|
90
91
|
|
|
91
92
|
```bash
|
|
92
93
|
TARGET_REPO="code-yeongyu/lazycodex" # or openai/codex
|
|
93
|
-
WORK_ROOT="$
|
|
94
|
+
WORK_ROOT="${RUN_TMP:?apply ultrawork Task resources first}"
|
|
94
95
|
gh repo clone "$TARGET_REPO" "$WORK_ROOT/repo" -- --depth=1
|
|
95
96
|
cd "$WORK_ROOT/repo"
|
|
96
97
|
BASE_BRANCH="$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')"
|
|
@@ -152,13 +153,15 @@ git push -u fork "$BRANCH_NAME"
|
|
|
152
153
|
gh pr create --repo openai/codex --base "$BASE_BRANCH" --head "$GH_USER:$BRANCH_NAME" --title "<short fix title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
153
154
|
```
|
|
154
155
|
|
|
155
|
-
13.
|
|
156
|
+
13. Finish cleanup per Task resources. Run this only when that rule permits removing the worktree and run root; otherwise retain them and report the outstanding cleanup todo:
|
|
156
157
|
|
|
157
158
|
```bash
|
|
158
159
|
cd /
|
|
159
160
|
git -C "$WORK_ROOT/repo" worktree remove "$WORK_ROOT/worktree"
|
|
161
|
+
unset TMPDIR NODE_COMPILE_CACHE BUN_RUNTIME_TRANSPILER_CACHE_PATH
|
|
160
162
|
find "$WORK_ROOT" -mindepth 1 -maxdepth 1 -exec rm -r -- {} +
|
|
161
163
|
rmdir "$WORK_ROOT"
|
|
164
|
+
test ! -e "$WORK_ROOT" && printf 'cleanup: worktree and caches REMOVED\n'
|
|
162
165
|
```
|
|
163
166
|
|
|
164
167
|
Return the PR or issue URL, the reproduction command, the verification command, and the cleanup receipt.
|