@usenaive-sdk/cli 0.12.5 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +69 -6
  2. package/dist/client.d.ts +48 -0
  3. package/dist/client.js +199 -27
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/aeo.js +58 -23
  6. package/dist/commands/aeo.js.map +1 -1
  7. package/dist/commands/app-data.js +29 -11
  8. package/dist/commands/app-data.js.map +1 -1
  9. package/dist/commands/approvals.js +142 -9
  10. package/dist/commands/approvals.js.map +1 -1
  11. package/dist/commands/apps.d.ts +7 -0
  12. package/dist/commands/apps.js +255 -18
  13. package/dist/commands/apps.js.map +1 -1
  14. package/dist/commands/audio.d.ts +9 -0
  15. package/dist/commands/audio.js +391 -0
  16. package/dist/commands/audio.js.map +1 -0
  17. package/dist/commands/auth.d.ts +1 -0
  18. package/dist/commands/auth.js +47 -19
  19. package/dist/commands/auth.js.map +1 -1
  20. package/dist/commands/billing.js +9 -9
  21. package/dist/commands/billing.js.map +1 -1
  22. package/dist/commands/brain.js +813 -54
  23. package/dist/commands/brain.js.map +1 -1
  24. package/dist/commands/browser.js +8 -8
  25. package/dist/commands/browser.js.map +1 -1
  26. package/dist/commands/business.js +117 -16
  27. package/dist/commands/business.js.map +1 -1
  28. package/dist/commands/clone.js +8 -4
  29. package/dist/commands/clone.js.map +1 -1
  30. package/dist/commands/companies.d.ts +8 -0
  31. package/dist/commands/companies.js +137 -47
  32. package/dist/commands/companies.js.map +1 -1
  33. package/dist/commands/company-data.d.ts +2 -0
  34. package/dist/commands/company-data.js +168 -0
  35. package/dist/commands/company-data.js.map +1 -0
  36. package/dist/commands/compute.js +295 -18
  37. package/dist/commands/compute.js.map +1 -1
  38. package/dist/commands/connections.d.ts +6 -0
  39. package/dist/commands/connections.js +42 -2
  40. package/dist/commands/connections.js.map +1 -1
  41. package/dist/commands/domains.js +63 -19
  42. package/dist/commands/domains.js.map +1 -1
  43. package/dist/commands/ecommerce.js +19 -9
  44. package/dist/commands/ecommerce.js.map +1 -1
  45. package/dist/commands/email.js +56 -9
  46. package/dist/commands/email.js.map +1 -1
  47. package/dist/commands/formation.js +5 -5
  48. package/dist/commands/formation.js.map +1 -1
  49. package/dist/commands/identity.js +4 -3
  50. package/dist/commands/identity.js.map +1 -1
  51. package/dist/commands/images.js +86 -12
  52. package/dist/commands/images.js.map +1 -1
  53. package/dist/commands/init.d.ts +3 -0
  54. package/dist/commands/init.js +44 -36
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/jobs.js +1 -0
  57. package/dist/commands/jobs.js.map +1 -1
  58. package/dist/commands/legacy-auth.d.ts +27 -0
  59. package/dist/commands/legacy-auth.js +64 -0
  60. package/dist/commands/legacy-auth.js.map +1 -0
  61. package/dist/commands/llm.js +14 -1
  62. package/dist/commands/llm.js.map +1 -1
  63. package/dist/commands/login.js +2 -0
  64. package/dist/commands/login.js.map +1 -1
  65. package/dist/commands/logout.d.ts +7 -0
  66. package/dist/commands/logout.js +55 -0
  67. package/dist/commands/logout.js.map +1 -0
  68. package/dist/commands/media.js +3 -3
  69. package/dist/commands/media.js.map +1 -1
  70. package/dist/commands/mobile.d.ts +2 -0
  71. package/dist/commands/mobile.js +42 -1
  72. package/dist/commands/mobile.js.map +1 -1
  73. package/dist/commands/payments.js +1 -1
  74. package/dist/commands/people.d.ts +2 -0
  75. package/dist/commands/people.js +197 -0
  76. package/dist/commands/people.js.map +1 -0
  77. package/dist/commands/phone.js +40 -83
  78. package/dist/commands/phone.js.map +1 -1
  79. package/dist/commands/projects.d.ts +13 -0
  80. package/dist/commands/projects.js +220 -0
  81. package/dist/commands/projects.js.map +1 -0
  82. package/dist/commands/register.js +13 -5
  83. package/dist/commands/register.js.map +1 -1
  84. package/dist/commands/sandbox.d.ts +2 -0
  85. package/dist/commands/sandbox.js +558 -0
  86. package/dist/commands/sandbox.js.map +1 -0
  87. package/dist/commands/search.js +27 -13
  88. package/dist/commands/search.js.map +1 -1
  89. package/dist/commands/seo.js +16 -8
  90. package/dist/commands/seo.js.map +1 -1
  91. package/dist/commands/sessions.d.ts +6 -0
  92. package/dist/commands/sessions.js +109 -0
  93. package/dist/commands/sessions.js.map +1 -0
  94. package/dist/commands/social-data.d.ts +2 -0
  95. package/dist/commands/social-data.js +245 -0
  96. package/dist/commands/social-data.js.map +1 -0
  97. package/dist/commands/social.js +9 -7
  98. package/dist/commands/social.js.map +1 -1
  99. package/dist/commands/tasks.js +9 -0
  100. package/dist/commands/tasks.js.map +1 -1
  101. package/dist/commands/teams.d.ts +69 -0
  102. package/dist/commands/teams.js +503 -0
  103. package/dist/commands/teams.js.map +1 -0
  104. package/dist/commands/up.d.ts +150 -0
  105. package/dist/commands/up.js +465 -15
  106. package/dist/commands/up.js.map +1 -1
  107. package/dist/commands/usage.js +15 -4
  108. package/dist/commands/usage.js.map +1 -1
  109. package/dist/commands/use.d.ts +9 -0
  110. package/dist/commands/use.js +76 -11
  111. package/dist/commands/use.js.map +1 -1
  112. package/dist/commands/users.d.ts +8 -0
  113. package/dist/commands/users.js +28 -9
  114. package/dist/commands/users.js.map +1 -1
  115. package/dist/commands/vault.js +31 -1
  116. package/dist/commands/vault.js.map +1 -1
  117. package/dist/commands/verification.js +1 -1
  118. package/dist/commands/verification.js.map +1 -1
  119. package/dist/commands/video.js +118 -19
  120. package/dist/commands/video.js.map +1 -1
  121. package/dist/commands/wallet.js +3 -3
  122. package/dist/commands/wallet.js.map +1 -1
  123. package/dist/commands/whoami.js +17 -1
  124. package/dist/commands/whoami.js.map +1 -1
  125. package/dist/config.d.ts +16 -1
  126. package/dist/config.js +15 -1
  127. package/dist/config.js.map +1 -1
  128. package/dist/index.d.ts +2 -1
  129. package/dist/index.js +250 -24
  130. package/dist/index.js.map +1 -1
  131. package/dist/lib/brain-select.d.ts +193 -0
  132. package/dist/lib/brain-select.js +403 -0
  133. package/dist/lib/brain-select.js.map +1 -0
  134. package/dist/lib/cli-validation.d.ts +12 -0
  135. package/dist/lib/cli-validation.js +46 -0
  136. package/dist/lib/cli-validation.js.map +1 -0
  137. package/dist/lib/deprecation.d.ts +158 -0
  138. package/dist/lib/deprecation.js +140 -0
  139. package/dist/lib/deprecation.js.map +1 -0
  140. package/dist/lib/duration.d.ts +8 -0
  141. package/dist/lib/duration.js +11 -0
  142. package/dist/lib/duration.js.map +1 -0
  143. package/dist/lib/http-response.d.ts +11 -0
  144. package/dist/lib/http-response.js +96 -0
  145. package/dist/lib/http-response.js.map +1 -0
  146. package/dist/lib/pricing.d.ts +132 -0
  147. package/dist/lib/pricing.js +148 -0
  148. package/dist/lib/pricing.js.map +1 -0
  149. package/dist/lib/stream-frames.d.ts +114 -0
  150. package/dist/lib/stream-frames.js +169 -0
  151. package/dist/lib/stream-frames.js.map +1 -0
  152. package/dist/lib/teams-catalog.d.ts +141 -0
  153. package/dist/lib/teams-catalog.js +765 -0
  154. package/dist/lib/teams-catalog.js.map +1 -0
  155. package/dist/lib/unknown-command.d.ts +55 -1
  156. package/dist/lib/unknown-command.js +113 -0
  157. package/dist/lib/unknown-command.js.map +1 -1
  158. package/dist/output.d.ts +127 -5
  159. package/dist/output.js +189 -12
  160. package/dist/output.js.map +1 -1
  161. package/package.json +3 -3
  162. package/dist/commands/link.d.ts +0 -3
  163. package/dist/commands/link.js +0 -91
  164. package/dist/commands/link.js.map +0 -1
