my-pi 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -81,6 +81,12 @@ echo "plan a login page" | pnpx my-pi@latest --json
81
81
  Outputs NDJSON events — one JSON object per line — for programmatic
82
82
  consumption by other agents or scripts.
83
83
 
84
+ In non-interactive modes (`"prompt"`, `-P`, `--json`), my-pi keeps
85
+ headless-capable built-ins like MCP, LSP, chains, prompt presets,
86
+ recall, hooks, and secret filtering enabled, while skipping UI-only
87
+ built-ins like handoff, confirm-destructive, session auto-naming, and
88
+ working-indicator customization.
89
+
84
90
  ### Local telemetry (SQLite)
85
91
 
86
92
  Telemetry is **disabled by default**. When enabled, my-pi records
@@ -238,6 +244,7 @@ import { create_my_pi, runPrintMode } from 'my-pi';
238
244
  const runtime = await create_my_pi({
239
245
  agent_dir: './tmp/pi-agent',
240
246
  extensions: ['./my-ext.ts'],
247
+ runtime_mode: 'json',
241
248
  telemetry: true,
242
249
  telemetry_db_path: './tmp/evals.db',
243
250
  });
@@ -2555,6 +2555,7 @@ function count_pending_enabled_servers(servers) {
2555
2555
  return Array.from(servers.values()).filter((state) => state.enabled && state.status !== "connected").length;
2556
2556
  }
2557
2557
  function update_mcp_status(ctx, servers) {
2558
+ if (!ctx.hasUI) return;
2558
2559
  if (servers.size === 0) {
2559
2560
  ctx.ui.setStatus("mcp", void 0);
2560
2561
  return;
@@ -2570,6 +2571,7 @@ function update_mcp_status(ctx, servers) {
2570
2571
  ctx.ui.setStatus("mcp", ctx.ui.theme.fg("dim", fragments.join(" · ")));
2571
2572
  }
2572
2573
  function set_connect_feedback(ctx, pending_server_count) {
2574
+ if (!ctx.hasUI) return () => {};
2573
2575
  const label = pending_server_count === 1 ? "Connecting 1 MCP server..." : `Connecting ${pending_server_count} MCP servers...`;
2574
2576
  ctx.ui.setWorkingMessage(label);
2575
2577
  ctx.ui.setWorkingIndicator({
@@ -5175,6 +5177,7 @@ function parse_working_indicator_mode(input) {
5175
5177
  return null;
5176
5178
  }
5177
5179
  function apply_working_indicator(ctx, mode) {
5180
+ if (!ctx.hasUI) return;
5178
5181
  ctx.ui.setWorkingIndicator(get_working_indicator(ctx, mode));
5179
5182
  }
5180
5183
  async function working_indicator(pi) {
@@ -5233,6 +5236,12 @@ const PI_AGENT_DIR_ENV = "PI_CODING_AGENT_DIR";
5233
5236
  function resolve_agent_dir(cwd, agent_dir) {
5234
5237
  return agent_dir ? resolve(cwd, agent_dir) : getAgentDir();
5235
5238
  }
5239
+ const NON_INTERACTIVE_UI_ONLY_BUILTINS = [
5240
+ "handoff",
5241
+ "session-name",
5242
+ "confirm-destructive",
5243
+ "working-indicator"
5244
+ ];
5236
5245
  function get_force_disabled_builtins(options) {
5237
5246
  const force_disabled = /* @__PURE__ */ new Set();
5238
5247
  if (!options.mcp) force_disabled.add("mcp");
@@ -5247,6 +5256,7 @@ function get_force_disabled_builtins(options) {
5247
5256
  if (!options.confirm_destructive) force_disabled.add("confirm-destructive");
5248
5257
  if (!options.hooks_resolution) force_disabled.add("hooks-resolution");
5249
5258
  if (!options.working_indicator) force_disabled.add("working-indicator");
5259
+ if (options.runtime_mode && options.runtime_mode !== "interactive") for (const key of NON_INTERACTIVE_UI_ONLY_BUILTINS) force_disabled.add(key);
5250
5260
  return force_disabled;
5251
5261
  }
5252
5262
  function create_builtin_extension_factory(key, extension, force_disabled) {
@@ -5268,11 +5278,12 @@ function create_extensions_override(managed_inline_paths) {
5268
5278
  };
5269
5279
  }
5270
5280
  async function create_my_pi(options = {}) {
5271
- const { cwd = process.cwd(), agent_dir, extensions = [], extensionFactories: user_factories = [], mcp = true, skills = true, chain = true, filter_output = true, handoff = true, recall = true, prompt_presets = true, lsp = true, session_name = true, confirm_destructive = true, hooks_resolution = true, working_indicator = true, telemetry, telemetry_db_path, model, system_prompt, append_system_prompt } = options;
5281
+ const { cwd = process.cwd(), agent_dir, extensions = [], extensionFactories: user_factories = [], runtime_mode = "interactive", mcp = true, skills = true, chain = true, filter_output = true, handoff = true, recall = true, prompt_presets = true, lsp = true, session_name = true, confirm_destructive = true, hooks_resolution = true, working_indicator = true, telemetry, telemetry_db_path, model, system_prompt, append_system_prompt } = options;
5272
5282
  const effective_agent_dir = resolve_agent_dir(cwd, agent_dir);
5273
5283
  if (agent_dir) process.env[PI_AGENT_DIR_ENV] = effective_agent_dir;
5274
5284
  const resolved_extensions = extensions.map((p) => resolve(cwd, p));
5275
5285
  const force_disabled = get_force_disabled_builtins({
5286
+ runtime_mode,
5276
5287
  mcp,
5277
5288
  skills,
5278
5289
  chain,
@@ -5310,7 +5321,7 @@ async function create_my_pi(options = {}) {
5310
5321
  ...system_prompt !== void 0 ? { systemPromptOverride: () => system_prompt } : {},
5311
5322
  ...append_system_prompt !== void 0 ? { appendSystemPromptOverride: (base) => [...base, append_system_prompt] } : {},
5312
5323
  additionalExtensionPaths: [...resolved_extensions],
5313
- additionalThemePaths: [PACKAGE_THEME_DIR],
5324
+ ...runtime_mode === "interactive" ? { additionalThemePaths: [PACKAGE_THEME_DIR] } : {},
5314
5325
  extensionFactories: [...managed_extension_factories, ...user_factories],
5315
5326
  extensionsOverride: create_extensions_override(managed_inline_paths),
5316
5327
  skillsOverride: (base) => {
@@ -5340,6 +5351,6 @@ async function create_my_pi(options = {}) {
5340
5351
  });
5341
5352
  }
5342
5353
  //#endregion
5343
- export { create_my_pi as n, runPrintMode$1 as r, InteractiveMode$1 as t };
5354
+ export { runPrintMode$1 as i, create_my_pi as n, get_force_disabled_builtins as r, InteractiveMode$1 as t };
5344
5355
 
5345
- //# sourceMappingURL=api-q7uQTUHx.js.map
5356
+ //# sourceMappingURL=api-BtlxiHyw.js.map