my-pi 0.3.5 → 0.4.0

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.
Files changed (38) hide show
  1. package/README.md +32 -252
  2. package/dist/extensions.d.ts +11 -0
  3. package/dist/extensions.js +148 -0
  4. package/dist/extensions.js.map +1 -0
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.js +40 -523
  7. package/dist/index.js.map +1 -1
  8. package/dist/manager.d.ts +3 -0
  9. package/dist/manager.js +71 -0
  10. package/dist/manager.js.map +1 -0
  11. package/dist/settings.d.ts +3 -0
  12. package/dist/settings.js +16 -0
  13. package/dist/settings.js.map +1 -0
  14. package/package.json +33 -78
  15. package/dist/api.d.ts +0 -494
  16. package/dist/api.js +0 -532
  17. package/dist/api.js.map +0 -1
  18. package/dist/builtin-registry-wSfsQBi4.js +0 -563
  19. package/dist/builtin-registry-wSfsQBi4.js.map +0 -1
  20. package/dist/footer-BAZIMVSb.js +0 -1
  21. package/dist/handoff-C6wR2mSG.js +0 -28
  22. package/dist/handoff-C6wR2mSG.js.map +0 -1
  23. package/dist/hooks-resolution-qlhPfMFJ.js +0 -485
  24. package/dist/hooks-resolution-qlhPfMFJ.js.map +0 -1
  25. package/dist/openrouter-fusion-config-BWsHBPQv.js +0 -65
  26. package/dist/openrouter-fusion-config-BWsHBPQv.js.map +0 -1
  27. package/dist/prompt-presets-XraV03Ed.js +0 -1402
  28. package/dist/prompt-presets-XraV03Ed.js.map +0 -1
  29. package/dist/session-name-CD6TVRnh.js +0 -158
  30. package/dist/session-name-CD6TVRnh.js.map +0 -1
  31. package/dist/settings-BCn3P9qH.js +0 -177
  32. package/dist/settings-BCn3P9qH.js.map +0 -1
  33. package/dist/startup-screen-DUeBWuAc.js +0 -218
  34. package/dist/startup-screen-DUeBWuAc.js.map +0 -1
  35. package/dist/turn-timer-CoyDI4gQ.js +0 -64
  36. package/dist/turn-timer-CoyDI4gQ.js.map +0 -1
  37. package/dist/umans-provider-C2UJ4qkO.js +0 -307
  38. package/dist/umans-provider-C2UJ4qkO.js.map +0 -1
