Files
oh-my-opencode/dist/features/hook-message-injector/injector.d.ts
T
2026-03-14 04:56:50 +00:00

70 lines
3.0 KiB
TypeScript

import type { PluginInput } from "@opencode-ai/plugin";
import type { OriginalMessageContext, ToolPermission } from "./types";
export interface StoredMessage {
agent?: string;
model?: {
providerID?: string;
modelID?: string;
variant?: string;
};
tools?: Record<string, ToolPermission>;
}
type OpencodeClient = PluginInput["client"];
/**
* Finds the nearest message with required fields using SDK (for beta/SQLite backend).
* Uses client.session.messages() to fetch message data from SQLite.
*/
export declare function findNearestMessageWithFieldsFromSDK(client: OpencodeClient, sessionID: string): Promise<StoredMessage | null>;
/**
* Finds the FIRST (oldest) message with agent field using SDK (for beta/SQLite backend).
*/
export declare function findFirstMessageWithAgentFromSDK(client: OpencodeClient, sessionID: string): Promise<string | null>;
/**
* Finds the nearest message with required fields (agent, model.providerID, model.modelID).
* Reads from JSON files - for stable (JSON) backend.
*
* **Version-gated behavior:**
* - On beta (SQLite backend): Returns null immediately (no JSON storage)
* - On stable (JSON backend): Reads from JSON files in messageDir
*
* @deprecated Use findNearestMessageWithFieldsFromSDK for beta/SQLite backend
*/
export declare function findNearestMessageWithFields(messageDir: string): StoredMessage | null;
/**
* Finds the FIRST (oldest) message in the session with agent field.
* Reads from JSON files - for stable (JSON) backend.
*
* **Version-gated behavior:**
* - On beta (SQLite backend): Returns null immediately (no JSON storage)
* - On stable (JSON backend): Reads from JSON files in messageDir
*
* @deprecated Use findFirstMessageWithAgentFromSDK for beta/SQLite backend
*/
export declare function findFirstMessageWithAgent(messageDir: string): string | null;
export declare function generateMessageId(): string;
export declare function generatePartId(): string;
/**
* Injects a hook message into the session storage.
*
* **Version-gated behavior:**
* - On beta (SQLite backend): Logs warning and skips injection (writes are invisible to SQLite)
* - On stable (JSON backend): Writes message and part JSON files
*
* Features degraded on beta:
* - Hook message injection (e.g., continuation prompts, context injection) won't persist
* - Atlas hook's injected messages won't be visible in SQLite backend
* - Todo continuation enforcer's injected prompts won't persist
* - Ralph loop's continuation prompts won't persist
*
* @param sessionID - Target session ID
* @param hookContent - Content to inject
* @param originalMessage - Context from the original message
* @returns true if injection succeeded, false otherwise
*/
export declare function injectHookMessage(sessionID: string, hookContent: string, originalMessage: OriginalMessageContext): boolean;
export declare function resolveMessageContext(sessionID: string, client: OpencodeClient, messageDir: string | null): Promise<{
prevMessage: StoredMessage | null;
firstMessageAgent: string | null;
}>;
export {};