@carrierllc/mcp 0.13.0 → 0.13.4
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/README.md +4 -3
- package/dist/{chunk-ZUUC3J4J.js → chunk-DUAXD7GD.js} +1529 -1130
- package/dist/chunk-DUAXD7GD.js.map +1 -0
- package/dist/cli.js +61 -13
- package/dist/cli.js.map +1 -1
- package/dist/index.js +95 -47
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/plugin/carrier/README.md +2 -1
- package/plugin/carrier/skills/issue-esim/SKILL.md +92 -0
- package/plugin/carrier/skills/provision/SKILL.md +2 -0
- package/templates/storefront/src/app/activate/[orderId]/ActivateClient.tsx +2 -2
- package/templates/storefront/src/components/faq/FaqSection.tsx +2 -2
- package/dist/chunk-ZUUC3J4J.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -34,18 +34,22 @@ import {
|
|
|
34
34
|
lastNDaysPeriod,
|
|
35
35
|
loadStorefrontBrand,
|
|
36
36
|
locationParams,
|
|
37
|
+
locationZoneCreateParams,
|
|
37
38
|
mccToIso,
|
|
38
39
|
mergeEnvLocal,
|
|
39
40
|
networkEventRows,
|
|
40
41
|
networkEventsOverPeriodParams,
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
ocsHlrBitrate,
|
|
43
|
+
ocsHlrBitrateFromBps,
|
|
43
44
|
ocsLocalDateTime,
|
|
45
|
+
ocsSimStatus,
|
|
44
46
|
packageActivePeriodParams,
|
|
45
47
|
packageDataLimit,
|
|
46
48
|
packageDataUsed,
|
|
47
49
|
packageExpiry,
|
|
48
50
|
packageName,
|
|
51
|
+
packageTemplateCreateFromToolJson,
|
|
52
|
+
packageTemplateModifyFromToolJson,
|
|
49
53
|
prepaidPackageLimits,
|
|
50
54
|
prepaidPackageRows,
|
|
51
55
|
probeAll,
|
|
@@ -65,7 +69,7 @@ import {
|
|
|
65
69
|
usageOverPeriodParams,
|
|
66
70
|
verifyStorefront,
|
|
67
71
|
withOcsListSummary
|
|
68
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-DUAXD7GD.js";
|
|
69
73
|
import "./chunk-SHKKVIIA.js";
|
|
70
74
|
|
|
71
75
|
// src/index.ts
|
|
@@ -1565,10 +1569,10 @@ function registerAllTools(server2, ctx) {
|
|
|
1565
1569
|
"change_sim_status",
|
|
1566
1570
|
{
|
|
1567
1571
|
title: "Change SIM Status",
|
|
1568
|
-
description: "Use this to change the physical SIM/eSIM card status at the SIM provider level, independent of the OCS subscriber lifecycle status. Statuses: ENABLED (normal operation)
|
|
1572
|
+
description: "Use this to change the physical SIM/eSIM card status at the SIM provider level, independent of the OCS subscriber lifecycle status. Statuses: ENABLED maps to OCS Affected (normal operation) and DISABLED maps to OCS Free (blocked at the network). DELETED is not a changeSimStatus value. Always use `dry_run=true` first. Internally resolves ICCID \u2192 numeric simId via a getSingleSubscriber call before forwarding to OCS. Params: `iccid` (subscriber identifier), `simStatus` ('ENABLED' | 'DISABLED'). Returns: updated SIM record with new status. Do NOT use this to change the subscriber's OCS lifecycle status \u2014 use `modify_subscriber_status`. Do NOT send DELETED.",
|
|
1569
1573
|
inputSchema: {
|
|
1570
1574
|
iccid: z.string().describe("The subscriber ICCID"),
|
|
1571
|
-
simStatus: z.string().describe("New SIM status (
|
|
1575
|
+
simStatus: z.string().describe("New SIM status: ENABLED (OCS Affected) or DISABLED (OCS Free)"),
|
|
1572
1576
|
...DRY_RUN_FIELD
|
|
1573
1577
|
},
|
|
1574
1578
|
annotations: { destructiveHint: true }
|
|
@@ -1579,9 +1583,16 @@ function registerAllTools(server2, ctx) {
|
|
|
1579
1583
|
TOOL_SCOPES["change_sim_status"],
|
|
1580
1584
|
ctx,
|
|
1581
1585
|
async ({ iccid, simStatus }, token2) => {
|
|
1586
|
+
const newStatus = ocsSimStatus(simStatus);
|
|
1587
|
+
if (typeof newStatus !== "string") {
|
|
1588
|
+
return {
|
|
1589
|
+
isError: true,
|
|
1590
|
+
content: [{ type: "text", text: `Error: ${newStatus.error}` }]
|
|
1591
|
+
};
|
|
1592
|
+
}
|
|
1582
1593
|
const cache = /* @__PURE__ */ new Map();
|
|
1583
1594
|
const sub = await resolveSubscriberByIccid(ctx.env, token2, iccid, cache);
|
|
1584
|
-
const simId =
|
|
1595
|
+
const simId = subscriberSimId(sub);
|
|
1585
1596
|
if (simId === void 0) {
|
|
1586
1597
|
return {
|
|
1587
1598
|
isError: true,
|
|
@@ -1589,8 +1600,8 @@ function registerAllTools(server2, ctx) {
|
|
|
1589
1600
|
};
|
|
1590
1601
|
}
|
|
1591
1602
|
return ocsCall(ctx.env, token2, "changeSimStatus", {
|
|
1592
|
-
simId
|
|
1593
|
-
newStatus
|
|
1603
|
+
simId,
|
|
1604
|
+
newStatus
|
|
1594
1605
|
});
|
|
1595
1606
|
}
|
|
1596
1607
|
)
|
|
@@ -1613,14 +1624,14 @@ function registerAllTools(server2, ctx) {
|
|
|
1613
1624
|
async ({ iccid }, token2) => {
|
|
1614
1625
|
const cache = /* @__PURE__ */ new Map();
|
|
1615
1626
|
const sub = await resolveSubscriberByIccid(ctx.env, token2, iccid, cache);
|
|
1616
|
-
const simId =
|
|
1627
|
+
const simId = subscriberSimId(sub);
|
|
1617
1628
|
if (simId === void 0) {
|
|
1618
1629
|
return {
|
|
1619
1630
|
isError: true,
|
|
1620
1631
|
content: [{ type: "text", text: `Error: Could not resolve simId for ICCID ${iccid}` }]
|
|
1621
1632
|
};
|
|
1622
1633
|
}
|
|
1623
|
-
return ocsCall(ctx.env, token2, "getSimProviderStatus",
|
|
1634
|
+
return ocsCall(ctx.env, token2, "getSimProviderStatus", simId);
|
|
1624
1635
|
}
|
|
1625
1636
|
)
|
|
1626
1637
|
);
|
|
@@ -1758,10 +1769,10 @@ function registerAllTools(server2, ctx) {
|
|
|
1758
1769
|
"hlr_set_bitrate",
|
|
1759
1770
|
{
|
|
1760
1771
|
title: "Set HLR Bitrate",
|
|
1761
|
-
description: "Use this to set a hard bandwidth cap for a subscriber at the HLR (Home Location Register) level. This is a network-level throttle applied regardless of package allowance \u2014 use it to enforce fair-use speed limits or to throttle heavy users without suspending service. Provide at least one of `bitrate` (
|
|
1772
|
+
description: "Use this to set a hard bandwidth cap for a subscriber at the HLR (Home Location Register) level. This is a network-level throttle applied regardless of package allowance \u2014 use it to enforce fair-use speed limits or to throttle heavy users without suspending service. Provide at least one of `bitrate` (bits per second) or `bitrate_string` (OCS string enum); when both are provided, `bitrate_string` is used. The wire value is only the string enum: KB_32, KB_64, KB_128, KB_256, KB_384, KB_512, KB_1024, KB_2048, KB_3072, KB_5120, KB_7680, KB_10240, KB_20480, KB_51200, KB_102400, UNLIMITED. A bits-per-second number is mapped onto that enum (256000 is KB_256, 1024000 is KB_1024). 0 is UNLIMITED. Any other number is refused before OCS. Internally resolves ICCID \u2192 IMSI via a getSingleSubscriber lookup. Params: `iccid` (subscriber identifier), `bitrate` (integer bits per second) OR `bitrate_string` (string enum from the list above). Returns: HLR confirmation with the applied bitrate. Do NOT use this to block data entirely \u2014 use `set_subscriber_traffic_restrictions` with `dataAllowed=false`. Do NOT use this to change throttling thresholds on a package template \u2014 use `modify_template_throttling`.",
|
|
1762
1773
|
inputSchema: z.object({
|
|
1763
1774
|
iccid: z.string().describe("The subscriber ICCID"),
|
|
1764
|
-
bitrate: z.number().optional().describe("Max bitrate in
|
|
1775
|
+
bitrate: z.number().optional().describe("Max bitrate in bits per second. 256000 is KB_256. 0 is UNLIMITED."),
|
|
1765
1776
|
bitrate_string: z.enum([
|
|
1766
1777
|
"KB_32",
|
|
1767
1778
|
"KB_64",
|
|
@@ -1793,6 +1804,13 @@ function registerAllTools(server2, ctx) {
|
|
|
1793
1804
|
TOOL_SCOPES["hlr_set_bitrate"],
|
|
1794
1805
|
ctx,
|
|
1795
1806
|
async ({ iccid, bitrate, bitrate_string }, token2) => {
|
|
1807
|
+
const limit = bitrate_string !== void 0 ? ocsHlrBitrate(bitrate_string) : ocsHlrBitrateFromBps(bitrate ?? Number.NaN);
|
|
1808
|
+
if (typeof limit !== "string") {
|
|
1809
|
+
return {
|
|
1810
|
+
isError: true,
|
|
1811
|
+
content: [{ type: "text", text: `Error: ${limit.error}` }]
|
|
1812
|
+
};
|
|
1813
|
+
}
|
|
1796
1814
|
const cache = /* @__PURE__ */ new Map();
|
|
1797
1815
|
const sub = await resolveSubscriberByIccid(ctx.env, token2, iccid, cache);
|
|
1798
1816
|
const imsi = imsiFromSubscriberRecord(sub);
|
|
@@ -1802,7 +1820,6 @@ function registerAllTools(server2, ctx) {
|
|
|
1802
1820
|
content: [{ type: "text", text: `Error: Could not resolve IMSI for ICCID ${iccid}` }]
|
|
1803
1821
|
};
|
|
1804
1822
|
}
|
|
1805
|
-
const limit = bitrate_string !== void 0 ? bitrate_string : bitrate;
|
|
1806
1823
|
return ocsCall(ctx.env, token2, "hlrSetBitrate", { imsi, limit });
|
|
1807
1824
|
}
|
|
1808
1825
|
)
|
|
@@ -2138,7 +2155,7 @@ function registerAllTools(server2, ctx) {
|
|
|
2138
2155
|
"create_package_template",
|
|
2139
2156
|
{
|
|
2140
2157
|
title: "Create Package Template",
|
|
2141
|
-
description: 'Use this to create a new prepaid package template in the product catalog. Templates define allowances,
|
|
2158
|
+
description: 'Use this to create a new prepaid package template in the product catalog. Templates define allowances, cost, location zones, validity, and throttling thresholds that are reused each time the template is assigned to a subscriber. Params: `template` (full template configuration as a JSON string). OCS accepts `prepaidpackagetemplatename`, `databyte`, `perioddays`, `locationzoneid`, `cost`, `recurring`, and `throttlingActive`. `name` maps to prepaidpackagetemplatename, `dataLimit` maps to databyte, `validityDays` maps to perioddays, and `locationZoneId` maps to locationzoneid. There is no `price` field and no `description` field. NEVER express an unlimited plan as a zero data allowance: OCS reads 0 as a literal zero, and because `throttlingThreshold1Perc` is a percentage OF THE BUNDLE, a zero bundle leaves the throttle trigger uncomputable and every storefront renders "0 MB". Describe the plan as it is sold and the OCS fields are derived for you: `unlimited: true`, `throttleAfterMb` (the full-speed window, e.g. 500 for "500 MB/day"), `throttleKbps` (the speed AFTER that window) and `perioddays` (1 for a daily bucket). The bundle ceiling is sized so the window is a whole trigger percentage and the bundle cannot be drained even at the throttled rate for the whole period, because a plan sold as unlimited must not run out. `throttleKbps` is a SPEED and must be an OCS bitrate (128, 256, 384, 512, 1024, 3072, 5120, 7680, 10240, 20480, 51200, 102400); passing megabytes here is rejected. Returns: created template record with the new `templateId`. Do NOT use this to modify an existing template \u2014 use `modify_template_core`. After creation, call `list_package_templates` to confirm the template is visible.',
|
|
2142
2159
|
inputSchema: {
|
|
2143
2160
|
template: z.string().describe("Full template configuration as JSON string"),
|
|
2144
2161
|
...DRY_RUN_FIELD
|
|
@@ -2150,19 +2167,23 @@ function registerAllTools(server2, ctx) {
|
|
|
2150
2167
|
"createPrepaidPackageTemplate",
|
|
2151
2168
|
TOOL_SCOPES["create_package_template"],
|
|
2152
2169
|
ctx,
|
|
2153
|
-
async ({ template }, token2) =>
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2170
|
+
async ({ template }, token2) => {
|
|
2171
|
+
const params = packageTemplateCreateFromToolJson(template);
|
|
2172
|
+
if ("error" in params) {
|
|
2173
|
+
return {
|
|
2174
|
+
isError: true,
|
|
2175
|
+
content: [{ type: "text", text: `Error: ${params.error}` }]
|
|
2176
|
+
};
|
|
2177
|
+
}
|
|
2178
|
+
return ocsCall(ctx.env, token2, "createPrepaidPackageTemplate", params);
|
|
2179
|
+
}
|
|
2159
2180
|
)
|
|
2160
2181
|
);
|
|
2161
2182
|
server2.registerTool(
|
|
2162
2183
|
"modify_template_core",
|
|
2163
2184
|
{
|
|
2164
2185
|
title: "Modify Template Core Settings",
|
|
2165
|
-
description: 'Use this to change the core fields of an existing package template: name, data/voice/SMS limits, pricing, validity period, and location zone. Changes affect future package assignments from this template but do NOT retroactively change packages already assigned to subscribers. Params: `templateId` (integer from `list_package_templates`), `changes` (JSON string with fields to modify, e.g. {"name": "Europe 5GB", "dataLimit": 5368709120}). Returns: updated template record. Do NOT use this to modify throttling thresholds \u2014 use `modify_template_throttling`. Do NOT use this to modify recurring/renewal settings \u2014 use `modify_template_recurring`.',
|
|
2186
|
+
description: 'Use this to change the core fields of an existing package template: name, data/voice/SMS limits, pricing, validity period, and location zone. Changes affect future package assignments from this template but do NOT retroactively change packages already assigned to subscribers. Params: `templateId` (integer from `list_package_templates`), `changes` (JSON string with fields to modify, e.g. {"name": "Europe 5GB", "dataLimit": 5368709120}). `name` maps to prepaidpackagetemplatename and `dataLimit` maps to databyte. A template id inside `changes` is ignored so the `templateId` argument wins. There is no `price` field and no `description` field. Returns: updated template record. Do NOT use this to modify throttling thresholds \u2014 use `modify_template_throttling`. Do NOT use this to modify recurring/renewal settings \u2014 use `modify_template_recurring`.',
|
|
2166
2187
|
inputSchema: {
|
|
2167
2188
|
templateId: z.number().describe("The template ID"),
|
|
2168
2189
|
changes: z.string().describe("Core fields to modify as JSON string"),
|
|
@@ -2175,17 +2196,25 @@ function registerAllTools(server2, ctx) {
|
|
|
2175
2196
|
"modifyPPTCore",
|
|
2176
2197
|
TOOL_SCOPES["modify_template_core"],
|
|
2177
2198
|
ctx,
|
|
2178
|
-
async ({ templateId, changes }, token2) =>
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2199
|
+
async ({ templateId, changes }, token2) => {
|
|
2200
|
+
const mapped = packageTemplateModifyFromToolJson(changes, "modifyPPTCore");
|
|
2201
|
+
if ("error" in mapped) {
|
|
2202
|
+
return {
|
|
2203
|
+
isError: true,
|
|
2204
|
+
content: [{ type: "text", text: `Error: ${mapped.error}` }]
|
|
2205
|
+
};
|
|
2206
|
+
}
|
|
2207
|
+
const wire = mapped;
|
|
2208
|
+
wire.templateId = templateId;
|
|
2209
|
+
return ocsCall(ctx.env, token2, "modifyPPTCore", wire);
|
|
2210
|
+
}
|
|
2182
2211
|
)
|
|
2183
2212
|
);
|
|
2184
2213
|
server2.registerTool(
|
|
2185
2214
|
"modify_template_recurring",
|
|
2186
2215
|
{
|
|
2187
2216
|
title: "Modify Template Recurring Settings",
|
|
2188
|
-
description: 'Use this to change the auto-renewal configuration of a package template: periodicity (daily/weekly/monthly), occurrence count, and renewal trigger conditions. Changes affect future assignments and existing recurring packages assigned from this template. Params: `templateId` (integer from `list_package_templates`), `changes` (JSON string with recurring fields, e.g. {"periodicity": "monthly", "occurrences": 12}). Returns: updated template record with new recurring settings. Do NOT use this to stop an individual subscriber\'s recurring renewal \u2014 use `stop_resume_recurring_package`. Do NOT use this to change core template fields like data limits \u2014 use `modify_template_core`.',
|
|
2217
|
+
description: 'Use this to change the auto-renewal configuration of a package template: periodicity (daily/weekly/monthly), occurrence count, and renewal trigger conditions. Changes affect future assignments and existing recurring packages assigned from this template. Params: `templateId` (integer from `list_package_templates`), `changes` (JSON string with recurring fields, e.g. {"periodicity": "monthly", "occurrences": 12}). `periodicity` maps to recurringPeriodicityType (0 daily, 1 weekly, 2 monthly) and `occurrences` maps to nbOccurrence. Returns: updated template record with new recurring settings. Do NOT use this to stop an individual subscriber\'s recurring renewal \u2014 use `stop_resume_recurring_package`. Do NOT use this to change core template fields like data limits \u2014 use `modify_template_core`.',
|
|
2189
2218
|
inputSchema: {
|
|
2190
2219
|
templateId: z.number().describe("The template ID"),
|
|
2191
2220
|
changes: z.string().describe("Recurring fields to modify as JSON string"),
|
|
@@ -2198,17 +2227,25 @@ function registerAllTools(server2, ctx) {
|
|
|
2198
2227
|
"modifyPPTRecurring",
|
|
2199
2228
|
TOOL_SCOPES["modify_template_recurring"],
|
|
2200
2229
|
ctx,
|
|
2201
|
-
async ({ templateId, changes }, token2) =>
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2230
|
+
async ({ templateId, changes }, token2) => {
|
|
2231
|
+
const mapped = packageTemplateModifyFromToolJson(changes, "modifyPPTRecurring");
|
|
2232
|
+
if ("error" in mapped) {
|
|
2233
|
+
return {
|
|
2234
|
+
isError: true,
|
|
2235
|
+
content: [{ type: "text", text: `Error: ${mapped.error}` }]
|
|
2236
|
+
};
|
|
2237
|
+
}
|
|
2238
|
+
const wire = mapped;
|
|
2239
|
+
wire.templateId = templateId;
|
|
2240
|
+
return ocsCall(ctx.env, token2, "modifyPPTRecurring", wire);
|
|
2241
|
+
}
|
|
2205
2242
|
)
|
|
2206
2243
|
);
|
|
2207
2244
|
server2.registerTool(
|
|
2208
2245
|
"modify_template_throttling",
|
|
2209
2246
|
{
|
|
2210
2247
|
title: "Modify Template Throttling",
|
|
2211
|
-
description: 'Use this to change the bandwidth throttling thresholds on a package template. WARNING: changes apply immediately to ALL existing subscriber packages created from this template, not just future ones. Setting a lower threshold will NOT retroactively throttle subscribers already below the new threshold (the system does not re-check existing usage). Params: `templateId` (integer), `changes` (JSON string with throttling fields, e.g. {"throttlingActive": true, "
|
|
2248
|
+
description: 'Use this to change the bandwidth throttling thresholds on a package template. WARNING: changes apply immediately to ALL existing subscriber packages created from this template, not just future ones. Setting a lower threshold will NOT retroactively throttle subscribers already below the new threshold (the system does not re-check existing usage). Params: `templateId` (integer), `changes` (JSON string with throttling fields, e.g. {"throttlingActive": true, "throttlingThreshold1Perc": 80, "throttlingThreshold1Limit": 1024}). `firstThresholdPercent` maps to throttlingThreshold1Perc and `firstThresholdLimitKbps` maps to throttlingThreshold1Limit. `throttlingErrorAction` is an integer; continue_unthrottled is refused. Returns: updated template record with new throttling configuration. Do NOT use this to throttle a single subscriber \u2014 use `hlr_set_bitrate` instead. Do NOT use this to change core package limits \u2014 use `modify_template_core`.',
|
|
2212
2249
|
inputSchema: {
|
|
2213
2250
|
templateId: z.number().describe("The template ID"),
|
|
2214
2251
|
changes: z.string().describe("Throttling fields to modify as JSON string"),
|
|
@@ -2221,10 +2258,18 @@ function registerAllTools(server2, ctx) {
|
|
|
2221
2258
|
"modifyPPTThrottling",
|
|
2222
2259
|
TOOL_SCOPES["modify_template_throttling"],
|
|
2223
2260
|
ctx,
|
|
2224
|
-
async ({ templateId, changes }, token2) =>
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2261
|
+
async ({ templateId, changes }, token2) => {
|
|
2262
|
+
const mapped = packageTemplateModifyFromToolJson(changes, "modifyPPTThrottling");
|
|
2263
|
+
if ("error" in mapped) {
|
|
2264
|
+
return {
|
|
2265
|
+
isError: true,
|
|
2266
|
+
content: [{ type: "text", text: `Error: ${mapped.error}` }]
|
|
2267
|
+
};
|
|
2268
|
+
}
|
|
2269
|
+
const wire = mapped;
|
|
2270
|
+
wire.templateId = templateId;
|
|
2271
|
+
return ocsCall(ctx.env, token2, "modifyPPTThrottling", wire);
|
|
2272
|
+
}
|
|
2228
2273
|
)
|
|
2229
2274
|
);
|
|
2230
2275
|
server2.registerTool(
|
|
@@ -2302,7 +2347,7 @@ function registerAllTools(server2, ctx) {
|
|
|
2302
2347
|
"create_location_zone",
|
|
2303
2348
|
{
|
|
2304
2349
|
title: "Create Location Zone",
|
|
2305
|
-
description: "Use this to create a new location zone \u2014 a named collection of countries and operators that defines where a package can be used. Location zones are required when creating package templates.
|
|
2350
|
+
description: "Use this to create a new location zone \u2014 a named collection of countries and operators that defines where a package can be used. Location zones are required when creating package templates. OCS accepts locationZoneName, tadigList (TADIG codes), and networkProfileId. Params: `zone` (JSON string). `name` is an alias of locationZoneName and `tadigs` is an alias of tadigList. ISO country codes and MCC-MNC operator ids are not TADIG codes and are refused. Use `list_network_profiles` for a networkProfileId. Returns: created zone record with the new `locationZoneId`. Do NOT use this to modify an existing zone \u2014 no edit tool exists yet (gap G-19, pending eSIMVault). After creation, verify with `list_detailed_location_zones`.",
|
|
2306
2351
|
inputSchema: {
|
|
2307
2352
|
zone: z.string().describe("Zone configuration as JSON string"),
|
|
2308
2353
|
...DRY_RUN_FIELD
|
|
@@ -2314,12 +2359,16 @@ function registerAllTools(server2, ctx) {
|
|
|
2314
2359
|
"createLocationZone",
|
|
2315
2360
|
TOOL_SCOPES["create_location_zone"],
|
|
2316
2361
|
ctx,
|
|
2317
|
-
async ({ zone }, token2) =>
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2362
|
+
async ({ zone }, token2) => {
|
|
2363
|
+
const params = locationZoneCreateParams(zone);
|
|
2364
|
+
if ("error" in params) {
|
|
2365
|
+
return {
|
|
2366
|
+
isError: true,
|
|
2367
|
+
content: [{ type: "text", text: `Error: ${params.error}` }]
|
|
2368
|
+
};
|
|
2369
|
+
}
|
|
2370
|
+
return ocsCall(ctx.env, token2, "createLocationZone", params);
|
|
2371
|
+
}
|
|
2323
2372
|
)
|
|
2324
2373
|
);
|
|
2325
2374
|
server2.registerTool(
|
|
@@ -12124,11 +12173,9 @@ if (!token) {
|
|
|
12124
12173
|
}
|
|
12125
12174
|
var stdioEnv = {
|
|
12126
12175
|
CARRIER_OCS_BASE_URL: baseUrl,
|
|
12176
|
+
// Empty on purpose. rotate_credentials reads this and throws a clear
|
|
12177
|
+
// message rather than pretending a local install can rotate the vault.
|
|
12127
12178
|
CARRIER_TOKEN_ENCRYPTION_KEY: "",
|
|
12128
|
-
SENTRY_DSN: "",
|
|
12129
|
-
CLERK_PUBLISHABLE_KEY: "",
|
|
12130
|
-
CLERK_SECRET_KEY: "",
|
|
12131
|
-
CLERK_WEBHOOK_SECRET: "",
|
|
12132
12179
|
AUDIT_LOG: { writeDataPoint: (_) => void 0 },
|
|
12133
12180
|
OAUTH_KV: null,
|
|
12134
12181
|
OCS_EVENT_ROUTING: null,
|
|
@@ -12168,7 +12215,8 @@ var stdioEnv = {
|
|
|
12168
12215
|
// has already opted in, and making them set a second variable they have never
|
|
12169
12216
|
// heard of is just the same dead gate one step further along. Setting it to
|
|
12170
12217
|
// anything other than "true" still turns the router off.
|
|
12171
|
-
CARRIER_ASK_ENABLED: process.env.CARRIER_ASK_ENABLED ?? "true"
|
|
12218
|
+
CARRIER_ASK_ENABLED: process.env.CARRIER_ASK_ENABLED ?? "true",
|
|
12219
|
+
BILLING_PRIMARY: process.env.BILLING_PRIMARY
|
|
12172
12220
|
};
|
|
12173
12221
|
var props = {
|
|
12174
12222
|
sub: "stdio@local",
|