@treeseed/sdk 0.12.26 → 0.12.27

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 +1 -1
  2. package/dist/guarantees/index.js +15 -1
  3. package/dist/hosting/builtins.js +4 -4
  4. package/dist/hosting/contracts.d.ts +3 -3
  5. package/dist/hosting/graph.d.ts +4 -4
  6. package/dist/hosting/graph.js +17 -17
  7. package/dist/operations/agent-tools.d.ts +1 -1
  8. package/dist/operations/agent-tools.js +1 -1
  9. package/dist/operations/providers/default.js +2 -2
  10. package/dist/operations/services/config-runtime.d.ts +9 -9
  11. package/dist/operations/services/config-runtime.js +10 -10
  12. package/dist/operations/services/deploy.d.ts +8 -8
  13. package/dist/operations/services/deploy.js +151 -151
  14. package/dist/operations/services/github-automation.d.ts +6 -6
  15. package/dist/operations/services/github-automation.js +8 -8
  16. package/dist/operations/services/hub-launch.d.ts +1 -1
  17. package/dist/operations/services/hub-launch.js +1 -1
  18. package/dist/operations/services/package-adapters.d.ts +2 -2
  19. package/dist/operations/services/package-adapters.js +1 -1
  20. package/dist/operations/services/project-host-operations.d.ts +1 -1
  21. package/dist/operations/services/project-host-operations.js +1 -1
  22. package/dist/operations/services/project-platform.d.ts +8 -8
  23. package/dist/operations/services/project-platform.js +31 -31
  24. package/dist/operations/services/project-web-monitor.d.ts +1 -1
  25. package/dist/operations/services/project-web-monitor.js +4 -4
  26. package/dist/operations/services/railway-deploy.d.ts +4 -4
  27. package/dist/operations/services/railway-deploy.js +7 -7
  28. package/dist/operations/services/repository-save-orchestrator.js +3 -3
  29. package/dist/operations/services/template-secret-sync.d.ts +1 -1
  30. package/dist/operations/services/template-secret-sync.js +3 -3
  31. package/dist/reconcile/builtin-adapters.js +86 -40
  32. package/dist/reconcile/contracts.d.ts +1 -1
  33. package/dist/reconcile/engine.d.ts +4 -4
  34. package/dist/reconcile/engine.js +12 -12
  35. package/dist/reconcile/providers/release-private.d.ts +1 -1
  36. package/dist/scripts/tenant-deploy.js +9 -9
  37. package/dist/scripts/tenant-destroy.js +7 -7
  38. package/dist/scripts/tenant-workflow-action.js +4 -4
  39. package/dist/scripts/test-scaffold.js +2 -2
  40. package/dist/scripts/workspace-command-e2e.js +4 -4
  41. package/dist/sdk-types.d.ts +2 -2
  42. package/dist/treedx/generated/openapi-types.d.ts +11 -11
  43. package/dist/treedx/types.d.ts +15 -15
  44. package/dist/workflow/operations.d.ts +6 -4
  45. package/dist/workflow/operations.js +46 -23
  46. package/dist/workflow.d.ts +0 -9
  47. package/package.json +1 -1
