roblox-mcp-pro 0.2.0 → 0.2.1

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 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/licensing/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AASD,+EAA+E;AAC/E,wBAAgB,cAAc,IAAI,YAAY,CAE7C;AAgHD,iEAAiE;AACjE,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAW5D"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/licensing/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AASD,+EAA+E;AAC/E,wBAAgB,cAAc,IAAI,YAAY,CAE7C;AAiJD,iEAAiE;AACjE,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAW5D"}
@@ -43,64 +43,96 @@ async function readLicenseFile() {
43
43
  return undefined;
44
44
  }
45
45
  }
46
- async function resolveWithKey(key) {
47
- const store = await readStore();
48
- // If the key changed since last activation, drop the stale instance binding.
49
- let instanceId = store.licenseKey === key ? store.instanceId : undefined;
50
- // Activate this machine the first time we see this key.
51
- if (!instanceId) {
52
- const act = await activate(key, os.hostname() || "device");
53
- if (act.reachable) {
54
- if (act.valid && act.instanceId && ownsKey(act)) {
55
- instanceId = act.instanceId;
56
- await writeStore({ instanceId, licenseKey: key });
57
- }
58
- else if (act.reachable && !ownsKey(act)) {
59
- return "no-key"; // key belongs to a different store/product
60
- }
61
- // else: reachable but invalid → fall through to validate for a clear status
46
+ /** A subscription/key status that still grants access. */
47
+ function isLive(status) {
48
+ return status !== "expired" && status !== "disabled";
49
+ }
50
+ /** Result when Lemon Squeezy is unreachable: offline grace window, else locked. */
51
+ function offlineResult(store) {
52
+ if (store.lastValidationOk && store.lastValidatedAt) {
53
+ const used = daysBetween(store.lastValidatedAt, Date.now());
54
+ if (used <= OFFLINE_GRACE_DAYS) {
55
+ return {
56
+ status: "licensed",
57
+ message: `Licensed ✅ (offline — re-checks within ${OFFLINE_GRACE_DAYS - used} day(s)).`,
58
+ daysLeft: OFFLINE_GRACE_DAYS - used,
59
+ };
62
60
  }
63
- // If unreachable, fall through to the offline-grace path below.
64
61
  }
65
- const val = await validate(key, instanceId);
66
- if (val.reachable) {
62
+ return {
63
+ status: "locked",
64
+ message: `Couldn't verify your ${PRODUCT_NAME} license (no internet). ` +
65
+ "Connect to the internet and try again.",
66
+ };
67
+ }
68
+ const licensed = (expiresAt) => ({
69
+ status: "licensed",
70
+ message: `Licensed ✅ (${PRODUCT_NAME}).`,
71
+ expiresAt: expiresAt ?? null,
72
+ });
73
+ /**
74
+ * Resolve a license key. The activation limit is enforced by REQUIRING a bound
75
+ * activation instance: a machine either re-validates its own instance, or it
76
+ * must successfully ACTIVATE a new one. If activation fails because the limit is
77
+ * full, we lock — we never fall back to a bare key check (which would let one key
78
+ * run on unlimited machines).
79
+ */
80
+ async function resolveWithKey(key) {
81
+ const store = await readStore();
82
+ const boundInstance = store.licenseKey === key ? store.instanceId : undefined;
83
+ // 1) Returning machine — re-validate its own activation instance.
84
+ if (boundInstance) {
85
+ const val = await validate(key, boundInstance);
86
+ if (!val.reachable)
87
+ return offlineResult(store);
67
88
  if (!ownsKey(val))
68
89
  return "no-key";
69
- if (val.valid && val.status !== "expired" && val.status !== "disabled") {
90
+ if (val.valid && isLive(val.status)) {
70
91
  await writeStore({
71
92
  licenseKey: key,
72
93
  lastValidatedAt: new Date().toISOString(),
73
94
  lastValidationOk: true,
74
95
  });
96
+ return licensed(val.expiresAt);
97
+ }
98
+ if (!isLive(val.status)) {
99
+ await writeStore({ lastValidationOk: false });
75
100
  return {
76
- status: "licensed",
77
- message: `Licensed ✅ (${PRODUCT_NAME}).`,
101
+ status: "locked",
102
+ message: `Your ${PRODUCT_NAME} subscription is ${val.status}. Renew at ${PURCHASE_URL}`,
78
103
  expiresAt: val.expiresAt ?? null,
79
104
  };
80
105
  }
81
- await writeStore({ lastValidationOk: false });
106
+ // Instance was deactivated elsewhere — forget it and try to re-activate below.
107
+ await writeStore({ instanceId: undefined });
108
+ }
109
+ // 2) New machine — MUST activate. This is what enforces the activation limit.
110
+ const act = await activate(key, os.hostname() || "device");
111
+ if (!act.reachable)
112
+ return offlineResult(store);
113
+ if (act.valid && act.instanceId && ownsKey(act)) {
114
+ await writeStore({
115
+ instanceId: act.instanceId,
116
+ licenseKey: key,
117
+ lastValidatedAt: new Date().toISOString(),
118
+ lastValidationOk: true,
119
+ });
120
+ return licensed(act.expiresAt);
121
+ }
122
+ // Activation failed — classify why.
123
+ if (!ownsKey(act))
124
+ return "no-key"; // wrong store/product or key not found → trial
125
+ if (!isLive(act.status)) {
82
126
  return {
83
127
  status: "locked",
84
- message: `Your ${PRODUCT_NAME} subscription is ${val.status ?? "inactive"}. ` +
85
- `Renew at ${PURCHASE_URL}`,
86
- expiresAt: val.expiresAt ?? null,
128
+ message: `Your ${PRODUCT_NAME} subscription is ${act.status}. Renew at ${PURCHASE_URL}`,
87
129
  };
88
130
  }
89
- // Network failure honor an offline grace window for known-good licenses.
90
- if (store.lastValidationOk && store.lastValidatedAt) {
91
- const used = daysBetween(store.lastValidatedAt, Date.now());
92
- if (used <= OFFLINE_GRACE_DAYS) {
93
- return {
94
- status: "licensed",
95
- message: `Licensed ✅ (offline — re-checks within ${OFFLINE_GRACE_DAYS - used} day(s)).`,
96
- daysLeft: OFFLINE_GRACE_DAYS - used,
97
- };
98
- }
99
- }
131
+ // Key is valid & ours, but this machine couldn't be activated → device limit hit.
100
132
  return {
101
133
  status: "locked",
102
- message: `Couldn't verify your ${PRODUCT_NAME} license (no internet). ` +
103
- "Connect to the internet and try again.",
134
+ message: `This license is already active on another device (activation limit reached). ` +
135
+ `Deactivate the other device, or get another license at ${PURCHASE_URL}`,
104
136
  };
105
137
  }
106
138
  async function resolveTrial() {
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/licensing/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/licensing/license.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roblox-mcp-pro",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server that lets AI agents control Roblox Studio: live Luau execution, instance query/mutate, UI/terrain/lighting, and bidirectional Studio<->local sync. Paid subscription with a free trial.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Peerapol",