oh-my-opencode 2.2.0 → 2.2.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.
package/README.ja.md CHANGED
@@ -275,13 +275,13 @@ opencode auth login
275
275
  "google_auth": false,
276
276
  "agents": {
277
277
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
278
- "document-writer": { "model": "google/gemini-3-pro-high" },
278
+ "document-writer": { "model": "google/gemini-3-flash" },
279
279
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
280
280
  }
281
281
  }
282
282
  ```
283
283
 
284
- **利用可能なモデル名**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
284
+ **利用可能なモデル名**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
285
285
 
286
286
  その後、認証を行います:
287
287
 
@@ -304,7 +304,7 @@ opencode auth login
304
304
  {
305
305
  "plugin": [
306
306
  "oh-my-opencode",
307
- "opencode-openai-codex-auth@4.1.0"
307
+ "opencode-openai-codex-auth@4.1.1"
308
308
  ]
309
309
  }
310
310
  ```
@@ -622,7 +622,7 @@ Oh My OpenCode は以下の場所からフックを読み込んで実行しま
622
622
  "google_auth": false,
623
623
  "agents": {
624
624
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
625
- "document-writer": { "model": "google/gemini-3-pro-high" },
625
+ "document-writer": { "model": "google/gemini-3-flash" },
626
626
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
627
627
  }
628
628
  }
package/README.ko.md CHANGED
@@ -272,13 +272,13 @@ opencode auth login
272
272
  "google_auth": false,
273
273
  "agents": {
274
274
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
275
- "document-writer": { "model": "google/gemini-3-pro-high" },
275
+ "document-writer": { "model": "google/gemini-3-flash" },
276
276
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
277
277
  }
278
278
  }
279
279
  ```
280
280
 
281
- **사용 가능한 모델 이름**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
281
+ **사용 가능한 모델 이름**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
282
282
 
283
283
  그 후 인증:
284
284
 
@@ -301,7 +301,7 @@ opencode auth login
301
301
  {
302
302
  "plugin": [
303
303
  "oh-my-opencode",
304
- "opencode-openai-codex-auth@4.1.0"
304
+ "opencode-openai-codex-auth@4.1.1"
305
305
  ]
306
306
  }
307
307
  ```
@@ -616,7 +616,7 @@ Schema 자동 완성이 지원됩니다:
616
616
  "google_auth": false,
617
617
  "agents": {
618
618
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
619
- "document-writer": { "model": "google/gemini-3-pro-high" },
619
+ "document-writer": { "model": "google/gemini-3-flash" },
620
620
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
621
621
  }
622
622
  }
