diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 880a8a617..731555a01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,10 +9,29 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '20' + # `undici` (a direct dependency, ^8.11.2 as of LOU-K3's Cloudflare + # Worker LLM provider support) declares an engines requirement of + # node >=22.19.0. Under Node 20, requiring it (indirectly, via + # anything that touches its Cache/fetch internals) throws + # `TypeError: webidl.util.markAsUncloneable is not a function` + # instead of just an EBADENGINE warning - which was crashing + # whichever vitest worker hit it first and cascading into "0 test" + # failures across the rest of that worker's queue. Node 20 was + # already below what a fresh dependency needs; bump to match. + node-version: '22' cache: 'npm' - run: npm ci - run: npx tsc --noEmit - run: npm run lint - - run: npm run test:coverage + # Build the root SDK's dist *before* running tests: + # packages/create-loushy-agent/src/template.e2e.test.ts `npm pack`s the + # root SDK's own source tree to install it into a generated project, + # which needs dist/ (package.json's main/module/types) to already + # exist - it was previously built only in the step after tests, so + # this test always failed once it actually got a chance to run. - run: npm run build + # packages/create-loushy-agent's own tests execFileSync its bin/cli.js, + # which requires ITS dist/index.js to exist too - build it before the + # test step (this is a separate package from the root SDK above). + - run: npm run build --workspace=packages/create-loushy-agent + - run: npm run test:coverage diff --git a/apps/agent-forge/eslint.config.mjs b/apps/agent-forge/eslint.config.mjs new file mode 100644 index 000000000..c9f01952c --- /dev/null +++ b/apps/agent-forge/eslint.config.mjs @@ -0,0 +1,21 @@ +// Mirrors the root repo's eslint.config.mjs conventions (typescript-eslint +// recommended, no-explicit-any / no-unused-vars / ban-ts-comment downgraded +// to 'warn' rather than turned off) so this app's lint output stays +// consistent with `npm run lint` at the repo root, rather than inventing a +// divergent lint setup for this one workspace. +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['dist/**', 'node_modules/**', 'coverage/**'], + }, + ...tseslint.configs.recommended, + { + files: ['src/**/*.{ts,tsx}'], + rules: { + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/ban-ts-comment': 'warn', + }, + } +); diff --git a/apps/agent-forge/index.html b/apps/agent-forge/index.html new file mode 100644 index 000000000..f2f825d96 --- /dev/null +++ b/apps/agent-forge/index.html @@ -0,0 +1,20 @@ + + +
+ + +{JSON.stringify(spec, null, 2)}}
+ {drawerTab === 'settings' &&