@amerged/ohmyhost-mcp 0.1.19 → 0.1.21

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.
@@ -1,7 +1,7 @@
1
1
  const failures = {
2
2
  operation_abandoned: [
3
3
  "The operation stopped renewing its execution lease and was ended.",
4
- "Inspect project status and deployment diagnostics before creating a fresh plan. Keep this operation ID; the expired execution cannot resume.",
4
+ "Inspect project status and, when this operation names a deployment_id, its diagnostics with 'ohmyhost deployment logs --project PROJECT_ULID --deployment DEPLOYMENT_ULID --follow --json' or MCP deployment_logs before creating a fresh plan. Keep this operation ID; the expired execution cannot resume.",
5
5
  ],
6
6
  database_write_rejected: [
7
7
  "The database rejected this write; it was not committed.",
@@ -66,7 +66,7 @@ const failures = {
66
66
  ],
67
67
  build_failed: [
68
68
  "The build did not produce a verified deployable artifact.",
69
- "Inspect the deployment build diagnostics and verify the install and build commands for the admitted commit. Correct the reported failure before planning a new deployment.",
69
+ "Read the BUILD_FAILED diagnostic of this operation's deployment_id with 'ohmyhost deployment logs --project PROJECT_ULID --deployment DEPLOYMENT_ULID --follow --json' or MCP deployment_logs; its excerpt is the tail of the install and build output. Correct that failure and verify the commands for the admitted commit before planning a new deployment.",
70
70
  ],
71
71
  insufficient_organization_credits: [
72
72
  "The organization does not have sufficient available credits for this operation.",
@@ -82,7 +82,7 @@ const failures = {
82
82
  ],
83
83
  runtime_candidate_failed: [
84
84
  "The deployed candidate failed its runtime checks.",
85
- "Inspect deployment runtime diagnostics, required secrets and the health-check route before creating a new deployment plan.",
85
+ "Read the HEALTH_CHECK_FAILED diagnostic of this operation's deployment_id with 'ohmyhost deployment logs --project PROJECT_ULID --deployment DEPLOYMENT_ULID --follow --json' or MCP deployment_logs. Its route must answer 2xx to a cookieless GET without a redirect; status_code and, for owners, excerpt show what it answered. Fix that, often a missing secret or a redirect, then plan a new deployment.",
86
86
  ],
87
87
  runtime_candidate_rejected: [
88
88
  "The runtime rejected the built Worker script.",
@@ -45,12 +45,14 @@ export {
45
45
  getOrganizationAccount,
46
46
  getOrganizationCredits,
47
47
  getOrganizationCreditUsage,
48
+ getOrganizationReferral,
48
49
  getPaidProjectDomain,
49
50
  getProject,
50
51
  getProjectContext,
51
52
  getProjectCreditBudget,
52
53
  getProjectExport,
53
54
  getProjectHandleAvailability,
55
+ getProjectPoweredByFlag,
54
56
  getProjectSource,
55
57
  getProjectSourceAutoDeploy,
56
58
  getProjectStatus,
@@ -87,6 +89,7 @@ export {
87
89
  setProjectCreditBudget,
88
90
  setProjectDevAccessMode,
89
91
  setProjectNotes,
92
+ setProjectPoweredByFlag,
90
93
  streamDeploymentLogs,
91
94
  streamOperationEvents,
92
95
  submitContactRequest,
@@ -364,6 +367,11 @@ export type {
364
367
  GetOrganizationCreditUsageErrors,
365
368
  GetOrganizationCreditUsageResponse,
366
369
  GetOrganizationCreditUsageResponses,
370
+ GetOrganizationReferralData,
371
+ GetOrganizationReferralError,
372
+ GetOrganizationReferralErrors,
373
+ GetOrganizationReferralResponse,
374
+ GetOrganizationReferralResponses,
367
375
  GetPaidProjectDomainData,
368
376
  GetPaidProjectDomainError,
369
377
  GetPaidProjectDomainErrors,
@@ -392,6 +400,11 @@ export type {
392
400
  GetProjectHandleAvailabilityErrors,
393
401
  GetProjectHandleAvailabilityResponse,
394
402
  GetProjectHandleAvailabilityResponses,
403
+ GetProjectPoweredByFlagData,
404
+ GetProjectPoweredByFlagError,
405
+ GetProjectPoweredByFlagErrors,
406
+ GetProjectPoweredByFlagResponse,
407
+ GetProjectPoweredByFlagResponses,
395
408
  GetProjectResponse,
396
409
  GetProjectResponses,
397
410
  GetProjectSourceAutoDeployData,
@@ -493,6 +506,7 @@ export type {
493
506
  OrganizationAccount,
494
507
  OrganizationCredits,
495
508
  OrganizationCreditUsage,
509
+ OrganizationReferral,
496
510
  PaidDomain,
497
511
  PaidDomainPlan,
498
512
  PaidDomainRequest,
@@ -522,6 +536,7 @@ export type {
522
536
  PlanProjectDeletionErrors,
523
537
  PlanProjectDeletionResponse,
524
538
  PlanProjectDeletionResponses,
539
+ PoweredByFlag,
525
540
  PrepareManagedMailWebhookData,
526
541
  PrepareManagedMailWebhookError,
527
542
  PrepareManagedMailWebhookErrors,
@@ -623,6 +638,7 @@ export type {
623
638
  RotateProjectDevShareLinkResponses,
624
639
  SecretName,
625
640
  SetDevAccessModeRequest,
641
+ SetPoweredByFlagRequest,
626
642
  SetProjectCreditBudgetData,
627
643
  SetProjectCreditBudgetError,
628
644
  SetProjectCreditBudgetErrors,
@@ -639,6 +655,11 @@ export type {
639
655
  SetProjectNotesErrors,
640
656
  SetProjectNotesResponse,
641
657
  SetProjectNotesResponses,
658
+ SetProjectPoweredByFlagData,
659
+ SetProjectPoweredByFlagError,
660
+ SetProjectPoweredByFlagErrors,
661
+ SetProjectPoweredByFlagResponse,
662
+ SetProjectPoweredByFlagResponses,
642
663
  Sha256Digest,
643
664
  SourceAutoDeploy,
644
665
  SourceDeploymentId,
@@ -106,6 +106,8 @@ import type {
106
106
  GetOrganizationCreditsResponses,
107
107
  GetOrganizationCreditUsageErrors,
108
108
  GetOrganizationCreditUsageResponses,
109
+ GetOrganizationReferralErrors,
110
+ GetOrganizationReferralResponses,
109
111
  GetPaidProjectDomainErrors,
110
112
  GetPaidProjectDomainResponses,
111
113
  GetProjectContextErrors,
@@ -117,6 +119,8 @@ import type {
117
119
  GetProjectExportResponses,
118
120
  GetProjectHandleAvailabilityErrors,
119
121
  GetProjectHandleAvailabilityResponses,
122
+ GetProjectPoweredByFlagErrors,
123
+ GetProjectPoweredByFlagResponses,
120
124
  GetProjectResponses,
121
125
  GetProjectSourceAutoDeployErrors,
122
126
  GetProjectSourceAutoDeployResponses,
@@ -192,6 +196,7 @@ import type {
192
196
  RotateProjectDevShareLinkErrors,
193
197
  RotateProjectDevShareLinkResponses,
194
198
  SetDevAccessModeRequest,
199
+ SetPoweredByFlagRequest,
195
200
  SetProjectCreditBudgetErrors,
196
201
  SetProjectCreditBudgetRequest,
197
202
  SetProjectCreditBudgetResponses,
@@ -199,6 +204,8 @@ import type {
199
204
  SetProjectDevAccessModeResponses,
200
205
  SetProjectNotesErrors,
201
206
  SetProjectNotesResponses,
207
+ SetProjectPoweredByFlagErrors,
208
+ SetProjectPoweredByFlagResponses,
202
209
  StreamDeploymentLogsErrors,
203
210
  StreamDeploymentLogsResponse,
204
211
  StreamDeploymentLogsResponses,
@@ -375,6 +382,48 @@ export const getGithubOrganizationConnection = <ThrowOnError extends boolean = t
375
382
  });
376
383
  };
377
384
 
385
+ /**
386
+ * Read the workspace's referral link
387
+ *
388
+ * Any member may share it. A new user whose first workspace comes from this link starts with 30 days of Paid access and 1,000 credits; that workspace's first payment gives this workspace 1,000 credits and 30 more days of granted Paid access.
389
+ */
390
+ export const getOrganizationReferral = <ThrowOnError extends boolean = true>(
391
+ parameters: {
392
+ "X-Request-Id"?: string;
393
+ organization_id: Ulid;
394
+ },
395
+ options?: Options<never, ThrowOnError>,
396
+ ): RequestResult<
397
+ GetOrganizationReferralResponses,
398
+ GetOrganizationReferralErrors,
399
+ ThrowOnError,
400
+ "data"
401
+ > => {
402
+ const params = buildClientParams(
403
+ [parameters],
404
+ [
405
+ {
406
+ args: [
407
+ { in: "headers", key: "X-Request-Id" },
408
+ { in: "path", key: "organization_id" },
409
+ ],
410
+ },
411
+ ],
412
+ );
413
+ return (options?.client ?? client).get<
414
+ GetOrganizationReferralResponses,
415
+ GetOrganizationReferralErrors,
416
+ ThrowOnError,
417
+ "data"
418
+ >({
419
+ responseStyle: "data",
420
+ security: [{ scheme: "bearer", type: "http" }],
421
+ url: "/v1/organizations/{organization_id}/referral",
422
+ ...options,
423
+ ...params,
424
+ });
425
+ };
426
+
378
427
  /**
379
428
  * Read effective plan and monthly versus one-time credit balance
380
429
  */
@@ -1974,6 +2023,99 @@ export const setProjectDevAccessMode = <ThrowOnError extends boolean = true>(
1974
2023
  });
1975
2024
  };
1976
2025
 
2026
+ /**
2027
+ * Read the "Powered by ohmyho.st" flag
2028
+ *
2029
+ * Whether the production site shows the opt-in flag for the current owner organization.
2030
+ */
2031
+ export const getProjectPoweredByFlag = <ThrowOnError extends boolean = true>(
2032
+ parameters: {
2033
+ "X-Request-Id"?: string;
2034
+ project_id: Ulid;
2035
+ },
2036
+ options?: Options<never, ThrowOnError>,
2037
+ ): RequestResult<
2038
+ GetProjectPoweredByFlagResponses,
2039
+ GetProjectPoweredByFlagErrors,
2040
+ ThrowOnError,
2041
+ "data"
2042
+ > => {
2043
+ const params = buildClientParams(
2044
+ [parameters],
2045
+ [
2046
+ {
2047
+ args: [
2048
+ { in: "headers", key: "X-Request-Id" },
2049
+ { in: "path", key: "project_id" },
2050
+ ],
2051
+ },
2052
+ ],
2053
+ );
2054
+ return (options?.client ?? client).get<
2055
+ GetProjectPoweredByFlagResponses,
2056
+ GetProjectPoweredByFlagErrors,
2057
+ ThrowOnError,
2058
+ "data"
2059
+ >({
2060
+ responseStyle: "data",
2061
+ security: [{ scheme: "bearer", type: "http" }],
2062
+ url: "/v1/projects/{project_id}/powered-by-flag",
2063
+ ...options,
2064
+ ...params,
2065
+ });
2066
+ };
2067
+
2068
+ /**
2069
+ * Show or hide the "Powered by ohmyho.st" flag
2070
+ *
2071
+ * Owner-only. The production site shows a small flag on its right edge that links to ohmyho.st. While it is on, a Free workspace may connect its own domain to this project and the custom-hostname fee is waived; Paid periods receive bonus credits. Hiding it is refused while a Free workspace's domain depends on it. A retry with the same Idempotency-Key and body returns the first result without switching again; a changed request under a used key returns idempotency_key_reused (409).
2072
+ */
2073
+ export const setProjectPoweredByFlag = <ThrowOnError extends boolean = true>(
2074
+ parameters: {
2075
+ "X-Request-Id"?: string;
2076
+ "Idempotency-Key": string;
2077
+ project_id: Ulid;
2078
+ setPoweredByFlagRequest: SetPoweredByFlagRequest;
2079
+ },
2080
+ options?: Options<never, ThrowOnError>,
2081
+ ): RequestResult<
2082
+ SetProjectPoweredByFlagResponses,
2083
+ SetProjectPoweredByFlagErrors,
2084
+ ThrowOnError,
2085
+ "data"
2086
+ > => {
2087
+ const params = buildClientParams(
2088
+ [parameters],
2089
+ [
2090
+ {
2091
+ args: [
2092
+ { in: "headers", key: "X-Request-Id" },
2093
+ { in: "headers", key: "Idempotency-Key" },
2094
+ { in: "path", key: "project_id" },
2095
+ { key: "setPoweredByFlagRequest", map: "body" },
2096
+ ],
2097
+ },
2098
+ ],
2099
+ );
2100
+ return (options?.client ?? client).put<
2101
+ SetProjectPoweredByFlagResponses,
2102
+ SetProjectPoweredByFlagErrors,
2103
+ ThrowOnError,
2104
+ "data"
2105
+ >({
2106
+ responseStyle: "data",
2107
+ security: [{ scheme: "bearer", type: "http" }],
2108
+ url: "/v1/projects/{project_id}/powered-by-flag",
2109
+ ...options,
2110
+ ...params,
2111
+ headers: {
2112
+ "Content-Type": "application/json",
2113
+ ...options?.headers,
2114
+ ...params.headers,
2115
+ },
2116
+ });
2117
+ };
2118
+
1977
2119
  /**
1978
2120
  * Create a single-use dev access ticket
1979
2121
  *
@@ -569,13 +569,17 @@ export type DeploymentDiagnostic = {
569
569
  trace_id?: string;
570
570
  duration_ms?: number;
571
571
  /**
572
- * The sanitized tail of the customer's own install/build output, newest lines last. Present only on a BUILD_FAILED diagnostic; terminal escapes and control characters are removed before storage.
572
+ * The customer's own output with control characters removed before storage: on BUILD_FAILED the tail of the install/build output (newest lines last), on HEALTH_CHECK_FAILED the head of the body the health check was answered with (at most 4096 characters, never a header). A running application holds its environment's secrets and this answer is not scanned for them, so, like a query of the project's database, a HEALTH_CHECK_FAILED excerpt is returned only to an owner of the project; never answer a health check with a secret.
573
573
  */
574
574
  excerpt?: string;
575
575
  /**
576
- * Whether earlier build output was omitted from excerpt. Present exactly when excerpt is present.
576
+ * Whether output was omitted from excerpt (earlier build output, or the rest of the health answer). Present exactly when excerpt is present.
577
577
  */
578
578
  excerpt_truncated?: boolean;
579
+ /**
580
+ * The HTTP status the health check was answered with; present only on HEALTH_CHECK_FAILED. The probe is a cookieless GET of route that follows no redirect, so a 3xx is unhealthy too.
581
+ */
582
+ status_code?: number;
579
583
  occurred_at: string;
580
584
  };
581
585
 
@@ -670,6 +674,24 @@ export type SetDevAccessModeRequest = {
670
674
  mode: "protected" | "public";
671
675
  };
672
676
 
677
+ export type OrganizationReferral = {
678
+ organization_id: Ulid;
679
+ referral_url: string;
680
+ };
681
+
682
+ export type SetPoweredByFlagRequest = {
683
+ enabled: boolean;
684
+ };
685
+
686
+ export type PoweredByFlag = {
687
+ project_id: Ulid;
688
+ enabled: boolean;
689
+ /**
690
+ * When the current owner switched the flag on; null while it is hidden.
691
+ */
692
+ enabled_at: string | null;
693
+ };
694
+
673
695
  export type DevAccessState = {
674
696
  project_id: Ulid;
675
697
  mode: "protected" | "public";
@@ -1076,6 +1098,7 @@ export type ProblemDetails = {
1076
1098
  | "cloudflare_authorization_closed"
1077
1099
  | "project_notes_conflict"
1078
1100
  | "project_export_not_ready"
1101
+ | "powered_by_flag_required"
1079
1102
  | "interactive_login_required"
1080
1103
  | "api_key_creation_uncertain"
1081
1104
  | "api_key_permissions_unavailable"
@@ -1098,6 +1121,10 @@ export type Operation = {
1098
1121
  * The active operation holding this queued operation's project mutation claim.
1099
1122
  */
1100
1123
  blocking_operation_id?: Ulid;
1124
+ /**
1125
+ * The deployment this operation created (deploy, promotion or rollback), in every state. After a failure, read its diagnostics with deployment logs.
1126
+ */
1127
+ deployment_id?: Ulid;
1101
1128
  id: Ulid;
1102
1129
  state: "queued" | "running" | "succeeded" | "failed" | "cancelled";
1103
1130
  created_at: string;
@@ -1641,6 +1668,61 @@ export type GetGithubOrganizationConnectionResponses = {
1641
1668
  export type GetGithubOrganizationConnectionResponse =
1642
1669
  GetGithubOrganizationConnectionResponses[keyof GetGithubOrganizationConnectionResponses];
1643
1670
 
1671
+ export type GetOrganizationReferralData = {
1672
+ body?: never;
1673
+ headers?: {
1674
+ /**
1675
+ * Optional caller-provided correlation identifier.
1676
+ */
1677
+ "X-Request-Id"?: string;
1678
+ };
1679
+ path: {
1680
+ organization_id: Ulid;
1681
+ };
1682
+ query?: never;
1683
+ url: "/v1/organizations/{organization_id}/referral";
1684
+ };
1685
+
1686
+ export type GetOrganizationReferralErrors = {
1687
+ /**
1688
+ * The request failed.
1689
+ */
1690
+ 400: ProblemDetails;
1691
+ /**
1692
+ * The request failed.
1693
+ */
1694
+ 401: ProblemDetails;
1695
+ /**
1696
+ * The request failed.
1697
+ */
1698
+ 403: ProblemDetails;
1699
+ /**
1700
+ * The request failed.
1701
+ */
1702
+ 404: ProblemDetails;
1703
+ /**
1704
+ * The request failed.
1705
+ */
1706
+ 429: ProblemDetails;
1707
+ /**
1708
+ * The request failed.
1709
+ */
1710
+ 503: ProblemDetails;
1711
+ };
1712
+
1713
+ export type GetOrganizationReferralError =
1714
+ GetOrganizationReferralErrors[keyof GetOrganizationReferralErrors];
1715
+
1716
+ export type GetOrganizationReferralResponses = {
1717
+ /**
1718
+ * The workspace's referral link.
1719
+ */
1720
+ 200: OrganizationReferral;
1721
+ };
1722
+
1723
+ export type GetOrganizationReferralResponse =
1724
+ GetOrganizationReferralResponses[keyof GetOrganizationReferralResponses];
1725
+
1644
1726
  export type GetOrganizationAccountData = {
1645
1727
  body?: never;
1646
1728
  path: {
@@ -3751,6 +3833,122 @@ export type SetProjectDevAccessModeResponses = {
3751
3833
  export type SetProjectDevAccessModeResponse =
3752
3834
  SetProjectDevAccessModeResponses[keyof SetProjectDevAccessModeResponses];
3753
3835
 
3836
+ export type GetProjectPoweredByFlagData = {
3837
+ body?: never;
3838
+ headers?: {
3839
+ /**
3840
+ * Optional caller-provided correlation identifier.
3841
+ */
3842
+ "X-Request-Id"?: string;
3843
+ };
3844
+ path: {
3845
+ /**
3846
+ * Project identifier.
3847
+ */
3848
+ project_id: Ulid;
3849
+ };
3850
+ query?: never;
3851
+ url: "/v1/projects/{project_id}/powered-by-flag";
3852
+ };
3853
+
3854
+ export type GetProjectPoweredByFlagErrors = {
3855
+ /**
3856
+ * The request failed.
3857
+ */
3858
+ 400: ProblemDetails;
3859
+ /**
3860
+ * The request failed.
3861
+ */
3862
+ 401: ProblemDetails;
3863
+ /**
3864
+ * The request failed.
3865
+ */
3866
+ 403: ProblemDetails;
3867
+ /**
3868
+ * The request failed.
3869
+ */
3870
+ 404: ProblemDetails;
3871
+ /**
3872
+ * The request failed.
3873
+ */
3874
+ 503: ProblemDetails;
3875
+ };
3876
+
3877
+ export type GetProjectPoweredByFlagError =
3878
+ GetProjectPoweredByFlagErrors[keyof GetProjectPoweredByFlagErrors];
3879
+
3880
+ export type GetProjectPoweredByFlagResponses = {
3881
+ /**
3882
+ * Current flag state.
3883
+ */
3884
+ 200: PoweredByFlag;
3885
+ };
3886
+
3887
+ export type GetProjectPoweredByFlagResponse =
3888
+ GetProjectPoweredByFlagResponses[keyof GetProjectPoweredByFlagResponses];
3889
+
3890
+ export type SetProjectPoweredByFlagData = {
3891
+ body: SetPoweredByFlagRequest;
3892
+ headers: {
3893
+ /**
3894
+ * Optional caller-provided correlation identifier.
3895
+ */
3896
+ "X-Request-Id"?: string;
3897
+ /**
3898
+ * Identifies one mutation and its canonical request payload.
3899
+ */
3900
+ "Idempotency-Key": string;
3901
+ };
3902
+ path: {
3903
+ /**
3904
+ * Project identifier.
3905
+ */
3906
+ project_id: Ulid;
3907
+ };
3908
+ query?: never;
3909
+ url: "/v1/projects/{project_id}/powered-by-flag";
3910
+ };
3911
+
3912
+ export type SetProjectPoweredByFlagErrors = {
3913
+ /**
3914
+ * The request failed.
3915
+ */
3916
+ 400: ProblemDetails;
3917
+ /**
3918
+ * The request failed.
3919
+ */
3920
+ 401: ProblemDetails;
3921
+ /**
3922
+ * The request failed.
3923
+ */
3924
+ 403: ProblemDetails;
3925
+ /**
3926
+ * The request failed.
3927
+ */
3928
+ 404: ProblemDetails;
3929
+ /**
3930
+ * The request failed.
3931
+ */
3932
+ 409: ProblemDetails;
3933
+ /**
3934
+ * The request failed.
3935
+ */
3936
+ 503: ProblemDetails;
3937
+ };
3938
+
3939
+ export type SetProjectPoweredByFlagError =
3940
+ SetProjectPoweredByFlagErrors[keyof SetProjectPoweredByFlagErrors];
3941
+
3942
+ export type SetProjectPoweredByFlagResponses = {
3943
+ /**
3944
+ * Current flag state.
3945
+ */
3946
+ 200: PoweredByFlag;
3947
+ };
3948
+
3949
+ export type SetProjectPoweredByFlagResponse =
3950
+ SetProjectPoweredByFlagResponses[keyof SetProjectPoweredByFlagResponses];
3951
+
3754
3952
  export type CreateProjectDevAccessTicketData = {
3755
3953
  body?: never;
3756
3954
  headers?: {