@posthog/wizard 2.84.0 → 2.85.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.
- package/dist/{agent-interface-BNssNetq.js → agent-interface-C2yoWWW_.js} +18 -11
- package/dist/agent-interface-C2yoWWW_.js.map +1 -0
- package/dist/{agent-prompt-loader-iV11XVEF.js → agent-prompt-loader-B6ZyyoSH.js} +6 -6
- package/dist/{agent-prompt-loader-iV11XVEF.js.map → agent-prompt-loader-B6ZyyoSH.js.map} +1 -1
- package/dist/analytics-DM5Fx9JF.js +2 -0
- package/dist/{analytics-Drox5LSW.js → analytics-J1cjIekQ.js} +2 -2
- package/dist/{analytics-Drox5LSW.js.map → analytics-J1cjIekQ.js.map} +1 -1
- package/dist/{api-Dfu655Qt.js → api-DoMocc6P.js} +2 -2
- package/dist/{api-Dfu655Qt.js.map → api-DoMocc6P.js.map} +1 -1
- package/dist/api-bUx3g0Jj.js +2 -0
- package/dist/{api-key-login-BgwfAXfv.js → api-key-login-CjXOunDa.js} +5 -5
- package/dist/{api-key-login-BgwfAXfv.js.map → api-key-login-CjXOunDa.js.map} +1 -1
- package/dist/api-key-login-D4Esj8TZ.js +2 -0
- package/dist/bin.js +1 -1
- package/dist/{bounded-fs-TRL6IsoU.js → bounded-fs-Dr1DVwWs.js} +5 -4
- package/dist/bounded-fs-Dr1DVwWs.js.map +1 -0
- package/dist/{ci-install-nc1IKuX2.js → ci-install-ByYDF-nS.js} +4 -4
- package/dist/{ci-install-nc1IKuX2.js.map → ci-install-ByYDF-nS.js.map} +1 -1
- package/dist/{debug-BfO_Txo8.js → debug-BWrfAT_d.js} +3 -3
- package/dist/{debug-BfO_Txo8.js.map → debug-BWrfAT_d.js.map} +1 -1
- package/dist/{gateway-CLQQb96F.js → gateway-DrKvPnHW.js} +9 -6
- package/dist/{gateway-CLQQb96F.js.map → gateway-DrKvPnHW.js.map} +1 -1
- package/dist/{headless-DMO8N_FD.js → headless-B3NomAmg.js} +2 -2
- package/dist/{headless-DMO8N_FD.js.map → headless-B3NomAmg.js.map} +1 -1
- package/dist/{headless-CHGNEzO3.js → headless-D2lM4BeY.js} +1 -1
- package/dist/{host-resolution-DftfSjJD.js → host-resolution-BAnXpvmo.js} +4 -4
- package/dist/{host-resolution-DftfSjJD.js.map → host-resolution-BAnXpvmo.js.map} +1 -1
- package/dist/{install-MWoo1hXL.js → install-BaZS9PMi.js} +1 -1
- package/dist/{install-C9FPM37m.js → install-x8br-QvS.js} +5 -5
- package/dist/{install-C9FPM37m.js.map → install-x8br-QvS.js.map} +1 -1
- package/dist/{interactive-DOnolJHB.js → interactive-D0X4iQOs.js} +3 -3
- package/dist/{interactive-DOnolJHB.js.map → interactive-D0X4iQOs.js.map} +1 -1
- package/dist/{links-CatXPRxH.js → links-DCUnJ0Fl.js} +3 -3
- package/dist/{links-CatXPRxH.js.map → links-DCUnJ0Fl.js.map} +1 -1
- package/dist/{main-CINmZtoW.js → main-CCIvlpq6.js} +20 -20
- package/dist/{main-CINmZtoW.js.map → main-CCIvlpq6.js.map} +1 -1
- package/dist/{mcp-KVV6Z_bq.js → mcp-D1rpXjM2.js} +3 -3
- package/dist/{mcp-KVV6Z_bq.js.map → mcp-D1rpXjM2.js.map} +1 -1
- package/dist/{mcp-prompt-streaming-M6UnLgGX.js → mcp-prompt-streaming-GXBA581m.js} +5 -5
- package/dist/{mcp-prompt-streaming-M6UnLgGX.js.map → mcp-prompt-streaming-GXBA581m.js.map} +1 -1
- package/dist/{models-B0huHItG.js → models-HNKiMsME.js} +2 -2
- package/dist/{models-B0huHItG.js.map → models-HNKiMsME.js.map} +1 -1
- package/dist/{oauth-session-9EU3ky0v.js → oauth-session-DTydKnfV.js} +2 -2
- package/dist/{oauth-session-9EU3ky0v.js.map → oauth-session-DTydKnfV.js.map} +1 -1
- package/dist/{orchestrator-tools-QWyDLu_7.js → orchestrator-tools-a3uMYekz.js} +3 -3
- package/dist/{orchestrator-tools-QWyDLu_7.js.map → orchestrator-tools-a3uMYekz.js.map} +1 -1
- package/dist/{package-manager-B-9I_fAT.js → package-manager-D_APgur1.js} +4 -4
- package/dist/{package-manager-B-9I_fAT.js.map → package-manager-D_APgur1.js.map} +1 -1
- package/dist/{pi-BSnSk6rv.js → pi-BXwrltc4.js} +12 -12
- package/dist/{pi-BSnSk6rv.js.map → pi-BXwrltc4.js.map} +1 -1
- package/dist/{playground-Drz1qszs.js → playground-ZiIX53Cx.js} +4 -4
- package/dist/{playground-Drz1qszs.js.map → playground-ZiIX53Cx.js.map} +1 -1
- package/dist/{posthog-integration-mIQGBc1f.js → posthog-integration-yK9EktZn.js} +21 -21
- package/dist/{posthog-integration-mIQGBc1f.js.map → posthog-integration-yK9EktZn.js.map} +1 -1
- package/dist/{programs-mxhRXwP-.js → programs-AZStBYjR.js} +19 -15
- package/dist/programs-AZStBYjR.js.map +1 -0
- package/dist/programs-DrvCAQHg.js +3 -0
- package/dist/{provisioning-CHUjae9V.js → provisioning-BpP-DrUL.js} +4 -4
- package/dist/{provisioning-CHUjae9V.js.map → provisioning-BpP-DrUL.js.map} +1 -1
- package/dist/provisioning-D8ZhYNCc.js +2 -0
- package/dist/{queue-tools-PFG6H93Q.js → queue-tools-BS8nXJ6S.js} +4 -4
- package/dist/{queue-tools-PFG6H93Q.js.map → queue-tools-BS8nXJ6S.js.map} +1 -1
- package/dist/{results-5yCKf2cI.js → results-BE1ctlKP.js} +2 -2
- package/dist/{results-5yCKf2cI.js.map → results-BE1ctlKP.js.map} +1 -1
- package/dist/{run-W03b6jNM.js → run-Cmn1xaWK.js} +10 -10
- package/dist/{run-W03b6jNM.js.map → run-Cmn1xaWK.js.map} +1 -1
- package/dist/{run-D5TKJuSL.js → run-D0AZVe7z.js} +7 -7
- package/dist/{run-D5TKJuSL.js.map → run-D0AZVe7z.js.map} +1 -1
- package/dist/{run-tool-DTQF8mmI.js → run-tool-DAt35gkq.js} +13 -13
- package/dist/{run-tool-DTQF8mmI.js.map → run-tool-DAt35gkq.js.map} +1 -1
- package/dist/run-tool-IHvPCuQT.js +2 -0
- package/dist/{runners-B_84kPyf.js → runners-BsTLloGF.js} +8 -8
- package/dist/{runners-B_84kPyf.js.map → runners-BsTLloGF.js.map} +1 -1
- package/dist/{security-pApVawYb.js → security-CQZUg-Oz.js} +5 -5
- package/dist/{security-pApVawYb.js.map → security-CQZUg-Oz.js.map} +1 -1
- package/dist/{setup-utils-CQY8PHjR.js → setup-utils-CqITBPrn.js} +3 -3
- package/dist/{setup-utils-CQY8PHjR.js.map → setup-utils-CqITBPrn.js.map} +1 -1
- package/dist/{start-playground-DAw1GbLt.js → start-playground-CUhA5g6G.js} +7 -7
- package/dist/{start-playground-DAw1GbLt.js.map → start-playground-CUhA5g6G.js.map} +1 -1
- package/dist/{subagent-YLGSvgoZ.js → subagent-BPynEn_q.js} +3 -3
- package/dist/{subagent-YLGSvgoZ.js.map → subagent-BPynEn_q.js.map} +1 -1
- package/dist/{task-3hRSovmK.js → task-Cuwyq3HT.js} +14 -14
- package/dist/{task-3hRSovmK.js.map → task-Cuwyq3HT.js.map} +1 -1
- package/dist/{telemetry-BPBzqsb_.js → telemetry-BoTjlaAw.js} +2 -2
- package/dist/{telemetry-BPBzqsb_.js.map → telemetry-BoTjlaAw.js.map} +1 -1
- package/dist/{terminal-DZsYFbm9.js → terminal-CmCNn0IG.js} +18 -18
- package/dist/{terminal-DZsYFbm9.js.map → terminal-CmCNn0IG.js.map} +1 -1
- package/dist/{tools-D_AtrhbO.js → tools-Blf-Yjru.js} +13 -13
- package/dist/{tools-D_AtrhbO.js.map → tools-Blf-Yjru.js.map} +1 -1
- package/dist/{tools-DyzRi_dQ.js → tools-DvefdnQx.js} +8 -8
- package/dist/{tools-DyzRi_dQ.js.map → tools-DvefdnQx.js.map} +1 -1
- package/dist/{tui-UI6ctBQJ.js → tui-B_nBr0aF.js} +1 -1
- package/dist/{tui-CRp0iCuT.js → tui-CKbAdFxQ.js} +4 -4
- package/dist/{tui-CRp0iCuT.js.map → tui-CKbAdFxQ.js.map} +1 -1
- package/dist/{upload-step-DrYXnpzI.js → upload-step-Dqb7Dzfn.js} +3 -3
- package/dist/{upload-step-DrYXnpzI.js.map → upload-step-Dqb7Dzfn.js.map} +1 -1
- package/dist/{urls-WeqfBLP4.js → urls-DWZ9EKLI.js} +2 -2
- package/dist/{urls-WeqfBLP4.js.map → urls-DWZ9EKLI.js.map} +1 -1
- package/dist/{wizard-abort-BwEefm6P.js → wizard-abort-g6PYcdlP.js} +4 -4
- package/dist/{wizard-abort-BwEefm6P.js.map → wizard-abort-g6PYcdlP.js.map} +1 -1
- package/dist/{yara-hooks-MDtFbuoM.js → yara-hooks-BsOgyb6-.js} +1 -1
- package/dist/{yara-hooks-aDbdsitJ.js → yara-hooks-ssWAT78l.js} +4 -4
- package/dist/{yara-hooks-aDbdsitJ.js.map → yara-hooks-ssWAT78l.js.map} +1 -1
- package/package.json +6 -1
- package/dist/agent-interface-BNssNetq.js.map +0 -1
- package/dist/analytics-Ix9HEra3.js +0 -2
- package/dist/api-H2UaPgjv.js +0 -2
- package/dist/api-key-login-Cow3UDAN.js +0 -2
- package/dist/bounded-fs-TRL6IsoU.js.map +0 -1
- package/dist/programs-Bv0_YHzE.js +0 -3
- package/dist/programs-mxhRXwP-.js.map +0 -1
- package/dist/provisioning-BVsxSNve.js +0 -2
- package/dist/run-tool-DjERhu7G.js +0 -2
package/dist/api-H2UaPgjv.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bounded-fs-TRL6IsoU.js","names":[],"sources":["../src/shared/utils/bounded-fs.ts"],"sourcesContent":["/**\n * Bounded filesystem primitives for scanning USER project trees. Every\n * detection-time glob, walk, and project-file read goes through here so the\n * worst case is a constant, never a function of the user's repo.\n */\nimport path from 'path';\nimport fs from 'fs';\nimport type { Dirent } from 'fs';\nimport fg from 'fast-glob';\nimport { analytics } from './analytics';\nimport { logToFile } from './debug';\nimport type { WizardRunOptions } from './types';\n\n/**\n * Errno codes that are expected while walking an arbitrary tree and mean\n * \"skip this entry\", not \"something is broken\". Scanning from a broad dir\n * (e.g. `~`) routinely hits OS-protected paths (macOS `Library/Group\n * Containers/group.com.apple.*`) that throw EPERM/EACCES per entry — capturing\n * each as an exception buried real errors under thousands of noise events.\n */\nconst BENIGN_FS_ERROR_CODES = new Set<string>([\n 'EACCES', // permission denied\n 'EPERM', // operation not permitted (macOS-protected dirs)\n 'ENOENT', // entry vanished mid-walk\n 'ENOTDIR', // path component isn't a directory\n 'ELOOP', // symlink loop\n 'ENAMETOOLONG', // path too long\n 'EMFILE', // too many open files (environmental, not a wizard bug)\n 'ENFILE',\n 'EBUSY', // file locked by another process (Windows)\n 'UNKNOWN', // libuv could not map the OS error (Windows locked/placeholder files)\n]);\n\n/**\n * Report a swallowed filesystem error. Traversal stays best-effort — the caller\n * still skips the failing entry. Expected errno codes (permission denied, entry\n * vanished, symlink loops…) are logged to the debug file only; anything else is\n * genuinely unexpected and gets captured to error tracking. Preserves the\n * original Error (and its `code`, e.g. EACCES / ENOENT) when available.\n */\nfunction reportFsError(step: string, filePath: string, error: unknown): void {\n const code = (error as NodeJS.ErrnoException | null)?.code;\n if (code && BENIGN_FS_ERROR_CODES.has(code)) {\n logToFile(`[bounded-fs] skipped ${step} (${code}): ${filePath}`);\n return;\n }\n analytics.captureException(\n error instanceof Error ? error : new Error(String(error)),\n { step, path: filePath },\n );\n}\n\nexport function getDotGitignore({\n installDir,\n}: Pick<WizardRunOptions, 'installDir'>) {\n const gitignorePath = path.join(installDir, '.gitignore');\n const gitignoreExists = fs.existsSync(gitignorePath);\n\n if (gitignoreExists) {\n return gitignorePath;\n }\n\n return undefined;\n}\n\n/**\n * Directory names to skip when scanning a project tree — dependency\n * directories, build output, virtual environments, vendored trees.\n * Used verbatim by walkProjectFiles and as glob patterns by boundedGlob.\n */\nexport const IGNORED_DIRS = new Set<string>([\n 'node_modules',\n '.git',\n '.next',\n '.nuxt',\n '.svelte-kit',\n '.turbo',\n '.cache',\n '.parcel-cache',\n 'dist',\n 'build',\n 'out',\n 'coverage',\n '.coverage',\n 'venv',\n '.venv',\n '__pycache__',\n '.pytest_cache',\n 'vendor',\n 'target',\n '.gradle',\n '.idea',\n '.vscode',\n 'site-packages',\n 'DerivedData',\n 'Pods',\n]);\n\n/** IGNORED_DIRS as fast-glob ignore patterns. */\nexport const PROJECT_IGNORE_GLOBS: readonly string[] = [...IGNORED_DIRS].map(\n (dir) => `**/${dir}/**`,\n);\n\n// Files larger than this are skipped, never materialized.\nexport const MAX_PROJECT_FILE_BYTES = 2 * 1024 * 1024;\n\n// A glob returns at most this many entries.\nexport const MAX_GLOB_MATCHES = 500;\n\n// A glob's traversal is destroyed after this long, even when abandoned.\nexport const GLOB_DEADLINE_MS = 8_000;\n\n// A directory contributes at most this many entries to a walk.\nexport const MAX_DIR_ENTRIES = 10_000;\n\n// A walk fires at most this many onFile callbacks.\nexport const MAX_WALK_FILES = 100_000;\n\nexport interface BoundedGlobOptions {\n cwd: string;\n /** Appended to PROJECT_IGNORE_GLOBS. */\n extraIgnore?: readonly string[];\n /** Stop after this many matches. Defaults to MAX_GLOB_MATCHES. */\n limit?: number;\n /** Match dotfiles. Traversal of dot-DIRECTORIES stays blocked by the ignore set. */\n dot?: boolean;\n /** fast-glob `deep` — maximum directory depth. */\n deep?: number;\n}\n\n/**\n * Streams matches, stops at `limit`, destroys the crawl at GLOB_DEADLINE_MS.\n * Returns paths relative to `cwd`, possibly truncated.\n */\nexport async function boundedGlob(\n patterns: string | string[],\n options: BoundedGlobOptions,\n): Promise<string[]> {\n const limit = options.limit ?? MAX_GLOB_MATCHES;\n const stream = fg.stream(patterns, {\n cwd: options.cwd,\n dot: options.dot ?? false,\n onlyFiles: true,\n deep: options.deep,\n ignore: [...PROJECT_IGNORE_GLOBS, ...(options.extraIgnore ?? [])],\n suppressErrors: true,\n followSymbolicLinks: false,\n }) as NodeJS.ReadableStream & { destroy(): void };\n\n const matches: string[] = [];\n return new Promise((resolve) => {\n let settled = false;\n const finish = (): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n resolve(matches);\n };\n const timer = setTimeout(() => {\n stream.destroy();\n finish();\n }, GLOB_DEADLINE_MS);\n stream.on('data', (entry: string | Buffer) => {\n matches.push(String(entry));\n if (matches.length >= limit) {\n stream.destroy();\n finish();\n }\n });\n stream.once('error', finish);\n stream.once('end', finish);\n stream.once('close', finish);\n });\n}\n\nexport interface WalkOptions {\n /**\n * Follow symlinked files and directories. Defaults to true. A caller that\n * reports what it reads turns this off: a symlink can point anywhere on the\n * machine, outside the project it is scanning.\n */\n followSymlinks?: boolean;\n}\n\n/**\n * Walk a project tree, invoking `onFile(name, fullPath)` for every regular\n * file — including dotfiles like `.env` (the caller decides what it cares\n * about). Skips `IGNORED_DIRS` and hidden directories, follows symlinks\n * (unless `followSymlinks` is false) with realpath-based loop protection,\n * descends at most `maxDepth` levels below `rootDir`, and stops at the\n * per-directory and whole-walk caps. Filesystem errors are reported and\n * skipped (best-effort).\n *\n * Returns whether the walk saw the whole tree within `maxDepth`: false when it\n * stopped at a cap or skipped a directory it could not read.\n */\nexport function walkProjectFiles(\n rootDir: string,\n onFile: (name: string, fullPath: string) => void,\n maxDepth = 3,\n { followSymlinks = true }: WalkOptions = {},\n): boolean {\n const visited = new Set<string>();\n let filesSeen = 0;\n let complete = true;\n // Explicit stack — no call-stack recursion.\n const stack: Array<{ dir: string; depth: number }> = [\n { dir: rootDir, depth: 0 },\n ];\n\n while (stack.length > 0) {\n if (filesSeen >= MAX_WALK_FILES) {\n complete = false;\n break;\n }\n const { dir, depth } = stack.pop()!;\n\n // realpath both resolves symlinked dirs and gives us a stable key to\n // detect loops (symlink cycles, e.g. a -> ../a).\n let realDir: string;\n try {\n realDir = fs.realpathSync(dir);\n } catch (error) {\n reportFsError('walkProjectFiles.realpath', dir, error);\n complete = false;\n continue;\n }\n if (visited.has(realDir)) continue;\n visited.add(realDir);\n\n let handle: fs.Dir;\n try {\n handle = fs.opendirSync(dir);\n } catch (error) {\n reportFsError('walkProjectFiles.opendir', dir, error);\n complete = false;\n continue;\n }\n try {\n let entriesRead = 0;\n let entry: Dirent | null;\n while ((entry = handle.readSync()) !== null) {\n if (++entriesRead > MAX_DIR_ENTRIES || filesSeen >= MAX_WALK_FILES) {\n logToFile(\n `[bounded-fs] walk capped in ${dir} (entries=${entriesRead}, files=${filesSeen})`,\n );\n complete = false;\n break;\n }\n if (IGNORED_DIRS.has(entry.name)) continue;\n\n const fullPath = path.join(dir, entry.name);\n\n // Symlinks report isDirectory()/isFile() as false under withFileTypes,\n // so resolve the target before deciding how to handle the entry.\n let isDir = entry.isDirectory();\n let isFile = entry.isFile();\n if (entry.isSymbolicLink()) {\n if (!followSymlinks) continue;\n try {\n const st = fs.statSync(fullPath);\n isDir = st.isDirectory();\n isFile = st.isFile();\n } catch (error) {\n reportFsError('walkProjectFiles.stat', fullPath, error);\n continue;\n }\n }\n\n if (isDir) {\n if (entry.name.startsWith('.')) continue; // skip hidden directories\n if (depth < maxDepth) stack.push({ dir: fullPath, depth: depth + 1 });\n } else if (isFile) {\n filesSeen += 1;\n onFile(entry.name, fullPath);\n }\n }\n } finally {\n try {\n handle.closeSync();\n } catch {\n /* already closed */\n }\n }\n }\n return complete;\n}\n\n/**\n * Read a project file as UTF-8, or null when missing, unreadable, or over\n * `maxBytes` (stat-gated: an oversized file is never materialized).\n */\nexport function readProjectFile(\n filePath: string,\n maxBytes = MAX_PROJECT_FILE_BYTES,\n): string | null {\n try {\n if (fs.statSync(filePath).size > maxBytes) return null;\n return fs.readFileSync(filePath, 'utf-8');\n } catch {\n return null;\n }\n}\n\n/**\n * `readProjectFile` that also reports unexpected errors to error tracking.\n * For walk callbacks where a failing read is worth a telemetry breadcrumb.\n */\nexport function safeReadFile(fullPath: string): string | null {\n try {\n if (fs.statSync(fullPath).size > MAX_PROJECT_FILE_BYTES) {\n logToFile(`[bounded-fs] skipped oversized file: ${fullPath}`);\n return null;\n }\n return fs.readFileSync(fullPath, 'utf-8');\n } catch (error) {\n reportFsError('safeReadFile', fullPath, error);\n return null;\n }\n}\n\n/**\n * The first `bytes` of a file without materializing the rest.\n */\nexport function readFileHead(filePath: string, bytes: number): string | null {\n try {\n const fd = fs.openSync(filePath, 'r');\n try {\n const buffer = Buffer.alloc(bytes);\n const read = fs.readSync(fd, buffer, 0, bytes, 0);\n return buffer.toString('utf-8', 0, read);\n } finally {\n fs.closeSync(fd);\n }\n } catch {\n return null;\n }\n}\n"],"mappings":"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"}
|