@anvil-works/anvil-cli 0.8.0-dev.0 → 0.8.0-dev.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 (47) hide show
  1. package/README.md +54 -0
  2. package/dist/WatchSession.d.ts.map +1 -1
  3. package/dist/api.d.ts +3 -1
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/cli.js +1251 -216
  6. package/dist/commands/appDetection.d.ts +68 -1
  7. package/dist/commands/appDetection.d.ts.map +1 -1
  8. package/dist/commands/checkout.d.ts +1 -0
  9. package/dist/commands/checkout.d.ts.map +1 -1
  10. package/dist/commands/create.d.ts +52 -0
  11. package/dist/commands/create.d.ts.map +1 -0
  12. package/dist/commands/db.d.ts.map +1 -1
  13. package/dist/commands/deps.d.ts.map +1 -1
  14. package/dist/commands/env.d.ts +3 -1
  15. package/dist/commands/env.d.ts.map +1 -1
  16. package/dist/commands/index.d.ts +3 -0
  17. package/dist/commands/index.d.ts.map +1 -1
  18. package/dist/commands/repl.d.ts.map +1 -1
  19. package/dist/commands/secret.d.ts +3 -0
  20. package/dist/commands/secret.d.ts.map +1 -0
  21. package/dist/commands/test.d.ts +26 -0
  22. package/dist/commands/test.d.ts.map +1 -0
  23. package/dist/commands/watch.d.ts +1 -25
  24. package/dist/commands/watch.d.ts.map +1 -1
  25. package/dist/config.d.ts +3 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/formTemplateValidation.d.ts.map +1 -1
  28. package/dist/index.js +225 -22
  29. package/dist/program.d.ts.map +1 -1
  30. package/dist/services/anvil-api.d.ts +20 -0
  31. package/dist/services/anvil-api.d.ts.map +1 -1
  32. package/dist/services/db.d.ts +2 -0
  33. package/dist/services/db.d.ts.map +1 -1
  34. package/dist/services/deps.d.ts +5 -2
  35. package/dist/services/deps.d.ts.map +1 -1
  36. package/dist/services/environment.d.ts +4 -0
  37. package/dist/services/environment.d.ts.map +1 -1
  38. package/dist/services/path-open.d.ts +1 -0
  39. package/dist/services/path-open.d.ts.map +1 -1
  40. package/dist/services/repl.d.ts +2 -0
  41. package/dist/services/repl.d.ts.map +1 -1
  42. package/dist/services/secret.d.ts +43 -0
  43. package/dist/services/secret.d.ts.map +1 -0
  44. package/dist/services/server-tests.d.ts +47 -0
  45. package/dist/services/server-tests.d.ts.map +1 -0
  46. package/dist/validateFormTemplateHtml.d.ts.map +1 -1
  47. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7373,6 +7373,7 @@ var __webpack_exports__ = {};
7373
7373
  AppIdWithContext: ()=>anvil_api_namespaceObject.AppIdWithContext,
7374
7374
  inspectCredentialHelperCommand: ()=>inspectCredentialHelperCommand,
7375
7375
  executeCheckout: ()=>executeCheckout,
7376
+ executeCreate: ()=>executeCreate,
7376
7377
  validateCheckoutDestination: ()=>validateCheckoutDestination,
7377
7378
  DeviceAuthorizationResponse: ()=>oauth_login_namespaceObject.DeviceAuthorizationResponse,
7378
7379
  OAuthTokenResponse: ()=>oauth_login_namespaceObject.OAuthTokenResponse,
@@ -7446,7 +7447,9 @@ var __webpack_exports__ = {};
7446
7447
  setInMemoryTokens: ()=>setInMemoryTokens,
7447
7448
  validateAppId: ()=>anvil_api_validateAppId,
7448
7449
  pollDeviceAuthorization: ()=>pollDeviceAuthorization,
7450
+ createAnvilApp: ()=>createAnvilApp,
7449
7451
  getValidAuthToken: ()=>auth_getValidAuthToken,
7452
+ CreatedAnvilApp: ()=>anvil_api_namespaceObject.CreatedAnvilApp,
7450
7453
  watch: ()=>src_api_watch,
7451
7454
  deleteConfig: ()=>deleteConfig,
7452
7455
  installModelTokenHelperScript: ()=>installModelTokenHelperScript,
@@ -7462,11 +7465,12 @@ var __webpack_exports__ = {};
7462
7465
  CheckoutResult: ()=>checkout_namespaceObject.CheckoutResult,
7463
7466
  ParsedCheckoutInput: ()=>checkout_namespaceObject.ParsedCheckoutInput,
7464
7467
  parseCredentialHelperCommand: ()=>parseCredentialHelperCommand,
7465
- MODEL_TOKEN_LOCK_TIMEOUT_MS: ()=>MODEL_TOKEN_LOCK_TIMEOUT_MS,
7468
+ CreateCheckoutError: ()=>CreateCheckoutError,
7466
7469
  GetValidAuthTokenOptions: ()=>auth_namespaceObject.GetValidAuthTokenOptions,
