openzoo 0.30.5 → 0.30.6

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.
@@ -97,8 +97,15 @@ const CORS = {
97
97
  * active, unlimited membership so nothing is gated.
98
98
  */
99
99
  function stripeProfile() {
100
+ // MUST MATCH the membershipType written into the applicationUser blob — Cursor
101
+ // refreshes the blob FROM this profile on launch, so a hardcoded 'pro' here
102
+ // overwrote our 'ultra' and the free-plan gate ("free plans can only use Auto")
103
+ // fired anyway. Same env var, one source of truth.
104
+ const m = process.env.OPENZOO_MEMBERSHIP || 'pro';
100
105
  return JSON.stringify({
101
- membershipType: 'pro',
106
+ membershipType: m,
107
+ individualMembershipType: m,
108
+ teamMembershipType: null,
102
109
  subscriptionStatus: 'active',
103
110
  verifiedStudent: false,
104
111
  trialEligible: false,
@@ -108,8 +115,6 @@ function stripeProfile() {
108
115
  hardLimitPerUser: null,
109
116
  usageBasedPricingEnabled: true,
110
117
  monthlyUsageBasedLimit: 1000000,
111
- individualMembershipType: 'pro',
112
- teamMembershipType: null,
113
118
  });
114
119
  }
115
120
 
package/lib/hosts.js CHANGED
@@ -147,6 +147,9 @@ export function unredirect443() {
147
147
  * runs privileged, never the wallet-holding proxy. unbindBackend443 kills it.
148
148
  */
149
149
  export function bindBackend443(modelsPath, logPath, log = console.log) {
150
+ // sudo strips the environment, so forward the one var the backend needs to
151
+ // report the right membership in the stripe profile it serves.
152
+ const memEnv = `OPENZOO_MEMBERSHIP='${(process.env.OPENZOO_MEMBERSHIP || 'pro').replace(/'/g, '')}'`;
150
153
  const here = path.dirname(fileURLToPath(import.meta.url));
151
154
  const script = path.join(here, '..', 'bin', 'cursor-backend.js');
152
155
  const node = process.execPath;
@@ -172,7 +175,7 @@ export function bindBackend443(modelsPath, logPath, log = console.log) {
172
175
  + `pkill -9 -f 'cursor-backend.js' 2>/dev/null; `
173
176
  + `for p in $(lsof -nP -iTCP:443 -sTCP:LISTEN -t 2>/dev/null) $(lsof -nP -iTCP:8443 -sTCP:LISTEN -t 2>/dev/null); do kill -9 "$p" 2>/dev/null; done; `
174
177
  + `for i in 1 2 3 4 5 6 7 8 9 10; do lsof -nP -iTCP:443 -sTCP:LISTEN -t >/dev/null 2>&1 || break; sleep 0.5; done; `
175
- + `nohup '${node}' '${script}' 443 '${modelsPath}' '${logPath}' >/dev/null 2>&1 & `
178
+ + `nohup ${memEnv} '${node}' '${script}' 443 '${modelsPath}' '${logPath}' >/dev/null 2>&1 & `
176
179
  + 'sleep 1; true',
177
180
  );
178
181
  return { ok };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openzoo",
3
- "version": "0.30.5",
3
+ "version": "0.30.6",
4
4
  "description": "Local x402-paying proxy + MCP server for openzoo.fun — point any OpenAI-compatible harness (Cursor, Claude Code, aider, SDKs) at localhost and it pays per call from a local burner wallet. Solana and Base rails live; Robinhood experimental.",
5
5
  "license": "MIT",
6
6
  "type": "module",