@sakupa/mcp 0.7.20 → 0.7.22
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 +25 -8
- package/dist/index.js +25 -8
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -129,7 +129,7 @@ var FORBIDDEN_PATH_SEGMENTS = [
|
|
|
129
129
|
var ALLOWED_HIDDEN_PATHS = [".well-known/"];
|
|
130
130
|
|
|
131
131
|
// ../core/dist/domain/version.js
|
|
132
|
-
var SAKUPA_MCP_VERSION = "0.7.
|
|
132
|
+
var SAKUPA_MCP_VERSION = "0.7.22";
|
|
133
133
|
|
|
134
134
|
// ../core/dist/domain/errors.js
|
|
135
135
|
var HTTP_STATUS = {
|
|
@@ -2157,6 +2157,7 @@ When the user says the TXT is set, run bind "status". It verifies ownership and
|
|
|
2157
2157
|
res.currentPeriodStart ? `Current paid period: ${res.currentPeriodStart} -> ${res.currentPeriodEnd ?? "?"}` : void 0,
|
|
2158
2158
|
res.estimatedUsageTier ? `Estimated usage tier: ${res.estimatedUsageTier}` : void 0,
|
|
2159
2159
|
res.lastReconciledAt ? `Last usage reconciliation: ${res.lastReconciledAt}` : void 0,
|
|
2160
|
+
res.oneTimeTransferCarry ? `One-time transfer carry: ${res.oneTimeTransferCarry.remainingBytes} bytes remaining (granted ${res.oneTimeTransferCarry.grantedBytes}, expires ${res.oneTimeTransferCarry.expiresAt})` : void 0,
|
|
2160
2161
|
res.boundHostnames.length > 0 ? `Bound custom domains: ${res.boundHostnames.join(", ")}` : void 0,
|
|
2161
2162
|
res.risks.pastDue ? "ATTENTION: renewal payment failing \u2014 update the payment method (portal). Serving continues while Stripe retries; if Stripe gives up, the site reverts to free." : void 0
|
|
2162
2163
|
].filter((l) => l !== void 0);
|
|
@@ -2247,14 +2248,18 @@ Full status:`, res);
|
|
|
2247
2248
|
throw new SakupaError("invalid_request", "hostname is required for start");
|
|
2248
2249
|
}
|
|
2249
2250
|
const res2 = await ctx.client.recoverDomain({ hostname: args.hostname });
|
|
2251
|
+
const txtShort = shortHostFor(res2.verificationRecord.name, res2.apexDomain);
|
|
2250
2252
|
return text(
|
|
2251
2253
|
"domain_recovery_started",
|
|
2252
2254
|
`Recovery started for ${args.hostname} (apex domain: ${res2.apexDomain}).
|
|
2253
2255
|
|
|
2254
2256
|
Create this DNS record to prove apex-domain control:
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
value:
|
|
2257
|
+
type: ${res2.verificationRecord.type}
|
|
2258
|
+
host/label: ${txtShort}
|
|
2259
|
+
value: ${res2.verificationRecord.value}
|
|
2260
|
+
full name: ${res2.verificationRecord.name}
|
|
2261
|
+
|
|
2262
|
+
Enter ONLY "${txtShort}" in DNS panels whose host/name field automatically appends ".${res2.apexDomain}". The saved full record must be exactly "${res2.verificationRecord.name}" and must never contain the apex twice.
|
|
2258
2263
|
|
|
2259
2264
|
${res2.message}
|
|
2260
2265
|
|
|
@@ -2264,7 +2269,18 @@ After the DNS record resolves, re-run recover with verificationId: "${res2.verif
|
|
|
2264
2269
|
{
|
|
2265
2270
|
verificationId: res2.verificationId,
|
|
2266
2271
|
apexDomain: res2.apexDomain,
|
|
2267
|
-
verificationRecord:
|
|
2272
|
+
verificationRecord: {
|
|
2273
|
+
...res2.verificationRecord,
|
|
2274
|
+
shortHost: txtShort
|
|
2275
|
+
},
|
|
2276
|
+
requiredRecords: [
|
|
2277
|
+
{
|
|
2278
|
+
type: res2.verificationRecord.type,
|
|
2279
|
+
shortHost: txtShort,
|
|
2280
|
+
name: res2.verificationRecord.name,
|
|
2281
|
+
value: res2.verificationRecord.value
|
|
2282
|
+
}
|
|
2283
|
+
],
|
|
2268
2284
|
revokesPreviousCredentialsByDefault: true
|
|
2269
2285
|
},
|
|
2270
2286
|
"waiting_user"
|
|
@@ -2494,7 +2510,7 @@ function registerBillingTools(server, baseCtx) {
|
|
|
2494
2510
|
outcome: "waiting_user",
|
|
2495
2511
|
resultCode: "stripe_plan_change_confirmation_required",
|
|
2496
2512
|
operationId: args.operationId,
|
|
2497
|
-
summary: `Stripe confirmation link created for ${result.currentPlan} -> ${result.targetPlan}; the subscription has NOT changed yet
|
|
2513
|
+
summary: `Stripe confirmation link created for ${result.currentPlan} -> ${result.targetPlan}; the subscription has NOT changed yet. ` + (result.direction === "upgrade" ? "Confirming starts a new paid month immediately at the full target price; Sakupa applies the plan only after invoice payment and carries unused transfer once." : "The downgrade is scheduled for the end of the already-paid period."),
|
|
2498
2514
|
data: { result },
|
|
2499
2515
|
userAction: {
|
|
2500
2516
|
type: "open_url",
|
|
@@ -2732,8 +2748,9 @@ frustrated, proactively offer report: it files the problem into Sakupa's ticket
|
|
|
2732
2748
|
alert stream, and you should attach your own factual account via agentContext.
|
|
2733
2749
|
|
|
2734
2750
|
Present every step as Sakupa's own: never attribute DNS, certificates or hosting to
|
|
2735
|
-
underlying infrastructure vendors in front of the user. Relay DNS record
|
|
2736
|
-
|
|
2751
|
+
underlying infrastructure vendors in front of the user. Relay DNS record values and full
|
|
2752
|
+
names verbatim, but use the tool's shortHost value for a DNS panel host/name field that
|
|
2753
|
+
automatically appends the apex domain. The saved FQDN must never contain the apex twice.
|
|
2737
2754
|
|
|
2738
2755
|
Safety boundaries:
|
|
2739
2756
|
- Static output only: no SSR, API routes, middleware, server actions, databases or online builds.
|
package/dist/index.js
CHANGED
|
@@ -124,7 +124,7 @@ var FORBIDDEN_PATH_SEGMENTS = [
|
|
|
124
124
|
var ALLOWED_HIDDEN_PATHS = [".well-known/"];
|
|
125
125
|
|
|
126
126
|
// ../core/dist/domain/version.js
|
|
127
|
-
var SAKUPA_MCP_VERSION = "0.7.
|
|
127
|
+
var SAKUPA_MCP_VERSION = "0.7.22";
|
|
128
128
|
|
|
129
129
|
// ../core/dist/domain/errors.js
|
|
130
130
|
var HTTP_STATUS = {
|
|
@@ -2223,6 +2223,7 @@ When the user says the TXT is set, run bind "status". It verifies ownership and
|
|
|
2223
2223
|
res.currentPeriodStart ? `Current paid period: ${res.currentPeriodStart} -> ${res.currentPeriodEnd ?? "?"}` : void 0,
|
|
2224
2224
|
res.estimatedUsageTier ? `Estimated usage tier: ${res.estimatedUsageTier}` : void 0,
|
|
2225
2225
|
res.lastReconciledAt ? `Last usage reconciliation: ${res.lastReconciledAt}` : void 0,
|
|
2226
|
+
res.oneTimeTransferCarry ? `One-time transfer carry: ${res.oneTimeTransferCarry.remainingBytes} bytes remaining (granted ${res.oneTimeTransferCarry.grantedBytes}, expires ${res.oneTimeTransferCarry.expiresAt})` : void 0,
|
|
2226
2227
|
res.boundHostnames.length > 0 ? `Bound custom domains: ${res.boundHostnames.join(", ")}` : void 0,
|
|
2227
2228
|
res.risks.pastDue ? "ATTENTION: renewal payment failing \u2014 update the payment method (portal). Serving continues while Stripe retries; if Stripe gives up, the site reverts to free." : void 0
|
|
2228
2229
|
].filter((l) => l !== void 0);
|
|
@@ -2313,14 +2314,18 @@ Full status:`, res);
|
|
|
2313
2314
|
throw new SakupaError("invalid_request", "hostname is required for start");
|
|
2314
2315
|
}
|
|
2315
2316
|
const res2 = await ctx.client.recoverDomain({ hostname: args.hostname });
|
|
2317
|
+
const txtShort = shortHostFor(res2.verificationRecord.name, res2.apexDomain);
|
|
2316
2318
|
return text(
|
|
2317
2319
|
"domain_recovery_started",
|
|
2318
2320
|
`Recovery started for ${args.hostname} (apex domain: ${res2.apexDomain}).
|
|
2319
2321
|
|
|
2320
2322
|
Create this DNS record to prove apex-domain control:
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
value:
|
|
2323
|
+
type: ${res2.verificationRecord.type}
|
|
2324
|
+
host/label: ${txtShort}
|
|
2325
|
+
value: ${res2.verificationRecord.value}
|
|
2326
|
+
full name: ${res2.verificationRecord.name}
|
|
2327
|
+
|
|
2328
|
+
Enter ONLY "${txtShort}" in DNS panels whose host/name field automatically appends ".${res2.apexDomain}". The saved full record must be exactly "${res2.verificationRecord.name}" and must never contain the apex twice.
|
|
2324
2329
|
|
|
2325
2330
|
${res2.message}
|
|
2326
2331
|
|
|
@@ -2330,7 +2335,18 @@ After the DNS record resolves, re-run recover with verificationId: "${res2.verif
|
|
|
2330
2335
|
{
|
|
2331
2336
|
verificationId: res2.verificationId,
|
|
2332
2337
|
apexDomain: res2.apexDomain,
|
|
2333
|
-
verificationRecord:
|
|
2338
|
+
verificationRecord: {
|
|
2339
|
+
...res2.verificationRecord,
|
|
2340
|
+
shortHost: txtShort
|
|
2341
|
+
},
|
|
2342
|
+
requiredRecords: [
|
|
2343
|
+
{
|
|
2344
|
+
type: res2.verificationRecord.type,
|
|
2345
|
+
shortHost: txtShort,
|
|
2346
|
+
name: res2.verificationRecord.name,
|
|
2347
|
+
value: res2.verificationRecord.value
|
|
2348
|
+
}
|
|
2349
|
+
],
|
|
2334
2350
|
revokesPreviousCredentialsByDefault: true
|
|
2335
2351
|
},
|
|
2336
2352
|
"waiting_user"
|
|
@@ -2664,7 +2680,7 @@ function registerBillingTools(server, baseCtx) {
|
|
|
2664
2680
|
outcome: "waiting_user",
|
|
2665
2681
|
resultCode: "stripe_plan_change_confirmation_required",
|
|
2666
2682
|
operationId: args.operationId,
|
|
2667
|
-
summary: `Stripe confirmation link created for ${result.currentPlan} -> ${result.targetPlan}; the subscription has NOT changed yet
|
|
2683
|
+
summary: `Stripe confirmation link created for ${result.currentPlan} -> ${result.targetPlan}; the subscription has NOT changed yet. ` + (result.direction === "upgrade" ? "Confirming starts a new paid month immediately at the full target price; Sakupa applies the plan only after invoice payment and carries unused transfer once." : "The downgrade is scheduled for the end of the already-paid period."),
|
|
2668
2684
|
data: { result },
|
|
2669
2685
|
userAction: {
|
|
2670
2686
|
type: "open_url",
|
|
@@ -2727,8 +2743,9 @@ frustrated, proactively offer report: it files the problem into Sakupa's ticket
|
|
|
2727
2743
|
alert stream, and you should attach your own factual account via agentContext.
|
|
2728
2744
|
|
|
2729
2745
|
Present every step as Sakupa's own: never attribute DNS, certificates or hosting to
|
|
2730
|
-
underlying infrastructure vendors in front of the user. Relay DNS record
|
|
2731
|
-
|
|
2746
|
+
underlying infrastructure vendors in front of the user. Relay DNS record values and full
|
|
2747
|
+
names verbatim, but use the tool's shortHost value for a DNS panel host/name field that
|
|
2748
|
+
automatically appends the apex domain. The saved FQDN must never contain the apex twice.
|
|
2732
2749
|
|
|
2733
2750
|
Safety boundaries:
|
|
2734
2751
|
- Static output only: no SSR, API routes, middleware, server actions, databases or online builds.
|