* Revert "feat(ai): add HarnessAgent sidecar foundation (#560)"
This reverts commit 83a5ea1b42.
* Revert "Revert "feat(ai): add HarnessAgent sidecar foundation (#560)""
This reverts commit 0d8c03515888c62dc47186d4a3b0b7b04e78f8af.
* refactor(ai): ship Harness as optional companion
* fix(ai): support Harness companion on Windows
* test(ai): restore navigator after Harness Windows test
94 lines
2.8 KiB
TypeScript
94 lines
2.8 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
import { tmpdir } from 'node:os'
|
|
import { join } from 'node:path'
|
|
|
|
import {
|
|
DEFAULT_PACKAGES,
|
|
preparePublishDirectories,
|
|
publishPackageJSON
|
|
} from '../src/publish-dirs'
|
|
|
|
async function fixtureRoot() {
|
|
const root = join(tmpdir(), `open-pencil-release-packages-${crypto.randomUUID()}`)
|
|
await mkdir(join(root, 'packages/example/dist'), { recursive: true })
|
|
await writeFile(join(root, 'packages/example/dist/index.js'), 'export {}\n')
|
|
await writeFile(
|
|
join(root, 'packages/example/package.json'),
|
|
JSON.stringify(
|
|
{
|
|
name: '@open-pencil/example',
|
|
version: '1.0.0',
|
|
scripts: { build: 'tsdown' },
|
|
dependencies: { '@open-pencil/core': 'workspace:*', zod: '^4.0.0' },
|
|
devDependencies: { typescript: '^5.0.0' },
|
|
publishConfig: { access: 'public', main: './dist/index.js', types: './dist/index.d.ts' }
|
|
},
|
|
null,
|
|
2
|
|
)
|
|
)
|
|
return root
|
|
}
|
|
|
|
describe('publishPackageJSON', () => {
|
|
test('rewrites workspace dependencies and strips private build fields', () => {
|
|
const json = publishPackageJSON(
|
|
{
|
|
name: '@open-pencil/example',
|
|
scripts: { build: 'tsdown' },
|
|
dependencies: { '@open-pencil/core': 'workspace:*', zod: '^4.0.0' },
|
|
devDependencies: { typescript: '^5.0.0' },
|
|
publishConfig: { access: 'public', main: './dist/index.js' }
|
|
},
|
|
'0.13.2'
|
|
)
|
|
|
|
expect(json).toEqual({
|
|
name: '@open-pencil/example',
|
|
dependencies: { '@open-pencil/core': '^0.13.2', zod: '^4.0.0' },
|
|
main: './dist/index.js'
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('DEFAULT_PACKAGES', () => {
|
|
test('includes every public workspace package that release publish must pack', () => {
|
|
expect(DEFAULT_PACKAGES.map((pkg) => pkg.dir)).toEqual([
|
|
'packages/scene-graph',
|
|
'packages/pen',
|
|
'packages/kiwi',
|
|
'packages/fig',
|
|
'packages/core',
|
|
'packages/dom-css',
|
|
'packages/cli',
|
|
'packages/mcp',
|
|
'packages/harness',
|
|
'packages/vue'
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('preparePublishDirectories', () => {
|
|
test('copies requested files and writes publish package metadata', async () => {
|
|
const root = await fixtureRoot()
|
|
const outRoot = join(root, '.publish')
|
|
|
|
await preparePublishDirectories({
|
|
coreVersion: '0.13.2',
|
|
outRoot,
|
|
packages: [{ dir: 'packages/example', include: ['dist'], extraFiles: [] }],
|
|
root
|
|
})
|
|
|
|
expect(await readFile(join(outRoot, 'example/dist/index.js'), 'utf8')).toBe('export {}\n')
|
|
expect(JSON.parse(await readFile(join(outRoot, 'example/package.json'), 'utf8'))).toEqual({
|
|
name: '@open-pencil/example',
|
|
version: '1.0.0',
|
|
dependencies: { '@open-pencil/core': '^0.13.2', zod: '^4.0.0' },
|
|
main: './dist/index.js',
|
|
types: './dist/index.d.ts'
|
|
})
|
|
})
|
|
})
|