7467
- clearInMemoryTokens: ()=>clearInMemoryTokens,
7470
+ MODEL_TOKEN_LOCK_TIMEOUT_MS: ()=>MODEL_TOKEN_LOCK_TIMEOUT_MS,
7468
7471
  getDefaultDestinationDirectory: ()=>getDefaultDestinationDirectory,
7469
7472
  AUTH_FILE_LOCK_DEFAULTS: ()=>AUTH_FILE_LOCK_DEFAULTS,
7473
+ clearInMemoryTokens: ()=>clearInMemoryTokens,
7470
7474
  lookupByCommit: ()=>lookupByCommit,
7471
7475
  AppIdCandidate: ()=>anvil_api_namespaceObject.AppIdCandidate,
7472
7476
  verifyAuth: ()=>auth_verifyAuth
@@ -7483,6 +7487,7 @@ var __webpack_exports__ = {};
7483
7487
  P$: ()=>config_isCommandAvailable,
7484
7488
  n: ()=>config_isDevMode,
7485
7489
  Wj: ()=>config_isTestMode,
7490
+ Wc: ()=>config_normalizeAnvilOrigin,
7486
7491
  Vl: ()=>config_normalizeAnvilUrl,
7487
7492
  PW: ()=>parseConfigSetValue,
7488
7493
  cx: ()=>preferredEditors,
@@ -7511,6 +7516,7 @@ var __webpack_exports__ = {};
7511
7516
  var anvil_api_namespaceObject = {};
7512
7517
  __webpack_require__.r(anvil_api_namespaceObject);
7513
7518
  __webpack_require__.d(anvil_api_namespaceObject, {
7519
+ gr: ()=>createAnvilApp,
7514
7520
  lx: ()=>anvil_api_detectAppIdsByCommitLookup,
7515
7521
  NZ: ()=>anvil_api_detectAppIdsFromAllRemotes,
7516
7522
  rZ: ()=>anvil_api_filterCandidates,
@@ -7553,6 +7559,7 @@ var __webpack_exports__ = {};
7553
7559
  A9: ()=>isDirectoryNonEmpty,
7554
7560
  oU: ()=>isPathInsideGitRepo,
7555
7561
  Qx: ()=>parseCheckoutInput,
7562
+ B6: ()=>resolveCheckoutUrlForApi,
7556
7563
  KV: ()=>sanitizeDirectoryName,
7557
7564
  Bc: ()=>validateCheckoutDestination
7558
7565
  });
@@ -13109,12 +13116,25 @@ var __webpack_exports__ = {};
13109
13116
  if (!urlInput || "string" != typeof urlInput) return urlInput;
13110
13117
  let url = urlInput.trim();
13111
13118
  url = url.replace(/\/+$/, "");
