@skj1724/oh-my-opencode 3.18.5 → 3.18.6

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 CHANGED
@@ -53770,7 +53770,7 @@ var {
53770
53770
  // package.json
53771
53771
  var package_default = {
53772
53772
  name: "@skj1724/oh-my-opencode",
53773
- version: "3.18.5",
53773
+ version: "3.18.6",
53774
53774
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
53775
53775
  main: "./dist/index.js",
53776
53776
  types: "dist/index.d.ts",
@@ -14,5 +14,4 @@ export declare function injectBoulderContinuation(input: {
14
14
  preferredTaskTitle?: string;
15
15
  backgroundManager?: BackgroundManager;
16
16
  sessionState: SessionState;
17
- language?: string;
18
17
  }): Promise<BoulderContinuationResult>;
@@ -7,5 +7,4 @@ export declare function createToolExecuteAfterHandler(input: {
7
7
  pendingTaskRefs: Map<string, PendingTaskRef>;
8
8
  autoCommit: boolean;
9
9
  getState: (sessionID: string) => SessionState;
10
- language?: string;
11
10
  }): (toolInput: ToolExecuteAfterInput, toolOutput: ToolExecuteAfterOutput) => Promise<void>;
@@ -4,7 +4,6 @@ export declare function createToolExecuteBeforeHandler(input: {
4
4
  ctx: PluginInput;
5
5
  pendingFilePaths: Map<string, string>;
6
6
  pendingTaskRefs: Map<string, PendingTaskRef>;
7
- language?: string;
8
7
  }): (toolInput: {
9
8
  tool: string;
10
9
  sessionID?: string;
@@ -11,8 +11,8 @@ export interface AtlasHookOptions {
11
11
  backgroundManager?: BackgroundManager;
12
12
  isContinuationStopped?: (sessionID: string) => boolean;
13
13
  agentOverrides?: AgentOverrides;
14
+ /** Enable auto-commit after each atomic task completion (default: true) */
14
15
  autoCommit?: boolean;
15
- language?: string;
16
16
  }
17
17
  export interface ToolExecuteAfterInput {
18
18
  tool: string;
@@ -3,5 +3,4 @@ import type { CompactionContextClient, CompactionContextInjector } from "./types
3
3
  export declare function createCompactionContextInjector(options?: {
4
4
  ctx?: CompactionContextClient;
5
5
  backgroundManager?: BackgroundManager;
6
- language?: string;
7
6
  }): CompactionContextInjector;
@@ -1,6 +1,6 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import { type ContextLimitModelCacheState } from "../shared/context-limit-resolver";
3
- export declare function createContextWindowMonitorHook(_ctx: PluginInput, modelCacheState?: ContextLimitModelCacheState, language?: string): {
3
+ export declare function createContextWindowMonitorHook(_ctx: PluginInput, modelCacheState?: ContextLimitModelCacheState): {
4
4
  "tool.execute.after": (input: {
5
5
  tool: string;
6
6
  sessionID: string;
@@ -1,5 +1,5 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
- export declare function createPrometheusMdOnlyHook(ctx: PluginInput, language?: string): {
2
+ export declare function createPrometheusMdOnlyHook(ctx: PluginInput): {
3
3
  "tool.execute.before": (input: {
4
4
  tool: string;
5
5
  sessionID: string;
@@ -10,5 +10,4 @@ export declare function injectContinuation(args: {
10
10
  resolvedInfo?: ResolvedMessageInfo;
11
11
  sessionStateStore: SessionStateStore;
12
12
  isContinuationStopped?: (sessionID: string) => boolean;
13
- language?: string;
14
13
  }): Promise<void>;
@@ -12,5 +12,4 @@ export declare function startCountdown(args: {
12
12
  skipAgents: string[];
13
13
  sessionStateStore: SessionStateStore;
14
14
  isContinuationStopped?: (sessionID: string) => boolean;
15
- language?: string;
16
15
  }): void;
@@ -7,7 +7,6 @@ export declare function createTodoContinuationHandler(args: {
7
7
  backgroundManager?: BackgroundManager;
8
8
  skipAgents?: string[];
9
9
  isContinuationStopped?: (sessionID: string) => boolean;
10
- language?: string;
11
10
  }): (input: {
12
11
  event: {
13
12
  type: string;
@@ -8,5 +8,4 @@ export declare function handleSessionIdle(args: {
8
8
  backgroundManager?: BackgroundManager;
9
9
  skipAgents?: string[];
10
10
  isContinuationStopped?: (sessionID: string) => boolean;
11
- language?: string;
12
11
  }): Promise<void>;
@@ -4,7 +4,6 @@ export interface TodoContinuationEnforcerOptions {
4
4
  backgroundManager?: BackgroundManager;
5
5
  skipAgents?: string[];
6
6
  isContinuationStopped?: (sessionID: string) => boolean;
7
- language?: string;
8
7
  }
9
8
  export interface TodoContinuationEnforcer {
10
9
  handler: (input: {
package/dist/index.js CHANGED
@@ -66321,7 +66321,7 @@ async function injectContinuation(args) {
66321
66321
  const incompleteTodos = todos.filter((todo) => todo.status !== "completed" && todo.status !== "cancelled");
66322
66322
  const todoList = incompleteTodos.map((todo) => `- [${todo.status}] ${todo.content}`).join(`
66323
66323
  `);
66324
- const prompt = `${getContinuationPrompt(args.language)}
66324
+ const prompt = `${getContinuationPrompt()}
66325
66325
 
66326
66326
  [Status: ${todos.length - freshIncompleteCount}/${todos.length} completed, ${freshIncompleteCount} remaining]
66327
66327
 
@@ -66420,8 +66420,7 @@ function startCountdown(args) {
66420
66420
  skipAgents,
66421
66421
  resolvedInfo,
66422
66422
  sessionStateStore,
66423
- isContinuationStopped,
66424
- language: args.language
66423
+ isContinuationStopped
66425
66424
  });
66426
66425
  }, COUNTDOWN_SECONDS * 1000);
66427
66426
  log(`[${HOOK_NAME}] Countdown started`, {
@@ -66445,8 +66444,7 @@ async function handleSessionIdle(args) {
66445
66444
  sessionStateStore,
66446
66445
  backgroundManager,
66447
66446
  skipAgents = DEFAULT_SKIP_AGENTS,
66448
- isContinuationStopped,
66449
- language
66447
+ isContinuationStopped
66450
66448
  } = args;
66451
66449
  log(`[${HOOK_NAME}] session.idle`, { sessionID });
66452
66450
  const state2 = sessionStateStore.getState(sessionID);
@@ -66593,8 +66591,7 @@ async function handleSessionIdle(args) {
66593
66591
  backgroundManager,
66594
66592
  skipAgents,
66595
66593
  sessionStateStore,
66596
- isContinuationStopped,
66597
- language
66594
+ isContinuationStopped
66598
66595
  });
66599
66596
  }
66600
66597
 
@@ -66735,8 +66732,7 @@ function createTodoContinuationHandler(args) {
66735
66732
  sessionStateStore,
66736
66733
  backgroundManager,
66737
66734
  skipAgents,
66738
- isContinuationStopped,
66739
- language: args.language
66735
+ isContinuationStopped
66740
66736
  });
66741
66737
  return;
66742
66738
  }
@@ -66970,8 +66966,7 @@ function createTodoContinuationEnforcer(ctx, options = {}) {
66970
66966
  const {
66971
66967
  backgroundManager,
66972
66968
  skipAgents = DEFAULT_SKIP_AGENTS,
66973
- isContinuationStopped,
66974
- language
66969
+ isContinuationStopped
66975
66970
  } = options;
66976
66971
  const sessionStateStore = createSessionStateStore();
66977
66972
  const markRecovering = (sessionID) => {
@@ -66992,8 +66987,7 @@ function createTodoContinuationEnforcer(ctx, options = {}) {
66992
66987
  sessionStateStore,
66993
66988
  backgroundManager,
66994
66989
  skipAgents,
66995
- isContinuationStopped,
66996
- language
66990
+ isContinuationStopped
66997
66991
  });
66998
66992
  const cancelAllCountdowns = () => {
66999
66993
  sessionStateStore.cancelAllCountdowns();
@@ -67024,7 +67018,7 @@ Complete your work thoroughly and methodically.`;
67024
67018
 
67025
67019
  ${reminderText}`;
67026
67020
  }
67027
- function createContextWindowMonitorHook(_ctx, modelCacheState, language) {
67021
+ function createContextWindowMonitorHook(_ctx, modelCacheState) {
67028
67022
  const remindedSessions = new Set;
67029
67023
  const tokenCache = new Map;
67030
67024
  const toolExecuteAfter = async (input, output) => {
@@ -67049,7 +67043,7 @@ function createContextWindowMonitorHook(_ctx, modelCacheState, language) {
67049
67043
  const limitTokens = actualLimit.toLocaleString();
67050
67044
  output.output += `
67051
67045
 
67052
- ${createContextReminder(actualLimit, language)}
67046
+ ${createContextReminder(actualLimit)}
67053
67047
  [Context Status: ${usedPct}% used (${usedTokens}/${limitTokens} tokens), ${remainingPct}% remaining]`;
67054
67048
  };
67055
67049
  const eventHandler = async ({ event }) => {
@@ -84959,7 +84953,7 @@ function isAllowedFile(filePath, workspaceRoot) {
84959
84953
 
84960
84954
  // src/hooks/prometheus-md-only/hook.ts
84961
84955
  var TASK_TOOLS = ["task", "call_omo_agent"];
84962
- function createPrometheusMdOnlyHook(ctx, language) {
84956
+ function createPrometheusMdOnlyHook(ctx) {
84963
84957
  return {
84964
84958
  "tool.execute.before": async (input, output) => {
84965
84959
  const agentName = await getAgentFromSession(input.sessionID, ctx.directory, ctx.client);
@@ -84970,7 +84964,7 @@ function createPrometheusMdOnlyHook(ctx, language) {
84970
84964
  if (TASK_TOOLS.includes(toolName)) {
84971
84965
  const prompt = output.args.prompt;
84972
84966
  if (prompt && !prompt.includes(SYSTEM_DIRECTIVE_PREFIX)) {
84973
- output.args.prompt = getPlanningConsultWarning(language) + prompt;
84967
+ output.args.prompt = getPlanningConsultWarning() + prompt;
84974
84968
  log(`[${HOOK_NAME4}] Injected planning warning to ${toolName}`, {
84975
84969
  sessionID: input.sessionID,
84976
84970
  tool: toolName,
@@ -85003,7 +84997,7 @@ function createPrometheusMdOnlyHook(ctx, language) {
85003
84997
  filePath,
85004
84998
  agent: agentName
85005
84999
  });
85006
- output.message = (output.message || "") + getPrometheusWorkflowReminder(language);
85000
+ output.message = (output.message || "") + getPrometheusWorkflowReminder();
85007
85001
  }
85008
85002
  log(`[${HOOK_NAME4}] Allowed: .sisyphus/*.md write permitted`, {
85009
85003
  sessionID: input.sessionID,
@@ -85963,7 +85957,7 @@ async function injectBoulderContinuation(input) {
85963
85957
  const preferredSessionContext = preferredTaskSessionId ? `
85964
85958
 
85965
85959
  [Preferred reuse session for current top-level plan task${preferredTaskTitle ? `: ${preferredTaskTitle}` : ""}: ${preferredTaskSessionId}]` : "";
85966
- const prompt = getBoulderContinuationPrompt(input.language).replace(/{PLAN_NAME}/g, planName) + `
85960
+ const prompt = getBoulderContinuationPrompt().replace(/{PLAN_NAME}/g, planName) + `
85967
85961
 
85968
85962
  [Status: ${total - remaining}/${total} completed, ${remaining} remaining]` + preferredSessionContext + worktreeContext;
85969
85963
  const continuationAgent = resolveRegisteredAgentName(agent ?? (isAgentRegistered("atlas") ? "atlas" : undefined));
@@ -86075,8 +86069,7 @@ async function injectContinuation2(input) {
86075
86069
  preferredTaskSessionId: preferredTaskSession?.session_id,
86076
86070
  preferredTaskTitle: preferredTaskSession?.task_title,
86077
86071
  backgroundManager: input.options?.backgroundManager,
86078
- sessionState: input.sessionState,
86079
- language: input.options?.language
86072
+ sessionState: input.sessionState
86080
86073
  });
86081
86074
  if (result === "injected") {
86082
86075
  if (input.sessionState.pendingRetryTimer) {
@@ -86772,7 +86765,7 @@ function createToolExecuteAfterHandler2(input) {
86772
86765
  filePath = toolOutput.metadata?.filePath;
86773
86766
  }
86774
86767
  if (filePath && !isSisyphusPath(filePath)) {
86775
- toolOutput.output = (toolOutput.output || "") + getDirectWorkReminder(input.language);
86768
+ toolOutput.output = (toolOutput.output || "") + getDirectWorkReminder();
86776
86769
  log(`[${HOOK_NAME7}] Direct work reminder appended`, {
86777
86770
  sessionID: toolInput.sessionID,
86778
86771
  tool: toolInput.tool,
@@ -86914,7 +86907,7 @@ function createToolExecuteBeforeHandler2(input) {
86914
86907
  if (toolInput.callID) {
86915
86908
  pendingFilePaths.set(toolInput.callID, filePath);
86916
86909
  }
86917
- const warning = getOrchestratorDelegationRequired(input.language).replace("$FILE_PATH", filePath);
86910
+ const warning = getOrchestratorDelegationRequired().replace("$FILE_PATH", filePath);
86918
86911
  toolOutput.message = (toolOutput.message || "") + warning;
86919
86912
  log(`[${HOOK_NAME7}] Injected delegation warning for direct file modification`, {
86920
86913
  sessionID: toolInput.sessionID,
@@ -86961,7 +86954,7 @@ function createToolExecuteBeforeHandler2(input) {
86961
86954
  }
86962
86955
  const prompt = toolOutput.args.prompt;
86963
86956
  if (prompt && !prompt.includes(SYSTEM_DIRECTIVE_PREFIX)) {
86964
- toolOutput.args.prompt = `<system-reminder>${getSingleTaskDirective(input.language)}</system-reminder>
86957
+ toolOutput.args.prompt = `<system-reminder>${getSingleTaskDirective()}</system-reminder>
86965
86958
  ` + prompt;
86966
86959
  log(`[${HOOK_NAME7}] Injected single-task directive to task`, {
86967
86960
  sessionID: toolInput.sessionID
@@ -86987,8 +86980,8 @@ function createAtlasHook(ctx, options) {
86987
86980
  }
86988
86981
  return {
86989
86982
  handler: createAtlasEventHandler({ ctx, options, sessions, getState }),
86990
- "tool.execute.before": createToolExecuteBeforeHandler2({ ctx, pendingFilePaths, pendingTaskRefs, language: options?.language }),
86991
- "tool.execute.after": createToolExecuteAfterHandler2({ ctx, pendingFilePaths, pendingTaskRefs, autoCommit, getState, language: options?.language })
86983
+ "tool.execute.before": createToolExecuteBeforeHandler2({ ctx, pendingFilePaths, pendingTaskRefs }),
86984
+ "tool.execute.after": createToolExecuteAfterHandler2({ ctx, pendingFilePaths, pendingTaskRefs, autoCommit, getState })
86992
86985
  };
86993
86986
  }
86994
86987
  // src/hooks/delegate-task-retry/patterns.ts
@@ -87652,7 +87645,6 @@ function createRecoveryLogic(ctx, getTailState) {
87652
87645
  function createCompactionContextInjector(options) {
87653
87646
  const ctx = options?.ctx;
87654
87647
  const backgroundManager = options?.backgroundManager;
87655
- const language = options?.language;
87656
87648
  const tailStates = new Map;
87657
87649
  const getTailState = (sessionID) => {
87658
87650
  const existing = tailStates.get(sessionID);
@@ -87684,7 +87676,7 @@ function createCompactionContextInjector(options) {
87684
87676
  });
87685
87677
  };
87686
87678
  const inject = (sessionID) => {
87687
- let prompt = getCompactionContextPrompt(language);
87679
+ let prompt = getCompactionContextPrompt();
87688
87680
  if (backgroundManager && sessionID) {
87689
87681
  const history = backgroundManager.taskHistory.formatForCompaction(sessionID);
87690
87682
  if (history) {
@@ -102939,7 +102931,7 @@ function createRuntimeTmuxConfig(pluginConfig) {
102939
102931
  function createSessionHooks(args) {
102940
102932
  const { ctx, pluginConfig, modelCacheState, modelFallbackControllerAccessor, isHookEnabled, safeHookEnabled } = args;
102941
102933
  const safeHook = (hookName, factory) => safeCreateHook(hookName, factory, { enabled: safeHookEnabled });
102942
- const contextWindowMonitor = isHookEnabled("context-window-monitor") ? safeHook("context-window-monitor", () => createContextWindowMonitorHook(ctx, modelCacheState, pluginConfig.i18n?.language)) : null;
102934
+ const contextWindowMonitor = isHookEnabled("context-window-monitor") ? safeHook("context-window-monitor", () => createContextWindowMonitorHook(ctx, modelCacheState)) : null;
102943
102935
  const preemptiveCompaction = isHookEnabled("preemptive-compaction") && pluginConfig.experimental?.preemptive_compaction ? safeHook("preemptive-compaction", () => createPreemptiveCompactionHook(ctx, pluginConfig, modelCacheState)) : null;
102944
102936
  const sessionRecovery = isHookEnabled("session-recovery") ? safeHook("session-recovery", () => createSessionRecoveryHook(ctx, { experimental: pluginConfig.experimental })) : null;
102945
102937
  let sessionNotification = null;
@@ -103020,7 +103012,7 @@ function createSessionHooks(args) {
103020
103012
  const editErrorRecovery = isHookEnabled("edit-error-recovery") ? safeHook("edit-error-recovery", () => createEditErrorRecoveryHook(ctx)) : null;
103021
103013
  const delegateTaskRetry = isHookEnabled("delegate-task-retry") ? safeHook("delegate-task-retry", () => createDelegateTaskRetryHook(ctx)) : null;
103022
103014
  const startWork = isHookEnabled("start-work") ? safeHook("start-work", () => createStartWorkHook(ctx)) : null;
103023
- const prometheusMdOnly = isHookEnabled("prometheus-md-only") ? safeHook("prometheus-md-only", () => createPrometheusMdOnlyHook(ctx, pluginConfig.i18n?.language)) : null;
103015
+ const prometheusMdOnly = isHookEnabled("prometheus-md-only") ? safeHook("prometheus-md-only", () => createPrometheusMdOnlyHook(ctx)) : null;
103024
103016
  const sisyphusJuniorNotepad = isHookEnabled("sisyphus-junior-notepad") ? safeHook("sisyphus-junior-notepad", () => createSisyphusJuniorNotepadHook(ctx)) : null;
103025
103017
  const noSisyphusGpt = isHookEnabled("no-sisyphus-gpt") ? safeHook("no-sisyphus-gpt", () => createNoSisyphusGptHook(ctx)) : null;
103026
103018
  const noHephaestusNonGpt = isHookEnabled("no-hephaestus-non-gpt") ? safeHook("no-hephaestus-non-gpt", () => createNoHephaestusNonGptHook(ctx, {
@@ -103360,12 +103352,11 @@ function createContinuationHooks(args) {
103360
103352
  const stopContinuationGuard = isHookEnabled("stop-continuation-guard") ? safeHook("stop-continuation-guard", () => createStopContinuationGuardHook(ctx, {
103361
103353
  backgroundManager
103362
103354
  })) : null;
103363
- const compactionContextInjector = isHookEnabled("compaction-context-injector") ? safeHook("compaction-context-injector", () => createCompactionContextInjector({ ctx, backgroundManager, language: pluginConfig.i18n?.language })) : null;
103355
+ const compactionContextInjector = isHookEnabled("compaction-context-injector") ? safeHook("compaction-context-injector", () => createCompactionContextInjector({ ctx, backgroundManager })) : null;
103364
103356
  const compactionTodoPreserver = isHookEnabled("compaction-todo-preserver") ? safeHook("compaction-todo-preserver", () => createCompactionTodoPreserverHook(ctx)) : null;
103365
103357
  const todoContinuationEnforcer = isHookEnabled("todo-continuation-enforcer") ? safeHook("todo-continuation-enforcer", () => createTodoContinuationEnforcer(ctx, {
103366
103358
  backgroundManager,
103367
- isContinuationStopped: stopContinuationGuard?.isStopped,
103368
- language: pluginConfig.i18n?.language
103359
+ isContinuationStopped: stopContinuationGuard?.isStopped
103369
103360
  })) : null;
103370
103361
  const unstableAgentBabysitter = isHookEnabled("unstable-agent-babysitter") ? safeHook("unstable-agent-babysitter", () => createUnstableAgentBabysitter({ ctx, backgroundManager, pluginConfig })) : null;
103371
103362
  if (sessionRecovery) {
@@ -103394,8 +103385,7 @@ function createContinuationHooks(args) {
103394
103385
  backgroundManager,
103395
103386
  isContinuationStopped: (sessionID) => stopContinuationGuard?.isStopped(sessionID) ?? false,
103396
103387
  agentOverrides: pluginConfig.agents,
103397
- autoCommit: pluginConfig.start_work?.auto_commit,
103398
- language: pluginConfig.i18n?.language
103388
+ autoCommit: pluginConfig.start_work?.auto_commit
103399
103389
  })) : null;
103400
103390
  return {
103401
103391
  stopContinuationGuard,
@@ -130774,7 +130764,7 @@ class PostHog extends PostHogBackendClient {
130774
130764
  // package.json
130775
130765
  var package_default = {
130776
130766
  name: "@skj1724/oh-my-opencode",
130777
- version: "3.18.5",
130767
+ version: "3.18.6",
130778
130768
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
130779
130769
  main: "./dist/index.js",
130780
130770
  types: "dist/index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skj1724/oh-my-opencode",
3
- "version": "3.18.5",
3
+ "version": "3.18.6",
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",