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.
- package/dist/index.js +24 -8
- 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: {
|
|
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
|
-
|
|
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,
|