@@ -32,25 +32,63 @@ function collectWebFiles(root) {
32
32
  return out;
33
33
  }
34
34
  const CONFIG_CANDIDATES = ["naive.config.ts", "naive.config.js", "naive.config.mjs", "naive.config.json"];
35
+ /**
36
+ * A module-resolution failure, as opposed to the config refusing itself.
37
+ *
38
+ * `ERR_MODULE_NOT_FOUND` / `MODULE_NOT_FOUND` is what an absent dependency
39
+ * raises. Matched on the CODE rather than the message, because a define-time
40
+ * refusal is free to mention a package name in its prose and must not be
41
+ * misread as a missing install.
42
+ */
43
+ function isMissingModule(e) {
44
+ const code = e?.code;
45
+ return code === "ERR_MODULE_NOT_FOUND" || code === "MODULE_NOT_FOUND";
46
+ }
35
47
  /** Evaluate naive.config.{ts,js,json} to its full object (the whole NaiveConfig). */
36
48
  async function loadConfig(path) {
37
49
  if (path.endsWith(".json")) {
38
50
  try {
39
- return JSON.parse(readFileSync(path, "utf8"));
51
+ return { ok: true, config: JSON.parse(readFileSync(path, "utf8")) };
40
52
  }
41
- catch {
42
- return null;
53
+ catch (e) {
54
+ // A committed .json needs no toolchain, so a parse failure is only ever
55
+ // the file's own fault.
56
+ return { ok: false, reason: "invalid", message: e instanceof Error ? e.message : String(e) };
43
57
  }
44
58
  }
59
+ let jiti;
45
60
  try {
46
61
  const { createJiti } = await import("jiti");
47
- const jiti = createJiti(pathToFileURL(path).href);
62
+ jiti = createJiti(pathToFileURL(path).href);
63
+ }
64
+ catch (e) {
65
+ return {
66
+ ok: false,
67
+ reason: "unloadable",
68
+ message: e instanceof Error ? e.message : String(e),
69
+ };
70
+ }
71
+ try {
48
72
  const mod = (await jiti.import(path));
49
73
  const cfg = mod?.default ?? mod;
50
- return cfg && typeof cfg === "object" ? cfg : null;
74
+ if (!cfg || typeof cfg !== "object") {
75
+ return {
76
+ ok: false,
77
+ reason: "invalid",
78
+ message: `${path} evaluated to ${cfg === undefined ? "undefined" : typeof cfg}. It must \`export default defineConfig({...})\`.`,
79
+ };
80
+ }
81
+ return { ok: true, config: cfg };
51
82
  }
52
- catch {
53
- return null; // jiti/@usenaive-sdk/iac not resolvable — fall back to regex extraction
83
+ catch (e) {
84
+ // The config itself threw. Almost always a NAMED define-time refusal, whose
85
+ // message is written to be read by the person who wrote the config — so it
86
+ // is surfaced verbatim rather than replaced with a guess.
87
+ return {
88
+ ok: false,
89
+ reason: isMissingModule(e) ? "unloadable" : "invalid",
90
+ message: e instanceof Error ? e.message : String(e),
91
+ };
54
92
  }
55
93
  }
56
94
  /** Extract top-level keys inside a named object block, e.g. agentProfiles: { a, b }. */
@@ -92,6 +130,233 @@ function extractKeys(source, section) {
92
130
  function findConfig() {
93
131
  return CONFIG_CANDIDATES.map((c) => join(process.cwd(), c)).find(existsSync) ?? null;
94
132
  }
133
+ /**
134
+ * The brain half of the report, or undefined when the config declared none.
135
+ *
136
+ * Exported for the same reason it exists: `naive up` printed `applied: true` and
137
+ * said NOTHING about brains, so a config that declared two of them looked
138
+ * identical to a config that declared none. `--plan` showed them (it prints the
139
+ * whole plan); apply did not. A provisioned thing that is not reported is the
140
+ * same silence as an unprovisioned one, one level up.
141
+ *
142
+ * 🔴 AND `unpersisted` IS PART OF THE REPORT, NOT AN EXTRA. The apply path
143
+ * computed the accept-and-drop list and this projection threw it away, so
144
+ * `naive up --plan` told the user which declared brain keys have no column and
145
+ * plain `naive up` — the command people actually run — did not. That is the same
146
+ * defect one level down: `packages/api/src/services/deployment-brains.ts`'s own
147
+ * header calls accept-and-drop "the exact defect this file exists to remove", and
148
+ * a report only the dry run prints is a report most operators never see.
149
+ */
150
+ export function brainReport(brains) {
151
+ if (!brains || !brains.declared_in)
152
+ return undefined;
153
+ const unpersisted = brains.unpersisted ?? {};
154
+ return {
155
+ declared_in: brains.declared_in,
156
+ created: (brains.created ?? []).map((b) => b.name),
157
+ converged: (brains.converged ?? []).map((b) => b.name),
158
+ default: brains.default?.name ?? null,
159
+ retained: brains.retained_undeclared ?? [],
160
+ ...(Object.keys(unpersisted).length > 0 ? { unpersisted } : {}),
161
+ ...(brains.notes?.length ? { notes: brains.notes } : {}),
162
+ };
163
+ }
164
+ /**
165
+ * The per-team accept-and-drop warning, one line per team that declared any.
166
+ *
167
+ * The data has been on the wire the whole time (`plan.teams[].unconsumed`,
168
+ * computed by `unconsumedTeamKeys` in packages/api) and `naive up` printed none
169
+ * of it — `team({ governance: {…} })` applied green and enforced nothing, with
170
+ * nothing anywhere for the author to notice. Printed on the PLAN and on the
171
+ * APPLY, because a report only the dry run shows is a report most operators
172
+ * never see.
173
+ */
174
+ export function unconsumedWarnings(teams) {
175
+ return teams
176
+ .filter((t) => (t.unconsumed ?? []).length > 0)
177
+ .map((t) => `⚠ team "${t.name}" DECLARED AND UNREAD: ${t.unconsumed.join(", ")} — carried to the ` +
178
+ "control plane and consumed by NOTHING. Do not treat these as in force. " +
179
+ "`defineProject` refuses them at define time; remove them, or keep the config on " +
180
+ "`defineConfig` (lenient) until a consumer lands.");
181
+ }
182
+ /**
183
+ * ONE deprecation line when the config still uses the legacy ECS surface —
184
+ * `runtime.pool()` declarations, an agent-level `runtime: "<pool>"` string, or
185
+ * `systems:`. All three keep working indefinitely; the line names what was
186
+ * found and where new configs should author instead.
187
+ */
188
+ export function legacyDeprecationNotice(config) {
189
+ const found = [];
190
+ const pools = Object.keys(config.runtime ?? {});
191
+ if (pools.length > 0)
192
+ found.push(`runtime.pool() declarations (${pools.join(", ")})`);
193
+ const pinned = Object.entries(config.agents ?? {})
194
+ .filter(([, a]) => typeof a?.runtime === "string")
195
+ .map(([name]) => name);
196
+ if (pinned.length > 0)
197
+ found.push(`agent-level runtime: "<pool>" strings (${pinned.join(", ")})`);
198
+ const systems = Object.keys(config.systems ?? {});
199
+ if (systems.length > 0)
200
+ found.push(`systems: (${systems.join(", ")})`);
201
+ if (found.length === 0)
202
+ return null;
203
+ return (`DEPRECATED surface in use — ${found.join("; ")}. These keep working indefinitely; new configs ` +
204
+ "author `defineProject` with `teams:` on `runtime.durable()` (or `runtime.hermes()` for the hosted lane).");
205
+ }
206
+ /**
207
+ * ONE rename line when the config declares `agents:`. Separate from the legacy
208
+ * line above on purpose: `runtime.pool()` / `systems:` are a deprecated
209
+ * SURFACE, while `agents:` is a deprecated SPELLING — the block compiles to
210
+ * byte-for-byte what `kits:` compiles to, so the honest notice is "rename",
211
+ * not "migrate". A notice, never a refusal, on both entrypoints.
212
+ */
213
+ export function agentsRenameNotice(config) {
214
+ const names = Object.keys(config.agents ?? {});
215
+ if (names.length === 0)
216
+ return null;
217
+ return (`DEPRECATED spelling in use — \`agents:\` (${names.join(", ")}). It keeps working indefinitely ` +
218
+ "and compiles to exactly what `kits:` compiles to; rename the block to `kits:` (and `agent()` " +
219
+ "entries to `kit()`) — an account kit is instantiated per child project via " +
220
+ "`naive.forProject(p).forChild(id).provision(\"<kit>\")`.");
221
+ }
222
+ /**
223
+ * The operator credential the DURABLE RUNTIME issued, read from the ENVIRONMENT.
224
+ *
225
+ * Never from `naive.config.ts`, and that is the whole point rather than a style
226
+ * choice. The config is committed, so a credential in it is a credential in git —
227
+ * and, more importantly, the config is the one thing that must not by itself be
228
+ * able to change where a tenant runs. Pointing a tenant at the durable runtime
229
+ * overwrites its `sidecar_url` and `container_auth_token` and nulls its
230
+ * `instance_id`, none of which is stashed anywhere. Requiring a second, separate
231
+ * act means an edit alone can never do it.
232
+ *
233
+ * `NAIVE_DURABLE_CREDENTIAL_<TEAM>` names one team; `NAIVE_DURABLE_CREDENTIAL`
234
+ * covers them all. Neither is ever printed, and the API never echoes it back.
235
+ */
236
+ export function durableCredentialEnvVar(team) {
237
+ return `NAIVE_DURABLE_CREDENTIAL_${team.toUpperCase().replace(/[^A-Z0-9]+/g, "_")}`;
238
+ }
239
+ function readDurableCredentials(teams) {
240
+ const out = {};
241
+ const all = process.env.NAIVE_DURABLE_CREDENTIAL;
242
+ if (all)
243
+ out["*"] = all;
244
+ for (const team of teams) {
245
+ const secret = process.env[durableCredentialEnvVar(team)];
246
+ if (secret)
247
+ out[team] = secret;
248
+ }
249
+ return Object.keys(out).length > 0 ? out : undefined;
250
+ }
251
+ /**
252
+ * The recovery for ONE refused team — a command that EXISTS, or none.
253
+ *
254
+ * 🔴 `naive runtime migrate` IS NOT A COMMAND, AND THIS USED TO PRINT IT.
255
+ * Every refusal here used to emit
256
+ * `naive runtime migrate --tenant … --to durable --credential-from <file>`.
257
+ * Measured on the built CLI: `naive runtime migrate --tenant <id> --to hermes`
258
+ * answers
259
+ * `{"code":"cli_outdated","message":"Unknown command 'runtime'. Your naive CLI
260
+ * is v0.12.4; this command may exist in a newer version."}` — and it exists in
261
+ * NO version: `packages/cli/src/index.ts` registers no `runtime` group at all.
262
+ * So an operator whose apply was refused was handed a command that tells them to
263
+ * upgrade, forever. A next_step that cannot be run is worse than none, because it
264
+ * ends the search.
265
+ *
266
+ * The two cases are genuinely different and are answered differently:
267
+ *
268
+ * · `runtime_credential_required` — there IS a procedure, it works today, and
269
+ * it is the one this command already implements: put the operator credential
270
+ * the durable runtime issued in the environment and re-run. Never in
271
+ * `naive.config.ts`, which is committed.
272
+ * · everything else (`runtime_migration_requires_explicit_opt_in`,
273
+ * `runtime_claim_in_flight`, `runtime_placement_lost_race`,
274
+ * `runtime_not_configured`, `runtime_state_unknown`) — there is NO self-serve
275
+ * command on this build. Moving an existing tenant between runtimes
276
+ * overwrites `sidecar_url` and `container_auth_token` and nulls `instance_id`
277
+ * with nothing stashed, so the control plane refuses it and no client can do
278
+ * it either. Say that, and print the server's own message, rather than
279
+ * inventing a command to carry the blame.
280
+ *
281
+ * The API writes the same vapour into `details.migrate_command`
282
+ * (packages/api/src/services/placement.ts MIGRATE_COMMAND). That string is not
283
+ * this package's to change and is reported as a follow-up; this function is why
284
+ * `naive up` no longer repeats it.
285
+ */
286
+ export function refusalNextStep(t) {
287
+ if (t.placement?.code === "runtime_credential_required") {
288
+ return {
289
+ command: `${durableCredentialEnvVar(t.name)}=<operator-credential> naive up`,
290
+ description: `team "${t.name}": the durable runtime issued an operator credential for this tenant and it is not in ` +
291
+ `the environment. Export it (or NAIVE_DURABLE_CREDENTIAL for every team) and re-run. Never put it in naive.config.ts.`,
292
+ };
293
+ }
294
+ return null;
295
+ }
296
+ /** Team names declared in the config, without evaluating anything the API will re-derive. */
297
+ function declaredTeamNames(config) {
298
+ const teams = config.teams;
299
+ return teams && typeof teams === "object" ? Object.keys(teams) : [];
300
+ }
301
+ /**
302
+ * Wrap the config only when there is something to carry alongside it.
303
+ *
304
+ * `readConfig` on the API takes `body.config ?? body`, so both shapes work — but
305
+ * a caller that supplies no credential sends the exact bytes it always sent.
306
+ */
307
+ function applyBody(config, credentials) {
308
+ return credentials ? { config, runtime_credentials: credentials } : config;
309
+ }
310
+ /**
311
+ * Apply asynchronously and poll the job to completion.
312
+ *
313
+ * An apply can outlive the production gateway timeout (Hermes provisioning
314
+ * alone may wait up to two minutes), and the synchronous POST answered 504
315
+ * while the apply kept running — partial state with no observable outcome.
316
+ * So the CLI asks for async mode (`?async=true`); a server that supports it
317
+ * answers `202 {job_id}` and the outcome is read from `GET /v1/jobs/:id`. An
318
+ * older server ignores the query and answers synchronously; both shapes are
319
+ * returned as the same `{ status, data }` the callers already handle.
320
+ */
321
+ const APPLY_POLL_INTERVAL_MS = 3_000;
322
+ const APPLY_POLL_TIMEOUT_MS = 15 * 60_000;
323
+ async function applyProject(project, body) {
324
+ const resp = await apiRequest("POST", `/v1/deployments/${encodeURIComponent(project)}/apply?async=true`, body);
325
+ const accepted = resp.data;
326
+ if (resp.status !== 202 || typeof accepted.job_id !== "string")
327
+ return resp;
328
+ const deadline = Date.now() + APPLY_POLL_TIMEOUT_MS;
329
+ while (Date.now() < deadline) {
330
+ await new Promise((r) => setTimeout(r, APPLY_POLL_INTERVAL_MS));
331
+ const poll = await apiRequest("GET", `/v1/jobs/${encodeURIComponent(accepted.job_id)}`);
332
+ if (poll.status >= 400)
333
+ return poll;
334
+ const job = poll.data;
335
+ if (job.status === "completed")
336
+ return { status: 200, data: job.result ?? {} };
337
+ if (job.status === "failed" || job.status === "cancelled") {
338
+ // The job's error is `code: message` — re-shape it into the standard
339
+ // envelope so handleApiError prints it exactly like a synchronous refusal.
340
+ const raw = typeof job.error === "string" && job.error ? job.error : "The apply failed";
341
+ const m = /^([a-z_]+): ([\s\S]*)$/.exec(raw);
342
+ return {
343
+ status: 502,
344
+ data: { error: { code: m?.[1] ?? "apply_failed", message: m?.[2] ?? raw, job_id: accepted.job_id } },
345
+ };
346
+ }
347
+ }
348
+ return {
349
+ status: 504,
350
+ data: {
351
+ error: {
352
+ code: "apply_timeout",
353
+ message: `The apply job is still running after ${APPLY_POLL_TIMEOUT_MS / 60_000} minutes.`,
354
+ hint: `Poll it yourself: naive jobs get ${accepted.job_id} — re-running naive up converges once it settles.`,
355
+ job_id: accepted.job_id,
356
+ },
357
+ },
358
+ };
359
+ }
95
360
  export const upCmd = new Command("up")
96
361
  .description("Plan + apply the infrastructure, runtime pools, agent profiles, and systems declared in naive.config.ts")
97
362
  .option("--plan", "Preview the plan (diff) without applying")
@@ -108,9 +373,41 @@ export const upCmd = new Command("up")
108
373
  });
109
374
  return;
110
375
  }
