openship 0.6.8 → 0.7.0

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 (58) hide show
  1. package/dist/bare-3POKLHTW.js +29 -0
  2. package/dist/{chunk-UAWY6X7V.js → chunk-3KUW2UC6.js} +470 -59
  3. package/dist/{chunk-GNOMEMNI.js → chunk-3LWGDMJU.js} +1 -1
  4. package/dist/{chunk-ENKJ7XIF.js → chunk-5CFUYMPE.js} +11 -11
  5. package/dist/{chunk-NUT6HKK6.js → chunk-5D27WZBW.js} +5 -5
  6. package/dist/{chunk-NIYD7MD2.js → chunk-7MKZP4TW.js} +89 -45
  7. package/dist/{chunk-IAMOUDHY.js → chunk-AUBB5DLY.js} +24 -15
  8. package/dist/{chunk-7PEXM2UI.js → chunk-BOD2IQ3P.js} +6 -6
  9. package/dist/{chunk-D6HU4VUZ.js → chunk-CMGRMPRQ.js} +1 -1
  10. package/dist/{chunk-MUWVC5R4.js → chunk-DZBXOF5Q.js} +11 -8
  11. package/dist/{chunk-BO6CY4V2.js → chunk-GEHV7JBS.js} +47 -4
  12. package/dist/{chunk-R5DC5PEF.js → chunk-GYDROM4W.js} +39 -10
  13. package/dist/{chunk-TAZZZKYO.js → chunk-HBQWOJRP.js} +1 -1
  14. package/dist/{chunk-WEZFTL4V.js → chunk-IVRTIKNZ.js} +183 -0
  15. package/dist/{chunk-P7RCYELG.js → chunk-J2NDOB7D.js} +1 -1
  16. package/dist/{chunk-T6DVUX4F.js → chunk-J4SYG2LC.js} +14 -3
  17. package/dist/{chunk-VAI5VOOI.js → chunk-JAKVPLHT.js} +1 -1
  18. package/dist/{chunk-NPSRGIHV.js → chunk-JWW5YAFL.js} +5 -4
  19. package/dist/{chunk-RCMERVBL.js → chunk-KYTTPWRP.js} +9 -9
  20. package/dist/{chunk-7YBWXEM6.js → chunk-LL7M7GL4.js} +4 -4
  21. package/dist/{chunk-SK4FFCFR.js → chunk-MZYD3LFP.js} +1 -1
  22. package/dist/{chunk-6GU6JSK6.js → chunk-QNQFS37A.js} +3 -3
  23. package/dist/{chunk-T46BQOLY.js → chunk-RHHCAWW3.js} +3 -3
  24. package/dist/{chunk-5UXHT6ED.js → chunk-SPR7N2EK.js} +113 -20
  25. package/dist/{chunk-AHJYP7DG.js → chunk-SYQ3FOLE.js} +74 -17
  26. package/dist/{chunk-3MP6ACKM.js → chunk-TPGBT5UR.js} +185 -78
  27. package/dist/{chunk-5I3COAFH.js → chunk-TT7P5ZZ3.js} +8 -8
  28. package/dist/{chunk-D3OEMXYP.js → chunk-XQC6KYZD.js} +12 -7
  29. package/dist/{chunk-X53JXRS4.js → chunk-YGA52DHX.js} +3 -3
  30. package/dist/{chunk-5DJOB7IX.js → chunk-ZFA3MZ5N.js} +3 -3
  31. package/dist/{cloud-REV3DPJH.js → cloud-RFZSO6P5.js} +19 -19
  32. package/dist/{detect-BBFT5GEU.js → detect-NXD3PYBM.js} +4 -4
  33. package/dist/{docker-EG3QSE6I.js → docker-U5APUZBI.js} +10 -10
  34. package/dist/{docker-edge-executor-E5TOTLMR.js → docker-edge-executor-HUQOWFQU.js} +7 -7
  35. package/dist/{edge-import-YJVJUGYC.js → edge-import-UXD52WQR.js} +26 -26
  36. package/dist/{edge-preflight-QUW4BM7N.js → edge-preflight-3PMJ5BWM.js} +13 -13
  37. package/dist/{ensure-container-edge-FOEFQ3PI.js → ensure-container-edge-GDPY7UJD.js} +11 -11
  38. package/dist/{executor-NTWDJ3DB.js → executor-XOVSO6QZ.js} +6 -6
  39. package/dist/{host-channel-preflight-OMCZMMKR.js → host-channel-preflight-T2QUDQXU.js} +26 -26
  40. package/dist/index.js +71 -49
  41. package/dist/{local-executor-OQ2GRN7K.js → local-executor-KR7BFCJP.js} +3 -3
  42. package/dist/{nginx-4U4C2XUS.js → nginx-JMLAS7YS.js} +9 -9
  43. package/dist/{openresty-lua-LLWT5XQW.js → openresty-lua-FJH3KEC4.js} +7 -7
  44. package/dist/{privilege-MNDVMDST.js → privilege-H2QTJ5TE.js} +5 -5
  45. package/dist/server/index.js +9760 -4421
  46. package/dist/server/lua/site_logger.lua +18 -1
  47. package/dist/server/migrations/0117_github_installation_workspace_scope.sql +24 -0
  48. package/dist/server/migrations/0118_git_sources.sql +66 -0
  49. package/dist/server/migrations/0119_backup_run_batch.sql +8 -0
  50. package/dist/server/migrations/0120_domain_primary_unique.sql +24 -0
  51. package/dist/server/migrations/0121_host_port_claim_overlap.sql +14 -0
  52. package/dist/server/migrations/meta/_journal.json +35 -0
  53. package/dist/{setup-IFIMPQZJ.js → setup-ERGE5XNW.js} +12 -12
  54. package/dist/{ssh-client-2XWZCMGI.js → ssh-client-WVLLOAYK.js} +2 -2
  55. package/dist/up-EFCE6KA6.js +61 -0
  56. package/package.json +1 -1
  57. package/dist/bare-FA66N7GC.js +0 -29
  58. package/dist/up-HQS7IR7H.js +0 -61
