Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
cdd477f
Rename SDK to @linuxdevil/lousho and publish Studio as @linuxdevil/st…
LinuxDevil Nov 13, 2026
bb900ce
Merge remote-tracking branch 'origin/fb-fix-vitest-config' into fb-w1…
LinuxDevil Nov 14, 2026
c577cce
Merge remote-tracking branch 'origin/main' into fb-w13a-studio-package
LinuxDevil Nov 14, 2026
7ab72f4
chore(api): refresh workspaces/goals api reports; raise unpacked tarb…
LinuxDevil Nov 14, 2026
ed00b6d
Merge remote-tracking branch 'origin/main' into fb-w13a-studio-package
LinuxDevil Nov 14, 2026
189517c
fix(studio): repoint SecretRef imports to wireTypes, drop stale dagre…
LinuxDevil Nov 14, 2026
05e8aa4
Merge remote-tracking branch 'origin/main' into fb-w13a-studio-package
LinuxDevil Nov 14, 2026
78cabea
fix(rename): repair codemod collateral - path segments, bin name, aut…
LinuxDevil Nov 14, 2026
0e48a00
W13b: SDK tarball stops shipping Studio; lousho studio becomes a laun…
LinuxDevil Nov 13, 2026
f62f84c
W15a: studio pack smoke + dedicated studio CI job
LinuxDevil Nov 13, 2026
6dd9f21
Fix lint gate after merge: scoped rule id, evals in imports config, d…
LinuxDevil Nov 14, 2026
7e4c15d
W15b follow-ups: rename fallout, SecretRef dedupe, pack-smoke sharing
LinuxDevil Nov 14, 2026
93d1e75
W16: docs for standalone Studio - install, workspaces, SDK selection,…
LinuxDevil Nov 14, 2026
5a1a558
A08b: eject to project - write the agent directory into the workspace
LinuxDevil Nov 14, 2026
e96b9d4
fix(ci): repair merge fallout in pack-smoke, fallow config, CodeTab test
LinuxDevil Nov 14, 2026
ec1133b
fix(ci): studio pack-smoke budgets, bin realpath guard, eject extraction
LinuxDevil Nov 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .fallowrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
// `new Worker(new URL('./layout.worker.ts', import.meta.url))` in
// apps/agent-forge/src/canvas/layout.ts (C17).
"apps/agent-forge/src/canvas/layout.worker.ts",
// The packaged Studio's `lousho-studio` bin and its pack-time SDK-range pin.
"apps/agent-forge/server/cli.ts",
"apps/agent-forge/scripts/pin-sdk-range.mjs",
// The <forge-chat> widget bundle (X04b): vite.widget.config.ts's
// lib.entry is not visible to the import graph.
"apps/agent-forge/src/widget/entry.ts",
Expand Down Expand Up @@ -100,7 +103,7 @@
"@ai-sdk/anthropic",
"@ai-sdk/google",
"@ai-sdk/openai",
"lousho",
"@linuxdevil/lousho",
"ollama-ai-provider",
"ollama-ai-provider-v2",
"prompts"
Expand Down
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ What did you run, and what did it show? Name anything you couldn't verify, such

## Release

Merging doesn't publish. The Release workflow publishes `lousho` and `create-lousho` to npm as `latest` every Monday at 06:00 UTC, or when run by hand, so everyone on a default install gets this change in the next release. The `Unreleased` entry above becomes that release's notes.
Merging publishes `@linuxdevil/lousho` and `create-lousho` to npm as `latest`, so everyone on a default install gets this change.

- [ ] This PR doesn't need a release on its own, so I added the `norelease` label. The weekly run skips when every PR since the last release has it

