Dashboard code editor

The dashboard Code tab (after Overview on a project) is a browser workspace for your agent source. Edit TypeScript or JavaScript files in a file tree, save the working tree, then Compile a new build and Deploy it to cloud — without a local @voicethere/cli upload for every small change. Deploy promotes that build if needed, then rolls it out. Seeded projects from agent templates start with template source already loaded.

Dashboard Code tab

  • Where: Project → Code in the sub-navigation (between Overview and Sessions).
  • Working tree: Mutable source per project — not the same as uploading a prebuilt agent.js from your laptop. Save updates the stored tree; compile produces a new build from that tree.
  • Entry file: The compile entry path (for example echo.ts) is set on the workspace and shown in the publish bar.

Root package.json

New projects created from agent templates are seeded with a root package.json that pins @voicethere/agent and includes npm scripts for local verify, upload, and related CLI workflows — the same manifest you can use on your laptop once the project is linked.

Existing workspaces without a root package.json are not auto-migrated. The Code tab shows a banner with Add package.json to insert a starter manifest into your unsaved tree (save when ready). You can also create package.json with New file.

Dashboard compile ignores scripts and strips @voicethere/agent and @types/node from the stored manifest — the runner image already provides those. Scripts remain useful for local @voicethere/cli and @voicethere/agent tooling.

File tree and Save

The left panel lists workspace files. Click a file to open it in the editor. Add or remove files from the tree; unsaved edits show a banner until you save.

  • Save writes the full tree to the platform (PUT source API). Only saved content is compiled or deployed.
  • Paths: Relative paths only — no .., no absolute paths. node_modules is never stored; dependencies resolve at compile time from package.json.
  • Per-file and total source size caps apply to your subscription tier (see below).

Editor IntelliSense

The Code tab always loads IntelliSense for @voicethere/agent and Node built-ins (process, Buffer, and related globals) as soon as you open the editor — no typecheck job required. Imports such as import { defineAgent }from "@voicethere/agent" resolve in Monaco before you save or run jobs.

Typecheck still matters for npm dependencies listed in your project package.json: it validates your saved source and refreshes dependency typings in the editor. Default agent and Node types are always present; typecheck adds or updates types for packages you declare.

Typecheck and compile

After saving, use Typecheck or Compile in the publish bar. Both run against your saved workspace:

  • Typecheck (typings mode) — validates types and refreshes dependency editor typings without producing a build.
  • Compile — bundles the entry file into agent.js, runs the same verify checks as CLI upload, and stores a new build. That is the dashboard equivalent of local npm run verify plus voicethere build upload. The browser never uploads a laptop dist/agent.js. Compile does not promote the build or change what runners are serving.

Compile is asynchronous. The UI polls job status and shows errors in the publish bar when typecheck or compile fails. Only one compile job runs per project at a time.

Publish and deploy

When compile succeeds, the publish bar shows the new build id. Click Deploy — you do not need a separate Promote step in the Code tab.

Deploy calls the same POST /deployments API as the CLI. The platform then:

  1. Promotes that compile’s build if it is not already the project’s active build (sets the control-plane active build, same as voicethere build promote).
  2. Rolls it out to cloud runners (drain mode by default).

That is the same outcome as voicethere deploy --wait, which also promotes when needed, then waits for rollout. The Code tab has no Promote button because Deploy already does that work.

GoalCode tabCLI
Store a new verified bundleCompilevoicethere build upload (after a local @voicethere/agent build)
Set the active build without rolling outNot in the Code tabvoicethere build promote
Promote (if needed) and roll out to runnersDeployvoicethere deploy --wait

Use standalone CLI promote when you want a human approval gate between storing a build and cluster rollout, or when you only need the control-plane active build (for example smoke tests that do not need runners yet). You can still promote or deploy from Overview or the CLI if you prefer that workflow.

Environment variables, secrets, and runner settings are not changed by the Code tab — redeploy applies the new bundle only.

npm dependencies

Public npm is always available in the dashboard Code tab — there is no toggle. Add a package.json with a dependencies object; compile installs from the public npm registry using semver ranges (for example ^1.2.3).

  • Allowed: package names on the public registry with semver specs — no file:, git:, workspace:, or custom registry URLs.
  • Allowed in package.json: npm scripts for local CLI workflows (compile ignores them). Not allowed: overrides or resolutions.
  • Per-tier caps on dependency count and compiled output size apply at compile time.

For custom registries, native addons, or packages outside the dashboard sandbox, build locally with @voicethere/cli and voicethere build upload — see Quickstart.

Source size limits

Stored UTF-8 source in the Code tab is capped per subscription tier ( node_modules is never counted toward source size):

PlanMax source size
Free10 MB
Budget / Budget+25 MB
Advanced / Ultimate50 MB

Save and compile reject trees that exceed your tier limit or per-file caps. Upgrade the project subscription or trim files before retrying.

Typings pack limits

IntelliSense for @voicethere/agent and Node (@types/node) is always loaded when you open the Code tab. Those default typings are not stored in your project, not part of the JSON pack below, and do not count toward the per-plan size cap.

After Typecheck or Compile, the platform stores a separate JSON pack of dependency .d.ts files collected from npm packages in your package.json. Monaco merges that pack with the always-on agent and Node types. The stored pack is not your saved source tree and not the compiled agent.js.

PlanMax typings pack size
Free10 MB
Budget / Budget+25 MB
Advanced / Ultimate50 MB

Typecheck or compile fails when the collected dependency typings JSON exceeds your tier cap. Trim npm dependencies or upgrade the project subscription before retrying.

Subscriptions comparison

The public pricing and subscriptions comparison table include a Code editor section with Code editor source size (Free 10 MB, Budget/Budget+ 25 MB, Advanced/Ultimate 50 MB) and Code editor typings pack (Free 10 MB, Budget/Budget+ 25 MB, Advanced/Ultimate 50 MB) rows for each tier.

CLI for local builds

The Code tab does not replace the CLI for every workflow. package.json scripts such as upload still run voicethere build upload against a local dist/agent.js — that path is for laptop or CI bundles, not the dashboard Compile button.

  • Custom npm registries and native modules — use local @voicethere/agent build and CLI upload, then voicethere deploy --wait (promote is included).
  • Large repos or CI pipelines — keep using voicethere build validate, voicethere build upload, optional voicethere build promote, and voicethere deploy --wait.
  • Blank projects — create locally or seed a template in the dashboard, then edit in Code or copy template sources from Agent templates.

Related

← All documentation