Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -688,4 +688,6 @@ pnpm format:check # oxfmt --check

The test suite never requires Docker, Git state, or a network connection — adapters are faked, and every state-touching test pins `ODOO_AGENTIC_DEV_STATE_DB` to a temp file so your real registry is never touched. `scripts/docker-integration.sh` is a separate minimal Docker integration check (compose file generation + validation against a real Docker) used by the Linux CI job; it is not part of `pnpm test`. `pnpm package:smoke` installs the packed tarball with npm in a temporary project, so it may need registry access to resolve runtime dependencies.

The Effect release candidates (`effect`, `@effect/platform-node`, and `@effect/platform-node-shared`) are pinned to the same tested version. The shared platform package is a direct dependency to constrain the Node adapter's transitive dependency during consumer installs. Upgrade all three together and run `pnpm package:smoke`: release candidates can change CLI APIs, and consumer installs resolve dependencies independently of this repository's lockfile.

CI runs lint/typecheck/build/test on Linux, macOS, and Windows across Node 22 and 24 (the Windows job exercises the dry-run unit suite only — no Docker), plus Docker integration and packed npm install smoke jobs on Linux. A nightly workflow (`.github/workflows/nightly.yml`, also runnable via `workflow_dispatch`) exercises the real `odoo:18` + `postgres:16` lifecycle end to end: `setup` with a template snapshot, `reset-db` down the template restore path, `update base`, and a fully clean `down --volumes`.
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@basaltbytes/odoo-agentic-dev",
"version": "0.1.0-beta.19",
"version": "0.1.0-beta.20",
"description": "Agent-friendly local Odoo development runtime: worktree-isolated databases, ports, and Docker Compose stacks",
"keywords": [
"agentic",
Expand Down Expand Up @@ -56,8 +56,9 @@
"prepublishOnly": "pnpm lint && pnpm format:check && pnpm typecheck && pnpm build && pnpm test && pnpm package:smoke"
},
"dependencies": {
"@effect/platform-node": "^4.0.0-rc.112",
"effect": "^4.0.0-rc.112",
"@effect/platform-node": "4.0.0-rc.113",
"@effect/platform-node-shared": "4.0.0-rc.113",
"effect": "4.0.0-rc.113",
"jiti": "^2.7.0"
},
"devDependencies": {
Expand Down
151 changes: 25 additions & 126 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions scripts/npm-smoke.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ cd "$PROJECT"

npm init -y >/dev/null
npm install --ignore-scripts --no-audit --no-fund "$TARBALL" >/dev/null
# Show the fresh resolution and reject invalid peers before exercising the CLI.
npm ls --all effect @effect/platform-node @effect/platform-node-shared

BIN="$PROJECT/node_modules/.bin/oad"

Expand Down
4 changes: 2 additions & 2 deletions src/commands/compose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ export const runCompose = (
export const composeCommand = Command.make(
"compose",
{
args: Argument.string("args").pipe(
args: Argument.String("args").pipe(
Argument.variadic(),
Argument.withDescription("docker compose arguments (pass them after --)"),
),
config: Flag.string("config").pipe(Flag.optional),
config: Flag.String("config").pipe(Flag.optional),
},
(flags) =>
Effect.gen(function* () {
Expand Down
6 changes: 3 additions & 3 deletions src/commands/doctor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -542,15 +542,15 @@ export const collectDoctorChecks = (
export const doctorCommand = Command.make(
"doctor",
{
deep: Flag.boolean("deep").pipe(
deep: Flag.Boolean("deep").pipe(
Flag.withDefault(false),
Flag.withDescription("run slower container probes such as browser-test dependency checks"),
),
json: Flag.boolean("json").pipe(
json: Flag.Boolean("json").pipe(
Flag.withDefault(false),
Flag.withDescription("print machine-readable JSON"),
),
config: Flag.string("config").pipe(Flag.optional),
config: Flag.String("config").pipe(Flag.optional),
},
(flags) =>
Effect.gen(function* () {
Expand Down
8 changes: 4 additions & 4 deletions src/commands/down.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,16 @@ export const finalizeDownState = (
export const downCommand = Command.make(
"down",
{
volumes: Flag.boolean("volumes").pipe(
volumes: Flag.Boolean("volumes").pipe(
Flag.withDefault(false),
Flag.withDescription("also remove this worktree's volumes"),
),
allowShared: Flag.boolean("allow-shared").pipe(Flag.withDefault(false)),
json: Flag.boolean("json").pipe(
allowShared: Flag.Boolean("allow-shared").pipe(Flag.withDefault(false)),
json: Flag.Boolean("json").pipe(
Flag.withDefault(false),
Flag.withDescription("suppress decorative output; print one final JSON report line"),
),
config: Flag.string("config").pipe(Flag.optional),
config: Flag.String("config").pipe(Flag.optional),
},
(flags) =>
withJsonReport("down", flags.json, (report) =>
Expand Down
Loading
Loading