@@ -1,563 +0,0 @@
1
- //#region src/extensions/builtin-registry.ts
2
- const BUILTIN_EXTENSION_REGISTRY = [
3
- {
4
- key: "context-sidecar",
5
- label: "Context sidecar",
6
- docs_label: "SQLite context sidecar",
7
- description: "Local SQLite FTS sidecar for oversized tool output",
8
- default_enabled: true,
9
- option_name: "context_sidecar",
10
- cli_arg: "no-context-sidecar",
11
- cli_flag: "--no-context-sidecar",
12
- cli_description: "Disable SQLite context sidecar for large tool output",
13
- aliases: [
14
- "context-sidecar",
15
- "context",
16
- "sidecar"
17
- ],
18
- external_package_name: "@spences10/pi-context",
19
- load: async () => (await import("@spences10/pi-context")).default
20
- },
21
- {
22
- key: "mcp",
23
- label: "MCP",
24
- docs_label: "MCP",
25
- description: "MCP server integration and /mcp command",
26
- default_enabled: true,
27
- option_name: "mcp",
28
- cli_arg: "no-mcp",
29
- cli_flag: "--no-mcp",
30
- cli_description: "Disable built-in MCP extension",
31
- aliases: ["mcp"],
32
- external_package_name: "@spences10/pi-mcp",
33
- load: async () => (await import("@spences10/pi-mcp")).default
34
- },
35
- {
36
- key: "openrouter-fusion-config",
37
- label: "OpenRouter Fusion config",
38
- docs_label: "OpenRouter Fusion config guard",
39
- description: "Keeps OpenRouter Fusion off Anthropic by injecting a non-Anthropic panel and judge",
40
- default_enabled: true,
41
- option_name: "openrouter_fusion_config",
42
- cli_arg: "no-openrouter-fusion-config",
43
- cli_flag: "--no-openrouter-fusion-config",
44
- cli_description: "Disable OpenRouter Fusion non-Anthropic config",
45
- aliases: ["openrouter-fusion-config", "fusion-budget"],
46
- load: async () => (await import("./openrouter-fusion-config-BWsHBPQv.js")).default
47
- },
48
- {
49
- key: "umans-provider",
50
- label: "Umans provider",
51
- docs_label: "Umans provider",
52
- description: "Umans.ai Anthropic Messages provider with API key login support",
53
- default_enabled: true,
54
- option_name: "umans_provider",
55
- cli_arg: "no-umans-provider",
56
- cli_flag: "--no-umans-provider",
57
- cli_description: "Disable built-in Umans provider",
58
- aliases: ["umans-provider", "umans"],
59
- load: async () => (await import("./umans-provider-C2UJ4qkO.js")).default
60
- },
61
- {
62
- key: "footer",
63
- label: "Footer",
64
- docs_label: "Footer",
65
- description: "Configurable interactive footer/statusline",
66
- default_enabled: true,
67
- option_name: "footer",
68
- cli_arg: "no-footer",
69
- cli_flag: "--no-footer",
70
- cli_description: "Disable custom footer/statusline",
71
- aliases: [
72
- "footer",
73
- "statusline",
74
- "status-line"
75
- ],
76
- mode_constraints: {
77
- disabled_in: [
78
- "print",
79
- "json",
80
- "rpc"
81
- ],
82
- reason: "Footer only renders in the interactive TUI"
83
- },
84
- load: async () => (await import("./footer-BAZIMVSb.js")).default
85
- },
86
- {
87
- key: "codex-usage",
88
- label: "Codex usage",
89
- docs_label: "Codex usage status",
90
- description: "OpenAI Codex usage status for the footer",
91
- default_enabled: true,
92
- option_name: "codex_usage",
93
- cli_arg: "no-codex-usage",
94
- cli_flag: "--no-codex-usage",
95
- cli_description: "Disable Codex usage footer status",
96
- aliases: ["codex-usage", "codex-status"],
97
- external_package_name: "@spences10/pi-codex-usage",
98
- load: async () => (await import("@spences10/pi-codex-usage")).default
99
- },
100
- {
101
- key: "kimi-usage",
102
- label: "Kimi usage",
103
- docs_label: "Kimi usage status",
104
- description: "Kimi For Coding usage status for the footer",
105
- default_enabled: true,
106
- option_name: "kimi_usage",
107
- cli_arg: "no-kimi-usage",
108
- cli_flag: "--no-kimi-usage",
109
- cli_description: "Disable Kimi usage footer status",
110
- aliases: ["kimi-usage", "kimi-status"],
111
- external_package_name: "@spences10/pi-kimi-usage",
112
- load: async () => (await import("@spences10/pi-kimi-usage")).default
113
- },
114
- {
115
- key: "harness",
116
- label: "Harness",
117
- docs_label: "Task harness runtime",
118
- description: "Ephemeral /tmp task harness runtime with tools, enforcement, and bundled skills",
119
- default_enabled: true,
120
- option_name: "harness",
121
- cli_arg: "no-harness",
122
- cli_flag: "--no-harness",
123
- cli_description: "Disable task harness runtime",
124
- aliases: ["harness", "task-harness"],
125
- external_package_name: "@spences10/pi-harness",
126
- load: async () => (await import("@spences10/pi-harness")).default
127
- },
128
- {
129
- key: "factory",
130
- label: "Software factory (experimental)",
131
- docs_label: "Experimental software-factory control plane",
132
- description: "Paused experimental workflow control plane; enable explicitly for Factory v1 evaluation only",
133
- default_enabled: false,
134
- option_name: "factory",
135
- cli_arg: "no-factory",
136
- cli_flag: "--no-factory",
137
- cli_description: "Disable software-factory control plane",
138
- aliases: [
139
- "factory",
140
- "software-factory",
141
- "control-plane"
142
- ],
143
- external_package_name: "@spences10/pi-factory",
144
- load: async () => (await import("@spences10/pi-factory")).default
145
- },
146
- {
147
- key: "skills",
148
- label: "Skills",
149
- docs_label: "Skills",
150
- description: "Managed pi-native skills and /skills command",
151
- default_enabled: true,
152
- option_name: "skills",
153
- cli_arg: "no-skills",
154
- cli_flag: "--no-skills",
155
- cli_description: "Disable built-in skills extension",
156
- aliases: ["skills", "skill"],
157
- external_package_name: "@spences10/pi-skills",
158
- load: async () => (await import("@spences10/pi-skills")).default
159
- },
160
- {
161
- key: "skill-importer",
162
- label: "Skill importer",
163
- docs_label: "Skill importer",
164
- description: "Import external Claude/plugin skills into Pi-native storage",
165
- default_enabled: true,
166
- option_name: "skill_importer",
167
- cli_arg: "no-skill-importer",
168
- cli_flag: "--no-skill-importer",
169
- cli_description: "Disable external skill importer extension",
170
- aliases: [
171
- "skill-importer",
172
- "import-skills",
173
- "skill-import"
174
- ],
175
- external_package_name: "@spences10/pi-skill-importer",
176
- load: async () => (await import("@spences10/pi-skill-importer")).default
177
- },
178
- {
179
- key: "filter-output",
180
- label: "Secret redaction",
181
- docs_label: "Secret redaction",
182
- description: "Redacts secrets from tool output before the model sees them",
183
- default_enabled: true,
184
- option_name: "filter_output",
185
- cli_arg: "no-filter",
186
- cli_flag: "--no-filter",
187
- cli_description: "Disable secret redaction in tool output",
188
- aliases: [
189
- "filter-output",
190
- "filter_output",
191
- "filter",
192
- "redaction",
193
- "secret-redaction",
194
- "output-redaction"
195
- ],
196
- external_package_name: "@spences10/pi-redact",
197
- load: async () => (await import("@spences10/pi-redact")).default
198
- },
199
- {
200
- key: "recall",
201
- label: "Recall",
202
- docs_label: "Recall",
203
- description: "pirecall reminder and background session sync",
204
- default_enabled: true,
205
- option_name: "recall",
206
- cli_arg: "no-recall",
207
- cli_flag: "--no-recall",
208
- cli_description: "Disable recall extension",
209
- aliases: ["recall", "pirecall"],
210
- external_package_name: "@spences10/pi-recall",
211
- load: async () => (await import("@spences10/pi-recall")).default
212
- },
213
- {
214
- key: "nopeek",
215
- label: "Nopeek",
216
- docs_label: "Nopeek",
217
- description: "nopeek reminder for secret-safe environment loading",
218
- default_enabled: true,
219
- option_name: "nopeek",
220
- cli_arg: "no-nopeek",
221
- cli_flag: "--no-nopeek",
222
- cli_description: "Disable nopeek reminder extension",
223
- aliases: [
224
- "nopeek",
225
- "secrets",
226
- "secret-loading"
227
- ],
228
- external_package_name: "@spences10/pi-nopeek",
229
- load: async () => (await import("@spences10/pi-nopeek")).default
230
- },
231
- {
232
- key: "observability",
233
- label: "Observability",
234
- docs_label: "Live observability",
235
- description: "Optional live event stream and local browser dashboard",
236
- default_enabled: true,
237
- option_name: "observability",
238
- cli_arg: "no-observability",
239
- cli_flag: "--no-observability",
240
- cli_description: "Disable live observability extension",
241
- aliases: [
242
- "observability",
243
- "obs",
244
- "live-events"
245
- ],
246
- external_package_name: "@spences10/pi-observability",
247
- load: async () => (await import("@spences10/pi-observability")).default
248
- },
249
- {
250
- key: "omnisearch",
251
- label: "Omnisearch",
252
- docs_label: "Omnisearch",
253
- description: "mcp-omnisearch reminder for verified web research",
254
- default_enabled: true,
255
- option_name: "omnisearch",
256
- cli_arg: "no-omnisearch",
257
- cli_flag: "--no-omnisearch",
258
- cli_description: "Disable mcp-omnisearch reminder extension",
259
- aliases: [
260
- "omnisearch",
261
- "search",
262
- "web-search",
263
- "research"
264
- ],
265
- external_package_name: "@spences10/pi-omnisearch",
266
- load: async () => (await import("@spences10/pi-omnisearch")).default
267
- },
268
- {
269
- key: "sqlite-tools",
270
- label: "SQLite tools",
271
- docs_label: "SQLite tools",
272
- description: "mcp-sqlite-tools reminder for safer SQLite database work",
273
- default_enabled: true,
274
- option_name: "sqlite_tools",
275
- cli_arg: "no-sqlite-tools",
276
- cli_flag: "--no-sqlite-tools",
277
- cli_description: "Disable mcp-sqlite-tools reminder extension",
278
- aliases: [
279
- "sqlite-tools",
280
- "sqlite",
281
- "mcp-sqlite-tools"
282
- ],
283
- external_package_name: "@spences10/pi-sqlite-tools",
284
- load: async () => (await import("@spences10/pi-sqlite-tools")).default
285
- },
286
- {
287
- key: "talk",
288
- label: "Talk",
289
- docs_label: "Hold-Space dictation",
290
- description: "Hold Space to dictate into the input editor",
291
- default_enabled: true,
292
- option_name: "talk",
293
- cli_arg: "no-talk",
294
- cli_flag: "--no-talk",
295
- cli_description: "Disable hold-Space dictation",
296
- aliases: [
297
- "talk",
298
- "voice",
299
- "dictation"
300
- ],
301
- external_package_name: "@spences10/pi-talk",
302
- mode_constraints: {
303
- disabled_in: [
304
- "print",
305
- "json",
306
- "rpc"
307
- ],
308
- reason: "Talk requires the interactive TUI"
309
- },
310
- load: async () => (await import("@spences10/pi-talk")).default
311
- },
312
- {
313
- key: "starfield",
314
- label: "Starfield",
315
- docs_label: "Starfield",
316
- description: "Subtle twinkling stars in the input editor",
317
- default_enabled: true,
318
- option_name: "starfield",
319
- cli_arg: "no-starfield",
320
- cli_flag: "--no-starfield",
321
- cli_description: "Disable the input star field",
322
- aliases: ["starfield", "stars"],
323
- external_package_name: "@spences10/pi-starfield",
324
- mode_constraints: {
325
- disabled_in: [
326
- "print",
327
- "json",
328
- "rpc"
329
- ],
330
- reason: "Starfield only renders in the interactive TUI"
331
- },
332
- load: async () => (await import("@spences10/pi-starfield")).default
333
- },
334
- {
335
- key: "startup-screen",
336
- label: "Startup screen",
337
- docs_label: "Startup screen",
338
- description: "Pixel-art gradient startup header for interactive sessions",
339
- default_enabled: true,
340
- option_name: "startup_screen",
341
- cli_arg: "no-startup-screen",
342
- cli_flag: "--no-startup-screen",
343
- cli_description: "Disable the custom startup screen",
344
- aliases: [
345
- "startup-screen",
346
- "startup",
347
- "header",
348
- "splash"
349
- ],
350
- mode_constraints: {
351
- disabled_in: [
352
- "print",
353
- "json",
354
- "rpc"
355
- ],
356
- reason: "Startup screen only renders in the interactive TUI"
357
- },
358
- load: async () => (await import("./startup-screen-DUeBWuAc.js")).default
359
- },
360
- {
361
- key: "prompt-presets",
362
- label: "Prompt presets",
363
- docs_label: "Prompt presets",
364
- description: "Runtime prompt preset selection and /prompt-preset command",
365
- default_enabled: true,
366
- option_name: "prompt_presets",
367
- cli_arg: "no-prompt-presets",
368
- cli_flag: "--no-prompt-presets",
369
- cli_description: "Disable prompt presets extension",
370
- aliases: [
371
- "prompt-preset",
372
- "preset",
373
- "presets"
374
- ],
375
- load: async () => (await import("./prompt-presets-XraV03Ed.js")).default
376
- },
377
- {
378
- key: "turn-timer",
379
- label: "Turn timer",
380
- docs_label: "Turn timer",
381
- description: "Live elapsed timer beside the working spinner with persisted turn durations",
382
- default_enabled: true,
383
- option_name: "turn_timer",
384
- cli_arg: "no-turn-timer",
385
- cli_flag: "--no-turn-timer",
386
- cli_description: "Disable the working spinner turn timer",
387
- aliases: [
388
- "turn-timer",
389
- "timer",
390
- "elapsed-time"
391
- ],
392
- mode_constraints: {
393
- disabled_in: [
394
- "print",
395
- "json",
396
- "rpc"
397
- ],
398
- reason: "The live timer is only useful in the interactive TUI"
399
- },
400
- load: async () => (await import("./turn-timer-CoyDI4gQ.js")).default
401
- },
402
- {
403
- key: "git-ui",
404
- label: "Git UI",
405
- docs_label: "Git staging UI",
406
- description: "Interactive source control staging panel",
407
- default_enabled: true,
408
- option_name: "git_ui",
409
- cli_arg: "no-git-ui",
410
- cli_flag: "--no-git-ui",
411
- cli_description: "Disable built-in Git staging UI",
412
- aliases: [
413
- "git-ui",
414
- "git",
415
- "source-control",
416
- "scm"
417
- ],
418
- mode_constraints: {
419
- disabled_in: [
420
- "print",
421
- "json",
422
- "rpc"
423
- ],
424
- reason: "Git UI is only useful in interactive mode"
425
- },
426
- external_package_name: "@spences10/pi-git-ui",
427
- load: async () => (await import("@spences10/pi-git-ui")).default
428
- },
429
- {
430
- key: "lsp",
431
- label: "LSP",
432
- docs_label: "LSP",
433
- description: "Language Server Protocol tools (diagnostics, hover, definition, references)",
434
- default_enabled: true,
435
- option_name: "lsp",
436
- cli_arg: "no-lsp",
437
- cli_flag: "--no-lsp",
438
- cli_description: "Disable LSP extension",
439
- aliases: ["lsp", "language-server"],
440
- external_package_name: "@spences10/pi-lsp",
441
- load: async () => (await import("@spences10/pi-lsp")).default
442
- },
443
- {
444
- key: "session-name",
445
- label: "Session name",
446
- docs_label: "Session auto-naming",
447
- description: "AI-powered session auto-naming and /session-name command",
448
- default_enabled: true,
449
- option_name: "session_name",
450
- cli_arg: "no-session-name",
451
- cli_flag: "--no-session-name",
452
- cli_description: "Disable session name extension",
453
- aliases: [
454
- "session-name",
455
- "session",
456
- "auto-name"
457
- ],
458
- mode_constraints: {
459
- disabled_in: [
460
- "print",
461
- "json",
462
- "rpc"
463
- ],
464
- reason: "UI-only session naming is only useful in interactive mode"
465
- },
466
- load: async () => (await import("./session-name-CD6TVRnh.js")).default
467
- },
468
- {
469
- key: "confirm-destructive",
470
- label: "Confirm destructive",
471
- docs_label: "Destructive action confirmation",
472
- description: "Prompt before destructive tool calls like file deletes, overwrites, and hard resets",
473
- default_enabled: true,
474
- option_name: "confirm_destructive",
475
- cli_arg: "no-confirm-destructive",
476
- cli_flag: "--no-confirm-destructive",
477
- cli_description: "Disable destructive action confirmations",
478
- aliases: ["confirm-destructive", "confirm"],
479
- external_package_name: "@spences10/pi-confirm-destructive",
480
- load: async () => (await import("@spences10/pi-confirm-destructive")).default
481
- },
482
- {
483
- key: "hooks-resolution",
484
- label: "Hooks resolution",
485
- docs_label: "Hooks resolution",
486
- description: "Claude Code style PreToolUse and PostToolUse hook compatibility from .claude, .rulesync, and .pi configs",
487
- default_enabled: true,
488
- option_name: "hooks_resolution",
489
- cli_arg: "no-hooks",
490
- cli_flag: "--no-hooks",
491
- cli_description: "Disable Claude-style hook execution",
492
- aliases: ["hooks-resolution", "hooks"],
493
- load: async () => (await import("./hooks-resolution-qlhPfMFJ.js")).default
494
- },
495
- {
496
- key: "svelte-guardrails",
497
- label: "Svelte guardrails",
498
- docs_label: "Svelte guardrails",
499
- description: "Blocks discouraged Svelte patterns like $effect before agents write them",
500
- default_enabled: true,
501
- option_name: "svelte_guardrails",
502
- cli_arg: "no-svelte-guardrails",
503
- cli_flag: "--no-svelte-guardrails",
504
- cli_description: "Disable Svelte guardrails",
505
- aliases: ["svelte-guardrails", "svelte"],
506
- external_package_name: "@spences10/pi-svelte-guardrails",
507
- load: async () => (await import("@spences10/pi-svelte-guardrails")).default
508
- },
509
- {
510
- key: "coding-preferences",
511
- label: "Coding preferences",
512
- docs_label: "Coding preferences",
513
- description: "Blocks configured coding workflow anti-patterns from JSON preferences",
514
- default_enabled: true,
515
- option_name: "coding_preferences",
516
- cli_arg: "no-coding-preferences",
517
- cli_flag: "--no-coding-preferences",
518
- cli_description: "Disable coding preferences guardrails",
519
- aliases: [
520
- "coding-preferences",
521
- "preferences",
522
- "prefs"
523
- ],
524
- external_package_name: "@spences10/pi-coding-preferences",
525
- load: async () => (await import("@spences10/pi-coding-preferences")).default
526
- },
527
- {
528
- key: "handoff",
529
- label: "Handoff",
530
- docs_label: "Handoff",
531
- description: "Help command for Pi continuation primitives like /fork, /tree, /export, /import, and /share",
532
- default_enabled: true,
533
- option_name: "handoff",
534
- cli_arg: "no-handoff",
535
- cli_flag: "--no-handoff",
536
- cli_description: "Disable handoff helper command",
537
- aliases: ["handoff", "continuation"],
538
- load: async () => (await import("./handoff-C6wR2mSG.js")).default
539
- },
540
- {
541
- key: "team-mode",
542
- label: "Team mode",
543
- docs_label: "Team mode",
544
- description: "Peer coordination between independently opened Pi sessions with groups, artifacts, and durable mailboxes",
545
- default_enabled: true,
546
- option_name: "team_mode",
547
- cli_arg: "no-team-mode",
548
- cli_flag: "--no-team-mode",
549
- cli_description: "Disable peer-session team mode extension",
550
- aliases: [
551
- "team-mode",
552
- "team",
553
- "teammates"
554
- ],
555
- external_package_name: "@spences10/pi-team-mode",
556
- load: async () => (await import("@spences10/pi-team-mode")).default
557
- }
558
- ];
559
- const BUILTIN_EXTENSIONS = BUILTIN_EXTENSION_REGISTRY.map(({ load: _load, ...extension }) => extension);
560
- //#endregion
561
- export { BUILTIN_EXTENSION_REGISTRY as n, BUILTIN_EXTENSIONS as t };
562
-
563
- //# sourceMappingURL=builtin-registry-wSfsQBi4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtin-registry-wSfsQBi4.js","names":[],"sources":["../src/extensions/builtin-registry.ts"],"sourcesContent":["import type { ExtensionFactory } from '@earendil-works/pi-coding-agent';\n\nexport type BuiltinExtensionRuntimeMode =\n\t| 'interactive'\n\t| 'print'\n\t| 'json'\n\t| 'rpc';\n\ntype BuiltinExtensionLoader = () => Promise<ExtensionFactory>;\n\nexport interface BuiltinExtensionManifestEntry {\n\tkey: string;\n\tlabel: string;\n\tdocs_label: string;\n\tdescription: string;\n\tdefault_enabled: boolean;\n\toption_name: string;\n\tcli_arg: string;\n\tcli_flag: `--${string}`;\n\tcli_description: string;\n\taliases: readonly string[];\n\tmode_constraints?: {\n\t\tdisabled_in: readonly BuiltinExtensionRuntimeMode[];\n\t\treason: string;\n\t};\n\texternal_package_name?: string;\n\tload: BuiltinExtensionLoader;\n}\n\nexport const BUILTIN_EXTENSION_REGISTRY = [\n\t{\n\t\tkey: 'context-sidecar',\n\t\tlabel: 'Context sidecar',\n\t\tdocs_label: 'SQLite context sidecar',\n\t\tdescription: 'Local SQLite FTS sidecar for oversized tool output',\n\t\tdefault_enabled: true,\n\t\toption_name: 'context_sidecar',\n\t\tcli_arg: 'no-context-sidecar',\n\t\tcli_flag: '--no-context-sidecar',\n\t\tcli_description:\n\t\t\t'Disable SQLite context sidecar for large tool output',\n\t\taliases: ['context-sidecar', 'context', 'sidecar'],\n\t\texternal_package_name: '@spences10/pi-context',\n\t\tload: async () => (await import('@spences10/pi-context')).default,\n\t},\n\t{\n\t\tkey: 'mcp',\n\t\tlabel: 'MCP',\n\t\tdocs_label: 'MCP',\n\t\tdescription: 'MCP server integration and /mcp command',\n\t\tdefault_enabled: true,\n\t\toption_name: 'mcp',\n\t\tcli_arg: 'no-mcp',\n\t\tcli_flag: '--no-mcp',\n\t\tcli_description: 'Disable built-in MCP extension',\n\t\taliases: ['mcp'],\n\t\texternal_package_name: '@spences10/pi-mcp',\n\t\tload: async () => (await import('@spences10/pi-mcp')).default,\n\t},\n\t{\n\t\tkey: 'openrouter-fusion-config',\n\t\tlabel: 'OpenRouter Fusion config',\n\t\tdocs_label: 'OpenRouter Fusion config guard',\n\t\tdescription:\n\t\t\t'Keeps OpenRouter Fusion off Anthropic by injecting a non-Anthropic panel and judge',\n\t\tdefault_enabled: true,\n\t\toption_name: 'openrouter_fusion_config',\n\t\tcli_arg: 'no-openrouter-fusion-config',\n\t\tcli_flag: '--no-openrouter-fusion-config',\n\t\tcli_description: 'Disable OpenRouter Fusion non-Anthropic config',\n\t\taliases: ['openrouter-fusion-config', 'fusion-budget'],\n\t\tload: async () =>\n\t\t\t(await import('./openrouter-fusion-config/index.js')).default,\n\t},\n\t{\n\t\tkey: 'umans-provider',\n\t\tlabel: 'Umans provider',\n\t\tdocs_label: 'Umans provider',\n\t\tdescription:\n\t\t\t'Umans.ai Anthropic Messages provider with API key login support',\n\t\tdefault_enabled: true,\n\t\toption_name: 'umans_provider',\n\t\tcli_arg: 'no-umans-provider',\n\t\tcli_flag: '--no-umans-provider',\n\t\tcli_description: 'Disable built-in Umans provider',\n\t\taliases: ['umans-provider', 'umans'],\n\t\tload: async () =>\n\t\t\t(await import('./umans-provider/index.js')).default,\n\t},\n\t{\n\t\tkey: 'footer',\n\t\tlabel: 'Footer',\n\t\tdocs_label: 'Footer',\n\t\tdescription: 'Configurable interactive footer/statusline',\n\t\tdefault_enabled: true,\n\t\toption_name: 'footer',\n\t\tcli_arg: 'no-footer',\n\t\tcli_flag: '--no-footer',\n\t\tcli_description: 'Disable custom footer/statusline',\n\t\taliases: ['footer', 'statusline', 'status-line'],\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'Footer only renders in the interactive TUI',\n\t\t},\n\t\tload: async () => (await import('./footer/index.js')).default,\n\t},\n\t{\n\t\tkey: 'codex-usage',\n\t\tlabel: 'Codex usage',\n\t\tdocs_label: 'Codex usage status',\n\t\tdescription: 'OpenAI Codex usage status for the footer',\n\t\tdefault_enabled: true,\n\t\toption_name: 'codex_usage',\n\t\tcli_arg: 'no-codex-usage',\n\t\tcli_flag: '--no-codex-usage',\n\t\tcli_description: 'Disable Codex usage footer status',\n\t\taliases: ['codex-usage', 'codex-status'],\n\t\texternal_package_name: '@spences10/pi-codex-usage',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-codex-usage')).default,\n\t},\n\t{\n\t\tkey: 'kimi-usage',\n\t\tlabel: 'Kimi usage',\n\t\tdocs_label: 'Kimi usage status',\n\t\tdescription: 'Kimi For Coding usage status for the footer',\n\t\tdefault_enabled: true,\n\t\toption_name: 'kimi_usage',\n\t\tcli_arg: 'no-kimi-usage',\n\t\tcli_flag: '--no-kimi-usage',\n\t\tcli_description: 'Disable Kimi usage footer status',\n\t\taliases: ['kimi-usage', 'kimi-status'],\n\t\texternal_package_name: '@spences10/pi-kimi-usage',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-kimi-usage')).default,\n\t},\n\t{\n\t\tkey: 'harness',\n\t\tlabel: 'Harness',\n\t\tdocs_label: 'Task harness runtime',\n\t\tdescription:\n\t\t\t'Ephemeral /tmp task harness runtime with tools, enforcement, and bundled skills',\n\t\tdefault_enabled: true,\n\t\toption_name: 'harness',\n\t\tcli_arg: 'no-harness',\n\t\tcli_flag: '--no-harness',\n\t\tcli_description: 'Disable task harness runtime',\n\t\taliases: ['harness', 'task-harness'],\n\t\texternal_package_name: '@spences10/pi-harness',\n\t\tload: async () => (await import('@spences10/pi-harness')).default,\n\t},\n\t{\n\t\tkey: 'factory',\n\t\tlabel: 'Software factory (experimental)',\n\t\tdocs_label: 'Experimental software-factory control plane',\n\t\tdescription:\n\t\t\t'Paused experimental workflow control plane; enable explicitly for Factory v1 evaluation only',\n\t\tdefault_enabled: false,\n\t\toption_name: 'factory',\n\t\tcli_arg: 'no-factory',\n\t\tcli_flag: '--no-factory',\n\t\tcli_description: 'Disable software-factory control plane',\n\t\taliases: ['factory', 'software-factory', 'control-plane'],\n\t\texternal_package_name: '@spences10/pi-factory',\n\t\tload: async () => (await import('@spences10/pi-factory')).default,\n\t},\n\t{\n\t\tkey: 'skills',\n\t\tlabel: 'Skills',\n\t\tdocs_label: 'Skills',\n\t\tdescription: 'Managed pi-native skills and /skills command',\n\t\tdefault_enabled: true,\n\t\toption_name: 'skills',\n\t\tcli_arg: 'no-skills',\n\t\tcli_flag: '--no-skills',\n\t\tcli_description: 'Disable built-in skills extension',\n\t\taliases: ['skills', 'skill'],\n\t\texternal_package_name: '@spences10/pi-skills',\n\t\tload: async () => (await import('@spences10/pi-skills')).default,\n\t},\n\t{\n\t\tkey: 'skill-importer',\n\t\tlabel: 'Skill importer',\n\t\tdocs_label: 'Skill importer',\n\t\tdescription:\n\t\t\t'Import external Claude/plugin skills into Pi-native storage',\n\t\tdefault_enabled: true,\n\t\toption_name: 'skill_importer',\n\t\tcli_arg: 'no-skill-importer',\n\t\tcli_flag: '--no-skill-importer',\n\t\tcli_description: 'Disable external skill importer extension',\n\t\taliases: ['skill-importer', 'import-skills', 'skill-import'],\n\t\texternal_package_name: '@spences10/pi-skill-importer',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-skill-importer')).default,\n\t},\n\t{\n\t\tkey: 'filter-output',\n\t\tlabel: 'Secret redaction',\n\t\tdocs_label: 'Secret redaction',\n\t\tdescription:\n\t\t\t'Redacts secrets from tool output before the model sees them',\n\t\tdefault_enabled: true,\n\t\toption_name: 'filter_output',\n\t\tcli_arg: 'no-filter',\n\t\tcli_flag: '--no-filter',\n\t\tcli_description: 'Disable secret redaction in tool output',\n\t\taliases: [\n\t\t\t'filter-output',\n\t\t\t'filter_output',\n\t\t\t'filter',\n\t\t\t'redaction',\n\t\t\t'secret-redaction',\n\t\t\t'output-redaction',\n\t\t],\n\t\texternal_package_name: '@spences10/pi-redact',\n\t\tload: async () => (await import('@spences10/pi-redact')).default,\n\t},\n\t{\n\t\tkey: 'recall',\n\t\tlabel: 'Recall',\n\t\tdocs_label: 'Recall',\n\t\tdescription: 'pirecall reminder and background session sync',\n\t\tdefault_enabled: true,\n\t\toption_name: 'recall',\n\t\tcli_arg: 'no-recall',\n\t\tcli_flag: '--no-recall',\n\t\tcli_description: 'Disable recall extension',\n\t\taliases: ['recall', 'pirecall'],\n\t\texternal_package_name: '@spences10/pi-recall',\n\t\tload: async () => (await import('@spences10/pi-recall')).default,\n\t},\n\t{\n\t\tkey: 'nopeek',\n\t\tlabel: 'Nopeek',\n\t\tdocs_label: 'Nopeek',\n\t\tdescription:\n\t\t\t'nopeek reminder for secret-safe environment loading',\n\t\tdefault_enabled: true,\n\t\toption_name: 'nopeek',\n\t\tcli_arg: 'no-nopeek',\n\t\tcli_flag: '--no-nopeek',\n\t\tcli_description: 'Disable nopeek reminder extension',\n\t\taliases: ['nopeek', 'secrets', 'secret-loading'],\n\t\texternal_package_name: '@spences10/pi-nopeek',\n\t\tload: async () => (await import('@spences10/pi-nopeek')).default,\n\t},\n\t{\n\t\tkey: 'observability',\n\t\tlabel: 'Observability',\n\t\tdocs_label: 'Live observability',\n\t\tdescription:\n\t\t\t'Optional live event stream and local browser dashboard',\n\t\tdefault_enabled: true,\n\t\toption_name: 'observability',\n\t\tcli_arg: 'no-observability',\n\t\tcli_flag: '--no-observability',\n\t\tcli_description: 'Disable live observability extension',\n\t\taliases: ['observability', 'obs', 'live-events'],\n\t\texternal_package_name: '@spences10/pi-observability',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-observability')).default,\n\t},\n\t{\n\t\tkey: 'omnisearch',\n\t\tlabel: 'Omnisearch',\n\t\tdocs_label: 'Omnisearch',\n\t\tdescription: 'mcp-omnisearch reminder for verified web research',\n\t\tdefault_enabled: true,\n\t\toption_name: 'omnisearch',\n\t\tcli_arg: 'no-omnisearch',\n\t\tcli_flag: '--no-omnisearch',\n\t\tcli_description: 'Disable mcp-omnisearch reminder extension',\n\t\taliases: ['omnisearch', 'search', 'web-search', 'research'],\n\t\texternal_package_name: '@spences10/pi-omnisearch',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-omnisearch')).default,\n\t},\n\t{\n\t\tkey: 'sqlite-tools',\n\t\tlabel: 'SQLite tools',\n\t\tdocs_label: 'SQLite tools',\n\t\tdescription:\n\t\t\t'mcp-sqlite-tools reminder for safer SQLite database work',\n\t\tdefault_enabled: true,\n\t\toption_name: 'sqlite_tools',\n\t\tcli_arg: 'no-sqlite-tools',\n\t\tcli_flag: '--no-sqlite-tools',\n\t\tcli_description: 'Disable mcp-sqlite-tools reminder extension',\n\t\taliases: ['sqlite-tools', 'sqlite', 'mcp-sqlite-tools'],\n\t\texternal_package_name: '@spences10/pi-sqlite-tools',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-sqlite-tools')).default,\n\t},\n\t{\n\t\tkey: 'talk',\n\t\tlabel: 'Talk',\n\t\tdocs_label: 'Hold-Space dictation',\n\t\tdescription: 'Hold Space to dictate into the input editor',\n\t\tdefault_enabled: true,\n\t\toption_name: 'talk',\n\t\tcli_arg: 'no-talk',\n\t\tcli_flag: '--no-talk',\n\t\tcli_description: 'Disable hold-Space dictation',\n\t\taliases: ['talk', 'voice', 'dictation'],\n\t\texternal_package_name: '@spences10/pi-talk',\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'Talk requires the interactive TUI',\n\t\t},\n\t\tload: async () => (await import('@spences10/pi-talk')).default,\n\t},\n\t{\n\t\tkey: 'starfield',\n\t\tlabel: 'Starfield',\n\t\tdocs_label: 'Starfield',\n\t\tdescription: 'Subtle twinkling stars in the input editor',\n\t\tdefault_enabled: true,\n\t\toption_name: 'starfield',\n\t\tcli_arg: 'no-starfield',\n\t\tcli_flag: '--no-starfield',\n\t\tcli_description: 'Disable the input star field',\n\t\taliases: ['starfield', 'stars'],\n\t\texternal_package_name: '@spences10/pi-starfield',\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'Starfield only renders in the interactive TUI',\n\t\t},\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-starfield')).default,\n\t},\n\t{\n\t\tkey: 'startup-screen',\n\t\tlabel: 'Startup screen',\n\t\tdocs_label: 'Startup screen',\n\t\tdescription:\n\t\t\t'Pixel-art gradient startup header for interactive sessions',\n\t\tdefault_enabled: true,\n\t\toption_name: 'startup_screen',\n\t\tcli_arg: 'no-startup-screen',\n\t\tcli_flag: '--no-startup-screen',\n\t\tcli_description: 'Disable the custom startup screen',\n\t\taliases: ['startup-screen', 'startup', 'header', 'splash'],\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'Startup screen only renders in the interactive TUI',\n\t\t},\n\t\tload: async () =>\n\t\t\t(await import('./startup-screen/index.js')).default,\n\t},\n\t{\n\t\tkey: 'prompt-presets',\n\t\tlabel: 'Prompt presets',\n\t\tdocs_label: 'Prompt presets',\n\t\tdescription:\n\t\t\t'Runtime prompt preset selection and /prompt-preset command',\n\t\tdefault_enabled: true,\n\t\toption_name: 'prompt_presets',\n\t\tcli_arg: 'no-prompt-presets',\n\t\tcli_flag: '--no-prompt-presets',\n\t\tcli_description: 'Disable prompt presets extension',\n\t\taliases: ['prompt-preset', 'preset', 'presets'],\n\t\tload: async () =>\n\t\t\t(await import('./prompt-presets/index.js')).default,\n\t},\n\t{\n\t\tkey: 'turn-timer',\n\t\tlabel: 'Turn timer',\n\t\tdocs_label: 'Turn timer',\n\t\tdescription:\n\t\t\t'Live elapsed timer beside the working spinner with persisted turn durations',\n\t\tdefault_enabled: true,\n\t\toption_name: 'turn_timer',\n\t\tcli_arg: 'no-turn-timer',\n\t\tcli_flag: '--no-turn-timer',\n\t\tcli_description: 'Disable the working spinner turn timer',\n\t\taliases: ['turn-timer', 'timer', 'elapsed-time'],\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'The live timer is only useful in the interactive TUI',\n\t\t},\n\t\tload: async () => (await import('./turn-timer/index.js')).default,\n\t},\n\t{\n\t\tkey: 'git-ui',\n\t\tlabel: 'Git UI',\n\t\tdocs_label: 'Git staging UI',\n\t\tdescription: 'Interactive source control staging panel',\n\t\tdefault_enabled: true,\n\t\toption_name: 'git_ui',\n\t\tcli_arg: 'no-git-ui',\n\t\tcli_flag: '--no-git-ui',\n\t\tcli_description: 'Disable built-in Git staging UI',\n\t\taliases: ['git-ui', 'git', 'source-control', 'scm'],\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason: 'Git UI is only useful in interactive mode',\n\t\t},\n\t\texternal_package_name: '@spences10/pi-git-ui',\n\t\tload: async () => (await import('@spences10/pi-git-ui')).default,\n\t},\n\t{\n\t\tkey: 'lsp',\n\t\tlabel: 'LSP',\n\t\tdocs_label: 'LSP',\n\t\tdescription:\n\t\t\t'Language Server Protocol tools (diagnostics, hover, definition, references)',\n\t\tdefault_enabled: true,\n\t\toption_name: 'lsp',\n\t\tcli_arg: 'no-lsp',\n\t\tcli_flag: '--no-lsp',\n\t\tcli_description: 'Disable LSP extension',\n\t\taliases: ['lsp', 'language-server'],\n\t\texternal_package_name: '@spences10/pi-lsp',\n\t\tload: async () => (await import('@spences10/pi-lsp')).default,\n\t},\n\t{\n\t\tkey: 'session-name',\n\t\tlabel: 'Session name',\n\t\tdocs_label: 'Session auto-naming',\n\t\tdescription:\n\t\t\t'AI-powered session auto-naming and /session-name command',\n\t\tdefault_enabled: true,\n\t\toption_name: 'session_name',\n\t\tcli_arg: 'no-session-name',\n\t\tcli_flag: '--no-session-name',\n\t\tcli_description: 'Disable session name extension',\n\t\taliases: ['session-name', 'session', 'auto-name'],\n\t\tmode_constraints: {\n\t\t\tdisabled_in: ['print', 'json', 'rpc'],\n\t\t\treason:\n\t\t\t\t'UI-only session naming is only useful in interactive mode',\n\t\t},\n\t\tload: async () =>\n\t\t\t(await import('./session-name/index.js')).default,\n\t},\n\t{\n\t\tkey: 'confirm-destructive',\n\t\tlabel: 'Confirm destructive',\n\t\tdocs_label: 'Destructive action confirmation',\n\t\tdescription:\n\t\t\t'Prompt before destructive tool calls like file deletes, overwrites, and hard resets',\n\t\tdefault_enabled: true,\n\t\toption_name: 'confirm_destructive',\n\t\tcli_arg: 'no-confirm-destructive',\n\t\tcli_flag: '--no-confirm-destructive',\n\t\tcli_description: 'Disable destructive action confirmations',\n\t\taliases: ['confirm-destructive', 'confirm'],\n\t\texternal_package_name: '@spences10/pi-confirm-destructive',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-confirm-destructive')).default,\n\t},\n\t{\n\t\tkey: 'hooks-resolution',\n\t\tlabel: 'Hooks resolution',\n\t\tdocs_label: 'Hooks resolution',\n\t\tdescription:\n\t\t\t'Claude Code style PreToolUse and PostToolUse hook compatibility from .claude, .rulesync, and .pi configs',\n\t\tdefault_enabled: true,\n\t\toption_name: 'hooks_resolution',\n\t\tcli_arg: 'no-hooks',\n\t\tcli_flag: '--no-hooks',\n\t\tcli_description: 'Disable Claude-style hook execution',\n\t\taliases: ['hooks-resolution', 'hooks'],\n\t\tload: async () =>\n\t\t\t(await import('./hooks-resolution/index.js')).default,\n\t},\n\t{\n\t\tkey: 'svelte-guardrails',\n\t\tlabel: 'Svelte guardrails',\n\t\tdocs_label: 'Svelte guardrails',\n\t\tdescription:\n\t\t\t'Blocks discouraged Svelte patterns like $effect before agents write them',\n\t\tdefault_enabled: true,\n\t\toption_name: 'svelte_guardrails',\n\t\tcli_arg: 'no-svelte-guardrails',\n\t\tcli_flag: '--no-svelte-guardrails',\n\t\tcli_description: 'Disable Svelte guardrails',\n\t\taliases: ['svelte-guardrails', 'svelte'],\n\t\texternal_package_name: '@spences10/pi-svelte-guardrails',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-svelte-guardrails')).default,\n\t},\n\t{\n\t\tkey: 'coding-preferences',\n\t\tlabel: 'Coding preferences',\n\t\tdocs_label: 'Coding preferences',\n\t\tdescription:\n\t\t\t'Blocks configured coding workflow anti-patterns from JSON preferences',\n\t\tdefault_enabled: true,\n\t\toption_name: 'coding_preferences',\n\t\tcli_arg: 'no-coding-preferences',\n\t\tcli_flag: '--no-coding-preferences',\n\t\tcli_description: 'Disable coding preferences guardrails',\n\t\taliases: ['coding-preferences', 'preferences', 'prefs'],\n\t\texternal_package_name: '@spences10/pi-coding-preferences',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-coding-preferences')).default,\n\t},\n\t{\n\t\tkey: 'handoff',\n\t\tlabel: 'Handoff',\n\t\tdocs_label: 'Handoff',\n\t\tdescription:\n\t\t\t'Help command for Pi continuation primitives like /fork, /tree, /export, /import, and /share',\n\t\tdefault_enabled: true,\n\t\toption_name: 'handoff',\n\t\tcli_arg: 'no-handoff',\n\t\tcli_flag: '--no-handoff',\n\t\tcli_description: 'Disable handoff helper command',\n\t\taliases: ['handoff', 'continuation'],\n\t\tload: async () => (await import('./handoff/index.js')).default,\n\t},\n\t{\n\t\tkey: 'team-mode',\n\t\tlabel: 'Team mode',\n\t\tdocs_label: 'Team mode',\n\t\tdescription:\n\t\t\t'Peer coordination between independently opened Pi sessions with groups, artifacts, and durable mailboxes',\n\t\tdefault_enabled: true,\n\t\toption_name: 'team_mode',\n\t\tcli_arg: 'no-team-mode',\n\t\tcli_flag: '--no-team-mode',\n\t\tcli_description: 'Disable peer-session team mode extension',\n\t\taliases: ['team-mode', 'team', 'teammates'],\n\t\texternal_package_name: '@spences10/pi-team-mode',\n\t\tload: async () =>\n\t\t\t(await import('@spences10/pi-team-mode')).default,\n\t},\n] as const satisfies readonly BuiltinExtensionManifestEntry[];\n\nexport type BuiltinExtensionKey =\n\t(typeof BUILTIN_EXTENSION_REGISTRY)[number]['key'];\n\nexport type BuiltinExtensionOptionName =\n\t(typeof BUILTIN_EXTENSION_REGISTRY)[number]['option_name'];\n\nexport type BuiltinExtensionInfo = Omit<\n\tBuiltinExtensionManifestEntry,\n\t'load'\n> & {\n\tkey: BuiltinExtensionKey;\n\toption_name: BuiltinExtensionOptionName;\n};\n\nexport const BUILTIN_EXTENSIONS: BuiltinExtensionInfo[] =\n\tBUILTIN_EXTENSION_REGISTRY.map(\n\t\t({ load: _load, ...extension }) => extension,\n\t);\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export { default } from "@spences10/pi-footer";
@@ -1,28 +0,0 @@
1
- //#region src/extensions/handoff/index.ts
2
- const HANDOFF_GUIDE = `Handoff in Pi
3
-
4
- Use built-ins first:
5
- - /fork: exact-context branch for experiments or continuing in a fresh session
6
- - /tree: inspect/navigate conversation branches
7
- - /export and /import: move session data between Pi instances
8
- - /share: create a shareable session artifact
9
-
10
- Use a markdown handoff only when the recipient is outside Pi or needs a compact task/return brief.
11
- Return brief: changed files, validation, risks, next action.`;
12
- function handoff_command_output(args) {
13
- const trimmed = args.trim();
14
- if (!trimmed) return HANDOFF_GUIDE;
15
- return `${HANDOFF_GUIDE}\n\nIntent noted: ${trimmed}`;
16
- }
17
- function handoff(pi) {
18
- pi.registerCommand("handoff", {
19
- description: "Show when to use /fork, /tree, /export, /import, /share, or a portable handoff",
20
- handler: async (args, ctx) => {
21
- ctx.ui.notify(handoff_command_output(args), "info");
22
- }
23
- });
24
- }
25
- //#endregion
26
- export { handoff as default };
27
-
28
- //# sourceMappingURL=handoff-C6wR2mSG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handoff-C6wR2mSG.js","names":[],"sources":["../src/extensions/handoff/index.ts"],"sourcesContent":["// Handoff extension — zero-context help for Pi continuation primitives.\n\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nexport const HANDOFF_GUIDE = `Handoff in Pi\n\nUse built-ins first:\n- /fork: exact-context branch for experiments or continuing in a fresh session\n- /tree: inspect/navigate conversation branches\n- /export and /import: move session data between Pi instances\n- /share: create a shareable session artifact\n\nUse a markdown handoff only when the recipient is outside Pi or needs a compact task/return brief.\nReturn brief: changed files, validation, risks, next action.`;\n\nexport function handoff_command_output(args: string): string {\n\tconst trimmed = args.trim();\n\tif (!trimmed) return HANDOFF_GUIDE;\n\treturn `${HANDOFF_GUIDE}\\n\\nIntent noted: ${trimmed}`;\n}\n\nexport default function handoff(pi: ExtensionAPI): void {\n\tpi.registerCommand('handoff', {\n\t\tdescription:\n\t\t\t'Show when to use /fork, /tree, /export, /import, /share, or a portable handoff',\n\t\thandler: async (args, ctx) => {\n\t\t\tctx.ui.notify(handoff_command_output(args), 'info');\n\t\t},\n\t});\n}\n"],"mappings":";AAIA,MAAa,gBAAgB;;;;;;;;;;AAW7B,SAAgB,uBAAuB,MAAsB;CAC5D,MAAM,UAAU,KAAK,KAAK;CAC1B,IAAI,CAAC,SAAS,OAAO;CACrB,OAAO,GAAG,cAAc,oBAAoB;AAC7C;AAEA,SAAwB,QAAQ,IAAwB;CACvD,GAAG,gBAAgB,WAAW;EAC7B,aACC;EACD,SAAS,OAAO,MAAM,QAAQ;GAC7B,IAAI,GAAG,OAAO,uBAAuB,IAAI,GAAG,MAAM;EACnD;CACD,CAAC;AACF"}