@@ -127,6 +127,23 @@ local function normalize_path(u)
127
127
  return path
128
128
  end
129
129
 
130
+ -- Raw request telemetry must never retain credentials from a URL. Query
131
+ -- strings routinely carry OAuth codes, signed URLs and tokens, so exclude them
132
+ -- completely. Invitation claim ids are bearer credentials in the path itself;
133
+ -- collapse those two known routes before either top-path aggregation or the
134
+ -- one-hour request ring can observe them.
135
+ local function telemetry_uri(u)
136
+ local path = u:match("^([^?#]*)") or "/"
137
+ if path == "" then return "/" end
138
+ if path:match("^/accept%-invite/[^/]+") then
139
+ return "/accept-invite/:token"
140
+ end
141
+ if path:match("^/api/auth/invitation%-preview/[^/]+") then
142
+ return "/api/auth/invitation-preview/:token"
143
+ end
144
+ return path
145
+ end
146
+
130
147
  -- ── Enumerable sets, without a zone scan ─────────────────────────────────────
131
148
  --
132
149
  -- Reading these counters back used to need key DISCOVERY, and a shared dict offers exactly
@@ -183,7 +200,7 @@ if not host then return end
183
200
  local ip = ngx.var.remote_addr or "0.0.0.0"
184
201
  local ts = ngx.now()
185
202
  local ua = ngx.var.http_user_agent or ""
186
- local uri = ngx.var.request_uri or "/"
203
+ local uri = telemetry_uri(ngx.var.request_uri or "/")
187
204
  local req_len = tonumber(ngx.var.request_length) or 0
188
205
  local bytes = tonumber(ngx.var.bytes_sent) or 0
189
206
  local rt = tonumber(ngx.var.request_time) or 0 -- seconds (float)
