mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 08:35:57 +00:00
chore: initialize my-pi extension bundle
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { resolveRtkRewrite, type RtkRewriteProviderOptions } from "./rtk-rewrite-provider.js";
|
||||
import { splitLeadingEnvAssignments } from "./shell-env-prefix.js";
|
||||
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||
import type { RtkIntegrationConfig } from "./types.js";
|
||||
|
||||
export interface RewriteDecision {
|
||||
changed: boolean;
|
||||
originalCommand: string;
|
||||
rewrittenCommand: string;
|
||||
reason: "ok" | "empty" | "already_rtk" | "no_match";
|
||||
warning?: string;
|
||||
}
|
||||
|
||||
export async function computeRewriteDecision(
|
||||
command: string,
|
||||
_config: RtkIntegrationConfig,
|
||||
pi: ExtensionAPI,
|
||||
rewriteOptions: RtkRewriteProviderOptions = {},
|
||||
): Promise<RewriteDecision> {
|
||||
if (!command || !command.trim()) {
|
||||
return { changed: false, originalCommand: command, rewrittenCommand: command, reason: "empty" };
|
||||
}
|
||||
|
||||
const trimmedStart = command.trimStart();
|
||||
const effectiveCommand = splitLeadingEnvAssignments(trimmedStart).command.trimStart();
|
||||
if (effectiveCommand === "rtk" || effectiveCommand.startsWith("rtk ")) {
|
||||
return { changed: false, originalCommand: command, rewrittenCommand: command, reason: "already_rtk" };
|
||||
}
|
||||
|
||||
const result = await resolveRtkRewrite(pi, command, rewriteOptions);
|
||||
|
||||
if (result.changed && result.rewrittenCommand) {
|
||||
return {
|
||||
changed: true,
|
||||
originalCommand: command,
|
||||
rewrittenCommand: result.rewrittenCommand,
|
||||
reason: "ok",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
changed: false,
|
||||
originalCommand: command,
|
||||
rewrittenCommand: command,
|
||||
reason: "no_match",
|
||||
warning: result.error,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user