oh-my-opencode 3.17.0 → 3.17.1

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.
@@ -0,0 +1,8 @@
1
+ import type { SpawnOptions } from "../../shared/spawn-with-windows-hide";
2
+ export interface SpawnWithTimeoutResult {
3
+ stdout: string;
4
+ stderr: string;
5
+ exitCode: number;
6
+ timedOut: boolean;
7
+ }
8
+ export declare function spawnWithTimeout(command: string[], options: SpawnOptions, timeoutMs?: number): Promise<SpawnWithTimeoutResult>;
package/dist/cli/index.js CHANGED
@@ -48590,7 +48590,7 @@ function getAgentDisplayName(configKey) {
48590
48590
  }
48591
48591
  return configKey;
48592
48592
  }
48593
- function getAgentConfigKey(agentName) {
48593
+ function resolveKnownAgentConfigKey(agentName) {
48594
48594
  const lower = stripAgentListSortPrefix(agentName).trim().toLowerCase();
48595
48595
  const reversed = REVERSE_DISPLAY_NAMES[lower];
48596
48596
  if (reversed !== undefined)
@@ -48600,7 +48600,11 @@ function getAgentConfigKey(agentName) {
48600
48600
  return legacy;
48601
48601
  if (AGENT_DISPLAY_NAMES[lower] !== undefined)
48602
48602
  return lower;
48603
- return lower;
48603
+ return;
48604
+ }
48605
+ function getAgentConfigKey(agentName) {
48606
+ const lower = stripAgentListSortPrefix(agentName).trim().toLowerCase();
48607
+ return resolveKnownAgentConfigKey(agentName) ?? lower;
48604
48608
  }
48605
48609
  var AGENT_DISPLAY_NAMES, INVISIBLE_AGENT_CHARACTERS_REGEX, REVERSE_DISPLAY_NAMES, LEGACY_DISPLAY_NAMES;
48606
48610
  var init_agent_display_names = __esm(() => {
@@ -51608,7 +51612,7 @@ var {
51608
51612
  // package.json
51609
51613
  var package_default = {
51610
51614
  name: "oh-my-opencode",
51611
- version: "3.17.0",
51615
+ version: "3.17.1",
51612
51616
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
51613
51617
  main: "./dist/index.js",
51614
51618
  types: "dist/index.d.ts",
@@ -51687,17 +51691,17 @@ var package_default = {
51687
51691
  typescript: "^5.7.3"
51688
51692
  },
51689
51693
  optionalDependencies: {
51690
- "oh-my-opencode-darwin-arm64": "3.17.0",
51691
- "oh-my-opencode-darwin-x64": "3.17.0",
51692
- "oh-my-opencode-darwin-x64-baseline": "3.17.0",
51693
- "oh-my-opencode-linux-arm64": "3.17.0",
51694
- "oh-my-opencode-linux-arm64-musl": "3.17.0",
51695
- "oh-my-opencode-linux-x64": "3.17.0",
51696
- "oh-my-opencode-linux-x64-baseline": "3.17.0",
51697
- "oh-my-opencode-linux-x64-musl": "3.17.0",
51698
- "oh-my-opencode-linux-x64-musl-baseline": "3.17.0",
51699
- "oh-my-opencode-windows-x64": "3.17.0",
51700
- "oh-my-opencode-windows-x64-baseline": "3.17.0"
51694
+ "oh-my-opencode-darwin-arm64": "3.17.1",
51695
+ "oh-my-opencode-darwin-x64": "3.17.1",
51696
+ "oh-my-opencode-darwin-x64-baseline": "3.17.1",
51697
+ "oh-my-opencode-linux-arm64": "3.17.1",
51698
+ "oh-my-opencode-linux-arm64-musl": "3.17.1",
51699
+ "oh-my-opencode-linux-x64": "3.17.1",
51700
+ "oh-my-opencode-linux-x64-baseline": "3.17.1",
51701
+ "oh-my-opencode-linux-x64-musl": "3.17.1",
51702
+ "oh-my-opencode-linux-x64-musl-baseline": "3.17.1",
51703
+ "oh-my-opencode-windows-x64": "3.17.1",
51704
+ "oh-my-opencode-windows-x64-baseline": "3.17.1"
51701
51705
  },
51702
51706
  overrides: {},
51703
51707
  trustedDependencies: [
@@ -56469,7 +56473,20 @@ function getSharedProperties(source) {
56469
56473
  plugin_name: PLUGIN_NAME,
56470
56474
  package_version: package_default.version,
56471
56475
  runtime: "bun",
56472
- source
56476
+ runtime_version: process.versions.bun ?? process.version,
56477
+ source,
56478
+ $os: os3.platform(),
56479
+ $os_version: os3.release(),
56480
+ os_arch: os3.arch(),
56481
+ os_type: os3.type(),
56482
+ cpu_count: os3.cpus().length,
56483
+ cpu_model: os3.cpus()[0]?.model,
56484
+ total_memory_gb: Math.round(os3.totalmem() / 1024 / 1024 / 1024),
56485
+ locale: Intl.DateTimeFormat().resolvedOptions().locale,
56486
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
56487
+ shell: process.env.SHELL,
56488
+ ci: Boolean(process.env.CI),
56489
+ terminal: process.env.TERM_PROGRAM
56473
56490
  };
56474
56491
  }
56475
56492
  function createPostHogClient(source, options) {
@@ -56478,7 +56495,8 @@ function createPostHogClient(source, options) {
56478
56495
  }
56479
56496
  const configuredClient = new PostHog(getPostHogApiKey(), {
56480
56497
  ...options,
56481
- host: getPostHogHost()
56498
+ host: getPostHogHost(),
56499
+ disableGeoip: false
56482
56500
  });
56483
56501
  const sharedProperties = getSharedProperties(source);
56484
56502
  return {
@@ -75372,10 +75390,41 @@ async function getLocalVersion(options = {}) {
75372
75390
  import { existsSync as existsSync31, readFileSync as readFileSync26 } from "fs";
75373
75391
 
75374
75392
  // src/cli/doctor/checks/system-binary.ts
75375
- init_spawn_with_windows_hide();
75376
75393
  import { existsSync as existsSync28 } from "fs";
75377
75394
  import { homedir as homedir5 } from "os";
75378
75395
  import { join as join27 } from "path";
75396
+
75397
+ // src/cli/doctor/spawn-with-timeout.ts
75398
+ init_spawn_with_windows_hide();
75399
+ var DEFAULT_SPAWN_TIMEOUT_MS = 1e4;
75400
+ async function spawnWithTimeout(command, options, timeoutMs = DEFAULT_SPAWN_TIMEOUT_MS) {
75401
+ let proc;
75402
+ try {
75403
+ proc = spawnWithWindowsHide(command, options);
75404
+ } catch {
75405
+ return { stdout: "", stderr: "", exitCode: 1, timedOut: false };
75406
+ }
75407
+ let timer;
75408
+ const timeoutPromise = new Promise((resolve2) => {
75409
+ timer = setTimeout(() => resolve2("timeout"), timeoutMs);
75410
+ });
75411
+ const processPromise = (async () => {
75412
+ await proc.exited;
75413
+ return "done";
75414
+ })();
75415
+ const race = await Promise.race([processPromise, timeoutPromise]);
75416
+ if (race === "timeout") {
75417
+ proc.kill("SIGTERM");
75418
+ await proc.exited.catch(() => {});
75419
+ return { stdout: "", stderr: "", exitCode: 1, timedOut: true };
75420
+ }
75421
+ clearTimeout(timer);
75422
+ const stdout = proc.stdout ? await new Response(proc.stdout).text() : "";
75423
+ const stderr = proc.stderr ? await new Response(proc.stderr).text() : "";
75424
+ return { stdout, stderr, exitCode: proc.exitCode ?? 1, timedOut: false };
75425
+ }
75426
+
75427
+ // src/cli/doctor/checks/system-binary.ts
75379
75428
  function getDesktopAppPaths(platform) {
75380
75429
  const home = homedir5();
75381
75430
  switch (platform) {
@@ -75433,12 +75482,10 @@ async function findOpenCodeBinary() {
75433
75482
  async function getOpenCodeVersion3(binaryPath, platform = process.platform) {
75434
75483
  try {
75435
75484
  const command = buildVersionCommand(binaryPath, platform);
75436
- const processResult = spawnWithWindowsHide(command, { stdout: "pipe", stderr: "pipe" });
75437
- const output = await new Response(processResult.stdout).text();
75438
- await processResult.exited;
75439
- if (processResult.exitCode !== 0)
75485
+ const result = await spawnWithTimeout(command, { stdout: "pipe", stderr: "pipe" });
75486
+ if (result.timedOut || result.exitCode !== 0)
75440
75487
  return null;
75441
- return output.trim() || null;
75488
+ return result.stdout.trim() || null;
75442
75489
  } catch {
75443
75490
  return null;
75444
75491
  }
@@ -76196,7 +76243,6 @@ async function checkConfig() {
76196
76243
  }
76197
76244
 
76198
76245
  // src/cli/doctor/checks/dependencies.ts
76199
- init_spawn_with_windows_hide();
76200
76246
  import { existsSync as existsSync33 } from "fs";
76201
76247
  import { createRequire } from "module";
76202
76248
  import { dirname as dirname13, join as join33 } from "path";
@@ -76211,15 +76257,14 @@ async function checkBinaryExists(binary2) {
76211
76257
  }
76212
76258
  async function getBinaryVersion(binary2) {
76213
76259
  try {
76214
- const proc = spawnWithWindowsHide([binary2, "--version"], { stdout: "pipe", stderr: "pipe" });
76215
- const output = await new Response(proc.stdout).text();
76216
- await proc.exited;
76217
- if (proc.exitCode === 0) {
76218
- return output.trim().split(`
76219
- `)[0];
76220
- }
76221
- } catch {}
76222
- return null;
76260
+ const result = await spawnWithTimeout([binary2, "--version"], { stdout: "pipe", stderr: "pipe" });
76261
+ if (result.timedOut || result.exitCode !== 0)
76262
+ return null;
76263
+ return result.stdout.trim().split(`
76264
+ `)[0] ?? null;
76265
+ } catch {
76266
+ return null;
76267
+ }
76223
76268
  }
76224
76269
  async function checkAstGrepCli() {
76225
76270
  const binaryCheck = await checkBinaryExists("sg");
@@ -76318,7 +76363,6 @@ async function checkCommentChecker() {
76318
76363
  }
76319
76364
 
76320
76365
  // src/cli/doctor/checks/tools-gh.ts
76321
- init_spawn_with_windows_hide();
76322
76366
  async function checkBinaryExists2(binary2) {
76323
76367
  try {
76324
76368
  const binaryPath = Bun.which(binary2);
@@ -76329,13 +76373,11 @@ async function checkBinaryExists2(binary2) {
76329
76373
  }
76330
76374
  async function getGhVersion() {
76331
76375
  try {
76332
- const processResult = spawnWithWindowsHide(["gh", "--version"], { stdout: "pipe", stderr: "pipe" });
76333
- const output = await new Response(processResult.stdout).text();
76334
- await processResult.exited;
76335
- if (processResult.exitCode !== 0)
76376
+ const result = await spawnWithTimeout(["gh", "--version"], { stdout: "pipe", stderr: "pipe" });
76377
+ if (result.timedOut || result.exitCode !== 0)
76336
76378
  return null;
76337
- const matchedVersion = output.match(/gh version (\S+)/);
76338
- return matchedVersion?.[1] ?? output.trim().split(`
76379
+ const matchedVersion = result.stdout.match(/gh version (\S+)/);
76380
+ return matchedVersion?.[1] ?? result.stdout.trim().split(`
76339
76381
  `)[0] ?? null;
76340
76382
  } catch {
76341
76383
  return null;
@@ -76343,16 +76385,12 @@ async function getGhVersion() {
76343
76385
  }
76344
76386
  async function getGhAuthStatus() {
76345
76387
  try {
76346
- const processResult = spawnWithWindowsHide(["gh", "auth", "status"], {
76347
- stdout: "pipe",
76348
- stderr: "pipe",
76349
- env: { ...process.env, GH_NO_UPDATE_NOTIFIER: "1" }
76350
- });
76351
- const stdout = await new Response(processResult.stdout).text();
76352
- const stderr = await new Response(processResult.stderr).text();
76353
- await processResult.exited;
76354
- const output = stderr || stdout;
76355
- if (processResult.exitCode === 0) {
76388
+ const result = await spawnWithTimeout(["gh", "auth", "status"], { stdout: "pipe", stderr: "pipe", env: { ...process.env, GH_NO_UPDATE_NOTIFIER: "1" } });
76389
+ if (result.timedOut) {
76390
+ return { authenticated: false, username: null, scopes: [], error: "gh auth status timed out" };
76391
+ }
76392
+ const output = result.stderr || result.stdout;
76393
+ if (result.exitCode === 0) {
76356
76394
  const usernameMatch = output.match(/Logged in to github\.com account (\S+)/);
76357
76395
  const scopesMatch = output.match(/Token scopes?:\s*(.+)/i);
76358
76396
  return {
@@ -77025,6 +77063,14 @@ function formatJsonOutput2(result) {
77025
77063
  }
77026
77064
 
77027
77065
  // src/cli/doctor/runner.ts
77066
+ var DOCTOR_TIMEOUT_MS = 30000;
77067
+
77068
+ class DoctorTimeoutError extends Error {
77069
+ constructor() {
77070
+ super("Doctor timed out");
77071
+ this.name = "DoctorTimeoutError";
77072
+ }
77073
+ }
77028
77074
  async function runCheck(check2) {
77029
77075
  const start = performance.now();
77030
77076
  try {
@@ -77054,14 +77100,49 @@ function calculateSummary(results, duration3) {
77054
77100
  function determineExitCode(results) {
77055
77101
  return results.some((r2) => r2.status === "fail") ? EXIT_CODES.FAILURE : EXIT_CODES.SUCCESS;
77056
77102
  }
77103
+ function buildTimeoutResult(start, options) {
77104
+ const timeoutResult = {
77105
+ results: [{ name: "Timeout", status: "fail", message: "Doctor timed out after 30s", issues: [{ title: "Doctor timeout", description: "Checks did not complete within 30s. A subprocess may be hanging.", severity: "error" }] }],
77106
+ systemInfo: { opencodeVersion: null, opencodePath: null, pluginVersion: null, loadedVersion: null, bunVersion: null, configPath: null, configValid: false, isLocalDev: false },
77107
+ tools: { lspServers: [], astGrepCli: false, astGrepNapi: false, commentChecker: false, ghCli: { installed: false, authenticated: false, username: null }, mcpBuiltin: [], mcpUser: [] },
77108
+ summary: { total: 1, passed: 0, failed: 1, warnings: 0, skipped: 0, duration: Math.round(performance.now() - start) },
77109
+ exitCode: EXIT_CODES.FAILURE
77110
+ };
77111
+ if (options.json) {
77112
+ console.log(formatJsonOutput2(timeoutResult));
77113
+ } else {
77114
+ console.error(`
77115
+ Doctor timed out after 30s. A subprocess may be hanging.`);
77116
+ console.error(`Try running with --verbose to identify the stuck check.
77117
+ `);
77118
+ }
77119
+ return timeoutResult;
77120
+ }
77057
77121
  async function runDoctor(options) {
77058
77122
  const start = performance.now();
77059
77123
  const allChecks = getAllCheckDefinitions();
77060
- const [results, systemInfo, tools] = await Promise.all([
77124
+ const checksPromise = Promise.all([
77061
77125
  Promise.all(allChecks.map(runCheck)),
77062
77126
  gatherSystemInfo(),
77063
77127
  gatherToolsSummary()
77064
77128
  ]);
77129
+ let timer;
77130
+ const timeoutPromise = new Promise((_3, reject) => {
77131
+ timer = setTimeout(() => reject(new DoctorTimeoutError), DOCTOR_TIMEOUT_MS);
77132
+ });
77133
+ let results;
77134
+ let systemInfo;
77135
+ let tools;
77136
+ try {
77137
+ [results, systemInfo, tools] = await Promise.race([checksPromise, timeoutPromise]);
77138
+ } catch (error48) {
77139
+ clearTimeout(timer);
77140
+ if (error48 instanceof DoctorTimeoutError) {
77141
+ return buildTimeoutResult(start, options);
77142
+ }
77143
+ throw error48;
77144
+ }
77145
+ clearTimeout(timer);
77065
77146
  const duration3 = performance.now() - start;
77066
77147
  const summary = calculateSummary(results, duration3);
77067
77148
  const exitCode = determineExitCode(results);
@@ -4,7 +4,7 @@ import type { BrowserAutomationProvider } from "./config/schema/browser-automati
4
4
  import type { LoadedSkill } from "./features/opencode-skill-loader/types";
5
5
  import type { PluginContext, ToolsRecord } from "./plugin/types";
6
6
  import type { Managers } from "./create-managers";
7
- export type CreateToolsResult = {
7
+ type CreateToolsResult = {
8
8
  filteredTools: ToolsRecord;
9
9
  mergedSkills: LoadedSkill[];
10
10
  availableSkills: AvailableSkill[];
@@ -18,3 +18,4 @@ export declare function createTools(args: {
18
18
  pluginConfig: OhMyOpenCodeConfig;
19
19
  managers: Pick<Managers, "backgroundManager" | "tmuxSessionManager" | "skillMcpManager">;
20
20
  }): Promise<CreateToolsResult>;
21
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type { BuiltinCommandName, BuiltinCommands } from "./types";
2
- export interface LoadBuiltinCommandsOptions {
2
+ interface LoadBuiltinCommandsOptions {
3
3
  useRegisteredAgents?: boolean;
4
4
  }
5
5
  export declare function loadBuiltinCommands(disabledCommands?: BuiltinCommandName[], options?: LoadBuiltinCommandsOptions): BuiltinCommands;
6
+ export {};
package/dist/index.js CHANGED
@@ -128,7 +128,7 @@ function getAgentDisplayName(configKey) {
128
128
  function getAgentListDisplayName(configKey) {
129
129
  return getAgentRuntimeName(configKey);
130
130
  }
131
- function getAgentConfigKey(agentName) {
131
+ function resolveKnownAgentConfigKey(agentName) {
132
132
  const lower = stripAgentListSortPrefix(agentName).trim().toLowerCase();
133
133
  const reversed = REVERSE_DISPLAY_NAMES[lower];
134
134
  if (reversed !== undefined)
@@ -138,7 +138,11 @@ function getAgentConfigKey(agentName) {
138
138
  return legacy;
139
139
  if (AGENT_DISPLAY_NAMES[lower] !== undefined)
140
140
  return lower;
141
- return lower;
141
+ return;
142
+ }
143
+ function getAgentConfigKey(agentName) {
144
+ const lower = stripAgentListSortPrefix(agentName).trim().toLowerCase();
145
+ return resolveKnownAgentConfigKey(agentName) ?? lower;
142
146
  }
143
147
  function normalizeAgentForPromptKey(agentName) {
144
148
  if (typeof agentName !== "string") {
@@ -148,19 +152,7 @@ function normalizeAgentForPromptKey(agentName) {
148
152
  if (!trimmed) {
149
153
  return;
150
154
  }
151
- const lower = trimmed.toLowerCase();
152
- const reversed = REVERSE_DISPLAY_NAMES[lower];
153
- if (reversed !== undefined) {
154
- return reversed;
155
- }
156
- const legacy = LEGACY_DISPLAY_NAMES[lower];
157
- if (legacy !== undefined) {
158
- return legacy;
159
- }
160
- if (AGENT_DISPLAY_NAMES[lower] !== undefined) {
161
- return lower;
162
- }
163
- return trimmed;
155
+ return resolveKnownAgentConfigKey(trimmed) ?? trimmed;
164
156
  }
165
157
  var AGENT_DISPLAY_NAMES, AGENT_LIST_SORT_PREFIXES, INVISIBLE_AGENT_CHARACTERS_REGEX, REVERSE_DISPLAY_NAMES, LEGACY_DISPLAY_NAMES;
166
158
  var init_agent_display_names = __esm(() => {
@@ -135275,6 +135267,21 @@ var MIN_STABILITY_TIME_MS4 = 10 * 1000;
135275
135267
  // src/openclaw/index.ts
135276
135268
  import { basename as basename14 } from "path";
135277
135269
 
135270
+ // src/openclaw/gateway-url-validation.ts
135271
+ function validateGatewayUrl(url3) {
135272
+ try {
135273
+ const parsed = new URL(url3);
135274
+ if (parsed.protocol === "https:")
135275
+ return true;
135276
+ if (parsed.protocol === "http:" && (parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || parsed.hostname === "::1" || parsed.hostname === "[::1]")) {
135277
+ return true;
135278
+ }
135279
+ return false;
135280
+ } catch {
135281
+ return false;
135282
+ }
135283
+ }
135284
+
135278
135285
  // src/openclaw/config.ts
135279
135286
  var DEFAULT_REPLY_POLL_INTERVAL_MS = 3000;
135280
135287
  var MIN_REPLY_POLL_INTERVAL_MS = 500;
@@ -135342,19 +135349,6 @@ var DEFAULT_HTTP_TIMEOUT_MS = 1e4;
135342
135349
  var DEFAULT_COMMAND_TIMEOUT_MS = 5000;
135343
135350
  var MIN_COMMAND_TIMEOUT_MS = 100;
135344
135351
  var MAX_COMMAND_TIMEOUT_MS = 300000;
135345
- function validateGatewayUrl(url3) {
135346
- try {
135347
- const parsed = new URL(url3);
135348
- if (parsed.protocol === "https:")
135349
- return true;
135350
- if (parsed.protocol === "http:" && (parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || parsed.hostname === "::1" || parsed.hostname === "[::1]")) {
135351
- return true;
135352
- }
135353
- return false;
135354
- } catch {
135355
- return false;
135356
- }
135357
- }
135358
135352
  function interpolateInstruction(template, variables) {
135359
135353
  return template.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
135360
135354
  return variables[key] ?? "";
@@ -152850,7 +152844,7 @@ class PostHog extends PostHogBackendClient {
152850
152844
  // package.json
152851
152845
  var package_default = {
152852
152846
  name: "oh-my-opencode",
152853
- version: "3.17.0",
152847
+ version: "3.17.1",
152854
152848
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
152855
152849
  main: "./dist/index.js",
152856
152850
  types: "dist/index.d.ts",
@@ -152929,17 +152923,17 @@ var package_default = {
152929
152923
  typescript: "^5.7.3"
152930
152924
  },
152931
152925
  optionalDependencies: {
152932
- "oh-my-opencode-darwin-arm64": "3.17.0",
152933
- "oh-my-opencode-darwin-x64": "3.17.0",
152934
- "oh-my-opencode-darwin-x64-baseline": "3.17.0",
152935
- "oh-my-opencode-linux-arm64": "3.17.0",
152936
- "oh-my-opencode-linux-arm64-musl": "3.17.0",
152937
- "oh-my-opencode-linux-x64": "3.17.0",
152938
- "oh-my-opencode-linux-x64-baseline": "3.17.0",
152939
- "oh-my-opencode-linux-x64-musl": "3.17.0",
152940
- "oh-my-opencode-linux-x64-musl-baseline": "3.17.0",
152941
- "oh-my-opencode-windows-x64": "3.17.0",
152942
- "oh-my-opencode-windows-x64-baseline": "3.17.0"
152926
+ "oh-my-opencode-darwin-arm64": "3.17.1",
152927
+ "oh-my-opencode-darwin-x64": "3.17.1",
152928
+ "oh-my-opencode-darwin-x64-baseline": "3.17.1",
152929
+ "oh-my-opencode-linux-arm64": "3.17.1",
152930
+ "oh-my-opencode-linux-arm64-musl": "3.17.1",
152931
+ "oh-my-opencode-linux-x64": "3.17.1",
152932
+ "oh-my-opencode-linux-x64-baseline": "3.17.1",
152933
+ "oh-my-opencode-linux-x64-musl": "3.17.1",
152934
+ "oh-my-opencode-linux-x64-musl-baseline": "3.17.1",
152935
+ "oh-my-opencode-windows-x64": "3.17.1",
152936
+ "oh-my-opencode-windows-x64-baseline": "3.17.1"
152943
152937
  },
152944
152938
  overrides: {},
152945
152939
  trustedDependencies: [
@@ -153065,7 +153059,20 @@ function getSharedProperties(source) {
153065
153059
  plugin_name: PLUGIN_NAME,
153066
153060
  package_version: package_default.version,
153067
153061
  runtime: "bun",
153068
- source
153062
+ runtime_version: process.versions.bun ?? process.version,
153063
+ source,
153064
+ $os: os6.platform(),
153065
+ $os_version: os6.release(),
153066
+ os_arch: os6.arch(),
153067
+ os_type: os6.type(),
153068
+ cpu_count: os6.cpus().length,
153069
+ cpu_model: os6.cpus()[0]?.model,
153070
+ total_memory_gb: Math.round(os6.totalmem() / 1024 / 1024 / 1024),
153071
+ locale: Intl.DateTimeFormat().resolvedOptions().locale,
153072
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
153073
+ shell: process.env.SHELL,
153074
+ ci: Boolean(process.env.CI),
153075
+ terminal: process.env.TERM_PROGRAM
153069
153076
  };
153070
153077
  }
153071
153078
  function createPostHogClient(source, options) {
@@ -153074,7 +153081,8 @@ function createPostHogClient(source, options) {
153074
153081
  }
153075
153082
  const configuredClient = new PostHog(getPostHogApiKey(), {
153076
153083
  ...options,
153077
- host: getPostHogHost()
153084
+ host: getPostHogHost(),
153085
+ disableGeoip: false
153078
153086
  });
153079
153087
  const sharedProperties = getSharedProperties(source);
153080
153088
  return {
@@ -1,8 +1,8 @@
1
1
  import type { OpenClawConfig, OpenClawGateway } from "./types";
2
+ export { validateGatewayUrl } from "./gateway-url-validation";
2
3
  export declare function normalizeReplyListenerConfig(config: OpenClawConfig): OpenClawConfig;
3
4
  export declare function resolveGateway(config: OpenClawConfig, event: string): {
4
5
  gatewayName: string;
5
6
  gateway: OpenClawGateway;
6
7
  instruction: string;
7
8
  } | null;
8
- export declare function validateGatewayUrl(url: string): boolean;
@@ -1,5 +1,4 @@
1
1
  import type { OpenClawGateway, WakeResult } from "./types";
2
- export declare function validateGatewayUrl(url: string): boolean;
3
2
  export declare function interpolateInstruction(template: string, variables: Record<string, string | undefined>): string;
4
3
  export declare function shellEscapeArg(value: string): string;
5
4
  export declare function resolveCommandTimeoutMs(gatewayTimeout?: number, envTimeoutRaw?: string | undefined): number;
@@ -0,0 +1 @@
1
+ export declare function validateGatewayUrl(url: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "3.17.0",
3
+ "version": "3.17.1",
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",
@@ -79,17 +79,17 @@
79
79
  "typescript": "^5.7.3"
80
80
  },
81
81
  "optionalDependencies": {
82
- "oh-my-opencode-darwin-arm64": "3.17.0",
83
- "oh-my-opencode-darwin-x64": "3.17.0",
84
- "oh-my-opencode-darwin-x64-baseline": "3.17.0",
85
- "oh-my-opencode-linux-arm64": "3.17.0",
86
- "oh-my-opencode-linux-arm64-musl": "3.17.0",
87
- "oh-my-opencode-linux-x64": "3.17.0",
88
- "oh-my-opencode-linux-x64-baseline": "3.17.0",
89
- "oh-my-opencode-linux-x64-musl": "3.17.0",
90
- "oh-my-opencode-linux-x64-musl-baseline": "3.17.0",
91
- "oh-my-opencode-windows-x64": "3.17.0",
92
- "oh-my-opencode-windows-x64-baseline": "3.17.0"
82
+ "oh-my-opencode-darwin-arm64": "3.17.1",
83
+ "oh-my-opencode-darwin-x64": "3.17.1",
84
+ "oh-my-opencode-darwin-x64-baseline": "3.17.1",
85
+ "oh-my-opencode-linux-arm64": "3.17.1",
86
+ "oh-my-opencode-linux-arm64-musl": "3.17.1",
87
+ "oh-my-opencode-linux-x64": "3.17.1",
88
+ "oh-my-opencode-linux-x64-baseline": "3.17.1",
89
+ "oh-my-opencode-linux-x64-musl": "3.17.1",
90
+ "oh-my-opencode-linux-x64-musl-baseline": "3.17.1",
91
+ "oh-my-opencode-windows-x64": "3.17.1",
92
+ "oh-my-opencode-windows-x64-baseline": "3.17.1"
93
93
  },
94
94
  "overrides": {},
95
95
  "trustedDependencies": [