@@ -0,0 +1,24 @@
1
+ -- GitHub App installations belong to an Openship workspace, not to whichever
2
+ -- user happened to connect them. Keep the most recently reconciled legacy row
3
+ -- for each workspace/owner before installing the new uniqueness boundary.
4
+ ALTER TABLE "git_installation" ADD COLUMN IF NOT EXISTS "suspended_at" timestamp;
5
+ --> statement-breakpoint
6
+
7
+ WITH ranked AS (
8
+ SELECT
9
+ id,
10
+ row_number() OVER (
11
+ PARTITION BY provider, lower(owner), organization_id
12
+ ORDER BY updated_at DESC, created_at DESC, id DESC
13
+ ) AS rn
14
+ FROM git_installation
15
+ )
16
+ DELETE FROM git_installation
17
+ WHERE id IN (SELECT id FROM ranked WHERE rn > 1);
18
+ --> statement-breakpoint
19
+
20
+ DROP INDEX IF EXISTS "uq_git_installation_provider_owner_user";
21
+ --> statement-breakpoint
22
+
23
+ CREATE UNIQUE INDEX IF NOT EXISTS "uq_git_installation_provider_owner_org"
24
+ ON "git_installation" ("provider", "owner", "organization_id");
@@ -0,0 +1,66 @@
1
+ CREATE TABLE "git_source" (
2
+ "id" text PRIMARY KEY NOT NULL,
3
+ "organization_id" text NOT NULL,
4
+ "provider" text DEFAULT 'github' NOT NULL,
5
+ "name" text NOT NULL,
6
+ "app_id" integer NOT NULL,
7
+ "slug" text NOT NULL,
8
+ "client_id" text,
9
+ "app_name" text,
10
+ "avatar_url" text,
11
+ "api_base_url" text DEFAULT 'https://api.github.com' NOT NULL,
12
+ "web_base_url" text DEFAULT 'https://github.com' NOT NULL,
13
+ "webhook_url" text NOT NULL,
14
+ "secrets_enc" text NOT NULL,
15
+ "is_default" boolean DEFAULT false NOT NULL,
16
+ "status" text DEFAULT 'active' NOT NULL,
17
+ "last_verified_at" timestamp,
18
+ "last_error" text,
19
+ "created_at" timestamp DEFAULT now() NOT NULL,
20
+ "updated_at" timestamp DEFAULT now() NOT NULL,
21
+ CONSTRAINT "git_source_organization_id_organization_id_fk"
22
+ FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id")
23
+ ON DELETE cascade ON UPDATE no action
24
+ );
25
+ --> statement-breakpoint
26
+ CREATE INDEX "idx_git_source_org_provider"
27
+ ON "git_source" USING btree ("organization_id", "provider");
28
+ --> statement-breakpoint
29
+ CREATE UNIQUE INDEX "uq_git_source_org_provider_name"
30
+ ON "git_source" USING btree ("organization_id", "provider", lower("name"));
31
+ --> statement-breakpoint
32
+ CREATE UNIQUE INDEX "uq_git_source_org_provider_app"
33
+ ON "git_source" USING btree ("organization_id", "provider", "api_base_url", "app_id");
34
+ --> statement-breakpoint
35
+ CREATE UNIQUE INDEX "uq_git_source_org_provider_default"
36
+ ON "git_source" USING btree ("organization_id", "provider")
37
+ WHERE "git_source"."is_default" = true;
38
+ --> statement-breakpoint
39
+ ALTER TABLE "git_installation" ADD COLUMN "source_id" text;
40
+ --> statement-breakpoint
41
+ ALTER TABLE "git_installation" ADD CONSTRAINT "git_installation_source_id_git_source_id_fk"
42
+ FOREIGN KEY ("source_id") REFERENCES "public"."git_source"("id")
43
+ ON DELETE cascade ON UPDATE no action;
44
+ --> statement-breakpoint
45
+ DROP INDEX IF EXISTS "uq_git_installation_provider_owner_org";
46
+ --> statement-breakpoint
47
+ CREATE UNIQUE INDEX "uq_git_installation_provider_owner_org_legacy"
48
+ ON "git_installation" USING btree ("provider", "owner", "organization_id")
49
+ WHERE "git_installation"."source_id" IS NULL;
50
+ --> statement-breakpoint
51
+ CREATE UNIQUE INDEX "uq_git_installation_provider_owner_org_source"
52
+ ON "git_installation" USING btree ("provider", "owner", "organization_id", "source_id")
53
+ WHERE "git_installation"."source_id" IS NOT NULL;
54
+ --> statement-breakpoint
55
+ CREATE INDEX "idx_git_installation_source"
56
+ ON "git_installation" USING btree ("source_id", "installation_id");
57
+ --> statement-breakpoint
58
+ ALTER TABLE "github_install_state" ADD COLUMN "source_id" text;
59
+ --> statement-breakpoint
60
+ ALTER TABLE "github_install_state" ADD COLUMN "flow" text DEFAULT 'install' NOT NULL;
61
+ --> statement-breakpoint
62
+ ALTER TABLE "github_install_state" ADD COLUMN "payload" jsonb DEFAULT '{}'::jsonb NOT NULL;
63
+ --> statement-breakpoint
64
+ ALTER TABLE "github_install_state" ADD CONSTRAINT "github_install_state_source_id_git_source_id_fk"
65
+ FOREIGN KEY ("source_id") REFERENCES "public"."git_source"("id")
66
+ ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,8 @@
1
+ -- A project-default policy creates one child run per enabled service. Persist
2
+ -- the enqueue identity so read models can aggregate exact siblings without
3
+ -- co-mingling unrelated triggers that happened close together.
4
+ ALTER TABLE "backup_run" ADD COLUMN "batch_id" text;
5
+ --> statement-breakpoint
6
+ CREATE INDEX "idx_backup_run_policy_batch"
7
+ ON "backup_run" ("policy_id", "batch_id")
8
+ WHERE "batch_id" IS NOT NULL AND "deleted_at" IS NULL;
@@ -0,0 +1,24 @@
1
+ -- Older route-sync writes could mark a new primary without clearing the old
2
+ -- one. Keep the most recently touched row: it is the best durable signal for
3
+ -- the user's last selection, with creation time and id as deterministic ties.
4
+ WITH ranked_primaries AS (
5
+ SELECT
6
+ "id",
7
+ row_number() OVER (
8
+ PARTITION BY "project_id"
9
+ ORDER BY "updated_at" DESC, "created_at" DESC, "id" DESC
10
+ ) AS "rank"
11
+ FROM "domain"
12
+ WHERE "project_id" IS NOT NULL AND "is_primary" = true
13
+ )
14
+ UPDATE "domain"
15
+ SET "is_primary" = false, "updated_at" = now()
16
+ WHERE "id" IN (
17
+ SELECT "id" FROM ranked_primaries WHERE "rank" > 1
18
+ );
19
+ --> statement-breakpoint
20
+ -- Repository transactions make promotion orderly; this index makes the
21
+ -- invariant impossible to bypass through another writer or a concurrent race.
22
+ CREATE UNIQUE INDEX IF NOT EXISTS "uq_domain_project_primary"
23
+ ON "domain" ("project_id")
24
+ WHERE "is_primary" = true AND "project_id" IS NOT NULL;
@@ -0,0 +1,14 @@
1
+ -- A routed workload may need a new loopback port while its previous route is
2
+ -- still live. Keep both claims through that make-before-break window; the
3
+ -- route-aware convergence pass removes the old claim only after a fresh edge
4
+ -- scan proves no vhost still dials it. The target/port unique index remains the
5
+ -- collision authority, so this does not permit two workloads to share a port.
6
+ DROP INDEX IF EXISTS "uq_host_port_claim_target_owner";
7
+ --> statement-breakpoint
8
+ CREATE INDEX IF NOT EXISTS "idx_host_port_claim_target_owner"
9
+ ON "host_port_claim" (
10
+ "target_key",
11
+ "project_id",
12
+ COALESCE("service_id", ''),
13
+ COALESCE("container_port", 0)
14
+ );
@@ -820,6 +820,41 @@
820
820
  "when": 1788992507325,
