diff --git a/src/commands.ts b/src/commands.ts new file mode 100644 index 0000000..cfdd473 --- /dev/null +++ b/src/commands.ts @@ -0,0 +1,31 @@ +import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent"; +import type { ExtensionState, RuntimeFlags } from "./state.js"; + +export interface SkillReinjectCommandDeps { + state: ExtensionState; + runtime: RuntimeFlags; + persistState: () => void; +} + +export function registerSkillReinjectCommand(pi: ExtensionAPI, _deps: SkillReinjectCommandDeps): void { + pi.registerCommand("skill-reinject", { + description: + "Skill re-inject after compaction (usage: /skill-reinject [on|off|list|now|integration ...])", + handler: handleSkillReinjectCommand, + }); +} + +async function handleSkillReinjectCommand( + args: string, + ctx: ExtensionCommandContext, +): Promise { + const trimmed = args.trim(); + if (!trimmed) { + return; + } + + const subcommand = trimmed.split(/\s+/)[0]; + if (ctx.hasUI) { + ctx.ui.notify(`skill-reinject: unknown subcommand "${subcommand}"`, "warning"); + } +} diff --git a/src/index.ts b/src/index.ts index c7f4051..9cecc7c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ import { type Skill, } from "@earendil-works/pi-coding-agent"; import { detectAndCachePiAutoCompact, resolveDeliveryMode } from "./auto-compact.js"; +import { registerSkillReinjectCommand } from "./commands.js"; import { consumeCompactionOnSessionCompact, createCompactionRuntime, @@ -44,6 +45,8 @@ export default function skillReinject(pi: ExtensionAPI): void { saveState(pi, state); } + registerSkillReinjectCommand(pi, { state, runtime, persistState }); + function trackSkillAndPersist(input: TrackSkillInput): void { trackSkill(state, input); persistState();