pi2dsh 0.9.0 → 0.10.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 (33) hide show
  1. package/README.md +4 -1
  2. package/README.zh.md +4 -1
  3. package/dist/{analyzer-C86ba-27.mjs → analyzer-CsrBeS8r.mjs} +2 -2
  4. package/dist/{analyzer-C86ba-27.mjs.map → analyzer-CsrBeS8r.mjs.map} +1 -1
  5. package/dist/cli.mjs +3 -3
  6. package/dist/compat/pi-ai.d.mts +2 -1
  7. package/dist/compat/pi-ai.d.mts.map +1 -1
  8. package/dist/compat/pi-ai.mjs +2 -3
  9. package/dist/compat/pi-coding-agent.d.mts +259 -29
  10. package/dist/compat/pi-coding-agent.d.mts.map +1 -1
  11. package/dist/compat/pi-coding-agent.mjs +2 -2
  12. package/dist/credentials-oauth.mjs +2 -2
  13. package/dist/{generator-C0jNM-yu.mjs → generator-CSOv6wYT.mjs} +2 -2
  14. package/dist/{generator-C0jNM-yu.mjs.map → generator-CSOv6wYT.mjs.map} +1 -1
  15. package/dist/host.mjs +1 -1
  16. package/dist/index.mjs +4 -4
  17. package/dist/{mcp-config-Dlou-ZA-.mjs → mcp-config-Cn5gWemZ.mjs} +29 -29
  18. package/dist/mcp-config-Cn5gWemZ.mjs.map +1 -0
  19. package/dist/{pi-ai-BA3h0Dwv.mjs → pi-ai-Dyg4zyLZ.mjs} +196 -75
  20. package/dist/pi-ai-Dyg4zyLZ.mjs.map +1 -0
  21. package/dist/{pi-coding-agent-CznNsOnV.mjs → pi-coding-agent-Ctw-BhoY.mjs} +0 -0
  22. package/dist/pi-coding-agent-Ctw-BhoY.mjs.map +1 -0
  23. package/dist/{runtime-DMEJknhK.mjs → runtime-Ce3PTbWU.mjs} +417 -135
  24. package/dist/runtime-Ce3PTbWU.mjs.map +1 -0
  25. package/dist/runtime.d.mts.map +1 -1
  26. package/dist/runtime.mjs +1 -1
  27. package/package.json +5 -3
  28. package/dist/mcp-config-Dlou-ZA-.mjs.map +0 -1
  29. package/dist/pi-ai-BA3h0Dwv.mjs.map +0 -1
  30. package/dist/pi-coding-agent-CznNsOnV.mjs.map +0 -1
  31. package/dist/pi-uuid-Db8ShZsK.mjs +0 -47
  32. package/dist/pi-uuid-Db8ShZsK.mjs.map +0 -1
  33. package/dist/runtime-DMEJknhK.mjs.map +0 -1
@@ -782,6 +782,260 @@ declare function createLsTool(cwd: any, options: any): {
782
782
  execute: (toolCallId: any, params: any, signal: any, onUpdate: any, ctx: any) => any;
783
783
  };
784
784
  //#endregion
785
+ //#region src/compat/vendor/pi-compaction.d.ts
786
+ interface FileOperations {
787
+ read: Set<string>;
788
+ written: Set<string>;
789
+ edited: Set<string>;
790
+ }
791
+ /**
792
+ * Serialize LLM messages to text for summarization.
793
+ * This prevents the model from treating it as a conversation to continue.
794
+ * Call convertToLlm() first to handle custom message types.
795
+ *
796
+ * Tool results are truncated to keep the summarization request within
797
+ * reasonable token budgets. Full content is not needed for summarization.
798
+ */
799
+ declare function serializeConversation(messages: any): string;
800
+ /**
801
+ * Estimate token count for a message using chars/4 heuristic.
802
+ * This is conservative (overestimates tokens).
803
+ */
804
+ declare function estimateTokens(message: any): number;
805
+ /**
806
+ * Find the context-visible user-role message that starts the turn containing the given entry index.
807
+ * Returns -1 if no turn start found before the index.
808
+ */
809
+ declare function findTurnStartIndex(entries: any, entryIndex: number, startIndex: number): number;
810
+ interface CutPointResult {
811
+ /** Index of first entry to keep */
812
+ firstKeptEntryIndex: number;
813
+ /** Index of user message that starts the turn being split, or -1 if not splitting */
814
+ turnStartIndex: number;
815
+ /** Whether this cut splits a turn (cut point is not a user message) */
816
+ isSplitTurn: boolean;
817
+ }
818
+ /**
819
+ * Find the cut point in session entries that keeps approximately `keepRecentTokens`.
820
+ *
821
+ * Algorithm: Walk backwards from newest, accumulating estimated message sizes.
822
+ * Stop when we've accumulated >= keepRecentTokens. Cut at that point.
823
+ *
824
+ * Can cut at user OR assistant messages (never tool results). When cutting at an
825
+ * assistant message with tool calls, its tool results come after and will be kept.
826
+ *
827
+ * Returns CutPointResult with:
828
+ * - firstKeptEntryIndex: the entry index to start keeping from
829
+ * - turnStartIndex: if cutting mid-turn, the user message that started that turn
830
+ * - isSplitTurn: whether we're cutting in the middle of a turn
831
+ *
832
+ * Only considers entries between `startIndex` and `endIndex` (exclusive).
833
+ */
834
+ declare function findCutPoint(entries: any, startIndex: number, endIndex: number, keepRecentTokens: number): CutPointResult;
835
+ /** Result from compact() - SessionManager adds uuid/parentUuid when saving */
836
+ interface CompactionResult<T = unknown> {
837
+ summary: string;
838
+ firstKeptEntryId: string;
839
+ tokensBefore: number;
840
+ estimatedTokensAfter?: number;
841
+ /** Usage from the LLM call(s) that generated this summary, if available */
842
+ usage?: any;
843
+ /** Extension-specific data (e.g., ArtifactIndex, version markers for structured compaction) */
844
+ details?: T;
845
+ }
846
+ interface CompactionSettings {
847
+ enabled: boolean;
848
+ reserveTokens: number;
849
+ keepRecentTokens: number;
850
+ }
851
+ declare const DEFAULT_COMPACTION_SETTINGS: CompactionSettings;
852
+ /**
853
+ * Calculate total context tokens from usage.
854
+ * Uses the native totalTokens field when available, falls back to computing from components.
855
+ */
856
+ declare function calculateContextTokens(usage: any): number;
857
+ /**
858
+ * Find the last valid assistant message usage from session entries.
859
+ */
860
+ declare function getLastAssistantUsage(entries: any): any;
861
+ /**
862
+ * Check if compaction should trigger based on context usage.
863
+ */
864
+ declare function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean;
865
+ interface CompactionPreparation {
866
+ /** UUID of first entry to keep */
867
+ firstKeptEntryId: string;
868
+ /** Messages that will be summarized and discarded */
869
+ messagesToSummarize: any;
870
+ /** Messages that will be turned into turn prefix summary (if splitting) */
871
+ turnPrefixMessages: any;
872
+ /** Whether this is a split turn (cut point in middle of turn) */
873
+ isSplitTurn: boolean;
874
+ tokensBefore: number;
875
+ /** Summary from previous compaction, for iterative update */
876
+ previousSummary?: string;
877
+ /** File operations extracted from messagesToSummarize */
878
+ fileOps: FileOperations;
879
+ /** Compaction settions from settings.jsonl */
880
+ settings: CompactionSettings;
881
+ }
882
+ declare function prepareCompaction(pathEntries: any, settings: CompactionSettings): CompactionPreparation | undefined;
883
+ interface BranchSummaryResult {
884
+ summary?: string;
885
+ usage?: any;
886
+ readFiles?: string[];
887
+ modifiedFiles?: string[];
888
+ aborted?: boolean;
889
+ error?: string;
890
+ }
891
+ interface BranchPreparation {
892
+ /** Messages extracted for summarization, in chronological order */
893
+ messages: any;
894
+ /** File operations extracted from tool calls */
895
+ fileOps: FileOperations;
896
+ /** Total estimated tokens in messages */
897
+ totalTokens: number;
898
+ }
899
+ interface CollectEntriesResult {
900
+ /** Entries to summarize, in chronological order */
901
+ entries: any;
902
+ /** Common ancestor between old and new position, if any */
903
+ commonAncestorId: string | null;
904
+ }
905
+ interface GenerateBranchSummaryOptions {
906
+ model: any;
907
+ apiKey?: string;
908
+ headers?: Record<string, string>;
909
+ env?: Record<string, string>;
910
+ signal: AbortSignal;
911
+ customInstructions?: string;
912
+ replaceInstructions?: boolean;
913
+ reserveTokens?: number;
914
+ streamFn?: any;
915
+ retry?: any;
916
+ callbacks?: any;
917
+ }
918
+ /**
919
+ * Collect entries that should be summarized when navigating from one position to another.
920
+ *
921
+ * Walks from oldLeafId back to the common ancestor with targetId, collecting entries
922
+ * along the way. Does NOT stop at compaction boundaries - those are included and their
923
+ * summaries become context.
924
+ */
925
+ declare function collectEntriesForBranchSummary(session: any, oldLeafId: any, targetId: any): CollectEntriesResult;
926
+ /**
927
+ * Prepare entries for summarization with token budget.
928
+ *
929
+ * Walks entries from NEWEST to OLDEST, adding messages until we hit the token budget.
930
+ * This ensures we keep the most recent context when the branch is too long.
931
+ */
932
+ declare function prepareBranchEntries(entries: any, tokenBudget?: number): BranchPreparation;
933
+ //#endregion
934
+ //#region src/compat/vendor/pi-frontmatter.d.ts
935
+ type ParsedFrontmatter<T extends Record<string, unknown>> = {
936
+ frontmatter: T;
937
+ body: string;
938
+ };
939
+ declare const parseFrontmatter: <T extends Record<string, unknown> = Record<string, unknown>>(content: string) => ParsedFrontmatter<T>;
940
+ declare const stripFrontmatter: (content: string) => string;
941
+ //#endregion
942
+ //#region src/compat/vendor/pi-tool-wrapper.d.ts
943
+ /** Wrap a ToolDefinition into an AgentTool for the core runtime. */
944
+ declare function wrapToolDefinition(definition: any, ctxFactory: any): {
945
+ name: any;
946
+ label: any;
947
+ description: any;
948
+ parameters: any;
949
+ constrainedSampling: any;
950
+ prepareArguments: any;
951
+ executionMode: any;
952
+ execute: (toolCallId: any, params: any, signal: any, onUpdate: any, ctx: any) => any;
953
+ };
954
+ /** Wrap multiple ToolDefinitions into AgentTools for the core runtime. */
955
+ declare function wrapToolDefinitions(definitions: any, ctxFactory: any): any;
956
+ /**
957
+ * Wrap a RegisteredTool into an AgentTool.
958
+ * Uses the runner's createContext() for consistent context across tools and event handlers.
959
+ */
960
+ declare function wrapRegisteredTool(registeredTool: any, runner: any): {
961
+ execute: (toolCallId: any, params: any, signal: any, onUpdate: any) => Promise<any>;
962
+ name: any;
963
+ label: any;
964
+ description: any;
965
+ parameters: any;
966
+ constrainedSampling: any;
967
+ prepareArguments: any;
968
+ executionMode: any;
969
+ };
970
+ /**
971
+ * Wrap all registered tools into AgentTools.
972
+ * Uses the runner's createContext() for consistent context across tools and event handlers.
973
+ */
974
+ declare function wrapRegisteredTools(registeredTools: any, runner: any): any;
975
+ //#endregion
976
+ //#region src/compat/vendor/pi-trust-store.d.ts
977
+ type ProjectTrustDecision = boolean | null;
978
+ interface ProjectTrustStoreEntry {
979
+ path: string;
980
+ decision: boolean;
981
+ }
982
+ interface ProjectTrustUpdate {
983
+ path: string;
984
+ decision: ProjectTrustDecision;
985
+ }
986
+ declare class ProjectTrustStore {
987
+ private trustPath;
988
+ constructor(agentDir: string);
989
+ get(cwd: string): ProjectTrustDecision;
990
+ getEntry(cwd: string): ProjectTrustStoreEntry | null;
991
+ set(cwd: string, decision: ProjectTrustDecision): void;
992
+ setMany(decisions: ProjectTrustUpdate[]): void;
993
+ }
994
+ //#endregion
995
+ //#region src/compat/vendor/pi-skills-load.d.ts
996
+ interface Skill {
997
+ name: string;
998
+ description: string;
999
+ filePath: string;
1000
+ baseDir: string;
1001
+ sourceInfo: any;
1002
+ disableModelInvocation: boolean;
1003
+ }
1004
+ interface LoadSkillsResult {
1005
+ skills: Skill[];
1006
+ diagnostics: any;
1007
+ }
1008
+ interface LoadSkillsFromDirOptions {
1009
+ /** Directory to scan for skills */
1010
+ dir: string;
1011
+ /** Source identifier for these skills */
1012
+ source: string;
1013
+ }
1014
+ /**
1015
+ * Load skills from a directory.
1016
+ *
1017
+ * Discovery rules:
1018
+ * - if a directory contains SKILL.md, treat it as a skill root and do not recurse further
1019
+ * - otherwise, load direct .md children in the root
1020
+ * - recurse into subdirectories to find SKILL.md
1021
+ */
1022
+ declare function loadSkillsFromDir(options: LoadSkillsFromDirOptions): LoadSkillsResult;
1023
+ interface LoadSkillsOptions {
1024
+ /** Working directory for project-local skills. */
1025
+ cwd: string;
1026
+ /** Agent config directory for global skills. */
1027
+ agentDir: string;
1028
+ /** Explicit skill paths (files or directories) */
1029
+ skillPaths: string[];
1030
+ /** Include default skills directories. */
1031
+ includeDefaults: boolean;
1032
+ }
1033
+ /**
1034
+ * Load skills from all configured locations.
1035
+ * Returns skills and any validation diagnostics.
1036
+ */
1037
+ declare function loadSkills(options: LoadSkillsOptions): LoadSkillsResult;
1038
+ //#endregion
785
1039
  //#region src/compat/vendor/pi-skills-format.d.ts