821
821
  "tag": "0116_domain_ssl_challenge",
822
822
  "breakpoints": true
823
+ },
824
+ {
825
+ "idx": 117,
826
+ "version": "7",
827
+ "when": 1789078907325,
828
+ "tag": "0117_github_installation_workspace_scope",
829
+ "breakpoints": true
830
+ },
831
+ {
832
+ "idx": 118,
833
+ "version": "7",
834
+ "when": 1789165307325,
835
+ "tag": "0118_git_sources",
836
+ "breakpoints": true
837
+ },
838
+ {
839
+ "idx": 119,
840
+ "version": "7",
841
+ "when": 1789251707325,
842
+ "tag": "0119_backup_run_batch",
843
+ "breakpoints": true
844
+ },
845
+ {
846
+ "idx": 120,
847
+ "version": "7",
848
+ "when": 1789338107325,
849
+ "tag": "0120_domain_primary_unique",
850
+ "breakpoints": true
851
+ },
852
+ {
853
+ "idx": 121,
854
+ "version": "7",
855
+ "when": 1789424507325,
856
+ "tag": "0121_host_port_claim_overlap",
857
+ "breakpoints": true
823
858
  }
824
859
  ]
825
860
  }
@@ -4,21 +4,21 @@ import { createRequire as __ospCreateRequire } from "node:module";
4
4
  const require = __ospCreateRequire(import.meta.url);