package/README.md CHANGED
@@ -283,7 +283,7 @@ await treeDx.syncMirror({
283
283
  await treeDx.createMigration({
284
284
  targetNodeId: 'node_mirror',
285
285
  mode: 'primary_transfer',
286
- dryRun: true,
286
+ planOnly: true,
287
287
  requireMirrorSynced: false,
288
288
  });
289
289
 
@@ -699,11 +699,25 @@ function apiAcceptanceEnvironment(environment) {
699
699
  };
700
700
  }
701
701
  function apiAcceptanceBaseUrl(environment) {
702
- if (process.env.TREESEED_API_BASE_URL?.trim()) return process.env.TREESEED_API_BASE_URL.trim().replace(/\/+$/u, "");
702
+ if (process.env.TREESEED_API_BASE_URL?.trim()) {
703
+ const configured = process.env.TREESEED_API_BASE_URL.trim().replace(/\/+$/u, "");
704
+ if (environment !== "local" && isLoopbackUrl(configured)) {
705
+ throw new Error(`API guarantee environment ${environment} must target a live hosted API URL, not ${configured}.`);
706
+ }
707
+ return configured;
708
+ }
703
709
  if (environment === "staging") return "https://api.preview.treeseed.dev";
704
710
  if (environment === "prod") return "https://api.treeseed.dev";
705
711
  return "http://127.0.0.1:3000";
706
712
  }
713
+ function isLoopbackUrl(value) {
714
+ try {
715
+ const url = new URL(value);
716
+ return ["localhost", "127.0.0.1", "0.0.0.0", "::1", "[::1]"].includes(url.hostname);
717
+ } catch {
718
+ return false;
719
+ }
720
+ }
707
721
  async function defaultTreeseedGuaranteeVerifierExecutor(input) {
708
722
  const definition = input.definition;
709
723
  const ownerPackage = definition.ownerPackage ?? input.guarantee.manifest.ownerPackage;
@@ -18,7 +18,7 @@ function syntheticStatus(input) {
18
18
  unitId: input.unit.id,
19
19
  serviceType: input.unit.serviceType.id,
20
20
  placement: input.unit.placement,
21
- dryRun: input.dryRun === true
21
+ planOnly: input.planOnly === true
22
22
  },
23
23
  warnings: []
24
24
  };
@@ -85,10 +85,10 @@ function createSyntheticHostAdapter(id, label, capabilityIds, environments = ALL
85
85
  apply(input) {
86
86
  return {
87
87
  ...syntheticStatus(input),
88
- status: input.dryRun ? "pending" : "ready",
88
+ status: input.planOnly ? "pending" : "ready",
89
89
  state: {
90
90
  ...syntheticStatus(input).state,
91
- applied: input.dryRun !== true
91
+ applied: input.planOnly !== true
92
92
  }
93
93
  };
94
94
  },
@@ -327,7 +327,7 @@ function createCloudflareHostAdapter() {
327
327
  },
328
328
  verify(input) {
329
329
  if (!isPagesSite(input)) return base.verify(input);
330
- if (input.dryRun) return base.verify(input);
330
+ if (input.planOnly) return base.verify(input);
331
331
  const projectName = cloudflarePagesProjectName(input);
332
332
  const branchName = projectName ? cloudflarePagesBranchName(input) : null;
333
333
  const domain = cloudflarePagesDomain(input);
@@ -13,7 +13,7 @@ export interface TreeseedHostAdapterOperationInput {
13
13
  environment: TreeseedHostingEnvironment;
14
14
  unit: TreeseedHostingUnit;
15
15
  graph: TreeseedHostingGraph;
16
- dryRun?: boolean;
16
+ planOnly?: boolean;
17
17
  }
18
18
  export interface TreeseedHostAdapterOperationResult {
19
19
  status: TreeseedHostingStatus;
@@ -161,7 +161,7 @@ export interface TreeseedHostingVerification {
161
161
  }
162
162
  export interface TreeseedHostingPlan {
163
163
  environment: TreeseedHostingEnvironment;
164
- dryRun: boolean;
164
+ planOnly: boolean;
165
165
  units: Array<{
166
166
  unit: TreeseedHostingUnit;
167
167
  observed: TreeseedHostAdapterOperationResult;
@@ -173,7 +173,7 @@ export interface TreeseedHostingPlan {
173
173
  }
174
174
  export interface TreeseedHostingApplyResult {
175
175
  environment: TreeseedHostingEnvironment;
176
- dryRun: boolean;
176
+ planOnly: boolean;
177
177
  selectedApps?: string[];
178
178
  selectedSystems?: string[];
179
179
  skippedSystems?: Array<{
@@ -3,13 +3,13 @@ import type { TreeseedRunnableBootstrapSystem } from '../reconcile/bootstrap-sys
3
3
  import type { TreeseedHostingApplyResult, TreeseedHostingEnvironment, TreeseedHostingGraph, TreeseedHostingGraphInput, TreeseedHostingPlan, TreeseedHostingPlacementSummary, TreeseedHostingUnit, TreeseedServicePlacement } from './contracts.js';
4
4
  export declare function compileTreeseedHostingGraph(input: TreeseedHostingGraphInput): TreeseedHostingGraph;
5
5
  export declare function planTreeseedHostingGraph(input: TreeseedHostingGraphInput & {
6
- dryRun?: boolean;
6
+ planOnly?: boolean;
7
7
  }): Promise<TreeseedHostingPlan>;
8
8
  /**
9
9
  * @deprecated Use reconcileTreeseedTarget with hosting selectors instead.
10
10
  */
11
11
  export declare function applyTreeseedHostingGraph(input: TreeseedHostingGraphInput & {
12
- dryRun?: boolean;
12
+ planOnly?: boolean;
13
13
  }): Promise<TreeseedHostingApplyResult>;
14
14
  export declare function serializeHostingUnit(unit: TreeseedHostingUnit): {
15
15
  id: string;
@@ -111,7 +111,7 @@ export declare function serializeHostingPlan(plan: TreeseedHostingPlan): {
111
111
  liveVerification: import("../reconcile/platform.js").TreeseedCanonicalLiveVerification;
112
112
  ok: boolean;
113
113
  environment: TreeseedHostingEnvironment;
114
- dryRun: boolean;
114
+ planOnly: boolean;
115
115
  };
116
116
  export declare function serializeHostingApplyResult(result: TreeseedHostingApplyResult): {
117
117
  selectedApps: string[];
@@ -190,6 +190,6 @@ export declare function serializeHostingApplyResult(result: TreeseedHostingApply
190
190
  liveVerification: import("../reconcile/platform.js").TreeseedCanonicalLiveVerification;
191
191
  ok: boolean;
192
192
  environment: TreeseedHostingEnvironment;
193
- dryRun: boolean;
193
+ planOnly: boolean;
194
194
  };
195
195
  export declare function hostingEnvironmentLabel(environment: TreeseedHostingEnvironment): string;
@@ -162,8 +162,8 @@ function railwaySourcePolicy(input, serviceKey, service, imageRef) {
162
162
  const configuredSource = service.railway?.source && typeof service.railway.source === "object" && !Array.isArray(service.railway.source) ? service.railway.source : {};
163
163
  const configuredMode = typeof service.railway?.sourceMode === "string" ? service.railway.sourceMode : null;
164
164
  const repository = typeof service.railway?.sourceRepo === "string" ? service.railway.sourceRepo : typeof configuredSource.repository === "string" ? configuredSource.repository : typeof configuredSource.repo === "string" ? configuredSource.repo : readPackageRepository(resolveRailwayServiceSourceRoot(input, serviceKey, service)) ?? readPackageRepository(input.tenantRoot);
165
- const sourceEligible = ["api", "operationsRunner", "capacityProviderManager", "capacityProviderRunner"].includes(serviceKey);
166
- const mode = input.environment === "prod" ? "image" : configuredMode === "git" || configuredMode === "image" ? configuredMode : imageRef ? "image" : input.environment === "staging" && sourceEligible && repository ? "git" : "git";
165
+ const apiPackageSourceEligible = ["api", "operationsRunner"].includes(serviceKey);
166
+ const mode = input.environment === "prod" ? "image" : input.environment === "staging" && apiPackageSourceEligible ? "git" : configuredMode === "git" || configuredMode === "image" ? configuredMode : imageRef ? "image" : "git";
167
167
  if (mode !== "git") {
168
168
  return {
169
169
  sourceMode: "image",
@@ -721,14 +721,14 @@ async function planTreeseedHostingGraph(input) {
721
721
  const graph = compileTreeseedHostingGraph(input);
722
722
  const units = [];
723
723
  for (const unit of graph.units) {
724
- const observed = await unit.host.refresh({ environment: graph.environment, unit, graph, dryRun: input.dryRun !== false });
725
- const plan = await unit.host.diff({ environment: graph.environment, unit, graph, observed, dryRun: input.dryRun !== false });
726
- const verification = await unit.host.verify({ environment: graph.environment, unit, graph, observed, dryRun: input.dryRun !== false });
724
+ const observed = await unit.host.refresh({ environment: graph.environment, unit, graph, planOnly: input.planOnly !== false });
725
+ const plan = await unit.host.diff({ environment: graph.environment, unit, graph, observed, planOnly: input.planOnly !== false });
726
+ const verification = await unit.host.verify({ environment: graph.environment, unit, graph, observed, planOnly: input.planOnly !== false });
727
727
  units.push({ unit, observed, plan, verification });
728
728
  }
729
729
  return {
730
730
  environment: graph.environment,
731
- dryRun: input.dryRun !== false,
731
+ planOnly: input.planOnly !== false,
732
732
  units,
733
733
  placements: graph.placements,
734
734
  warnings: graph.warnings
@@ -769,10 +769,10 @@ async function applyTreeseedHostingGraph(input) {
769
769
  const graph = compileTreeseedHostingGraph(input);
770
770
  const selectedSystems = railwayReconcileSystemsForUnits(graph.units);
771
771
  const infrastructureUnits = graph.units.filter(isInfrastructureHostedUnit);
772
- if (plan.dryRun) {
772
+ if (plan.planOnly) {
773
773
  return {
774
774
  environment: plan.environment,
775
- dryRun: true,
775
+ planOnly: true,
776
776
  selectedApps: [...new Set(graph.units.map((unit) => unit.application?.id).filter((value) => Boolean(value)))],
777
777
  selectedSystems,
778
778
  skippedSystems: ["web", "data", "github"].filter((system) => !selectedSystems.includes(system)).map((system) => ({ system, reason: selectedSystems.length > 0 ? "Not selected by hosting app filter." : "No Railway reconciliation selected." })),
@@ -794,7 +794,7 @@ async function applyTreeseedHostingGraph(input) {
794
794
  target: createPersistentDeployTarget(graph.environment),
795
795
  systems: selectedSystems.length > 0 ? selectedSystems : void 0,
796
796
  env: railwayEnvForHostingApply(input, graph),
797
- dryRun: plan.dryRun
797
+ planOnly: plan.planOnly
798
798
  });
799
799
  const resultByUnit = /* @__PURE__ */ new Map();
800
800
  for (const entry of reconcile.results) {
@@ -808,11 +808,11 @@ async function applyTreeseedHostingGraph(input) {
808
808
  unit,
809
809
  plan: entry.plan,
810
810
  result: {
811
- status: reconcileResult?.verification?.ready || plan.dryRun ? "ready" : "blocked",
811
+ status: reconcileResult?.verification?.ready || plan.planOnly ? "ready" : "blocked",
812
812
  locators: reconcileResult?.resourceLocators ?? {},
813
813
  state: reconcileResult?.state ?? {
814
814
  unitId: unit.id,
815
- action: plan.dryRun ? "plan" : "unmatched"
815
+ action: plan.planOnly ? "plan" : "unmatched"
816
816
  },
817
817
  warnings: reconcileResult?.warnings ?? []
818
818
  },
@@ -831,9 +831,9 @@ async function applyTreeseedHostingGraph(input) {
831
831
  warnings: reconcileResult.verification.warnings
832
832
  } : {
833
833
  unitId: unit.id,
834
- status: plan.dryRun ? "ready" : "blocked",
835
- verified: plan.dryRun,
836
- checks: plan.dryRun ? [] : [{
834
+ status: plan.planOnly ? "ready" : "blocked",
835
+ verified: plan.planOnly,
836
+ checks: plan.planOnly ? [] : [{
837
837
  key: "reconcile-result",
838
838
  label: "Hosting unit matched a reconcile result",
839
839
  ok: false,
@@ -845,7 +845,7 @@ async function applyTreeseedHostingGraph(input) {
845
845
  });
846
846
  return {
847
847
  environment: plan.environment,
848
- dryRun: plan.dryRun,
848
+ planOnly: plan.planOnly,
849
849
  selectedApps: [...new Set(graph.units.map((unit) => unit.application?.id).filter((value) => Boolean(value)))],
850
850
  selectedSystems,
851
851
  skippedSystems: ["web", "data", "github"].filter((system) => !selectedSystems.includes(system)).map((system) => ({ system, reason: selectedSystems.length > 0 ? "Not selected by hosting app filter." : "No Railway reconciliation selected." })),
@@ -1032,7 +1032,7 @@ function serializeHostingPlan(plan) {
1032
1032
  const canonical = canonicalHostingReportFromPlan(plan);
1033
1033
  return {
1034
1034
  environment: plan.environment,
1035
- dryRun: plan.dryRun,
1035
+ planOnly: plan.planOnly,
1036
1036
  ...canonical,
1037
1037
  selectedApps: [...new Set(plan.units.map((entry) => entry.unit.application?.id).filter((value) => Boolean(value)))],
1038
1038
  selectedSystems,
@@ -1063,7 +1063,7 @@ function serializeHostingApplyResult(result) {
1063
1063
  const canonical = canonicalHostingReportFromApplyResult(result);
1064
1064
  return {
1065
1065
  environment: result.environment,
1066
- dryRun: result.dryRun,
1066
+ planOnly: result.planOnly,
1067
1067
  ...canonical,
1068
1068
  selectedApps: result.selectedApps ?? [],
1069
1069
  selectedSystems: result.selectedSystems ?? [],
@@ -1,5 +1,5 @@
1
1
  export declare const AGENT_OPERATION_NAMES: readonly ["switch", "dev", "verify", "save", "update", "stage", "close", "release"];
2
- export declare const AGENT_OPERATION_MODES: readonly ["dry_run", "read_only", "mutating"];
2
+ export declare const AGENT_OPERATION_MODES: readonly ["plan", "read_only", "mutating"];
3
3
  export type AgentOperationName = (typeof AGENT_OPERATION_NAMES)[number];
4
4
  export type AgentOperationMode = (typeof AGENT_OPERATION_MODES)[number];
5
5
  export type AgentOperationStatus = 'completed' | 'waiting' | 'failed' | 'skipped' | 'retry_created';
@@ -8,7 +8,7 @@ const AGENT_OPERATION_NAMES = [
8
8
  "close",
9
9
  "release"
10
10
  ];
11
- const AGENT_OPERATION_MODES = ["dry_run", "read_only", "mutating"];
11
+ const AGENT_OPERATION_MODES = ["plan", "read_only", "mutating"];
12
12
  function normalizePath(value) {
13
13
  return value.replace(/\\/gu, "/").replace(/^\.?\//u, "").replace(/\/+/gu, "/");
14
14
  }
@@ -718,7 +718,7 @@ class RepositoryHostCreateRepositoriesOperation extends BaseOperation {
718
718
  }
719
719
  return operationResult(this.metadata, await createKnowledgeHubRepositories({
720
720
  plan,
721
- dryRun: input.dryRun === true,
721
+ planOnly: input.planOnly === true,
722
722
  description: typeof input.description === "string" ? input.description : null,
723
723
  homepageUrl: typeof input.homepageUrl === "string" ? input.homepageUrl : null
724
724
  }));
@@ -741,7 +741,7 @@ class ContentPublishOperation extends BaseOperation {
741
741
  const tenantRoot = typeof input.tenantRoot === "string" ? input.tenantRoot : context.cwd;
742
742
  const contentRepositoryRoot = typeof input.contentRepositoryRoot === "string" ? input.contentRepositoryRoot : typeof input.contentRoot === "string" ? input.contentRoot : null;
743
743
  const scope = input.scope === "staging" || input.scope === "prod" || input.scope === "local" ? input.scope : "prod";
744
- if (input.dryRun === true) {
744
+ if (input.planOnly === true) {
745
745
  return operationResult(this.metadata, {
746
746
  status: "planned",
747
747
  tenantRoot,
@@ -358,10 +358,10 @@ export declare function checkTreeseedProviderConnections({ tenantRoot, scope, en
358
358
  issues: any[];
359
359
  }>;
360
360
  export declare function formatTreeseedProviderConnectionReport(report: any): string;
361
- export declare function syncTreeseedGitHubEnvironment({ tenantRoot, scope, dryRun, repository: repositoryInput, valuesOverlay, entryIds, managedHostMode, execution, concurrency, onProgress, }: {
361
+ export declare function syncTreeseedGitHubEnvironment({ tenantRoot, scope, planOnly, repository: repositoryInput, valuesOverlay, entryIds, managedHostMode, execution, concurrency, onProgress, }: {
362
362
  tenantRoot: string;
363
363
  scope?: TreeseedConfigScope;
364
- dryRun?: boolean;
364
+ planOnly?: boolean;
365
365
  repository?: string | null;
366
366
  valuesOverlay?: Record<string, string | undefined>;
367
367
  entryIds?: string[];
@@ -402,10 +402,10 @@ export declare function syncTreeseedGitHubEnvironment({ tenantRoot, scope, dryRu
402
402
  };
403
403
  entryIds: string[] | undefined;
404
404
  }>;
405
- export declare function syncTreeseedCloudflareEnvironment({ tenantRoot, scope, dryRun, valuesOverlay, entryIds, onProgress, }: {
405
+ export declare function syncTreeseedCloudflareEnvironment({ tenantRoot, scope, planOnly, valuesOverlay, entryIds, onProgress, }: {
406
406
  tenantRoot: string;
407
407
  scope?: TreeseedConfigScope;
408
- dryRun?: boolean;
408
+ planOnly?: boolean;
409
409
  valuesOverlay?: Record<string, string | undefined>;
410
410
  entryIds?: string[];
411
411
  onProgress?: (message: string, stream?: 'stdout' | 'stderr') => void;
@@ -420,10 +420,10 @@ export declare function syncTreeseedCloudflareEnvironment({ tenantRoot, scope, d
420
420
  secrets: string[];
421
421
  varsManagedByWranglerConfig: string[];
422
422
  };
423
- export declare function syncTreeseedRailwayEnvironment({ tenantRoot, scope, dryRun, valuesOverlay, entryIds, onProgress, }: {
423
+ export declare function syncTreeseedRailwayEnvironment({ tenantRoot, scope, planOnly, valuesOverlay, entryIds, onProgress, }: {
424
424
  tenantRoot: string;
425
425
  scope?: TreeseedConfigScope;
426
- dryRun?: boolean;
426
+ planOnly?: boolean;
427
427
  valuesOverlay?: Record<string, string | undefined>;
428
428
  entryIds?: string[];
429
429
  onProgress?: (message: string, stream?: 'stdout' | 'stderr') => void;
@@ -441,12 +441,12 @@ export declare function syncTreeseedRailwayEnvironment({ tenantRoot, scope, dryR
441
441
  environmentName: string;
442
442
  secrets: any;
443
443
  variables: any;
444
- dryRun: boolean;
444
+ planOnly: boolean;
445
445
  }[];
446
446
  }>;
447
- export declare function initializeTreeseedPersistentEnvironment({ tenantRoot, scope, dryRun }?: {
447
+ export declare function initializeTreeseedPersistentEnvironment({ tenantRoot, scope, planOnly }?: {
448
448
  scope?: string | undefined;
449
- dryRun?: boolean | undefined;
449
+ planOnly?: boolean | undefined;
450
450
  }): Promise<{
451
451
  scope: string;
452
452
  target: {
@@ -1836,8 +1836,8 @@ function assertTreeseedCommandEnvironment({ tenantRoot, scope, purpose }) {
1836
1836
  error.details = report.validation;
1837
1837
  throw error;
1838
1838
  }
1839
- function runGh(args, { cwd, dryRun = false, input, env } = {}) {
1840
- if (dryRun) {
1839
+ function runGh(args, { cwd, planOnly = false, input, env } = {}) {
1840
+ if (planOnly) {
1841
1841
  return { status: 0, stdout: "", stderr: "" };
1842
1842
  }
1843
1843
  const gh = resolveTreeseedToolBinary("gh", { env });
@@ -2374,7 +2374,7 @@ function createGitHubConfigSyncUnits({
2374
2374
  async function syncTreeseedGitHubEnvironment({
2375
2375
  tenantRoot,
2376
2376
  scope = "prod",
2377
- dryRun = false,
2377
+ planOnly = false,
2378
2378
  repository: repositoryInput,
2379
2379
  valuesOverlay = {},
2380
2380
  entryIds,
@@ -2433,7 +2433,7 @@ async function syncTreeseedGitHubEnvironment({
2433
2433
  }
2434
2434
  let completed = 0;
2435
2435
  const total = items.length;
2436
- if (!dryRun) {
2436
+ if (!planOnly) {
2437
2437
  const units = createGitHubConfigSyncUnits({ scope, repository, environment, items });
2438
2438
  if (units.length === 0) {
2439
2439
  progress(`[${scope}][github][sync] Complete: 0 secrets, 0 variables, 0 total.`);
@@ -2515,7 +2515,7 @@ async function syncTreeseedGitHubEnvironment({
2515
2515
  function syncTreeseedCloudflareEnvironment({
2516
2516
  tenantRoot,
2517
2517
  scope = "prod",
2518
- dryRun = false,
2518
+ planOnly = false,
2519
2519
  valuesOverlay = {},
2520
2520
  entryIds,
2521
2521
  onProgress
@@ -2538,7 +2538,7 @@ function syncTreeseedCloudflareEnvironment({
2538
2538
  const cloudflareSecrets = Object.fromEntries(registry.entries.filter((entry) => entry.scopes.includes(scope) && entry.targets.includes("cloudflare-secret") && (!entryFilter || entryFilter.has(entry.id))).map((entry) => [entry.id, values[entry.id]]).filter(([, value]) => typeof value === "string" && value.length > 0));
2539
2539
  progress(`[${scope}][cloudflare][sync] Syncing Cloudflare secrets...`);
2540
2540
  const syncedSecrets = syncCloudflareSecrets(tenantRoot, {
2541
- dryRun,
2541
+ planOnly,
2542
2542
  target,
2543
2543
  extraSecrets: cloudflareSecrets,
2544
2544
  entryIds
@@ -2564,7 +2564,7 @@ function railwayEnvironmentEntryIdsForService(registry, values, scope, target, s
2564
2564
  async function syncTreeseedRailwayEnvironment({
2565
2565
  tenantRoot,
2566
2566
  scope = "prod",
2567
- dryRun = false,
2567
+ planOnly = false,
2568
2568
  valuesOverlay = {},
2569
2569
  entryIds,
2570
2570
  onProgress
@@ -2608,13 +2608,13 @@ async function syncTreeseedRailwayEnvironment({
2608
2608
  environmentName,
2609
2609
  secrets: railwayEnvironmentEntryIdsForService(registry, serviceValues, scope, "railway-secret", service.key, entryFilter),
2610
2610
  variables: railwayEnvironmentEntryIdsForService(registry, serviceValues, scope, "railway-var", service.key, entryFilter),
2611
- dryRun
2611
+ planOnly
2612
2612
  };
2613
2613
  }).filter(Boolean);
2614
2614
  for (const service of services) {
2615
2615
  const serviceValues = serviceValuesByName.get(service.serviceName || service.serviceId || service.instanceKey || service.service) ?? values;
2616
2616
  progress(`[${scope}][railway][${service.service}] Syncing ${service.secrets.length} secrets and ${service.variables.length} variables...`);
2617
- if (!dryRun) {
2617
+ if (!planOnly) {
2618
2618
  const railwayEnv = { ...process.env, ...values };
2619
2619
  const project = (await ensureRailwayProject({
2620
2620
  projectId: "",
@@ -2653,7 +2653,7 @@ async function syncTreeseedRailwayEnvironment({
2653
2653
  services
2654
2654
  };
2655
2655
  }
2656
- async function initializeTreeseedPersistentEnvironment({ tenantRoot, scope = "prod", dryRun = false } = {}) {
2656
+ async function initializeTreeseedPersistentEnvironment({ tenantRoot, scope = "prod", planOnly = false } = {}) {
2657
2657
  const normalizedScope = scope === "prod" ? "prod" : scope;
2658
2658
  const target = createPersistentDeployTarget(normalizedScope);
2659
2659
  const summary = await reconcileTreeseedTarget({
@@ -218,8 +218,8 @@ export declare function buildTreeseedManagedCloudflareCacheRules(deployConfig: a
218
218
  };
219
219
  enabled: boolean;
220
220
  }[];
221
- export declare function reconcileCloudflareWebCacheRules(tenantRoot: any, deployConfig: any, state: any, target: any, { dryRun, env: providedEnv }?: {
222
- dryRun?: boolean | undefined;
221
+ export declare function reconcileCloudflareWebCacheRules(tenantRoot: any, deployConfig: any, state: any, target: any, { planOnly, env: providedEnv }?: {
222
+ planOnly?: boolean | undefined;
223
223
  }): {
224
224
  managed: boolean;
225
225
  skipped: boolean;
@@ -232,14 +232,14 @@ export declare function reconcileCloudflareWebCacheRules(tenantRoot: any, deploy
232
232
  managed: boolean;
233
233
  skipped: boolean;
234
234
  reason: string;
235
- dryRun?: undefined;
235
+ planOnly?: undefined;
236
236
  zoneId?: undefined;
237
237
  host?: undefined;
238
238
  rules?: undefined;
239
239
  rulesetId?: undefined;
240
240
  } | {
241
241
  managed: boolean;
242
- dryRun: boolean;
242
+ planOnly: boolean;
243
243
  zoneId: any;
244
244
  host: any;
245
245
  rules: {
@@ -277,7 +277,7 @@ export declare function reconcileCloudflareWebCacheRules(tenantRoot: any, deploy
277
277
  rulesetId: any;
278
278
  skipped?: undefined;
279
279
  reason?: undefined;
280
- dryRun?: undefined;
280
+ planOnly?: undefined;
281
281
  rules?: undefined;
282
282
  })[];
283
283
  skipped?: undefined;
@@ -341,8 +341,8 @@ export declare function validateDestroyPrerequisites(tenantRoot: any, { requireR
341
341
  }): import("../../platform/contracts.js").TreeseedDeployConfig;
342
342
  export declare function shouldDeleteRailwayProjectAfterEnvironmentDestroy(project: any, scope: any, deleteData: any, deletedEnvironmentId?: null): boolean;
343
343
  export declare function setDestroyDockerRunnerForTests(runner: any): void;
344
- export declare function dockerLocalRuntimeResourceOperations({ dryRun }?: {
345
- dryRun?: boolean | undefined;
344
+ export declare function dockerLocalRuntimeResourceOperations({ planOnly }?: {
345
+ planOnly?: boolean | undefined;
346
346
  }): any[];
347
347
  export declare function cloudflareDestroyVerification(tenantRoot: any, deployConfig: any, state: any, env: any): {
348
348
  provider: string;
@@ -627,7 +627,7 @@ export declare function verifyProvisionedCloudflareResources(tenantRoot: any, op
627
627
  };
628
628
  export declare function runRemoteD1Migrations(tenantRoot: any, options?: {}): {
629
629
  databaseName: any;
630
- dryRun: boolean;
630
+ planOnly: boolean;
631
631
  };
632
632
  export declare function markDeploymentInitialized(tenantRoot: any, options?: {}): any;
633
633
  export declare function markManagedServicesInitialized(tenantRoot: any, options?: {}): any;