pi2dsh 0.23.0 → 0.25.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 (48) hide show
  1. package/README.md +19 -8
  2. package/README.zh.md +16 -6
  3. package/dist/{analyzer-C139Y2S7.mjs → analyzer-DbgL3neo.mjs} +2 -2
  4. package/dist/{analyzer-C139Y2S7.mjs.map → analyzer-DbgL3neo.mjs.map} +1 -1
  5. package/dist/cli.mjs +3 -3
  6. package/dist/compat/pi-ai.d.mts +2 -2
  7. package/dist/compat/pi-ai.mjs +2 -2
  8. package/dist/compat/pi-coding-agent.d.mts +2 -2
  9. package/dist/compat/pi-coding-agent.mjs +2 -2
  10. package/dist/{compatibility-CZs3LwYn.mjs → compatibility-DS6POFZD.mjs} +29 -26
  11. package/dist/compatibility-DS6POFZD.mjs.map +1 -0
  12. package/dist/credentials-oauth.mjs +2 -2
  13. package/dist/{google-generative-ai-Dpb_X-Kt.mjs → google-generative-ai-DYSbNJT7.mjs} +2 -2
  14. package/dist/{google-generative-ai-Dpb_X-Kt.mjs.map → google-generative-ai-DYSbNJT7.mjs.map} +1 -1
  15. package/dist/{google-shared-CL1Za-ev.mjs → google-shared-LEpwok5n.mjs} +2 -2
  16. package/dist/{google-shared-CL1Za-ev.mjs.map → google-shared-LEpwok5n.mjs.map} +1 -1
  17. package/dist/{google-vertex-BXRKa49Y.mjs → google-vertex-BgGRE4WU.mjs} +2 -2
  18. package/dist/{google-vertex-BXRKa49Y.mjs.map → google-vertex-BgGRE4WU.mjs.map} +1 -1
  19. package/dist/host.mjs +2 -2
  20. package/dist/index.d.mts.map +1 -1
  21. package/dist/index.mjs +7 -5
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/{multipart-parser-CBAi6PxA.mjs → multipart-parser-BOEZ-KGK.mjs} +2 -2
  24. package/dist/{multipart-parser-CBAi6PxA.mjs.map → multipart-parser-BOEZ-KGK.mjs.map} +1 -1
  25. package/dist/{pi-ai-hGbYES_v.d.mts → pi-ai-BHgA3JWd.d.mts} +14 -6
  26. package/dist/{pi-ai-hGbYES_v.d.mts.map → pi-ai-BHgA3JWd.d.mts.map} +1 -1
  27. package/dist/{pi-ai-DQPHUR9S.mjs → pi-ai-Cy_BRMmd.mjs} +23 -6
  28. package/dist/pi-ai-Cy_BRMmd.mjs.map +1 -0
  29. package/dist/pi-cli-client.mjs +25 -0
  30. package/dist/{pi-coding-agent-Pvy0m9tS.d.mts → pi-coding-agent-Cas0oHSx.d.mts} +18 -3
  31. package/dist/{pi-coding-agent-Pvy0m9tS.d.mts.map → pi-coding-agent-Cas0oHSx.d.mts.map} +1 -1
  32. package/dist/{pi-coding-agent-CPXFo0UO.mjs → pi-coding-agent-lcNs9Wos.mjs} +0 -0
  33. package/dist/pi-coding-agent-lcNs9Wos.mjs.map +1 -0
  34. package/dist/{runtime-Dnk9mhrc.mjs → runtime-B3N7s93Q.mjs} +1086 -249
  35. package/dist/runtime-B3N7s93Q.mjs.map +1 -0
  36. package/dist/runtime.d.mts +107 -50
  37. package/dist/runtime.d.mts.map +1 -1
  38. package/dist/runtime.mjs +1 -1
  39. package/dist/{source-0sA5z08z.mjs → source-l77aIDwD.mjs} +76 -3
  40. package/dist/source-l77aIDwD.mjs.map +1 -0
  41. package/dist/{src-85HOaW5W.mjs → src-ChZlNrRV.mjs} +3 -3
  42. package/dist/{src-85HOaW5W.mjs.map → src-ChZlNrRV.mjs.map} +1 -1
  43. package/package.json +24 -14
  44. package/dist/compatibility-CZs3LwYn.mjs.map +0 -1
  45. package/dist/pi-ai-DQPHUR9S.mjs.map +0 -1
  46. package/dist/pi-coding-agent-CPXFo0UO.mjs.map +0 -1
  47. package/dist/runtime-Dnk9mhrc.mjs.map +0 -1
  48. package/dist/source-0sA5z08z.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
 