5
5
  import {
6
6
  SystemManager
7
- } from "./chunk-R5DC5PEF.js";
8
- import "./chunk-NIYD7MD2.js";
9
- import "./chunk-IAMOUDHY.js";
10
- import "./chunk-7PEXM2UI.js";
7
+ } from "./chunk-GYDROM4W.js";
8
+ import "./chunk-7MKZP4TW.js";
9
+ import "./chunk-AUBB5DLY.js";
10
+ import "./chunk-BOD2IQ3P.js";
11
11
  import "./chunk-I3DPMTSF.js";
12
12
  import "./chunk-R4VDPFLS.js";
13
- import "./chunk-T46BQOLY.js";
14
- import "./chunk-GNOMEMNI.js";
15
- import "./chunk-NPSRGIHV.js";
16
- import "./chunk-P7RCYELG.js";
17
- import "./chunk-X53JXRS4.js";
18
- import "./chunk-BO6CY4V2.js";
19
- import "./chunk-D6HU4VUZ.js";
13
+ import "./chunk-RHHCAWW3.js";
14
+ import "./chunk-3LWGDMJU.js";
15
+ import "./chunk-JWW5YAFL.js";
16
+ import "./chunk-J2NDOB7D.js";
17
+ import "./chunk-YGA52DHX.js";
18
+ import "./chunk-GEHV7JBS.js";
19
+ import "./chunk-CMGRMPRQ.js";
20
20
  import "./chunk-N5YZMO33.js";
21
- import "./chunk-WEZFTL4V.js";
21
+ import "./chunk-IVRTIKNZ.js";
22
22
  import "./chunk-PXKCZB2I.js";
23
23
  export {
24
24
  SystemManager
@@ -12,9 +12,9 @@ import {
12
12
  openSftp,
13
13
  openSshExecChannel,
14
14
  openSshUnixSocket
15
- } from "./chunk-TAZZZKYO.js";
15
+ } from "./chunk-HBQWOJRP.js";
16
16
  import "./chunk-N5YZMO33.js";
17
- import "./chunk-WEZFTL4V.js";
17
+ import "./chunk-IVRTIKNZ.js";
18
18
  import "./chunk-PXKCZB2I.js";
