@pugi/cli 1.0.0-alpha.26 → 1.0.0-alpha.260

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 (207) hide show
  1. package/README.md +19 -8
  2. package/THIRD_PARTY_NOTICES.md +39 -0
  3. package/bin/pugi +95 -8
  4. package/models.json +1 -0
  5. package/package.json +30 -10
  6. package/postinstall.mjs +158 -23
  7. package/release.json +8 -0
  8. package/skills/a11y/SKILL.md +27 -0
  9. package/skills/ab-test-analysis/SKILL.md +15 -0
  10. package/skills/ai-sdk/SKILL.md +27 -0
  11. package/skills/api-integration/SKILL.md +27 -0
  12. package/skills/architecture-review/SKILL.md +19 -0
  13. package/skills/brand-voice/SKILL.md +27 -0
  14. package/skills/ci-cd-pipeline/SKILL.md +15 -0
  15. package/skills/code-review/SKILL.md +27 -0
  16. package/skills/competitor-analysis/SKILL.md +27 -0
  17. package/skills/content-design/SKILL.md +35 -0
  18. package/skills/css-tailwind/SKILL.md +39 -0
  19. package/skills/css-tailwind/quirks.md +86 -0
  20. package/skills/db-vector/SKILL.md +27 -0
  21. package/skills/design-radix/SKILL.md +35 -0
  22. package/skills/design-system/SKILL.md +35 -0
  23. package/skills/detecting-data-anomalies/SKILL.md +15 -0
  24. package/skills/docker-deploy/SKILL.md +15 -0
  25. package/skills/edge-case-finder/SKILL.md +27 -0
  26. package/skills/fonts/SKILL.md +34 -0
  27. package/skills/framework-grammy/SKILL.md +27 -0
  28. package/skills/framework-mastra/SKILL.md +27 -0
  29. package/skills/framework-nestjs/SKILL.md +27 -0
  30. package/skills/framework-prisma/SKILL.md +27 -0
  31. package/skills/funnel-optimization/SKILL.md +19 -0
  32. package/skills/ha-prototype-web/LICENSE-APACHE-2.0 +201 -0
  33. package/skills/ha-prototype-web/NOTICE.md +126 -0
  34. package/skills/ha-prototype-web/SKILL.md +25 -0
  35. package/skills/icons/SKILL.md +34 -0
  36. package/skills/landing-templates/SKILL.md +35 -0
  37. package/skills/market-research/SKILL.md +27 -0
  38. package/skills/metrics-dashboard/SKILL.md +19 -0
  39. package/skills/monitoring-setup/SKILL.md +15 -0
  40. package/skills/motion/SKILL.md +27 -0
  41. package/skills/nestjs-api/SKILL.md +38 -0
  42. package/skills/nestjs-api/quirks.md +36 -0
  43. package/skills/nextjs-page/SKILL.md +27 -0
  44. package/skills/od-blog-post/LICENSE-APACHE-2.0 +201 -0
  45. package/skills/od-blog-post/NOTICE.md +126 -0
  46. package/skills/od-blog-post/SKILL.md +81 -0
  47. package/skills/od-contact-widget/LICENSE-APACHE-2.0 +201 -0
  48. package/skills/od-contact-widget/NOTICE.md +126 -0
  49. package/skills/od-contact-widget/SKILL.md +132 -0
  50. package/skills/od-craft/LICENSE-APACHE-2.0 +201 -0
  51. package/skills/od-craft/NOTICE.md +126 -0
  52. package/skills/od-craft/SKILL.md +58 -0
  53. package/skills/od-craft/references/README.md +108 -0
  54. package/skills/od-craft/references/accessibility-baseline.md +203 -0
  55. package/skills/od-craft/references/animation-discipline.md +156 -0
  56. package/skills/od-craft/references/anti-ai-slop.md +86 -0
  57. package/skills/od-craft/references/color.md +90 -0
  58. package/skills/od-craft/references/form-validation.md +223 -0
  59. package/skills/od-craft/references/laws-of-ux.md +298 -0
  60. package/skills/od-craft/references/rtl-and-bidi.md +188 -0
  61. package/skills/od-craft/references/state-coverage.md +136 -0
  62. package/skills/od-craft/references/typography-hierarchy-editorial.md +184 -0
  63. package/skills/od-craft/references/typography-hierarchy.md +167 -0
  64. package/skills/od-craft/references/typography.md +124 -0
  65. package/skills/od-critique/LICENSE-APACHE-2.0 +201 -0
  66. package/skills/od-critique/NOTICE.md +126 -0
  67. package/skills/od-critique/SKILL.md +259 -0
  68. package/skills/od-dashboard/LICENSE-APACHE-2.0 +201 -0
  69. package/skills/od-dashboard/NOTICE.md +126 -0
  70. package/skills/od-dashboard/SKILL.md +77 -0
  71. package/skills/od-design-brief/LICENSE-APACHE-2.0 +201 -0
  72. package/skills/od-design-brief/NOTICE.md +126 -0
  73. package/skills/od-design-brief/SKILL.md +260 -0
  74. package/skills/od-docs-page/LICENSE-APACHE-2.0 +201 -0
  75. package/skills/od-docs-page/NOTICE.md +126 -0
  76. package/skills/od-docs-page/SKILL.md +81 -0
  77. package/skills/od-email-marketing/LICENSE-APACHE-2.0 +201 -0
  78. package/skills/od-email-marketing/NOTICE.md +126 -0
  79. package/skills/od-email-marketing/SKILL.md +85 -0
  80. package/skills/od-eng-runbook/LICENSE-APACHE-2.0 +201 -0
  81. package/skills/od-eng-runbook/NOTICE.md +126 -0
  82. package/skills/od-eng-runbook/SKILL.md +52 -0
  83. package/skills/od-faq-page/LICENSE-APACHE-2.0 +201 -0
  84. package/skills/od-faq-page/NOTICE.md +126 -0
  85. package/skills/od-faq-page/SKILL.md +113 -0
  86. package/skills/od-finance-report/LICENSE-APACHE-2.0 +201 -0
  87. package/skills/od-finance-report/NOTICE.md +126 -0
  88. package/skills/od-finance-report/SKILL.md +62 -0
  89. package/skills/od-frontend-design/LICENSE-APACHE-2.0 +201 -0
  90. package/skills/od-frontend-design/LICENSE.txt +177 -0
  91. package/skills/od-frontend-design/NOTICE.md +126 -0
  92. package/skills/od-frontend-design/SKILL.md +86 -0
  93. package/skills/od-hr-onboarding/LICENSE-APACHE-2.0 +201 -0
  94. package/skills/od-hr-onboarding/NOTICE.md +126 -0
  95. package/skills/od-hr-onboarding/SKILL.md +53 -0
  96. package/skills/od-invoice/LICENSE-APACHE-2.0 +201 -0
  97. package/skills/od-invoice/NOTICE.md +126 -0
  98. package/skills/od-invoice/SKILL.md +49 -0
  99. package/skills/od-kanban-board/LICENSE-APACHE-2.0 +201 -0
  100. package/skills/od-kanban-board/NOTICE.md +126 -0
  101. package/skills/od-kanban-board/SKILL.md +51 -0
  102. package/skills/od-login-flow/LICENSE-APACHE-2.0 +201 -0
  103. package/skills/od-login-flow/NOTICE.md +126 -0
  104. package/skills/od-login-flow/SKILL.md +49 -0
  105. package/skills/od-login-flow/references/checklist.md +19 -0
  106. package/skills/od-magazine-poster/LICENSE-APACHE-2.0 +201 -0
  107. package/skills/od-magazine-poster/NOTICE.md +126 -0
  108. package/skills/od-magazine-poster/SKILL.md +90 -0
  109. package/skills/od-meeting-notes/LICENSE-APACHE-2.0 +201 -0
  110. package/skills/od-meeting-notes/NOTICE.md +126 -0
  111. package/skills/od-meeting-notes/SKILL.md +48 -0
  112. package/skills/od-mobile-app/LICENSE-APACHE-2.0 +201 -0
  113. package/skills/od-mobile-app/NOTICE.md +126 -0
  114. package/skills/od-mobile-app/SKILL.md +103 -0
  115. package/skills/od-mobile-app/assets/template.html +442 -0
  116. package/skills/od-mobile-app/references/checklist.md +46 -0
  117. package/skills/od-mobile-app/references/layouts.md +312 -0
  118. package/skills/od-mobile-onboarding/LICENSE-APACHE-2.0 +201 -0
  119. package/skills/od-mobile-onboarding/NOTICE.md +126 -0
  120. package/skills/od-mobile-onboarding/SKILL.md +54 -0
  121. package/skills/od-pm-spec/LICENSE-APACHE-2.0 +201 -0
  122. package/skills/od-pm-spec/NOTICE.md +126 -0
  123. package/skills/od-pm-spec/SKILL.md +53 -0
  124. package/skills/od-pricing-page/LICENSE-APACHE-2.0 +201 -0
  125. package/skills/od-pricing-page/NOTICE.md +126 -0
  126. package/skills/od-pricing-page/SKILL.md +80 -0
  127. package/skills/od-redesign-skill/LICENSE +21 -0
  128. package/skills/od-redesign-skill/LICENSE-APACHE-2.0 +201 -0
  129. package/skills/od-redesign-skill/NOTICE.md +126 -0
  130. package/skills/od-redesign-skill/SKILL.md +205 -0
  131. package/skills/od-reference-design-contract/LICENSE-APACHE-2.0 +201 -0
  132. package/skills/od-reference-design-contract/NOTICE.md +126 -0
  133. package/skills/od-reference-design-contract/SKILL.md +131 -0
  134. package/skills/od-reference-design-contract/references/checklist.md +26 -0
  135. package/skills/od-saas-landing/LICENSE-APACHE-2.0 +201 -0
  136. package/skills/od-saas-landing/NOTICE.md +126 -0
  137. package/skills/od-saas-landing/SKILL.md +125 -0
  138. package/skills/od-social-carousel/LICENSE-APACHE-2.0 +201 -0
  139. package/skills/od-social-carousel/NOTICE.md +126 -0
  140. package/skills/od-social-carousel/SKILL.md +92 -0
  141. package/skills/od-team-okrs/LICENSE-APACHE-2.0 +201 -0
  142. package/skills/od-team-okrs/NOTICE.md +126 -0
  143. package/skills/od-team-okrs/SKILL.md +48 -0
  144. package/skills/od-waitlist-page/LICENSE-APACHE-2.0 +201 -0
  145. package/skills/od-waitlist-page/NOTICE.md +126 -0
  146. package/skills/od-waitlist-page/SKILL.md +229 -0
  147. package/skills/od-waitlist-page/assets/template.html +457 -0
  148. package/skills/od-waitlist-page/references/checklist.md +42 -0
  149. package/skills/od-web-design-guidelines/LICENSE +21 -0
  150. package/skills/od-web-design-guidelines/LICENSE-APACHE-2.0 +201 -0
  151. package/skills/od-web-design-guidelines/NOTICE.md +126 -0
  152. package/skills/od-web-design-guidelines/SKILL.md +66 -0
  153. package/skills/od-web-design-guidelines/references/guidelines.md +133 -0
  154. package/skills/od-web-prototype/LICENSE-APACHE-2.0 +201 -0
  155. package/skills/od-web-prototype/NOTICE.md +126 -0
  156. package/skills/od-web-prototype/SKILL.md +102 -0
  157. package/skills/od-web-prototype/assets/template.html +348 -0
  158. package/skills/od-web-prototype/references/checklist.md +47 -0
  159. package/skills/od-web-prototype/references/layouts.md +247 -0
  160. package/skills/od-web-prototype-taste-brutalist/LICENSE-APACHE-2.0 +201 -0
  161. package/skills/od-web-prototype-taste-brutalist/LICENSE-MIT-Leonxlnx +21 -0
  162. package/skills/od-web-prototype-taste-brutalist/NOTICE.md +126 -0
  163. package/skills/od-web-prototype-taste-brutalist/SKILL.md +64 -0
  164. package/skills/od-web-prototype-taste-editorial/LICENSE-APACHE-2.0 +201 -0
  165. package/skills/od-web-prototype-taste-editorial/LICENSE-MIT-Leonxlnx +21 -0
  166. package/skills/od-web-prototype-taste-editorial/NOTICE.md +126 -0
  167. package/skills/od-web-prototype-taste-editorial/SKILL.md +61 -0
  168. package/skills/od-web-prototype-taste-soft/LICENSE-APACHE-2.0 +201 -0
  169. package/skills/od-web-prototype-taste-soft/LICENSE-MIT-Leonxlnx +21 -0
  170. package/skills/od-web-prototype-taste-soft/NOTICE.md +126 -0
  171. package/skills/od-web-prototype-taste-soft/SKILL.md +64 -0
  172. package/skills/od-webgl-experience/LICENSE-APACHE-2.0 +201 -0
  173. package/skills/od-webgl-experience/NOTICE.md +126 -0
  174. package/skills/od-webgl-experience/SKILL.md +81 -0
  175. package/skills/od-wireframe-annotated/LICENSE-APACHE-2.0 +201 -0
  176. package/skills/od-wireframe-annotated/NOTICE.md +126 -0
  177. package/skills/od-wireframe-annotated/SKILL.md +90 -0
  178. package/skills/od-wireframe-greybox/LICENSE-APACHE-2.0 +201 -0
  179. package/skills/od-wireframe-greybox/NOTICE.md +126 -0
  180. package/skills/od-wireframe-greybox/SKILL.md +90 -0
  181. package/skills/od-wireframe-mobile-flow/LICENSE-APACHE-2.0 +201 -0
  182. package/skills/od-wireframe-mobile-flow/NOTICE.md +126 -0
  183. package/skills/od-wireframe-mobile-flow/SKILL.md +96 -0
  184. package/skills/od-wireframe-sketch/LICENSE-APACHE-2.0 +201 -0
  185. package/skills/od-wireframe-sketch/NOTICE.md +126 -0
  186. package/skills/od-wireframe-sketch/SKILL.md +98 -0
  187. package/skills/orchestrating-multi-agent-systems/SKILL.md +19 -0
  188. package/skills/preprocessing-data/SKILL.md +15 -0
  189. package/skills/project-memory-keeper/SKILL.md +19 -0
  190. package/skills/public-apis/SKILL.md +27 -0
  191. package/skills/pugi-patterns/SKILL.md +19 -0
  192. package/skills/react-component/SKILL.md +27 -0
  193. package/skills/sprint-planning/SKILL.md +19 -0
  194. package/skills/stack-selection/SKILL.md +15 -0
  195. package/skills/standup-summary/SKILL.md +15 -0
  196. package/skills/task-decomposition/SKILL.md +19 -0
  197. package/skills/team-routing/SKILL.md +15 -0
  198. package/skills/tech-survey/SKILL.md +15 -0
  199. package/skills/test-plan/SKILL.md +15 -0
  200. package/skills/typescript-refactor/SKILL.md +15 -0
  201. package/skills/ui-components/SKILL.md +35 -0
  202. package/skills/ux-patterns/SKILL.md +35 -0
  203. package/skills/web-platform/SKILL.md +27 -0
  204. package/skills/web-scrape/SKILL.md +27 -0
  205. package/skills/web-search/SKILL.md +15 -0
  206. package/skills/webapp-testing/SKILL.md +37 -0
  207. package/skills/webapp-testing/quirks.md +26 -0
