# will: tools and canonical tasks (single source for CI and workstation) [tools] node = "26" [env] NODE_OPTIONS = "--enable-source-maps" [tasks.check] description = "biome + strict tsc" run = "npm run check" [tasks.test] description = "all local test tiers (unit, property, integration)" run = "npm test" [tasks.coverage] description = "tests with coverage + ratchet enforcement" run = "npm run coverage" [tasks.build] description = "bundle service/agent/web + render docs" run = "npm run build" [tasks.dev] description = "dev body: developer card + podman compose up (Ctrl+C stops)" run = "node scripts/dev.mjs" [tasks."dev:chat"] description = "send a chat message to the local dev body (echoes back as a wake)" run = "node scripts/dev-chat.mjs" [tasks.base-service] description = "build and push will-service-base (deliberate)" run = "podman build -f Containerfile.service-base -t ghcr.io/bugabinga/will-service-base:latest . && podman push ghcr.io/bugabinga/will-service-base:latest" [tasks.base-agent] description = "build and push will-agent-base (deliberate)" run = "podman build -f Containerfile.agent-base -t ghcr.io/bugabinga/will-agent-base:latest . && podman push ghcr.io/bugabinga/will-agent-base:latest" [tasks.images] description = "build both final images from recorded bases" run = """ podman build -f Containerfile.service -t ghcr.io/bugabinga/will-service:dev . && \ podman build -f Containerfile.agent -t ghcr.io/bugabinga/will-agent:dev . """ [tasks.boot-test] description = "two-container boot test with fake providers (requires podman)" run = "node --experimental-strip-types scripts/boot-test.ts" [tasks.canary] description = "scheduled ZAI contract canary (non-deploying)" run = "npm run canary" [tasks.browser] description = "browser e2e tier (requires playwright browsers)" run = "npm run test:browser"