integrate thin Zopu MVP lanes (#14) #16

Merged
puter merged 21 commits from puter/issue-14-integration into feat/projects-backend 2026-07-23 21:51:01 +00:00
Owner

Refs #14 and #4.

Integrated thin Zopu MVP lane from feat/projects-backend in dependency order:

  1. PR #10 / issue #6: authenticated project issue request and Signal dispatch.
  2. PR #15 / issue #7: isolated AgentOS repository checkout and work branch.
  3. PR #12 / issue #5: verified Git commit/push/Gitea PR lifecycle, merge remains manual.
  4. PR #11 / issue #8: web project-loop workspace with progress, verification, activity, and review surfaces.
  5. PR #13 / issue #9: secret-safe MiniMax M3 worker plus GLM-5.2 planning/review smoke harness.

Integration repairs:

  • Preserved Hono 4.12.31 and all primitive package exports during conflict resolution.
  • Kept Flue's provider-owned /workspace adapter root while moving the coding agent and Git lifecycle action to /workspace/repository; control artifacts remain under /workspace/control.
  • Kept Effect v4 domain validation, transitions, lifecycle decisions, and errors in @code/primitives; Convex/Flue/AgentOS/Gitea code remains adapter-side.
  • Refreshed the root Bun lockfile so the smoke script resolves workspace packages from the root.
  • Resolved the duplicate ProjectIssueStatus barrel export by using the issue primitive as the canonical status type.

Verification matrix:

  • PASS: @code/primitives tests: 41 passed; typecheck passed.
  • PASS: focused backend project/lifecycle tests: 8 passed with test env; backend and root bun run check-types passed across all 9 workspaces.
  • PASS: Gitea adapter tests: 2 passed; @code/agents typecheck passed.
  • PASS: web typecheck and production build with non-placeholder local VITE_* values.
  • PASS: @code/env typecheck, smoke script TypeScript check, changed-file Ultracite checks.
  • PASS: Flue production build and daemon production compile.
  • PASS: smoke missing-env and fake-secret runs return contract-blocked exit 2 without leaking supplied secrets.
  • PASS: integration web dev server served HTTP 200 on an alternate local port.

Explicit blockers:

  • Full backend suite is 35 passed / 1 failed because the pre-existing signal test reverses message IDs while the signal primitive requires non-decreasing timestamps; signal code/tests are unchanged by this integration.
  • Root bun run check remains blocked by pre-existing vendored repos/effect* formatting and missing @effect/oxc/oxlint resolution.
  • Root bun run build remains blocked by the existing Vite+ recursive --filter '!desktop' propagation; the web production build and daemon compile pass directly.
  • Live Flue dev cannot initialize with this worktree because no .env/reachable Convex persistence target is present; local Convex 3210, CPA credentials, and an AgentOS daemon are unavailable. The existing main-workspace web/Flue endpoints were only probed read-only.
  • The incoming issue #7 lane reports an upstream @agentos-software/git@0.3.3 executable-mode failure in AgentOS VMs; the real clone/branch smoke therefore remains runtime-blocked upstream.
  • The existing public repository import action still intentionally returns PublicGit import is not yet wired to the daemon adapter; the web connect control cannot create a new project until that pre-existing daemon lane lands. The project-request route also has no durable request-id key yet, so retry/idempotency hardening remains follow-up work.

Issue #17 mobile integration

Integrated origin/codex/projects-signals-mobile into this same branch in commit 9d54470 and completed the live-loop wiring in fb438ba; no competing PR was opened.

Reviewed integration choices:

  • Kept the incoming mobile workspace and AI Elements components as the mobile UI source, while preserving the desktop project-loop at /dashboard and authenticated routes.
  • Preserved the newer backend, AgentOS checkout/work-branch, Gitea lifecycle, Flue/daemon, and smoke contracts; the incoming public-Git action wiring was not activated, so the existing intentional PublicGit import is not yet wired to the daemon adapter behavior remains explicit.
  • Regenerated/retained the Convex API artifact needed by the existing signals, conversationMessages, and projectStore modules; refreshed the lockfile from the reviewed manifests with bun install.
  • Moved mobile status labels, progress, and next actions onto @code/primitives/project-work; mobile event rows now surface persisted per-issue Gitea PR number/URL.

Functional mobile wiring:

  • Personal organization and organization-scoped Flue chat use the authenticated organization hook.
  • Project selector updates the real project workspace selection; empty/project management routes to the existing desktop connect flow.
  • Project-scoped Signals render live and can become durable project issues; organization-wide Signals do not expose an invalid create-from-Signal action.
  • Explicit issue creation calls api.projectIssues.create; start/retry calls the existing begin plus Flue dispatch and preserves dispatch failure handling.
  • Work cards show primitive-derived status/progress, artifacts/activity counts, and persisted Gitea review actions from project events.

Issue #17 verification matrix:

  • PASS: bun install from the reviewed manifests.
  • PASS: primitives typecheck and focused project-work tests (3 passed); existing full primitive suite remains green from the prior integration.
  • PASS: web/UI/backend package typechecks; root bun run check-types passed all 11 workspaces.
  • PASS: web focused tests (5 passed), changed-file Ultracite, direct production web build with non-placeholder VITE_* values, and daemon production compile.
  • PASS: backend suite with test env: 35 passed; one pre-existing signals.test.ts case still fails because it intentionally reverses message IDs while the primitive requires non-decreasing source timestamps.
  • PASS: local web route smoke on port 5177 with /, /dashboard, /login, /work, and /chat returning HTTP 200; no authenticated state was claimed.
  • PASS: smoke missing-env and fake-secret contract runs exit 2 without leaking supplied secrets.
  • BLOCKED: authenticated local web flow and smoke:zopu --run; this worktree has no smoke access token, no local .env, no local Convex/Flue persistence, no CPA credentials, and no AgentOS daemon. Read-only main-workspace probes reached remote Convex/web endpoints; Flue history returned the expected 404 route response, but this is not an authenticated end-to-end pass.
  • BLOCKED/PRE-EXISTING: root bun run check still fails in vendored repos/effect* formatting and missing @effect/oxc/oxlint; root bun run build still fails from Vite+ recursive --filter '!desktop' propagation, while direct web/daemon builds pass.
Refs #14 and #4. Integrated thin Zopu MVP lane from `feat/projects-backend` in dependency order: 1. PR #10 / issue #6: authenticated project issue request and Signal dispatch. 2. PR #15 / issue #7: isolated AgentOS repository checkout and work branch. 3. PR #12 / issue #5: verified Git commit/push/Gitea PR lifecycle, merge remains manual. 4. PR #11 / issue #8: web project-loop workspace with progress, verification, activity, and review surfaces. 5. PR #13 / issue #9: secret-safe MiniMax M3 worker plus GLM-5.2 planning/review smoke harness. Integration repairs: - Preserved Hono 4.12.31 and all primitive package exports during conflict resolution. - Kept Flue's provider-owned `/workspace` adapter root while moving the coding agent and Git lifecycle action to `/workspace/repository`; control artifacts remain under `/workspace/control`. - Kept Effect v4 domain validation, transitions, lifecycle decisions, and errors in `@code/primitives`; Convex/Flue/AgentOS/Gitea code remains adapter-side. - Refreshed the root Bun lockfile so the smoke script resolves workspace packages from the root. - Resolved the duplicate `ProjectIssueStatus` barrel export by using the issue primitive as the canonical status type. Verification matrix: - PASS: `@code/primitives` tests: 41 passed; typecheck passed. - PASS: focused backend project/lifecycle tests: 8 passed with test env; backend and root `bun run check-types` passed across all 9 workspaces. - PASS: Gitea adapter tests: 2 passed; `@code/agents` typecheck passed. - PASS: web typecheck and production build with non-placeholder local `VITE_*` values. - PASS: `@code/env` typecheck, smoke script TypeScript check, changed-file Ultracite checks. - PASS: Flue production build and daemon production compile. - PASS: smoke missing-env and fake-secret runs return contract-blocked exit 2 without leaking supplied secrets. - PASS: integration web dev server served HTTP 200 on an alternate local port. Explicit blockers: - Full backend suite is 35 passed / 1 failed because the pre-existing signal test reverses message IDs while the signal primitive requires non-decreasing timestamps; signal code/tests are unchanged by this integration. - Root `bun run check` remains blocked by pre-existing vendored `repos/effect*` formatting and missing `@effect/oxc/oxlint` resolution. - Root `bun run build` remains blocked by the existing Vite+ recursive `--filter '!desktop'` propagation; the web production build and daemon compile pass directly. - Live Flue dev cannot initialize with this worktree because no `.env`/reachable Convex persistence target is present; local Convex `3210`, CPA credentials, and an AgentOS daemon are unavailable. The existing main-workspace web/Flue endpoints were only probed read-only. - The incoming issue #7 lane reports an upstream `@agentos-software/git@0.3.3` executable-mode failure in AgentOS VMs; the real clone/branch smoke therefore remains runtime-blocked upstream. - The existing public repository import action still intentionally returns `PublicGit import is not yet wired to the daemon adapter`; the web connect control cannot create a new project until that pre-existing daemon lane lands. The project-request route also has no durable request-id key yet, so retry/idempotency hardening remains follow-up work. ## Issue #17 mobile integration Integrated `origin/codex/projects-signals-mobile` into this same branch in commit `9d54470` and completed the live-loop wiring in `fb438ba`; no competing PR was opened. Reviewed integration choices: - Kept the incoming mobile workspace and AI Elements components as the mobile UI source, while preserving the desktop project-loop at `/dashboard` and authenticated routes. - Preserved the newer backend, AgentOS checkout/work-branch, Gitea lifecycle, Flue/daemon, and smoke contracts; the incoming public-Git action wiring was not activated, so the existing intentional `PublicGit import is not yet wired to the daemon adapter` behavior remains explicit. - Regenerated/retained the Convex API artifact needed by the existing `signals`, `conversationMessages`, and `projectStore` modules; refreshed the lockfile from the reviewed manifests with `bun install`. - Moved mobile status labels, progress, and next actions onto `@code/primitives/project-work`; mobile event rows now surface persisted per-issue Gitea PR number/URL. Functional mobile wiring: - Personal organization and organization-scoped Flue chat use the authenticated organization hook. - Project selector updates the real project workspace selection; empty/project management routes to the existing desktop connect flow. - Project-scoped Signals render live and can become durable project issues; organization-wide Signals do not expose an invalid create-from-Signal action. - Explicit issue creation calls `api.projectIssues.create`; start/retry calls the existing `begin` plus Flue dispatch and preserves dispatch failure handling. - Work cards show primitive-derived status/progress, artifacts/activity counts, and persisted Gitea review actions from project events. Issue #17 verification matrix: - PASS: `bun install` from the reviewed manifests. - PASS: primitives typecheck and focused `project-work` tests (3 passed); existing full primitive suite remains green from the prior integration. - PASS: web/UI/backend package typechecks; root `bun run check-types` passed all 11 workspaces. - PASS: web focused tests (5 passed), changed-file Ultracite, direct production web build with non-placeholder `VITE_*` values, and daemon production compile. - PASS: backend suite with test env: 35 passed; one pre-existing `signals.test.ts` case still fails because it intentionally reverses message IDs while the primitive requires non-decreasing source timestamps. - PASS: local web route smoke on port 5177 with `/`, `/dashboard`, `/login`, `/work`, and `/chat` returning HTTP 200; no authenticated state was claimed. - PASS: smoke missing-env and fake-secret contract runs exit 2 without leaking supplied secrets. - BLOCKED: authenticated local web flow and `smoke:zopu --run`; this worktree has no smoke access token, no local `.env`, no local Convex/Flue persistence, no CPA credentials, and no AgentOS daemon. Read-only main-workspace probes reached remote Convex/web endpoints; Flue history returned the expected 404 route response, but this is not an authenticated end-to-end pass. - BLOCKED/PRE-EXISTING: root `bun run check` still fails in vendored `repos/effect*` formatting and missing `@effect/oxc/oxlint`; root `bun run build` still fails from Vite+ recursive `--filter '!desktop'` propagation, while direct web/daemon builds pass.
puter added 10 commits 2026-07-23 21:11:30 +00:00
# Conflicts:
#	bun.lock
#	packages/agents/package.json
#	packages/primitives/package.json
#	packages/primitives/src/index.ts
# Conflicts:
#	bun.lock
#	packages/agents/package.json
#	packages/agents/src/agents/project-manager.ts
#	packages/backend/convex/agentWorkspace.ts
# Conflicts:
#	apps/web/src/components/projects/project-workspace-page.tsx
#	packages/primitives/package.json
#	packages/primitives/src/index.ts
# Conflicts:
#	packages/primitives/package.json
puter added 11 commits 2026-07-23 21:48:12 +00:00
puter merged commit b5c40755cf into feat/projects-backend 2026-07-23 21:51:01 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: puter/zopu-code#16
No description provided.