2
- import { at as AssistantMessageEventStream, d as __createPiAiRuntimeRegistry } from "./pi-ai-hGbYES_v.mjs";
3
- import { N as Theme, p as ExtensionRunner } from "./pi-coding-agent-Pvy0m9tS.mjs";
2
+ import { ct as AssistantMessageEventStream, f as __createPiAiRuntimeRegistry } from "./pi-ai-BHgA3JWd.mjs";
3
+ import { N as Theme, p as ExtensionRunner } from "./pi-coding-agent-Cas0oHSx.mjs";
4
4
  import { t as FileCredentialStore } from "./oauth-bridge-hOnT3acY.mjs";
5
5
  import { i as GeneratedRuntimeManifest } from "./types-B9VBF8le.mjs";
6
6
  import { EventEmitter } from "node:events";
@@ -69,7 +69,8 @@ declare class CapabilityLedger {
69
69
  type UnknownRecord$4 = Record<string, unknown>;
70
70
  interface DshSessionLike {
71
71
  id: string;
72
- events: readonly UnknownRecord$4[] | (() => readonly UnknownRecord$4[]);
72
+ events?: readonly UnknownRecord$4[] | (() => readonly UnknownRecord$4[]);
73
+ snapshotEvents?(): readonly UnknownRecord$4[];
73
74
  append?(type: string, data: unknown, opts?: unknown): unknown;
74
75
  header?: UnknownRecord$4;
75
76
  }
@@ -80,9 +81,30 @@ interface PiProjectedEntry {
80
81
  timestamp: string;
81
82
  [key: string]: unknown;
82
83
  }
84
+ /** Only public persistence reads; never resume or load-with-recovery for indexing. */
85
+ interface SessionExportPersistence {
86
+ list(): Promise<readonly UnknownRecord$4[]>;
87
+ inspect?(id: string): Promise<{
88
+ meta: UnknownRecord$4;
89
+ events: readonly UnknownRecord$4[];
90
+ }>;
91
+ open?(id: string, access: 'read'): Promise<{
92
+ header: UnknownRecord$4;
93
+ read(): Promise<{
94
+ events: readonly UnknownRecord$4[];
95
+ }>;
96
+ close(): Promise<void>;
97
+ }>;
98
+ }
83
99
  declare class PiSessionBridge {
100
+ private readonly fileContent;
101
+ constructor(fileContent?: (ref: unknown) => unknown);
84
102
  private readonly records;
85
103
  private readonly loaded;
104
+ private readonly exportedSessions;
105
+ exportStoredSessions(persistence: SessionExportPersistence): Promise<void>;
106
+ /** Materialize the public Pi file contract from the native session, never vice versa. */
107
+ exportSessionFile(session: DshSessionLike, cwd: string): string;
86
108
  private sidecarPath;
87
109
  /**
88
110
  * The Pi-visible archive file for one DSH session — the established
@@ -167,6 +189,8 @@ interface SubagentHost {
167
189
  packageName?: string;
168
190
  /** The delegating parent Agent's own ctx (undefined outside an agent scope). */
169
191
  parentAgentContext(): unknown;
192
+ /** The live parent identity required by newer DSH agent ownership. */
193
+ parentAgent?(): UnknownRecord$3 | undefined;
170
194
  /**
171
195
  * Translate the child's Pi custom tools into DSH tool definitions and
172
196
  * register them THROUGH the unpublished child ctx, so they land in the
@@ -293,33 +317,6 @@ declare class PiBridgedAgentSession {
293
317
  dispose(): Promise<void>;
294
318
  }
295
319
  //#endregion
296
- //#region src/tui-surfaces.d.ts
297
- type UnknownRecord$2 = Record<string, unknown>;
298
- interface PiCustomComponent {
299
- render(width: number): string[];
300
- invalidate?(): void;
301
- handleInput?(data: string): void;
302
- dispose?(): void;
303
- }
304
- interface PiTuiDriver {
305
- requestRender(): void;
306
- }
307
- interface PiCustomOptions {
308
- overlay?: boolean;
309
- overlayOptions?: UnknownRecord$2 | (() => UnknownRecord$2);
310
- }
311
- type PiCustomFactory<T> = (tui: PiTuiDriver, theme: unknown, keybindings: unknown, done: (result: T) => void) => PiCustomComponent | Promise<PiCustomComponent>;
312
- /** One optional terminal front door behind the public Pi UI contract. */
313
- interface TerminalSurfaceAdapter {
314
- readonly kind: string;
315
- readonly available: boolean;
316
- /** Commands the active terminal owns natively; incoming Pi commands alias. */
317
- readonly nativeCommands: ReadonlySet<string>;
318
- setStatus(key: string, text: unknown): void;
319
- custom<T>(factory: PiCustomFactory<T>, theme: unknown, keybindings: unknown, options?: PiCustomOptions): Promise<T | undefined>;
320
- dispose(): void;
321
- }
322
- //#endregion
323
320
  //#region src/browser-surfaces.d.ts
324
321
  /** One side thread as the panel renders it. */
325
322
  interface PanelThreadView {
@@ -358,18 +355,6 @@ declare class BrowserSurfaces {
358
355
  registerImageTool(name: string): void;
359
356
  /** Exact wire names needing the generic Pi image-result browser view. */
360
357
  imageToolNames(): string[];
361
- openScene<T>(packageName: string, factory: PiCustomFactory<T>, theme: unknown, keybindings: unknown, options?: PiCustomOptions): Promise<T | undefined>;
362
- /** What the browser paints: the live component's frame, or a closed marker. */
363
- sceneSnapshot(): {
364
- open: boolean;
365
- package?: string;
366
- revision: number;
367
- lines?: string[];
368
- };
369
- /** Raw terminal input from the browser keyboard, verbatim into the component. */
370
- sceneInput(sequence: string, width?: number): void;
371
- /** The browser dismissed the overlay: resolve the Pi caller with undefined. */
372
- closeScene(): void;
373
358
  /**
374
359
  * Track one child session under its parent.
375
360
  * @param parentSessionId - the session the panel floats over.
@@ -389,7 +374,14 @@ declare class BrowserSurfaces {
389
374
  * @returns a disposer that unregisters the runner.
390
375
  */
391
376
  registerCommandRunner(sessionId: string, packageName: string, runner: PiCommandRunner): () => void;
392
- /** The registered runner for (session, package), when one is mounted. */
377
+ /**
378
+ * The registered runner for (session, package), when one is mounted.
379
+ *
380
+ * An empty sessionId means "any session where the package is mounted":
381
+ * session-free product UI (a Settings page) invoking a package command
382
+ * whose effect is global state — the handler itself is the package's own
383
+ * either way, and every mounted copy routes to the same package storage.
384
+ */
393
385
  commandRunner(sessionId: string, packageName: string): PiCommandRunner | undefined;
394
386
  /**
395
387
  * The panel's view of one parent session.
@@ -545,15 +537,15 @@ type CompletionSource = (trigger: string, query: string) => Promise<CompletionIt
545
537
  type EntrySource = (sessionId: string) => RenderedEntry[];
546
538
  //#endregion
547
539
  //#region src/model-bridge.d.ts
548
- type UnknownRecord$1 = Record<string, unknown>;
540
+ type UnknownRecord$2 = Record<string, unknown>;
549
541
  interface DshLlmLike {
550
542
  listProviders(): Array<{
551
543
  id: string;
552
544
  name: string;
553
545
  }>;
554
- listModels(provider: string): Promise<UnknownRecord$1[]>;
555
- resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<UnknownRecord$1>;
556
- stream(options: UnknownRecord$1): AsyncIterable<UnknownRecord$1>;
546
+ listModels(provider: string): Promise<UnknownRecord$2[]>;
547
+ resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<UnknownRecord$2>;
548
+ stream(options: UnknownRecord$2): AsyncIterable<UnknownRecord$2>;
557
549
  }
558
550
  /** A DSH catalog entry in Pi's Model shape. */
559
551
  interface PiModelShape {
@@ -583,9 +575,9 @@ declare class ModelCatalog {
583
575
  resolve(provider: string, modelId: string): Promise<PiModelShape | undefined>;
584
576
  }
585
577
  interface PiStreamRequest {
586
- model: UnknownRecord$1;
587
- context: UnknownRecord$1;
588
- options?: UnknownRecord$1 | undefined;
578
+ model: UnknownRecord$2;
579
+ context: UnknownRecord$2;
580
+ options?: UnknownRecord$2 | undefined;
589
581
  }
590
582
  /**
591
583
  * Run one hand-built pi-ai model call on DSH's native llm service, translating
@@ -610,6 +602,33 @@ interface PiRouteHandle {
610
602
  reannounce?(): void;
611
603
  }
612
604
  //#endregion
605
+ //#region src/tui-surfaces.d.ts
606
+ type UnknownRecord$1 = Record<string, unknown>;
607
+ interface PiCustomComponent {
608
+ render(width: number): string[];
609
+ invalidate?(): void;
610
+ handleInput?(data: string): void;
611
+ dispose?(): void;
612
+ }
613
+ interface PiTuiDriver {
614
+ requestRender(): void;
615
+ }
616
+ interface PiCustomOptions {
617
+ overlay?: boolean;
618
+ overlayOptions?: UnknownRecord$1 | (() => UnknownRecord$1);
619
+ }
620
+ type PiCustomFactory<T> = (tui: PiTuiDriver, theme: unknown, keybindings: unknown, done: (result: T) => void) => PiCustomComponent | Promise<PiCustomComponent>;
621
+ /** One optional terminal front door behind the public Pi UI contract. */
622
+ interface TerminalSurfaceAdapter {
623
+ readonly kind: string;
624
+ readonly available: boolean;
625
+ /** Commands the active terminal owns natively; incoming Pi commands alias. */
626
+ readonly nativeCommands: ReadonlySet<string>;
627
+ setStatus(key: string, text: unknown): void;
628
+ custom<T>(factory: PiCustomFactory<T>, theme: unknown, keybindings: unknown, options?: PiCustomOptions): Promise<T | undefined>;
629
+ dispose(): void;
630
+ }
631
+ //#endregion
613
632
  //#region src/runtime.d.ts
614
633
  type UnknownRecord = Record<string, unknown>;
615
634
  type PiHandler = (event: UnknownRecord, context: UnknownRecord) => unknown | Promise<unknown>;
@@ -669,6 +688,7 @@ interface RuntimeState {
669
688
  toolRestrictions: WeakMap<object, () => void>;
670
689
  pendingActiveTools?: string[];
671
690
  commands: Map<string, PiCommand>;
691
+ nativeSkillCommands: UnknownRecord[];
672
692
  commandDisposers: Map<string, () => void>;
673
693
  /** DSH command name -> Pi command that currently owns that public name. */
674
694
  dshCommandOwners: Map<string, string>;
@@ -679,6 +699,8 @@ interface RuntimeState {
679
699
  hostAgent: UnknownRecord | undefined;
680
700
  /** Agents whose linear Pi session_shutdown has already been projected. */
681
701
  piShutdownAgents: WeakSet<object>;
702
+ shutdownTasks: WeakMap<object, Promise<void>>;
703
+ pendingShutdowns: Set<Promise<void>>;
682
704
  disposedAgents: WeakSet<object>;
683
705
  /** Durable sessions that have already received Pi's session_start event. */
684
706
  startedSessions: Set<string>;
@@ -692,6 +714,10 @@ interface RuntimeState {
692
714
  extensionsReady: boolean;
693
715
  /** Agent starts observed while extension entries are still loading. */
694
716
  pendingSessionStarts: Map<UnknownRecord, string>;
717
+ /** Skill roots already handed to DSH's skills service through resources_discover. */
718
+ discoveredSkillRoots: Set<string>;
719
+ /** Count of discovered-root provider mounts, for unique provider names. */
720
+ discoveredSkillProviders: number;
695
721
  currentSystemPrompt: string;
696
722
  messageSource: string;
697
723
  /** Pi's cross-extension bus: shared by every package instance of one agent
@@ -872,6 +898,9 @@ interface SharedHostState {
872
898
  /** Provider ids whose DSH authorization-seam projection is armed (an
873
899
  * inject scope waiting on — or holding — the authorization service). */
874
900
  authorizationArmedIds?: Set<string>;
901
+ /** Provider ids whose deferred route restore is armed (an inject scope
902
+ * waiting for the credentials service to compose). */
903
+ routeRestoreArmedIds?: Set<string>;
875
904
  modelCatalog?: ModelCatalog;
876
905
  catalogSubscribed?: boolean;
877
906
  loginCommandRegistered?: boolean;
@@ -883,6 +912,7 @@ interface SharedHostState {
883
912
  browserSurfaces?: BrowserSurfaces;
884
913
  browserSurfacesRouted?: boolean;
885
914
  activeLogin?: ActiveLogin | undefined;
915
+ browserLogin?: BrowserLoginFlow | undefined;
886
916
  childExtensions?: ChildExtensionCatalog;
887
917
  childPackageTools?: WeakMap<object, Map<string, ReadonlyMap<string, unknown>>>;
888
918
  }
@@ -894,6 +924,33 @@ interface ActiveLogin {
894
924
  /** Short links this flow published, retired when it ends. */
895
925
  published: string[];
896
926
  }
927
+ /**
928
+ * What the login card polls: the flow's running transcript, one pending
929
+ * question at most, and the outcome once the spine settles. Notices carry the
930
+ * exact strings the /login command would print — URLs inside them are the
931
+ * short links the spine already publishes on this same web server.
932
+ */
933
+ interface BrowserLoginFlow {
934
+ provider: string;
935
+ providerName: string;
936
+ notices: Array<{
937
+ message: string;
938
+ code?: string;
939
+ }>;
940
+ question?: {
941
+ id: number;
942
+ kind: 'input' | 'select';
943
+ title: string;
944
+ placeholder?: string;
945
+ options?: string[];
946
+ };
947
+ /** Resolves the ui call the question belongs to; cleared with the question. */
948
+ answer?: ((value: string | undefined) => void) | undefined;
949
+ done?: {
950
+ ok: boolean;
951
+ summary: string;
952
+ };
953
+ }
897
954
  /**
898
955
  * The engine's installed-package extension catalog, for serving CHILD
899
956
  * sessions: real Pi's createAgentSession loads the default-discovered
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/capability.ts","../src/session-bridge.ts","../src/subagent-bridge.ts","../src/tui-surfaces.ts","../src/browser-surfaces.ts","../src/model-bridge.ts","../src/provider-adapter.ts","../src/runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/capability.ts","../src/session-bridge.ts","../src/subagent-bridge.ts","../src/browser-surfaces.ts","../src/model-bridge.ts","../src/provider-adapter.ts","../src/tui-surfaces.ts","../src/runtime.ts"],"mappings":"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"}
package/dist/runtime.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- import { a as overlayProviderConfig, c as runtimeInternals, i as normalizeToolSchema, n as getSharedChildExtensionCatalog, o as registerChildExtensionCatalog, r as mergeProviderRegistration, s as registerVisionCompanions, t as applyPiPackage } from "./runtime-Dnk9mhrc.mjs";
2
+ import { a as overlayProviderConfig, c as runtimeInternals, i as normalizeToolSchema, n as getSharedChildExtensionCatalog, o as registerChildExtensionCatalog, r as mergeProviderRegistration, s as registerVisionCompanions, t as applyPiPackage } from "./runtime-B3N7s93Q.mjs";
3
3
  export { applyPiPackage, getSharedChildExtensionCatalog, mergeProviderRegistration, normalizeToolSchema, overlayProviderConfig, registerChildExtensionCatalog, registerVisionCompanions, runtimeInternals };
@@ -1,5 +1,5 @@
1
1
 
2
- import { access, mkdtemp, readFile, rm, stat } from "node:fs/promises";
2
+ import { access, mkdtemp, readFile, readdir, rm, stat } from "node:fs/promises";
3
3
  import { basename, dirname, isAbsolute, join, resolve } from "node:path";
4
4
  import { tmpdir } from "node:os";
5
5
  import { glob } from "tinyglobby";
@@ -71,6 +71,79 @@ async function patternsFor(rootDir, kind, configured) {
71
71
  }
72
72
  return output;
73
73
  }
74
+ async function resolveExtensionEntries(dir) {
75
+ const packageJsonPath = join(dir, "package.json");
76
+ if (await exists(packageJsonPath)) try {
77
+ const manifest = piManifest(JSON.parse(await readFile(packageJsonPath, "utf8")));
78
+ if (manifest?.extensions !== void 0 && manifest.extensions.length > 0) {
79
+ const entries = [];
80
+ for (const extPath of manifest.extensions) {
81
+ const resolved = resolve(dir, extPath);
82
+ if (await exists(resolved)) entries.push(resolved);
83
+ }
84
+ if (entries.length > 0) return entries;
85
+ }
86
+ } catch {}
87
+ for (const index of ["index.ts", "index.js"]) {
88
+ const candidate = join(dir, index);
89
+ if (await exists(candidate)) return [candidate];
90
+ }
91
+ return null;
92
+ }
93
+ async function collectAutoExtensionEntries(dir) {
94
+ if (!await exists(dir)) return [];
95
+ const rootEntries = await resolveExtensionEntries(dir);
96
+ if (rootEntries !== null) return rootEntries;
97
+ const entries = [];
98
+ for (const entry of await readdir(dir, { withFileTypes: true })) {
99
+ if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
100
+ const fullPath = join(dir, entry.name);
101
+ let isDir = entry.isDirectory();
102
+ let isFile = entry.isFile();
103
+ if (entry.isSymbolicLink()) try {
104
+ const info = await stat(fullPath);
105
+ isDir = info.isDirectory();
106
+ isFile = info.isFile();
107
+ } catch {
108
+ continue;
109
+ }
110
+ if (isFile && (entry.name.endsWith(".ts") || entry.name.endsWith(".js"))) entries.push(fullPath);
111
+ else if (isDir) {
112
+ const resolved = await resolveExtensionEntries(fullPath);
113
+ if (resolved !== null) entries.push(...resolved);
114
+ }
115
+ }
116
+ return entries;
117
+ }
118
+ async function discoverExtensions(rootDir, configured) {
119
+ const entries = configured === void 0 ? ["extensions"] : configured;
120
+ const output = /* @__PURE__ */ new Set();
121
+ const globPatterns = [];
122
+ for (const raw of entries) {
123
+ const pattern = safePattern(raw);
124
+ if (pattern === void 0) continue;
125
+ if (pattern.startsWith("!") || /[*?[\]{}]/u.test(pattern)) {
126
+ globPatterns.push(pattern);
127
+ continue;
128
+ }
129
+ const absolute = resolve(rootDir, pattern);
130
+ try {
131
+ if ((await stat(absolute)).isDirectory()) for (const entry of await collectAutoExtensionEntries(absolute)) output.add(entry);
132
+ else output.add(absolute);
133
+ } catch {}
134
+ }
135
+ if (globPatterns.length > 0) {
136
+ const matches = await glob(globPatterns, {
137
+ cwd: rootDir,
138
+ absolute: true,
139
+ onlyFiles: true,
140
+ dot: false,
141
+ followSymbolicLinks: false
142
+ });
143
+ for (const match of matches) output.add(match);
144
+ }
145
+ return [...output].sort();
146
+ }
74
147
  async function discoverResources(rootDir, packageJson) {
75
148
  const manifest = piManifest(packageJson);
76
149
  const discover = async (kind) => {
@@ -84,7 +157,7 @@ async function discoverResources(rootDir, packageJson) {
84
157
  })).sort();
85
158
  };
86
159
  return {
87
- extensions: await discover("extensions"),
160
+ extensions: await discoverExtensions(rootDir, manifest?.extensions),
88
161
  skills: await discover("skills"),
89
162
  prompts: await discover("prompts"),
90
163
  themes: await discover("themes")
@@ -155,4 +228,4 @@ async function resolvePiPackage(source, cwd = process.cwd()) {
155
228
  //#endregion
156
229
  export { resolvePiPackage as t };
157
230
 
158
- //# sourceMappingURL=source-0sA5z08z.mjs.map
231
+ //# sourceMappingURL=source-l77aIDwD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-l77aIDwD.mjs","names":[],"sources":["../src/source.ts"],"sourcesContent":["import { access, mkdtemp, readdir, readFile, rm, stat } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { basename, dirname, isAbsolute, join, resolve } from 'node:path'\nimport { glob } from 'tinyglobby'\nimport type { ResolvedPiPackage, ResourceInventory } from './types.js'\n\ntype PiManifest = Partial<Record<'extensions' | 'skills' | 'prompts' | 'themes', string[]>>\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nfunction stringArray(value: unknown): string[] | undefined {\n return Array.isArray(value) && value.every(item => typeof item === 'string') ? value : undefined\n}\n\nfunction piManifest(packageJson: Record<string, unknown>): PiManifest | undefined {\n const raw = packageJson.pi\n if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) return undefined\n const record = raw as Record<string, unknown>\n const extensions = stringArray(record.extensions)\n const skills = stringArray(record.skills)\n const prompts = stringArray(record.prompts)\n const themes = stringArray(record.themes)\n return {\n ...(extensions !== undefined ? { extensions } : {}),\n ...(skills !== undefined ? { skills } : {}),\n ...(prompts !== undefined ? { prompts } : {}),\n ...(themes !== undefined ? { themes } : {}),\n }\n}\n\nconst DEFAULT_PATTERNS: Record<keyof ResourceInventory, string[]> = {\n extensions: ['extensions/**/*.{ts,tsx,js,jsx,mts,mjs,cts,cjs}'],\n skills: ['skills/**/*'],\n prompts: ['prompts/*.md'],\n themes: ['themes/*.json'],\n}\n\nconst FILE_PATTERNS: Record<keyof ResourceInventory, string> = {\n extensions: '**/*.{ts,tsx,js,jsx,mts,mjs,cts,cjs}',\n skills: '**/*',\n prompts: '**/*.md',\n themes: '**/*.json',\n}\n\n// Pi's own loader tolerates resource paths that do not resolve (existsSync\n// filtering); mirror that leniency for patterns escaping the package root:\n// skip the pattern with a warning instead of refusing the whole package.\n// Files outside the package are still never globbed or copied.\nfunction safePattern(pattern: string): string | undefined {\n const normalized = pattern.replaceAll('\\\\', '/')\n const positive = normalized.startsWith('!') ? normalized.slice(1) : normalized\n if (isAbsolute(positive) || positive.split('/').includes('..')) {\n console.warn(`pi2dsh: skipping resource pattern that escapes the package root (Pi itself would not resolve it either at install layout): ${JSON.stringify(pattern)}`)\n return undefined\n }\n return normalized\n}\n\nasync function patternsFor(\n rootDir: string,\n kind: keyof ResourceInventory,\n configured: string[] | undefined,\n): Promise<string[]> {\n if (configured === undefined) return DEFAULT_PATTERNS[kind]\n const output: string[] = []\n for (const raw of configured) {\n const pattern = safePattern(raw)\n if (pattern === undefined) continue\n if (pattern.startsWith('!')) {\n output.push(pattern)\n continue\n }\n const absolute = resolve(rootDir, pattern)\n try {\n const info = await stat(absolute)\n output.push(info.isDirectory() ? `${pattern.replace(/\\/$/u, '')}/${FILE_PATTERNS[kind]}` : pattern)\n } catch {\n output.push(pattern)\n }\n }\n return output\n}\n\n// Pi's extension discovery for a DIRECTORY entry (coding-agent\n// src/core/package-manager.ts resolveExtensionEntries/collectAutoExtensionEntries\n// @6f707eb36064e82af9c1320a7634f4dfad21049b; logic unchanged, minus the\n// .gitignore/.piignore filter): a directory that carries its own\n// package.json `pi.extensions` or an index.ts/index.js IS one entry set;\n// otherwise its direct *.ts/*.js files are entries and each subdirectory\n// contributes only through that same rule. No recursion beyond one level —\n// a package's `internal/` helpers (no index) are shared modules, not entries.\n// The old `dir/**/*.ts` glob loaded every helper as an extension and logged\n// \"has no default factory function\" for each (pi-code: 40 of 64 files).\nasync function resolveExtensionEntries(dir: string): Promise<string[] | null> {\n const packageJsonPath = join(dir, 'package.json')\n if (await exists(packageJsonPath)) {\n try {\n const manifest = piManifest(JSON.parse(await readFile(packageJsonPath, 'utf8')) as Record<string, unknown>)\n if (manifest?.extensions !== undefined && manifest.extensions.length > 0) {\n const entries: string[] = []\n for (const extPath of manifest.extensions) {\n const resolved = resolve(dir, extPath)\n if (await exists(resolved)) entries.push(resolved)\n }\n if (entries.length > 0) return entries\n }\n } catch {\n // An unreadable nested manifest falls through to the index rule, as Pi does.\n }\n }\n for (const index of ['index.ts', 'index.js']) {\n const candidate = join(dir, index)\n if (await exists(candidate)) return [candidate]\n }\n return null\n}\n\nasync function collectAutoExtensionEntries(dir: string): Promise<string[]> {\n if (!await exists(dir)) return []\n const rootEntries = await resolveExtensionEntries(dir)\n if (rootEntries !== null) return rootEntries\n const entries: string[] = []\n for (const entry of await readdir(dir, { withFileTypes: true })) {\n if (entry.name.startsWith('.') || entry.name === 'node_modules') continue\n const fullPath = join(dir, entry.name)\n let isDir = entry.isDirectory()\n let isFile = entry.isFile()\n if (entry.isSymbolicLink()) {\n try {\n const info = await stat(fullPath)\n isDir = info.isDirectory()\n isFile = info.isFile()\n } catch {\n continue\n }\n }\n if (isFile && (entry.name.endsWith('.ts') || entry.name.endsWith('.js'))) entries.push(fullPath)\n else if (isDir) {\n const resolved = await resolveExtensionEntries(fullPath)\n if (resolved !== null) entries.push(...resolved)\n }\n }\n return entries\n}\n\nasync function discoverExtensions(rootDir: string, configured: string[] | undefined): Promise<string[]> {\n // Pi: no manifest → the package's `extensions/` directory under the auto\n // rule; a manifest → each entry is a file (as is) or a directory (auto rule).\n // Patterns Pi would not understand (globs, negations) keep the glob path.\n const entries = configured === undefined ? ['extensions'] : configured\n const output = new Set<string>()\n const globPatterns: string[] = []\n for (const raw of entries) {\n const pattern = safePattern(raw)\n if (pattern === undefined) continue\n if (pattern.startsWith('!') || /[*?[\\]{}]/u.test(pattern)) {\n globPatterns.push(pattern)\n continue\n }\n const absolute = resolve(rootDir, pattern)\n try {\n const info = await stat(absolute)\n if (info.isDirectory()) for (const entry of await collectAutoExtensionEntries(absolute)) output.add(entry)\n else output.add(absolute)\n } catch {\n // Pi skips manifest entries that do not resolve.\n }\n }\n if (globPatterns.length > 0) {\n const matches = await glob(globPatterns, { cwd: rootDir, absolute: true, onlyFiles: true, dot: false, followSymbolicLinks: false })\n for (const match of matches) output.add(match)\n }\n return [...output].sort()\n}\n\nasync function discoverResources(rootDir: string, packageJson: Record<string, unknown>): Promise<ResourceInventory> {\n const manifest = piManifest(packageJson)\n const discover = async (kind: keyof ResourceInventory): Promise<string[]> => {\n const patterns = await patternsFor(rootDir, kind, manifest?.[kind])\n const matches = await glob(patterns, {\n cwd: rootDir,\n absolute: true,\n onlyFiles: true,\n dot: false,\n followSymbolicLinks: false,\n })\n return matches.sort()\n }\n return {\n extensions: await discoverExtensions(rootDir, manifest?.extensions),\n skills: await discover('skills'),\n prompts: await discover('prompts'),\n themes: await discover('themes'),\n }\n}\n\nfunction packageIdentity(packageJson: Record<string, unknown>, source: string, fallbackName: string) {\n return {\n name: typeof packageJson.name === 'string' ? packageJson.name : fallbackName,\n version: typeof packageJson.version === 'string' ? packageJson.version : '0.0.0-local',\n source,\n }\n}\n\nasync function readPackageJson(rootDir: string): Promise<Record<string, unknown>> {\n const text = await readFile(join(rootDir, 'package.json'), 'utf8')\n const parsed: unknown = JSON.parse(text)\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('package.json must contain an object')\n }\n return parsed as Record<string, unknown>\n}\n\nexport async function resolvePiPackage(source: string, cwd = process.cwd()): Promise<ResolvedPiPackage> {\n const localCandidate = resolve(cwd, source.replace(/^file:/u, ''))\n const local = source.startsWith('.')\n || source.startsWith('/')\n || source.startsWith('file:')\n || await exists(localCandidate)\n let rootDir: string\n let temporary = false\n let packageJson: Record<string, unknown>\n\n if (local) {\n const requested = localCandidate\n const info = await stat(requested)\n if (info.isFile()) {\n rootDir = dirname(requested)\n const packagePath = join(rootDir, 'package.json')\n packageJson = await exists(packagePath)\n ? await readPackageJson(rootDir)\n : { name: basename(requested).replace(/\\.[^.]+$/u, ''), pi: { extensions: [basename(requested)] } }\n } else {\n rootDir = requested\n packageJson = await readPackageJson(rootDir)\n }\n } else {\n rootDir = await mkdtemp(join(tmpdir(), 'pi2dsh-source-'))\n temporary = true\n try {\n // Lazy: only npm-spec resolution needs the registry client. Host\n // bundles resolve installed directories and never load pacote.\n const { default: pacote } = await import('pacote')\n await pacote.extract(source, rootDir)\n packageJson = await readPackageJson(rootDir)\n } catch (error) {\n await rm(rootDir, { recursive: true, force: true })\n throw error\n }\n }\n\n const resources = await discoverResources(rootDir, packageJson)\n const identity = packageIdentity(packageJson, source, basename(rootDir))\n return {\n rootDir,\n temporary,\n identity,\n packageJson,\n resources,\n async dispose() {\n if (temporary) await rm(rootDir, { recursive: true, force: true })\n },\n }\n}\n"],"mappings":"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"}
@@ -3,13 +3,13 @@ import { i as __require, n as __esmMin, t as __commonJSMin } from "./rolldown-ru
3
3
  import { promises } from "node:fs";
4
4
  import "node:path";
5
5
  import { format } from "node:url";
6
+ import { isIP } from "node:net";
6
7
  import { deprecate, promisify, types } from "node:util";
7
8
  import Stream, { PassThrough, pipeline } from "node:stream";
8
9
  import http from "node:http";
9
10
  import https from "node:https";
10
11
  import zlib from "node:zlib";
11
12
  import { Buffer as Buffer$1 } from "node:buffer";
12
- import { isIP } from "node:net";
13
13
  //#region node_modules/.pnpm/data-uri-to-buffer@4.0.1/node_modules/data-uri-to-buffer/dist/index.js
14
14
  /**
15
15
  * Returns a `Buffer` instance from the given data URI `uri`.
@@ -4042,7 +4042,7 @@ var init_body = __esmMin((() => {
4042
4042
  for (const [name, value] of parameters) formData.append(name, value);
4043
4043
  return formData;
4044
4044
  }
4045
- const { toFormData } = await import("./multipart-parser-CBAi6PxA.mjs");
4045
+ const { toFormData } = await import("./multipart-parser-BOEZ-KGK.mjs");
4046
4046
  return toFormData(this.body, ct);
4047
4047
  }
4048
4048
  /**
@@ -5028,4 +5028,4 @@ __esmMin((() => {
5028
5028
  }))();
5029
5029
  export { init_file as a, fetch as default, File$1 as i, FormData as n, init_esm_min as r, init_from as t };
5030
5030
 
5031
- //# sourceMappingURL=src-85HOaW5W.mjs.map
5031
+ //# sourceMappingURL=src-ChZlNrRV.mjs.map