786
1040
  /**
787
1041
  * Format skills for inclusion in a system prompt.
@@ -840,25 +1094,10 @@ declare class DynamicBorder implements Component {
840
1094
  render(width: number): string[];
841
1095
  invalidate(): void;
842
1096
  }
843
- declare function estimateTokens(message: AgentMessage): number;
844
- declare function calculateContextTokens(messages: AgentMessage[]): number;
845
- declare const DEFAULT_COMPACTION_SETTINGS: Readonly<{
846
- enabled: true;
847
- reserveTokens: 30000;
848
- keepRecentTokens: 20000;
849
- }>;
850
- declare function shouldCompact(..._args: unknown[]): boolean;
851
- declare function compact(..._args: unknown[]): never;
852
- declare function findCutPoint(..._args: unknown[]): never;
853
- declare function generateSummary(..._args: unknown[]): never;
854
- declare function generateSummaryWithUsage(..._args: unknown[]): never;
855
- declare function generateBranchSummary(..._args: unknown[]): never;
856
- declare function serializeConversation(messages: AgentMessage[]): string;
857
- declare function parseFrontmatter(text: string): {
858
- attributes: Record<string, string>;
859
- body: string;
860
- };
861
- declare function stripFrontmatter(text: string): string;
1097
+ declare function compact(preparation: unknown, model: unknown, apiKey?: unknown, headers?: unknown, customInstructions?: unknown, signal?: unknown, thinkingLevel?: unknown, streamFn?: unknown, env?: unknown, retry?: unknown, callbacks?: unknown): Promise<unknown>;
1098
+ declare function generateSummary(currentMessages: unknown, model: unknown, reserveTokens: unknown, apiKey?: unknown, headers?: unknown, signal?: unknown, customInstructions?: unknown, previousSummary?: unknown, thinkingLevel?: unknown, streamFn?: unknown, env?: unknown, retry?: unknown, callbacks?: unknown): Promise<string>;
1099
+ declare function generateSummaryWithUsage(currentMessages: unknown, model: unknown, reserveTokens: unknown, apiKey?: unknown, headers?: unknown, signal?: unknown, customInstructions?: unknown, previousSummary?: unknown, thinkingLevel?: unknown, streamFn?: unknown, env?: unknown, retry?: unknown, callbacks?: unknown): Promise<unknown>;
1100
+ declare function generateBranchSummary(entries: unknown, options: Record<string, unknown>): Promise<unknown>;
862
1101
  declare function copyToClipboard(text: string): Promise<boolean>;
863
1102
  interface ImageResizeOptions {
864
1103
  maxWidth?: number;
@@ -891,7 +1130,6 @@ interface ParsedSkillBlock {
891
1130
  [key: string]: unknown;
892
1131
  }
893
1132
  declare function parseSkillBlock(text: string): ParsedSkillBlock | null;
894
- declare function wrapRegisteredTool(..._args: unknown[]): never;
895
1133
  declare function getBinDir(): string;
896
1134
  type SettingsRecord = Record<string, unknown>;
897
1135
  interface SettingsManagerCreateOptions {
@@ -902,11 +1140,6 @@ interface RetrySettings {
902
1140
  maxRetries: number;
903
1141
  baseDelayMs: number;
904
1142
  }
905
- interface CompactionSettings {
906
- enabled: boolean;
907
- reserveTokens: number;
908
- keepRecentTokens: number;
909
- }
910
1143
  type DefaultProjectTrust = 'ask' | 'always' | 'never';
911
1144
  type TuiMode = 'regular' | 'fullscreen';
912
1145
  type PackageSource = string | Record<string, unknown>;
@@ -973,7 +1206,6 @@ declare class InMemorySettingsStorage {
973
1206
  withLock<T>(_scope: string, fn: () => Promise<T> | T): Promise<T>;
974
1207
  }
975
1208
  declare class FileSettingsStorage extends InMemorySettingsStorage {}
976
- declare const ProjectTrustStore: new (...args: unknown[]) => never;
977
1209
  declare class DefaultResourceLoader {
978
1210
  #private;
979
1211
  constructor(options?: SettingsRecord);
@@ -1041,7 +1273,6 @@ declare function createCodingTools(cwd: string, options?: Record<string, {
1041
1273
  declare function createReadOnlyTools(cwd: string, options?: Record<string, {
1042
1274
  [key: string]: unknown;
1043
1275
  } | undefined>): unknown[];
1044
- declare function loadSkills(..._args: unknown[]): never;
1045
1276
  declare function getReadmePath(): string;
1046
1277
  declare function getToolPath(tool: string): string | undefined;
1047
1278
  declare function ensureTool(tool: string, _silent?: boolean): Promise<string | undefined>;
@@ -1056,7 +1287,6 @@ declare function processImage(bytes: Uint8Array, mimeType: string, _options?: {
1056
1287
  ok: false;
1057
1288
  message: string;
1058
1289
  }>;
1059
- declare function loadSkillsFromDir(..._args: unknown[]): never;
1060
1290
  declare function createEventBus(): {
1061
1291
  emit(channel: string, data: unknown): void;
1062
1292
  on(channel: string, handler: (data: unknown) => void): () => void;
@@ -1110,5 +1340,5 @@ declare function keyHint(keybinding: string, description: string): string;
1110
1340
  declare function keyText(keybinding: string): string;
1111
1341
  declare function rawKeyHint(key: string, description: string): string;
1112
1342
  //#endregion
1113
- export { AssistantMessageComponent, BRANCH_SUMMARY_PREFIX, BRANCH_SUMMARY_SUFFIX, type BashExecutionMessage, BorderedLoader, type BranchSummaryEntry, type BranchSummaryMessage, COMPACTION_SUMMARY_PREFIX, COMPACTION_SUMMARY_SUFFIX, CONFIG_DIR_NAME, CURRENT_SESSION_VERSION, ColorMode, type CompactionEntry, CompactionSettings, type CompactionSummaryMessage, CustomEditor, type CustomEntry, type CustomMessage, CustomMessageComponent, type CustomMessageEntry, DEFAULT_COMPACTION_SETTINGS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DefaultPackageManager, DefaultProjectTrust, DefaultResourceLoader, DynamicBorder, ExtensionEditorComponent, ExtensionInputComponent, ExtensionRunner, type ExtensionRuntime, ExtensionSelectorComponent, FileSettingsStorage, FooterComponent, ImageResizeOptions, InMemorySettingsStorage, type LabelEntry, type ModelChangeEntry, ModelRegistry, ModelRuntime, PackageSource, ParsedSkillBlock, ProjectTrustStore, RegisteredToolRecord, RenderDiffOptions, ResizedImage, RetrySettings, type SessionContext, type SessionEntry, type SessionHeader, type SessionInfo, type SessionInfoEntry, SessionManager, type SessionMessageEntry, type SessionTreeNode, SettingsCallbacks, SettingsConfig, SettingsManager, SettingsManagerCreateOptions, SettingsSelectorComponent, ShellConfig, StoredCredential, Theme, ThemeBg, ThemeColor, type ThinkingLevelChangeEntry, ToolExecutionComponent, ToolExecutionOptions, type TruncationOptions, type TruncationResult, TuiMode, UserMessageComponent, VERSION, VisualTruncateResult, __setSubagentSessionFactory, assertValidSessionId, bashExecutionToText, bashToolSystemPromptContribution, buildContextEntries, buildSessionContext, calculateContextTokens, compact, convertToLlm, convertToPng, copyToClipboard, createAgentSession, createBashTool, createBashToolDefinition, createBranchSummaryMessage, createCodingTools, createCompactionSummaryMessage, createCustomMessage, createEditTool, createEditToolDefinition, createEventBus, createExtensionRuntime, createFindTool, createFindToolDefinition, createGrepTool, createGrepToolDefinition, createLocalBashOperations, createLsTool, createLsToolDefinition, createReadOnlyTools, createReadTool, createReadToolDefinition, createWriteTool, createWriteToolDefinition, defineTool, ensureTool, estimateTokens, findCutPoint, findMostRecentSession, formatSize, formatSkillsForPrompt, generateBranchSummary, generateSummary, generateSummaryWithUsage, getAgentDir, getBinDir, getDefaultSessionDir, getLanguageFromPath, getLatestCompactionEntry, getMarkdownTheme, getPackageDir, getReadmePath, getSelectListTheme, getSettingsListTheme, getShellConfig, getToolPath, highlightCode, initTheme, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, keyHint, keyText, loadEntriesFromFile, loadSkills, loadSkillsFromDir, migrateSessionEntries, parseFrontmatter, parseSessionEntries, parseSkillBlock, processImage, rawKeyHint, readStoredCredential, renderDiff, resizeImage, serializeConversation, sessionEntryToContextMessages, shouldCompact, stripFrontmatter, theme, truncateHead, truncateLine, truncateTail, truncateToVisualLines, withFileMutationQueue, wrapRegisteredTool };
1343
+ export { AssistantMessageComponent, BRANCH_SUMMARY_PREFIX, BRANCH_SUMMARY_SUFFIX, type BashExecutionMessage, BorderedLoader, type BranchPreparation, type BranchSummaryEntry, type BranchSummaryMessage, type BranchSummaryResult, COMPACTION_SUMMARY_PREFIX, COMPACTION_SUMMARY_SUFFIX, CONFIG_DIR_NAME, CURRENT_SESSION_VERSION, type CollectEntriesResult, ColorMode, type CompactionEntry, type CompactionPreparation, type CompactionResult, type CompactionSettings, type CompactionSummaryMessage, CustomEditor, type CustomEntry, type CustomMessage, CustomMessageComponent, type CustomMessageEntry, type CutPointResult, DEFAULT_COMPACTION_SETTINGS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DefaultPackageManager, DefaultProjectTrust, DefaultResourceLoader, DynamicBorder, ExtensionEditorComponent, ExtensionInputComponent, ExtensionRunner, type ExtensionRuntime, ExtensionSelectorComponent, type FileOperations, FileSettingsStorage, FooterComponent, type GenerateBranchSummaryOptions, ImageResizeOptions, InMemorySettingsStorage, type LabelEntry, type ModelChangeEntry, ModelRegistry, ModelRuntime, PackageSource, ParsedSkillBlock, ProjectTrustStore, RegisteredToolRecord, RenderDiffOptions, ResizedImage, RetrySettings, type SessionContext, type SessionEntry, type SessionHeader, type SessionInfo, type SessionInfoEntry, SessionManager, type SessionMessageEntry, type SessionTreeNode, SettingsCallbacks, SettingsConfig, SettingsManager, SettingsManagerCreateOptions, SettingsSelectorComponent, ShellConfig, StoredCredential, Theme, ThemeBg, ThemeColor, type ThinkingLevelChangeEntry, ToolExecutionComponent, ToolExecutionOptions, type TruncationOptions, type TruncationResult, TuiMode, UserMessageComponent, VERSION, VisualTruncateResult, __setSubagentSessionFactory, assertValidSessionId, bashExecutionToText, bashToolSystemPromptContribution, buildContextEntries, buildSessionContext, calculateContextTokens, collectEntriesForBranchSummary, compact, convertToLlm, convertToPng, copyToClipboard, createAgentSession, createBashTool, createBashToolDefinition, createBranchSummaryMessage, createCodingTools, createCompactionSummaryMessage, createCustomMessage, createEditTool, createEditToolDefinition, createEventBus, createExtensionRuntime, createFindTool, createFindToolDefinition, createGrepTool, createGrepToolDefinition, createLocalBashOperations, createLsTool, createLsToolDefinition, createReadOnlyTools, createReadTool, createReadToolDefinition, createWriteTool, createWriteToolDefinition, defineTool, ensureTool, estimateTokens, findCutPoint, findMostRecentSession, findTurnStartIndex, formatSize, formatSkillsForPrompt, generateBranchSummary, generateSummary, generateSummaryWithUsage, getAgentDir, getBinDir, getDefaultSessionDir, getLanguageFromPath, getLastAssistantUsage, getLatestCompactionEntry, getMarkdownTheme, getPackageDir, getReadmePath, getSelectListTheme, getSettingsListTheme, getShellConfig, getToolPath, highlightCode, initTheme, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, keyHint, keyText, loadEntriesFromFile, loadSkills, loadSkillsFromDir, migrateSessionEntries, parseFrontmatter, parseSessionEntries, parseSkillBlock, prepareBranchEntries, prepareCompaction, processImage, rawKeyHint, readStoredCredential, renderDiff, resizeImage, serializeConversation, sessionEntryToContextMessages, shouldCompact, stripFrontmatter, theme, truncateHead, truncateLine, truncateTail, truncateToVisualLines, withFileMutationQueue, wrapRegisteredTool, wrapRegisteredTools, wrapToolDefinition, wrapToolDefinitions };
1114
1344
  //# sourceMappingURL=pi-coding-agent.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi-coding-agent.d.mts","names":[],"sources":["../../src/compat/vendor/pi-messages.ts","../../src/compat/vendor/pi-session-manager.ts","../../src/compat/vendor/pi-truncate.ts","../../src/compat/vendor/pi-file-mutation-queue.ts","../../src/compat/vendor/pi-config-shim.ts","../../src/compat/vendor/pi-extension-runtime.ts","../../src/compat/vendor/pi-tools/bash.ts","../../src/compat/vendor/pi-tools/read.ts","../../src/compat/vendor/pi-tools/edit.ts","../../src/compat/vendor/pi-tools/write.ts","../../src/compat/vendor/pi-tools/grep.ts","../../src/compat/vendor/pi-tools/find.ts","../../src/compat/vendor/pi-tools/ls.ts","../../src/compat/vendor/pi-skills-format.ts","../../src/compat/pi-coding-agent.ts"],"mappings":"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"}
1
+ {"version":3,"file":"pi-coding-agent.d.mts","names":[],"sources":["../../src/compat/vendor/pi-messages.ts","../../src/compat/vendor/pi-session-manager.ts","../../src/compat/vendor/pi-truncate.ts","../../src/compat/vendor/pi-file-mutation-queue.ts","../../src/compat/vendor/pi-config-shim.ts","../../src/compat/vendor/pi-extension-runtime.ts","../../src/compat/vendor/pi-tools/bash.ts","../../src/compat/vendor/pi-tools/read.ts","../../src/compat/vendor/pi-tools/edit.ts","../../src/compat/vendor/pi-tools/write.ts","../../src/compat/vendor/pi-tools/grep.ts","../../src/compat/vendor/pi-tools/find.ts","../../src/compat/vendor/pi-tools/ls.ts","../../src/compat/vendor/pi-compaction.ts","../../src/compat/vendor/pi-frontmatter.ts","../../src/compat/vendor/pi-tool-wrapper.ts","../../src/compat/vendor/pi-trust-store.ts","../../src/compat/vendor/pi-skills-load.ts","../../src/compat/vendor/pi-skills-format.ts","../../src/compat/pi-coding-agent.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
 
2
+ import { $ as isReadToolResult, $t as formatSize, A as createEventBus, At as prepareCompaction, B as getPackageDir, Bt as createWriteToolDefinition, C as VERSION, Cn as createCustomMessage, Ct as calculateContextTokens, D as copyToClipboard, Dt as findTurnStartIndex, E as convertToPng, Et as findCutPoint, F as generateSummary, Ft as createFindTool, G as getToolPath, Gt as bashToolSystemPromptContribution, H as getSelectListTheme, Ht as createEditToolDefinition, I as generateSummaryWithUsage, It as createFindToolDefinition, J as isBashToolResult, Jt as createLocalBashOperations, K as highlightCode, Kt as createBashTool, L as getBinDir, Lt as createGrepTool, M as defineTool, Mt as shouldCompact, N as ensureTool, Nt as createLsTool, O as createAgentSession, Ot as getLastAssistantUsage, P as generateBranchSummary, Pt as createLsToolDefinition, Q as isLsToolResult, Qt as DEFAULT_MAX_LINES, R as getLanguageFromPath, Rt as createGrepToolDefinition, S as UserMessageComponent, Sn as createCompactionSummaryMessage, St as DEFAULT_COMPACTION_SETTINGS, T as compact, Tt as estimateTokens, U as getSettingsListTheme, Ut as createReadTool, V as getReadmePath, Vt as createEditTool, W as getShellConfig, Wt as createReadToolDefinition, X as isFindToolResult, Xt as withFileMutationQueue, Y as isEditToolResult, Yt as createExtensionRuntime, Z as isGrepToolResult, Zt as DEFAULT_MAX_BYTES, _ as ModelRuntime, _n as COMPACTION_SUMMARY_PREFIX, _t as wrapRegisteredTools, a as CustomMessageComponent, an as assertValidSessionId, at as processImage, b as Theme, bn as convertToLlm, bt as parseFrontmatter, c as DynamicBorder, cn as findMostRecentSession, ct as renderDiff, d as ExtensionRunner, dn as loadEntriesFromFile, dt as truncateToVisualLines, en as truncateHead, et as isToolCallEventType, f as ExtensionSelectorComponent, fn as migrateSessionEntries, ft as formatSkillsForPrompt, g as ModelRegistry, gn as BRANCH_SUMMARY_SUFFIX, gt as wrapRegisteredTool, h as InMemorySettingsStorage, hn as BRANCH_SUMMARY_PREFIX, ht as ProjectTrustStore, i as CustomEditor, in as SessionManager, it as parseSkillBlock, j as createReadOnlyTools, jt as serializeConversation, k as createCodingTools, kt as prepareBranchEntries, l as ExtensionEditorComponent, ln as getDefaultSessionDir, lt as resizeImage, m as FooterComponent, mn as sessionEntryToContextMessages, mt as loadSkillsFromDir, n as BorderedLoader, nn as truncateTail, nt as keyHint, o as DefaultPackageManager, on as buildContextEntries, ot as rawKeyHint, p as FileSettingsStorage, pn as parseSessionEntries, pt as loadSkills, q as initTheme, qt as createBashToolDefinition, r as CONFIG_DIR_NAME, rn as CURRENT_SESSION_VERSION, rt as keyText, s as DefaultResourceLoader, sn as buildSessionContext, st as readStoredCredential, t as AssistantMessageComponent, tn as truncateLine, tt as isWriteToolResult, u as ExtensionInputComponent, un as getLatestCompactionEntry, ut as theme, v as SettingsManager, vn as COMPACTION_SUMMARY_SUFFIX, vt as wrapToolDefinition, w as __setSubagentSessionFactory, wt as collectEntriesForBranchSummary, x as ToolExecutionComponent, xn as createBranchSummaryMessage, xt as stripFrontmatter, y as SettingsSelectorComponent, yn as bashExecutionToText, yt as wrapToolDefinitions, z as getMarkdownTheme, zt as createWriteTool } from "../pi-coding-agent-Ctw-BhoY.mjs";
2
3
  import { t as getAgentDir } from "../pi-config-shim-CZ1wFzqM.mjs";
3
- import { $ as isBashToolResult, $t as buildSessionContext, A as copyToClipboard, At as createGrepToolDefinition, B as generateSummary, Bt as createLocalBashOperations, C as ToolExecutionComponent, Ct as wrapRegisteredTool, D as calculateContextTokens, Dt as createFindTool, E as __setSubagentSessionFactory, Et as createLsToolDefinition, F as defineTool, Ft as createReadTool, G as getPackageDir, Gt as formatSize, H as getBinDir, Ht as withFileMutationQueue, I as ensureTool, It as createReadToolDefinition, J as getSettingsListTheme, Jt as truncateTail, K as getReadmePath, Kt as truncateHead, L as estimateTokens, Lt as bashToolSystemPromptContribution, M as createCodingTools, Mt as createWriteToolDefinition, N as createEventBus, Nt as createEditTool, O as compact, Ot as createFindToolDefinition, P as createReadOnlyTools, Pt as createEditToolDefinition, Q as initTheme, Qt as buildContextEntries, R as findCutPoint, Rt as createBashTool, S as Theme, St as truncateToVisualLines, T as VERSION, Tt as createLsTool, U as getLanguageFromPath, Ut as DEFAULT_MAX_BYTES, V as generateSummaryWithUsage, Vt as createExtensionRuntime, W as getMarkdownTheme, Wt as DEFAULT_MAX_LINES, X as getToolPath, Xt as SessionManager, Y as getShellConfig, Yt as CURRENT_SESSION_VERSION, Z as highlightCode, Zt as assertValidSessionId, _ as ModelRegistry, _t as resizeImage, a as CustomMessageComponent, an as parseSessionEntries, at as isToolCallEventType, b as SettingsManager, bt as stripFrontmatter, c as DefaultResourceLoader, cn as BRANCH_SUMMARY_SUFFIX, ct as keyText, d as ExtensionInputComponent, dn as bashExecutionToText, dt as parseFrontmatter, en as findMostRecentSession, et as isEditToolResult, f as ExtensionRunner, fn as convertToLlm, ft as parseSkillBlock, g as InMemorySettingsStorage, gt as renderDiff, h as FooterComponent, hn as createCustomMessage, ht as readStoredCredential, i as CustomEditor, in as migrateSessionEntries, it as isReadToolResult, j as createAgentSession, jt as createWriteTool, k as convertToPng, kt as createGrepTool, l as DynamicBorder, ln as COMPACTION_SUMMARY_PREFIX, lt as loadSkills, m as FileSettingsStorage, mn as createCompactionSummaryMessage, mt as rawKeyHint, n as BorderedLoader, nn as getLatestCompactionEntry, nt as isGrepToolResult, o as DEFAULT_COMPACTION_SETTINGS, on as sessionEntryToContextMessages, ot as isWriteToolResult, p as ExtensionSelectorComponent, pn as createBranchSummaryMessage, pt as processImage, q as getSelectListTheme, qt as truncateLine, r as CONFIG_DIR_NAME, rn as loadEntriesFromFile, rt as isLsToolResult, s as DefaultPackageManager, sn as BRANCH_SUMMARY_PREFIX, st as keyHint, t as AssistantMessageComponent, tn as getDefaultSessionDir, tt as isFindToolResult, u as ExtensionEditorComponent, un as COMPACTION_SUMMARY_SUFFIX, ut as loadSkillsFromDir, v as ModelRuntime, vt as serializeConversation, w as UserMessageComponent, wt as formatSkillsForPrompt, x as SettingsSelectorComponent, xt as theme, y as ProjectTrustStore, yt as shouldCompact, z as generateBranchSummary, zt as createBashToolDefinition } from "../pi-coding-agent-CznNsOnV.mjs";
4
- export { AssistantMessageComponent, BRANCH_SUMMARY_PREFIX, BRANCH_SUMMARY_SUFFIX, BorderedLoader, COMPACTION_SUMMARY_PREFIX, COMPACTION_SUMMARY_SUFFIX, CONFIG_DIR_NAME, CURRENT_SESSION_VERSION, CustomEditor, CustomMessageComponent, DEFAULT_COMPACTION_SETTINGS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DefaultPackageManager, DefaultResourceLoader, DynamicBorder, ExtensionEditorComponent, ExtensionInputComponent, ExtensionRunner, ExtensionSelectorComponent, FileSettingsStorage, FooterComponent, InMemorySettingsStorage, ModelRegistry, ModelRuntime, ProjectTrustStore, SessionManager, SettingsManager, SettingsSelectorComponent, Theme, ToolExecutionComponent, UserMessageComponent, VERSION, __setSubagentSessionFactory, assertValidSessionId, bashExecutionToText, bashToolSystemPromptContribution, buildContextEntries, buildSessionContext, calculateContextTokens, compact, convertToLlm, convertToPng, copyToClipboard, createAgentSession, createBashTool, createBashToolDefinition, createBranchSummaryMessage, createCodingTools, createCompactionSummaryMessage, createCustomMessage, createEditTool, createEditToolDefinition, createEventBus, createExtensionRuntime, createFindTool, createFindToolDefinition, createGrepTool, createGrepToolDefinition, createLocalBashOperations, createLsTool, createLsToolDefinition, createReadOnlyTools, createReadTool, createReadToolDefinition, createWriteTool, createWriteToolDefinition, defineTool, ensureTool, estimateTokens, findCutPoint, findMostRecentSession, formatSize, formatSkillsForPrompt, generateBranchSummary, generateSummary, generateSummaryWithUsage, getAgentDir, getBinDir, getDefaultSessionDir, getLanguageFromPath, getLatestCompactionEntry, getMarkdownTheme, getPackageDir, getReadmePath, getSelectListTheme, getSettingsListTheme, getShellConfig, getToolPath, highlightCode, initTheme, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, keyHint, keyText, loadEntriesFromFile, loadSkills, loadSkillsFromDir, migrateSessionEntries, parseFrontmatter, parseSessionEntries, parseSkillBlock, processImage, rawKeyHint, readStoredCredential, renderDiff, resizeImage, serializeConversation, sessionEntryToContextMessages, shouldCompact, stripFrontmatter, theme, truncateHead, truncateLine, truncateTail, truncateToVisualLines, withFileMutationQueue, wrapRegisteredTool };
4
+ export { AssistantMessageComponent, BRANCH_SUMMARY_PREFIX, BRANCH_SUMMARY_SUFFIX, BorderedLoader, COMPACTION_SUMMARY_PREFIX, COMPACTION_SUMMARY_SUFFIX, CONFIG_DIR_NAME, CURRENT_SESSION_VERSION, CustomEditor, CustomMessageComponent, DEFAULT_COMPACTION_SETTINGS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DefaultPackageManager, DefaultResourceLoader, DynamicBorder, ExtensionEditorComponent, ExtensionInputComponent, ExtensionRunner, ExtensionSelectorComponent, FileSettingsStorage, FooterComponent, InMemorySettingsStorage, ModelRegistry, ModelRuntime, ProjectTrustStore, SessionManager, SettingsManager, SettingsSelectorComponent, Theme, ToolExecutionComponent, UserMessageComponent, VERSION, __setSubagentSessionFactory, assertValidSessionId, bashExecutionToText, bashToolSystemPromptContribution, buildContextEntries, buildSessionContext, calculateContextTokens, collectEntriesForBranchSummary, compact, convertToLlm, convertToPng, copyToClipboard, createAgentSession, createBashTool, createBashToolDefinition, createBranchSummaryMessage, createCodingTools, createCompactionSummaryMessage, createCustomMessage, createEditTool, createEditToolDefinition, createEventBus, createExtensionRuntime, createFindTool, createFindToolDefinition, createGrepTool, createGrepToolDefinition, createLocalBashOperations, createLsTool, createLsToolDefinition, createReadOnlyTools, createReadTool, createReadToolDefinition, createWriteTool, createWriteToolDefinition, defineTool, ensureTool, estimateTokens, findCutPoint, findMostRecentSession, findTurnStartIndex, formatSize, formatSkillsForPrompt, generateBranchSummary, generateSummary, generateSummaryWithUsage, getAgentDir, getBinDir, getDefaultSessionDir, getLanguageFromPath, getLastAssistantUsage, getLatestCompactionEntry, getMarkdownTheme, getPackageDir, getReadmePath, getSelectListTheme, getSettingsListTheme, getShellConfig, getToolPath, highlightCode, initTheme, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, keyHint, keyText, loadEntriesFromFile, loadSkills, loadSkillsFromDir, migrateSessionEntries, parseFrontmatter, parseSessionEntries, parseSkillBlock, prepareBranchEntries, prepareCompaction, processImage, rawKeyHint, readStoredCredential, renderDiff, resizeImage, serializeConversation, sessionEntryToContextMessages, shouldCompact, stripFrontmatter, theme, truncateHead, truncateLine, truncateTail, truncateToVisualLines, withFileMutationQueue, wrapRegisteredTool, wrapRegisteredTools, wrapToolDefinition, wrapToolDefinitions };
@@ -1,7 +1,7 @@
1
1
 
2
- import { i as builtinProviders } from "./pi-ai-BA3h0Dwv.mjs";
2
+ import { a as builtinProviders } from "./pi-ai-Dyg4zyLZ.mjs";
3
+ import "./pi-coding-agent-Ctw-BhoY.mjs";
3
4
  import { t as getAgentDir } from "./pi-config-shim-CZ1wFzqM.mjs";
4
- import "./pi-coding-agent-CznNsOnV.mjs";
5
5
  import { i as resolveOAuthApiKey, o as storedOAuthCredential, r as providerSupportsOAuth, t as FileCredentialStore } from "./oauth-bridge-CfyImWx4.mjs";
6
6
  import { join } from "node:path";
7
7
  import { CredentialProvider } from "@deepseek-ai/dsh-credentials";
@@ -1,5 +1,5 @@
1
1
 
2
- import { analyzePackage, n as collectLocalClosure, r as runtimeExternalPackages, t as SCRIPT_EXTENSIONS } from "./analyzer-C86ba-27.mjs";
2
+ import { analyzePackage, n as collectLocalClosure, r as runtimeExternalPackages, t as SCRIPT_EXTENSIONS } from "./analyzer-CsrBeS8r.mjs";
3
3
  import { cp, lstat, mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
4
4
  import { basename, dirname, extname, join, relative, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
@@ -295,4 +295,4 @@ async function generateBundle(pkg, options) {
295
295
  //#endregion
296
296
  export { generateBundle };
297
297
 
298
- //# sourceMappingURL=generator-C0jNM-yu.mjs.map
298
+ //# sourceMappingURL=generator-CSOv6wYT.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator-C0jNM-yu.mjs","names":["parseYaml"],"sources":["../src/generator.ts"],"sourcesContent":["import { cp, lstat, mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises'\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { parse as parseYaml } from 'yaml'\nimport { analyzePackage } from './analyzer.js'\nimport { collectLocalClosure, runtimeExternalPackages, SCRIPT_EXTENSIONS } from './module-graph.js'\nimport type {\n CompatibilityReport,\n GenerateOptions,\n GeneratedRuntimeManifest,\n ResolvedPiPackage,\n} from './types.js'\n\ninterface PromptMetadata {\n name: string\n description: string\n argumentHint?: string\n path: string\n}\n\nconst SHIMMED_PI_HOST_PACKAGES = new Set([\n '@earendil-works/pi-coding-agent',\n '@mariozechner/pi-coding-agent',\n '@earendil-works/pi-tui',\n '@mariozechner/pi-tui',\n '@earendil-works/pi-ai',\n '@mariozechner/pi-ai',\n // Host-provided in Pi's loader whitelist; the runtime aliases them too.\n 'typebox',\n '@sinclair/typebox',\n])\n\nfunction packageSlug(name: string): string {\n const slug = name.replace(/^@/u, '').replaceAll('/', '-').replace(/[^a-zA-Z0-9._-]+/gu, '-').toLowerCase()\n return slug.replace(/^-+|-+$/gu, '') || 'package'\n}\n\nfunction stringRecord(value: unknown): Record<string, string> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {}\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string'))\n}\n\nasync function assertEmptyOrMissing(path: string): Promise<void> {\n try {\n const info = await stat(path)\n if (!info.isDirectory()) throw new Error(`output exists and is not a directory: ${path}`)\n const entries = await readdir(path)\n if (entries.length > 0) throw new Error(`output directory is not empty: ${path}`)\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error\n }\n}\n\nfunction parseFrontmatter(text: string): { attributes: Record<string, string>; body: string } {\n const normalized = text.replace(/\\r\\n?/gu, '\\n')\n if (!normalized.startsWith('---')) return { attributes: {}, body: normalized }\n const endIndex = normalized.indexOf('\\n---', 3)\n if (endIndex === -1) return { attributes: {}, body: normalized }\n const raw: unknown = parseYaml(normalized.slice(4, endIndex))\n const attributes = typeof raw === 'object' && raw !== null && !Array.isArray(raw)\n ? stringRecord(raw)\n : {}\n return { attributes, body: normalized.slice(endIndex + 4).trim() }\n}\n\nasync function assertNoSymlinks(path: string): Promise<void> {\n const info = await lstat(path)\n if (info.isSymbolicLink()) throw new Error(`refusing to copy symbolic link from Pi package: ${path}`)\n if (!info.isDirectory()) return\n for (const entry of await readdir(path)) await assertNoSymlinks(join(path, entry))\n}\n\nasync function copyExtensions(pkg: ResolvedPiPackage, outDir: string): Promise<{ entries: string[]; runtimePackages: Set<string>; skillScriptPackages: Set<string> }> {\n const copied: string[] = []\n const runtimePackages = new Set<string>()\n const closure = await collectLocalClosure(pkg.rootDir, pkg.resources.extensions)\n // Unresolved references never block the snapshot here: the analyzer grades\n // them (fatal only on the load-time path) and enforceReport is the gate.\n // The copy below preserves the published layout, so lazy dead references\n // behave exactly as they would under Pi.\n for (const issue of closure.issues) {\n console.warn(`pi2dsh: unresolved ${issue.kind} reference ${JSON.stringify(issue.specifier)} from ${relative(pkg.rootDir, issue.file)} (${issue.lazy ? 'lazy path — fails at feature use, as under Pi' : 'load-time path'})`)\n }\n for (const source of closure.files) {\n if (SCRIPT_EXTENSIONS.has(extname(source))) {\n const text = await readFile(source, 'utf8')\n // Lazy undeclared imports stay out of bundle dependencies: the package\n // works without them (Pi semantics) and they may not even be installable.\n // Lazy means the import site OR the whole file only evaluates on demand\n // (a top-level import inside a dynamically-imported module loads lazily).\n const lazyFile = !closure.loadTimeFiles.has(source)\n for (const use of runtimeExternalPackages(source, text)) {\n if ((!use.lazy && !lazyFile) || use.name in stringRecord(pkg.packageJson.dependencies)) runtimePackages.add(use.name)\n }\n }\n const sourceRelative = relative(pkg.rootDir, source).replaceAll('\\\\', '/')\n const targetRelative = `vendor/${sourceRelative}`\n const target = join(outDir, targetRelative)\n await mkdir(dirname(target), { recursive: true })\n await cp(source, target, { dereference: false })\n if (pkg.resources.extensions.map(entry => resolve(entry)).includes(source)) copied.push(targetRelative)\n }\n // Skill helper scripts run on the user's explicit request, not at extension\n // load; their imports (often themselves try/catch-guarded) are informational,\n // never a conversion blocker (mitsupi ships googleapis-using skill scripts\n // this way and works fine in Pi).\n const skillScriptPackages = new Set<string>()\n for (const source of pkg.resources.skills) {\n if (!SCRIPT_EXTENSIONS.has(extname(source))) continue\n const text = await readFile(source, 'utf8')\n for (const use of runtimeExternalPackages(source, text)) skillScriptPackages.add(use.name)\n }\n return { entries: copied, runtimePackages, skillScriptPackages }\n}\n\nasync function copySkills(pkg: ResolvedPiPackage, outDir: string): Promise<string[]> {\n const entryFiles = pkg.resources.skills.filter(file => basename(file) === 'SKILL.md' || file.endsWith('.md'))\n if (entryFiles.length === 0) return []\n const names = new Set<string>()\n for (const entry of entryFiles) {\n const isBundle = basename(entry) === 'SKILL.md'\n let name = isBundle ? basename(dirname(entry)) : basename(entry, '.md')\n if (names.has(name)) {\n // Same-named skills under different parents (piolium ships several):\n // disambiguate with the parent directory instead of refusing the package.\n const parent = basename(dirname(isBundle ? dirname(entry) : entry))\n const candidate = `${parent}-${name}`.replace(/[^a-zA-Z0-9._-]+/gu, '-')\n name = names.has(candidate) ? `${candidate}-${names.size}` : candidate\n }\n names.add(name)\n const target = join(outDir, 'skills', isBundle ? name : `${name}.md`)\n await mkdir(dirname(target), { recursive: true })\n const source = isBundle ? dirname(entry) : entry\n await assertNoSymlinks(source)\n await cp(source, target, { recursive: isBundle, dereference: false })\n }\n return ['skills']\n}\n\nasync function copyPrompts(pkg: ResolvedPiPackage, outDir: string): Promise<PromptMetadata[]> {\n const prompts: PromptMetadata[] = []\n const names = new Set<string>()\n for (const source of pkg.resources.prompts) {\n const name = basename(source, '.md').toLowerCase().replace(/[^a-z0-9_-]+/gu, '-')\n if (names.has(name)) throw new Error(`prompt command name collision while flattening Pi package: ${name}`)\n names.add(name)\n const targetRelative = `prompts/${name}.md`\n const target = join(outDir, targetRelative)\n await mkdir(dirname(target), { recursive: true })\n await assertNoSymlinks(source)\n await cp(source, target, { dereference: false })\n const { attributes, body } = parseFrontmatter(await readFile(source, 'utf8'))\n const firstLine = body.split(/\\r?\\n/u).map(line => line.trim()).find(Boolean)\n prompts.push({\n name,\n description: attributes.description ?? firstLine ?? `Run migrated Pi prompt ${name}`,\n ...(attributes['argument-hint'] !== undefined ? { argumentHint: attributes['argument-hint'] } : {}),\n path: targetRelative,\n })\n }\n return prompts\n}\n\nasync function copyNotices(pkg: ResolvedPiPackage, outDir: string): Promise<string[]> {\n const copied: string[] = []\n for (const entry of await readdir(pkg.rootDir)) {\n if (!/^(?:licen[cs]e|notice|copying)(?:[._-].*)?$/iu.test(entry)) continue\n const source = join(pkg.rootDir, entry)\n const info = await lstat(source)\n if (info.isSymbolicLink()) throw new Error(`refusing to copy symbolic link from Pi package: ${source}`)\n if (!info.isFile()) continue\n await cp(source, join(outDir, entry), { dereference: false })\n copied.push(entry)\n }\n return copied.sort()\n}\n\nfunction generatedPackageJson(\n pkg: ResolvedPiPackage,\n generatedName: string,\n runtimeSpec: string | undefined,\n runtimePackages: ReadonlySet<string>,\n hasSkills: boolean,\n): Record<string, unknown> {\n const declaredDependencies = {\n ...stringRecord(pkg.packageJson.dependencies),\n ...stringRecord(pkg.packageJson.optionalDependencies),\n ...stringRecord(pkg.packageJson.peerDependencies),\n }\n const externalRuntimePackages = [...runtimePackages].filter(name => !SHIMMED_PI_HOST_PACKAGES.has(name))\n const missing = externalRuntimePackages.filter(name => declaredDependencies[name] === undefined)\n if (missing.length > 0) {\n throw new Error(`runtime dependencies are imported but not declared by the Pi package: ${missing.join(', ')}`)\n }\n // Carry EVERY declared runtime dependency, not only statically detected\n // imports: packages load their own deps dynamically (computed require,\n // optional native backends) and the original manifest is the authority on\n // what they need.\n const declaredRuntime = {\n ...stringRecord(pkg.packageJson.dependencies),\n ...stringRecord(pkg.packageJson.optionalDependencies),\n }\n const dependencies = {\n ...Object.fromEntries(Object.entries(declaredRuntime).filter(([name]) => !SHIMMED_PI_HOST_PACKAGES.has(name))),\n ...Object.fromEntries(externalRuntimePackages.sort().map(name => [name, declaredDependencies[name]])),\n // The embedded runtime's own runtime dependencies (vendored Pi width math\n // uses get-east-asian-width; the pi-tui shim re-exports marked; typebox is\n // the host-provided schema library Pi's loader gives every extension;\n // vendored Pi bash tooling spawns through cross-spawn exactly as Pi does).\n ...(runtimeSpec === undefined\n ? { jiti: '^2.7.0', 'get-east-asian-width': '^1.6.0', marked: '^16.4.1', typebox: '^1.0.4', 'cross-spawn': '^7.0.6', diff: '^9.0.0' }\n : {}),\n // The bridge's own openai-completions client (openai SDK) backs the\n // single model directory's most common wire protocol; the rarer apis\n // lazily use a real pi-ai when a mounted package's dependency tree\n // carries one. Depending on pi-ai here would drag @google/genai →\n // protobufjs, whose blocked install script fails `dsh plugin add`\n // for transitive dependencies.\n openai: '^6.40.0',\n ...(hasSkills ? { '@deepseek-ai/dsh-skill-filesystem': '^0.1.0-rc.6' } : {}),\n ...(runtimeSpec !== undefined ? { pi2dsh: runtimeSpec } : {}),\n }\n // Re-point the package's Node subpath-imports map (\"#x\": \"./src/x.js\") at\n // the vendored snapshot so '#'-imports keep resolving inside the bundle.\n const remapImports = (value: unknown): unknown => {\n if (typeof value === 'string') return value.startsWith('./') ? `./vendor/${value.slice(2)}` : value\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, remapImports(entry)]))\n }\n return value\n }\n const sourceImports = pkg.packageJson.imports\n return {\n name: generatedName,\n version: pkg.identity.version,\n description: `DeepSeek Harness adapter generated from ${pkg.identity.name}`,\n type: 'module',\n main: './index.js',\n ...(typeof sourceImports === 'object' && sourceImports !== null\n ? { imports: remapImports(sourceImports) as Record<string, unknown> }\n : {}),\n files: ['index.js', 'cordis.patch.yml', 'pi2dsh.manifest.json', 'pi2dsh.report.json', 'README.md', 'LICENSE*', 'NOTICE*', 'COPYING*', 'PI2DSH-LICENSE', 'runtime', 'vendor', 'skills', 'prompts'],\n dependencies,\n ...(runtimeSpec === undefined\n ? {\n peerDependencies: {\n '@deepseek-ai/dsh-llm': '^0.1.0-rc.6',\n '@deepseek-ai/dsh-system-prompt': '^0.1.0-rc.6',\n },\n }\n : {}),\n keywords: ['dsh-plugin', 'deepseek-harness', 'pi-package', 'pi2dsh'],\n license: typeof pkg.packageJson.license === 'string' ? pkg.packageJson.license : 'UNLICENSED',\n dsh: { bundle: { patch: './cordis.patch.yml' } },\n }\n}\n\nfunction generatedReadme(pkg: ResolvedPiPackage, packageName: string, report: CompatibilityReport): string {\n return `# ${packageName}\\n\\n`\n + `Generated by [pi2dsh](https://github.com/weijiafu14/pi2dsh) from \\`${pkg.identity.name}@${pkg.identity.version}\\`.\\n\\n`\n + `Compatibility verdict: **${report.verdict}** (full ${report.summary.full}, partial ${report.summary.partial}, unsupported ${report.summary.unsupported}).\\n\\n`\n + `Review \\`pi2dsh.report.json\\` before installation. This bundle executes the original Pi extension source and should only be installed when that source is trusted.\\n\\n`\n + `Install with DeepSeek Harness (keep the \\`file:\\` prefix so pnpm installs this bundle's dependencies instead of creating a bare link):\\n\\n`\n + `\\`\\`\\`sh\\ndsh plugin --profile headless add file:$PWD\\ndsh --profile headless --dump-config\\n\\`\\`\\`\\n\\n`\n + `If the install stops with \\`ERR_PNPM_IGNORED_BUILDS\\` (pnpm 10+ blocks dependency build scripts by default), approve the listed packages — either run \\`pnpm approve-builds\\` inside the profile directory, or set them to \\`true\\` under \\`allowBuilds\\` in the profile's \\`pnpm-workspace.yaml\\` — then re-run the add command.\\n`\n}\n\nfunction pluginSource(manifest: GeneratedRuntimeManifest, runtimeImport: string): string {\n const injections = ['tools', 'systemPrompt']\n if (manifest.prompts.length > 0 || manifest.report?.findings.some(item => item.capability === 'registerCommand') === true) {\n injections.push('commands')\n }\n if (manifest.skillDirs.length > 0) injections.push('skills')\n return `import { applyPiPackage } from ${JSON.stringify(runtimeImport)}\\n\\n`\n + `export const name = ${JSON.stringify(`pi2dsh:${packageSlug(manifest.package.name)}`)}\\n`\n + `export const inject = ${JSON.stringify(injections)}\\n\\n`\n + `const manifest = ${JSON.stringify(manifest, null, 2)}\\n\\n`\n + `export async function apply(ctx, config = {}) {\\n`\n + ` await applyPiPackage(ctx, { rootUrl: new URL('.', import.meta.url), manifest, config })\\n`\n + `}\\n`\n}\n\nasync function firstExisting(paths: string[]): Promise<string> {\n for (const path of paths) {\n try {\n await stat(path)\n return path\n } catch {\n // Try the next package/source layout.\n }\n }\n throw new Error(`cannot locate pi2dsh runtime artifact; tried: ${paths.join(', ')}`)\n}\n\nasync function copyEmbeddedRuntime(outDir: string): Promise<void> {\n const moduleDir = dirname(fileURLToPath(import.meta.url))\n const runtimeSource = await firstExisting([\n join(moduleDir, 'runtime.mjs'),\n join(moduleDir, '../dist/runtime.mjs'),\n ])\n const runtimeRoot = dirname(runtimeSource)\n const targetRoot = join(outDir, 'runtime')\n await mkdir(targetRoot, { recursive: true })\n // Copy every emitted module, including bundler-named shared chunks — a\n // fixed file list silently breaks whenever the bundler re-splits chunks.\n for (const entry of await readdir(runtimeRoot)) {\n if (entry.endsWith('.mjs')) await cp(join(runtimeRoot, entry), join(targetRoot, entry))\n }\n for (const sub of ['compat', join('compat', 'vendor')]) {\n const sourceDir = join(runtimeRoot, sub)\n try {\n const entries = await readdir(sourceDir)\n await mkdir(join(targetRoot, sub), { recursive: true })\n for (const entry of entries) {\n if (entry.endsWith('.mjs')) await cp(join(sourceDir, entry), join(targetRoot, sub, entry))\n }\n } catch {\n // dist layout without that subdirectory\n }\n }\n await cp(join(targetRoot, 'runtime.mjs'), join(targetRoot, 'pi2dsh-runtime.mjs'))\n const license = await firstExisting([join(moduleDir, '../LICENSE'), join(moduleDir, '../../LICENSE')])\n await cp(license, join(outDir, 'PI2DSH-LICENSE'))\n}\n\nfunction patchSource(generatedName: string, slug: string): string {\n return `- insert:\\n - id: pi2dsh-${slug}\\n name: ${JSON.stringify(generatedName)}\\n`\n}\n\nfunction enforceReport(report: CompatibilityReport, options: GenerateOptions): void {\n // Fatal findings (incomplete module closure, undeclared runtime deps,\n // resource escapes) mean the bundle cannot be built or trusted; no flag\n // bypasses them. Unsupported findings are explicit, load-safe degradations\n // — the bundle installs and the black-box run decides real usability.\n if (report.summary.fatal > 0) {\n throw new Error(\n `conversion blocked: ${report.summary.fatal} fatal finding(s) — the bundle cannot be built or trusted; run inspect for details`,\n )\n }\n if (options.strict && (report.summary.partial > 0 || report.summary.unsupported > 0)) {\n throw new Error('strict conversion requires every detected Pi API use to have full compatibility')\n }\n}\n\nexport async function generateBundle(\n pkg: ResolvedPiPackage,\n options: GenerateOptions,\n): Promise<{ outDir: string; report: CompatibilityReport; packageName: string }> {\n const outDir = resolve(options.outDir)\n const report = await analyzePackage(pkg)\n enforceReport(report, options)\n await assertEmptyOrMissing(outDir)\n await mkdir(outDir, { recursive: true })\n\n const slug = packageSlug(pkg.identity.name)\n const packageName = `dsh-pi-${slug}`\n const extensionSnapshot = await copyExtensions(pkg, outDir)\n const skillDirs = await copySkills(pkg, outDir)\n const prompts = await copyPrompts(pkg, outDir)\n await copyNotices(pkg, outDir)\n const manifest: GeneratedRuntimeManifest = {\n schemaVersion: 1,\n package: pkg.identity,\n extensions: extensionSnapshot.entries,\n skillDirs,\n prompts,\n report,\n }\n const runtimeSpec = options.runtimeSpec\n if (runtimeSpec === undefined) await copyEmbeddedRuntime(outDir)\n const optionalSkillDeps = [...extensionSnapshot.skillScriptPackages]\n .filter(name => !SHIMMED_PI_HOST_PACKAGES.has(name) && !(name in stringRecord(pkg.packageJson.dependencies)))\n if (optionalSkillDeps.length > 0) {\n console.warn(`pi2dsh: skill helper scripts reference ${optionalSkillDeps.join(', ')}; install them only if you use those skills`)\n }\n\n await Promise.all([\n writeFile(join(outDir, 'package.json'), `${JSON.stringify(generatedPackageJson(pkg, packageName, runtimeSpec, extensionSnapshot.runtimePackages, skillDirs.length > 0), null, 2)}\\n`),\n writeFile(join(outDir, 'pi2dsh.manifest.json'), `${JSON.stringify(manifest, null, 2)}\\n`),\n writeFile(join(outDir, 'pi2dsh.report.json'), `${JSON.stringify(report, null, 2)}\\n`),\n writeFile(join(outDir, 'index.js'), pluginSource(manifest, runtimeSpec === undefined ? './runtime/pi2dsh-runtime.mjs' : 'pi2dsh/runtime')),\n writeFile(join(outDir, 'cordis.patch.yml'), patchSource(packageName, slug)),\n writeFile(join(outDir, 'README.md'), generatedReadme(pkg, packageName, report)),\n ])\n return { outDir, report, packageName }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"generator-CSOv6wYT.mjs","names":["parseYaml"],"sources":["../src/generator.ts"],"sourcesContent":["import { cp, lstat, mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises'\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { parse as parseYaml } from 'yaml'\nimport { analyzePackage } from './analyzer.js'\nimport { collectLocalClosure, runtimeExternalPackages, SCRIPT_EXTENSIONS } from './module-graph.js'\nimport type {\n CompatibilityReport,\n GenerateOptions,\n GeneratedRuntimeManifest,\n ResolvedPiPackage,\n} from './types.js'\n\ninterface PromptMetadata {\n name: string\n description: string\n argumentHint?: string\n path: string\n}\n\nconst SHIMMED_PI_HOST_PACKAGES = new Set([\n '@earendil-works/pi-coding-agent',\n '@mariozechner/pi-coding-agent',\n '@earendil-works/pi-tui',\n '@mariozechner/pi-tui',\n '@earendil-works/pi-ai',\n '@mariozechner/pi-ai',\n // Host-provided in Pi's loader whitelist; the runtime aliases them too.\n 'typebox',\n '@sinclair/typebox',\n])\n\nfunction packageSlug(name: string): string {\n const slug = name.replace(/^@/u, '').replaceAll('/', '-').replace(/[^a-zA-Z0-9._-]+/gu, '-').toLowerCase()\n return slug.replace(/^-+|-+$/gu, '') || 'package'\n}\n\nfunction stringRecord(value: unknown): Record<string, string> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return {}\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string'))\n}\n\nasync function assertEmptyOrMissing(path: string): Promise<void> {\n try {\n const info = await stat(path)\n if (!info.isDirectory()) throw new Error(`output exists and is not a directory: ${path}`)\n const entries = await readdir(path)\n if (entries.length > 0) throw new Error(`output directory is not empty: ${path}`)\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error\n }\n}\n\nfunction parseFrontmatter(text: string): { attributes: Record<string, string>; body: string } {\n const normalized = text.replace(/\\r\\n?/gu, '\\n')\n if (!normalized.startsWith('---')) return { attributes: {}, body: normalized }\n const endIndex = normalized.indexOf('\\n---', 3)\n if (endIndex === -1) return { attributes: {}, body: normalized }\n const raw: unknown = parseYaml(normalized.slice(4, endIndex))\n const attributes = typeof raw === 'object' && raw !== null && !Array.isArray(raw)\n ? stringRecord(raw)\n : {}\n return { attributes, body: normalized.slice(endIndex + 4).trim() }\n}\n\nasync function assertNoSymlinks(path: string): Promise<void> {\n const info = await lstat(path)\n if (info.isSymbolicLink()) throw new Error(`refusing to copy symbolic link from Pi package: ${path}`)\n if (!info.isDirectory()) return\n for (const entry of await readdir(path)) await assertNoSymlinks(join(path, entry))\n}\n\nasync function copyExtensions(pkg: ResolvedPiPackage, outDir: string): Promise<{ entries: string[]; runtimePackages: Set<string>; skillScriptPackages: Set<string> }> {\n const copied: string[] = []\n const runtimePackages = new Set<string>()\n const closure = await collectLocalClosure(pkg.rootDir, pkg.resources.extensions)\n // Unresolved references never block the snapshot here: the analyzer grades\n // them (fatal only on the load-time path) and enforceReport is the gate.\n // The copy below preserves the published layout, so lazy dead references\n // behave exactly as they would under Pi.\n for (const issue of closure.issues) {\n console.warn(`pi2dsh: unresolved ${issue.kind} reference ${JSON.stringify(issue.specifier)} from ${relative(pkg.rootDir, issue.file)} (${issue.lazy ? 'lazy path — fails at feature use, as under Pi' : 'load-time path'})`)\n }\n for (const source of closure.files) {\n if (SCRIPT_EXTENSIONS.has(extname(source))) {\n const text = await readFile(source, 'utf8')\n // Lazy undeclared imports stay out of bundle dependencies: the package\n // works without them (Pi semantics) and they may not even be installable.\n // Lazy means the import site OR the whole file only evaluates on demand\n // (a top-level import inside a dynamically-imported module loads lazily).\n const lazyFile = !closure.loadTimeFiles.has(source)\n for (const use of runtimeExternalPackages(source, text)) {\n if ((!use.lazy && !lazyFile) || use.name in stringRecord(pkg.packageJson.dependencies)) runtimePackages.add(use.name)\n }\n }\n const sourceRelative = relative(pkg.rootDir, source).replaceAll('\\\\', '/')\n const targetRelative = `vendor/${sourceRelative}`\n const target = join(outDir, targetRelative)\n await mkdir(dirname(target), { recursive: true })\n await cp(source, target, { dereference: false })\n if (pkg.resources.extensions.map(entry => resolve(entry)).includes(source)) copied.push(targetRelative)\n }\n // Skill helper scripts run on the user's explicit request, not at extension\n // load; their imports (often themselves try/catch-guarded) are informational,\n // never a conversion blocker (mitsupi ships googleapis-using skill scripts\n // this way and works fine in Pi).\n const skillScriptPackages = new Set<string>()\n for (const source of pkg.resources.skills) {\n if (!SCRIPT_EXTENSIONS.has(extname(source))) continue\n const text = await readFile(source, 'utf8')\n for (const use of runtimeExternalPackages(source, text)) skillScriptPackages.add(use.name)\n }\n return { entries: copied, runtimePackages, skillScriptPackages }\n}\n\nasync function copySkills(pkg: ResolvedPiPackage, outDir: string): Promise<string[]> {\n const entryFiles = pkg.resources.skills.filter(file => basename(file) === 'SKILL.md' || file.endsWith('.md'))\n if (entryFiles.length === 0) return []\n const names = new Set<string>()\n for (const entry of entryFiles) {\n const isBundle = basename(entry) === 'SKILL.md'\n let name = isBundle ? basename(dirname(entry)) : basename(entry, '.md')\n if (names.has(name)) {\n // Same-named skills under different parents (piolium ships several):\n // disambiguate with the parent directory instead of refusing the package.\n const parent = basename(dirname(isBundle ? dirname(entry) : entry))\n const candidate = `${parent}-${name}`.replace(/[^a-zA-Z0-9._-]+/gu, '-')\n name = names.has(candidate) ? `${candidate}-${names.size}` : candidate\n }\n names.add(name)\n const target = join(outDir, 'skills', isBundle ? name : `${name}.md`)\n await mkdir(dirname(target), { recursive: true })\n const source = isBundle ? dirname(entry) : entry\n await assertNoSymlinks(source)\n await cp(source, target, { recursive: isBundle, dereference: false })\n }\n return ['skills']\n}\n\nasync function copyPrompts(pkg: ResolvedPiPackage, outDir: string): Promise<PromptMetadata[]> {\n const prompts: PromptMetadata[] = []\n const names = new Set<string>()\n for (const source of pkg.resources.prompts) {\n const name = basename(source, '.md').toLowerCase().replace(/[^a-z0-9_-]+/gu, '-')\n if (names.has(name)) throw new Error(`prompt command name collision while flattening Pi package: ${name}`)\n names.add(name)\n const targetRelative = `prompts/${name}.md`\n const target = join(outDir, targetRelative)\n await mkdir(dirname(target), { recursive: true })\n await assertNoSymlinks(source)\n await cp(source, target, { dereference: false })\n const { attributes, body } = parseFrontmatter(await readFile(source, 'utf8'))\n const firstLine = body.split(/\\r?\\n/u).map(line => line.trim()).find(Boolean)\n prompts.push({\n name,\n description: attributes.description ?? firstLine ?? `Run migrated Pi prompt ${name}`,\n ...(attributes['argument-hint'] !== undefined ? { argumentHint: attributes['argument-hint'] } : {}),\n path: targetRelative,\n })\n }\n return prompts\n}\n\nasync function copyNotices(pkg: ResolvedPiPackage, outDir: string): Promise<string[]> {\n const copied: string[] = []\n for (const entry of await readdir(pkg.rootDir)) {\n if (!/^(?:licen[cs]e|notice|copying)(?:[._-].*)?$/iu.test(entry)) continue\n const source = join(pkg.rootDir, entry)\n const info = await lstat(source)\n if (info.isSymbolicLink()) throw new Error(`refusing to copy symbolic link from Pi package: ${source}`)\n if (!info.isFile()) continue\n await cp(source, join(outDir, entry), { dereference: false })\n copied.push(entry)\n }\n return copied.sort()\n}\n\nfunction generatedPackageJson(\n pkg: ResolvedPiPackage,\n generatedName: string,\n runtimeSpec: string | undefined,\n runtimePackages: ReadonlySet<string>,\n hasSkills: boolean,\n): Record<string, unknown> {\n const declaredDependencies = {\n ...stringRecord(pkg.packageJson.dependencies),\n ...stringRecord(pkg.packageJson.optionalDependencies),\n ...stringRecord(pkg.packageJson.peerDependencies),\n }\n const externalRuntimePackages = [...runtimePackages].filter(name => !SHIMMED_PI_HOST_PACKAGES.has(name))\n const missing = externalRuntimePackages.filter(name => declaredDependencies[name] === undefined)\n if (missing.length > 0) {\n throw new Error(`runtime dependencies are imported but not declared by the Pi package: ${missing.join(', ')}`)\n }\n // Carry EVERY declared runtime dependency, not only statically detected\n // imports: packages load their own deps dynamically (computed require,\n // optional native backends) and the original manifest is the authority on\n // what they need.\n const declaredRuntime = {\n ...stringRecord(pkg.packageJson.dependencies),\n ...stringRecord(pkg.packageJson.optionalDependencies),\n }\n const dependencies = {\n ...Object.fromEntries(Object.entries(declaredRuntime).filter(([name]) => !SHIMMED_PI_HOST_PACKAGES.has(name))),\n ...Object.fromEntries(externalRuntimePackages.sort().map(name => [name, declaredDependencies[name]])),\n // The embedded runtime's own runtime dependencies (vendored Pi width math\n // uses get-east-asian-width; the pi-tui shim re-exports marked; typebox is\n // the host-provided schema library Pi's loader gives every extension;\n // vendored Pi bash tooling spawns through cross-spawn exactly as Pi does).\n ...(runtimeSpec === undefined\n ? { jiti: '^2.7.0', 'get-east-asian-width': '^1.6.0', marked: '^16.4.1', typebox: '^1.0.4', 'cross-spawn': '^7.0.6', diff: '^9.0.0' }\n : {}),\n // The bridge's own openai-completions client (openai SDK) backs the\n // single model directory's most common wire protocol; the rarer apis\n // lazily use a real pi-ai when a mounted package's dependency tree\n // carries one. Depending on pi-ai here would drag @google/genai →\n // protobufjs, whose blocked install script fails `dsh plugin add`\n // for transitive dependencies.\n openai: '^6.40.0',\n ...(hasSkills ? { '@deepseek-ai/dsh-skill-filesystem': '^0.1.0-rc.6' } : {}),\n ...(runtimeSpec !== undefined ? { pi2dsh: runtimeSpec } : {}),\n }\n // Re-point the package's Node subpath-imports map (\"#x\": \"./src/x.js\") at\n // the vendored snapshot so '#'-imports keep resolving inside the bundle.\n const remapImports = (value: unknown): unknown => {\n if (typeof value === 'string') return value.startsWith('./') ? `./vendor/${value.slice(2)}` : value\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, remapImports(entry)]))\n }\n return value\n }\n const sourceImports = pkg.packageJson.imports\n return {\n name: generatedName,\n version: pkg.identity.version,\n description: `DeepSeek Harness adapter generated from ${pkg.identity.name}`,\n type: 'module',\n main: './index.js',\n ...(typeof sourceImports === 'object' && sourceImports !== null\n ? { imports: remapImports(sourceImports) as Record<string, unknown> }\n : {}),\n files: ['index.js', 'cordis.patch.yml', 'pi2dsh.manifest.json', 'pi2dsh.report.json', 'README.md', 'LICENSE*', 'NOTICE*', 'COPYING*', 'PI2DSH-LICENSE', 'runtime', 'vendor', 'skills', 'prompts'],\n dependencies,\n ...(runtimeSpec === undefined\n ? {\n peerDependencies: {\n '@deepseek-ai/dsh-llm': '^0.1.0-rc.6',\n '@deepseek-ai/dsh-system-prompt': '^0.1.0-rc.6',\n },\n }\n : {}),\n keywords: ['dsh-plugin', 'deepseek-harness', 'pi-package', 'pi2dsh'],\n license: typeof pkg.packageJson.license === 'string' ? pkg.packageJson.license : 'UNLICENSED',\n dsh: { bundle: { patch: './cordis.patch.yml' } },\n }\n}\n\nfunction generatedReadme(pkg: ResolvedPiPackage, packageName: string, report: CompatibilityReport): string {\n return `# ${packageName}\\n\\n`\n + `Generated by [pi2dsh](https://github.com/weijiafu14/pi2dsh) from \\`${pkg.identity.name}@${pkg.identity.version}\\`.\\n\\n`\n + `Compatibility verdict: **${report.verdict}** (full ${report.summary.full}, partial ${report.summary.partial}, unsupported ${report.summary.unsupported}).\\n\\n`\n + `Review \\`pi2dsh.report.json\\` before installation. This bundle executes the original Pi extension source and should only be installed when that source is trusted.\\n\\n`\n + `Install with DeepSeek Harness (keep the \\`file:\\` prefix so pnpm installs this bundle's dependencies instead of creating a bare link):\\n\\n`\n + `\\`\\`\\`sh\\ndsh plugin --profile headless add file:$PWD\\ndsh --profile headless --dump-config\\n\\`\\`\\`\\n\\n`\n + `If the install stops with \\`ERR_PNPM_IGNORED_BUILDS\\` (pnpm 10+ blocks dependency build scripts by default), approve the listed packages — either run \\`pnpm approve-builds\\` inside the profile directory, or set them to \\`true\\` under \\`allowBuilds\\` in the profile's \\`pnpm-workspace.yaml\\` — then re-run the add command.\\n`\n}\n\nfunction pluginSource(manifest: GeneratedRuntimeManifest, runtimeImport: string): string {\n const injections = ['tools', 'systemPrompt']\n if (manifest.prompts.length > 0 || manifest.report?.findings.some(item => item.capability === 'registerCommand') === true) {\n injections.push('commands')\n }\n if (manifest.skillDirs.length > 0) injections.push('skills')\n return `import { applyPiPackage } from ${JSON.stringify(runtimeImport)}\\n\\n`\n + `export const name = ${JSON.stringify(`pi2dsh:${packageSlug(manifest.package.name)}`)}\\n`\n + `export const inject = ${JSON.stringify(injections)}\\n\\n`\n + `const manifest = ${JSON.stringify(manifest, null, 2)}\\n\\n`\n + `export async function apply(ctx, config = {}) {\\n`\n + ` await applyPiPackage(ctx, { rootUrl: new URL('.', import.meta.url), manifest, config })\\n`\n + `}\\n`\n}\n\nasync function firstExisting(paths: string[]): Promise<string> {\n for (const path of paths) {\n try {\n await stat(path)\n return path\n } catch {\n // Try the next package/source layout.\n }\n }\n throw new Error(`cannot locate pi2dsh runtime artifact; tried: ${paths.join(', ')}`)\n}\n\nasync function copyEmbeddedRuntime(outDir: string): Promise<void> {\n const moduleDir = dirname(fileURLToPath(import.meta.url))\n const runtimeSource = await firstExisting([\n join(moduleDir, 'runtime.mjs'),\n join(moduleDir, '../dist/runtime.mjs'),\n ])\n const runtimeRoot = dirname(runtimeSource)\n const targetRoot = join(outDir, 'runtime')\n await mkdir(targetRoot, { recursive: true })\n // Copy every emitted module, including bundler-named shared chunks — a\n // fixed file list silently breaks whenever the bundler re-splits chunks.\n for (const entry of await readdir(runtimeRoot)) {\n if (entry.endsWith('.mjs')) await cp(join(runtimeRoot, entry), join(targetRoot, entry))\n }\n for (const sub of ['compat', join('compat', 'vendor')]) {\n const sourceDir = join(runtimeRoot, sub)\n try {\n const entries = await readdir(sourceDir)\n await mkdir(join(targetRoot, sub), { recursive: true })\n for (const entry of entries) {\n if (entry.endsWith('.mjs')) await cp(join(sourceDir, entry), join(targetRoot, sub, entry))\n }\n } catch {\n // dist layout without that subdirectory\n }\n }\n await cp(join(targetRoot, 'runtime.mjs'), join(targetRoot, 'pi2dsh-runtime.mjs'))\n const license = await firstExisting([join(moduleDir, '../LICENSE'), join(moduleDir, '../../LICENSE')])\n await cp(license, join(outDir, 'PI2DSH-LICENSE'))\n}\n\nfunction patchSource(generatedName: string, slug: string): string {\n return `- insert:\\n - id: pi2dsh-${slug}\\n name: ${JSON.stringify(generatedName)}\\n`\n}\n\nfunction enforceReport(report: CompatibilityReport, options: GenerateOptions): void {\n // Fatal findings (incomplete module closure, undeclared runtime deps,\n // resource escapes) mean the bundle cannot be built or trusted; no flag\n // bypasses them. Unsupported findings are explicit, load-safe degradations\n // — the bundle installs and the black-box run decides real usability.\n if (report.summary.fatal > 0) {\n throw new Error(\n `conversion blocked: ${report.summary.fatal} fatal finding(s) — the bundle cannot be built or trusted; run inspect for details`,\n )\n }\n if (options.strict && (report.summary.partial > 0 || report.summary.unsupported > 0)) {\n throw new Error('strict conversion requires every detected Pi API use to have full compatibility')\n }\n}\n\nexport async function generateBundle(\n pkg: ResolvedPiPackage,\n options: GenerateOptions,\n): Promise<{ outDir: string; report: CompatibilityReport; packageName: string }> {\n const outDir = resolve(options.outDir)\n const report = await analyzePackage(pkg)\n enforceReport(report, options)\n await assertEmptyOrMissing(outDir)\n await mkdir(outDir, { recursive: true })\n\n const slug = packageSlug(pkg.identity.name)\n const packageName = `dsh-pi-${slug}`\n const extensionSnapshot = await copyExtensions(pkg, outDir)\n const skillDirs = await copySkills(pkg, outDir)\n const prompts = await copyPrompts(pkg, outDir)\n await copyNotices(pkg, outDir)\n const manifest: GeneratedRuntimeManifest = {\n schemaVersion: 1,\n package: pkg.identity,\n extensions: extensionSnapshot.entries,\n skillDirs,\n prompts,\n report,\n }\n const runtimeSpec = options.runtimeSpec\n if (runtimeSpec === undefined) await copyEmbeddedRuntime(outDir)\n const optionalSkillDeps = [...extensionSnapshot.skillScriptPackages]\n .filter(name => !SHIMMED_PI_HOST_PACKAGES.has(name) && !(name in stringRecord(pkg.packageJson.dependencies)))\n if (optionalSkillDeps.length > 0) {\n console.warn(`pi2dsh: skill helper scripts reference ${optionalSkillDeps.join(', ')}; install them only if you use those skills`)\n }\n\n await Promise.all([\n writeFile(join(outDir, 'package.json'), `${JSON.stringify(generatedPackageJson(pkg, packageName, runtimeSpec, extensionSnapshot.runtimePackages, skillDirs.length > 0), null, 2)}\\n`),\n writeFile(join(outDir, 'pi2dsh.manifest.json'), `${JSON.stringify(manifest, null, 2)}\\n`),\n writeFile(join(outDir, 'pi2dsh.report.json'), `${JSON.stringify(report, null, 2)}\\n`),\n writeFile(join(outDir, 'index.js'), pluginSource(manifest, runtimeSpec === undefined ? './runtime/pi2dsh-runtime.mjs' : 'pi2dsh/runtime')),\n writeFile(join(outDir, 'cordis.patch.yml'), patchSource(packageName, slug)),\n writeFile(join(outDir, 'README.md'), generatedReadme(pkg, packageName, report)),\n ])\n return { outDir, report, packageName }\n}\n"],"mappings":"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"}
package/dist/host.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- import { r as registerVisionCompanions, t as applyPiPackage } from "./runtime-DMEJknhK.mjs";
2
+ import { r as registerVisionCompanions, t as applyPiPackage } from "./runtime-Ce3PTbWU.mjs";
3
3
  import { t as resolvePiPackage } from "./source-0sA5z08z.mjs";
4
4
  import { createRequire } from "node:module";
5
5
  import { cp, mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";