package/README.md CHANGED
@@ -1,25 +1,36 @@
1
- # @pugi/cli
1
+ # Pugi CLI
2
2
 
3
- Pugi CLI - terminal-native software execution system.
3
+ Pugi is an AI product team in your terminal. Describe what you want in plain words and a team of AI specialists plans it, builds it, tests it and checks its security, then you publish it. Works on your own repository or a new project, on macOS and Linux.
4
4
 
5
5
  ## Install
6
6
 
7
7
  ```bash
8
- npm install -g @pugi/cli
8
+ curl -fsSL https://pugi.io/install | sh # macOS and Linux, no Node needed
9
+ npm install -g @pugi/cli # or with npm
10
+ brew install pugi-io/tap/pugi # or with Homebrew
9
11
  ```
10
12
 
11
13
  ## Usage
12
14
 
13
15
  ```bash
16
+ pugi # interactive session in the current folder
17
+ pugi run "..." # one-shot task
18
+ pugi login # sign in with your Pugi account
14
19
  pugi --help
15
- pugi # interactive TUI
16
- pugi run "..." # one-shot prompt
17
20
  ```
18
21
 
22
+ ## What else is Pugi
23
+
24
+ - Web console: https://app.pugi.io (build sites and apps from a brief, preview, publish)
25
+ - Desktop apps, editor and browser extensions: https://pugi.io/download
26
+ - Free logo maker and brand kit: https://logo.pugi.io
27
+ - For AI agents (MCP server, Claude Code and Cursor plugins): https://pugi.io/agents.md
28
+ - Plans: https://pugi.io/pricing
29
+
19
30
  ## License
