diff --git a/.tazerc.json b/.tazerc.json index 862cc48..0686cd5 100644 --- a/.tazerc.json +++ b/.tazerc.json @@ -6,9 +6,10 @@ "msw", "open", "commander", - "axios" + "axios", + "execa" ], "packageMode": { "react": "minor" } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-cli/bin/gpt-runner.mjs b/packages/gpt-runner-cli/bin/gpt-runner.cjs similarity index 55% rename from packages/gpt-runner-cli/bin/gpt-runner.mjs rename to packages/gpt-runner-cli/bin/gpt-runner.cjs index d5caadb..59e9265 100755 --- a/packages/gpt-runner-cli/bin/gpt-runner.mjs +++ b/packages/gpt-runner-cli/bin/gpt-runner.cjs @@ -1,3 +1,3 @@ #!/usr/bin/env node 'use strict' -import('../dist/cli.mjs') +require('../dist/cli.cjs') diff --git a/packages/gpt-runner-cli/build.config.ts b/packages/gpt-runner-cli/build.config.ts index fe9dbe0..4cf7580 100644 --- a/packages/gpt-runner-cli/build.config.ts +++ b/packages/gpt-runner-cli/build.config.ts @@ -1,5 +1,15 @@ import { defineBuildConfig } from 'unbuild' +function createGetChunkFilename(ctx: any) { + return function (chunk: any, ext: string) { + if (chunk.isDynamicEntry) + return `chunks/[name].${ext}` + + // TODO: Find a way to generate human friendly hash for short groups + return `${ctx.options.name}.[hash].${ext}` + } +} + export default defineBuildConfig({ entries: [ { @@ -11,6 +21,42 @@ export default defineBuildConfig({ clean: true, declaration: true, rollup: { + emitCJS: true, + resolve: { + exportConditions: ['node'], + }, + commonjs: {}, inlineDependencies: true, }, + hooks: { + 'rollup:options': function (ctx, rollupOptions) { + if (!rollupOptions.output) + return + + if (!Array.isArray(rollupOptions.output)) + rollupOptions.output = [rollupOptions.output] + + const getChunkFilename = createGetChunkFilename(ctx) + rollupOptions.output.forEach((output) => { + const format = output.format || 'cjs' + const ext = format === 'esm' ? 'mjs' : format + output.chunkFileNames = chunk => getChunkFilename(chunk, ext) + + if (format === 'esm') { + output.banner = ` +import $__url__$ from 'url' +import $__path__$ from 'path' + +const __filename = $__url__$.fileURLToPath(import.meta.url); +const __dirname = $__path__$.dirname(__filename); + +${output.banner || ''} + ` + } + }) + + // remove esm + rollupOptions.output = rollupOptions.output.filter(output => output.format !== 'esm') + }, + }, }) diff --git a/packages/gpt-runner-cli/package.json b/packages/gpt-runner-cli/package.json index 4f21da4..5252f5b 100644 --- a/packages/gpt-runner-cli/package.json +++ b/packages/gpt-runner-cli/package.json @@ -30,7 +30,7 @@ "anthropic" ], "bin": { - "gptr": "./bin/gpt-runner.mjs" + "gptr": "./bin/gpt-runner.cjs" }, "files": [ "bin/", @@ -46,14 +46,16 @@ "stub": "unbuild --stub" }, "dependencies": { - "@nicepkg/gpt-runner-core": "workspace:*", - "@nicepkg/gpt-runner-shared": "workspace:*", - "@nicepkg/gpt-runner-web": "workspace:*", + "@nicepkg/gpt-runner-web": "workspace:*" + }, + "devDependencies": { "cac": "^6.7.14", "chokidar": "^3.5.3", "colorette": "^2.0.20", "consola": "^3.2.3", - "execa": "^7.2.0", - "wait-port": "^1.0.4" + "execa": "5.1.1", + "wait-port": "^1.0.4", + "@nicepkg/gpt-runner-core": "workspace:*", + "@nicepkg/gpt-runner-shared": "workspace:*" } } diff --git a/packages/gpt-runner-cli/src/cli-start.ts b/packages/gpt-runner-cli/src/cli-start.ts index b9a0b59..549509f 100644 --- a/packages/gpt-runner-cli/src/cli-start.ts +++ b/packages/gpt-runner-cli/src/cli-start.ts @@ -3,7 +3,7 @@ import { loadUserConfig } from '@nicepkg/gpt-runner-core' import { PathUtils, Tunnel, checkNodeVersion, getLocalHostname, getPort, getRunServerEnv, openInBrowser } from '@nicepkg/gpt-runner-shared/node' import { consola } from 'consola' import { cyan, green } from 'colorette' -import { execa } from 'execa' +import execa from 'execa' import waitPort from 'wait-port' import { Debug } from '@nicepkg/gpt-runner-shared/common' import { version } from '../package.json' @@ -64,7 +64,11 @@ export async function startCli(cwd = PathUtils.resolve(process.cwd()), argv = pr GPTR_ONLY_LOAD_CONFIG_PATH: options.config || '', }, stdio: 'inherit', - })?.pipeStdout?.(process.stdout)?.pipeStderr?.(process.stderr) + }).on('message', (message) => { + consola.info(message) + }).on('error', (error) => { + consola.error(error) + }) } catch (error) { consola.error(error) diff --git a/packages/gpt-runner-cli/src/config.ts b/packages/gpt-runner-cli/src/config.ts deleted file mode 100644 index aa83d4c..0000000 --- a/packages/gpt-runner-cli/src/config.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { UserConfig } from '@nicepkg/gpt-runner-core' - -export const defaultConfig: UserConfig = { -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae2d8fc..1b01058 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,15 +128,16 @@ importers: packages/gpt-runner-cli: dependencies: + '@nicepkg/gpt-runner-web': + specifier: workspace:* + version: link:../gpt-runner-web + devDependencies: '@nicepkg/gpt-runner-core': specifier: workspace:* version: link:../gpt-runner-core '@nicepkg/gpt-runner-shared': specifier: workspace:* version: link:../gpt-runner-shared - '@nicepkg/gpt-runner-web': - specifier: workspace:* - version: link:../gpt-runner-web cac: specifier: ^6.7.14 version: 6.7.14 @@ -150,8 +151,8 @@ importers: specifier: ^3.2.3 version: 3.2.3 execa: - specifier: ^7.2.0 - version: 7.2.0 + specifier: 5.1.1 + version: 5.1.1 wait-port: specifier: ^1.0.4 version: 1.0.4 @@ -9133,6 +9134,7 @@ packages: /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + dev: true /cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} @@ -9590,6 +9592,7 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + dev: true /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} @@ -9646,7 +9649,7 @@ packages: /consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} - dev: false + dev: true /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -11932,6 +11935,7 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 + dev: true /exenv-es6@1.1.1: resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} @@ -13139,6 +13143,7 @@ packages: /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + dev: true /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -13624,6 +13629,7 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -15107,6 +15113,7 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: true /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -15683,6 +15690,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true /npm-to-yarn@2.0.0: resolution: {integrity: sha512-/IbjiJ7vqbxfxJxAZ+QI9CCRjnIbvGxn5KQcSY9xHh0lMKc/Sgqmm7yp7KPmd6TiTZX5/KiSBKlkGHo59ucZbg==} @@ -15785,6 +15793,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -16073,6 +16082,7 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -18877,6 +18887,7 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -20405,6 +20416,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /walk-up-path@3.0.1: resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==}