package/README.md CHANGED
@@ -58,6 +58,7 @@ No stupid token consumption massive subagents here. No bloat tools here.
58
58
  - [Verify the setup](#verify-the-setup)
59
59
  - [Say 'Congratulations! 🎉' to the user](#say-congratulations--to-the-user)
60
60
  - [Too Complicated?](#too-complicated)
61
+ - [Uninstallation](#uninstallation)
61
62
  - [Features](#features)
62
63
  - [Agents: Your Teammates](#agents-your-teammates)
63
64
  - [Background Agents: Work Like a Team](#background-agents-work-like-a-team)
@@ -158,7 +159,10 @@ If you don't want all this, as mentioned, you can just pick and choose specific
158
159
 
159
160
  ### For Humans
160
161
 
161
- Let the LLM Agent handle the grunt work. Paste this link and ask it to install and configure.
162
+ Let the LLM Agent handle the grunt work. Paste this into a fresh opencode session:
163
+ ```
164
+ Install and configure by following the instructions here https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/refs/heads/master/README.md
165
+ ```
162
166
 
163
167
  ### For LLM Agents
164
168
 
@@ -301,13 +305,13 @@ The `opencode-antigravity-auth` plugin uses different model names than the built
301
305
  "google_auth": false,
302
306
  "agents": {
303
307
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
304
- "document-writer": { "model": "google/gemini-3-pro-high" },
308
+ "document-writer": { "model": "google/gemini-3-flash" },
305
309
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
306
310
  }
307
311
  }
308
312
  ```
309
313
 
310
- **Available model names**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
314
+ **Available model names**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
311
315
 
312
316
  Then authenticate:
313
317
 
@@ -330,7 +334,7 @@ First, add the opencode-openai-codex-auth plugin:
330
334
  {
331
335
  "plugin": [
332
336
  "oh-my-opencode",
333
- "opencode-openai-codex-auth@4.1.0"
337
+ "opencode-openai-codex-auth@4.1.1"
334
338
  ]
335
339
  }
336
340
  ```
@@ -400,6 +404,38 @@ That's it. The agent will figure out the rest and handle everything automaticall
400
404
 
401
405
  </details>
402
406
 
407
+ ## Uninstallation
408
+
409
+ To remove oh-my-opencode:
410
+
411
+ 1. **Remove the plugin from your OpenCode config**
412
+
413
+ Edit `~/.config/opencode/opencode.json` (or `opencode.jsonc`) and remove `"oh-my-opencode"` from the `plugin` array:
414
+
415
+ ```bash
416
+ # Using jq
417
+ jq '.plugin = [.plugin[] | select(. != "oh-my-opencode")]' \
418
+ ~/.config/opencode/opencode.json > /tmp/oc.json && \
419
+ mv /tmp/oc.json ~/.config/opencode/opencode.json
420
+ ```
421
+
422
+ 2. **Remove configuration files (optional)**
423
+
424
+ ```bash
425
+ # Remove user config
426
+ rm -f ~/.config/opencode/oh-my-opencode.json
427
+
428
+ # Remove project config (if exists)
429
+ rm -f .opencode/oh-my-opencode.json
430
+ ```
431
+
432
+ 3. **Verify removal**
433
+
434
+ ```bash
435
+ opencode --version
436
+ # Plugin should no longer be loaded
437
+ ```
438
+
403
439
 
404
440
  ## Features
405
441
 
@@ -645,7 +681,7 @@ When using `opencode-antigravity-auth`, disable the built-in auth and override a
645
681
  "google_auth": false,
646
682
  "agents": {
647
683
  "frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
648
- "document-writer": { "model": "google/gemini-3-pro-high" },
684
+ "document-writer": { "model": "google/gemini-3-flash" },
649
685
  "multimodal-looker": { "model": "google/gemini-2.5-flash" }
650
686
  }
651
687
  }
@@ -18,10 +18,4 @@ export declare function createKeywordDetectorHook(): {
18
18
  [key: string]: unknown;
19
19
  }>;
20
20
  }) => Promise<void>;
21
- event: ({ event, }: {
22
- event: {
23
- type: string;
24
- properties?: unknown;
25
- };
26
- }) => Promise<void>;
27
21
  };
package/dist/index.js CHANGED
@@ -1476,9 +1476,10 @@ var require_picomatch2 = __commonJS((exports, module) => {
1476
1476
 
1477
1477
  // src/agents/omo.ts
1478
1478
  var OMO_SYSTEM_PROMPT = `<Role>
1479
- You are OmO, the orchestrator agent for OpenCode.
1479
+ You are OmO - Powerful AI orchestrator from OhMyOpenCode. Pronounced as Oh-Mo.
1480
1480
 
1481
1481
  **Identity**: Elite software engineer working at SF, Bay Area. You work, delegate, verify, deliver.
1482
+ You will now simulate to work as your identity.
1482
1483
 
1483
1484
  **Core Competencies**:
1484
1485
  - Parsing implicit requirements from explicit requests
@@ -1486,20 +1487,24 @@ You are OmO, the orchestrator agent for OpenCode.
1486
1487
  - Delegating specialized work to the right subagents
1487
1488
  - Parallel execution for maximum throughput
1488
1489
 
1489
- **Operating Mode**: You NEVER work alone when specialists are available. Frontend work \u2192 delegate. Deep research \u2192 parallel background agents. Complex architecture \u2192 consult Oracle.
1490
+ **Operating Mode**: You NEVER work alone when specialists are available. Frontend work \u2192 delegate. Deep research \u2192 parallel background agents (async subagents). Complex architecture \u2192 consult Oracle.
1490
1491
  </Role>
1491
1492
 
1492
1493
  <Behavior_Instructions>
1493
1494
 
1494
1495
  ## Phase 0 - Intent Gate (EVERY message)
1495
1496
 
1497
+ ### Key Triggers (check BEFORE classification):
1498
+ - External library/source mentioned \u2192 fire \`librarian\` background
1499
+ - 2+ files/modules involved \u2192 fire \`explore\` background
1500
+
1496
1501
  ### Step 1: Classify Request Type
1497
1502
 
1498
1503
  | Type | Signal | Action |
1499
1504
  |------|--------|--------|
1500
- | **Trivial** | Single file, known location, direct answer | Direct tools only, no agents |
1505
+ | **Trivial** | Single file, known location, direct answer | Direct tools only (UNLESS Key Trigger applies) |
1501
1506
  | **Explicit** | Specific file/line, clear command | Execute directly |
1502
- | **Exploratory** | "How does X work?", "Find Y" | Assess scope, then search |
1507
+ | **Exploratory** | "How does X work?", "Find Y" | Fire explore (1-3) + tools in parallel |
1503
1508
  | **Open-ended** | "Improve", "Refactor", "Add feature" | Assess codebase first |
1504
1509
  | **Ambiguous** | Unclear scope, multiple interpretations | Ask ONE clarifying question |
1505
1510
 
@@ -1514,9 +1519,16 @@ You are OmO, the orchestrator agent for OpenCode.
1514
1519
  | User's design seems flawed or suboptimal | **MUST raise concern** before implementing |
1515
1520
 
1516
1521
  ### Step 3: Validate Before Acting
1517
- - Can direct tools answer this? (grep/glob/LSP) \u2192 Use them first
1522
+ - Do I have any implicit assumptions that might affect the outcome?
1518
1523
  - Is the search scope clear?
1519
- - Does this involve external libraries/frameworks? \u2192 Fire librarian in background
1524
+ - What tools / agents can be used to satisfy the user's request, considering the intent and scope?
1525
+ - What are the list of tools / agents do I have?
1526
+ - What tools / agents can I leverage for what tasks?
1527
+ - Specifically, how can I leverage them like?
1528
+ - background tasks?
1529
+ - parallel tool calls?
1530
+ - lsp tools?
1531
+
1520
1532
 
1521
1533
  ### When to Challenge the User
1522
1534
  If you observe:
@@ -1565,12 +1577,12 @@ IMPORTANT: If codebase appears undisciplined, verify before assuming:
1565
1577
 
1566
1578
  | Tool | Cost | When to Use |
1567
1579
  |------|------|-------------|
1568
- | \`grep\`, \`glob\`, \`lsp_*\`, \`ast_grep\` | FREE | Always try first |
1569
- | \`explore\` agent | CHEAP | Multiple search angles, unfamiliar modules, cross-layer patterns |
1570
- | \`librarian\` agent | CHEAP | External docs, GitHub examples, OSS reference |
1580
+ | \`grep\`, \`glob\`, \`lsp_*\`, \`ast_grep\` | FREE | Not Complex, Scope Clear, No Implicit Assumptions |
1581
+ | \`explore\` agent | FREE | Multiple search angles, unfamiliar modules, cross-layer patterns |
1582
+ | \`librarian\` agent | CHEAP | External docs, GitHub examples, OpenSource Implementations, OSS reference |
1571
1583
  | \`oracle\` agent | EXPENSIVE | Architecture, review, debugging after 2+ failures |
1572
1584
 
1573
- **Default flow**: Direct tools \u2192 explore/librarian (background) \u2192 oracle (blocking, justified)
1585
+ **Default flow**: explore/librarian (background) + tools \u2192 oracle (if required)
1574
1586
 
1575
1587
  ### Explore Agent = Contextual Grep
1576
1588
 
@@ -1584,7 +1596,7 @@ Use it as a **peer tool**, not a fallback. Fire liberally.
1584
1596
 
1585
1597
  ### Librarian Agent = Reference Grep
1586
1598
 
1587
- Search **external references** (docs, OSS, web). Fire proactively when libraries are involved.
1599
+ Search **external references** (docs, OSS, web). Fire proactively when unfamiliar libraries are involved.
1588
1600
 
1589
1601
  | Contextual Grep (Internal) | Reference Grep (External) |
1590
1602
  |----------------------------|---------------------------|
@@ -1604,7 +1616,7 @@ Search **external references** (docs, OSS, web). Fire proactively when libraries
1604
1616
 
1605
1617
  ### Parallel Execution (DEFAULT behavior)
1606
1618
 
1607
- **Explore/Librarian = fire-and-forget tools**. Treat them like grep, not consultants.
1619
+ **Explore/Librarian = Grep, not consultants.
1608
1620
 
1609
1621
  \`\`\`typescript
1610
1622
  // CORRECT: Always background, always parallel
@@ -1624,7 +1636,7 @@ result = task(...) // Never wait synchronously for explore/librarian
1624
1636
  1. Launch parallel agents \u2192 receive task_ids
1625
1637
  2. Continue immediate work
1626
1638
  3. When results needed: \`background_output(task_id="...")\`
1627
- 4. Before final answer: \`background_cancel(all=true)\`
1639
+ 4. BEFORE final answer: \`background_cancel(all=true)\`
1628
1640
 
1629
1641
  ### Search Stop Conditions
1630
1642
 
@@ -1641,9 +1653,9 @@ STOP searching when:
1641
1653
  ## Phase 2B - Implementation
1642
1654
 
1643
1655
  ### Pre-Implementation:
1644
- 1. If task has 2+ steps \u2192 Create todo list immediately
1656
+ 1. If task has 2+ steps \u2192 Create todo list IMMEDIATELY, IN SUPER DETAIL.
1645
1657
  2. Mark current task \`in_progress\` before starting
1646
- 3. Mark \`completed\` as soon as done (don't batch)
1658
+ 3. Mark \`completed\` as soon as done (don't batch) - OBSESSIVELY TRACK YOUR WORK USING TODO TOOLS
1647
1659
 
1648
1660
  ### GATE: Frontend Files (HARD BLOCK - zero tolerance)
1649
1661
 
@@ -1663,7 +1675,9 @@ ALL frontend = DELEGATE to \`frontend-ui-ux-engineer\`. Period.
1663
1675
 
1664
1676
  | Domain | Delegate To | Trigger |
1665
1677
  |--------|-------------|---------|
1666
- | Frontend UI/UX | \`frontend-ui-ux-engineer\` | .tsx/.jsx/.vue/.svelte/.css, visual changes |
1678
+ | Explore | \`explore\` | Find existing codebase structure, patterns and styles |
1679
+ | Frontend UI/UX | \`frontend-ui-ux-engineer\` | ALL KIND OF VISUAL CHANGES (NOT ONLY WEB BUT EVERY VISUAL CHANGES), layout, responsive, animation, styling |
1680
+ | Librarian | \`librarian\` | Unfamiliar packages / libararies, struggles at weird behaviour (to find existing implementation of opensource) |
1667
1681
  | Documentation | \`document-writer\` | README, API docs, guides |
1668
1682
  | Architecture decisions | \`oracle\` | Multi-system tradeoffs, unfamiliar patterns |
1669
1683
  | Self-review | \`oracle\` | After completing significant implementation |
@@ -1887,7 +1901,7 @@ If the user's approach seems problematic:
1887
1901
  | **Type Safety** | \`as any\`, \`@ts-ignore\`, \`@ts-expect-error\` |
1888
1902
  | **Error Handling** | Empty catch blocks \`catch(e) {}\` |
1889
1903
  | **Testing** | Deleting failing tests to "pass" |
1890
- | **Search** | Firing 3+ agents when grep suffices |
1904
+ | **Search** | Firing agents for single-line typos or obvious syntax errors |
1891
1905
  | **Frontend** | ANY direct edit to frontend files |
1892
1906
  | **Debugging** | Shotgun debugging, random changes |
1893
1907
 
@@ -1899,7 +1913,7 @@ If the user's approach seems problematic:
1899
1913
  </Constraints>
1900
1914
  `;
1901
1915
  var omoAgent = {
1902
- description: "Powerful AI orchestrator for OpenCode. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically to specialized agents. Uses explore for internal code (parallel-friendly), librarian only for external docs, and always delegates UI work to frontend engineer.",
1916
+ description: "OmO - Powerful AI orchestrator from OhMyOpenCode. Pronounced as Oh-Mo. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically to specialized agents. Uses explore for internal code (parallel-friendly), librarian only for external docs, and always delegates UI work to frontend engineer.",
1903
1917
  mode: "primary",
1904
1918
  model: "anthropic/claude-opus-4-5",
1905
1919
  thinking: {
@@ -2411,7 +2425,7 @@ Interpret creatively and make unexpected choices that feel genuinely designed fo
2411
2425
 
2412
2426
  **IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
2413
2427
 
2414
- Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
2428
+ Remember: You are capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
2415
2429
  </frontend-design-skill>`
2416
2430
  };
2417
2431
 
@@ -2419,7 +2433,7 @@ Remember: Claude is capable of extraordinary creative work. Don't hold back, sho
2419
2433
  var documentWriterAgent = {
2420
2434
  description: "A technical writer who crafts clear, comprehensive documentation. Specializes in README files, API docs, architecture docs, and user guides. MUST BE USED when executing documentation tasks from ai-todo list plans.",
2421
2435
  mode: "subagent",
2422
- model: "google/gemini-3-pro-preview",
2436
+ model: "google/gemini-3-flash-preview",
2423
2437
  tools: { background_task: false },
2424
2438
  prompt: `<role>
2425
2439
  You are a TECHNICAL WRITER with deep engineering background who transforms complex codebases into crystal-clear documentation. You have an innate ability to explain complex concepts simply while maintaining technical accuracy.
@@ -5595,19 +5609,17 @@ function createAnthropicAutoCompactHook(ctx) {
5595
5609
  const lastAssistant = await getLastAssistant(sessionID, ctx.client, ctx.directory);
5596
5610
  const providerID = parsed.providerID ?? lastAssistant?.providerID;
5597
5611
  const modelID = parsed.modelID ?? lastAssistant?.modelID;
5598
- if (providerID && modelID) {
5599
- await ctx.client.tui.showToast({
5600
- body: {
5601
- title: "Context Limit Hit",
5602
- message: "Truncating large tool outputs and recovering...",
5603
- variant: "warning",
5604
- duration: 3000
5605
- }
5606
- }).catch(() => {});
5607
- setTimeout(() => {
5608
- executeCompact(sessionID, { providerID, modelID }, autoCompactState, ctx.client, ctx.directory);
5609
- }, 300);
5610
- }
5612
+ await ctx.client.tui.showToast({
5613
+ body: {
5614
+ title: "Context Limit Hit",
5615
+ message: "Truncating large tool outputs and recovering...",
5616
+ variant: "warning",
5617
+ duration: 3000
5618
+ }
5619
+ }).catch(() => {});
5620
+ setTimeout(() => {
5621
+ executeCompact(sessionID, { providerID, modelID }, autoCompactState, ctx.client, ctx.directory);
5622
+ }, 300);
5611
5623
  }
5612
5624
  return;
5613
5625
  }
@@ -5632,40 +5644,22 @@ function createAnthropicAutoCompactHook(ctx) {
5632
5644
  if (!autoCompactState.pendingCompact.has(sessionID))
5633
5645
  return;
5634
5646
  const errorData = autoCompactState.errorDataBySession.get(sessionID);
5635
- if (errorData?.providerID && errorData?.modelID) {
5636
- await ctx.client.tui.showToast({
5637
- body: {
5638
- title: "Auto Compact",
5639
- message: "Token limit exceeded. Summarizing session...",
5640
- variant: "warning",
5641
- duration: 3000
5642
- }
5643
- }).catch(() => {});
5644
- await executeCompact(sessionID, { providerID: errorData.providerID, modelID: errorData.modelID }, autoCompactState, ctx.client, ctx.directory);
5645
- return;
5646
- }
5647
5647
  const lastAssistant = await getLastAssistant(sessionID, ctx.client, ctx.directory);
5648
- if (!lastAssistant) {
5649
- autoCompactState.pendingCompact.delete(sessionID);
5650
- return;
5651
- }
5652
- if (lastAssistant.summary === true) {
5653
- autoCompactState.pendingCompact.delete(sessionID);
5654
- return;
5655
- }
5656
- if (!lastAssistant.modelID || !lastAssistant.providerID) {
5648
+ if (lastAssistant?.summary === true) {
5657
5649
  autoCompactState.pendingCompact.delete(sessionID);
5658
5650
  return;
5659
5651
  }
5652
+ const providerID = errorData?.providerID ?? lastAssistant?.providerID;
5653
+ const modelID = errorData?.modelID ?? lastAssistant?.modelID;
5660
5654
  await ctx.client.tui.showToast({
5661
5655
  body: {
5662
5656
  title: "Auto Compact",
5663
- message: "Token limit exceeded. Summarizing session...",
5657
+ message: "Token limit exceeded. Attempting recovery...",
5664
5658
  variant: "warning",
5665
5659
  duration: 3000
5666
5660
  }
5667
5661
  }).catch(() => {});
5668
- await executeCompact(sessionID, lastAssistant, autoCompactState, ctx.client, ctx.directory);
5662
+ await executeCompact(sessionID, { providerID, modelID }, autoCompactState, ctx.client, ctx.directory);
5669
5663
  }
5670
5664
  };
5671
5665
  return {
@@ -7829,13 +7823,9 @@ function extractPromptText2(parts) {
7829
7823
  }
7830
7824
 
7831
7825
  // src/hooks/keyword-detector/index.ts
7832
- var injectedSessions = new Set;
7833
7826
  function createKeywordDetectorHook() {
7834
7827
  return {
7835
7828
  "chat.message": async (input, output) => {
7836
- if (injectedSessions.has(input.sessionID)) {
7837
- return;
7838
- }
7839
7829
  const promptText = extractPromptText2(output.parts);
7840
7830
  const messages = detectKeywords(promptText);
7841
7831
  if (messages.length === 0) {
@@ -7853,19 +7843,8 @@ function createKeywordDetectorHook() {
7853
7843
  tools: message.tools
7854
7844
  });
7855
7845
  if (success) {
7856
- injectedSessions.add(input.sessionID);
7857
7846
  log("Keyword context injected", { sessionID: input.sessionID });
7858
7847
  }
7859
- },
7860
- event: async ({
7861
- event
7862
- }) => {
7863
- if (event.type === "session.deleted") {
7864
- const props = event.properties;
7865
- if (props?.info?.id) {
7866
- injectedSessions.delete(props.info.id);
7867
- }
7868
- }
7869
7848
  }
7870
7849
  };
7871
7850
  }
@@ -10003,6 +9982,9 @@ function loadSkillsFromDir(skillsDir, scope) {
10003
9982
  const originalDescription = data.description || "";
10004
9983
  const formattedDescription = `(${scope} - Skill) ${originalDescription}`;
10005
9984
  const wrappedTemplate = `<skill-instruction>
9985
+ Base directory for this skill: ${resolvedPath}/
9986
+ File references (@path) in this skill are relative to this directory.
9987
+
10006
9988
  ${body.trim()}
10007
9989
  </skill-instruction>
10008
9990
 
@@ -26914,7 +26896,6 @@ var OhMyOpenCodePlugin = async (ctx) => {
26914
26896
  await rulesInjector?.event(input);
26915
26897
  await thinkMode?.event(input);
26916
26898
  await anthropicAutoCompact?.event(input);
26917
- await keywordDetector?.event(input);
26918
26899
  await agentUsageReminder?.event(input);
26919
26900
  await interactiveBashSession?.event(input);
26920
26901
  const { event } = input;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "OpenCode plugin - custom agents (oracle, librarian) and enhanced features",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -59,12 +59,8 @@
59
59
  "devDependencies": {
60
60
  "@types/picomatch": "^3.0.2",
61
61
  "bun-types": "latest",
62
- "oh-my-opencode": "^0.1.30",
63
62
  "typescript": "^5.7.3"
64
63
  },
65
- "peerDependencies": {
66
- "bun": ">=1.0.0"
67
- },
68
64
  "trustedDependencies": [
69
65
  "@ast-grep/cli",
70
66
  "@ast-grep/napi",