oh-my-opencode 3.1.3 → 3.1.4
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 +21 -9
- package/dist/config/schema.d.ts +3 -0
- package/dist/index.js +93 -47
- package/dist/tools/delegate-task/timing.d.ts +11 -0
- package/package.json +8 -8
package/dist/cli/index.js
CHANGED
|
@@ -7380,6 +7380,18 @@ function getCachedVersion() {
|
|
|
7380
7380
|
} catch (err) {
|
|
7381
7381
|
log("[auto-update-checker] Failed to resolve version from current directory:", err);
|
|
7382
7382
|
}
|
|
7383
|
+
try {
|
|
7384
|
+
const execDir = path5.dirname(fs3.realpathSync(process.execPath));
|
|
7385
|
+
const pkgPath = findPackageJsonUp(execDir);
|
|
7386
|
+
if (pkgPath) {
|
|
7387
|
+
const content = fs3.readFileSync(pkgPath, "utf-8");
|
|
7388
|
+
const pkg = JSON.parse(content);
|
|
7389
|
+
if (pkg.version)
|
|
7390
|
+
return pkg.version;
|
|
7391
|
+
}
|
|
7392
|
+
} catch (err) {
|
|
7393
|
+
log("[auto-update-checker] Failed to resolve version from execPath:", err);
|
|
7394
|
+
}
|
|
7383
7395
|
return null;
|
|
7384
7396
|
}
|
|
7385
7397
|
function updatePinnedVersion(configPath, oldEntry, newVersion) {
|
|
@@ -8075,7 +8087,7 @@ var import_picocolors2 = __toESM(require_picocolors(), 1);
|
|
|
8075
8087
|
// package.json
|
|
8076
8088
|
var package_default = {
|
|
8077
8089
|
name: "oh-my-opencode",
|
|
8078
|
-
version: "3.1.
|
|
8090
|
+
version: "3.1.4",
|
|
8079
8091
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
8080
8092
|
main: "dist/index.js",
|
|
8081
8093
|
types: "dist/index.d.ts",
|
|
@@ -8148,13 +8160,13 @@ var package_default = {
|
|
|
8148
8160
|
typescript: "^5.7.3"
|
|
8149
8161
|
},
|
|
8150
8162
|
optionalDependencies: {
|
|
8151
|
-
"oh-my-opencode-darwin-arm64": "3.1.
|
|
8152
|
-
"oh-my-opencode-darwin-x64": "3.1.
|
|
8153
|
-
"oh-my-opencode-linux-arm64": "3.1.
|
|
8154
|
-
"oh-my-opencode-linux-arm64-musl": "3.1.
|
|
8155
|
-
"oh-my-opencode-linux-x64": "3.1.
|
|
8156
|
-
"oh-my-opencode-linux-x64-musl": "3.1.
|
|
8157
|
-
"oh-my-opencode-windows-x64": "3.1.
|
|
8163
|
+
"oh-my-opencode-darwin-arm64": "3.1.4",
|
|
8164
|
+
"oh-my-opencode-darwin-x64": "3.1.4",
|
|
8165
|
+
"oh-my-opencode-linux-arm64": "3.1.4",
|
|
8166
|
+
"oh-my-opencode-linux-arm64-musl": "3.1.4",
|
|
8167
|
+
"oh-my-opencode-linux-x64": "3.1.4",
|
|
8168
|
+
"oh-my-opencode-linux-x64-musl": "3.1.4",
|
|
8169
|
+
"oh-my-opencode-windows-x64": "3.1.4"
|
|
8158
8170
|
},
|
|
8159
8171
|
trustedDependencies: [
|
|
8160
8172
|
"@ast-grep/cli",
|
|
@@ -23509,7 +23521,7 @@ var GitMasterConfigSchema = exports_external.object({
|
|
|
23509
23521
|
commit_footer: exports_external.boolean().default(true),
|
|
23510
23522
|
include_co_authored_by: exports_external.boolean().default(true)
|
|
23511
23523
|
});
|
|
23512
|
-
var BrowserAutomationProviderSchema = exports_external.enum(["playwright", "agent-browser"]);
|
|
23524
|
+
var BrowserAutomationProviderSchema = exports_external.enum(["playwright", "agent-browser", "dev-browser"]);
|
|
23513
23525
|
var BrowserAutomationConfigSchema = exports_external.object({
|
|
23514
23526
|
provider: BrowserAutomationProviderSchema.default("playwright")
|
|
23515
23527
|
});
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1280,11 +1280,13 @@ export declare const GitMasterConfigSchema: z.ZodObject<{
|
|
|
1280
1280
|
export declare const BrowserAutomationProviderSchema: z.ZodEnum<{
|
|
1281
1281
|
playwright: "playwright";
|
|
1282
1282
|
"agent-browser": "agent-browser";
|
|
1283
|
+
"dev-browser": "dev-browser";
|
|
1283
1284
|
}>;
|
|
1284
1285
|
export declare const BrowserAutomationConfigSchema: z.ZodObject<{
|
|
1285
1286
|
provider: z.ZodDefault<z.ZodEnum<{
|
|
1286
1287
|
playwright: "playwright";
|
|
1287
1288
|
"agent-browser": "agent-browser";
|
|
1289
|
+
"dev-browser": "dev-browser";
|
|
1288
1290
|
}>>;
|
|
1289
1291
|
}, z.core.$strip>;
|
|
1290
1292
|
export declare const TmuxLayoutSchema: z.ZodEnum<{
|
|
@@ -2430,6 +2432,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
|
|
|
2430
2432
|
provider: z.ZodDefault<z.ZodEnum<{
|
|
2431
2433
|
playwright: "playwright";
|
|
2432
2434
|
"agent-browser": "agent-browser";
|
|
2435
|
+
"dev-browser": "dev-browser";
|
|
2433
2436
|
}>>;
|
|
2434
2437
|
}, z.core.$strip>>;
|
|
2435
2438
|
tmux: z.ZodOptional<z.ZodObject<{
|
package/dist/index.js
CHANGED
|
@@ -5330,25 +5330,24 @@ function resolveModelWithFallback(input) {
|
|
|
5330
5330
|
if (availableModels.size === 0) {
|
|
5331
5331
|
const connectedProviders = readConnectedProvidersCache();
|
|
5332
5332
|
const connectedSet = connectedProviders ? new Set(connectedProviders) : null;
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
model
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
|
|
5333
|
+
if (connectedSet === null) {
|
|
5334
|
+
log("No cache available, skipping fallback chain to use system default");
|
|
5335
|
+
} else {
|
|
5336
|
+
for (const entry of fallbackChain) {
|
|
5337
|
+
for (const provider of entry.providers) {
|
|
5338
|
+
if (connectedSet.has(provider)) {
|
|
5339
|
+
const model = `${provider}/${entry.model}`;
|
|
5340
|
+
log("Model resolved via fallback chain (no model cache, using connected provider)", {
|
|
5341
|
+
provider,
|
|
5342
|
+
model: entry.model,
|
|
5343
|
+
variant: entry.variant
|
|
5344
|
+
});
|
|
5345
|
+
return { model, source: "provider-fallback", variant: entry.variant };
|
|
5346
|
+
}
|
|
5344
5347
|
}
|
|
5345
5348
|
}
|
|
5349
|
+
log("No matching provider in connected cache, falling through to system default");
|
|
5346
5350
|
}
|
|
5347
|
-
const firstEntry = fallbackChain[0];
|
|
5348
|
-
const firstProvider = firstEntry.providers[0];
|
|
5349
|
-
const model = `${firstProvider}/${firstEntry.model}`;
|
|
5350
|
-
log("Model resolved via fallback chain (no cache at all, using first entry)", { provider: firstProvider, model: firstEntry.model, variant: firstEntry.variant });
|
|
5351
|
-
return { model, source: "provider-fallback", variant: firstEntry.variant };
|
|
5352
5351
|
}
|
|
5353
5352
|
for (const entry of fallbackChain) {
|
|
5354
5353
|
for (const provider of entry.providers) {
|
|
@@ -7274,6 +7273,18 @@ function getCachedVersion() {
|
|
|
7274
7273
|
} catch (err) {
|
|
7275
7274
|
log("[auto-update-checker] Failed to resolve version from current directory:", err);
|
|
7276
7275
|
}
|
|
7276
|
+
try {
|
|
7277
|
+
const execDir = path5.dirname(fs7.realpathSync(process.execPath));
|
|
7278
|
+
const pkgPath = findPackageJsonUp(execDir);
|
|
7279
|
+
if (pkgPath) {
|
|
7280
|
+
const content = fs7.readFileSync(pkgPath, "utf-8");
|
|
7281
|
+
const pkg = JSON.parse(content);
|
|
7282
|
+
if (pkg.version)
|
|
7283
|
+
return pkg.version;
|
|
7284
|
+
}
|
|
7285
|
+
} catch (err) {
|
|
7286
|
+
log("[auto-update-checker] Failed to resolve version from execPath:", err);
|
|
7287
|
+
}
|
|
7277
7288
|
return null;
|
|
7278
7289
|
}
|
|
7279
7290
|
function updatePinnedVersion(configPath, oldEntry, newVersion) {
|
|
@@ -43881,10 +43892,32 @@ If the requested information is not found, clearly state what is missing.`;
|
|
|
43881
43892
|
}
|
|
43882
43893
|
// src/tools/delegate-task/tools.ts
|
|
43883
43894
|
init_constants4();
|
|
43884
|
-
init_hook_message_injector();
|
|
43885
43895
|
import { existsSync as existsSync46, readdirSync as readdirSync15 } from "fs";
|
|
43886
43896
|
import { join as join55 } from "path";
|
|
43887
43897
|
|
|
43898
|
+
// src/tools/delegate-task/timing.ts
|
|
43899
|
+
var POLL_INTERVAL_MS = 500;
|
|
43900
|
+
var MIN_STABILITY_TIME_MS = 1e4;
|
|
43901
|
+
var STABILITY_POLLS_REQUIRED = 3;
|
|
43902
|
+
var WAIT_FOR_SESSION_INTERVAL_MS = 100;
|
|
43903
|
+
var WAIT_FOR_SESSION_TIMEOUT_MS = 30000;
|
|
43904
|
+
var MAX_POLL_TIME_MS = 10 * 60 * 1000;
|
|
43905
|
+
var SESSION_CONTINUATION_STABILITY_MS = 5000;
|
|
43906
|
+
function getTimingConfig() {
|
|
43907
|
+
return {
|
|
43908
|
+
POLL_INTERVAL_MS,
|
|
43909
|
+
MIN_STABILITY_TIME_MS,
|
|
43910
|
+
STABILITY_POLLS_REQUIRED,
|
|
43911
|
+
WAIT_FOR_SESSION_INTERVAL_MS,
|
|
43912
|
+
WAIT_FOR_SESSION_TIMEOUT_MS,
|
|
43913
|
+
MAX_POLL_TIME_MS,
|
|
43914
|
+
SESSION_CONTINUATION_STABILITY_MS
|
|
43915
|
+
};
|
|
43916
|
+
}
|
|
43917
|
+
|
|
43918
|
+
// src/tools/delegate-task/tools.ts
|
|
43919
|
+
init_hook_message_injector();
|
|
43920
|
+
|
|
43888
43921
|
// src/features/task-toast-manager/manager.ts
|
|
43889
43922
|
class TaskToastManager {
|
|
43890
43923
|
tasks = new Map;
|
|
@@ -44349,23 +44382,24 @@ Use \`background_output\` with task_id="${task.id}" to check progress.`;
|
|
|
44349
44382
|
|
|
44350
44383
|
Session ID: ${args.session_id}`;
|
|
44351
44384
|
}
|
|
44352
|
-
const
|
|
44353
|
-
const
|
|
44354
|
-
const
|
|
44385
|
+
const timing = getTimingConfig();
|
|
44386
|
+
const POLL_INTERVAL_MS2 = timing.POLL_INTERVAL_MS;
|
|
44387
|
+
const MIN_STABILITY_TIME_MS2 = timing.SESSION_CONTINUATION_STABILITY_MS;
|
|
44388
|
+
const STABILITY_POLLS_REQUIRED2 = timing.STABILITY_POLLS_REQUIRED;
|
|
44355
44389
|
const pollStart = Date.now();
|
|
44356
44390
|
let lastMsgCount = 0;
|
|
44357
44391
|
let stablePolls = 0;
|
|
44358
44392
|
while (Date.now() - pollStart < 60000) {
|
|
44359
|
-
await new Promise((resolve10) => setTimeout(resolve10,
|
|
44393
|
+
await new Promise((resolve10) => setTimeout(resolve10, POLL_INTERVAL_MS2));
|
|
44360
44394
|
const elapsed = Date.now() - pollStart;
|
|
44361
|
-
if (elapsed <
|
|
44395
|
+
if (elapsed < MIN_STABILITY_TIME_MS2)
|
|
44362
44396
|
continue;
|
|
44363
44397
|
const messagesCheck = await client2.session.messages({ path: { id: args.session_id } });
|
|
44364
44398
|
const msgs = messagesCheck.data ?? messagesCheck;
|
|
44365
44399
|
const currentMsgCount = msgs.length;
|
|
44366
44400
|
if (currentMsgCount > 0 && currentMsgCount === lastMsgCount) {
|
|
44367
44401
|
stablePolls++;
|
|
44368
|
-
if (stablePolls >=
|
|
44402
|
+
if (stablePolls >= STABILITY_POLLS_REQUIRED2)
|
|
44369
44403
|
break;
|
|
44370
44404
|
} else {
|
|
44371
44405
|
stablePolls = 0;
|
|
@@ -44522,16 +44556,16 @@ Available categories: ${categoryNames2.join(", ")}`;
|
|
|
44522
44556
|
skills: args.load_skills.length > 0 ? args.load_skills : undefined,
|
|
44523
44557
|
skillContent: systemContent2
|
|
44524
44558
|
});
|
|
44525
|
-
const
|
|
44526
|
-
const
|
|
44559
|
+
const WAIT_FOR_SESSION_INTERVAL_MS2 = 100;
|
|
44560
|
+
const WAIT_FOR_SESSION_TIMEOUT_MS2 = 30000;
|
|
44527
44561
|
const waitStart = Date.now();
|
|
44528
|
-
while (!task.sessionID && Date.now() - waitStart <
|
|
44562
|
+
while (!task.sessionID && Date.now() - waitStart < WAIT_FOR_SESSION_TIMEOUT_MS2) {
|
|
44529
44563
|
if (ctx.abort?.aborted) {
|
|
44530
44564
|
return `Task aborted while waiting for session to start.
|
|
44531
44565
|
|
|
44532
44566
|
Task ID: ${task.id}`;
|
|
44533
44567
|
}
|
|
44534
|
-
await new Promise((resolve10) => setTimeout(resolve10,
|
|
44568
|
+
await new Promise((resolve10) => setTimeout(resolve10, WAIT_FOR_SESSION_INTERVAL_MS2));
|
|
44535
44569
|
}
|
|
44536
44570
|
const sessionID = task.sessionID;
|
|
44537
44571
|
if (!sessionID) {
|
|
@@ -44556,20 +44590,21 @@ Task ID: ${task.id}`;
|
|
|
44556
44590
|
}
|
|
44557
44591
|
});
|
|
44558
44592
|
const startTime = new Date;
|
|
44559
|
-
const
|
|
44560
|
-
const
|
|
44561
|
-
const
|
|
44562
|
-
const
|
|
44593
|
+
const timingCfg = getTimingConfig();
|
|
44594
|
+
const POLL_INTERVAL_MS2 = timingCfg.POLL_INTERVAL_MS;
|
|
44595
|
+
const MAX_POLL_TIME_MS2 = timingCfg.MAX_POLL_TIME_MS;
|
|
44596
|
+
const MIN_STABILITY_TIME_MS2 = timingCfg.MIN_STABILITY_TIME_MS;
|
|
44597
|
+
const STABILITY_POLLS_REQUIRED2 = timingCfg.STABILITY_POLLS_REQUIRED;
|
|
44563
44598
|
const pollStart = Date.now();
|
|
44564
44599
|
let lastMsgCount = 0;
|
|
44565
44600
|
let stablePolls = 0;
|
|
44566
|
-
while (Date.now() - pollStart <
|
|
44601
|
+
while (Date.now() - pollStart < MAX_POLL_TIME_MS2) {
|
|
44567
44602
|
if (ctx.abort?.aborted) {
|
|
44568
44603
|
return `Task aborted (was running in background mode).
|
|
44569
44604
|
|
|
44570
44605
|
Session ID: ${sessionID}`;
|
|
44571
44606
|
}
|
|
44572
|
-
await new Promise((resolve10) => setTimeout(resolve10,
|
|
44607
|
+
await new Promise((resolve10) => setTimeout(resolve10, POLL_INTERVAL_MS2));
|
|
44573
44608
|
const statusResult = await client2.session.status();
|
|
44574
44609
|
const allStatuses = statusResult.data ?? {};
|
|
44575
44610
|
const sessionStatus = allStatuses[sessionID];
|
|
@@ -44578,14 +44613,14 @@ Session ID: ${sessionID}`;
|
|
|
44578
44613
|
lastMsgCount = 0;
|
|
44579
44614
|
continue;
|
|
44580
44615
|
}
|
|
44581
|
-
if (Date.now() - pollStart <
|
|
44616
|
+
if (Date.now() - pollStart < MIN_STABILITY_TIME_MS2)
|
|
44582
44617
|
continue;
|
|
44583
44618
|
const messagesCheck = await client2.session.messages({ path: { id: sessionID } });
|
|
44584
44619
|
const msgs = messagesCheck.data ?? messagesCheck;
|
|
44585
44620
|
const currentMsgCount = msgs.length;
|
|
44586
44621
|
if (currentMsgCount === lastMsgCount) {
|
|
44587
44622
|
stablePolls++;
|
|
44588
|
-
if (stablePolls >=
|
|
44623
|
+
if (stablePolls >= STABILITY_POLLS_REQUIRED2)
|
|
44589
44624
|
break;
|
|
44590
44625
|
} else {
|
|
44591
44626
|
stablePolls = 0;
|
|
@@ -44812,16 +44847,17 @@ To continue this session: session_id="${task.sessionID}"`;
|
|
|
44812
44847
|
category: args.category
|
|
44813
44848
|
});
|
|
44814
44849
|
}
|
|
44815
|
-
const
|
|
44816
|
-
const
|
|
44817
|
-
const
|
|
44818
|
-
const
|
|
44850
|
+
const syncTiming = getTimingConfig();
|
|
44851
|
+
const POLL_INTERVAL_MS2 = syncTiming.POLL_INTERVAL_MS;
|
|
44852
|
+
const MAX_POLL_TIME_MS2 = syncTiming.MAX_POLL_TIME_MS;
|
|
44853
|
+
const MIN_STABILITY_TIME_MS2 = syncTiming.MIN_STABILITY_TIME_MS;
|
|
44854
|
+
const STABILITY_POLLS_REQUIRED2 = syncTiming.STABILITY_POLLS_REQUIRED;
|
|
44819
44855
|
const pollStart = Date.now();
|
|
44820
44856
|
let lastMsgCount = 0;
|
|
44821
44857
|
let stablePolls = 0;
|
|
44822
44858
|
let pollCount = 0;
|
|
44823
44859
|
log("[delegate_task] Starting poll loop", { sessionID, agentToUse });
|
|
44824
|
-
while (Date.now() - pollStart <
|
|
44860
|
+
while (Date.now() - pollStart < MAX_POLL_TIME_MS2) {
|
|
44825
44861
|
if (ctx.abort?.aborted) {
|
|
44826
44862
|
log("[delegate_task] Aborted by user", { sessionID });
|
|
44827
44863
|
if (toastManager && taskId)
|
|
@@ -44830,7 +44866,7 @@ To continue this session: session_id="${task.sessionID}"`;
|
|
|
44830
44866
|
|
|
44831
44867
|
Session ID: ${sessionID}`;
|
|
44832
44868
|
}
|
|
44833
|
-
await new Promise((resolve10) => setTimeout(resolve10,
|
|
44869
|
+
await new Promise((resolve10) => setTimeout(resolve10, POLL_INTERVAL_MS2));
|
|
44834
44870
|
pollCount++;
|
|
44835
44871
|
const statusResult = await client2.session.status();
|
|
44836
44872
|
const allStatuses = statusResult.data ?? {};
|
|
@@ -44851,7 +44887,7 @@ Session ID: ${sessionID}`;
|
|
|
44851
44887
|
continue;
|
|
44852
44888
|
}
|
|
44853
44889
|
const elapsed = Date.now() - pollStart;
|
|
44854
|
-
if (elapsed <
|
|
44890
|
+
if (elapsed < MIN_STABILITY_TIME_MS2) {
|
|
44855
44891
|
continue;
|
|
44856
44892
|
}
|
|
44857
44893
|
const messagesCheck = await client2.session.messages({ path: { id: sessionID } });
|
|
@@ -44859,7 +44895,7 @@ Session ID: ${sessionID}`;
|
|
|
44859
44895
|
const currentMsgCount = msgs.length;
|
|
44860
44896
|
if (currentMsgCount === lastMsgCount) {
|
|
44861
44897
|
stablePolls++;
|
|
44862
|
-
if (stablePolls >=
|
|
44898
|
+
if (stablePolls >= STABILITY_POLLS_REQUIRED2) {
|
|
44863
44899
|
log("[delegate_task] Poll complete - messages stable", { sessionID, pollCount, currentMsgCount });
|
|
44864
44900
|
break;
|
|
44865
44901
|
}
|
|
@@ -44868,7 +44904,7 @@ Session ID: ${sessionID}`;
|
|
|
44868
44904
|
lastMsgCount = currentMsgCount;
|
|
44869
44905
|
}
|
|
44870
44906
|
}
|
|
44871
|
-
if (Date.now() - pollStart >=
|
|
44907
|
+
if (Date.now() - pollStart >= MAX_POLL_TIME_MS2) {
|
|
44872
44908
|
log("[delegate_task] Poll timeout reached", { sessionID, pollCount, lastMsgCount, stablePolls });
|
|
44873
44909
|
}
|
|
44874
44910
|
const messagesResult = await client2.session.messages({
|
|
@@ -45054,7 +45090,7 @@ init_hook_message_injector();
|
|
|
45054
45090
|
import { existsSync as existsSync47, readdirSync as readdirSync16 } from "fs";
|
|
45055
45091
|
import { join as join56 } from "path";
|
|
45056
45092
|
var TASK_TTL_MS = 30 * 60 * 1000;
|
|
45057
|
-
var
|
|
45093
|
+
var MIN_STABILITY_TIME_MS2 = 10 * 1000;
|
|
45058
45094
|
var DEFAULT_STALE_TIMEOUT_MS = 180000;
|
|
45059
45095
|
var MIN_RUNTIME_BEFORE_STALE_MS = 30000;
|
|
45060
45096
|
|
|
@@ -45994,7 +46030,7 @@ Use \`background_output(task_id="${task.id}")\` to retrieve this result when rea
|
|
|
45994
46030
|
if (!startedAt)
|
|
45995
46031
|
continue;
|
|
45996
46032
|
const elapsedMs = Date.now() - startedAt.getTime();
|
|
45997
|
-
if (elapsedMs >=
|
|
46033
|
+
if (elapsedMs >= MIN_STABILITY_TIME_MS2) {
|
|
45998
46034
|
if (task.lastMsgCount === currentMsgCount) {
|
|
45999
46035
|
task.stablePolls = (task.stablePolls ?? 0) + 1;
|
|
46000
46036
|
if (task.stablePolls >= 3) {
|
|
@@ -51233,7 +51269,7 @@ var GitMasterConfigSchema = exports_external.object({
|
|
|
51233
51269
|
commit_footer: exports_external.boolean().default(true),
|
|
51234
51270
|
include_co_authored_by: exports_external.boolean().default(true)
|
|
51235
51271
|
});
|
|
51236
|
-
var BrowserAutomationProviderSchema = exports_external.enum(["playwright", "agent-browser"]);
|
|
51272
|
+
var BrowserAutomationProviderSchema = exports_external.enum(["playwright", "agent-browser", "dev-browser"]);
|
|
51237
51273
|
var BrowserAutomationConfigSchema = exports_external.object({
|
|
51238
51274
|
provider: BrowserAutomationProviderSchema.default("playwright")
|
|
51239
51275
|
});
|
|
@@ -56429,6 +56465,16 @@ var OhMyOpenCodePlugin = async (ctx) => {
|
|
|
56429
56465
|
await claudeCodeHooks["chat.message"]?.(input, output);
|
|
56430
56466
|
await autoSlashCommand?.["chat.message"]?.(input, output);
|
|
56431
56467
|
await startWork?.["chat.message"]?.(input, output);
|
|
56468
|
+
if (!hasConnectedProvidersCache()) {
|
|
56469
|
+
ctx.client.tui.showToast({
|
|
56470
|
+
body: {
|
|
56471
|
+
title: "\u26A0\uFE0F Provider Cache Missing",
|
|
56472
|
+
message: "Model filtering disabled. RESTART OpenCode to enable full functionality.",
|
|
56473
|
+
variant: "warning",
|
|
56474
|
+
duration: 6000
|
|
56475
|
+
}
|
|
56476
|
+
}).catch(() => {});
|
|
56477
|
+
}
|
|
56432
56478
|
if (ralphLoop) {
|
|
56433
56479
|
const parts = output.parts;
|
|
56434
56480
|
const promptText = parts?.filter((p) => p.type === "text" && p.text).map((p) => p.text).join(`
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function getTimingConfig(): {
|
|
2
|
+
POLL_INTERVAL_MS: number;
|
|
3
|
+
MIN_STABILITY_TIME_MS: number;
|
|
4
|
+
STABILITY_POLLS_REQUIRED: number;
|
|
5
|
+
WAIT_FOR_SESSION_INTERVAL_MS: number;
|
|
6
|
+
WAIT_FOR_SESSION_TIMEOUT_MS: number;
|
|
7
|
+
MAX_POLL_TIME_MS: number;
|
|
8
|
+
SESSION_CONTINUATION_STABILITY_MS: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function __resetTimingConfig(): void;
|
|
11
|
+
export declare function __setTimingConfig(overrides: Partial<ReturnType<typeof getTimingConfig>>): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.4",
|
|
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",
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
"typescript": "^5.7.3"
|
|
74
74
|
},
|
|
75
75
|
"optionalDependencies": {
|
|
76
|
-
"oh-my-opencode-darwin-arm64": "3.1.
|
|
77
|
-
"oh-my-opencode-darwin-x64": "3.1.
|
|
78
|
-
"oh-my-opencode-linux-arm64": "3.1.
|
|
79
|
-
"oh-my-opencode-linux-arm64-musl": "3.1.
|
|
80
|
-
"oh-my-opencode-linux-x64": "3.1.
|
|
81
|
-
"oh-my-opencode-linux-x64-musl": "3.1.
|
|
82
|
-
"oh-my-opencode-windows-x64": "3.1.
|
|
76
|
+
"oh-my-opencode-darwin-arm64": "3.1.4",
|
|
77
|
+
"oh-my-opencode-darwin-x64": "3.1.4",
|
|
78
|
+
"oh-my-opencode-linux-arm64": "3.1.4",
|
|
79
|
+
"oh-my-opencode-linux-arm64-musl": "3.1.4",
|
|
80
|
+
"oh-my-opencode-linux-x64": "3.1.4",
|
|
81
|
+
"oh-my-opencode-linux-x64-musl": "3.1.4",
|
|
82
|
+
"oh-my-opencode-windows-x64": "3.1.4"
|
|
83
83
|
},
|
|
84
84
|
"trustedDependencies": [
|
|
85
85
|
"@ast-grep/cli",
|