20
31
 
21
- MIT - see LICENSE for upstream attribution.
32
+ MIT - see LICENSE for upstream attribution and THIRD_PARTY_NOTICES.md for ported code.
22
33
 
23
- ## Homepage
34
+ ## Support
24
35
 
25
- https://pugi.io
36
+ support@pugi.io · https://pugi.io
@@ -0,0 +1,39 @@
1
+ # Third-party notices
2
+
3
+ Code in this repository that was copied or ported from other open-source
4
+ projects, with the licence it was taken under. (The upstream OpenCode fork
5
+ itself is described in `NOTICE.md`.)
6
+
7
+ ## cloudflare/vibesdk — deterministic TypeScript code fixer
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | Source | https://github.com/cloudflare/vibesdk, `worker/services/code-fixer/` |
12
+ | Commit | `9da158d82c597a0e8f4bf033cdccd1053fb6fb15` (2026-09-07) |
13
+ | License | MIT |
14
+ | Where | `packages/opencode/src/code-fixer/vibesdk/` (every file carries a header naming its source file) |
15
+ | Pugi changes | Logger shim (`logger.ts`), local `CodeIssue` type, statement-level splice printing that keeps untouched code and comments byte for byte (`utils/ast.ts`), import-first TS2304 (`../resolve-name.ts`), the `allowStubs` switch (no invented code before publish), the `PUGI-STUB` marker on invented code, exact-name-only default→named conversion, no silent removal of an unresolved import, unique-candidate typo fixes (TS2614), in-place TS2724 edits. Each change is marked `Pugi:` in the source. |
16
+
17
+ ```
18
+ MIT License
19
+
20
+ Copyright (c) 2025 Cloudflare
21
+
22
+ Permission is hereby granted, free of charge, to any person obtaining a copy
23
+ of this software and associated documentation files (the "Software"), to deal
24
+ in the Software without restriction, including without limitation the rights
25
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
26
+ copies of the Software, and to permit persons to whom the Software is
27
+ furnished to do so, subject to the following conditions:
28
+
29
+ The above copyright notice and this permission notice shall be included in all
30
+ copies or substantial portions of the Software.
31
+
32
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
35
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38
+ SOFTWARE.
39
+ ```
package/bin/pugi CHANGED
@@ -1,8 +1,95 @@
1
- echo "Error: @pugi/cli postinstall did not run — binary is missing." >&2
2
- echo "" >&2
3
- echo "This happens when --ignore-scripts was passed during install, or" >&2
4
- echo "when using a package manager that skips postinstall by default." >&2
5
- echo "" >&2
6
- echo "Fix: cd node_modules/@pugi/cli && node postinstall.mjs" >&2
7
- echo "Or reinstall without --ignore-scripts." >&2
8
- exit 1
1
+ #!/usr/bin/env node
2
+ // `bin/pugi` of the @pugi/cli npm package (PUG-44). It runs the native Pugi
3
+ // binary from the platform package @pugi/cli-<os>-<arch>.
4
+ //
5
+ // Why a Node launcher: npm's Windows shims run the bin target by its name, and
6
+ // cmd and PowerShell will not start an exe without the .exe extension, so a
7
+ // native binary copied to `bin/pugi` never started from them. The shebang makes
8
+ // npm's cmd-shim run this file with node. It also works when install scripts
9
+ // are blocked (npm 12 does that by default for global installs): it needs no
10
+ // postinstall. On POSIX under npm or bun, the postinstall replaces this file
11
+ // with the native binary so no extra process runs (postinstall.mjs).
12
+ //
13
+ // The engine finds files that ship in the wrapper (the bundled skills) through
14
+ // PUGI_CLI_PACKAGE_DIR, because the binary it runs lives in another package.
15
+ "use strict"
16
+
17
+ const childProcess = require("child_process")
18
+ const fs = require("fs")
19
+ const path = require("path")
20
+
21
+ const PACKAGE_DIR_ENV = "PUGI_CLI_PACKAGE_DIR"
22
+ const PLATFORMS = { darwin: "darwin", linux: "linux", win32: "windows" }
23
+ const ARCHES = { x64: "x64", arm64: "arm64" }
24
+
25
+ function platformPackage(platform, arch) {
26
+ return `@pugi/cli-${PLATFORMS[platform] || platform}-${ARCHES[arch] || arch}`
27
+ }
28
+
29
+ /** The platform package's binary, resolved from the wrapper whether npm nested or hoisted it. */
30
+ function resolveBinary(packageDir, platform, arch) {
31
+ const name = platformPackage(platform, arch)
32
+ const manifest = (() => {
33
+ try {
34
+ return require.resolve(`${name}/package.json`, { paths: [packageDir] })
35
+ } catch {
36
+ return undefined
37
+ }
38
+ })()
39
+ if (!manifest) return { name }
40
+ const binary = path.join(path.dirname(manifest), "bin", platform === "win32" ? "pugi.exe" : "pugi")
41
+ return fs.existsSync(binary) ? { name, binary } : { name }
42
+ }
43
+
44
+ function run() {
45
+ const packageDir = path.dirname(path.dirname(fs.realpathSync(__filename)))
46
+ const found = resolveBinary(packageDir, process.platform, process.arch)
47
+ if (!found.binary) {
48
+ console.error(`Pugi could not find its program for ${process.platform}-${process.arch}: the package ${found.name} is not installed.`)
49
+ console.error("It is an optional dependency of @pugi/cli, so it must not be skipped. Reinstall with:")
50
+ console.error(" npm install -g @pugi/cli")
51
+ process.exit(1)
52
+ }
53
+
54
+ const child = childProcess.spawn(found.binary, process.argv.slice(2), {
55
+ stdio: "inherit",
56
+ env: { ...process.env, [PACKAGE_DIR_ENV]: packageDir },
57
+ })
58
+
59
+ // Windows: the child shares the console and gets Ctrl+C, Ctrl+Break and the
60
+ // close event itself; child.kill() would be TerminateProcess, so the launcher
61
+ // only keeps itself alive and waits. POSIX: forward, so a signal sent to the
62
+ // launcher's pid alone also reaches the engine. A Ctrl+C the terminal sends
63
+ // to the whole group then arrives twice; the engine coalesces it.
64
+ const handlers = new Map()
65
+ const ignored = process.platform === "win32" ? ["SIGINT", "SIGBREAK"] : []
66
+ const forwarded = process.platform === "win32" ? [] : ["SIGINT", "SIGTERM", "SIGHUP"]
67
+ for (const signal of ignored) handlers.set(signal, () => {})
68
+ for (const signal of forwarded) {
69
+ handlers.set(signal, () => {
70
+ try {
71
+ child.kill(signal)
72
+ } catch {
73
+ // The child has already exited.
74
+ }
75
+ })
76
+ }
77
+ for (const [signal, handler] of handlers) process.on(signal, handler)
78
+
79
+ child.on("error", (error) => {
80
+ console.error(`Pugi could not start ${found.binary}: ${error.message}`)
81
+ process.exit(1)
82
+ })
83
+ child.on("exit", (code, signal) => {
84
+ for (const [name, handler] of handlers) process.removeListener(name, handler)
85
+ if (signal && process.platform !== "win32") {
86
+ process.kill(process.pid, signal)
87
+ return
88
+ }
89
+ process.exit(typeof code === "number" ? code : 1)
90
+ })
91
+ }
92
+
93
+ if (require.main === module) run()
94
+
95
+ module.exports = { PACKAGE_DIR_ENV, platformPackage, resolveBinary }