111
- const config = opts.local ? null : await loadConfig(found);
112
- // Fallback: config couldn't be evaluated — local validation only.
113
- if (!config) {
376
+ const load = opts.local ? null : await loadConfig(found);
377
+ /* ── THE CONFIG REFUSED ITSELF. THAT IS NOT A TOOLCHAIN PROBLEM. ──────────
378
+ *
379
+ * 🔴 THIS BRANCH IS THE POINT OF THE `ConfigLoad` UNION ABOVE. Everything a
380
+ * define-time refusal is for arrives here: `brain_no_partitions`,
381
+ * `legacy_multi_team`, `brain_partition_unknown`, `residency_widens_company`,
382
+ * `company_brain_and_brains`, `program_undeclared`,
383
+ * `workspace_allowlist_empty`, `residency_unsupported_on_runtime`. Every one
384
+ * of those messages is written to be read by the person who wrote the config,
385
+ * and every one of them used to be swallowed by `catch { return null }`,
386
+ * relabelled "install @usenaive-sdk/iac + jiti", printed under
387
+ * `success: true`, and exited 0.
388
+ *
389
+ * So it is surfaced VERBATIM and exits non-zero. No regex fallback: the
390
+ * fallback's whole job is to say something useful when the config could not be
391
+ * READ, and this config was read perfectly — it said no.
392
+ */
393
+ if (load && !load.ok && load.reason === "invalid") {
394
+ agentError({
395
+ action: "up",
396
+ error: {
397
+ code: "invalid_config",
398
+ message: load.message,
399
+ hint: `${found} evaluated and refused itself. This is the config's own named refusal, not a missing ` +
400
+ "dependency — @usenaive-sdk/iac and jiti both resolved. Fix the declaration it names and re-run.",
401
+ },
402
+ recovery_steps: [
403
+ { command: "naive up --plan", description: "Re-check the config without applying anything" },
404
+ ],
405
+ });
406
+ return;
407
+ }
408
+ // Fallback: the TOOLCHAIN is missing (or --local was asked for), so the config
409
+ // could not be evaluated at all — local, regex-only validation.
410
+ if (!load || !load.ok) {
114
411
  const source = readFileSync(found, "utf8");
115
412
  const projectMatch = /project\s*:\s*["'`]([^"'`]+)["'`]/.exec(source);
116
413
  const project = projectMatch?.[1] ?? "(unknown)";
@@ -134,34 +431,135 @@ export const upCmd = new Command("up")
134
431
  opts.local
135
432
  ? `Local validation only for "${project}".`
136
433
  : `Validated ${found} locally, but could not evaluate it (install @usenaive-sdk/iac + jiti, or commit a naive.config.json).`,
434
+ // Only ever printed for a real resolution failure now — an invalid config
435
+ // took the branch above. Said out loud so the two are never conflated again.
436
+ ...(load ? [`Module resolution failed: ${load.message}`] : []),
137
437
  ],
138
438
  });
139
439
  return;
140
440
  }
441
+ const config = load.config;
141
442
  const project = typeof config.project === "string" ? config.project : undefined;
142
443
  if (!project) {
143
444
  agentError({ action: "up", error: { code: "invalid_input", message: "naive.config.ts must export a `project` name" }, recovery_steps: [] });
144
445
  return;
145
446
  }
447
+ const credentials = readDurableCredentials(declaredTeamNames(config));
448
+ // The organization's OTHER projects, if the config declares any. Each is a
449
+ // separate deployment under its own project key — the control plane keys
450
+ // deployments, pools and systems by `(company_id, project)`, so applying two
451
+ // projects is two applies of the same shape, not a new one. A config with no
452
+ // `projects:` block produces an empty list and everything below is untouched.
453
+ const extraProjects = Object.entries(config.projects ?? {})
454
+ .map(([key, p]) => p?.slug ?? key)
455
+ .filter((slug) => slug !== project);
146
456
  // 1. Plan (diff desired vs current).
147
- const planResp = await apiRequest("PUT", `/v1/deployments/${encodeURIComponent(project)}`, config);
457
+ const planResp = await apiRequest("PUT", `/v1/deployments/${encodeURIComponent(project)}`, applyBody(config, credentials));
148
458
  handleApiError("up", planResp);
149
459
  const plan = planResp.data?.plan;
460
+ const teamPlan = plan?.teams?.plan ?? [];
150
461
  if (opts.plan) {
462
+ // A plan REFUSAL is not a warning to scroll past — it is the reason this
463
+ // apply will not do what the config asks. Print it, and exit non-zero so a
464
+ // CI step that gates on `naive up --plan` actually gates.
465
+ const wouldRefuse = teamPlan.filter((t) => t.placement?.status === "refused");
466
+ const extraPlans = [];
467
+ for (const extra of extraProjects) {
468
+ const resp = await apiRequest("PUT", `/v1/deployments/${encodeURIComponent(extra)}`, applyBody(config, credentials));
469
+ handleApiError("up", resp);
470
+ extraPlans.push({ project: extra, plan: resp.data?.plan });
471
+ }
151
472
  agentOutput({
152
473
  action: "up",
153
- result: { config: found, project, plan, applied: false },
474
+ result: {
475
+ config: found,
476
+ project,
477
+ plan,
478
+ ...(extraPlans.length ? { projects: extraPlans } : {}),
479
+ applied: false,
480
+ },
154
481
  next_steps: [{ command: "naive up", description: "Apply the plan" }],
155
- hints: ["Plan only — nothing was provisioned."],
482
+ hints: [
483
+ "Plan only — nothing was provisioned.",
484
+ ...unconsumedWarnings(teamPlan),
485
+ ...(legacyDeprecationNotice(config) ? [legacyDeprecationNotice(config)] : []),
486
+ ...(agentsRenameNotice(config) ? [agentsRenameNotice(config)] : []),
487
+ ...(extraPlans.length
488
+ ? [`Planned ${extraPlans.length + 1} projects: ${[project, ...extraProjects].join(", ")}.`]
489
+ : []),
490
+ ...wouldRefuse.map((t) => `team "${t.name}" WOULD BE REFUSED (${t.placement?.code}): ${t.placement?.message}`),
491
+ ],
156
492
  });
493
+ if (wouldRefuse.length > 0)
494
+ process.exitCode = 1;
157
495
  return;
158
496
  }
159
- // 2. Apply (provision infra, register pools/systems/agent profiles).
160
- const applyResp = await apiRequest("POST", `/v1/deployments/${encodeURIComponent(project)}/apply`, config);
497
+ // 2. Apply (provision infra, register pools/systems/roles, materialize and
498
+ // place declared teams).
499
+ const applyResp = await applyProject(project, applyBody(config, credentials));
161
500
  handleApiError("up", applyResp);
162
501
  const data = applyResp.data;
163
502
  const deployment = data.deployment;
164
503
  const needsAction = (deployment?.resources ?? []).filter((r) => r.status === "needs_action" || r.status === "failed");
504
+ // The other declared projects, applied the same way and reported by name.
505
+ // Sequential on purpose: two applies of one organization touch the same
506
+ // brains and the same business programs, which the control plane serializes
507
+ // per company anyway.
508
+ const extraResults = [];
509
+ for (const extra of extraProjects) {
510
+ const resp = await applyProject(extra, applyBody(config, credentials));
511
+ handleApiError("up", resp);
512
+ const extraData = resp.data;
513
+ extraResults.push({
514
+ project: extra,
515
+ status: extraData.deployment?.status,
516
+ resources: extraData.deployment?.resources,
517
+ });
518
+ }
519
+ // ── WHAT WAS PROVISIONED, AND WHAT WAS REFUSED AND WHY ────────────────────
520
+ // A declared team that produced nothing used to be indistinguishable from one
521
+ // that worked: `naive up` printed `applied: true` and moved on. Every declared
522
+ // team now appears here with the agents it materialized, and a durable team
523
+ // additionally with its placement — placed, converged, or refused with the
524
+ // reason. A refusal exits NON-ZERO: the apply did real work (infra, pools,
525
+ // hermes teams) and reporting that honestly means not also claiming the part
526
+ // that was refused succeeded.
527
+ const durableByTeam = new Map((data.teams ?? []).map((t) => [t.team, t]));
528
+ const hermesByTeam = new Map((data.staffing ?? []).map((s) => [s.system, s]));
529
+ const teams = teamPlan.map((t) => {
530
+ const durable = durableByTeam.get(t.name);
531
+ const hermes = hermesByTeam.get(t.name);
532
+ // BOTH LANES, not the first one that answered. A MIXED team — a hermes lead
533
+ // with a member pinned to `runtime.durable` — is reported by BOTH
534
+ // materializers, and `durable ?? hermes` printed one half and silently
535
+ // dropped the other, so the agents an apply created did not add up to the
536
+ // agents it reported. Each role is tagged with the runtime it landed on when
537
+ // the team has two, so "which lane is this agent in" is answerable from the
538
+ // output rather than by reading the config back.
539
+ const lanes = t.role_runtimes;
540
+ const label = (role, status) => lanes?.[role] ? `${role} (${status}, ${lanes[role]})` : `${role} (${status})`;
541
+ const agents = [...(hermes?.agents ?? []), ...(durable?.agents ?? [])].map((a) => label(a.role, a.provision_status));
542
+ return {
543
+ name: t.name,
544
+ runtime: t.runtime,
545
+ lead: t.lead_role,
546
+ ...(lanes ? { role_runtimes: lanes } : {}),
547
+ ...(durable?.subject ? { subject: durable.subject } : {}),
548
+ agents,
549
+ archived: [...(hermes?.archived ?? []), ...(durable?.archived ?? [])],
550
+ ...(durable?.placement
551
+ ? {
552
+ placement: {
553
+ status: durable.placement.status,
554
+ ...(durable.placement.code ? { code: durable.placement.code } : {}),
555
+ ...(durable.placement.message ? { reason: durable.placement.message } : {}),
556
+ },
557
+ }
558
+ : {}),
559
+ };
560
+ });
561
+ const refusedTeams = teams.filter((t) => t.placement?.status === "refused");
562
+ const brains = brainReport(data.brains);
165
563
  // Deploy cloud.web source to the provisioned web project(s) (Vercel builds + hosts).
166
564
  const webDeploys = {};
167
565
  if (opts.deploy !== false) {
@@ -199,20 +597,71 @@ export const upCmd = new Command("up")
199
597
  resources: deployment?.resources,
200
598
  runtime_pools: Object.keys(config.runtime ?? {}),
201
599
  systems: Object.keys(config.systems ?? {}),
600
+ ...(brains ? { brains } : {}),
202
601
  agents: Object.keys(config.agents ?? config.agentProfiles ?? config.templates ?? {}),
602
+ teams,
203
603
  outputs: deployment?.outputs ?? {},
204
604
  web_deployments: webDeploys,
605
+ ...(extraResults.length ? { projects: extraResults } : {}),
205
606
  applied: true,
206
607
  },
207
608
  next_steps: [
208
609
  ...needsAction.map((r) => ({ command: `naive status`, description: `${r.name}: ${r.requirement ?? r.status}` })),
610
+ ...refusedTeams.map(refusalNextStep).filter((s) => s !== null),
209
611
  { command: `naive agent-profiles provision <name> --user <tenant>`, description: "Provision an agent profile for a tenant" },
210
612
  ],
211
613
  hints: [
212
614
  `Deployment "${project}" is ${deployment?.status ?? "?"}.`,
615
+ ...unconsumedWarnings(teamPlan),
616
+ ...(legacyDeprecationNotice(config) ? [legacyDeprecationNotice(config)] : []),
617
+ ...(agentsRenameNotice(config) ? [agentsRenameNotice(config)] : []),
618
+ ...extraResults.map((r) => `Deployment "${r.project}" is ${r.status ?? "?"}.`),
213
619
  needsAction.length ? `${needsAction.length} resource(s) need action — see next_steps.` : "All declared infrastructure is ready.",
620
+ ...(brains
621
+ ? [
622
+ `brains (${brains.declared_in}): ${brains.created.length} created` +
623
+ `${brains.created.length ? ` (${brains.created.join(", ")})` : ""}, ` +
624
+ `${brains.converged.length} already present` +
625
+ `${brains.converged.length ? ` (${brains.converged.join(", ")})` : ""}` +
626
+ `${brains.default ? `; default is "${brains.default}"` : ""}` +
627
+ `${brains.retained.length ? `. RETAINED, not declared by this config: ${brains.retained.join(", ")} — remove one deliberately with \`naive brain rm\`.` : "."}`,
628
+ // The accept-and-drop list, on the APPLY path and not only in --plan.
629
+ ...(brains.unpersisted
630
+ ? [
631
+ "DECLARED BUT NOT STORED — " +
632
+ Object.entries(brains.unpersisted)
633
+ .map(([name, keys]) => `${name}: ${keys.join(", ")}`)
634
+ .join("; ") +
635
+ ". `brain_knowledge_bases` has no column for these, so they were accepted and dropped. " +
636
+ "Nothing reads them; do not treat them as in force.",
637
+ ]
638
+ : []),
639
+ ...(brains.notes ?? []),
640
+ ]
641
+ : []),
642
+ ...teams
643
+ .filter((t) => t.placement?.status === "placed" || t.placement?.status === "converged")
644
+ .map((t) => t.placement?.status === "placed"
645
+ ? `team "${t.name}" PLACED on the durable runtime (${t.agents.length} agent(s)). Its jurisdiction is fixed permanently by the first control request.`
646
+ : `team "${t.name}" was already on the durable runtime (${t.agents.length} agent(s)); nothing was rewritten.`),
647
+ ...refusedTeams.map((t) => `team "${t.name}" REFUSED (${t.placement?.code}): ${t.placement?.reason}`),
648
+ // Said once, not per team. `naive runtime migrate` does not exist in this
649
+ // CLI or any released one — see refusalNextStep — so a refusal with no
650
+ // next_step gets the reason it has none instead of a command that 404s.
651
+ ...(refusedTeams.some((t) => refusalNextStep(t) === null)
652
+ ? [
653
+ "No `naive` command moves an existing tenant between runtimes, on this or any released version. " +
654
+ "Placement rewrites sidecar_url and container_auth_token and nulls instance_id with nothing stashed, " +
655
+ "so the control plane refuses a config edit that would do it. Read the refusal above and, if the move " +
656
+ "is intended, take it to an operator with direct access — there is no self-serve path.",
657
+ ]
658
+ : []),
214
659
  ],
215
660
  });
661
+ // The apply did real work and said so; it must not ALSO report success for
662
+ // the teams it refused. Non-zero, so a CI pipeline stops here.
663
+ if (refusedTeams.length > 0)
664
+ process.exitCode = 1;
216
665
  });
217
666
  export const downCmd = new Command("down")
218
667
  .description("Tear down the infrastructure provisioned for this project (naive.config.ts)")
@@ -232,6 +681,7 @@ export const downCmd = new Command("down")
232
681
  // Without --yes: preview what would be destroyed (no side effects).
233
682
  if (!opts.yes) {
234
683
  const current = await apiRequest("GET", `/v1/deployments/${encodeURIComponent(project)}`);
684
+ handleApiError("down", current);
235
685
  const d = current.data ?? {};
236
686
  agentOutput({
237
687
  action: "down",
@@ -1 +1 @@
1
- {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}