diff --git a/package.json b/package.json index 3d3988c2a..672aa0ed5 100644 --- a/package.json +++ b/package.json @@ -44,9 +44,9 @@ "build:native-pkg": "npm run build -w @gsd/native", "build:pi": "npm run build:native-pkg && npm run build:pi-tui && npm run build:pi-ai && npm run build:pi-agent-core && npm run build:pi-coding-agent", "build": "npm run build:pi && tsc && npm run copy-resources && npm run copy-themes && npm run copy-export-html", - "copy-resources": "node -e \"const{cpSync,rmSync}=require('fs');rmSync('dist/resources',{recursive:true,force:true});cpSync('src/resources','dist/resources',{recursive:true,force:true})\"", - "copy-themes": "node -e \"const{mkdirSync,cpSync}=require('fs');const{resolve}=require('path');const src=resolve(__dirname,'packages/pi-coding-agent/dist/modes/interactive/theme');mkdirSync('pkg/dist/modes/interactive/theme',{recursive:true});cpSync(src,'pkg/dist/modes/interactive/theme',{recursive:true})\"", - "copy-export-html": "node -e \"const{mkdirSync,cpSync}=require('fs');const{resolve}=require('path');const src=resolve(__dirname,'packages/pi-coding-agent/dist/core/export-html');mkdirSync('pkg/dist/core/export-html',{recursive:true});cpSync(src,'pkg/dist/core/export-html',{recursive:true})\"", + "copy-resources": "node scripts/copy-resources.cjs", + "copy-themes": "node scripts/copy-themes.cjs", + "copy-export-html": "node scripts/copy-export-html.cjs", "test:unit": "node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*.test.ts src/resources/extensions/gsd/tests/*.test.mjs src/tests/*.test.ts", "test:coverage": "c8 --reporter=text --reporter=lcov --exclude='src/resources/extensions/gsd/tests/**' --exclude='src/tests/**' --exclude='scripts/**' --exclude='native/**' --exclude='node_modules/**' --check-coverage --statements=40 --lines=40 --branches=0 --functions=0 node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*.test.ts src/resources/extensions/gsd/tests/*.test.mjs src/tests/*.test.ts", "test:integration": "node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*integration*.test.ts src/tests/integration/*.test.ts", diff --git a/packages/pi-coding-agent/package.json b/packages/pi-coding-agent/package.json index e31a8a095..3db502944 100644 --- a/packages/pi-coding-agent/package.json +++ b/packages/pi-coding-agent/package.json @@ -21,7 +21,7 @@ }, "scripts": { "build": "tsc -p tsconfig.json && npm run copy-assets", - "copy-assets": "node -e \"const{mkdirSync,cpSync}=require('fs');mkdirSync('dist/modes/interactive/theme',{recursive:true});cpSync('src/modes/interactive/theme','dist/modes/interactive/theme',{recursive:true,filter:(s)=>!s.endsWith('.ts')});mkdirSync('dist/core/export-html/vendor',{recursive:true});cpSync('src/core/export-html/template.html','dist/core/export-html/template.html');cpSync('src/core/export-html/template.css','dist/core/export-html/template.css');cpSync('src/core/export-html/template.js','dist/core/export-html/template.js');cpSync('src/core/export-html/vendor','dist/core/export-html/vendor',{recursive:true,filter:(s)=>!s.endsWith('.ts')});mkdirSync('dist/core/lsp',{recursive:true});cpSync('src/core/lsp/defaults.json','dist/core/lsp/defaults.json');cpSync('src/core/lsp/lsp.md','dist/core/lsp/lsp.md')\"" + "copy-assets": "node scripts/copy-assets.cjs" }, "dependencies": { "@mariozechner/jiti": "^2.6.2", diff --git a/packages/pi-coding-agent/scripts/copy-assets.cjs b/packages/pi-coding-agent/scripts/copy-assets.cjs new file mode 100644 index 000000000..fe331539e --- /dev/null +++ b/packages/pi-coding-agent/scripts/copy-assets.cjs @@ -0,0 +1,24 @@ +#!/usr/bin/env node +const { mkdirSync, cpSync } = require('fs'); + +// Theme assets +mkdirSync('dist/modes/interactive/theme', { recursive: true }); +cpSync('src/modes/interactive/theme', 'dist/modes/interactive/theme', { + recursive: true, + filter: (s) => !s.endsWith('.ts'), +}); + +// Export HTML templates and vendor files +mkdirSync('dist/core/export-html/vendor', { recursive: true }); +cpSync('src/core/export-html/template.html', 'dist/core/export-html/template.html'); +cpSync('src/core/export-html/template.css', 'dist/core/export-html/template.css'); +cpSync('src/core/export-html/template.js', 'dist/core/export-html/template.js'); +cpSync('src/core/export-html/vendor', 'dist/core/export-html/vendor', { + recursive: true, + filter: (s) => !s.endsWith('.ts'), +}); + +// LSP defaults +mkdirSync('dist/core/lsp', { recursive: true }); +cpSync('src/core/lsp/defaults.json', 'dist/core/lsp/defaults.json'); +cpSync('src/core/lsp/lsp.md', 'dist/core/lsp/lsp.md'); diff --git a/scripts/copy-export-html.cjs b/scripts/copy-export-html.cjs new file mode 100644 index 000000000..97fb728be --- /dev/null +++ b/scripts/copy-export-html.cjs @@ -0,0 +1,6 @@ +#!/usr/bin/env node +const { mkdirSync, cpSync } = require('fs'); +const { resolve } = require('path'); +const src = resolve(__dirname, '..', 'packages', 'pi-coding-agent', 'dist', 'core', 'export-html'); +mkdirSync('pkg/dist/core/export-html', { recursive: true }); +cpSync(src, 'pkg/dist/core/export-html', { recursive: true }); diff --git a/scripts/copy-resources.cjs b/scripts/copy-resources.cjs new file mode 100644 index 000000000..62e2d6812 --- /dev/null +++ b/scripts/copy-resources.cjs @@ -0,0 +1,4 @@ +#!/usr/bin/env node +const { cpSync, rmSync } = require('fs'); +rmSync('dist/resources', { recursive: true, force: true }); +cpSync('src/resources', 'dist/resources', { recursive: true, force: true }); diff --git a/scripts/copy-themes.cjs b/scripts/copy-themes.cjs new file mode 100644 index 000000000..05b443d5e --- /dev/null +++ b/scripts/copy-themes.cjs @@ -0,0 +1,6 @@ +#!/usr/bin/env node +const { mkdirSync, cpSync } = require('fs'); +const { resolve } = require('path'); +const src = resolve(__dirname, '..', 'packages', 'pi-coding-agent', 'dist', 'modes', 'interactive', 'theme'); +mkdirSync('pkg/dist/modes/interactive/theme', { recursive: true }); +cpSync(src, 'pkg/dist/modes/interactive/theme', { recursive: true });