13112
- if ("localhost" === url || url.startsWith("localhost:")) return "http://localhost:3000";
13113
- if ("http://localhost" === url || url.startsWith("http://localhost:")) return "http://localhost:3000";
13114
- if ("https://localhost" === url || url.startsWith("https://localhost:")) return "http://localhost:3000";
13115
- if (/^https?:\/\//.test(url)) return url;
13119
+ if ("localhost" === url) return "http://localhost:3000";
13120
+ if (url.startsWith("localhost:")) return `http://${url}`;
13121
+ if (/^https?:\/\//i.test(url)) return url;
13116
13122
  return `https://${url}`;
13117
13123
  }
13124
+ function config_normalizeAnvilOrigin(input) {
13125
+ try {
13126
+ const raw = input.trim();
13127
+ const normalized = config_normalizeAnvilUrl(raw);
13128
+ const url = new URL(raw.includes("://") ? raw : normalized);
13129
+ if (![
13130
+ "http:",
13131
+ "https:"
13132
+ ].includes(url.protocol) || url.username || url.password || "/" !== url.pathname || url.search || url.hash) throw new Error("Invalid origin");
13133
+ return normalized;
13134
+ } catch {
13135
+ throw new Error("Server URL must be an HTTP(S) origin without credentials, a path, query, or fragment.");
13136
+ }
13137
+ }
13118
13138
  function resolveAnvilUrl() {
13119
13139
  const fromConfig = config_getConfig("anvilUrl");
13120
13140
  if ("string" == typeof fromConfig && fromConfig.trim()) return fromConfig.trim();
@@ -14774,6 +14794,39 @@ Promise.resolve()
14774
14794
  function anvil_api_getDefaultAnvilUrl() {
14775
14795
  return resolveAnvilUrl();
14776
14796
  }
14797
+ async function createAnvilApp(options) {
14798
+ let response;
14799
+ try {
14800
+ response = await fetch(`${options.anvilUrl}/ide/api/_/apps`, {
14801
+ method: "POST",
14802
+ headers: {
14803
+ Authorization: `Bearer ${options.authToken}`,
14804
+ "Content-Type": "application/json"
14805
+ },
14806
+ body: JSON.stringify({
14807
+ name: options.name,
14808
+ tags: options.tags
14809
+ })
14810
+ });
14811
+ } catch (error) {
14812
+ throw createNetworkError.network(error.message);
14813
+ }
14814
+ const data = await response.json().catch(()=>({}));
14815
+ if (!response.ok) {
14816
+ if (401 === response.status || 403 === response.status) throw createAuthError.invalid(data.error || "Not authorized to create an app");
14817
+ throw new Error(data.error || `Failed to create app: ${response.status} ${response.statusText}`);
14818
+ }
14819
+ if ("string" != typeof data.id || !data.id) throw new Error("App creation response did not contain an app ID.");
14820
+ return {
14821
+ id: data.id,
14822
+ ..."string" == typeof data.name ? {
14823
+ name: data.name
14824
+ } : {},
14825
+ ...data.tags ? {
14826
+ tags: data.tags
14827
+ } : {}
14828
+ };
14829
+ }
14777
14830
  async function anvil_api_validateAppId(appId, anvilUrl = anvil_api_getDefaultAnvilUrl(), username) {
14778
14831
  const authToken = await auth_getValidAuthToken(anvilUrl, username);
14779
14832
  try {
@@ -14945,14 +14998,15 @@ Promise.resolve()
14945
14998
  try {
14946
14999
  const remotes = await git.getRemotes(true);
14947
15000
  for (const remote of remotes){
14948
- const httpMatch = remote.refs.fetch?.match(/(?:http|https):\/\/(?:[^@]+@)?([^:\/]+)(?::\d+)?\/git\/([A-Z0-9]+)\.git/);
15001
+ const httpMatch = remote.refs.fetch?.match(/(https?):\/\/(?:[^@\/]+@)?([^\/]+)\/git\/([A-Z0-9]+)\.git/);
14949
15002
  if (httpMatch) {
14950
- const [, host, detectedAppId] = httpMatch;
15003
+ const [, scheme, host, detectedAppId] = httpMatch;
15004
+ const origin = new URL(`${scheme}://${host}`).origin;
14951
15005
  out.push({
14952
15006
  appId: detectedAppId,
14953
15007
  source: "remote",
14954
15008
  description: `Git remote '${remote.name}'`,
14955
- detectedUrl: config_normalizeAnvilUrl(host)
15009
+ detectedUrl: config_normalizeAnvilUrl(origin)
14956
15010
  });
14957
15011
  continue;
14958
15012
  }
@@ -15060,7 +15114,7 @@ Promise.resolve()
15060
15114
  html: htmlContent
15061
15115
  };
15062
15116
  }
15063
- function formatHttpError(prefix, status, body) {
15117
+ function http_formatHttpError(prefix, status, body) {
15064
15118
  if (!body) return `${prefix}: ${status}`;
15065
15119
  try {
15066
15120
  const parsed = JSON.parse(body);
@@ -15085,11 +15139,11 @@ Promise.resolve()
15085
15139
  }
15086
15140
  const ANVIL_DEPS_DIR = ".anvil/deps";
15087
15141
  const ANVIL_DEPS_MANIFEST = "manifest.json";
15088
- const DEPS_MANIFEST_VERSION = 2;
15142
+ const DEPS_MANIFEST_VERSION = 3;
15089
15143
  async function fetchAllDependencies(appId, anvilUrl, options = {}) {
15090
15144
  const { commit, includeDocs = true, knownDependencies = [] } = options;
15091
15145
  anvilUrl ??= await auth_resolveAuthAnvilUrl();
15092
- const token = await auth_getValidAuthToken(anvilUrl);
15146
+ const token = await auth_getValidAuthToken(anvilUrl, options.username);
15093
15147
  const body = {
15094
15148
  include_docs: includeDocs,
15095
15149
  known_dependencies: knownDependencies
@@ -15105,7 +15159,7 @@ Promise.resolve()
15105
15159
  });
15106
15160
  if (!resp.ok) {
15107
15161
  const errorBody = await resp.text();
15108
- throw new Error(formatHttpError("Failed to fetch dependencies", resp.status, errorBody));
15162
+ throw new Error(http_formatHttpError("Failed to fetch dependencies", resp.status, errorBody));
15109
15163
  }
15110
15164
  return await resp.json();
15111
15165
  }
@@ -15113,9 +15167,17 @@ Promise.resolve()
15113
15167
  auth_setRepoContext(projectRoot);
15114
15168
  anvilUrl ??= await auth_resolveAuthAnvilUrl();
15115
15169
  const includeDocs = options.includeDocs ?? true;
15170
+ const git = new git_GitService(projectRoot);
15171
+ const commit = options.commit ?? await git.getCommitId();
15172
+ const sourceYaml = await git.show(`${commit}:anvil.yaml`).catch((error)=>{
15173
+ if (options.commit) return null;
15174
+ throw error;
15175
+ });
15176
+ const sourceDependencies = null === sourceYaml ? null : normalizeAnvilYamlDependenciesFromContent(sourceYaml);
15116
15177
  const knownDependencies = await getKnownDependenciesForCache(projectRoot, includeDocs);
15117
15178
  const response = await fetchAllDependencies(appId, anvilUrl, {
15118
- commit: options.commit,
15179
+ username: options.username,
15180
+ commit,
15119
15181
  includeDocs,
15120
15182
  knownDependencies
15121
15183
  });
@@ -15128,7 +15190,8 @@ Promise.resolve()
15128
15190
  }
15129
15191
  const addedGitignoreEntry = await ensureProjectGitignoreIgnoresAnvilDir(projectRoot);
15130
15192
  await writeAllDepsToCache(projectRoot, response, {
15131
- includeDocs
15193
+ includeDocs,
15194
+ sourceDependencies
15132
15195
  });
15133
15196
  return {
15134
15197
  response,
@@ -15154,7 +15217,7 @@ Promise.resolve()
15154
15217
  function isDepsCacheManifest(value) {
15155
15218
  if (!value || "object" != typeof value) return false;
15156
15219
  const manifest = value;
15157
- return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && Array.isArray(manifest.source_dependencies) && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
15220
+ return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && (null === manifest.source_dependencies || Array.isArray(manifest.source_dependencies)) && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
15158
15221
  }
15159
15222
  async function readDepsCacheManifest(projectRoot) {
15160
15223
  try {
@@ -15346,7 +15409,7 @@ Promise.resolve()
15346
15409
  const newManifest = {
15347
15410
  version: DEPS_MANIFEST_VERSION,
15348
15411
  includeDocs,
15349
- source_dependencies: await readAnvilYamlDependencies(projectRoot),
15412
+ source_dependencies: void 0 === options.sourceDependencies ? await readAnvilYamlDependencies(projectRoot) : options.sourceDependencies,
15350
15413
  resolved_dependencies: response.resolved_dependencies,
15351
15414
  cached_dependencies: cachedDependencies
15352
15415
  };
@@ -16423,8 +16486,10 @@ Promise.resolve()
16423
16486
  }
16424
16487
  if (void 0 !== value.toolbox_item && !isPlainObject(value.toolbox_item)) formTemplateValidation_pushIssue(issues, path("toolbox_item"), "must be an object");
16425
16488
  if (void 0 !== value.layout_metadata && !isPlainObject(value.layout_metadata)) formTemplateValidation_pushIssue(issues, path("layout_metadata"), "must be an object");
16489
+ if (void 0 !== value.help_text && "string" != typeof value.help_text) formTemplateValidation_pushIssue(issues, path("help_text"), "must be a string");
16426
16490
  if (void 0 !== value.item_type) if (isPlainObject(value.item_type)) {
16427
- if ("number" != typeof value.item_type.table_id) formTemplateValidation_pushIssue(issues, path("item_type.table_id"), "must be a number");
16491
+ if (void 0 !== value.item_type.table_name) validateNonEmptyString(value.item_type.table_name, path("item_type.table_name"), issues);
16492
+ else if ("number" != typeof value.item_type.table_id) formTemplateValidation_pushIssue(issues, path("item_type.table_id"), "must be a number");
16428
16493
  } else formTemplateValidation_pushIssue(issues, path("item_type"), "must be an object");
16429
16494
  return issues;
16430
16495
  }
@@ -16497,7 +16562,8 @@ Promise.resolve()
16497
16562
  "toolbox_item",
16498
16563
  "layout_metadata",
16499
16564
  "item_type",
16500
- "slots"
16565
+ "slots",
16566
+ "help_text"
16501
16567
  ]);
16502
16568
  const FRONTMATTER_DISALLOWED_KEYS = new Set([
16503
16569
  "container",
@@ -19577,6 +19643,7 @@ print(json.dumps({"issues": issues}))
19577
19643
  try {
19578
19644
  const previousSubscriptions = this.wsClient?.getDependencySubscriptions() ?? [];
19579
19645
  const { response, addedGitignoreEntry } = await refreshDependencyCache(this.repoPath, this.appId, this.anvilUrl, {
19646
+ username: this.username,
19580
19647
  includeDocs: true
19581
19648
  });
19582
19649
  if (addedGitignoreEntry) logger_logger.info("Added /.anvil/ to .gitignore");
@@ -20154,6 +20221,18 @@ print(json.dumps({"issues": issues}))
20154
20221
  }
20155
20222
  throw new Error("Device login expired before it was approved.");
20156
20223
  }
20224
+ function quoteForPosixShell(value) {
20225
+ if ("" === value) return "''";
20226
+ return `'${value.replace(/'/g, "'\"'\"'")}'`;
20227
+ }
20228
+ function quoteForCmdShell(value) {
20229
+ const escaped = value.replace(/[%^&|<>()"!]/g, "^$&");
20230
+ return `"${escaped}"`;
20231
+ }
20232
+ function buildShellCommandLine(tokens) {
20233
+ if ("win32" === process.platform) return tokens.map(quoteForCmdShell).join(" ");
20234
+ return tokens.map(quoteForPosixShell).join(" ");
20235
+ }
20157
20236
  const CHECKOUT_ERROR_VALUE = "__ERROR__";
20158
20237
  function isAbortLikeError(error) {
20159
20238
  if (error instanceof Error && "AbortError" === error.name) return true;
@@ -20332,6 +20411,122 @@ print(json.dumps({"issues": issues}))
20332
20411
  }
20333
20412
  require("inquirer");
20334
20413
  require("ora");
20414
+ class CreateCheckoutError extends Error {
20415
+ created;
20416
+ constructor(message, created, options){
20417
+ super(message, options), this.created = created;
20418
+ this.name = "CreateCheckoutError";
20419
+ }
20420
+ }
20421
+ const create_defaultDeps = {
20422
+ getAccountsForUrl: auth_getAccountsForUrl,
20423
+ getValidAuthToken: auth_getValidAuthToken,
20424
+ createApp: createAnvilApp,
20425
+ checkout: executeCheckout
20426
+ };
20427
+ function validateCheckoutOptions(options) {
20428
+ if (false === options.checkout && (void 0 !== options.directory || void 0 !== options.gitUrl || options.open)) throw new Error("--no-checkout cannot be combined with a destination argument, --directory, --git-url, or --open.");
20429
+ }
20430
+ async function validateCreateInput(options) {
20431
+ validateCheckoutOptions(options);
20432
+ const name = options.name.trim();
20433
+ if (!name) throw new Error("App name is required.");
20434
+ const tags = void 0 === options.tags ? void 0 : [
20435
+ ...new Set(options.tags.map((tag)=>tag.trim().toLowerCase()))
20436
+ ];
20437
+ if (tags && (tags.length > 20 || tags.some((tag)=>tag.length > 50 || !/^[a-z0-9_-]+$/.test(tag)))) throw new Error("Use at most 20 unique tags, each 1–50 characters: letters, numbers, hyphens, or underscores.");
20438
+ if (false === options.checkout) return {
20439
+ name,
20440
+ tags,
20441
+ destinationPath: void 0
20442
+ };
20443
+ const directory = options.directory ?? sanitizeDirectoryName(name);
20444
+ if (!directory) throw new Error("App name cannot be used as a directory. Pass --directory <PATH>.");
20445
+ const destinationPath = external_path_default().resolve(directory);
20446
+ await validateCheckoutDestination(destinationPath);
20447
+ return {
20448
+ name,
20449
+ tags,
20450
+ destinationPath
20451
+ };
20452
+ }
20453
+ async function executeCreate(options, deps = create_defaultDeps) {
20454
+ const { name, tags, destinationPath } = await validateCreateInput(options);
20455
+ const anvilUrl = config_normalizeAnvilOrigin(options.anvilUrl ?? await resolveCheckoutUrlForApi() ?? "");
20456
+ const gitUrl = void 0 === options.gitUrl ? void 0 : config_normalizeAnvilOrigin(options.gitUrl);
20457
+ const accounts = options.user ? [] : await deps.getAccountsForUrl(anvilUrl);
20458
+ const username = options.user ?? accounts[0];
20459
+ if (!username) throw new Error(`Not logged in to ${anvilUrl}. Run 'anvil login ${anvilUrl}' and retry.`);
20460
+ if (!options.user && accounts.length > 1) throw new Error(`Multiple accounts found for ${anvilUrl}: ${accounts.join(", ")}. Use --user <USERNAME>.`);
20461
+ const authToken = await deps.getValidAuthToken(anvilUrl, username);
20462
+ const created = await deps.createApp({
20463
+ name,
20464
+ anvilUrl,
20465
+ authToken,
20466
+ ...tags ? {
20467
+ tags
20468
+ } : {}
20469
+ });
20470
+ if (void 0 === destinationPath) return {
20471
+ appId: created.id,
20472
+ appName: created.name,
20473
+ anvilUrl,
20474
+ username,
20475
+ tags: created.tags ?? tags ?? [],
20476
+ editorUrl: `${anvilUrl}/build/apps/${encodeURIComponent(created.id)}`
20477
+ };
20478
+ try {
20479
+ const checkout = await deps.checkout({
20480
+ input: created.id,
20481
+ directory: destinationPath,
20482
+ anvilUrl,
20483
+ ...gitUrl ? {
20484
+ gitUrl
20485
+ } : {},
20486
+ user: username
20487
+ });
20488
+ return {
20489
+ ...checkout,
20490
+ tags: created.tags ?? tags ?? []
20491
+ };
20492
+ } catch (error) {
20493
+ const details = {
20494
+ appId: created.id,
20495
+ appName: created.name,
20496
+ anvilUrl,
20497
+ gitUrl,
20498
+ destinationPath,
20499
+ username,
20500
+ tags: created.tags ?? tags ?? []
20501
+ };
20502
+ const retry = buildShellCommandLine([
20503
+ "anvil",
20504
+ "checkout",
20505
+ created.id,
20506
+ destinationPath,
20507
+ "--url",
20508
+ anvilUrl,
20509
+ "--user",
20510
+ username,
20511
+ ...gitUrl ? [
20512
+ "--git-url",
20513
+ gitUrl
20514
+ ] : []
20515
+ ]);
20516
+ const remainingFiles = await isDirectoryNonEmpty(destinationPath).catch(()=>true);
20517
+ const recovery = remainingFiles ? `Inspect the existing checkout at ${destinationPath} before retrying. For Git authentication problems, run ${buildShellCommandLine([
20518
+ "anvil",
20519
+ "git-auth",
20520
+ "doctor",
20521
+ "--repo",
20522
+ destinationPath
20523
+ ])}.` : `Retry checkout with: ${retry}`;
20524
+ const message = errors_getErrorMessage(error).replaceAll(authToken, "[REDACTED]").replaceAll(encodeURIComponent(authToken), "[REDACTED]");
20525
+ throw new CreateCheckoutError(`Created app ${created.id} at ${anvilUrl}, but checkout failed: ${message}. Do not rerun create. ${recovery}`, details, {
20526
+ cause: error
20527
+ });
20528
+ }
20529
+ }
20335
20530
  const defaultGitAuthDoctorDeps = {
20336
20531
  getAppAuthBinding: git_auth_getAppAuthBinding,
20337
20532
  getAccountsForUrl: auth_getAccountsForUrl,
@@ -20787,7 +20982,7 @@ print(json.dumps({"issues": issues}))
20787
20982
  const token = await getModelToken(options);
20788
20983
  process.stdout.write(`${token}\n`);
20789
20984
  }
20790
- async function watch_decideFallbackUrl(explicitUrl, availableUrls) {
20985
+ async function appDetection_decideFallbackUrl(explicitUrl, availableUrls) {
20791
20986
  if (explicitUrl) return {
20792
20987
  source: "explicit",
20793
20988
  url: config_normalizeAnvilUrl(explicitUrl)
@@ -20873,7 +21068,7 @@ print(json.dumps({"issues": issues}))
20873
21068
  async function resolveCheckoutUrlForApi(explicitUrl, parsedUrl) {
20874
21069
  if (explicitUrl) return config_normalizeAnvilUrl(explicitUrl);
20875
21070
  if (parsedUrl) return config_normalizeAnvilUrl(parsedUrl);
20876
- const decision = await watch_decideFallbackUrl(void 0);
21071
+ const decision = await appDetection_decideFallbackUrl(void 0);
20877
21072
  if ("available-multiple" === decision.source) throw new Error(`Multiple logged-in Anvil URLs found: ${decision.urls.join(", ")}. Use --url <ANVIL_URL> to choose one.`);
20878
21073
  return decision.url;
20879
21074
  }
@@ -20933,7 +21128,7 @@ print(json.dumps({"issues": issues}))
20933
21128
  logger_logger.verbose(external_chalk_default().cyan("Resolved app ID: ") + external_chalk_default().bold(parsed.appId));
20934
21129
  const anvilUrl = await resolveCheckoutUrlForApi(options.anvilUrl, parsed.detectedUrl);
20935
21130
  if (!anvilUrl) throw new Error("Anvil URL is required. Use --url <ANVIL_URL> or pass an input URL containing the host.");
20936
- const gitUrl = options.gitUrl ?? anvilUrl;
21131
+ const gitUrl = void 0 === options.gitUrl ? anvilUrl : config_normalizeAnvilOrigin(options.gitUrl);
20937
21132
  const resolvedUsername = await resolveCheckoutUsernameForApi(anvilUrl, options.user);
20938
21133
  if (resolvedUsername) logger_logger.verbose(external_chalk_default().cyan("Using account: ") + external_chalk_default().bold(resolvedUsername));
20939
21134
  else logger_logger.verbose(external_chalk_default().cyan("No account preselected; resolving after auth token lookup."));
@@ -21173,6 +21368,8 @@ exports.CheckoutCloneOptions = __webpack_exports__.CheckoutCloneOptions;
21173
21368
  exports.CheckoutExecutionDeps = __webpack_exports__.CheckoutExecutionDeps;
21174
21369
  exports.CheckoutOptions = __webpack_exports__.CheckoutOptions;
21175
21370
  exports.CheckoutResult = __webpack_exports__.CheckoutResult;
21371
+ exports.CreateCheckoutError = __webpack_exports__.CreateCheckoutError;
21372
+ exports.CreatedAnvilApp = __webpack_exports__.CreatedAnvilApp;
21176
21373
  exports.DeviceAuthorizationResponse = __webpack_exports__.DeviceAuthorizationResponse;
21177
21374
  exports.FormTemplateValidationResult = __webpack_exports__.FormTemplateValidationResult;
21178
21375
  exports.GetValidAuthTokenOptions = __webpack_exports__.GetValidAuthTokenOptions;
@@ -21196,6 +21393,7 @@ exports.branchFromEnvironmentVersion = __webpack_exports__.branchFromEnvironment
21196
21393
  exports.buildGitAuthDoctorReport = __webpack_exports__.buildGitAuthDoctorReport;
21197
21394
  exports.checkUncommittedChanges = __webpack_exports__.checkUncommittedChanges;
21198
21395
  exports.clearInMemoryTokens = __webpack_exports__.clearInMemoryTokens;
21396
+ exports.createAnvilApp = __webpack_exports__.createAnvilApp;
21199
21397
  exports.createCheckoutPickerSource = __webpack_exports__.createCheckoutPickerSource;
21200
21398
  exports.createWatchDiagnostic = __webpack_exports__.createWatchDiagnostic;
21201
21399
  exports.createWatchDiagnosticFromMessage = __webpack_exports__.createWatchDiagnosticFromMessage;
@@ -21203,6 +21401,7 @@ exports.deleteConfig = __webpack_exports__.deleteConfig;
21203
21401
  exports.detectAppIdsByCommitLookup = __webpack_exports__.detectAppIdsByCommitLookup;
21204
21402
  exports.detectAppIdsFromAllRemotes = __webpack_exports__.detectAppIdsFromAllRemotes;
21205
21403
  exports.executeCheckout = __webpack_exports__.executeCheckout;
21404
+ exports.executeCreate = __webpack_exports__.executeCreate;
21206
21405
  exports.executeGitCredentialOperation = __webpack_exports__.executeGitCredentialOperation;
21207
21406
  exports.executeModelTokenOperation = __webpack_exports__.executeModelTokenOperation;
21208
21407
  exports.filterCandidates = __webpack_exports__.filterCandidates;
@@ -21276,6 +21475,8 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
21276
21475
  "CheckoutExecutionDeps",
21277
21476
  "CheckoutOptions",
21278
21477
  "CheckoutResult",
21478
+ "CreateCheckoutError",
21479
+ "CreatedAnvilApp",
21279
21480
  "DeviceAuthorizationResponse",
21280
21481
  "FormTemplateValidationResult",
21281
21482
  "GetValidAuthTokenOptions",
@@ -21299,6 +21500,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
21299
21500
  "buildGitAuthDoctorReport",
21300
21501
  "checkUncommittedChanges",
21301
21502
  "clearInMemoryTokens",
21503
+ "createAnvilApp",
21302
21504
  "createCheckoutPickerSource",
21303
21505
  "createWatchDiagnostic",
21304
21506
  "createWatchDiagnosticFromMessage",
@@ -21306,6 +21508,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
21306
21508
  "detectAppIdsByCommitLookup",
21307
21509
  "detectAppIdsFromAllRemotes",
21308
21510
  "executeCheckout",
21511
+ "executeCreate",
21309
21512
  "executeGitCredentialOperation",
21310
21513
  "executeModelTokenOperation",
21311
21514
  "filterCandidates",
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,OAAO,EAAyD,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAiC3G,KAAK,sBAAsB,GAAG,eAAe,GAAG;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAoKF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAO7F;AAmLD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,CAezE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwFzD;AAiBD,wBAAgB,YAAY,IAAI,OAAO,CAoGtC"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC,OAAO,EAAyD,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAiC3G,KAAK,sBAAsB,GAAG,eAAe,GAAG;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAoKF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAO7F;AAmLD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,CAezE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwFzD;AAiBD,wBAAgB,YAAY,IAAI,OAAO,CAuGtC"}
@@ -21,6 +21,17 @@ export interface ListAppsResponse {
21
21
  apps: CheckoutAppListItem[];
22
22
  next_cursor: string | null;
23
23
  }
24
+ export interface CreatedAnvilApp {
25
+ id: string;
26
+ name?: string;
27
+ tags?: string[];
28
+ }
29
+ export declare function createAnvilApp(options: {
30
+ name: string;
31
+ anvilUrl: string;
32
+ authToken: string;
33
+ tags?: string[];
34
+ }): Promise<CreatedAnvilApp>;
24
35
  export interface SaveRequestPayload {
25
36
  edit_session: string;
26
37
  save_sequence: number;
@@ -73,6 +84,15 @@ export declare function getWebSocketUrl(appId: string, authToken: string, anvilU
73
84
  * Check for CLI updates from npm registry.
74
85
  */
75
86
  export declare function getLatestVersion(): Promise<string | null>;
87
+ export interface GetTestRunSnapshotOptions {
88
+ anvilUrl?: string;
89
+ /** The account to use, when there are several for the URL. */
90
+ username?: string;
91
+ }
92
+ /**
93
+ * Get a server test run's snapshot: its `run_id`, `state`, `discovered_tests` and per-test `results`.
94
+ */
95
+ export declare function getTestRunSnapshot(appId: string, runId: string, options?: GetTestRunSnapshotOptions): Promise<unknown>;
76
96
  export interface AppIdCandidate {
77
97
  appId: string;
78
98
  source: "remote" | "config";
@@ -1 +1 @@
1
- {"version":3,"file":"anvil-api.d.ts","sourceRoot":"","sources":["../../src/services/anvil-api.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAuD,MAAM,WAAW,CAAC;AAWnH,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;CACN;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3D;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAuB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CA2ChC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAuB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA+BjC;AAED,wBAAsB,mBAAmB,CACrC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;CACnB,GACP,OAAO,CAAC,gBAAgB,CAAC,CA4C3B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,oBAAuB,EAC/B,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAuB,GAAG,MAAM,CAMtG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAuB,GAAG,MAAM,CAIvG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAuB,GAAG,MAAM,CAEzG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY/D;AAMD,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,gBAAgB,EAAE,EAC9B,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,gBAAgB,EAAE,CAapB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAaxE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,gBAAgB,EAAE,GACpC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAWrD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA8CF;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuC9F;AA0BD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAyC1H"}
1
+ {"version":3,"file":"anvil-api.d.ts","sourceRoot":"","sources":["../../src/services/anvil-api.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAuD,MAAM,WAAW,CAAC;AAYnH,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;CACN;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B3B;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3D;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAuB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CA2ChC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAuB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA+BjC;AAED,wBAAsB,mBAAmB,CACrC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;CACnB,GACP,OAAO,CAAC,gBAAgB,CAAC,CA4C3B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,oBAAuB,EAC/B,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAuB,GAAG,MAAM,CAMtG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAuB,GAAG,MAAM,CAIvG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAuB,GAAG,MAAM,CAEzG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY/D;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,yBAA8B,GACxC,OAAO,CAAC,OAAO,CAAC,CAalB;AAMD,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,UAAU,EAAE,gBAAgB,EAAE,EAC9B,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,gBAAgB,EAAE,CAapB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAaxE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,gBAAgB,EAAE,GACpC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAWrD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA8CF;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyC9F;AA0BD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAyC1H"}
@@ -1,5 +1,7 @@
1
1
  export interface ApplyDatabaseSchemaOptions {
2
2
  anvilUrl?: string;
3
+ /** The account to use, when there are several for the URL. */
4
+ username?: string;
3
5
  projectRoot?: string;
4
6
  }
5
7
  /** Apply the current app environment's source schema to its database. */
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,0BAA0B;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,0BAA+B,GACzC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAyBhC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,0BAA0B;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,0BAA+B,GACzC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAyBhC"}
@@ -1,4 +1,4 @@
1
- declare const DEPS_MANIFEST_VERSION = 2;
1
+ declare const DEPS_MANIFEST_VERSION = 3;
2
2
  export interface DependencyDocFile {
3
3
  path: string;
4
4
  content: string;
@@ -8,11 +8,13 @@ export interface DependencyAssetFile {
8
8
  content: string;
9
9
  }
10
10
  export interface FetchAllDependenciesOptions {
11
+ username?: string;
11
12
  commit?: string;
12
13
  includeDocs?: boolean;
13
14
  knownDependencies?: ResolvedDependencyManifestEntry[];
14
15
  }
15
16
  export interface RefreshDependencyCacheOptions {
17
+ username?: string;
16
18
  commit?: string;
17
19
  includeDocs?: boolean;
18
20
  }
@@ -68,7 +70,7 @@ interface CachedDependencyManifestEntry extends ResolvedDependencyManifestEntry
68
70
  export interface DepsCacheManifest {
69
71
  version: typeof DEPS_MANIFEST_VERSION;
70
72
  includeDocs: boolean;
71
- source_dependencies: unknown[];
73
+ source_dependencies: unknown[] | null;
72
74
  resolved_dependencies: ResolvedDependencyManifestEntry[];
73
75
  cached_dependencies: CachedDependencyManifestEntry[];
74
76
  }
@@ -95,6 +97,7 @@ export declare function anvilYamlDependenciesEqual(left: unknown, right: unknown
95
97
  */
96
98
  export declare function writeAllDepsToCache(projectRoot: string, response: ResolvedDepsResponse, options?: {
97
99
  includeDocs?: boolean;
100
+ sourceDependencies?: unknown[] | null;
98
101
  }): Promise<void>;
99
102
  /**
100
103
  * Clear .anvil/deps/ directory.
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export interface EnsureEnvironmentUrlOptions {
2
2
  anvilUrl?: string;
3
+ /** The account to use, when there are several for the URL. */
4
+ username?: string;
3
5
  }
4
6
  export declare function ensureEnvironmentUrl(appId: string, envPid: string, options?: EnsureEnvironmentUrlOptions): Promise<{
5
7
  url: string;
@@ -7,6 +9,8 @@ export declare function ensureEnvironmentUrl(appId: string, envPid: string, opti
7
9
  }>;
8
10
  export interface GetTemporaryUplinkKeyOptions {
9
11
  anvilUrl?: string;
12
+ /** The account to use, when there are several for the URL. */
13
+ username?: string;
10
14
  }
11
15
  export declare function getTemporaryUplinkKey(appId: string, envPid: string, options?: GetTemporaryUplinkKeyOptions): Promise<{
12
16
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/services/environment.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB9C;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,4BAAiC,GAC3C,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB3D"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/services/environment.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB9C;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,4BAAiC,GAC3C,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB3D"}
@@ -4,5 +4,6 @@ export interface OpenPathDeps {
4
4
  spawnShellCommand: (commandLine: string) => Promise<void>;
5
5
  }
6
6
  export declare function parseCommandTokens(command: string): string[];
7
+ export declare function buildShellCommandLine(tokens: string[]): string;
7
8
  export declare function openPathInEditorOrDefault(targetPath: string, preferredEditorCommand?: string, deps?: OpenPathDeps): Promise<void>;
8
9
  //# sourceMappingURL=path-open.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-open.d.ts","sourceRoot":"","sources":["../../src/services/path-open.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAuBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA6D5D;AA6BD,wBAAsB,yBAAyB,CAC3C,UAAU,EAAE,MAAM,EAClB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,IAAI,GAAE,YAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"path-open.d.ts","sourceRoot":"","sources":["../../src/services/path-open.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAuBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA6D5D;AAcD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAK9D;AAUD,wBAAsB,yBAAyB,CAC3C,UAAU,EAAE,MAAM,EAClB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,IAAI,GAAE,YAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -1,6 +1,8 @@
1
1
  export interface RunReplOptions {
2
2
  code: string;
3
3
  anvilUrl?: string;
4
+ /** The account to use, when there are several for the URL. */
5
+ username?: string;
4
6
  /** Receives each output chunk immediately; the result also contains the full transcript. */
5
7
  onOutput?: (output: string) => void;
6
8
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/services/repl.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnC,CAAC;CACL;AAwBD,uEAAuE;AACvE,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA2IzG"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/services/repl.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnC,CAAC;CACL;AAwBD,uEAAuE;AACvE,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA2IzG"}