fix(deploy): a source deploy of a private service no longer exits 1

Merged
V0
19h ago
+33-7

What

insta deploy <dir> (archive/source lane) exits 1 with "the deploy finished but the platform returned no image or URL" after a successful deploy of a private-only HTTP service. Two customer tickets (SUP2-536, SUP2-543): both deploys were live, new image active, CLI said failure.

Cause: the platform's insta-compute adapter deliberately returns url: '' for a service with public access off (repos/platform/src/adapters/insta-compute.ts, privateOnly). The poller in src/deploy-archive.ts only accepted an empty URL for --port 0 or a returned endpointHost.

Change

  • src/deploy-archive.ts: an empty url is accepted. Still rejected: missing/empty image, non-string url, and a deploy that asked for a v6 endpoint (--endpoint tcp|udp|tcp+udp) but got neither a URL nor a host.
  • src/commands/deploy.ts deployedTarget: with no URL, prints (no URL: a worker) for port 0, (no public URL: a private service — ...) for a real port, and "a worker or a private service" when a redeploy passed no --port. The image lane uses the same function, so it stops calling private services workers too.
  • Tests: private HTTP case accepted; missing image / non-string url still rejected; tcp control now passes endpoint: 'tcp'; three deployedTarget cases.

Testing

npm run typecheck, npx vitest run: 106 files, 2248 tests pass.

Handoff

Intent: Stop the CLI from reporting a successful private-service source deploy as a failure (exit 1).
Rejected: Platform-side change to return a public:false/private-host hint — the CLI can be fixed alone; a hint can follow.
Constraints: An empty URL must still be refused for a v6-endpoint deploy with no host, and a missing image must still fail.
Known gaps: The result line doesn't print the private host itself (the poll response doesn't carry it).

šŸ¤– Generated with Claude Code