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 +0,0 @@
1
- {"version":3,"file":"source-0sA5z08z.mjs","names":[],"sources":["../src/source.ts"],"sourcesContent":["import { access, mkdtemp, 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\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 discover('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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"}