Expand Down
71 changes: 64 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@ jobs:
- run: npm run registry:check
# schemas/ is generated from the workspace contracts; fail if stale.
- run: npm run workspaces:schema:check
# Agent Forge imports the SDK as `lousho` via `file:../..`, i.e. the root dist/ built above.
- run: npm run typecheck --workspace apps/agent-forge
- run: npm run typecheck:server --workspace apps/agent-forge
# Agent Forge typechecks moved to the dedicated `studio` job (W15a).
zod4:
runs-on: ubuntu-latest
steps:
Expand All @@ -66,20 +64,79 @@ jobs:
- run: npm install --no-save zod@4
- run: npx tsc --noEmit
- run: npm run typecheck:tests
forge:
# @linuxdevil/studio (apps/agent-forge): its own package since W13. Builds the SDK first (Studio depends on it through
# file:../.. in the monorepo), then Studio's checks, then packs both and smoke-tests the install.
studio:
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: 'npm'
- run: npm ci
- run: npm run build -- --no-dts
- run: npm run test --workspace apps/agent-forge -- --run
- run: npm run test:server --workspace apps/agent-forge
- run: npm run build
env:
NODE_OPTIONS: --max-old-space-size=12288
- run: npm run typecheck --workspace apps/agent-forge
- run: npm run typecheck:server --workspace apps/agent-forge
# Studio imports only public SDK exports (PLAN §19.7).
- run: npm run lint:imports --workspace apps/agent-forge
- run: npm run test --workspace apps/agent-forge -- --run
- run: npm run test:server --workspace apps/agent-forge
# W15b: the same bridge-compat matrix against the SDK in this commit.
- run: npm run test:bridge-compat --workspace apps/agent-forge
- run: npm run build:studio
# Packs the SDK and @linuxdevil/studio, dry-run publishes Studio, installs both in a fresh project, and checks
# that `lousho-studio` and `lousho studio` serve the UI. Never publishes.
- run: npm run pack-smoke:studio -- --skip-build
# W15b: the same bridge-compat matrix against the OLDEST SDK release Studio
# still supports (MIN_BRIDGE_SDK_VERSION in server/host/sdkCompat.ts). When
# that version is not on npm yet the job skips with a notice; once it is
# published this runs the suite against the real installed package.
bridge-compat-min:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: 'npm'
- run: npm ci
- run: npm run build
env:
NODE_OPTIONS: --max-old-space-size=12288
- name: Resolve MIN_BRIDGE_SDK_VERSION
id: min
run: |
v=$(npx tsx -e "import { MIN_BRIDGE_SDK_VERSION } from './apps/agent-forge/server/host/sdkCompat.ts'; console.log(MIN_BRIDGE_SDK_VERSION)")
echo "version=$v" >> "$GITHUB_OUTPUT"
- name: Check the minimum SDK is published
id: pub
env:
MIN: ${{ steps.min.outputs.version }}
run: |
if npm view "@linuxdevil/lousho@$MIN" version > /dev/null 2>&1; then
echo "published=true" >> "$GITHUB_OUTPUT"
else
echo "published=false" >> "$GITHUB_OUTPUT"
echo "::notice::@linuxdevil/lousho@$MIN is not published yet - bridge-compat-min skips until it is."
fi
- name: Install the minimum SDK
if: steps.pub.outputs.published == 'true'
env:
MIN: ${{ steps.min.outputs.version }}
run: |
mkdir -p "$RUNNER_TEMP/min-sdk" && cd "$RUNNER_TEMP/min-sdk"
npm init -y > /dev/null
npm install "@linuxdevil/lousho@$MIN" ai@7 zod@4 --no-audit --no-fund
- name: Run the compat suite against it
if: steps.pub.outputs.published == 'true'
env:
MIN: ${{ steps.min.outputs.version }}
LOUSHO_BRIDGE_SDK_DIR: ${{ runner.temp }}/min-sdk/node_modules/@linuxdevil/lousho
run: npm run test:bridge-compat --workspace apps/agent-forge
test:
runs-on: ubuntu-latest
steps:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,6 @@ snip.txt
# Author eval run outputs (npm run eval:author --workspace apps/agent-forge).
# baseline.json is committed and lives one level up at evals/author/.
apps/agent-forge/evals/author/results/*.json

# Studio pack-time SDK-range pin backup
.package.json.prepack
Loading
Loading