Commit f131aa5994e2

Vincent Demeester <vincent@sbr.pm>
2026-05-19 16:53:57
feat(pi): add --start-mode CLI flag to prompt-editor
Added ephemeral mode application via CLI flag so a specific mode can be used on launch without persisting provider/model changes to settings.json.
1 parent 94fd178
Changed files (1)
dots
pi
agent
dots/pi/agent/extensions/prompt-editor.ts
@@ -1226,6 +1226,13 @@ function applyEditor(pi: ExtensionAPI, ctx: ExtensionContext) {
 // =============================================================================
 
 export default function (pi: ExtensionAPI) {
+	// Register --start-mode CLI flag
+	pi.registerFlag("start-mode", {
+		description: "Start with a specific mode from modes.json",
+		type: "string",
+		default: "",
+	});
+
 	pi.registerCommand("mode", {
 		description: "Select prompt mode",
 		handler: async (args, ctx) => {
@@ -1337,6 +1344,21 @@ export default function (pi: ExtensionAPI) {
 		customOverlay = null;
 		installEditorBorderPatch();
 
+		// Check --start-mode CLI flag — apply mode ephemerally without
+		// persisting provider/model to settings.json so subsequent launches
+		// aren't affected.
+		const startMode = pi.getFlag("start-mode") as string;
+		if (startMode) {
+			const settingsPath = path.join(getGlobalAgentDir(), "settings.json");
+			const savedSettings = await fs.readFile(settingsPath, "utf8").catch(() => null);
+			await applyMode(pi, ctx, startMode);
+			// Restore settings.json so defaultProvider/defaultModel aren't changed
+			if (savedSettings) {
+				await fs.writeFile(settingsPath, savedSettings, "utf8");
+			}
+			return;
+		}
+
 		const inferred = inferModeFromSelection(ctx, pi, runtime.data);
 		if (inferred) {
 			runtime.currentMode = inferred;