oh-my-opencode 0.1.24 → 0.1.26

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.ko.md CHANGED
@@ -136,6 +136,11 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
136
136
  - **Context Window Monitor**: [컨텍스트 윈도우 불안 관리](https://agentic-patterns.com/patterns/context-window-anxiety-management/) 패턴을 구현합니다.
137
137
  - 사용량이 70%를 넘으면 에이전트에게 아직 토큰이 충분하다고 상기시켜, 급하게 불완전한 작업을 하는 것을 완화합니다.
138
138
  - **Session Notification**: 에이전트가 작업을 마치면 OS 네이티브 알림을 보냅니다 (macOS, Linux, Windows).
139
+ - **Session Recovery**: API 에러로부터 자동으로 복구하여 세션 안정성을 보장합니다. 네 가지 시나리오를 처리합니다:
140
+ - **Tool Result Missing**: `tool_use` 블록이 있지만 `tool_result`가 없을 때 (ESC 인터럽트) → "cancelled" tool result 주입
141
+ - **Thinking Block Order**: thinking 블록이 첫 번째여야 하는데 아닐 때 → 빈 thinking 블록 추가
142
+ - **Thinking Disabled Violation**: thinking 이 비활성화인데 thinking 블록이 있을 때 → thinking 블록 제거
143
+ - **Empty Content Message**: 메시지가 thinking/meta 블록만 있고 실제 내용이 없을 때 → 파일시스템을 통해 "(interrupted)" 텍스트 주입
139
144
  - **Comment Checker**: 코드 수정 후 불필요한 주석을 감지하여 보고합니다. BDD 패턴, 지시어, 독스트링 등 유효한 주석은 똑똑하게 제외하고, AI가 남긴 흔적을 제거하여 코드를 깨끗하게 유지합니다.
140
145
 
141
146
  ### Agents
@@ -146,12 +151,22 @@ OpenCode 는 아주 확장가능하고 아주 커스터마이저블합니다.
146
151
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 개발자로 전향한 디자이너라는 설정을 갖고 있습니다. 멋진 UI를 만듭니다. 아름답고 창의적인 UI 코드를 생성하는 데 탁월한 Gemini를 사용합니다.
147
152
  - **document-writer** (`google/gemini-3-pro-preview`): 기술 문서 전문가라는 설정을 갖고 있습니다. Gemini 는 문학가입니다. 글을 기가막히게 씁니다.
148
153
 
154
+ 각 에이전트는 메인 에이전트가 알아서 호출하지만, 명시적으로 요청할 수도 있습니다:
155
+
156
+ ```
157
+ @oracle 한테 이 부분 설계 고민하고서 아키텍쳐 제안을 부탁해줘
158
+ @librarian 한테 이 부분 어떻게 구현돼있길래 자꾸 안에서 동작이 바뀌는지 알려달라고 해줘
159
+ @explore 한테 이 기능 정책 알려달라고 해줘
160
+ ```
161
+
149
162
  에이전트의 모델, 프롬프트, 권한은 `oh-my-opencode.json`에서 커스텀할 수 있습니다. 자세한 내용은 [설정](#설정)을 참고하세요.
150
163
 
151
164
  ### Tools
152
165
 
153
166
  #### 내장 LSP Tools
154
167
 
168
+ 당신이 에디터에서 사용하는 그 기능을 다른 에이전트들은 사용하지 못합니다. Oh My OpenCode 는 당신만의 그 도구를 LLM Agent 에게 쥐어줍니다. 리팩토링하고, 탐색하고, 분석하는 모든 작업을 OpenCode 의 설정값을 그대로 사용하여 지원합니다.
169
+
155
170
  [OpenCode 는 LSP 를 제공하지만](https://opencode.ai/docs/lsp/), 오로지 분석용으로만 제공합니다. 탐색과 리팩토링을 위한 도구는 OpenCode 와 동일한 스펙과 설정으로 Oh My OpenCode 가 제공합니다.
156
171
 
157
172
  - **lsp_hover**: 위치의 타입 정보, 문서, 시그니처 가져오기
package/README.md CHANGED
@@ -132,7 +132,11 @@ I believe in the right tool for the job. For your wallet's sake, use CLIProxyAPI
132
132
  - **Todo Continuation Enforcer**: Forces the agent to complete all tasks before exiting. Eliminates the common LLM issue of "giving up halfway".
133
133
  - **Context Window Monitor**: Implements [Context Window Anxiety Management](https://agentic-patterns.com/patterns/context-window-anxiety-management/). When context usage exceeds 70%, it reminds the agent that resources are sufficient, preventing rushed or low-quality output.
134
134
  - **Session Notification**: Sends a native OS notification when the job is done (macOS, Linux, Windows).
135
- - **Session Recovery**: Automatically recovers from API errors by injecting missing tool results and correcting thinking block violations, ensuring session stability.
135
+ - **Session Recovery**: Automatically recovers from API errors, ensuring session stability. Handles four scenarios:
136
+ - **Tool Result Missing**: When `tool_use` block exists without `tool_result` (ESC interrupt) → injects "cancelled" tool results
137
+ - **Thinking Block Order**: When thinking block must be first but isn't → prepends empty thinking block
138
+ - **Thinking Disabled Violation**: When thinking blocks exist but thinking is disabled → strips thinking blocks
139
+ - **Empty Content Message**: When message has only thinking/meta blocks without actual content → injects "(interrupted)" text via filesystem
136
140
  - **Comment Checker**: Detects and reports unnecessary comments after code modifications. Smartly ignores valid patterns (BDD, directives, docstrings, shebangs) to keep the codebase clean from AI-generated artifacts.
137
141
 
138
142
  ### Agents
@@ -142,12 +146,22 @@ I believe in the right tool for the job. For your wallet's sake, use CLIProxyAPI
142
146
  - **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Creates stunning UIs. Uses Gemini because its creativity and UI code generation are superior.
143
147
  - **document-writer** (`google/gemini-3-pro-preview`): A technical writing expert. Gemini is a wordsmith; it writes prose that flows naturally.
144
148
 
149
+ Each agent is automatically invoked by the main agent, but you can also explicitly request them:
150
+
151
+ ```
152
+ @oracle Please think through the design of this part and suggest an architecture.
153
+ @librarian Tell me how this is implemented — why does the behavior keep changing internally?
154
+ @explore Tell me about the policy for this feature.
155
+ ```
156
+
145
157
  Agent models, prompts, and permissions can be customized via `oh-my-opencode.json`. See [Configuration](#configuration) for details.
146
158
 
147
159
  ### Tools
148
160
 
149
161
  #### Built-in LSP Tools
150
162
 
163
+ The features you use in your editor—other agents cannot access them. Oh My OpenCode hands those very tools to your LLM Agent. Refactoring, navigation, and analysis are all supported using the same OpenCode configuration.
164
+
151
165
  [OpenCode provides LSP](https://opencode.ai/docs/lsp/), but only for analysis. Oh My OpenCode equips you with navigation and refactoring tools matching the same specification.
152
166
 
153
167
  - **lsp_hover**: Get type info, docs, signatures at position
@@ -0,0 +1,12 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare function createGrepOutputTruncatorHook(ctx: PluginInput): {
3
+ "tool.execute.after": (input: {
4
+ tool: string;
5
+ sessionID: string;
6
+ callID: string;
7
+ }, output: {
8
+ title: string;
9
+ output: string;
10
+ metadata: unknown;
11
+ }) => Promise<void>;
12
+ };
@@ -3,3 +3,5 @@ export { createContextWindowMonitorHook } from "./context-window-monitor";
3
3
  export { createSessionNotification } from "./session-notification";
4
4
  export { createSessionRecoveryHook } from "./session-recovery";
5
5
  export { createCommentCheckerHooks } from "./comment-checker";
6
+ export { createGrepOutputTruncatorHook } from "./grep-output-truncator";
7
+ export { createPulseMonitorHook } from "./pulse-monitor";
@@ -0,0 +1,10 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare function createPulseMonitorHook(ctx: PluginInput): {
3
+ event: (input: {
4
+ event: any;
5
+ }) => Promise<void>;
6
+ "tool.execute.before": () => Promise<void>;
7
+ "tool.execute.after": (input: {
8
+ sessionID: string;
9
+ }) => Promise<void>;
10
+ };
@@ -12,7 +12,7 @@
12
12
  * - Recovery: strip thinking/redacted_thinking blocks
13
13
  *
14
14
  * 4. Empty content message (non-empty content required)
15
- * - Recovery: delete the empty message via revert
15
+ * - Recovery: inject text part directly via filesystem
16
16
  */
17
17
  import type { PluginInput } from "@opencode-ai/plugin";
18
18
  interface MessageInfo {