Skip to content

fix+feat: deploy end-to-end, Urban human front-end for the review task, Biome linting - #4

Merged
jwulf merged 3 commits into
mainfrom
fix/deploy-ts-loader-and-falcon-race
Aug 21, 2026
Merged

jwulf merged 3 commits into
mainfrom
fix/deploy-ts-loader-and-falcon-race

Conversation

@jwulf

@jwulf jwulf commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

This PR started as the npm run deploy fix and now also adds the human front-end that lets the review task be acted on, plus Biome linting.


1. Make npm run deploy run end-to-end

npm run deploy couldn't run against a Nano gateway. Two independent defects:

2. Urban human front-end for the review task

The human(review) step parks each instance on a user task nothing completes, so the convergence loop never resolves. Rather than a bespoke reviewer UI, mount @nanobpm/urban's built-in taskInbox surface (ADR 0026) — no embedded engine, no duplicated workers:

  • nano.app.json — enables surfaces.taskInbox, declares the form under models.forms.
  • resources/forms/research-review.form — form-js schema (read-only question + drafted finalAnswer, required approve/revise verdict, conditional revisionNotes); field keys match the review task I/O.
  • urban-app.tsrunFromEnv deploys the form and mounts the surface against the same engine npm run deploy targets; run with npm run app (default :8090/tasks). Embeds in the console at /console/app-view/research-agent/tasks (ADR 0057).

3. Biome linting

  • biome.json (recommended lint + 2-space/120 formatter), lint/lint:fix scripts, CI lint step.
  • Format existing sources to comply; fix an unused parameter.

Verification

  • Deploy: end-to-end on the auto/Falcon transport — deploy → 8 workers → instance → agent jobs complete, no null-transport crash.
  • Front-end (live node): the taskInbox surface lists the review task and serves the research-review form (keys question/finalAnswer/verdict/revisionNotes). Completing via the surface converges the loop: approvepublisharchiveCOMPLETED; reviserecord-revision → re-synthesize → fresh review.
  • npm run lint, npm run typecheck, and npm test (14/14) all pass.

jwulf and others added 2 commits August 21, 2026 11:55
Two independent defects stopped `npm run deploy` from running against a Nano
gateway:

1. Loader — the scripts ran `node --experimental-strip-types`, which cannot
   compile the TypeScript parameter property in `EffectClient`'s constructor
   (`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`), so it failed to parse. Switch the
   scripts to `--experimental-transform-types` and rewrite the constructor to an
   explicit field assignment so the source is also portable to strip-only tooling.

2. Transport — the worker-start null-transport race on the Falcon path
   (jwulf/nano-sdk-js#12, nanobpm/nano-ide#415), now fixed upstream. Adopt
   `@nanobpm/workflow` ^0.13.1 + `@nanobpm/nano-sdk` 1.2.7 (floored via
   `overrides`, as workflow only requires ^1.2.5), and make transport selectable
   via `CAMUNDA_TRANSPORT` (default `auto`).

Verified end-to-end on the Falcon path: deploy → 8 job workers start → instance
created → jobs (classify, search-web, search-kb, synthesize) complete, with no
null-transport crash. `npm run typecheck` passes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The `human(review)` step parks each instance on a user task that nothing in
`npm run deploy` completes, so the convergence loop never resolves. Add a thin
`@nanobpm/urban` app that reuses the built-in `taskInbox` surface (ADR 0026) to
act on it — no bespoke UI, no embedded engine, no duplicated workers:

- `nano.app.json` — manifest enabling `surfaces.taskInbox` and declaring the
  form under `models.forms`.
- `resources/forms/research-review.form` — form-js schema (read-only question +
  drafted answer, required approve/revise verdict, conditional revision notes);
  field keys match the `review` task I/O.
- `urban-app.ts` — `runFromEnv` deploys the form and mounts the surface against
  the same engine `npm run deploy` targets; `npm run app` script.

Verified end-to-end against a live node: the surface lists the task, renders the
form, and completing it converges the loop (approve → publish → archive; revise
→ record-revision → re-synthesize → fresh review).

Also add Biome for linting + formatting and make the project compliant:
- `biome.json` (recommended lint, 2-space/120 formatter), `lint`/`lint:fix`
  scripts, and a CI lint step.
- Format the existing sources to comply; fix an unused parameter.
- Correct the stale `--experimental-strip-types` prereq note (scripts use
  `--experimental-transform-types`).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jwulf jwulf changed the title fix: make npm run deploy run end-to-end (TS loader + Falcon worker-start race) fix+feat: deploy end-to-end, Urban human front-end for the review task, Biome linting Aug 21, 2026
@jwulf
jwulf requested a lite review from Copilot August 21, 2026 01:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes end-to-end deploy execution against a Nano gateway, adds an Urban-based human task inbox to complete the review user task (so the workflow can converge), and introduces Biome for linting/formatting with CI enforcement.

Changes:

  • Switch Node TS execution to --experimental-transform-types and adjust code to avoid unsupported TS syntax in runtime execution.
  • Add an Urban “taskInbox” app + form schema to act on the review task and complete the converge loop.
  • Add Biome configuration, scripts, and a CI lint step; reformat sources accordingly.

Reviewed changes

Copilot reviewed 19 out of 21 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
urban-app.ts New Urban app entrypoint to deploy forms and mount the taskInbox surface against the target engine.
tsconfig.json Includes urban-app.ts in TypeScript compilation.
test/worker.test.ts Formatting/import order updates to align with Biome and project style.
test/model.test.ts Import order update for Biome/style compliance.
test/agents.test.ts Import order/formatting updates for Biome/style compliance.
src/model/research-agent.ts Import split/ordering adjustments (type vs value) for style/TS hygiene.
src/main.ts Adds CAMUNDA_TRANSPORT support and updates deploy runtime wiring/formatting.
src/effect/worker.ts Formatting/type layout changes; refactors some call formatting for readability.
src/effect/Llm.ts Formatting change to satisfy lint/formatter rules.
src/effect/client.ts Removes TS parameter property in constructor (runtime TS transform compatibility).
src/agents/util.ts Formatting/refactor for lint/formatter compliance.
src/agents/search.ts Formatting/refactor for lint/formatter compliance.
src/agents/index.ts Import ordering adjustments.
scripts/emit-bpmn.ts Import ordering adjustment.
resources/forms/research-review.form New form schema to render/complete the review task with approve/revise flow.
README.md Documents transform-types runtime, lint scripts, and how to run the Urban task inbox.
package.json Adds Urban/Biome deps, new scripts (lint, lint:fix, app), and dependency overrides.
package-lock.json Locks new dependencies (Urban, Biome) and updated workflow/nano-sdk versions.
nano.app.json New Urban app manifest enabling taskInbox and declaring form models.
biome.json New Biome configuration for formatting/linting scope and rules.
.github/workflows/ci.yml Adds CI step to run Biome linting.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/main.ts Outdated
Comment thread package.json
- Validate CAMUNDA_TRANSPORT against the supported set (auto|falcon|rest)
  and fail fast with a clear error instead of coercing via a type assertion.
- Pin the @nanobpm/nano-sdk override to exact 1.2.7 so a fresh install
  cannot drift onto an untested minor and reintroduce the transport race.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Josh Wulf <josh@magikcraft.io>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 21 changed files in this pull request and generated no new comments.

@jwulf
jwulf merged commit 7a72e7f into main Aug 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants