@sakupa/mcp 0.7.53 → 0.7.55
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.
- package/dist/bin.js +23 -7
- package/dist/index.js +23 -7
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -402,7 +402,7 @@ function isFreeSiteAllowanceNetworkReference(value) {
|
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
// ../core/dist/domain/version.js
|
|
405
|
-
var SAKUPA_MCP_VERSION = "0.7.
|
|
405
|
+
var SAKUPA_MCP_VERSION = "0.7.55";
|
|
406
406
|
|
|
407
407
|
// ../core/dist/domain/errors.js
|
|
408
408
|
var HTTP_STATUS = {
|
|
@@ -4820,7 +4820,7 @@ Once Stripe confirms payment and Sakupa synchronizes the subscription, the curre
|
|
|
4820
4820
|
server.registerTool(
|
|
4821
4821
|
"bind",
|
|
4822
4822
|
{
|
|
4823
|
-
description: `Bind a custom domain to this subscribed site \u2014 an OPTIONAL extra serving surface; the subscription-backed ${previewHostPattern} URL keeps working alongside it while the subscription is active. The binding unit is the APEX domain: binding example.com reserves routes for example.com and www.example.com, but ONLY www is required and judged for activation; the naked apex is optional because many DNS providers cannot point it. One apex TXT verification covers both
|
|
4823
|
+
description: `Bind a custom domain to this subscribed site \u2014 an OPTIONAL extra serving surface; the subscription-backed ${previewHostPattern} URL keeps working alongside it while the subscription is active. The binding unit is the APEX domain: binding example.com reserves routes for example.com and www.example.com, but ONLY www is required and judged for activation; the naked apex is optional because many DNS providers cannot point it. One apex TXT verification covers both. A site has one FINAL apex domain; starting a different apex begins a zero-downtime switch and the previous domain remains until the new www is live. The www CNAME must remain while bound. Requires an ACTIVE subscription (subscribe). Ownership is proven ONLY by DNS control of the apex \u2014 payment never grants ownership, and bindings are ALWAYS challengeable: whoever proves CURRENT DNS control takes the domain, even from an existing binding (the displaced site keeps its subscription, content and subscription-backed Sakupa URL). Unverified requests expire after 72 hours. Call again with action "status" to check progress.`,
|
|
4824
4824
|
outputSchema: STRUCTURED_TOOL_OUTPUT_SCHEMA,
|
|
4825
4825
|
annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
|
|
4826
4826
|
inputSchema: {
|
|
@@ -4850,12 +4850,15 @@ Once Stripe confirms payment and Sakupa synchronizes the subscription, the curre
|
|
|
4850
4850
|
provisioning: res2.bindingStatus === "provisioning"
|
|
4851
4851
|
});
|
|
4852
4852
|
const { apexResolves, allOk } = diag;
|
|
4853
|
+
const manualProviderRecheckRequired = res2.bindingStatus === "provisioning" && res2.provisioningPhase !== "waiting_dns";
|
|
4854
|
+
const customerRecheckInstruction = `The customer cannot know whether the certificate is ready. Never use conditional readiness wording or ask the customer to decide the provider state. Tell the customer: "You do not need to judge readiness. After about one minute, reply: check domain status. I will check it once." The AI, not the customer, calls bind status exactly once. During this zero-downtime transition, the previously active domain may still serve. Once this binding becomes active, Sakupa retains only the last bound domain unit: ${apex2} and www.${apex2}.`;
|
|
4853
4855
|
return text(
|
|
4854
4856
|
res2.bindingStatus === "active" ? "domain_binding_active" : res2.bindingStatus === "provisioning" ? "domain_binding_provisioning" : "domain_verification_pending",
|
|
4855
4857
|
`Domain binding status for ${apex2}: ${res2.status}
|
|
4856
4858
|
${res2.message}
|
|
4859
|
+
The serving CNAME www.${apex2} \u2192 ${res2.servingTarget} must remain for as long as this domain is bound.` + (manualProviderRecheckRequired ? `
|
|
4857
4860
|
|
|
4858
|
-
` + renderChecklistBlock(
|
|
4861
|
+
${customerRecheckInstruction}` : "") + "\n\n" + renderChecklistBlock(
|
|
4859
4862
|
diag,
|
|
4860
4863
|
"Fix any [MISSING]/[FIX] lines above, then re-run bind status; if still failing after the attempts below, show the user this checklist."
|
|
4861
4864
|
),
|
|
@@ -4871,12 +4874,19 @@ ${res2.message}
|
|
|
4871
4874
|
apexResolves,
|
|
4872
4875
|
apexRequired: false,
|
|
4873
4876
|
requiredServingHostname: `www.${apex2}`,
|
|
4877
|
+
requiredCnameMustRemainWhileBound: true,
|
|
4874
4878
|
optionalApexHostname: apex2,
|
|
4875
4879
|
automaticRetries: 0,
|
|
4876
4880
|
manualRecheckOnly: true,
|
|
4877
4881
|
backgroundRetry: false,
|
|
4878
|
-
manualStatusCheckRequired:
|
|
4879
|
-
suggestedRecheckAfterSeconds:
|
|
4882
|
+
manualStatusCheckRequired: manualProviderRecheckRequired,
|
|
4883
|
+
suggestedRecheckAfterSeconds: manualProviderRecheckRequired ? 60 : void 0,
|
|
4884
|
+
customerReadinessJudgmentRequired: false,
|
|
4885
|
+
customerReplyIntent: manualProviderRecheckRequired ? "check_domain_status" : void 0,
|
|
4886
|
+
customerInstruction: manualProviderRecheckRequired ? customerRecheckInstruction : void 0,
|
|
4887
|
+
transitionMayServePreviousDomain: manualProviderRecheckRequired,
|
|
4888
|
+
finalActiveBindingExclusive: true,
|
|
4889
|
+
postActivationRetainedHostnames: [apex2, `www.${apex2}`],
|
|
4880
4890
|
customerLiveConfirmed: res2.bindingStatus === "active",
|
|
4881
4891
|
message: res2.message
|
|
4882
4892
|
},
|
|
@@ -4916,13 +4926,14 @@ STEP 1 of 2 \u2014 prove ownership. Add ONE record:
|
|
|
4916
4926
|
|
|
4917
4927
|
Host is the SHORT form: most panels append the domain automatically (the saved record must NOT show ${apex} twice in one name). Ownership comes ONLY from DNS control; paying never grants it. The first verified request wins and this challenge expires after 72 hours.
|
|
4918
4928
|
|
|
4919
|
-
When the user says the TXT is set, run bind "status". It verifies ownership and then hands back STEP 2 \u2014 a SINGLE www CNAME (there are NO certificate TXT records; HTTPS validates automatically over that CNAME). Each "status" checks the previous step and, unless something is misconfigured, advances to the next \u2014 so run it whenever the user reports a step done, NOT on a timer. Any later session can resume with action "status" alone; the verificationId is optional.`,
|
|
4929
|
+
When the user says the TXT is set, run bind "status". It verifies ownership and then hands back STEP 2 \u2014 a SINGLE www CNAME (there are NO certificate TXT records; HTTPS validates automatically over that CNAME). That CNAME must remain for as long as the domain stays bound to Sakupa. Each "status" checks the previous step and, unless something is misconfigured, advances to the next \u2014 so run it whenever the user reports a step done, NOT on a timer. Any later session can resume with action "status" alone; the verificationId is optional.`,
|
|
4920
4930
|
{
|
|
4921
4931
|
verificationId: res.verificationId,
|
|
4922
4932
|
apexDomain: apex,
|
|
4923
4933
|
includedHostnames: res.includedHostnames,
|
|
4924
4934
|
apexRequired: false,
|
|
4925
4935
|
requiredServingHostname: `www.${apex}`,
|
|
4936
|
+
requiredCnameMustRemainWhileBound: true,
|
|
4926
4937
|
optionalApexHostname: apex,
|
|
4927
4938
|
verificationRecord: res.verificationRecord,
|
|
4928
4939
|
servingTarget: res.servingTarget,
|
|
@@ -5760,7 +5771,12 @@ var TOOL_MANUALS = {
|
|
|
5760
5771
|
preconditions: "A subscribed site and DNS control.",
|
|
5761
5772
|
parameterNames: ["action", "hostname", "verificationId"],
|
|
5762
5773
|
parameters: "Action plus hostname or verificationId as returned by the prior step.",
|
|
5763
|
-
warnings: [
|
|
5774
|
+
warnings: [
|
|
5775
|
+
"www is mandatory; the apex is optional.",
|
|
5776
|
+
"Copy DNS values verbatim.",
|
|
5777
|
+
"The www CNAME must remain for as long as the domain stays bound; only the ownership TXT is temporary.",
|
|
5778
|
+
"If the domain already belongs to this site, use bind status instead of starting a new challenge."
|
|
5779
|
+
],
|
|
5764
5780
|
nextStep: "Follow the returned DNS checklist and call bind status/check."
|
|
5765
5781
|
},
|
|
5766
5782
|
billing: {
|
package/dist/index.js
CHANGED
|
@@ -147,7 +147,7 @@ function isFreeSiteAllowanceNetworkReference(value) {
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
// ../core/dist/domain/version.js
|
|
150
|
-
var SAKUPA_MCP_VERSION = "0.7.
|
|
150
|
+
var SAKUPA_MCP_VERSION = "0.7.55";
|
|
151
151
|
|
|
152
152
|
// ../core/dist/domain/errors.js
|
|
153
153
|
var HTTP_STATUS = {
|
|
@@ -4936,7 +4936,7 @@ Once Stripe confirms payment and Sakupa synchronizes the subscription, the curre
|
|
|
4936
4936
|
server.registerTool(
|
|
4937
4937
|
"bind",
|
|
4938
4938
|
{
|
|
4939
|
-
description: `Bind a custom domain to this subscribed site \u2014 an OPTIONAL extra serving surface; the subscription-backed ${previewHostPattern} URL keeps working alongside it while the subscription is active. The binding unit is the APEX domain: binding example.com reserves routes for example.com and www.example.com, but ONLY www is required and judged for activation; the naked apex is optional because many DNS providers cannot point it. One apex TXT verification covers both
|
|
4939
|
+
description: `Bind a custom domain to this subscribed site \u2014 an OPTIONAL extra serving surface; the subscription-backed ${previewHostPattern} URL keeps working alongside it while the subscription is active. The binding unit is the APEX domain: binding example.com reserves routes for example.com and www.example.com, but ONLY www is required and judged for activation; the naked apex is optional because many DNS providers cannot point it. One apex TXT verification covers both. A site has one FINAL apex domain; starting a different apex begins a zero-downtime switch and the previous domain remains until the new www is live. The www CNAME must remain while bound. Requires an ACTIVE subscription (subscribe). Ownership is proven ONLY by DNS control of the apex \u2014 payment never grants ownership, and bindings are ALWAYS challengeable: whoever proves CURRENT DNS control takes the domain, even from an existing binding (the displaced site keeps its subscription, content and subscription-backed Sakupa URL). Unverified requests expire after 72 hours. Call again with action "status" to check progress.`,
|
|
4940
4940
|
outputSchema: STRUCTURED_TOOL_OUTPUT_SCHEMA,
|
|
4941
4941
|
annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
|
|
4942
4942
|
inputSchema: {
|
|
@@ -4966,12 +4966,15 @@ Once Stripe confirms payment and Sakupa synchronizes the subscription, the curre
|
|
|
4966
4966
|
provisioning: res2.bindingStatus === "provisioning"
|
|
4967
4967
|
});
|
|
4968
4968
|
const { apexResolves, allOk } = diag;
|
|
4969
|
+
const manualProviderRecheckRequired = res2.bindingStatus === "provisioning" && res2.provisioningPhase !== "waiting_dns";
|
|
4970
|
+
const customerRecheckInstruction = `The customer cannot know whether the certificate is ready. Never use conditional readiness wording or ask the customer to decide the provider state. Tell the customer: "You do not need to judge readiness. After about one minute, reply: check domain status. I will check it once." The AI, not the customer, calls bind status exactly once. During this zero-downtime transition, the previously active domain may still serve. Once this binding becomes active, Sakupa retains only the last bound domain unit: ${apex2} and www.${apex2}.`;
|
|
4969
4971
|
return text(
|
|
4970
4972
|
res2.bindingStatus === "active" ? "domain_binding_active" : res2.bindingStatus === "provisioning" ? "domain_binding_provisioning" : "domain_verification_pending",
|
|
4971
4973
|
`Domain binding status for ${apex2}: ${res2.status}
|
|
4972
4974
|
${res2.message}
|
|
4975
|
+
The serving CNAME www.${apex2} \u2192 ${res2.servingTarget} must remain for as long as this domain is bound.` + (manualProviderRecheckRequired ? `
|
|
4973
4976
|
|
|
4974
|
-
` + renderChecklistBlock(
|
|
4977
|
+
${customerRecheckInstruction}` : "") + "\n\n" + renderChecklistBlock(
|
|
4975
4978
|
diag,
|
|
4976
4979
|
"Fix any [MISSING]/[FIX] lines above, then re-run bind status; if still failing after the attempts below, show the user this checklist."
|
|
4977
4980
|
),
|
|
@@ -4987,12 +4990,19 @@ ${res2.message}
|
|
|
4987
4990
|
apexResolves,
|
|
4988
4991
|
apexRequired: false,
|
|
4989
4992
|
requiredServingHostname: `www.${apex2}`,
|
|
4993
|
+
requiredCnameMustRemainWhileBound: true,
|
|
4990
4994
|
optionalApexHostname: apex2,
|
|
4991
4995
|
automaticRetries: 0,
|
|
4992
4996
|
manualRecheckOnly: true,
|
|
4993
4997
|
backgroundRetry: false,
|
|
4994
|
-
manualStatusCheckRequired:
|
|
4995
|
-
suggestedRecheckAfterSeconds:
|
|
4998
|
+
manualStatusCheckRequired: manualProviderRecheckRequired,
|
|
4999
|
+
suggestedRecheckAfterSeconds: manualProviderRecheckRequired ? 60 : void 0,
|
|
5000
|
+
customerReadinessJudgmentRequired: false,
|
|
5001
|
+
customerReplyIntent: manualProviderRecheckRequired ? "check_domain_status" : void 0,
|
|
5002
|
+
customerInstruction: manualProviderRecheckRequired ? customerRecheckInstruction : void 0,
|
|
5003
|
+
transitionMayServePreviousDomain: manualProviderRecheckRequired,
|
|
5004
|
+
finalActiveBindingExclusive: true,
|
|
5005
|
+
postActivationRetainedHostnames: [apex2, `www.${apex2}`],
|
|
4996
5006
|
customerLiveConfirmed: res2.bindingStatus === "active",
|
|
4997
5007
|
message: res2.message
|
|
4998
5008
|
},
|
|
@@ -5032,13 +5042,14 @@ STEP 1 of 2 \u2014 prove ownership. Add ONE record:
|
|
|
5032
5042
|
|
|
5033
5043
|
Host is the SHORT form: most panels append the domain automatically (the saved record must NOT show ${apex} twice in one name). Ownership comes ONLY from DNS control; paying never grants it. The first verified request wins and this challenge expires after 72 hours.
|
|
5034
5044
|
|
|
5035
|
-
When the user says the TXT is set, run bind "status". It verifies ownership and then hands back STEP 2 \u2014 a SINGLE www CNAME (there are NO certificate TXT records; HTTPS validates automatically over that CNAME). Each "status" checks the previous step and, unless something is misconfigured, advances to the next \u2014 so run it whenever the user reports a step done, NOT on a timer. Any later session can resume with action "status" alone; the verificationId is optional.`,
|
|
5045
|
+
When the user says the TXT is set, run bind "status". It verifies ownership and then hands back STEP 2 \u2014 a SINGLE www CNAME (there are NO certificate TXT records; HTTPS validates automatically over that CNAME). That CNAME must remain for as long as the domain stays bound to Sakupa. Each "status" checks the previous step and, unless something is misconfigured, advances to the next \u2014 so run it whenever the user reports a step done, NOT on a timer. Any later session can resume with action "status" alone; the verificationId is optional.`,
|
|
5036
5046
|
{
|
|
5037
5047
|
verificationId: res.verificationId,
|
|
5038
5048
|
apexDomain: apex,
|
|
5039
5049
|
includedHostnames: res.includedHostnames,
|
|
5040
5050
|
apexRequired: false,
|
|
5041
5051
|
requiredServingHostname: `www.${apex}`,
|
|
5052
|
+
requiredCnameMustRemainWhileBound: true,
|
|
5042
5053
|
optionalApexHostname: apex,
|
|
5043
5054
|
verificationRecord: res.verificationRecord,
|
|
5044
5055
|
servingTarget: res.servingTarget,
|
|
@@ -5879,7 +5890,12 @@ var TOOL_MANUALS = {
|
|
|
5879
5890
|
preconditions: "A subscribed site and DNS control.",
|
|
5880
5891
|
parameterNames: ["action", "hostname", "verificationId"],
|
|
5881
5892
|
parameters: "Action plus hostname or verificationId as returned by the prior step.",
|
|
5882
|
-
warnings: [
|
|
5893
|
+
warnings: [
|
|
5894
|
+
"www is mandatory; the apex is optional.",
|
|
5895
|
+
"Copy DNS values verbatim.",
|
|
5896
|
+
"The www CNAME must remain for as long as the domain stays bound; only the ownership TXT is temporary.",
|
|
5897
|
+
"If the domain already belongs to this site, use bind status instead of starting a new challenge."
|
|
5898
|
+
],
|
|
5883
5899
|
nextStep: "Follow the returned DNS checklist and call bind status/check."
|
|
5884
5900
|
},
|
|
5885
5901
|
billing: {
|