19
19
  export {
20
20
  DOCKER_DIAL_STDIO_COMMAND,
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env sh
2
+ ":" //# ; exec "$(command -v node || command -v bun)" "$0" "$@"
3
+ import { createRequire as __ospCreateRequire } from "node:module";
4
+ const require = __ospCreateRequire(import.meta.url);
5
+ import {
6
+ normalizeUrl,
7
+ runHeadlessProvision,
8
+ startService,
9
+ upCommand
10
+ } from "./chunk-KYTTPWRP.js";
11
+ import "./chunk-TT7P5ZZ3.js";
12
+ import "./chunk-LL7M7GL4.js";
13
+ import "./chunk-SPR7N2EK.js";
14
+ import "./chunk-QWHBRY2K.js";
15
+ import "./chunk-5D27WZBW.js";
16
+ import "./chunk-ELGRMZOW.js";
17
+ import "./chunk-GYDROM4W.js";
18
+ import "./chunk-ONKEYSMY.js";
19
+ import "./chunk-XZYFZ6A5.js";
20
+ import "./chunk-PDW4L3NV.js";
21
+ import "./chunk-DOD2BXHQ.js";
22
+ import "./chunk-42WQABXM.js";
23
+ import "./chunk-DRK3MEDS.js";
24
+ import "./chunk-3NQQXMDR.js";
25
+ import "./chunk-ZWLDLTJP.js";
26
+ import "./chunk-XQC6KYZD.js";
27
+ import "./chunk-DZBXOF5Q.js";
28
+ import "./chunk-7MKZP4TW.js";
29
+ import "./chunk-AUBB5DLY.js";
30
+ import "./chunk-BOD2IQ3P.js";
31
+ import "./chunk-I3DPMTSF.js";
32
+ import "./chunk-WNWQBB7F.js";
33
+ import "./chunk-NRU2EBYZ.js";
34
+ import "./chunk-RHLNVZMS.js";
35
+ import "./chunk-TPGBT5UR.js";
36
+ import "./chunk-QNQFS37A.js";
37
+ import "./chunk-5CFUYMPE.js";
38
+ import "./chunk-ZFA3MZ5N.js";
39
+ import "./chunk-MZYD3LFP.js";
40
+ import "./chunk-SYQ3FOLE.js";
41
+ import "./chunk-3KUW2UC6.js";
42
+ import "./chunk-R4VDPFLS.js";
43
+ import "./chunk-JAKVPLHT.js";
44
+ import "./chunk-HBQWOJRP.js";
45
+ import "./chunk-J4SYG2LC.js";
46
+ import "./chunk-RHHCAWW3.js";
47
+ import "./chunk-3LWGDMJU.js";
48
+ import "./chunk-JWW5YAFL.js";
49
+ import "./chunk-J2NDOB7D.js";
50
+ import "./chunk-YGA52DHX.js";
51
+ import "./chunk-GEHV7JBS.js";
52
+ import "./chunk-CMGRMPRQ.js";
53
+ import "./chunk-N5YZMO33.js";
54
+ import "./chunk-IVRTIKNZ.js";
55
+ import "./chunk-PXKCZB2I.js";
56
+ export {
57
+ normalizeUrl,
58
+ runHeadlessProvision,
59
+ startService,
60
+ upCommand
61
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openship",
3
- "version": "0.6.8",
3
+ "version": "0.7.0",
4
4
  "description": "Openship CLI - deploy, manage, and open your Openship platform from the terminal",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env sh
2
- ":" //# ; exec "$(command -v node || command -v bun)" "$0" "$@"
3
- import { createRequire as __ospCreateRequire } from "node:module";
4
- const require = __ospCreateRequire(import.meta.url);
5
- import {
6
- BareRuntime,
7
- STATIC_RELEASE_BASE
8
- } from "./chunk-ENKJ7XIF.js";
9
- import "./chunk-5DJOB7IX.js";
10
- import "./chunk-SK4FFCFR.js";
11
- import "./chunk-AHJYP7DG.js";
12
- import "./chunk-UAWY6X7V.js";
13
- import "./chunk-R4VDPFLS.js";
14
- import "./chunk-VAI5VOOI.js";
15
- import "./chunk-TAZZZKYO.js";
16
- import "./chunk-T6DVUX4F.js";
17
- import "./chunk-T46BQOLY.js";
18
- import "./chunk-GNOMEMNI.js";
19
- import "./chunk-NPSRGIHV.js";
20
- import "./chunk-P7RCYELG.js";
21
- import "./chunk-BO6CY4V2.js";
22
- import "./chunk-D6HU4VUZ.js";
23
- import "./chunk-N5YZMO33.js";
24
- import "./chunk-WEZFTL4V.js";
25
- import "./chunk-PXKCZB2I.js";
26
- export {
27
- BareRuntime,
28
- STATIC_RELEASE_BASE
29
- };
@@ -1,61 +0,0 @@
1
- #!/usr/bin/env sh
2
- ":" //# ; exec "$(command -v node || command -v bun)" "$0" "$@"
3
- import { createRequire as __ospCreateRequire } from "node:module";
4
- const require = __ospCreateRequire(import.meta.url);
5
- import {
6
- normalizeUrl,
7
- runHeadlessProvision,
8
- startService,
9
- upCommand
10
- } from "./chunk-RCMERVBL.js";
11
- import "./chunk-5I3COAFH.js";
12
- import "./chunk-7YBWXEM6.js";
13
- import "./chunk-5UXHT6ED.js";
14
- import "./chunk-QWHBRY2K.js";
15
- import "./chunk-NUT6HKK6.js";
16
- import "./chunk-ELGRMZOW.js";
17
- import "./chunk-R5DC5PEF.js";
18
- import "./chunk-ONKEYSMY.js";
19
- import "./chunk-XZYFZ6A5.js";
20
- import "./chunk-PDW4L3NV.js";
21
- import "./chunk-DOD2BXHQ.js";
22
- import "./chunk-42WQABXM.js";
23
- import "./chunk-DRK3MEDS.js";
24
- import "./chunk-3NQQXMDR.js";
25
- import "./chunk-ZWLDLTJP.js";
26
- import "./chunk-D3OEMXYP.js";
27
- import "./chunk-MUWVC5R4.js";
28
- import "./chunk-NIYD7MD2.js";
29
- import "./chunk-IAMOUDHY.js";
30
- import "./chunk-7PEXM2UI.js";
31
- import "./chunk-I3DPMTSF.js";
32
- import "./chunk-WNWQBB7F.js";
33
- import "./chunk-NRU2EBYZ.js";
34
- import "./chunk-RHLNVZMS.js";
35
- import "./chunk-3MP6ACKM.js";
36
- import "./chunk-6GU6JSK6.js";
37
- import "./chunk-ENKJ7XIF.js";
38
- import "./chunk-5DJOB7IX.js";
39
- import "./chunk-SK4FFCFR.js";
40
- import "./chunk-AHJYP7DG.js";
41
- import "./chunk-UAWY6X7V.js";
42
- import "./chunk-R4VDPFLS.js";
43
- import "./chunk-VAI5VOOI.js";
44
- import "./chunk-TAZZZKYO.js";
45
- import "./chunk-T6DVUX4F.js";
46
- import "./chunk-T46BQOLY.js";
47
- import "./chunk-GNOMEMNI.js";
48
- import "./chunk-NPSRGIHV.js";
49
- import "./chunk-P7RCYELG.js";
50
- import "./chunk-X53JXRS4.js";
51
- import "./chunk-BO6CY4V2.js";
52
- import "./chunk-D6HU4VUZ.js";
53
- import "./chunk-N5YZMO33.js";
54
- import "./chunk-WEZFTL4V.js";
55
- import "./chunk-PXKCZB2I.js";
56
- export {
57
- normalizeUrl,
58
- runHeadlessProvision,
59
- startService,
60
- upCommand
61
- };