oh-my-opencode 2.4.6 → 2.4.7

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.
Files changed (2) hide show
  1. package/dist/index.js +24 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6178,9 +6178,14 @@ function createPreemptiveCompactionHook(ctx, options) {
6178
6178
  state2.compactionInProgress.delete(sessionID);
6179
6179
  setTimeout(async () => {
6180
6180
  try {
6181
+ const messageDir = getMessageDir4(sessionID);
6182
+ const storedMessage = messageDir ? findNearestMessageWithFields(messageDir) : null;
6181
6183
  await ctx.client.session.promptAsync({
6182
6184
  path: { id: sessionID },
6183
- body: { parts: [{ type: "text", text: "Continue" }] },
6185
+ body: {
6186
+ agent: storedMessage?.agent,
6187
+ parts: [{ type: "text", text: "Continue" }]
6188
+ },
6184
6189
  query: { directory: ctx.directory }
6185
6190
  });
6186
6191
  } catch {}
@@ -7355,7 +7360,10 @@ ${result.inputLines ?? ""}`,
7355
7360
  const claudeConfig = await loadClaudeHooksConfig();
7356
7361
  const extendedConfig = await loadPluginExtendedConfig();
7357
7362
  const cachedInput = getToolInput(input.sessionID, input.tool, input.callID) || {};
7358
- recordToolResult(input.sessionID, input.tool, cachedInput, output.metadata || {});
7363
+ const metadata = output.metadata;
7364
+ const hasMetadata = metadata && typeof metadata === "object" && Object.keys(metadata).length > 0;
7365
+ const toolOutput = hasMetadata ? metadata : { output: output.output };
7366
+ recordToolResult(input.sessionID, input.tool, cachedInput, toolOutput);
7359
7367
  if (!isHookDisabled(config, "PostToolUse")) {
7360
7368
  const postClient = {
7361
7369
  session: {
@@ -8634,19 +8642,27 @@ function createKeywordDetectorHook() {
8634
8642
  "chat.message": async (input, output) => {
8635
8643
  const isFirstMessage = !sessionFirstMessageProcessed2.has(input.sessionID);
8636
8644
  sessionFirstMessageProcessed2.add(input.sessionID);
8637
- if (isFirstMessage) {
8638
- log("Skipping keyword detection on first message for title generation", { sessionID: input.sessionID });
8639
- return;
8640
- }
8641
8645
  const promptText = extractPromptText2(output.parts);
8642
8646
  const messages = detectKeywords(promptText);
8643
8647
  if (messages.length === 0) {
8644
8648
  return;
8645
8649
  }
8646
- log(`Keywords detected: ${messages.length}`, { sessionID: input.sessionID });
8647
- const message = output.message;
8648
8650
  const context = messages.join(`
8649
8651
  `);
8652
+ if (isFirstMessage) {
8653
+ log(`Keywords detected on first message, transforming parts directly`, { sessionID: input.sessionID, keywordCount: messages.length });
8654
+ const idx = output.parts.findIndex((p) => p.type === "text" && p.text);
8655
+ if (idx >= 0) {
8656
+ output.parts[idx].text = `${context}
8657
+
8658
+ ---
8659
+
8660
+ ${output.parts[idx].text ?? ""}`;
8661
+ }
8662
+ return;
8663
+ }
8664
+ log(`Keywords detected: ${messages.length}`, { sessionID: input.sessionID });
8665
+ const message = output.message;
8650
8666
  log(`[keyword-detector] Injecting context for ${messages.length} keywords`, { sessionID: input.sessionID, contextLength: context.length });
8651
8667
  const success = injectHookMessage(input.sessionID, context, {
8652
8668
  agent: message.agent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "2.4.6",
3
+ "version": "2.4.7",
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",